flujo-ai 3.26.0 → 3.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +367 -274
- package/.next/app-path-routes-manifest.json +15 -5
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +24 -0
- package/.next/react-loadable-manifest.json +19 -18
- package/.next/routes-manifest.json +6 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/bugs/enhance/route.js +2 -2
- package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
- package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/encryption/secure/route.js +1 -1
- package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
- package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/env/route.js +1 -1
- package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/route.js +1 -1
- package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/compile/route.js +1 -1
- package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/generate/route.js +1 -1
- package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/improve/route.js +1 -1
- package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
- package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/repair/route.js +1 -1
- package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/route.js +1 -1
- package/.next/server/app/api/flow/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/git/route.js +2 -2
- package/.next/server/app/api/git/route.js.nft.json +1 -1
- package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/init/route.js +1 -1
- package/.next/server/app/api/init/route.js.nft.json +1 -1
- package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/cancel/route.js +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/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_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 -0
- package/.next/server/app/api/packages/build/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/derive-secrets/route.js +1 -0
- package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/install/route.js +1 -0
- package/.next/server/app/api/packages/install/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/install/status/route.js +1 -0
- package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/resolve/route.js +1 -0
- package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/planned-executions/[id]/route.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/route.js +1 -1
- package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/resend/route.js +1 -0
- package/.next/server/app/api/registry/auth/resend/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/auth/route.js +1 -0
- package/.next/server/app/api/registry/auth/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/publish/route.js +1 -0
- package/.next/server/app/api/registry/publish/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/settings/route.js +1 -0
- package/.next/server/app/api/registry/settings/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -0
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/update/route.js +1 -1
- package/.next/server/app/api/update/route.js.nft.json +1 -1
- package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/waves/route.js +1 -1
- package/.next/server/app/api/waves/route.js.nft.json +1 -1
- package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/chat/page.js +9 -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 +3 -3
- 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 -3
- package/.next/server/app/executions/page.js.nft.json +1 -1
- package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/executions.html +1 -1
- package/.next/server/app/executions.rsc +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 +4 -4
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/mcp/page.js +6 -6
- package/.next/server/app/mcp/page.js.nft.json +1 -1
- package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-flows/route.js +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 +3 -0
- package/.next/server/app/packages/page.js.nft.json +1 -0
- package/.next/server/app/packages/page_client-reference-manifest.js +1 -0
- package/.next/server/app/packages.html +1 -0
- package/.next/server/app/packages.meta +7 -0
- package/.next/server/app/packages.rsc +22 -0
- package/.next/server/app/page.js +1 -1
- 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 +3 -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]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/models/route.js +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 +15 -5
- package/.next/server/chunks/1083.js +1 -1
- package/.next/server/chunks/1089.js +1 -0
- package/.next/server/chunks/1114.js +1 -1
- package/.next/server/chunks/1197.js +1 -1
- package/.next/server/chunks/1226.js +1 -1
- package/.next/server/chunks/1314.js +1 -0
- package/.next/server/chunks/1604.js +65 -0
- package/.next/server/chunks/1659.js +1 -1
- package/.next/server/chunks/166.js +5 -5
- package/.next/server/chunks/1805.js +1 -0
- package/.next/server/chunks/1819.js +2 -0
- package/.next/server/chunks/1925.js +1 -0
- package/.next/server/chunks/237.js +1 -0
- package/.next/server/chunks/2373.js +1 -1
- package/.next/server/chunks/2388.js +1 -0
- package/.next/server/chunks/2434.js +2 -0
- package/.next/server/chunks/2666.js +1 -0
- package/.next/server/chunks/2859.js +1 -1
- package/.next/server/chunks/2940.js +41 -0
- package/.next/server/chunks/2985.js +1 -0
- package/.next/server/chunks/3298.js +1 -1
- package/.next/server/chunks/{8445.js → 3392.js} +2 -2
- package/.next/server/chunks/346.js +1 -0
- package/.next/server/chunks/3569.js +1 -0
- package/.next/server/chunks/3629.js +1 -0
- package/.next/server/chunks/4042.js +1 -0
- package/.next/server/chunks/4306.js +1 -0
- package/.next/server/chunks/4322.js +1 -0
- package/.next/server/chunks/{3774.js → 4426.js} +2 -2
- package/.next/server/chunks/4545.js +3 -3
- package/.next/server/chunks/{6745.js → 4661.js} +1 -1
- package/.next/server/chunks/4671.js +1 -1
- package/.next/server/chunks/4681.js +1 -0
- package/.next/server/chunks/4765.js +1 -0
- package/.next/server/chunks/4771.js +1 -1
- package/.next/server/chunks/5094.js +2 -0
- package/.next/server/chunks/5096.js +1 -0
- package/.next/server/chunks/510.js +1 -0
- package/.next/server/chunks/{4578.js → 5150.js} +1 -1
- package/.next/server/chunks/5463.js +1 -1
- package/.next/server/chunks/5544.js +5 -5
- package/.next/server/chunks/5708.js +1 -1
- package/.next/server/chunks/5880.js +1 -0
- package/.next/server/chunks/6005.js +1 -0
- package/.next/server/chunks/6529.js +5 -0
- package/.next/server/chunks/6537.js +1 -1
- package/.next/server/chunks/6826.js +1 -1
- package/.next/server/chunks/6996.js +1 -62
- package/.next/server/chunks/701.js +1 -1
- package/.next/server/chunks/7028.js +1 -0
- package/.next/server/chunks/7214.js +2 -2
- package/.next/server/chunks/724.js +1 -1
- package/.next/server/chunks/7362.js +13 -13
- package/.next/server/chunks/7463.js +2 -2
- package/.next/server/chunks/7485.js +1 -0
- package/.next/server/chunks/7498.js +42 -0
- package/.next/server/chunks/7506.js +1 -1
- package/.next/server/chunks/7579.js +2 -2
- package/.next/server/chunks/{3030.js → 7674.js} +1 -1
- package/.next/server/chunks/7764.js +37 -0
- package/.next/server/chunks/7821.js +1 -1
- package/.next/server/chunks/8192.js +12 -0
- package/.next/server/chunks/826.js +52 -0
- package/.next/server/chunks/8387.js +1 -1
- package/.next/server/chunks/{5662.js → 8522.js} +1 -1
- package/.next/server/chunks/8667.js +1 -0
- package/.next/server/chunks/869.js +2 -0
- package/.next/server/chunks/{3489.js → 8730.js} +1 -1
- package/.next/server/chunks/8732.js +62 -0
- package/.next/server/chunks/8739.js +1 -1
- package/.next/server/chunks/8745.js +1 -1
- package/.next/server/chunks/8851.js +1 -0
- package/.next/server/chunks/94.js +1 -1
- package/.next/server/chunks/{1152.js → 9400.js} +1 -1
- package/.next/server/chunks/{4456.js → 9472.js} +2 -2
- package/.next/server/chunks/9583.js +1 -0
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/O-elWbT5rs6ci1CrCqez1/_buildManifest.js +1 -0
- package/.next/static/chunks/{2003-7710c23acaef11c9.js → 2003-f826c607d609d1fa.js} +1 -1
- package/.next/static/chunks/{4003-3b3768446ae333df.js → 2019-f22580cb726c5dca.js} +1 -1
- package/.next/static/chunks/256-a13a59247ac6cc68.js +1 -0
- package/.next/static/chunks/2566-60acd5838abd9f3f.js +1 -0
- package/.next/static/chunks/2822-8168e3bb8443a1ec.js +1 -0
- package/.next/static/chunks/289-98f50bfcf833d661.js +1 -0
- package/.next/static/chunks/2981-10313d395eb99645.js +1 -0
- package/.next/static/chunks/3028-fc1f04241ed578ff.js +1 -0
- package/.next/static/chunks/3089.9e15df4ffd0fe4e8.js +1 -0
- package/.next/static/chunks/{3217.f728df99ab5da33c.js → 3217.260785c2198d1e9d.js} +1 -1
- package/.next/static/chunks/3392-6dd9ad3be66a7ce9.js +1 -0
- package/.next/static/chunks/{3556-3b6f7c99b015b752.js → 3556-b9855146c7506696.js} +1 -1
- package/.next/static/chunks/3560-5bdceef09b50e1c3.js +1 -0
- package/.next/static/chunks/3574-94e9f20550550a58.js +1 -0
- package/.next/static/chunks/4483-463f8bfc6f3dd5fa.js +1 -0
- package/.next/static/chunks/{488-623d07c3fbc21e28.js → 488-7ab54d8ae2b4b550.js} +1 -1
- package/.next/static/chunks/{5512.d01d565f73109a1a.js → 5512.682bef7fd3a7c286.js} +1 -1
- package/.next/static/chunks/5578-49bc150686c13b6f.js +1 -0
- package/.next/static/chunks/5766-dbd21cb8435605aa.js +1 -0
- package/.next/static/chunks/5866-6834cbc4ab02d86f.js +1 -0
- package/.next/static/chunks/6669-012c73587a6628fc.js +1 -0
- package/.next/static/chunks/6961-a40e97c06e616300.js +1 -0
- package/.next/static/chunks/7111-44538f8a64241b74.js +1 -0
- package/.next/static/chunks/7445-2802e158c9093556.js +1 -0
- package/.next/static/chunks/7554-db290baed5782cab.js +8 -0
- package/.next/static/chunks/795-704a0e742ecc2ef6.js +1 -0
- package/.next/static/chunks/8041-05830e887c133085.js +1 -0
- package/.next/static/chunks/{812-624e93f4c0f671c7.js → 812-8b3d4e0f6546d6f9.js} +1 -1
- package/.next/static/chunks/{8345.fbc0af16acce7256.js → 8345.bc5534ec13abc9ee.js} +1 -1
- package/.next/static/chunks/8401-0f39d91810180a88.js +1 -0
- package/.next/static/chunks/{8405.e728bc83a7c9fed6.js → 8405.73e8be2c8e5b55c5.js} +1 -1
- package/.next/static/chunks/{8989-401559d9f3bc80a0.js → 8989-5fa9c7c670eb9a1a.js} +1 -1
- package/.next/static/chunks/{9164-829ab5b085ec06d6.js → 9164-840f056a0e11d979.js} +1 -1
- package/.next/static/chunks/9562-ef0ddd4e6b9023cf.js +1 -0
- package/.next/static/chunks/9720-5ecb48f1a28808fe.js +1 -0
- package/.next/static/chunks/app/api/approvals/[id]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/approvals/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/backup/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/browse/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/bugs/enhance/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/cwd/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/encryption/secure/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/env/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/flow/compile/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/flow/generate/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/flow/improve/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/flow/quick-chat/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/flow/repair/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/flow/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/git/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/init/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/local-models/capability/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/local-models/pull/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/local-models/suggest/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/cancel/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/model/[id]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/model/provider/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/model/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/model/test/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/oauth/callback/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/oauth/initiate/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/oauth/reset/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/packages/build/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/packages/derive-secrets/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/packages/install/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/packages/install/status/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/packages/resolve/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/resend/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/registry/publish/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/registry/settings/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/restore/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/runs/active/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/storage/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/update/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/waves/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/webhooks/[id]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/chat/page-93403b0e520ba8d3.js +1 -0
- package/.next/static/chunks/app/docs/page-2c972a639cd9a41c.js +1 -0
- package/.next/static/chunks/app/executions/page-bb2fef60b2240f69.js +1 -0
- package/.next/static/chunks/app/flows/page-d60c5b47c923564a.js +1 -0
- package/.next/static/chunks/app/layout-eea7078d7553c21a.js +1 -0
- package/.next/static/chunks/app/mcp/page-92c03186d566a4f5.js +1 -0
- package/.next/static/chunks/app/mcp-flows/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/mcp-proxy/[server]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/models/page-d71e5606a8e29479.js +1 -0
- package/.next/static/chunks/app/packages/page-e64480d78312edd0.js +1 -0
- package/.next/static/chunks/app/{page-0a95c40a65dbd2eb.js → page-d3ea90b065b95d1e.js} +1 -1
- package/.next/static/chunks/app/settings/page-d067a3a624ec2fa0.js +1 -0
- package/.next/static/chunks/app/v1/chat/completions/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/models/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/waves/page-ff15db2f75fb5d62.js +1 -0
- package/.next/static/chunks/webpack-2b2d7505a2ac6538.js +1 -0
- package/.next/static/css/{64cb1f185b52a623.css → 69ab44eb350e0b6c.css} +1 -1
- package/.next/trace +9 -10
- package/.next/types/app/api/packages/build/route.ts +347 -0
- package/.next/types/app/api/packages/derive-secrets/route.ts +347 -0
- package/.next/types/app/api/packages/install/route.ts +347 -0
- package/.next/types/app/api/packages/install/status/route.ts +347 -0
- package/.next/types/app/api/packages/resolve/route.ts +347 -0
- package/.next/types/app/api/registry/auth/resend/route.ts +347 -0
- package/.next/types/app/api/registry/auth/route.ts +347 -0
- package/.next/types/app/api/registry/publish/route.ts +347 -0
- package/.next/types/app/api/registry/settings/route.ts +347 -0
- package/.next/types/app/packages/page.ts +84 -0
- package/.next/types/routes.d.ts +12 -2
- package/.next/types/validator.ts +90 -0
- package/README.md +1 -1
- package/package.json +6 -1
- package/.next/server/chunks/1223.js +0 -1
- package/.next/server/chunks/1377.js +0 -1
- package/.next/server/chunks/289.js +0 -1
- package/.next/server/chunks/3823.js +0 -41
- package/.next/server/chunks/3855.js +0 -1
- package/.next/server/chunks/3924.js +0 -52
- package/.next/server/chunks/4372.js +0 -1
- package/.next/server/chunks/4561.js +0 -65
- package/.next/server/chunks/4677.js +0 -37
- package/.next/server/chunks/472.js +0 -1
- package/.next/server/chunks/4793.js +0 -2
- package/.next/server/chunks/4836.js +0 -1
- package/.next/server/chunks/5148.js +0 -1
- package/.next/server/chunks/5311.js +0 -1
- package/.next/server/chunks/584.js +0 -1
- package/.next/server/chunks/62.js +0 -1
- package/.next/server/chunks/6240.js +0 -1
- package/.next/server/chunks/6306.js +0 -1
- package/.next/server/chunks/6793.js +0 -1
- package/.next/server/chunks/6908.js +0 -12
- package/.next/server/chunks/8216.js +0 -1
- package/.next/server/chunks/856.js +0 -5
- package/.next/server/chunks/8652.js +0 -42
- package/.next/server/chunks/9165.js +0 -1
- package/.next/server/chunks/9427.js +0 -1
- package/.next/static/Il6IDWxf3CN0dv-P6QQrp/_buildManifest.js +0 -1
- package/.next/static/chunks/1675-773454288de4309d.js +0 -1
- package/.next/static/chunks/1731-6e45fb529f9044a3.js +0 -1
- package/.next/static/chunks/2318-76fcb6c769b1a569.js +0 -1
- package/.next/static/chunks/2403-5c26e0abd76095b1.js +0 -1
- package/.next/static/chunks/2566-6e2b9d9349814789.js +0 -1
- package/.next/static/chunks/2734-59fbe2f62a59df86.js +0 -1
- package/.next/static/chunks/3089.6b4e21e1faa304e2.js +0 -1
- package/.next/static/chunks/3109-11bdec9bdfd996c3.js +0 -1
- package/.next/static/chunks/333-5f3c5be57c80c48c.js +0 -1
- package/.next/static/chunks/3333-b7b3e5758a568013.js +0 -1
- package/.next/static/chunks/4635-0fe310d3be64e71e.js +0 -1
- package/.next/static/chunks/4690-ec7d397cfacedac3.js +0 -1
- package/.next/static/chunks/4775-cb9c0be621363a08.js +0 -8
- package/.next/static/chunks/5336-81da1080de29ebfc.js +0 -1
- package/.next/static/chunks/7274-1184563607f2b5f5.js +0 -1
- package/.next/static/chunks/8166-e75acdc559b34fcd.js +0 -1
- package/.next/static/chunks/8607-5787e42775fc3acb.js +0 -1
- package/.next/static/chunks/8610-660d5088bc1dd7a7.js +0 -1
- package/.next/static/chunks/9240-d0a51f4d504f34b1.js +0 -1
- package/.next/static/chunks/9562-b7922ceb400ec536.js +0 -1
- package/.next/static/chunks/9704-6b7415964d7c042a.js +0 -1
- package/.next/static/chunks/app/api/approvals/[id]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/approvals/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/backup/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/browse/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/bugs/enhance/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/cwd/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/encryption/secure/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/env/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/compile/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/generate/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/improve/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/quick-chat/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/repair/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/git/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/init/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/local-models/capability/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/local-models/pull/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/local-models/suggest/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/cancel/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/model/[id]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/model/provider/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/model/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/model/test/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/oauth/callback/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/oauth/initiate/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/oauth/reset/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/restore/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/runs/active/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/storage/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/update/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/waves/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/webhooks/[id]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/chat/page-04ad1fad78048afb.js +0 -1
- package/.next/static/chunks/app/docs/page-5475c616764dbb18.js +0 -1
- package/.next/static/chunks/app/executions/page-c18708ed96d228ec.js +0 -1
- package/.next/static/chunks/app/flows/page-f7e44aa545bcc56e.js +0 -1
- package/.next/static/chunks/app/layout-e6fbae80e0f456a6.js +0 -1
- package/.next/static/chunks/app/mcp/page-3638fbee04a3a6ea.js +0 -1
- package/.next/static/chunks/app/mcp-flows/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/mcp-proxy/[server]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/models/page-e690a986047b1e62.js +0 -1
- package/.next/static/chunks/app/settings/page-3ef9b95187e18a5a.js +0 -1
- package/.next/static/chunks/app/v1/chat/completions/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/models/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/waves/page-c9a307e2236423a4.js +0 -1
- package/.next/static/chunks/webpack-a6844e1074885c2f.js +0 -1
- /package/.next/static/{Il6IDWxf3CN0dv-P6QQrp → O-elWbT5rs6ci1CrCqez1}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4662,9195],{748:(e,t,r)=>{"use strict";r.d(t,{kY:()=>o,Ic:()=>i});var a=r(26796),n=r(87021);let o={light:{background:"#FFFFFF",foreground:"#2C3E50",surface:"#F5F6FA",surfaceRaised:"#FFFFFF",paperBackground:"#F5F6FA",textSecondary:"#7F8C8D",textDisabled:"#9CA3AF",border:"#e5e7eb",heading:"#111",text:"#333",secondaryText:"#666",error:{background:"#fef2f2",border:"#fecaca",text:"#dc2626"},domain:{resource:"#009688",resourceSoft:"#4DB6AC",signal:"#7E57C2",startNode:"#795548",codeBackground:"#f5f5f5",http:{get:"#2e7d32",post:"#1565c0",put:"#e65100",patch:"#6a1b9a",delete:"#c62828"},transport:{stdio:{fg:"#1976d2",bg:"#e3f2fd"},websocket:{fg:"#2e7d32",bg:"#e8f5e8"},sse:{fg:"#f57c00",bg:"#fff3e0"},streamable:{fg:"#00796b",bg:"#e0f2f1"},default:{fg:"#757575",bg:"#f5f5f5"}}}},dark:{background:"#0f1319",foreground:"#eef1f5",surface:"#1a212b",surfaceRaised:"#242d3a",paperBackground:"#1a212b",textSecondary:"#b4bdca",textDisabled:"#6b7280",border:"#37404e",heading:"#f5f7fa",text:"#eef1f5",secondaryText:"#b4bdca",error:{background:"#2a1618",border:"#5a2a2e",text:"#ff6b6b"},domain:{resource:"#26a69a",resourceSoft:"#4DB6AC",signal:"#9575CD",startNode:"#a1887f",codeBackground:"#242d3a",http:{get:"#66bb6a",post:"#5b9dff",put:"#ffa726",patch:"#ba68c8",delete:"#ef5350"},transport:{stdio:{fg:"#90caf9",bg:"#1e2a3a"},websocket:{fg:"#a5d6a7",bg:"#1e2e22"},sse:{fg:"#ffcc80",bg:"#33281a"},streamable:{fg:"#80cbc4",bg:"#17322e"},default:{fg:"#b4bdca",bg:"#242d3a"}}}}},s=(0,n.h)("frontend/utils/theme");function i(){let{isDarkMode:e}=(0,a.useTheme)();return s.debug("useThemeUtils called with isDarkMode: ".concat(e)),{getThemeValue:(t,r)=>e?r:t,getThemeColor:t=>{let r=t.split("."),a=o[e?"dark":"light"];for(let e of r)if(!a||"object"!=typeof a||!(e in a))return s.warn("Theme color path not found: ".concat(t)),"";else a=a[e];return a},colors:e?o.dark:o.light,isDarkMode:e}}},8209:(e,t,r)=>{Promise.resolve().then(r.bind(r,46487))},26796:(e,t,r)=>{"use strict";r.r(t),r.d(t,{ThemeProvider:()=>p,useTheme:()=>b});var a=r(95155),n=r(12115),o=r(87021),s=r(7160),i=r(29197),l=r(748),d=r(84563),c=r(29692);let u=(0,o.h)("frontend/contexts/ThemeContext"),h=(0,n.createContext)(void 0),p=e=>{let{children:t}=e,[r,o]=(0,n.useState)(!1),[p,b]=(0,n.useState)(!1);(0,n.useEffect)(()=>{(async()=>{u.debug("Loading theme preference from storage");let e=await (0,c.YM)(c.Zg.THEME,"light");u.info("Theme loaded from storage: ".concat(e));let t="dark"===e;b(t),t?document.documentElement.classList.add("dark-theme"):document.documentElement.classList.remove("dark-theme"),o(!0)})()},[]);let f=(0,n.useMemo)(()=>(function(e){let t="dark"===e?l.kY.dark:l.kY.light,r="dark"===e;return(0,i.A)({palette:{mode:e,primary:{main:r?"#4f93f5":"#007bff",light:r?"#6aa6f7":"#3395ff",dark:r?"#3a7ad4":"#0056b3"},secondary:{main:r?"#a3adba":"#6c757d"},error:{main:r?"#ff6b6b":"#dc2626",light:r?"#5a2a2e":"#fecaca",dark:r?"#2a1618":"#b91c1c"},warning:{main:r?"#e0a23c":"#f59e0b"},info:{main:r?"#56b6d6":"#3b82f6"},success:{main:r?"#3fae72":"#16a34a"},divider:t.border,background:{default:t.background,paper:t.surface},text:{primary:t.foreground,secondary:t.textSecondary,disabled:t.textDisabled}},typography:{fontFamily:"var(--font-geist-sans), Arial, sans-serif",h1:{fontWeight:700},h2:{fontWeight:700},h3:{fontWeight:600},h4:{fontWeight:600},h5:{fontWeight:600},h6:{fontWeight:600}},components:{MuiButton:{styleOverrides:{root:{textTransform:"none",borderRadius:"0.375rem"}}},MuiPaper:{styleOverrides:{root:{borderRadius:"0.5rem",backgroundImage:"none"}}},MuiTextField:{styleOverrides:{root:{"& .MuiOutlinedInput-root":{borderRadius:"0.375rem"}}}},MuiCard:{styleOverrides:{root:{borderRadius:"0.5rem",border:r?"1px solid ".concat(t.border):void 0,boxShadow:r?"0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -1px rgba(0, 0, 0, 0.3)":"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)"}}},MuiMenu:{styleOverrides:{paper:{backgroundColor:t.surfaceRaised,backgroundImage:"none"}}},MuiPopover:{styleOverrides:{paper:{backgroundColor:t.surfaceRaised,backgroundImage:"none"}}},MuiTooltip:{styleOverrides:{tooltip:r?{backgroundColor:t.surfaceRaised,border:"1px solid ".concat(t.border),color:t.foreground}:void 0}}}})})(p?"dark":"light"),[p]);return u.debug("Rendering ThemeProvider with isDarkMode: ".concat(p)),(0,a.jsx)(h.Provider,{value:{toggleTheme:()=>{b(e=>{let t=!e,r=t?"dark":"light";return u.info("Toggling theme to: ".concat(r)),t?document.documentElement.classList.add("dark-theme"):document.documentElement.classList.remove("dark-theme"),(0,c.VH)(c.Zg.THEME,r),t})},isDarkMode:p},children:(0,a.jsxs)(s.A,{theme:f,children:[(0,a.jsx)(d.Ay,{}),t]})})},b=()=>{let e=(0,n.useContext)(h);if(!e)throw u.error("useTheme hook used outside of ThemeProvider"),Error("useTheme must be used within a ThemeProvider");return u.debug("useTheme hook accessed"),e}},46487:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>er});var a=r(95155),n=r(94049),o=r(12115),s=r(25635),i=r(98267),l=r(20537),d=r(37960),c=r(63186),u=r(22003),h=r(28548),p=r(2300),b=r(9562),f=r(56422),g=r(41983),x=r(91871),m=r(21422),y=r(87830),v=r(68212),j=r(42063),k=r(9164);function w(){let{setKey:e,changeKey:t,verifyKey:r,isEncryptionInitialized:i,isUserEncryptionEnabled:l}=(0,k.useStorage)(),[d,c]=(0,o.useState)(""),[w,A]=(0,o.useState)(""),[S,C]=(0,o.useState)(!1),[E,R]=(0,o.useState)(""),[O,T]=(0,o.useState)(""),[P,F]=(0,o.useState)(!1),[I,B]=(0,o.useState)(!1),[W,M]=(0,o.useState)(null),[L,D]=(0,o.useState)(!1),[U,N]=(0,o.useState)(!1),[z,V]=(0,o.useState)(!1),G=()=>{setTimeout(()=>window.location.reload(),800)};(0,o.useEffect)(()=>{(async()=>{let e=await i(),t=await l();D(e),N(t)})()},[i,l]);let Y=async t=>{t.preventDefault(),V(!0),M(null);try{if(d.length<12){M({type:"error",text:"Encryption password must be at least 12 characters long for security"}),V(!1);return}if(d!==w){M({type:"error",text:"Passwords do not match"}),V(!1);return}await e(d),M({type:"success",text:"Encryption password set successfully"}),c(""),A(""),D(!0),G()}catch(e){M({type:"error",text:"Failed to set encryption password"})}finally{V(!1)}},_=async e=>{e.preventDefault(),V(!0),M(null);try{if(O.length<12){M({type:"error",text:"New password must be at least 12 characters long for security"}),V(!1);return}if(!await r(E)){M({type:"error",text:"Current password is incorrect"}),V(!1);return}await t(E,O)?(M({type:"success",text:"Encryption password changed successfully"}),R(""),T(""),G()):M({type:"error",text:"Failed to change encryption password"})}catch(e){M({type:"error",text:"An error occurred while changing the password"})}finally{V(!1)}};return(0,a.jsxs)(n.default,{sx:{width:"100%"},children:[(0,a.jsx)(s.default,{variant:"h6",gutterBottom:!0,children:"Encryption Settings"}),(0,a.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:3},children:"Set an encryption password to secure sensitive data like API keys and credentials. This password is used to encrypt your data and is never stored directly."}),W&&(0,a.jsx)(u.A,{severity:W.type,sx:{mb:3},children:W.text}),(0,a.jsxs)(n.default,{sx:{display:"flex",alignItems:"center",mb:3},children:[(0,a.jsx)(s.default,{variant:"body1",sx:{mr:2},children:"Current encryption status:"}),L?U?(0,a.jsx)(h.A,{icon:(0,a.jsx)(m.A,{}),label:"Custom Password Protection",color:"success",variant:"outlined"}):(0,a.jsx)(h.A,{icon:(0,a.jsx)(y.A,{}),label:"Default Encryption",color:"primary",variant:"outlined"}):(0,a.jsx)(h.A,{label:"No Encryption",color:"error",variant:"outlined"})]}),L&&U?U?(0,a.jsxs)(p.A,{elevation:2,sx:{p:3},children:[(0,a.jsx)(s.default,{variant:"subtitle1",gutterBottom:!0,fontWeight:"bold",children:"Change Encryption Password"}),(0,a.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"You can change your custom encryption password here. This will re-encrypt your data with the new password. Your data will remain intact."}),(0,a.jsxs)(n.default,{component:"form",onSubmit:_,children:[(0,a.jsx)(b.A,{fullWidth:!0,label:"Current Password",variant:"outlined",value:E,onChange:e=>R(e.target.value),type:P?"text":"password",InputProps:{endAdornment:(0,a.jsx)(f.A,{position:"end",children:(0,a.jsx)(g.A,{"aria-label":"toggle current password visibility",onClick:()=>F(!P),edge:"end",children:P?(0,a.jsx)(v.A,{}):(0,a.jsx)(j.A,{})})})},sx:{mb:2}}),(0,a.jsx)(b.A,{fullWidth:!0,label:"New Password",variant:"outlined",value:O,onChange:e=>T(e.target.value),type:I?"text":"password",InputProps:{endAdornment:(0,a.jsx)(f.A,{position:"end",children:(0,a.jsx)(g.A,{"aria-label":"toggle new password visibility",onClick:()=>B(!I),edge:"end",children:I?(0,a.jsx)(v.A,{}):(0,a.jsx)(j.A,{})})})},sx:{mb:3}}),(0,a.jsx)(x.A,{type:"submit",variant:"contained",color:"primary",disabled:!E||!O||z,children:"Change Password"})]})]}):null:(0,a.jsxs)(p.A,{elevation:2,sx:{p:3,mb:4},children:[(0,a.jsx)(s.default,{variant:"subtitle1",gutterBottom:!0,fontWeight:"bold",children:"Set Custom Encryption Password"}),(0,a.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:L?"Your data is currently protected with default encryption. Set a custom password for enhanced security.":"Create a strong password to protect your sensitive data. Make sure to remember this password as it cannot be recovered if lost."}),(0,a.jsxs)(n.default,{component:"form",onSubmit:Y,children:[(0,a.jsx)(b.A,{fullWidth:!0,label:"New Password",variant:"outlined",value:d,onChange:e=>c(e.target.value),type:S?"text":"password",InputProps:{endAdornment:(0,a.jsx)(f.A,{position:"end",children:(0,a.jsx)(g.A,{"aria-label":"toggle password visibility",onClick:()=>C(!S),edge:"end",children:S?(0,a.jsx)(v.A,{}):(0,a.jsx)(j.A,{})})})},sx:{mb:2}}),(0,a.jsx)(b.A,{fullWidth:!0,label:"Confirm Password",variant:"outlined",value:w,onChange:e=>A(e.target.value),type:S?"text":"password",sx:{mb:3}}),(0,a.jsx)(x.A,{type:"submit",variant:"contained",color:"primary",disabled:!d||!w||z,children:L?"Upgrade to Custom Password":"Set Encryption Password"})]})]}),(0,a.jsx)(n.default,{sx:{mt:4},children:(0,a.jsxs)(u.A,{severity:U?"warning":"info",children:[(0,a.jsx)(s.default,{variant:"subtitle2",fontWeight:"bold",children:U?"Important Security Information":"About Default Encryption"}),U?(0,a.jsxs)(s.default,{variant:"body2",children:["• Your custom encryption password is never stored directly on the server",(0,a.jsx)("br",{}),"• If you forget your password, you will not be able to access your encrypted data",(0,a.jsx)("br",{}),"• Consider using a password manager to securely store this password"]}):(0,a.jsxs)(s.default,{variant:"body2",children:["• Your data is currently encrypted with a built-in default key",(0,a.jsx)("br",{}),"• This provides basic protection without requiring password setup",(0,a.jsx)("br",{}),"• For maximum security, set a custom password using the form above"]})]})})]})}var A=r(99944),S=r(9957),C=r(26796),E=r(87021);let R=(0,E.h)("frontend/components/Settings/ThemeSettings");function O(){let{isDarkMode:e,toggleTheme:t}=(0,C.useTheme)();return R.debug("Rendering ThemeSettings with isDarkMode: ".concat(e)),(0,a.jsxs)(n.default,{sx:{maxWidth:600},children:[(0,a.jsx)(s.default,{variant:"h6",gutterBottom:!0,children:"Theme Settings"}),(0,a.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Customize the application appearance"}),(0,a.jsx)(A.A,{control:(0,a.jsx)(S.A,{checked:e,onChange:t,name:"darkMode"}),label:"Dark Mode"})]})}var T=r(71892),P=r(52397);function F(){let{globalEnvVars:e,setGlobalEnvVars:t,deleteGlobalEnvVar:r}=(0,k.useStorage)(),[i,l]=(0,o.useState)(null),d=async e=>{try{let r=Object.fromEntries(Object.entries(e).filter(e=>{let[t,r]=e;return"string"==typeof r||!r.metadata.isSecret||r.value!==P.gF}));await t(r),l({type:"success",text:"Global environment variables updated successfully"}),setTimeout(()=>{l(null)},3e3)}catch(e){l({type:"error",text:"Failed to update global environment variables"})}};return(0,a.jsxs)(n.default,{sx:{width:"100%"},children:[(0,a.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Define global environment variables that can be bound to MCP servers. This allows you to manage API keys and other sensitive information in one place."}),i&&(0,a.jsx)(u.A,{severity:i.type,sx:{mb:2},children:i.text}),(0,a.jsx)(T.A,{serverName:"Global",initialEnv:e,onSave:d,onDelete:r})]})}var I=r(17325),B=r(22822),W=r(4474),M=r(21067),L=r(2778),D=r(52363),U=r(65036),N=r(50001),z=r(75912),V=r(27156);let G=(0,E.h)("frontend/components/Settings/BackupSettings"),Y=[{key:"models",label:"Models",description:"AI model configurations",storageKey:V.Z.MODELS},{key:"mcpServers",label:"MCP Servers Configuration",description:"MCP server settings",storageKey:V.Z.MCP_SERVERS},{key:"mcpServersFolder",label:"MCP Servers Folder",description:"MCP server code and files",isFolder:!0},{key:"flows",label:"Flows",description:"Flow configurations",storageKey:V.Z.FLOWS},{key:"chatHistory",label:"Chat History",description:"Conversation history",storageKey:V.Z.CHAT_HISTORY},{key:"settings",label:"Settings",description:"Application settings",storageKey:V.Z.THEME},{key:"globalEnvVars",label:"Global Environment Variables",description:"Global environment variables",storageKey:V.Z.GLOBAL_ENV_VARS},{key:"encryptionKey",label:"Encryption Key",description:"Data encryption key",storageKey:V.Z.ENCRYPTION_KEY}];function _(){let[e,t]=(0,o.useState)(Y.reduce((e,t)=>({...e,[t.key]:!0}),{})),[r,i]=(0,o.useState)(Y.reduce((e,t)=>({...e,[t.key]:!0}),{})),[l,d]=(0,o.useState)(null),c=(0,o.useRef)(null),[h,b]=(0,o.useState)(null),[f,g]=(0,o.useState)(!1),[m,y]=(0,o.useState)(!1),v=r=>{t({...e,[r.target.name]:r.target.checked})},j=e=>{i({...r,[e.target.name]:e.target.checked})},k=async()=>{G.debug("Creating backup with selections:",e),g(!0),b(null);try{let t=Object.entries(e).filter(e=>{let[t,r]=e;return r}).map(e=>{let[t]=e;return t});if(0===t.length){b({type:"error",text:"Please select at least one item to backup"}),g(!1);return}let r=await fetch("/api/backup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({selections:t})});if(!r.ok)throw Error("Failed to create backup");let a=await r.blob(),n=window.URL.createObjectURL(a),o=document.createElement("a");o.style.display="none",o.href=n;let s=new Date().toISOString().replace(/[:.]/g,"-").substring(0,19);o.download="flujo-backup-".concat(s,".zip"),document.body.appendChild(o),o.click(),window.URL.revokeObjectURL(n),document.body.removeChild(o),b({type:"success",text:"Backup created successfully"})}catch(e){G.error("Error creating backup:",e),b({type:"error",text:e instanceof Error?e.message:"Failed to create backup"})}finally{g(!1)}},w=async()=>{G.debug("Restoring from backup with selections:",r),g(!0),b(null),y(!1);try{let e=Object.entries(r).filter(e=>{let[t,r]=e;return r}).map(e=>{let[t]=e;return t}),t=new FormData;t.append("file",l),t.append("selections",JSON.stringify(e));let a=await fetch("/api/restore",{method:"POST",body:t});if(!a.ok){let e=await a.json();throw Error(e.error||"Failed to restore from backup")}b({type:"success",text:"Restore completed successfully. You may need to refresh the page to see the changes."}),c.current&&(c.current.value=""),d(null)}catch(e){G.error("Error restoring from backup:",e),b({type:"error",text:e instanceof Error?e.message:"Failed to restore from backup"})}finally{g(!1)}},S=r=>{let a={...e};Y.forEach(e=>{a[e.key]=r}),t(a)},C=e=>{let t={...r};Y.forEach(r=>{t[r.key]=e}),i(t)};return(0,a.jsxs)(n.default,{sx:{width:"100%"},children:[(0,a.jsx)(s.default,{variant:"h6",gutterBottom:!0,children:"Backup and Restore"}),(0,a.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Create backups of your application data or restore from a previous backup."}),h&&(0,a.jsx)(u.A,{severity:h.type,sx:{mb:2},children:h.text}),(0,a.jsxs)(p.A,{sx:{p:3,mb:3},children:[(0,a.jsx)(s.default,{variant:"subtitle1",gutterBottom:!0,fontWeight:"bold",children:"Create Backup"}),(0,a.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Select the components you want to include in the backup."}),(0,a.jsxs)(n.default,{sx:{mb:2},children:[(0,a.jsx)(x.A,{size:"small",onClick:()=>S(!0),sx:{mr:1},children:"Select All"}),(0,a.jsx)(x.A,{size:"small",onClick:()=>S(!1),children:"Deselect All"})]}),(0,a.jsx)(I.A,{sx:{mb:3},children:Y.map(t=>(0,a.jsx)(A.A,{control:(0,a.jsx)(B.A,{checked:e[t.key],onChange:v,name:t.key}),label:(0,a.jsxs)(n.default,{children:[(0,a.jsx)(s.default,{variant:"body1",children:t.label}),(0,a.jsx)(s.default,{variant:"body2",color:"text.secondary",children:t.description})]})},t.key))}),(0,a.jsx)(x.A,{variant:"contained",onClick:k,disabled:f||Object.values(e).every(e=>!e),startIcon:f?(0,a.jsx)(W.default,{size:20}):null,children:f?"Creating Backup...":"Create Backup"})]}),(0,a.jsxs)(p.A,{sx:{p:3},children:[(0,a.jsx)(s.default,{variant:"subtitle1",gutterBottom:!0,fontWeight:"bold",children:"Restore from Backup"}),(0,a.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Select a backup file and choose which components to restore."}),(0,a.jsxs)(n.default,{sx:{mb:3},children:[(0,a.jsxs)(x.A,{variant:"outlined",component:"label",sx:{mb:2},children:["Select Backup File",(0,a.jsx)("input",{type:"file",hidden:!0,accept:".zip",onChange:e=>{let t=e.target.files;t&&t.length>0&&(d(t[0]),b(null))},ref:c})]}),l&&(0,a.jsxs)(s.default,{variant:"body2",sx:{ml:1},children:["Selected file: ",l.name]})]}),(0,a.jsx)(M.A,{sx:{mb:2}}),(0,a.jsx)(s.default,{variant:"subtitle2",gutterBottom:!0,children:"Restore Options"}),(0,a.jsxs)(n.default,{sx:{mb:2},children:[(0,a.jsx)(x.A,{size:"small",onClick:()=>C(!0),sx:{mr:1},children:"Select All"}),(0,a.jsx)(x.A,{size:"small",onClick:()=>C(!1),children:"Deselect All"})]}),(0,a.jsx)(I.A,{sx:{mb:3},children:Y.map(e=>(0,a.jsx)(A.A,{control:(0,a.jsx)(B.A,{checked:r[e.key],onChange:j,name:e.key}),label:(0,a.jsxs)(n.default,{children:[(0,a.jsx)(s.default,{variant:"body1",children:e.label}),(0,a.jsx)(s.default,{variant:"body2",color:"text.secondary",children:e.description})]})},e.key))}),(0,a.jsx)(x.A,{variant:"contained",color:"warning",onClick:()=>l?0===Object.entries(r).filter(e=>{let[t,r]=e;return r}).map(e=>{let[t]=e;return t}).length?void b({type:"error",text:"Please select at least one item to restore"}):void y(!0):void b({type:"error",text:"Please select a backup file"}),disabled:f||!l||Object.values(r).every(e=>!e),startIcon:f?(0,a.jsx)(W.default,{size:20}):null,children:f?"Restoring...":"Restore from Backup"})]}),(0,a.jsxs)(L.A,{open:m,onClose:()=>y(!1),children:[(0,a.jsx)(D.A,{children:"Confirm Restore"}),(0,a.jsx)(U.A,{children:(0,a.jsx)(N.A,{children:"This will overwrite your existing data with the contents of the backup file. This action cannot be undone. Are you sure you want to continue?"})}),(0,a.jsxs)(z.A,{children:[(0,a.jsx)(x.A,{onClick:()=>y(!1),children:"Cancel"}),(0,a.jsx)(x.A,{onClick:w,color:"warning",variant:"contained",children:"Restore"})]})]})]})}var K=r(52641),J=r(84869);function H(){let{settings:e,updateSettings:t}=(0,k.useStorage)(),r=(0,J.G)(),o=(null==e?void 0:e.speech)||{enabled:!0};return(0,a.jsxs)(n.default,{sx:{p:2},children:[!r.supported&&(0,a.jsx)(u.A,{severity:"warning",sx:{mb:3},children:"Speech recognition is not supported in your browser. Please use Chrome, Edge, or Safari for the best experience."}),(0,a.jsxs)(K.A,{fullWidth:!0,sx:{mb:3},children:[(0,a.jsx)(A.A,{control:(0,a.jsx)(S.A,{checked:o.enabled,onChange:r=>{t({...e,speech:{...o,enabled:r.target.checked}})},name:"enabled",disabled:!r.supported}),label:"Enable speech recognition"}),(0,a.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mt:1},children:"When enabled, audio recordings will be transcribed using your browser's built-in offfline speech recognition capabilities."})]}),(0,a.jsxs)(p.A,{variant:"outlined",sx:{p:2,mb:3},children:[(0,a.jsx)(s.default,{variant:"subtitle2",gutterBottom:!0,children:"Speech Recognition Information"}),(0,a.jsxs)(n.default,{sx:{display:"flex",justifyContent:"space-between",mb:1},children:[(0,a.jsx)(s.default,{variant:"body2",children:"Technology:"}),(0,a.jsx)(s.default,{variant:"body2",children:"Web Speech API"})]}),(0,a.jsxs)(n.default,{sx:{display:"flex",justifyContent:"space-between",mb:1},children:[(0,a.jsx)(s.default,{variant:"body2",children:"Processing:"}),(0,a.jsx)(s.default,{variant:"body2",children:"Browser-based"})]}),(0,a.jsxs)(n.default,{sx:{display:"flex",justifyContent:"space-between",mb:1},children:[(0,a.jsx)(s.default,{variant:"body2",children:"Language:"}),(0,a.jsx)(s.default,{variant:"body2",children:"Automatically uses browser language"})]}),(0,a.jsxs)(n.default,{sx:{display:"flex",justifyContent:"space-between",mb:1},children:[(0,a.jsx)(s.default,{variant:"body2",children:"Privacy:"}),(0,a.jsx)(s.default,{variant:"body2",children:"Depends on browser implementation"})]})]}),(0,a.jsx)(u.A,{severity:"info",sx:{mt:3},children:(0,a.jsx)(s.default,{variant:"body2",children:"Speech recognition quality may vary based on your browser, microphone quality, and background noise. For best results, speak clearly and use a good quality microphone."})})]})}(0,E.h)("frontend/components/Settings/SpeechRecognitionSettings");let Z=(0,E.h)("frontend/components/Settings/UpdateSettings");function $(){let{settings:e,updateSettings:t}=(0,k.useStorage)(),r=(null==e?void 0:e.update)||{checkOnStartup:!1},[i,l]=(0,o.useState)(!1),[d,c]=(0,o.useState)(!1),[h,p]=(0,o.useState)(null),[b,f]=(0,o.useState)(null),g=null===b||"git"===b,m=async()=>{l(!0),p(null);try{let e=await fetch("/api/update"),t=await e.json();"string"==typeof t.updateMode&&f(t.updateMode),e.ok&&!1!==t.success?!1===t.isGitRepo?p({severity:"info",message:t.message}):t.updateAvailable?p({severity:"warning",message:"An update is available (".concat(t.behindBy," new commit").concat(1===t.behindBy?"":"s"," on ").concat(t.branch,").")}):p({severity:"success",message:"FLUJO is up to date (v".concat(t.currentVersion,").")}):p({severity:"error",message:t.error||"Failed to check for updates."})}catch(e){Z.error("Update check failed",e),p({severity:"error",message:"Failed to check for updates."})}finally{l(!1)}},y=async()=>{c(!0),p({severity:"info",message:"Updating FLUJO - this may take a few minutes..."});try{let e=await fetch("/api/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"apply"})}),t=await e.json();if(!e.ok||!1===t.success){p({severity:"error",message:t.error||"Update failed."}),c(!1);return}if(p({severity:"success",message:t.message}),t.restarting){let e=!1,t=async()=>{try{if((await fetch("/api/cwd",{cache:"no-store"})).ok&&e)return void window.location.reload()}catch(t){e=!0}setTimeout(t,3e3)};setTimeout(t,5e3)}else c(!1)}catch(e){Z.error("Update failed",e),p({severity:"error",message:"Update failed."}),c(!1)}};return(0,a.jsxs)(n.default,{sx:{p:2},children:[(0,a.jsxs)(K.A,{fullWidth:!0,sx:{mb:2},children:[(0,a.jsx)(A.A,{control:(0,a.jsx)(S.A,{checked:r.checkOnStartup,onChange:a=>{t({...e,update:{...r,checkOnStartup:a.target.checked}})},name:"checkOnStartup"}),label:"Check for updates on startup"}),(0,a.jsxs)(s.default,{variant:"body2",color:"text.secondary",sx:{mt:1},children:["When enabled, FLUJO checks GitHub for a newer version when the home page loads and shows a one-click update banner if one is available. Updates run ",(0,a.jsx)("code",{children:"git pull"})," + rebuild in your install folder; your data is preserved."]}),!g&&(0,a.jsxs)(s.default,{variant:"body2",color:"text.secondary",sx:{mt:1},children:["This install can't update itself in place","container"===b?" (running in Docker) — pull a newer image instead.":"npm"===b?" (installed via npm) — rerun with the latest version instead.":" — it is not running from a git clone."]})]}),(0,a.jsxs)(n.default,{sx:{display:"flex",gap:2,mb:2},children:[(0,a.jsxs)(x.A,{variant:"outlined",onClick:m,disabled:i||d,children:[i?(0,a.jsx)(W.default,{size:20,sx:{mr:1}}):null,"Check now"]}),(0,a.jsxs)(x.A,{variant:"contained",onClick:y,disabled:d||!g,children:[d?(0,a.jsx)(W.default,{size:20,sx:{mr:1}}):null,"Update now"]})]}),h&&(0,a.jsx)(u.A,{severity:h.severity,sx:{mt:1},children:h.message})]})}var q=r(8907),Q=r(69195);function X(){let{startTour:e}=(0,Q.useTour)();return(0,a.jsxs)(n.default,{sx:{p:2},children:[(0,a.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"The guided tour walks you through the full first-run path — adding a model, connecting an MCP tool server, building a flow, and running it in chat. It launches automatically the first time you open FLUJO; replay it any time below."}),(0,a.jsx)(x.A,{variant:"outlined",startIcon:(0,a.jsx)(q.A,{}),onClick:e,children:"Replay guided tour"})]})}function ee(){let[e,t]=(0,o.useState)("globalEnv"),r=e=>(r,a)=>{t(!!a&&e)};return(0,a.jsxs)(n.default,{sx:{p:3},children:[(0,a.jsx)(s.default,{variant:"h5",gutterBottom:!0,children:"Settings"}),(0,a.jsxs)(n.default,{sx:{mt:2},children:[(0,a.jsxs)(i.A,{expanded:"globalEnv"===e,onChange:r("globalEnv"),children:[(0,a.jsx)(l.A,{expandIcon:(0,a.jsx)(c.A,{}),"aria-controls":"globalEnv-content",id:"globalEnv-header",children:(0,a.jsx)(s.default,{variant:"h6",children:"Global Environment Variables"})}),(0,a.jsx)(d.A,{children:(0,a.jsx)(F,{})})]}),(0,a.jsxs)(i.A,{expanded:"encryption"===e,onChange:r("encryption"),children:[(0,a.jsx)(l.A,{expandIcon:(0,a.jsx)(c.A,{}),"aria-controls":"encryption-content",id:"encryption-header",children:(0,a.jsx)(s.default,{variant:"h6",children:"Encryption"})}),(0,a.jsx)(d.A,{children:(0,a.jsx)(w,{})})]}),(0,a.jsxs)(i.A,{expanded:"theme"===e,onChange:r("theme"),children:[(0,a.jsx)(l.A,{expandIcon:(0,a.jsx)(c.A,{}),"aria-controls":"theme-content",id:"theme-header",children:(0,a.jsx)(s.default,{variant:"h6",children:"Theme"})}),(0,a.jsx)(d.A,{children:(0,a.jsx)(O,{})})]}),(0,a.jsxs)(i.A,{expanded:"backup"===e,onChange:r("backup"),children:[(0,a.jsx)(l.A,{expandIcon:(0,a.jsx)(c.A,{}),"aria-controls":"backup-content",id:"backup-header",children:(0,a.jsx)(s.default,{variant:"h6",children:"Backup & Restore"})}),(0,a.jsx)(d.A,{children:(0,a.jsx)(_,{})})]}),(0,a.jsxs)(i.A,{expanded:"speech"===e,onChange:r("speech"),children:[(0,a.jsx)(l.A,{expandIcon:(0,a.jsx)(c.A,{}),"aria-controls":"speech-content",id:"speech-header",children:(0,a.jsx)(s.default,{variant:"h6",children:"Speech Recognition"})}),(0,a.jsx)(d.A,{children:(0,a.jsx)(H,{})})]}),(0,a.jsxs)(i.A,{expanded:"updates"===e,onChange:r("updates"),children:[(0,a.jsx)(l.A,{expandIcon:(0,a.jsx)(c.A,{}),"aria-controls":"updates-content",id:"updates-header",children:(0,a.jsx)(s.default,{variant:"h6",children:"Updates"})}),(0,a.jsx)(d.A,{children:(0,a.jsx)($,{})})]}),(0,a.jsxs)(i.A,{expanded:"onboarding"===e,onChange:r("onboarding"),children:[(0,a.jsx)(l.A,{expandIcon:(0,a.jsx)(c.A,{}),"aria-controls":"onboarding-content",id:"onboarding-header",children:(0,a.jsx)(s.default,{variant:"h6",children:"Onboarding"})}),(0,a.jsx)(d.A,{children:(0,a.jsx)(X,{})})]})]})]})}let et=(0,E.h)("app/settings/page");function er(){return et.debug("Rendering SettingsPage"),(0,a.jsx)(n.default,{component:"main",sx:{minHeight:"100vh"},children:(0,a.jsx)(ee,{})})}},52397:(e,t,r)=>{"use strict";r.d(t,{RJ:()=>n,gF:()=>a});let a="masked:********",n="********"},69195:(e,t,r)=>{"use strict";r.r(t),r.d(t,{TourProvider:()=>c,useTour:()=>d});var a=r(95155),n=r(12115),o=r(9164),s=r(77326);let i=(0,r(87021).h)("frontend/contexts/TourContext"),l=(0,n.createContext)({isActive:!1,stepIndex:0,startTour:()=>{},next:()=>{},back:()=>{},endTour:()=>{}}),d=()=>(0,n.useContext)(l),c=e=>{var t;let{children:r}=e,{settings:d,updateSettings:c,isLoading:u,settingsHydrated:h}=(0,o.useStorage)(),[p,b]=(0,n.useState)(!1),[f,g]=(0,n.useState)(0),x=(0,n.useRef)(!1),m=(0,n.useCallback)(()=>{var e;c({...d,onboarding:{...null!=(e=d.onboarding)?e:{},completed:!0}}).catch(e=>i.warn("Failed to persist onboarding completion",e))},[d,c]),y=(0,n.useCallback)(()=>{i.info("Starting guided tour"),g(0),b(!0)},[]),v=(0,n.useCallback)(()=>{i.info("Ending guided tour"),b(!1),m()},[m]),j=(0,n.useCallback)(()=>{g(e=>e>=s.$.length-1?(b(!1),m(),e):e+1)},[m]),k=(0,n.useCallback)(()=>{g(e=>Math.max(0,e-1))},[]);return(0,n.useEffect)(()=>{var e;u||!h||x.current||(x.current=!0,(null==(e=d.onboarding)?void 0:e.completed)!==!0&&(i.info("First run detected — auto-starting guided tour"),y()))},[u,h,null==(t=d.onboarding)?void 0:t.completed,y]),(0,a.jsx)(l.Provider,{value:{isActive:p,stepIndex:f,startTour:y,next:j,back:k,endTour:v},children:r})}},71892:(e,t,r)=>{"use strict";r.d(t,{A:()=>R});var a=r(95155),n=r(12115),o=r(2300),s=r(94049),i=r(25635),l=r(91871),d=r(80777),c=r(33077),u=r(9562),h=r(56422),p=r(28548),b=r(99944),f=r(22822),g=r(41983),x=r(56682),m=r(87021),y=r(9164),v=r(86946),j=r(21422),k=r(12857),w=r(48363),A=r(4484),S=r(1877),C=r(52397);let E=(0,m.h)("frontend/components/mcp/MCPEnvManager/EnvEditor"),R=e=>{let{serverName:t,initialEnv:r,onSave:m,onDelete:R,onServerRestart:O}=e,{globalEnvVars:T}=(0,y.useStorage)(),[P,F]=(0,n.useState)([]),[I,B]=(0,n.useState)(!1),[W,M]=(0,n.useState)(!1),[L,D]=(0,n.useState)(!1),[U,N]=(0,n.useState)(null);(0,n.useEffect)(()=>{E.debug("Initializing environment variables for server: ".concat(t),{variableCount:Object.keys(r).length}),F(Object.entries(r).map(e=>{let[t,r]=e,a="object"==typeof r&&null!==r&&"value"in r?r.value:r,n="object"==typeof r&&null!==r&&"metadata"in r?r.metadata:{isSecret:(0,S.xc)(t)},o=a.match(/\$\{global:([^}]+)\}/);if(o){let e=o[1];return{key:t,value:a,isSecret:n.isSecret,isBound:!0,boundTo:e}}let s="string"==typeof a&&(a.startsWith("encrypted:")||a.startsWith("encrypted_failed:"));return{key:t,value:s?C.gF:a,isSecret:n.isSecret,isEncrypted:s}}))},[r]);let z=async e=>{E.debug("Removing environment variable at index: ".concat(e));let r=P[e];if("Global"===t&&R&&r.key)try{await R(r.key),F(P.filter((t,r)=>r!==e))}catch(e){E.error("Failed to delete environment variable: ".concat(r.key),e)}else F(P.filter((t,r)=>r!==e)),B(!0)},V=(e,t,r)=>{let a=[...P];if("isSecret"===t){let t=a[e];t.isSecret&&!r?a[e]={...t,isSecret:r,value:"",isEncrypted:!1,showWarning:!0}:a[e]={...t,isSecret:r}}else{let n={...a[e],[t]:r,isSecret:"key"===t?(0,S.xc)(r):a[e].isSecret};"key"===t&&(n.isValidKey=""===r||/^[a-zA-Z0-9_]+$/.test(r)),"value"===t&&(a[e].isEncrypted&&(n.isEncrypted=!1),a[e].showWarning&&r&&(n.showWarning=!1)),a[e]=n}F(a),B(!0)},G=async()=>{if(P.some(e=>""!==e.key&&!1===e.isValidKey))return void E.error("Cannot save: Some variable names contain invalid characters");E.debug("Saving environment variables for server: ".concat(t),{variableCount:P.length}),M(!0);try{let e=P.reduce((e,t)=>{let{key:r,value:a,isBound:n,boundTo:o,isSecret:s,isEncrypted:i}=t;return r&&(n&&o?e[r]={value:"${global:".concat(o,"}"),metadata:{isSecret:s}}:s&&a===C.gF||(e[r]={value:a,metadata:{isSecret:s}})),e},{});await m(e),B(!1),O&&"Global"!==t&&(E.debug("Restarting server after env variable changes: ".concat(t)),await O(t))}catch(e){E.error("Failed to save environment variables:",e)}M(!1)};return(0,a.jsxs)(o.A,{sx:{p:3,borderRadius:2,border:1,borderColor:e=>"dark"===e.palette.mode?"#3a3a3a":"#e5e7eb"},children:[(0,a.jsxs)(s.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:3},children:[(0,a.jsxs)(i.default,{variant:"h6",sx:{fontWeight:"semibold"},children:["Environment Variables - ",t]}),(0,a.jsx)(l.A,{variant:"contained",color:"primary",size:"small",startIcon:(0,a.jsx)(v.A,{}),onClick:()=>{E.debug("Adding new environment variable"),F([...P,{key:"",value:"",isSecret:!1}]),B(!0)},children:"Add Variable"})]}),(0,a.jsx)(d.A,{spacing:3,children:P.map((e,t)=>(0,a.jsxs)(c.Ay,{container:!0,spacing:2,alignItems:"flex-start",children:[(0,a.jsx)(c.Ay,{item:!0,xs:12,sm:5,children:(0,a.jsx)(u.A,{fullWidth:!0,placeholder:"Variable name",value:e.key,onChange:e=>V(t,"key",e.target.value),error:!1===e.isValidKey,helperText:!1===e.isValidKey?"Only alphanumeric characters and underscores allowed":"",size:"small"})}),(0,a.jsx)(c.Ay,{item:!0,xs:12,sm:5,children:(0,a.jsx)(u.A,{fullWidth:!0,type:e.isSecret?"password":"text",placeholder:e.showWarning?"Re-enter value":"Value",value:e.value,onChange:e=>V(t,"value",e.target.value),InputProps:{readOnly:e.isBound,startAdornment:e.isEncrypted?(0,a.jsx)(h.A,{position:"start",children:(0,a.jsx)(j.A,{fontSize:"small",titleAccess:"This value is stored encrypted"})}):null,endAdornment:e.isBound?(0,a.jsx)(h.A,{position:"end",children:(0,a.jsx)(p.A,{size:"small",label:"Bound to global: ".concat(e.boundTo),color:"primary",variant:"outlined",onDelete:()=>(e=>{E.debug("Unbinding variable at index: ".concat(e));let t=[...P];t[e]={...t[e],isBound:!1,boundTo:void 0},F(t),B(!0)})(t),deleteIcon:(0,a.jsx)(k.A,{fontSize:"small"})})}):null},error:e.showWarning,helperText:e.showWarning?"You must re-enter the value after switching from secret to normal mode":"",size:"small",sx:{bgcolor:t=>e.isBound?"dark"===t.palette.mode?"#1a1a1a":"#f9fafb":t.palette.background.paper}})}),(0,a.jsx)(c.Ay,{item:!0,xs:12,sm:2,children:(0,a.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",mt:.5},children:[(0,a.jsx)(b.A,{control:(0,a.jsx)(f.A,{checked:e.isSecret,onChange:e=>V(t,"isSecret",e.target.checked),size:"small"}),label:"Secret",sx:{mr:1}}),!e.isBound&&(0,a.jsx)(g.A,{size:"small",color:"primary",onClick:()=>(e=>{E.debug("Opening bind modal for variable at index: ".concat(e)),N(e),D(!0)})(t),title:"Bind to global variable",sx:{mr:1},children:(0,a.jsx)(w.A,{fontSize:"small"})}),(0,a.jsx)(g.A,{size:"small",color:"error",onClick:()=>z(t),title:"Remove variable",children:(0,a.jsx)(A.A,{fontSize:"small"})})]})})]},t))}),(0,a.jsx)(x.A,{open:L,onClose:()=>{D(!1),N(null)},children:(0,a.jsxs)(s.default,{sx:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:400,maxWidth:"90%",bgcolor:"background.paper",boxShadow:24,p:4,borderRadius:2},children:[(0,a.jsx)(i.default,{variant:"h6",sx:{mb:2},children:"Bind to Global Variable"}),0===Object.keys(T).length?(0,a.jsx)(i.default,{color:"text.secondary",sx:{mb:2},children:"No global variables available. Add some in Settings first."}):(0,a.jsx)(s.default,{sx:{maxHeight:300,overflow:"auto",mb:2},children:Object.entries(T).map(e=>{let[t,r]=e;return(0,a.jsxs)(l.A,{fullWidth:!0,variant:"text",onClick:()=>(e=>{if(null!==U){E.debug("Binding variable at index ".concat(U," to global variable: ").concat(e));let t=[...P];t[U]={...t[U],isBound:!0,boundTo:e,value:"${global:".concat(e,"}")},F(t),D(!1),N(null),B(!0)}})(t),sx:{justifyContent:"space-between",textAlign:"left",mb:1,p:1,borderRadius:1},children:[(0,a.jsx)(i.default,{variant:"body2",children:t}),(0,a.jsx)(i.default,{variant:"caption",color:"text.secondary",children:r&&"object"==typeof r&&r.metadata&&r.metadata.isSecret?C.gF:r&&"object"==typeof r?r.value:r})]},t)})}),(0,a.jsx)(s.default,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,a.jsx)(l.A,{variant:"outlined",onClick:()=>{D(!1),N(null)},children:"Cancel"})})]})}),I&&(0,a.jsx)(s.default,{sx:{display:"flex",justifyContent:"flex-end",mt:3},children:(0,a.jsx)(l.A,{variant:"contained",color:"success",onClick:G,disabled:W||P.some(e=>""!==e.key&&!1===e.isValidKey),children:W?"Saving...":"Save Changes"})})]})}},77326:(e,t,r)=>{"use strict";r.d(t,{$:()=>a});let a=[{id:"welcome",path:"/",placement:"center",title:"Welcome to FLUJO \uD83D\uDC4B",body:"This quick tour walks you through going from zero to a running AI flow.\n\nYou'll add a model, connect a tool server, build a flow, and run it in chat. It takes about a minute — you can skip any time."},{id:"add-model",path:"/models",target:'[data-tour="add-model"]',placement:"bottom",title:"1. Add a model",body:'FLUJO needs at least one AI model to think with. Click "Add Model" to configure one.\n\nTip: an OpenRouter API key gives you access to several free models — paste the key, name the model, pick a free one, and add a custom instruction.'},{id:"add-mcp-server",path:"/mcp",target:'[data-tour="add-mcp-server"]',placement:"bottom",title:"2. Connect a tool server (MCP)",body:'MCP servers give your model real tools — file access, image generation, web search, and more.\n\nClick "Add Server" and install the "Everything" reference server to try the full range of capabilities while you learn.'},{id:"new-flow",path:"/flows",target:'[data-tour="new-flow"]',placement:"bottom",title:"3. Build a flow",body:'A flow wires everything together. Click "New Flow" to open the builder.\n\nConnect Start → Process → Finish, attach your model to the Process node, and bind the Everything MCP server so the model can use its tools.'},{id:"chat-input",path:"/chat",target:'[data-tour="chat-input"]',placement:"top",title:"4. Run it in chat",body:"Pick your flow from the selector, then send a message here.\n\nTry asking it to generate an image with the MCP server and tell you a joke — you'll see the flow execute live, step by step."},{id:"docs",path:"/chat",target:'[data-tour="nav-docs"]',placement:"bottom",title:"Need the API?",body:"FLUJO exposes an OpenAI-compatible API and a full REST surface. The Docs page lists every endpoint with its method, parameters, and response shape.\n\nYou can re-run this tour any time from Settings → Onboarding."},{id:"finish",path:"/chat",placement:"center",title:"You're all set \uD83C\uDF89",body:"That's the whole loop: models, tools, flows, and chat.\n\nExplore at your own pace — and remember the Docs page and Settings are there when you need them."}]},84869:(e,t,r)=>{"use strict";r.d(t,{G:()=>s,S:()=>o});let a=(0,r(87021).h)("frontend/services/transcription/webSpeech"),n=()=>"webkitSpeechRecognition"in window||"SpeechRecognition"in window;async function o(e,t){if(!n())throw Error("Web Speech API is not supported in this browser");a.debug("Starting Web Speech API transcription");try{let r=URL.createObjectURL(e),n=new Audio(r),o=new(window.SpeechRecognition||window.webkitSpeechRecognition);return o.continuous=!0,o.interimResults=!0,(null==t?void 0:t.language)&&(o.lang=t.language),new Promise((e,r)=>{let s="";o.onresult=e=>{let r="";for(let t=e.resultIndex;t<e.results.length;t++){let a=e.results[t][0].transcript;e.results[t].isFinal?s+=a+" ":r+=a}(null==t?void 0:t.onInterimResult)&&t.onInterimResult(s+r),a.debug("Recognition interim result",{finalLength:s.length,interimLength:r.length})},o.onend=()=>{a.debug("Recognition ended",{transcriptLength:s.length}),e(s.trim())},o.onerror=e=>{a.error("Recognition error",{error:e.error}),r(Error("Speech recognition error: ".concat(e.error)))},n.onplay=()=>{o.start(),a.debug("Recognition started")},n.onended=()=>{o.stop(),a.debug("Audio playback ended")},n.onerror=e=>{a.error("Audio playback error",{error:e}),o.stop(),r(Error("Error playing audio"))},n.play().catch(e=>{a.error("Error starting audio playback",{error:e}),r(e)})})}catch(e){throw a.error("Error in Web Speech API transcription",{error:e}),e}}function s(){return{supported:n(),message:n()?"Web Speech API is supported":"Web Speech API is not supported in this browser"}}},87021:(e,t,r)=>{"use strict";r.d(t,{h:()=>l});let a={LOG_LEVEL:3},n={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},o="number"==typeof a.LOG_LEVEL?a.LOG_LEVEL:n.ERROR;function s(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(t>6)return String(e);if(!(e instanceof Error))return e;let r={name:e.name,message:e.message};for(let a of Object.getOwnPropertyNames(e)){if("name"===a||"message"===a)continue;let n=e[a];"function"!=typeof n&&("stack"===a?r.stack=n:"cause"===a?r.cause=s(n,t+1):"errors"===a&&Array.isArray(n)?r.errors=n.map(e=>s(e,t+1)):r[a]=n)}return r}function i(e,t,r,a,i){if(e>=("number"==typeof i?i:o)){if("function"==typeof a)try{a=a()}catch(e){a="[lazy log data threw]"}let o=new Date().toISOString(),i="[".concat(o,"] [").concat(t,"]"),l="".concat(i," ").concat(r);if(void 0!==a)if(a instanceof Error||"object"==typeof a)try{let e=a instanceof Error?s(a):a,t=JSON.stringify(e,(e,t)=>t instanceof Error?s(t):t,2);l+=":\n".concat(t)}catch(e){l+=": [Object cannot be stringified]"}else l+=": ".concat(a);switch(e){case n.VERBOSE:console.debug("[VERBOSE] ".concat(l));break;case n.DEBUG:console.debug(l);break;case n.INFO:console.info(l);break;case n.WARN:console.warn(l);break;case n.ERROR:console.error(l);break;default:console.log(l)}}}function l(e,t){let r,a=((r=e.replace(/^src\//,"")).startsWith("/")&&(r=r.substring(1)),r);return{verbose:(e,r)=>{i(n.VERBOSE,a,e,r,t)},debug:(e,r)=>{i(n.DEBUG,a,e,r,t)},info:(e,r)=>{i(n.INFO,a,e,r,t)},warn:(e,r)=>{i(n.WARN,a,e,r,t)},error:(e,r)=>{i(n.ERROR,a,e,r,t)}}}}},e=>{e.O(0,[2678,4754,9244,7274,1871,9704,2003,9562,488,3272,3077,8598,9240,2403,9554,2318,9164,8441,1255,7358],()=>e(e.s=8209)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,1797,2047,2348,2437,2483,2567,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4825,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,1797,2047,2348,2437,2483,2567,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4825,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,1797,2047,2348,2437,2483,2567,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4825,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,1797,2047,2348,2437,2483,2567,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4825,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,1797,2047,2348,2437,2483,2567,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4825,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,1797,2047,2348,2437,2483,2567,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4825,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,1797,2047,2348,2437,2483,2567,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4825,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,1797,2047,2348,2437,2483,2567,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4825,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,1797,2047,2348,2437,2483,2567,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4825,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-6b442f97c5062f2c.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,1797,2047,2348,2437,2483,2567,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4825,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,1797,2047,2348,2437,2483,2567,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4825,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,1797,2047,2348,2437,2483,2567,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4825,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[603],{7720:(e,t,n)=>{Promise.resolve().then(n.bind(n,68190))},68190:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>_});var l=n(95155),o=n(94049),r=n(12115),a=n(4474),i=n(25635),s=n(28548),c=n(22003),d=n(80777),u=n(2300),f=n(21067),h=n(2975),g=n(87021);let x=(0,g.h)("frontend/services/waves");class p{async list(){try{let e=await fetch("/api/waves");if(!e.ok)throw Error("HTTP ".concat(e.status));return await e.json()}catch(e){return x.warn("Failed to list waves",e),{paused:!1,generatedAt:new Date().toISOString(),waves:[],orphans:[]}}}}let m=new p;var b=n(76122),v=n(22539);n(8301);var w=n(14913),y=n(57883),j=n(78470),E=n(11096),I=n(28874);let S={schedule:{label:"Periodic",color:"#1976d2",timeline:!0},"mcp-poll":{label:"MCP Poll",color:"#7b1fa2",timeline:!0},"url-watch":{label:"URL Watch",color:"#0288d1",timeline:!0},webhook:{label:"Webhook",color:"#2e7d32",timeline:!1},"file-watch":{label:"File Watcher",color:"#ed6c02",timeline:!1},"flow-event":{label:"Event",color:"#616161",timeline:!1}};var k=n(14976);let A={"1h":36e5,"6h":216e5,"1d":864e5},O=["1h","6h","1d"];var R=n(55930);function N(e){let{subflows:t,depth:n=0}=e;return t&&0!==t.length?(0,l.jsx)(o.default,{sx:{pl:1.5*(0!==n),mt:.25},children:t.map((e,t)=>{var r;return(0,l.jsxs)(o.default,{sx:{borderLeft:n>0?"1px dashed rgba(0,0,0,0.2)":"none",pl:+(n>0)},children:[(0,l.jsxs)(o.default,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,l.jsx)(R.A,{sx:{fontSize:12,opacity:.6}}),(0,l.jsxs)(i.default,{variant:"caption",sx:{opacity:e.missing?.6:.85,fontStyle:e.missing?"italic":"normal"},children:[null!=(r=e.flowName)?r:e.flowId,e.missing?" (missing)":"",e.truncated?" …":""]})]}),e.children.length>0&&(0,l.jsx)(N,{subflows:e.children,depth:n+1})]},"".concat(e.flowId,"-").concat(t))})}):null}var W=n(67404);function z(e,t){return"".concat(e,"#").concat(t)}let M={trigger:function(e){var t,n,r,a,c,u;let{data:f}=e,{chainNode:h,now:g,runAt:x,isRoot:p,hasSuccessors:m,expanded:w}=f,y=null!=(u=S[c=h.triggerKind])?u:{label:c,color:"#616161",timeline:!1},k="";"timeline"===h.timing.mode?k=p?function(e,t){if(null==e||!Number.isFinite(e))return"no scheduled run";let n=e-t;if(n<=0)return"due now";let l=Math.floor(n/6e4),o=Math.floor(l/1440),r=Math.floor(l%1440/60),a=l%60;return o>0?"in ".concat(o,"d ").concat(r,"h"):r>0?"in ".concat(r,"h ").concat(String(a).padStart(2,"0"),"m"):"in ".concat(a,"m")}(x,g):"on schedule":"fixed"===h.timing.mode?k="fires when it happens":"event"===h.timing.mode&&(k="signal"===h.timing.via?'on signal "'.concat(null!=(t=h.timing.topic)?t:"",'"'):"when its upstream runs");let A=null!=(n=h.emittedSignals)?n:[];return(0,l.jsxs)(o.default,{sx:{minWidth:220,maxWidth:260,borderRadius:1,border:"1px solid rgba(0,0,0,0.15)",borderTop:"4px solid ".concat(y.color),outline:w?"2px solid ".concat(y.color):"none",bgcolor:"background.paper",boxShadow:w?4:2,p:1,opacity:h.enabled?1:.55,transition:"box-shadow 120ms ease, outline-color 120ms ease"},children:[(0,l.jsx)(v.h7,{type:"target",position:b.yX.Left,style:{background:y.color}}),(0,l.jsx)(v.h7,{type:"target",position:b.yX.Top,id:"up",style:{background:y.color}}),(0,l.jsxs)(o.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:.5},children:[(0,l.jsx)(s.A,{label:y.label,size:"small",sx:{bgcolor:y.color,color:"#fff",height:18,fontSize:10}}),p&&(0,l.jsx)(i.default,{variant:"caption",sx:{opacity:.6},children:"root"})]}),(0,l.jsx)(i.default,{variant:"subtitle2",sx:{mt:.5,fontWeight:600,lineHeight:1.2},noWrap:!0,title:h.name,children:h.name}),(0,l.jsx)(i.default,{variant:"caption",sx:{display:"block",opacity:.75},noWrap:!0,title:null!=(r=h.flowName)?r:h.flowId,children:null!=(a=h.flowName)?a:h.flowId}),(0,l.jsx)(i.default,{variant:"caption",sx:{display:"block",mt:.25,color:y.color,fontWeight:500},children:k}),A.length>0&&(0,l.jsxs)(o.default,{sx:{mt:.5},children:[(0,l.jsxs)(o.default,{sx:{display:"flex",alignItems:"center",gap:.5,mb:.25},children:[(0,l.jsx)(E.A,{sx:{fontSize:13,color:"#7b1fa2"}}),(0,l.jsx)(i.default,{variant:"caption",sx:{opacity:.7},children:"Signals"})]}),(0,l.jsx)(d.A,{direction:"row",spacing:.5,flexWrap:"wrap",useFlexGap:!0,children:A.map(e=>(0,l.jsx)(j.A,{title:e.direct?"Emitted by this flow":"Emitted via a subflow",arrow:!0,children:(0,l.jsx)(s.A,{label:e.topic,size:"small",variant:e.direct?"filled":"outlined",sx:{height:18,fontSize:10,bgcolor:e.direct?"rgba(123,31,162,0.12)":"transparent",borderColor:"rgba(123,31,162,0.4)",color:"#7b1fa2"}})},e.topic))})]}),(0,l.jsx)(N,{subflows:h.subflows}),m&&!w&&(0,l.jsxs)(o.default,{sx:{display:"flex",alignItems:"center",gap:.25,mt:.5,opacity:.55},children:[(0,l.jsx)(I.A,{sx:{fontSize:13,transform:"rotate(90deg)"}}),(0,l.jsx)(i.default,{variant:"caption",sx:{fontSize:10},children:"hover to follow chain"})]}),(0,l.jsx)(v.h7,{type:"source",position:b.yX.Right,style:{background:y.color}}),(0,l.jsx)(v.h7,{type:"source",position:b.yX.Bottom,id:"down",style:{background:y.color}})]})},clock:function(){return(0,l.jsxs)(o.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",gap:.25,width:84},children:[(0,l.jsx)(o.default,{sx:{width:56,height:56,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",bgcolor:"primary.main",color:"primary.contrastText",boxShadow:3},children:(0,l.jsx)(W.A,{})}),(0,l.jsx)(i.default,{variant:"caption",sx:{fontWeight:600},children:"now"}),(0,l.jsx)(i.default,{variant:"caption",sx:{opacity:.6,fontSize:10,textAlign:"center"},children:"time →"})]})}};function D(e){let{wave:t,height:n=460}=e,[a,s]=(0,r.useState)(()=>Date.now()),[c,d]=(0,r.useState)("6h"),[u,f]=(0,r.useState)(null),h=(0,r.useRef)(null),g=(0,r.useMemo)(()=>t.nodes.some(e=>"timeline"===e.timing.mode),[t]);(0,r.useEffect)(()=>{if(!g)return;let e=setInterval(()=>s(Date.now()),3e4);return()=>clearInterval(e)},[g]),(0,r.useEffect)(()=>()=>{h.current&&clearTimeout(h.current)},[]);let x=A[c],p=(0,r.useMemo)(()=>{let e=new Map;for(let n of t.nodes)e.set(n.executionId,n.name);return e},[t]),m=(0,r.useMemo)(()=>(function(e){var t,n;let{wave:l,now:o,windowMs:r,hoveredKey:a,timezone:i}=e,s=new Map;for(let e of l.nodes)s.set(e.executionId,e);let c=new Map,d=new Map;for(let e of l.nodes)c.set(e.executionId,[]),d.set(e.executionId,[]);let u=new Map;for(let e of l.edges)s.has(e.fromExecutionId)&&s.has(e.toExecutionId)&&(c.get(e.fromExecutionId).push(e.toExecutionId),d.get(e.toExecutionId).push(e.fromExecutionId),u.set("".concat(e.fromExecutionId,"->").concat(e.toExecutionId),e));for(let[,e]of c)e.sort();let f=l.rootExecutionIds.filter(e=>s.has(e));0===f.length&&(f=l.nodes.filter(e=>{var t,n;return(null!=(n=null==(t=d.get(e.executionId))?void 0:t.length)?n:0)===0}).map(e=>e.executionId)),f=[...f].sort();let h=new Map;{let e=new Set(f),n=[...f];for(;n.length>0;){let l=n.shift();for(let o of null!=(t=c.get(l))?t:[])e.has(o)||(e.add(o),h.set(o,l),n.push(o))}}let g=[];for(let e of f){let t=s.get(e);if("timeline"===t.timing.mode){let n=function(e,t,n){let l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:24,o=arguments.length>4?arguments[4]:void 0;if(!e||"string"!=typeof e||!e.trim()||!Number.isFinite(t)||!Number.isFinite(n)||n<=0)return[];let r=t+n,a=[];try{let n=o?new k.l4(e.trim(),{timezone:o}):new k.l4(e.trim()),i=new Date(t-1);for(let e=0;e<l;e++){let e=n.nextRun(i);if(!e)break;let t=e.getTime();if(t>r)break;a.push(t),i=e}}catch(e){return[]}return a}(t.timing.cron,o,r,void 0,i);if(n.length>0)n.forEach((t,n)=>g.push({baseId:e,occ:n,runAt:t}));else{let n=t.timing.nextRun?Date.parse(t.timing.nextRun):NaN;g.push({baseId:e,occ:0,runAt:Number.isFinite(n)?n:null})}}else g.push({baseId:e,occ:0,runAt:null})}let x=a?function(e){let t=e.lastIndexOf("#");return t>=0?e.slice(0,t):e}(a):null,p=a?function(e){let t=e.lastIndexOf("#");return t>=0?Number(e.slice(t+1)):0}(a):null,m=new Set;if(x){let e=x,t=new Set;for(;e&&!t.has(e);)t.add(e),m.add(e),e=h.get(e)}let b=new Map,v=e=>{if("timeline"!==s.get(e.baseId).timing.mode)return 0;if(null==e.runAt)return 1;var t=e.runAt;if(null==t||!Number.isFinite(t)||r<=0)return 0;let n=t-o;return n<=0?0:Math.min(1,n/r)},w=(e,t,n,l,o,r)=>{var a,i;let d=z(e,t);if(b.has(d))return;let u=s.get(e);b.set(d,{key:d,baseId:e,occ:t,chainNode:u,isRoot:r,runAt:o,level:n,x:l,y:24+150*n,hasSuccessors:(null!=(i=null==(a=c.get(e))?void 0:a.length)?i:0)>0,expanded:m.has(e)&&t===p})},y=(e,t,n,l)=>{var o;if(!(m.has(e)&&t===p))return;let r=(null!=(o=c.get(e))?o:[]).filter(e=>!b.has(z(e,t)));if(0===r.length)return;let a=(r.length-1)*250;r.forEach((e,o)=>{let r=l-a/2+250*o;w(e,t,n+1,r,null,!1),y(e,t,n+1,r)})};for(let e of g){let t=160+620*v(e);w(e.baseId,e.occ,0,t,e.runAt,!0),y(e.baseId,e.occ,0,t)}let j=[];for(let[e,t]of b){let l=t.occ;for(let o of null!=(n=c.get(t.baseId))?n:[]){let n=z(o,l),r=b.get(n);if(!r)continue;let a=u.get("".concat(t.baseId,"->").concat(o));a&&j.push({id:"".concat(e,"->").concat(n),source:e,target:n,chainEdge:a,recursive:r.level<=t.level})}}return{nodes:[...b.values()],edges:j}})({wave:t,now:a,windowMs:x,hoveredKey:u}),[t,a,x,u]),j=(0,r.useMemo)(()=>[{id:"__clock__",type:"clock",position:{x:16,y:24},data:{},draggable:!1,selectable:!1,connectable:!1},...m.nodes.map(e=>({id:e.key,type:"trigger",position:{x:e.x,y:e.y},data:{chainNode:e.chainNode,now:a,runAt:e.runAt,isRoot:e.isRoot,hasSuccessors:e.hasSuccessors,expanded:e.expanded},draggable:!1,connectable:!1}))],[m,a]),E=(0,r.useMemo)(()=>m.edges.map(e=>{let t=e.recursive?"#ed6c02":"signal"===e.chainEdge.via?"#7b1fa2":"#616161",n="".concat(e.recursive?"↻ ":"").concat(function(e,t){var n;if("signal"===e.via)return"⚡ ".concat(null!=(n=e.topic)?n:"signal");let l=e.on&&e.on.length>0?e.on.join(" / "):"completes";return"when ".concat(t?"".concat(t," "):"").concat(l)}(e.chainEdge,p.get(e.chainEdge.fromExecutionId)));return{id:e.id,source:e.source,target:e.target,sourceHandle:"down",targetHandle:"up",label:n,animated:!e.recursive,markerEnd:{type:b.TG.ArrowClosed,color:t},style:{stroke:t,strokeDasharray:e.recursive?"6 4":void 0},labelStyle:{fontSize:10,fill:t},labelBgStyle:{fill:"#fff",fillOpacity:.85}}}),[m,p]);return(0,l.jsx)(o.default,{sx:{height:n,width:"100%",border:"1px solid rgba(0,0,0,0.1)",borderRadius:1},children:(0,l.jsxs)(v.Gc,{nodes:j,edges:E,nodeTypes:M,fitView:!0,fitViewOptions:{padding:.15},minZoom:.2,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,zoomOnScroll:!1,zoomOnPinch:!1,zoomOnDoubleClick:!1,panOnScroll:!1,preventScrolling:!1,panOnDrag:!0,onNodeMouseEnter:(e,t)=>{h.current&&clearTimeout(h.current),f("clock"===t.type?null:t.id)},onNodeMouseLeave:()=>{h.current&&clearTimeout(h.current),h.current=setTimeout(()=>f(null),260)},proOptions:{hideAttribution:!0},children:[(0,l.jsx)(v.VS,{}),(0,l.jsx)(v.H2,{showInteractive:!1}),g&&(0,l.jsx)(v.Zk,{position:"top-right",children:(0,l.jsx)(w.A,{size:"small",exclusive:!0,value:c,onChange:(e,t)=>t&&d(t),sx:{bgcolor:"background.paper",boxShadow:1},children:O.map(e=>(0,l.jsx)(y.A,{value:e,sx:{px:1,py:.25},children:e},e))})}),(0,l.jsx)(v.Zk,{position:"bottom-right",children:(0,l.jsx)(i.default,{variant:"caption",sx:{opacity:.55,bgcolor:"background.paper",px:.5,borderRadius:.5},children:"hover a card to follow its chain"})})]})})}function C(e){return(0,l.jsx)(v.Ln,{children:(0,l.jsx)(D,{...e})})}let L=(0,g.h)("frontend/components/Waves");function F(){var e,t;let[n,g]=(0,r.useState)(null),[x,p]=(0,r.useState)(!0),b=(0,r.useCallback)(async()=>{g(await m.list()),p(!1)},[]);if((0,r.useEffect)(()=>{b().catch(e=>{L.warn("Initial waves load failed",e),p(!1)});let e=setInterval(()=>{b().catch(e=>L.warn("Waves refresh failed",e))},3e4);return()=>clearInterval(e)},[b]),x)return(0,l.jsx)(o.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,l.jsx)(a.default,{})});let v=null!=(e=null==n?void 0:n.waves)?e:[],w=null!=(t=null==n?void 0:n.orphans)?t:[];return(0,l.jsxs)(o.default,{sx:{p:3,height:"100%",overflow:"auto"},children:[(0,l.jsxs)(o.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:1},children:[(0,l.jsx)(h.A,{color:"primary"}),(0,l.jsx)(i.default,{variant:"h5",sx:{fontWeight:600},children:"Waves"}),(null==n?void 0:n.paused)&&(0,l.jsx)(s.A,{label:"Scheduler paused",color:"warning",size:"small"})]}),(0,l.jsx)(i.default,{variant:"body2",sx:{opacity:.75,mb:2},children:"A read-only picture of how your Planned Executions chain together via signals and completion events. Each lane reads as a timeline — the clock on the left is “now”, and scheduled runs approach from the right. Hover a card to follow its chain; use the window control to zoom the timeline out and reveal upcoming runs. Nothing here arms or fires anything."}),0===v.length&&0===w.length&&(0,l.jsx)(c.A,{severity:"info",children:"No planned executions to visualize yet. Create some executions (and link them with flow-event triggers or signal nodes) to see waves here."}),(0,l.jsx)(d.A,{spacing:3,children:v.map(e=>{let t=e.nodes.filter(t=>e.rootExecutionIds.includes(t.executionId)).map(e=>e.name);return(0,l.jsxs)(u.A,{variant:"outlined",sx:{p:1.5},children:[(0,l.jsxs)(o.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:1},children:[(0,l.jsx)(i.default,{variant:"subtitle1",sx:{fontWeight:600},children:t.length>0?t.join(", "):"Wave"}),(0,l.jsx)(s.A,{label:"".concat(e.nodes.length," execution(s)"),size:"small",variant:"outlined"}),e.hasCycle&&(0,l.jsx)(s.A,{label:"recursive",color:"warning",size:"small"})]}),(0,l.jsx)(C,{wave:e})]},e.id)})}),w.length>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(f.A,{sx:{my:3}}),(0,l.jsx)(i.default,{variant:"subtitle1",sx:{fontWeight:600,mb:1},children:"Unlinked event triggers"}),(0,l.jsx)(i.default,{variant:"body2",sx:{opacity:.75,mb:1},children:"These flow-event triggers reference a source that matches no known producer, so they never start from an organic trigger."}),(0,l.jsx)(d.A,{direction:"row",spacing:1,flexWrap:"wrap",useFlexGap:!0,children:w.map(e=>{var t;return(0,l.jsx)(s.A,{label:"".concat(e.name," → ").concat(null!=(t=e.flowName)?t:e.flowId),size:"small"},e.executionId)})})]})]})}let T=(0,g.h)("app/waves/page");function _(){return T.debug("Rendering WavesPage"),(0,l.jsx)(o.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:(0,l.jsx)(F,{})})}},87021:(e,t,n)=>{"use strict";n.d(t,{h:()=>s});let l={LOG_LEVEL:3},o={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},r="number"==typeof l.LOG_LEVEL?l.LOG_LEVEL:o.ERROR;function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(t>6)return String(e);if(!(e instanceof Error))return e;let n={name:e.name,message:e.message};for(let l of Object.getOwnPropertyNames(e)){if("name"===l||"message"===l)continue;let o=e[l];"function"!=typeof o&&("stack"===l?n.stack=o:"cause"===l?n.cause=a(o,t+1):"errors"===l&&Array.isArray(o)?n.errors=o.map(e=>a(e,t+1)):n[l]=o)}return n}function i(e,t,n,l,i){if(e>=("number"==typeof i?i:r)){if("function"==typeof l)try{l=l()}catch(e){l="[lazy log data threw]"}let r=new Date().toISOString(),i="[".concat(r,"] [").concat(t,"]"),s="".concat(i," ").concat(n);if(void 0!==l)if(l instanceof Error||"object"==typeof l)try{let e=l instanceof Error?a(l):l,t=JSON.stringify(e,(e,t)=>t instanceof Error?a(t):t,2);s+=":\n".concat(t)}catch(e){s+=": [Object cannot be stringified]"}else s+=": ".concat(l);switch(e){case o.VERBOSE:console.debug("[VERBOSE] ".concat(s));break;case o.DEBUG:console.debug(s);break;case o.INFO:console.info(s);break;case o.WARN:console.warn(s);break;case o.ERROR:console.error(s);break;default:console.log(s)}}}function s(e,t){let n,l=((n=e.replace(/^src\//,"")).startsWith("/")&&(n=n.substring(1)),n);return{verbose:(e,n)=>{i(o.VERBOSE,l,e,n,t)},debug:(e,n)=>{i(o.DEBUG,l,e,n,t)},info:(e,n)=>{i(o.INFO,l,e,n,t)},warn:(e,n)=>{i(o.WARN,l,e,n,t)},error:(e,n)=>{i(o.ERROR,l,e,n,t)}}}}},e=>{e.O(0,[6714,3862,2678,4754,9244,7274,9704,2003,488,8470,3556,1675,333,8441,1255,7358],()=>e(e.s=7720)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(()=>{"use strict";var e={},t={};function r(a){var c=t[a];if(void 0!==c)return c.exports;var n=t[a]={exports:{}},o=!0;try{e[a].call(n.exports,n,n.exports,r),o=!1}finally{o&&delete t[a]}return n.exports}r.m=e,(()=>{var e=[];r.O=(t,a,c,n)=>{if(a){n=n||0;for(var o=e.length;o>0&&e[o-1][2]>n;o--)e[o]=e[o-1];e[o]=[a,c,n];return}for(var i=1/0,o=0;o<e.length;o++){for(var[a,c,n]=e[o],s=!0,d=0;d<a.length;d++)(!1&n||i>=n)&&Object.keys(r.O).every(e=>r.O[e](a[d]))?a.splice(d--,1):(s=!1,n<i&&(i=n));if(s){e.splice(o--,1);var u=c();void 0!==u&&(t=u)}}return t}})(),r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;r.t=function(a,c){if(1&c&&(a=this(a)),8&c||"object"==typeof a&&a&&(4&c&&a.__esModule||16&c&&"function"==typeof a.then))return a;var n=Object.create(null);r.r(n);var o={};e=e||[null,t({}),t([]),t(t)];for(var i=2&c&&a;"object"==typeof i&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach(e=>o[e]=()=>a[e]);return o.default=()=>a,r.d(n,o),n}})(),r.d=(e,t)=>{for(var a in t)r.o(t,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,a)=>(r.f[a](e,t),t),[])),r.u=e=>1646===e?"static/chunks/1646.a93085a0445ba909.js":5139===e?"static/chunks/5139.e4ff9cc3669129ed.js":8405===e?"static/chunks/8405.e728bc83a7c9fed6.js":5512===e?"static/chunks/5512.d01d565f73109a1a.js":3089===e?"static/chunks/3089.6b4e21e1faa304e2.js":3217===e?"static/chunks/3217.f728df99ab5da33c.js":9195===e?"static/chunks/9195.294887f083b1a11b.js":8345===e?"static/chunks/8345.fbc0af16acce7256.js":3545===e?"static/chunks/3545.353a62a68d3b7fd1.js":8198===e?"static/chunks/8198.cd0d3f8429c02862.js":"static/chunks/"+e+"-"+({1871:"14c3e63ca865d85e",2003:"7710c23acaef11c9",2005:"f9d38c39f10c321f",2678:"c88052addfb0478a",3272:"fd8d59523f61da96",4523:"a540747aa2ed34e8",4754:"5c62bb61142f82d1",7274:"1184563607f2b5f5",8470:"72cf748472d4d501",8598:"1b627b3d682b364a",9164:"829ab5b085ec06d6",9244:"3281f7fd02003a2c",9562:"b7922ceb400ec536",9704:"6b7415964d7c042a"})[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="_N_E:";r.l=(a,c,n,o)=>{if(e[a])return void e[a].push(c);if(void 0!==n)for(var i,s,d=document.getElementsByTagName("script"),u=0;u<d.length;u++){var f=d[u];if(f.getAttribute("src")==a||f.getAttribute("data-webpack")==t+n){i=f;break}}i||(s=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,r.nc&&i.setAttribute("nonce",r.nc),i.setAttribute("data-webpack",t+n),i.src=r.tu(a)),e[a]=[c];var l=(t,r)=>{i.onerror=i.onload=null,clearTimeout(b);var c=e[a];if(delete e[a],i.parentNode&&i.parentNode.removeChild(i),c&&c.forEach(e=>e(r)),t)return t(r)},b=setTimeout(l.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=l.bind(null,i.onerror),i.onload=l.bind(null,i.onload),s&&document.head.appendChild(i)}})(),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:e=>e},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("nextjs#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="/_next/",(()=>{var e={5687:0,6317:0,6714:0,2978:0,1137:0};r.f.j=(t,a)=>{var c=r.o(e,t)?e[t]:void 0;if(0!==c)if(c)a.push(c[2]);else if(/^((113|568|631)7|2978|6714)$/.test(t))e[t]=0;else{var n=new Promise((r,a)=>c=e[t]=[r,a]);a.push(c[2]=n);var o=r.p+r.u(t),i=Error();r.l(o,a=>{if(r.o(e,t)&&(0!==(c=e[t])&&(e[t]=void 0),c)){var n=a&&("load"===a.type?"missing":a.type),o=a&&a.target&&a.target.src;i.message="Loading chunk "+t+" failed.\n("+n+": "+o+")",i.name="ChunkLoadError",i.type=n,i.request=o,c[1](i)}},"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,a)=>{var c,n,[o,i,s]=a,d=0;if(o.some(t=>0!==e[t])){for(c in i)r.o(i,c)&&(r.m[c]=i[c]);if(s)var u=s(r)}for(t&&t(a);d<o.length;d++)n=o[d],r.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return r.O(u)},a=self.webpackChunk_N_E=self.webpackChunk_N_E||[];a.forEach(t.bind(null,0)),a.push=t.bind(null,a.push.bind(a))})()})();
|
|
File without changes
|