flujo-ai 3.24.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 +399 -290
- package/.next/app-path-routes-manifest.json +18 -8
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +24 -0
- package/.next/react-loadable-manifest.json +26 -20
- 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 +3 -3
- package/.next/server/app/api/approvals/[id]/route.js +1 -1
- package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/approvals/route.js +2 -2
- package/.next/server/app/api/approvals/route.js.nft.json +1 -1
- package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/backup/route.js +1 -1
- package/.next/server/app/api/backup/route.js.nft.json +1 -1
- package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/browse/route.js +1 -1
- package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/bugs/enhance/route.js +3 -3
- package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
- package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cwd/route.js +1 -1
- package/.next/server/app/api/cwd/route_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 +4 -4
- package/.next/server/app/docs/page.js +13 -10
- 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 +4 -4
- 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 +4 -4
- 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 +5 -5
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- 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 +4 -4
- 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 +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +3 -57
- 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 +4 -4
- 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 +4 -4
- 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 +4 -4
- package/.next/server/app-paths-manifest.json +18 -8
- package/.next/server/chunks/1083.js +1 -1
- package/.next/server/chunks/1089.js +1 -0
- package/.next/server/chunks/1114.js +1 -0
- package/.next/server/chunks/1197.js +2 -2
- 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 -0
- 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 -0
- 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 -3
- package/.next/server/chunks/2940.js +41 -0
- package/.next/server/chunks/2985.js +1 -0
- package/.next/server/chunks/3298.js +2 -0
- package/.next/server/chunks/3312.js +1 -0
- 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 +6 -2
- package/.next/server/chunks/{3928.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 +2 -2
- 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/5150.js +1 -0
- package/.next/server/chunks/5463.js +1 -0
- package/.next/server/chunks/5544.js +5 -0
- package/.next/server/chunks/5708.js +12 -9
- 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 +6 -0
- package/.next/server/chunks/724.js +1 -1
- package/.next/server/chunks/7362.js +17 -13
- package/.next/server/chunks/7463.js +6 -0
- 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 +82 -0
- package/.next/server/chunks/7674.js +1 -0
- 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/{2998.js → 826.js} +2 -2
- package/.next/server/chunks/8387.js +1 -0
- 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 +2 -2
- package/.next/server/chunks/8745.js +1 -1
- package/.next/server/chunks/8851.js +1 -0
- package/.next/server/chunks/94.js +1 -0
- 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/functions-config-manifest.json +2 -2
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/server/src/middleware.js +2 -2
- package/.next/server/src/middleware.js.map +1 -1
- package/.next/static/O-elWbT5rs6ci1CrCqez1/_buildManifest.js +1 -0
- package/.next/static/chunks/1871-14c3e63ca865d85e.js +1 -0
- package/.next/static/chunks/2003-f826c607d609d1fa.js +1 -0
- package/.next/static/chunks/{6257-ee5d8d88050d7705.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.260785c2198d1e9d.js +1 -0
- package/.next/static/chunks/3392-6dd9ad3be66a7ce9.js +1 -0
- package/.next/static/chunks/3556-b9855146c7506696.js +1 -0
- 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/4523-a540747aa2ed34e8.js +1 -0
- package/.next/static/chunks/{488-623d07c3fbc21e28.js → 488-7ab54d8ae2b4b550.js} +1 -1
- package/.next/static/chunks/5512.682bef7fd3a7c286.js +1 -0
- 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/6691-117567b2b40cd9f4.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.bc5534ec13abc9ee.js +1 -0
- package/.next/static/chunks/8401-0f39d91810180a88.js +1 -0
- package/.next/static/chunks/8405.73e8be2c8e5b55c5.js +1 -0
- package/.next/static/chunks/8470-72cf748472d4d501.js +1 -0
- package/.next/static/chunks/8834-faf121e257b517d5.js +1 -0
- package/.next/static/chunks/8989-5fa9c7c670eb9a1a.js +1 -0
- package/.next/static/chunks/{9164-d9f1abba780231e0.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/error-5732fbb053e182c5.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-a859e4dbd180df98.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/40f9bef305b11bf5.css +1 -0
- package/.next/static/css/{64cb1f185b52a623.css → 69ab44eb350e0b6c.css} +1 -1
- package/.next/trace +9 -8
- 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 +31 -1
- package/package.json +6 -1
- package/.next/server/chunks/1119.js +0 -1
- package/.next/server/chunks/1223.js +0 -1
- package/.next/server/chunks/1377.js +0 -1
- package/.next/server/chunks/1439.js +0 -1
- package/.next/server/chunks/1910.js +0 -37
- package/.next/server/chunks/1999.js +0 -1
- package/.next/server/chunks/2246.js +0 -1
- package/.next/server/chunks/2823.js +0 -6
- package/.next/server/chunks/289.js +0 -1
- package/.next/server/chunks/3030.js +0 -1
- package/.next/server/chunks/3286.js +0 -6
- package/.next/server/chunks/3291.js +0 -1
- package/.next/server/chunks/3823.js +0 -41
- package/.next/server/chunks/4372.js +0 -1
- package/.next/server/chunks/4561.js +0 -65
- package/.next/server/chunks/4637.js +0 -81
- package/.next/server/chunks/472.js +0 -1
- package/.next/server/chunks/5148.js +0 -1
- package/.next/server/chunks/5311.js +0 -1
- package/.next/server/chunks/62.js +0 -1
- package/.next/server/chunks/6644.js +0 -1
- package/.next/server/chunks/6793.js +0 -1
- package/.next/server/chunks/6908.js +0 -12
- package/.next/server/chunks/7427.js +0 -1
- package/.next/server/chunks/7723.js +0 -1
- package/.next/server/chunks/7769.js +0 -6
- package/.next/server/chunks/8518.js +0 -2
- package/.next/server/chunks/8652.js +0 -42
- package/.next/static/chunks/1620-0d8ecd877f123f7b.js +0 -1
- package/.next/static/chunks/1871-dd8c10ed9d37100b.js +0 -1
- package/.next/static/chunks/1983-242862b3dc022a26.js +0 -1
- package/.next/static/chunks/2003-460f30484998c05d.js +0 -1
- package/.next/static/chunks/2403-5c26e0abd76095b1.js +0 -1
- package/.next/static/chunks/2619-04bc32f026a0d946.js +0 -1
- package/.next/static/chunks/3217.058098140ec3f563.js +0 -1
- package/.next/static/chunks/3454-a8db9caba457e5fa.js +0 -1
- package/.next/static/chunks/3730-149f2f058529f75f.js +0 -1
- package/.next/static/chunks/3736-5e2b3f6cda1bb923.js +0 -1
- package/.next/static/chunks/4207-41abb9622eb4b4f8.js +0 -1
- package/.next/static/chunks/4749-f8796d16ff604d54.js +0 -1
- package/.next/static/chunks/4812-4a9aceb49632a973.js +0 -1
- package/.next/static/chunks/5501-f5b093c8dfd74196.js +0 -1
- package/.next/static/chunks/6016.8201fa15ab6aa90e.js +0 -1
- package/.next/static/chunks/6288-a285bbbd701e0dbf.js +0 -1
- package/.next/static/chunks/6731-c230e88cf0032609.js +0 -1
- package/.next/static/chunks/7430-6e78aaeac66988a9.js +0 -1
- package/.next/static/chunks/7583.7af90b94e3c263f2.js +0 -1
- package/.next/static/chunks/7687-7edf1a6e1f063b08.js +0 -1
- package/.next/static/chunks/8083.16fda2c7f6d10d0c.js +0 -1
- package/.next/static/chunks/8480-229fd353b68b570f.js +0 -1
- package/.next/static/chunks/8548-8e4a95334064e8b2.js +0 -1
- package/.next/static/chunks/8611-f6d51119761d52ff.js +0 -8
- package/.next/static/chunks/8834-bda798efab40c60a.js +0 -1
- package/.next/static/chunks/9356-99ba407b60b9dfe9.js +0 -1
- package/.next/static/chunks/9451-680fa09f81f18806.js +0 -1
- package/.next/static/chunks/9659-a279e3aaba407251.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-6a5b5f9ea2542fb3.js +0 -1
- package/.next/static/chunks/app/docs/page-935b0386917b91bb.js +0 -1
- package/.next/static/chunks/app/executions/page-d72027b0179e8fa2.js +0 -1
- package/.next/static/chunks/app/flows/page-fbce5abe34500f28.js +0 -1
- package/.next/static/chunks/app/layout-2ebf01d97702a18a.js +0 -1
- package/.next/static/chunks/app/mcp/page-8666173926cabf31.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/error-a3183f168e8a9b04.js +0 -1
- package/.next/static/chunks/app/models/page-18dbd8e01cf87e98.js +0 -1
- package/.next/static/chunks/app/settings/page-7a68583660508ffd.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-ec33cf79f6103a9e.js +0 -1
- package/.next/static/chunks/webpack-f4a471ab560eb19e.js +0 -1
- package/.next/static/css/39393a79f7cb0dee.css +0 -1
- package/.next/static/eUM7C1boixGI469h5wtIk/_buildManifest.js +0 -1
- /package/.next/static/{eUM7C1boixGI469h5wtIk → O-elWbT5rs6ci1CrCqez1}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8329],{32098:()=>{},43856:(e,t,l)=>{"use strict";l.r(t),l.d(t,{default:()=>ea});var r=l(95155),n=l(12115),a=l(20063),o=l(2300),s=l(94049),i=l(9562),d=l(56422),c=l(91871),u=l(22003),p=l(86946),m=l(51611),x=l(74879),h=l(33567),f=l(4474),v=l(33077),b=l(25635),g=l(41983),y=l(36314),j=l(86973),A=l(49501),w=l(17681),k=l(21067),C=l(64419),S=l(28466),N=l(45587),T=l(81952),U=l(94885),M=l(15686),I=l(91665),P=l(61267),K=l(22573),L=l(38459),W=l(97104),z=l(48072),B=l(87021);let D=(0,B.h)("frontend/components/models/list/ModelList"),O=e=>{let{models:t,isLoading:l,onAdd:a,onUpdate:i,onDelete:d,folders:c=[],onSetFolder:u}=e,p=(0,h.A)(),[m,x]=(0,W.Xk)("flujo-ui:models:sort","name-asc"),[B,O]=(0,W.Xk)("flujo-ui:models:group","none"),[F,E]=(0,n.useState)(null),[_,R]=(0,n.useState)(null),[X,q]=(0,W.Xk)("flujo-ui:models:collapsed",[]),$=(0,n.useMemo)(()=>new Set(X),[X]),G=e=>{x(e),E(null)},Z=e=>{O(e),R(null)},H=async e=>{let t=await i(e);t.success||D.error("Failed to update model in ModelList",t.error)},J=(0,n.useMemo)(()=>(0,z.h5)(t,m),[t,m]),V=(0,n.useMemo)(()=>"folder"===B?(0,L.Je)(J,e=>e.folder):"sort"===B?(0,L.Az)(J,e=>(0,z.eZ)(e,m)):[],[B,J,m]);if(l)return(0,r.jsx)(s.default,{display:"flex",justifyContent:"center",py:4,children:(0,r.jsx)(f.default,{})});let Y=e=>(0,r.jsx)(v.Ay,{container:!0,spacing:2,children:e.map(e=>(0,r.jsx)(v.Ay,{item:!0,xs:12,sm:6,md:4,children:(0,r.jsx)(P.A,{model:e,onEdit:()=>H(e),onDelete:()=>d(e.id),folder:e.folder,folders:c,onSetFolder:u?t=>u(e.id,t):void 0})},e.id))});return(0,r.jsxs)(s.default,{children:[(0,r.jsx)(o.A,{elevation:1,sx:{mb:2,p:1},children:(0,r.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:1},children:[(0,r.jsxs)(b.default,{variant:"body2",color:"textSecondary",children:[t.length," model",1===t.length?"":"s",(0,r.jsx)(s.default,{component:"span",sx:{mx:1,opacity:.5},children:"\xb7"}),"Sorted by: ",z.fC[m]]}),(0,r.jsxs)(s.default,{sx:{display:"flex",gap:1,alignItems:"center"},children:[(0,r.jsx)(g.A,{size:"small",onClick:e=>R(e.currentTarget),color:"none"!==B?"primary":"default",sx:{border:"1px solid ".concat(p.palette.divider),backgroundColor:p.palette.background.default},title:"Group cards",children:(0,r.jsx)(U.A,{fontSize:"small"})}),(0,r.jsx)(g.A,{size:"small",onClick:e=>E(e.currentTarget),sx:{border:"1px solid ".concat(p.palette.divider),backgroundColor:p.palette.background.default},title:"Sort models",children:(0,r.jsx)(C.A,{fontSize:"small"})})]})]})}),t&&0!==t.length?"none"===B?Y(J):V.map(e=>(0,r.jsx)(K.A,{label:e.label,count:e.items.length,expanded:!$.has(e.key),onToggle:()=>(e=>{q(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])})(e.key),showFolderIcon:"folder"===B,children:Y(e.items)},e.key)):(0,r.jsx)(s.default,{textAlign:"center",py:4,children:"No models found"}),(0,r.jsxs)(y.A,{anchorEl:_,open:!!_,onClose:()=>R(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,r.jsxs)(j.A,{selected:"none"===B,onClick:()=>Z("none"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(M.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"No grouping"})]}),(0,r.jsxs)(j.A,{selected:"folder"===B,onClick:()=>Z("folder"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(I.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"By folder"})]}),(0,r.jsxs)(j.A,{selected:"sort"===B,onClick:()=>Z("sort"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(U.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"By sort setting"})]})]}),(0,r.jsxs)(y.A,{anchorEl:F,open:!!F,onClose:()=>E(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,r.jsxs)(j.A,{selected:"name-asc"===m,onClick:()=>G("name-asc"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(S.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"Name (A-Z)"})]}),(0,r.jsxs)(j.A,{selected:"name-desc"===m,onClick:()=>G("name-desc"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(S.A,{fontSize:"small",sx:{transform:"scaleX(-1)"}})}),(0,r.jsx)(w.A,{primary:"Name (Z-A)"})]}),(0,r.jsx)(k.A,{}),(0,r.jsxs)(j.A,{selected:"provider"===m,onClick:()=>G("provider"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(N.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"Provider"})]}),(0,r.jsx)(k.A,{}),(0,r.jsxs)(j.A,{selected:"context-desc"===m,onClick:()=>G("context-desc"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(T.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"Context (largest)"})]}),(0,r.jsxs)(j.A,{selected:"context-asc"===m,onClick:()=>G("context-asc"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(T.A,{fontSize:"small",sx:{transform:"scaleY(-1)"}})}),(0,r.jsx)(w.A,{primary:"Context (smallest)"})]})]})]})};var F=l(2778),E=l(52363),_=l(65036),R=l(52641),X=l(51221),q=l(55606),$=l(63109),G=l(75912),Z=l(12857),H=l(48363),J=l(9164),V=l(95480),Y=l(88107),Q=l(52397),ee=l(43076);let et=(0,B.h)("frontend/components/models/modal"),el=e=>{var t,l,o;let{open:d,model:p,onSave:m,onClose:x}=e,h=(0,a.useRouter)(),{globalEnvVars:y}=(0,J.useStorage)(),[A,w]=(0,n.useState)({}),[k,C]=(0,n.useState)({}),[S,N]=(0,n.useState)(null),[T,U]=(0,n.useState)(!1),[M,I]=(0,n.useState)(null),[P,K]=(0,n.useState)(!1),[L,W]=(0,n.useState)([]),[z,B]=(0,n.useState)(!1),D=(0,n.useRef)(null),O=(0,n.useRef)(null);(0,n.useEffect)(()=>{d&&W([])},[d]),(0,n.useEffect)(()=>{A.baseUrl&&(et.debug("Base URL or API Key changed",{baseUrl:A.baseUrl}),W([]))},[A.baseUrl,A.ApiKey]),(0,n.useEffect)(()=>(O.current&&clearTimeout(O.current),A.baseUrl&&(O.current=setTimeout(()=>{et.debug("Debounced fetchModels triggered",{name:A.name,baseUrl:A.baseUrl,searchTerm:A.name?'"'.concat(A.name,'"'):"none"}),el(A.baseUrl,A.name)},100)),()=>{O.current&&clearTimeout(O.current)}),[A.name,A.baseUrl]),(0,n.useEffect)(()=>()=>{O.current&&clearTimeout(O.current)},[]);let el=async(e,t)=>{et.debug("fetchModels called",{baseUrl:e,searchTerm:t?'"'.concat(t,'"'):"none",apiKey:A.ApiKey?"present":"not present",isApiKeyBound:T}),B(!0),C({});try{let l=T&&M?"${global:".concat(M,"}"):A.ApiKey&&A.ApiKey!==Q.RJ?A.ApiKey:void 0,r=await ee.N.fetchProviderModels(e,p.id,t,l);et.debug("Models fetched successfully",{count:null==r?void 0:r.length,searchTerm:t?'"'.concat(t,'"'):"none"}),Array.isArray(r)?(W(r),et.info("Models set in state",{count:r.length,searchTerm:t?'"'.concat(t,'"'):"none"})):(et.warn("Unexpected API response format",{models:r}),W([]))}catch(l){et.warn("Error fetching models",{baseUrl:e,searchTerm:t,error:l}),W([])}finally{B(!1)}};(0,n.useEffect)(()=>{if(d){w({...p,displayName:p.displayName||p.name});let e=(p.ApiKey||"").match(/\$\{global:([^}]+)\}/);e?(U(!0),I(e[1])):(U(!1),I(null),w(e=>({...e,ApiKey:p.name?Q.RJ:""})))}else w({name:"",displayName:"",description:"",ApiKey:"",baseUrl:"https://api.openai.com/v1",provider:"openai",adapter:"openai",promptTemplate:"",temperature:"0.0"}),U(!1),I(null);C({}),N(null)},[d,p]);let er=(0,Y.T_)(A.provider,A.adapter),en=(e,t)=>{w(l=>({...l,[e]:t})),C(t=>({...t,[e]:""}))},ea=async e=>{var t,l,r;e.preventDefault();let n={};if((null==(t=A.name)?void 0:t.trim())||(n.name="Name is required"),(null==(l=A.displayName)?void 0:l.trim())||(n.displayName="Display Name is required"),T||(null==(r=A.ApiKey)?void 0:r.trim())||(n.ApiKey="API key is required"),Object.keys(n).length>0)return void C(n);try{let e=await m({id:p.id,name:A.name,displayName:A.displayName,description:A.description,ApiKey:A.ApiKey,baseUrl:A.baseUrl,provider:A.provider,adapter:A.adapter||"openai",promptTemplate:A.promptTemplate,temperature:A.temperature,contextWindow:A.contextWindow,maxTurns:A.maxTurns});e.success?h.refresh():C({submit:e.error||"Failed to save model"})}catch(e){et.error("Failed to save model",{error:e}),C({submit:(null==e?void 0:e.message)||"Failed to save model"})}};return(0,r.jsx)(F.A,{open:d,onClose:x,maxWidth:"xl",fullWidth:!0,PaperProps:{sx:{width:"95vw",height:"90vh",maxWidth:"95vw",maxHeight:"90vh"}},children:(0,r.jsxs)("form",{onSubmit:ea,children:[(0,r.jsx)(E.A,{children:p?"Edit Model":"Add Model"}),(0,r.jsxs)(_.A,{sx:{display:"flex",flexDirection:"column",height:"calc(90vh - 130px)"},children:[k.submit&&(0,r.jsx)(u.A,{severity:"error",sx:{mb:2},children:k.submit}),S&&(0,r.jsx)(u.A,{severity:"info",sx:{mb:2},children:S}),(0,r.jsxs)(v.Ay,{container:!0,spacing:2,sx:{flexGrow:1},children:[(0,r.jsx)(v.Ay,{item:!0,xs:6,sx:{height:"100%"},children:(0,r.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",height:"100%",pr:2},children:[(0,r.jsx)(b.default,{variant:"h6",gutterBottom:!0,children:"Model Configuration"}),(0,r.jsx)(i.A,{autoFocus:!0,margin:"dense",label:"Display Name",fullWidth:!0,required:!0,value:A.displayName||"",onChange:e=>en("displayName",e.target.value),error:!!k.displayName,helperText:k.displayName||"The name shown in the UI"}),(0,r.jsxs)(R.A,{fullWidth:!0,margin:"dense",children:[(0,r.jsx)(X.A,{id:"provider-profile-label",children:"Provider"}),(0,r.jsx)(q.A,{labelId:"provider-profile-label",label:"Provider",value:er.id,onChange:e=>(e=>{let t=Y.xx.find(t=>t.id===e);t&&(w(e=>({...e,provider:t.provider,adapter:t.adapter,baseUrl:t.baseUrl})),C(e=>({...e,baseUrl:""})))})(e.target.value),children:Y.xx.map(e=>(0,r.jsx)(j.A,{value:e.id,children:e.label},e.id))})]}),(0,r.jsxs)(b.default,{variant:"caption",color:"text.secondary",sx:{mt:.5,mb:1,display:"block"},children:["Uses the ",(0,r.jsx)("strong",{children:er.sdkLabel}),"claude-cli"===er.adapter?". Paste an OAuth token from `claude setup-token` into the API Key field.":""]}),er.showBaseUrl&&(0,r.jsx)(i.A,{margin:"dense",label:"Base URL",fullWidth:!0,value:A.baseUrl||"",onChange:e=>en("baseUrl",e.target.value),helperText:"Endpoint for the OpenAI-compatible API."}),(0,r.jsx)(s.default,{sx:{position:"relative",mt:1,mb:1},children:(0,r.jsx)(i.A,{margin:"dense",label:"API Key",fullWidth:!0,required:!T,type:T?"text":"password",value:A.ApiKey||"",onChange:e=>en("ApiKey",e.target.value),error:!!k.ApiKey,helperText:k.ApiKey||"API key is required for this provider",InputProps:{readOnly:T,endAdornment:(0,r.jsx)(s.default,{sx:{display:"flex",alignItems:"center"},children:T?(0,r.jsx)(g.A,{onClick:()=>{U(!1),I(null),w(e=>({...e,ApiKey:""}))},size:"small",title:"Unbind from global variable",children:(0,r.jsx)(Z.A,{})}):(0,r.jsx)(g.A,{onClick:()=>{K(!0)},size:"small",title:"Bind to global variable",children:(0,r.jsx)(H.A,{})})})}})}),(0,r.jsx)($.A,{freeSolo:!0,loading:z,options:er.showBaseUrl?L.map(e=>e.id):null!=(t=er.defaultModels)?t:[],value:A.name||"",onChange:(e,t)=>{en("name",t||"")},onInputChange:(e,t)=>{en("name",t)},filterOptions:(e,t)=>{let l=t.inputValue.toLowerCase();return l?e.filter(e=>{let t=e.toLowerCase();if(t.includes(l))return!0;let r=0,n=0;for(;r<t.length&&n<l.length;)t[r]===l[n]&&n++,r++;return n===l.length}):e},ListboxProps:{style:{maxHeight:"300px",overflow:"auto"}},renderInput:e=>(0,r.jsx)(i.A,{...e,margin:"dense",label:"Technical Name",required:!0,error:!!k.name,helperText:k.name||"Used for API calls to the LLM. Type to search available models.",InputProps:{...e.InputProps,endAdornment:(0,r.jsxs)(r.Fragment,{children:[z?(0,r.jsx)(f.default,{color:"inherit",size:20}):null,e.InputProps.endAdornment]})}}),renderOption:(e,t)=>{let l=L.find(e=>e.id===t),{key:n,...a}=e;return(0,r.jsx)("li",{...a,style:{borderBottom:"1px solid rgba(0,0,0,0.1)",padding:"8px 16px"},children:(0,r.jsxs)(s.default,{children:[(0,r.jsx)(b.default,{variant:"body1",fontWeight:"bold",children:t}),(null==l?void 0:l.description)&&(0,r.jsx)(b.default,{variant:"body2",color:"text.secondary",sx:{fontSize:"0.75rem"},children:l.description})]})},n)},noOptionsText:"No matching models found",loadingText:"Loading models..."}),(0,r.jsx)(i.A,{margin:"dense",label:"Description",fullWidth:!0,multiline:!0,rows:3,value:A.description||"",onChange:e=>en("description",e.target.value)}),(0,r.jsx)(i.A,{margin:"dense",label:"Context Window (tokens)",fullWidth:!0,type:"number",value:null!=(l=A.contextWindow)?l:"",onChange:e=>{let t=e.target.value,l=""===t?void 0:Number(t);w(e=>({...e,contextWindow:void 0!==l&&Number.isFinite(l)&&l>0?Math.floor(l):void 0}))},helperText:"Optional. Enables the context-usage meter in chat (e.g. 200000 for Claude, 128000 for GPT-4o)."}),(0,r.jsx)(i.A,{margin:"dense",label:"Max Turns",fullWidth:!0,type:"number",value:null!=(o=A.maxTurns)?o:"",onChange:e=>{let t=e.target.value,l=""===t?void 0:Number(t);w(e=>({...e,maxTurns:void 0!==l&&Number.isFinite(l)&&l>0?Math.floor(l):void 0}))},inputProps:{min:1},helperText:"Max agentic turns before a run stops (default 50). Process nodes can override this per-node."})]})}),(0,r.jsx)(v.Ay,{item:!0,xs:6,sx:{height:"100%"},children:(0,r.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",height:"100%",pl:2},children:[(0,r.jsx)(b.default,{variant:"h6",gutterBottom:!0,children:"Prompt Template"}),(0,r.jsx)(s.default,{sx:{flexGrow:1,display:"flex",flexDirection:"column",height:"calc(100% - 32px)"},children:(0,r.jsx)(V.A,{ref:D,value:A.promptTemplate||"",onChange:e=>en("promptTemplate",e),label:"",height:"100%"})})]})})]}),P&&(0,r.jsxs)(s.default,{sx:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:400,bgcolor:"background.paper",boxShadow:24,p:4,borderRadius:1,zIndex:9999},children:[(0,r.jsx)(b.default,{variant:"h6",component:"h2",sx:{mb:2},children:"Bind to Global Variable"}),0===Object.keys(y).length?(0,r.jsx)(b.default,{sx:{mb:2},children:"No global variables available. Add some in Settings first."}):(0,r.jsx)(s.default,{sx:{maxHeight:300,overflow:"auto",mb:2},children:Object.entries(y).map(e=>{let[t,l]=e;return(0,r.jsx)(c.A,{onClick:()=>(e=>{U(!0),I(e),w(t=>({...t,ApiKey:"${global:".concat(e,"}")})),K(!1)})(t),fullWidth:!0,sx:{justifyContent:"flex-start",textAlign:"left",mb:1,p:1,"&:hover":{bgcolor:"action.hover"}},children:(0,r.jsxs)(s.default,{sx:{display:"flex",justifyContent:"space-between",width:"100%"},children:[(0,r.jsx)(b.default,{children:t}),(0,r.jsx)(b.default,{variant:"body2",color:"text.secondary",children:t.toLowerCase().includes("key")||t.toLowerCase().includes("secret")||t.toLowerCase().includes("token")||t.toLowerCase().includes("password")?"********":"object"==typeof l&&null!==l&&"value"in l?l.value:l})]})},t)})}),(0,r.jsx)(s.default,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,r.jsx)(c.A,{onClick:()=>K(!1),children:"Cancel"})})]})]}),(0,r.jsxs)(G.A,{children:[(0,r.jsx)(c.A,{onClick:x,children:"Cancel"}),(0,r.jsx)(c.A,{type:"submit",variant:"contained",color:"primary",children:"Save"})]})]})})};var er=l(94929);let en=(0,B.h)("app/models/ModelClient");function ea(e){var t;let{initialModels:l}=e,h=(0,a.useRouter)(),f=(0,a.useSearchParams)(),[v,b]=(0,n.useState)(l),[g,y]=(0,n.useState)(""),[j,A]=(0,n.useState)(null),[w,k]=(0,n.useState)(!1),[C,S]=(0,n.useState)(!1),[N,T]=(0,n.useState)(null),U="1"===f.get("add");if((0,n.useEffect)(()=>{U?T(e=>null!=e?e:{id:(0,x.A)(),name:"",displayName:"",description:"",ApiKey:"",baseUrl:"",provider:"openai",promptTemplate:"",temperature:"0.0"}):T(null)},[U]),(0,n.useEffect)(()=>{try{let e=(0,ee.X)();e&&"function"==typeof e.loadModels&&(S(!0),en.debug("Model service is ready"))}catch(t){en.warn("Model service not ready, retrying...",t);let e=setTimeout(()=>{try{let e=(0,ee.X)();e&&"function"==typeof e.loadModels&&(S(!0),en.debug("Model service is now ready"))}catch(e){en.warn("Model service still not ready",e)}},100);return()=>clearTimeout(e)}},[]),!C)return en.debug("Waiting for model service to be ready..."),(0,r.jsx)(er.default,{});let M=f.get("edit"),I=U?N:M&&null!=(t=v.find(e=>e.id===M))?t:null,P=U?!!N:!!M,K=async e=>{en.info("Saving model",{modelId:e.id,modelName:e.name,mode:U?"add":"update"}),k(!0);try{let t=(0,ee.X)(),l=U?await t.addModel(e):await t.updateModel(e);if(!l.success)return A(l.error||"Failed to save model."),{success:!1,error:l.error};{let e=await t.loadModels();return b(e),T(null),h.push("/models"),{success:!0,model:l.model}}}catch(e){return en.error("Failed to save model",e),A((null==e?void 0:e.message)||"Failed to save model. Please try again."),{success:!1,error:(null==e?void 0:e.message)||"Failed to save model"}}finally{k(!1)}},W=async e=>(en.info("Editing model",{modelId:e.id,modelName:e.name}),h.push("/models?edit=".concat(e.id)),{success:!0}),z=async()=>{en.info("Opening add-model modal"),h.push("/models?add=1")},B=async e=>{en.info("Deleting model",{modelId:e}),k(!0);try{let t=(0,ee.X)();await t.deleteModel(e);let l=await t.loadModels();b(l)}catch(e){en.error("Failed to delete model",e),A("Failed to delete model. Please try again.")}finally{k(!1)}},D=async(e,t)=>{en.info("Setting model folder",{modelId:e,folder:t}),k(!0);try{let l=(0,ee.X)(),r=await l.getModel(e);if(!r)return void A("Model not found.");let n=await l.updateModel({...r,folder:t});if(!n.success)return void A(n.error||"Failed to move model to folder.");let a=await l.loadModels();b(a)}catch(e){en.error("Failed to set model folder",e),A((null==e?void 0:e.message)||"Failed to move model to folder. Please try again.")}finally{k(!1)}},F=async()=>{T(null),h.push("/models")},E=g.trim()?v.filter(e=>{let t=g.toLowerCase();return(e.displayName||"").toLowerCase().includes(t)||(e.name||"").toLowerCase().includes(t)}):v;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.A,{elevation:1,sx:{mb:2,p:1},children:(0,r.jsxs)(s.default,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},gap:1,alignItems:{xs:"stretch",sm:"center"},justifyContent:"space-between"},children:[(0,r.jsx)(i.A,{placeholder:"Search models...",variant:"outlined",size:"small",value:g,onChange:e=>y(e.target.value),InputProps:{startAdornment:(0,r.jsx)(d.A,{position:"start",children:(0,r.jsx)(m.A,{fontSize:"small"})})},sx:{maxWidth:{sm:300},width:"100%"}}),(0,r.jsx)(c.A,{variant:"contained",color:"primary",startIcon:(0,r.jsx)(p.A,{}),onClick:z,"data-tour":"add-model",children:"Add Model"})]})}),j&&(0,r.jsx)(s.default,{sx:{mb:2},children:(0,r.jsx)(u.A,{severity:"error",onClose:()=>A(null),children:j})}),(0,r.jsx)(O,{models:E,isLoading:w,onAdd:z,onUpdate:W,onDelete:B,folders:(0,L.yF)(v,e=>e.folder),onSetFolder:D}),P&&I?(0,r.jsx)(el,{open:P,model:I,onSave:K,onClose:F}):null]})}},48072:(e,t,l)=>{"use strict";l.d(t,{Lg:()=>o,eZ:()=>i,fC:()=>a,h5:()=>d});var r=l(88107),n=l(38459);let a={"name-asc":"Name (A-Z)","name-desc":"Name (Z-A)",provider:"Provider","context-desc":"Context (largest)","context-asc":"Context (smallest)"},o=e=>e.displayName||e.name||"",s=e=>(0,r.T_)(e.provider,e.adapter).label;function i(e,t){switch(t){case"provider":{let t=s(e);return{key:"provider:".concat(t),label:t}}case"context-asc":case"context-desc":var l;return"number"!=typeof(l=e.contextWindow)||Number.isNaN(l)?{key:"ctx:unknown",label:"Unknown context"}:l<=8e3?{key:"ctx:<=8k",label:"≤ 8K tokens"}:l<=32e3?{key:"ctx:8k-32k",label:"8K–32K tokens"}:l<=128e3?{key:"ctx:32k-128k",label:"32K–128K tokens"}:l<=1e6?{key:"ctx:128k-1m",label:"128K–1M tokens"}:{key:"ctx:>1m",label:"> 1M tokens"};default:return(0,n.po)(o(e))}}function d(e,t){return[...e].sort((e,l)=>{switch(t){case"name-asc":return o(e).localeCompare(o(l));case"name-desc":return o(l).localeCompare(o(e));case"provider":return s(e).localeCompare(s(l))||o(e).localeCompare(o(l));case"context-desc":case"context-asc":{let r="number"!=typeof e.contextWindow||Number.isNaN(e.contextWindow)?void 0:e.contextWindow,n="number"!=typeof l.contextWindow||Number.isNaN(l.contextWindow)?void 0:l.contextWindow;if(void 0===r&&void 0===n)return o(e).localeCompare(o(l));if(void 0===r)return 1;if(void 0===n)return -1;let a="context-desc"===t?n-r:r-n;return 0!==a?a:o(e).localeCompare(o(l))}default:return 0}})}},52397:(e,t,l)=>{"use strict";l.d(t,{RJ:()=>n,gF:()=>r});let r="masked:********",n="********"},61033:(e,t,l)=>{"use strict";l.d(t,{A$:()=>c,X8:()=>s,YP:()=>u,js:()=>d});let r="_-_-_",n=/^(tool|resource):(.+)$/,a=/\$\{((?:tool|resource):[^}]+|_-_-_[^}]+)\}/g;function o(e,t){return"".concat(e,"__").concat(t)}function s(e,t,l){return"${".concat(e,":").concat(o(t,l),"}")}function i(e){let t=n.exec(e);if(t){let e=t[1],l=function(e){let t=e.indexOf("__");if(t<=0)return null;let l=e.slice(t+2);return l?{server:e.slice(0,t),name:l}:null}(t[2]);return l?{kind:e,server:l.server,name:l.name}:null}if(e.startsWith(r)){let t=e.split(r);if(3===t.length&&t[1]&&t[2])return{kind:"tool",server:t[1],name:t[2]}}return null}function d(e){return e.startsWith("${")&&e.endsWith("}")?i(e.slice(2,-1)):null}function c(e){let t,l=[];for(a.lastIndex=0;null!==(t=a.exec(e));){let e=i(t[1]);e&&l.push({...e,fullMatch:t[0],index:t.index})}return l}function u(e){return"tool"===e.kind&&"handoff"===e.server?"handoff:".concat(e.name):"".concat(e.kind,":").concat(o(e.server,e.name))}},61267:(e,t,l)=>{"use strict";l.d(t,{A:()=>z});var r=l(95155),n=l(12115),a=l(84578),o=l(25635),s=l(94049),i=l(78470),d=l(28548),c=l(29767),u=l(53062),p=l(1702),m=l(41983),x=l(14915),h=l(4484),f=l(89623),v=l(11665),b=l(91665),g=l(88107),y=l(43076),j=l(87021),A=l(2778),w=l(52363),k=l(65036),C=l(4474),S=l(22003),N=l(21067),T=l(75912),U=l(91871),M=l(36741),I=l(48563);let P=e=>{var t,l,n,a,i,c,u,p,m;let{title:x,attempt:h}=e;return(0,r.jsxs)(s.default,{sx:{mb:2},children:[(0,r.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:.5},children:[h.ok?(0,r.jsx)(M.A,{color:"success",fontSize:"small"}):(0,r.jsx)(I.A,{color:"error",fontSize:"small"}),(0,r.jsx)(o.default,{variant:"subtitle2",children:x}),"number"==typeof h.status&&(0,r.jsx)(d.A,{size:"small",label:"HTTP ".concat(h.status)}),(0,r.jsx)(d.A,{size:"small",variant:"outlined",label:"".concat(h.durationMs," ms")})]}),h.ok?(0,r.jsxs)(o.default,{variant:"body2",color:"text.secondary",sx:{pl:3},children:["Response: ",h.content?'"'.concat(h.content,'"'):"(empty)"]}):(0,r.jsxs)(s.default,{sx:{pl:3},children:[(0,r.jsx)(o.default,{variant:"body2",color:"error.main",children:null==(t=h.error)?void 0:t.message}),((null==(l=h.error)?void 0:l.code)||(null==(n=h.error)?void 0:n.type))&&(0,r.jsxs)(o.default,{variant:"caption",color:"text.secondary",display:"block",children:[(null==(a=h.error)?void 0:a.type)?"type: ".concat(h.error.type):"",(null==(i=h.error)?void 0:i.type)&&(null==(c=h.error)?void 0:c.code)?" \xb7 ":"",(null==(u=h.error)?void 0:u.code)?"code: ".concat(h.error.code):""]}),(null==(p=h.error)?void 0:p.retryAfter)&&(0,r.jsxs)(o.default,{variant:"caption",color:"text.secondary",display:"block",children:["retry-after: ",h.error.retryAfter,"s"]}),(null==(m=h.error)?void 0:m.body)!==void 0&&(0,r.jsx)(s.default,{component:"pre",sx:{mt:.5,p:1,bgcolor:"action.hover",borderRadius:1,fontSize:"0.7rem",overflowX:"auto",maxHeight:160},children:JSON.stringify(h.error.body,null,2)})]})]})},K=e=>{let{open:t,modelLabel:l,loading:n,result:a,error:i,onClose:d,onRetry:c}=e;return(0,r.jsxs)(A.A,{open:t,onClose:d,maxWidth:"sm",fullWidth:!0,children:[(0,r.jsxs)(w.A,{children:["Test model: ",l]}),(0,r.jsx)(k.A,{dividers:!0,children:n?(0,r.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:2,py:3},children:[(0,r.jsx)(C.default,{size:24}),(0,r.jsx)(o.default,{variant:"body2",children:"Sending a direct test request (SDK + axios)…"})]}):i?(0,r.jsx)(S.A,{severity:"error",children:i}):a?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(S.A,{severity:a.ok?"success":"warning",sx:{mb:2},children:a.diagnosis}),(0,r.jsxs)(o.default,{variant:"caption",color:"text.secondary",display:"block",sx:{mb:2},children:["model: ",a.model,a.baseUrl?" \xb7 ".concat(a.baseUrl):"",a.provider?" \xb7 ".concat(a.provider):""]}),(0,r.jsx)(N.A,{sx:{mb:2}}),(0,r.jsx)(P,{title:"OpenAI SDK (used by flows)",attempt:a.sdk}),(0,r.jsx)(P,{title:"axios (independent cross-check)",attempt:a.axios})]}):null}),(0,r.jsxs)(T.A,{children:[(0,r.jsx)(U.A,{onClick:c,disabled:n,children:"Run again"}),(0,r.jsx)(U.A,{onClick:d,variant:"contained",children:"Close"})]})]})};var L=l(81956);let W=(0,j.h)("frontend/components/models/list/ModelCard"),z=e=>{let{model:t,onEdit:l,onDelete:j,folder:A,folders:w=[],onSetFolder:k,selectable:C=!1,selected:S=!1,onSelect:N}=e,[T,U]=(0,n.useState)(!1),[M,I]=(0,n.useState)(!1),[P,z]=(0,n.useState)(null),[B,D]=(0,n.useState)(null),[O,F]=(0,n.useState)(null),E=async()=>{I(!0),D(null),z(null);try{let e=await (0,y.X)().testModel({modelId:t.id});z(e)}catch(e){W.error("Model test failed",{modelId:t.id,error:e}),D(e instanceof Error?e.message:"Failed to run test")}finally{I(!1)}},_=(0,r.jsx)(r.Fragment,{children:(0,r.jsxs)(a.A,{sx:{flexGrow:1},children:[(0,r.jsx)(o.default,{variant:"h6",gutterBottom:!0,children:t.displayName||t.name}),(0,r.jsx)(o.default,{variant:"body2",color:"text.secondary",sx:{mb:2},style:{display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden",textOverflow:"ellipsis"},children:t.description}),(0,r.jsxs)(s.default,{sx:{mb:1},children:[(0,r.jsxs)(o.default,{variant:"body2",color:"text.secondary",children:["Provider: ",(0,g.T_)(t.provider,t.adapter).label]}),t.displayName&&(0,r.jsxs)(o.default,{variant:"body2",color:"text.secondary",noWrap:!0,children:["Model: ",t.name]}),"number"==typeof t.contextWindow&&(0,r.jsxs)(o.default,{variant:"body2",color:"text.secondary",children:["Context: ",t.contextWindow.toLocaleString()," tokens"]})]}),t.baseUrl&&(0,r.jsx)(i.A,{title:t.baseUrl,arrow:!0,placement:"top",children:(0,r.jsxs)(o.default,{variant:"body2",color:"text.secondary",noWrap:!0,children:["Base URL: ",t.baseUrl]})}),A&&(0,r.jsx)(d.A,{icon:(0,r.jsx)(b.A,{}),label:A,size:"small",variant:"outlined",sx:{mt:1,maxWidth:"100%"}})]})});return C?(0,r.jsx)(c.A,{elevation:S?4:2,role:"radio","aria-checked":S,sx:{height:"100%",display:"flex",flexDirection:"column",border:e=>S?"2px solid ".concat(e.palette.primary.main):"2px solid transparent",transition:"border-color 120ms, box-shadow 120ms"},children:(0,r.jsx)(u.A,{onClick:()=>null==N?void 0:N(t.id),sx:{height:"100%",display:"flex",flexDirection:"column",alignItems:"stretch"},children:_})}):(0,r.jsxs)(c.A,{elevation:2,sx:{height:"100%",display:"flex",flexDirection:"column"},children:[_,(0,r.jsxs)(p.A,{disableSpacing:!0,children:[(0,r.jsx)(i.A,{title:"Test model (direct SDK call, no flow)",arrow:!0,children:(0,r.jsx)(m.A,{"aria-label":"test",onClick:()=>{U(!0),E()},children:(0,r.jsx)(f.A,{})})}),(0,r.jsx)(m.A,{"aria-label":"edit",onClick:l,children:(0,r.jsx)(x.A,{})}),(0,r.jsx)(m.A,{"aria-label":"delete",onClick:j,children:(0,r.jsx)(h.A,{})}),k&&(0,r.jsx)(i.A,{title:"Move to folder…",arrow:!0,children:(0,r.jsx)(m.A,{"aria-label":"move to folder",onClick:e=>F(e.currentTarget),sx:{ml:"auto"},children:(0,r.jsx)(v.A,{})})})]}),k&&(0,r.jsx)(L.A,{anchorEl:O,open:!!O,currentFolder:A,folders:w,onClose:()=>F(null),onAssign:k}),(0,r.jsx)(K,{open:T,modelLabel:t.displayName||t.name,loading:M,result:P,error:B,onClose:()=>U(!1),onRetry:E})]})}},67034:(e,t,l)=>{Promise.resolve().then(l.bind(l,94049)),Promise.resolve().then(l.bind(l,25635)),Promise.resolve().then(l.bind(l,24437)),Promise.resolve().then(l.bind(l,36552)),Promise.resolve().then(l.bind(l,43856)),Promise.resolve().then(l.bind(l,94929))},88107:(e,t,l)=>{"use strict";l.d(t,{T_:()=>n,xx:()=>r});let r=[{id:"openai",label:"OpenAI",provider:"openai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.openai.com/v1",showBaseUrl:!0},{id:"openrouter",label:"OpenRouter",provider:"openrouter",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://openrouter.ai/api/v1",showBaseUrl:!0},{id:"requesty",label:"Requesty",provider:"requesty",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://router.requesty.ai/v1",showBaseUrl:!0},{id:"xai",label:"X.ai",provider:"xai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.x.ai/v1",showBaseUrl:!0},{id:"ollama",label:"Ollama",provider:"ollama",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"http://localhost:11434/v1",showBaseUrl:!0},{id:"litellm",label:"LiteLLM",provider:"litellm",adapter:"openai",sdkLabel:"OpenAI SDK (via LiteLLM Proxy)",baseUrl:"http://localhost:4000/v1",showBaseUrl:!0},{id:"gemini-openai",label:"Gemini (OpenAI Format)",provider:"gemini",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai/",showBaseUrl:!0},{id:"gemini-native",label:"Gemini (Native)",provider:"gemini",adapter:"gemini",sdkLabel:"GenAI SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.0-flash"]},{id:"anthropic-openai",label:"Anthropic (OpenAI Format)",provider:"anthropic",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.anthropic.com/v1/",showBaseUrl:!0},{id:"anthropic-native",label:"Anthropic (Native)",provider:"anthropic",adapter:"anthropic",sdkLabel:"Anthropic SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["claude-opus-4-8","claude-sonnet-4-6","claude-haiku-4-5-20251001","claude-fable-5"]},{id:"claude-subscription",label:"Claude Subscription",provider:"claude-subscription",adapter:"claude-cli",sdkLabel:"Claude CLI",baseUrl:"",showBaseUrl:!1,defaultModels:["opus","sonnet","haiku","fable"]}];function n(e,t){let l=e||"openai",n=t||"openai";return r.find(e=>e.provider===l&&e.adapter===n)||r.find(e=>e.provider===l)||r[0]}},95480:(e,t,l)=>{"use strict";l.d(t,{A:()=>T});var r=l(95155),n=l(12115),a=l(87021),o=l(63941),s=l(29985),i=l(80372),d=l(94049),c=l(25635),u=l(14913),p=l(57883),m=l(2300),x=l(89218),h=l(42063),f=l(17897);l(32098);var v=l(61033);let b=(0,a.h)("frontend/components/shared/PromptBuilder"),g=e=>{b.debug("Deserializing markdown to Slate value");let t=e.split("\n").map(e=>({type:"paragraph",children:(e=>{let t=(0,v.A$)(e);if(0===t.length)return[{text:e}];let l=[],r=0;for(let n of t)n.index>r&&l.push({text:e.slice(r,n.index)}),l.push({type:"binding-reference",kind:n.kind,server:n.server,name:n.name,children:[{text:""}]}),r=n.index+n.fullMatch.length;return r<e.length&&l.push({text:e.slice(r)}),l})(e)}));return t.length>0?t:[{type:"paragraph",children:[{text:""}]}]},y=e=>{b.debug("Serializing Slate value to markdown");let t=0,l=e.map(e=>e.children?e.children.map(e=>o.EY.isText(e)?e.text:"binding-reference"===e.type?(t++,(0,v.X8)(e.kind,e.server,e.name)):"").join(""):"").join("\n");return t>0&&b.debug("Serialized ".concat(t," binding references")),l},j=e=>{let{attributes:t,children:l,element:n}=e;return"binding-reference"===n.type?(0,r.jsxs)("span",{...t,className:"tool-reference-wrapper",children:[(0,r.jsx)(()=>{let e=(0,s.Zi)(),t=(e=>"tool"===e.kind&&"handoff"===e.server)(n),l="resource"===n.kind?"resource":t?"handoff":"",a=()=>{let t=s.rL.findPath(e,n);b.debug("Removing binding reference: ".concat(n.kind,":").concat(n.server,":").concat(n.name)),o.gB.removeNodes(e,{at:t})};return(0,r.jsxs)("span",{contentEditable:!1,className:"tool-reference-container ".concat(l),children:[(0,r.jsx)("span",{className:"tool-reference ".concat(l),children:(0,v.YP)(n)}),(0,r.jsx)("span",{className:"tool-reference-delete ".concat(l),role:"button",tabIndex:0,onClick:e=>{e.preventDefault(),e.stopPropagation(),a()},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),e.stopPropagation(),a())},children:"\xd7"})]})},{}),l," "]}):(0,r.jsx)("p",{...t,children:l})},A=e=>{let{attributes:t,children:l,leaf:n}=e,a=l;return n.bold&&(a=(0,r.jsx)("strong",{children:a})),n.italic&&(a=(0,r.jsx)("em",{children:a})),n.code&&(a=(0,r.jsx)("code",{children:a})),(0,r.jsx)("span",{...t,children:a})},w=e=>{let{server:t,name:l}=e,a="handoff"===t,[o,s]=(0,n.useState)(null),[i,d]=(0,n.useState)(!0);return((0,n.useEffect)(()=>{let e=!1;return(async()=>{try{var r;d(!0);let n=null==(r=(await f.S.listServerTools(t)).tools)?void 0:r.find(e=>e.name===l);e||s(n||null)}catch(e){b.error("Failed to fetch tool info for ".concat(t,":").concat(l),e)}finally{e||d(!1)}})(),()=>{e=!0}},[t,l]),i)?(0,r.jsx)("span",{className:"tool-reference-preview loading ".concat(a?"handoff":""),children:"tool:".concat(t,"__").concat(l)}):o?(0,r.jsxs)("span",{className:"tool-reference-preview ".concat(a?"handoff":""),children:["[The user is referencing a ",a?"handoff":"tool"," `tool:",t,"__",l,"` (",o.description||"No description",")]"]}):(0,r.jsx)("span",{className:"tool-reference-preview not-found ".concat(a?"handoff":""),children:"tool:".concat(t,"__").concat(l," (Tool not found)")})},k=e=>{let{server:t,name:l}=e,[a,o]=(0,n.useState)(null),[s,i]=(0,n.useState)(!0);return((0,n.useEffect)(()=>{let e=!1;return(async()=>{try{i(!0);let r=await f.S.listServerResources(t),n=[...r.resources||[],...r.resourceTemplates||[]].find(e=>e.uri===l||e.uriTemplate===l);e||o((null==n?void 0:n.description)||(null==n?void 0:n.name)||null)}catch(e){b.error("Failed to fetch resource info for ".concat(t,":").concat(l),e)}finally{e||i(!1)}})(),()=>{e=!0}},[t,l]),s)?(0,r.jsx)("span",{className:"tool-reference-preview loading resource",children:"resource:".concat(t,"__").concat(l)}):(0,r.jsxs)("span",{className:"tool-reference-preview resource",children:["[The contents of resource `",l,"` from `",t,"`",a?" (".concat(a,")"):""," will be inserted here]"]})},C=e=>{let{binding:t}=e;return"resource"===t.kind?(0,r.jsx)(k,{server:t.server,name:t.name}):(0,r.jsx)(w,{server:t.server,name:t.name})},S=e=>{let{value:t}=e;b.debug("Rendering preview");let l=[],n=0;for(let e of(0,v.A$)(t))e.index>n&&l.push({type:"text",value:t.slice(n,e.index)}),l.push({type:"binding",binding:e,key:e.index}),n=e.index+e.fullMatch.length;n<t.length&&l.push({type:"text",value:t.slice(n)});let a=[],o=[],s=()=>{a.push((0,r.jsx)("p",{children:o},"p-".concat(a.length))),o=[]};for(let e of l)if("text"===e.type){let t=e.value.split("\n");for(let e=0;e<t.length;e++)o.push(t[e]),e<t.length-1&&s()}else o.push((0,r.jsx)(C,{binding:e.binding},"binding-".concat(e.key)));return o.length>0&&s(),(0,r.jsx)("div",{className:"preview-content",children:a})},N=(0,n.forwardRef)((e,t)=>{let{value:l,onChange:a,label:f="Prompt Builder",height:w=300,onModeChange:k,customPreviewRenderer:C}=e;b.info("PromptBuilder initialized");let N=(0,n.useMemo)(()=>{let e=(0,i.$k)((0,s.o$)((0,o.ie)())),{isInline:t,isVoid:l}=e;return e.isInline=e=>"binding-reference"===e.type||t(e),e.isVoid=e=>"binding-reference"===e.type||l(e),e},[]),[T,U]=(0,n.useState)("raw"),[M,I]=(0,n.useState)(()=>g(l||"")),P=(0,n.useRef)(!1),[,K]=(0,n.useState)(0);(0,n.useImperativeHandle)(t,()=>({insertText:e=>{b.info("insertText called with text length: ".concat(e.length));let t=(0,v.js)(e);if(t){b.info("Inserting ".concat(t.kind," reference: ").concat(t.server,":").concat(t.name));let e={type:"binding-reference",kind:t.kind,server:t.server,name:t.name,children:[{text:""}]};N.selection||o.gB.select(N,o.KE.end(N,[])),o.gB.insertNodes(N,e),o.gB.move(N),K(e=>e+1),I([...N.children])}else N.selection||o.gB.select(N,o.KE.end(N,[])),o.gB.insertText(N,e);a(y(N.children)),b.info("insertText completed successfully")},getMode:()=>T})),(0,n.useEffect)(()=>{y(M)!==y(g(l||""))&&(b.debug("External value change detected"),P.current=!0,I(g(l||"")))},[l,M]);let L=(0,n.useCallback)(e=>{if(P.current){P.current=!1;return}I(e),a(y(e))},[a]);return(0,r.jsxs)(d.default,{sx:{width:"100%",height:"100%",display:"flex",flexDirection:"column"},children:[f&&(0,r.jsx)(c.default,{variant:"subtitle1",gutterBottom:!0,sx:{fontWeight:"medium",mb:1},children:f}),(0,r.jsx)(d.default,{sx:{mb:1},children:(0,r.jsxs)(u.A,{value:T,exclusive:!0,onChange:(e,t)=>{null!==t&&(b.info("Mode changed from ".concat(T," to ").concat(t)),U(t),k&&k(t))},size:"small",children:[(0,r.jsxs)(p.A,{value:"raw",children:[(0,r.jsx)(x.A,{fontSize:"small",sx:{mr:.5}}),"Raw"]}),(0,r.jsxs)(p.A,{value:"preview",children:[(0,r.jsx)(h.A,{fontSize:"small",sx:{mr:.5}}),"Preview"]})]})}),(0,r.jsx)(m.A,{elevation:0,sx:{border:"1px solid rgba(0, 0, 0, 0.12)",borderRadius:1,overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column"},children:"raw"===T?(0,r.jsx)(d.default,{className:"slate-editor-container",sx:{height:"number"==typeof w?w:"100%",overflow:"auto",p:2},children:(0,r.jsx)(s.A,{editor:N,initialValue:M,onChange:L,children:(0,r.jsx)(s.Fo,{className:"slate-editor",renderElement:j,renderLeaf:A,placeholder:"Write your prompt here..."})})}):C?(0,r.jsx)(d.default,{className:"custom-preview-container",sx:{height:"number"==typeof w?w:"100%",overflow:"auto"},children:C()}):(0,r.jsx)(d.default,{className:"preview-container",sx:{height:"number"==typeof w?w:"100%",overflow:"auto",p:2},children:(0,r.jsx)(S,{value:l})})})]})});N.displayName="PromptBuilder";let T=N}},e=>{e.O(0,[1137,7926,2678,4754,9244,8548,1983,1871,2003,5501,488,3272,3077,9659,9451,3730,4749,3736,9164,812,8441,1255,7358],()=>e(e.s=67034)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4662,9195],{8209:(e,t,r)=>{Promise.resolve().then(r.bind(r,58812))},9352:(e,t,r)=>{"use strict";r.d(t,{Ic:()=>s,kY:()=>o});var n=r(26796);let a=(0,r(87021).h)("frontend/utils/theme"),o={light:{background:"#FFFFFF",foreground:"#2C3E50",paperBackground:"#F5F6FA",textSecondary:"#7F8C8D",border:"#e5e7eb",heading:"#111",text:"#333",secondaryText:"#666",error:{background:"#fef2f2",border:"#fecaca",text:"#dc2626"}},dark:{background:"#1a1a1a",foreground:"#f0f0f0",paperBackground:"#2a2a2a",textSecondary:"#aaaaaa",border:"#3a3a3a",heading:"#f8f8f8",text:"#f0f0f0",secondaryText:"#aaa",error:{background:"#3a2222",border:"#5a3333",text:"#f87171"}}};function s(){let{isDarkMode:e}=(0,n.useTheme)();return a.debug("useThemeUtils called with isDarkMode: ".concat(e)),{getThemeValue:(t,r)=>e?r:t,getThemeColor:t=>{let r=t.split("."),n=o[e?"dark":"light"];for(let e of r)if(!n||"object"!=typeof n||!(e in n))return a.warn("Theme color path not found: ".concat(t)),"";else n=n[e];return n},colors:e?o.dark:o.light,isDarkMode:e}}},26796:(e,t,r)=>{"use strict";r.r(t),r.d(t,{ThemeProvider:()=>p,useTheme:()=>m});var n=r(95155),a=r(12115),o=r(87021),s=r(7160),i=r(29197),l=r(9352),d=r(84563),c=r(29692);let u=(0,o.h)("frontend/contexts/ThemeContext"),h=(0,a.createContext)(void 0),p=e=>{let{children:t}=e,[r,o]=(0,a.useState)(!1),[p,m]=(0,a.useState)(!1);(0,a.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;m(t),t?document.documentElement.classList.add("dark-theme"):document.documentElement.classList.remove("dark-theme"),o(!0)})()},[]);let f=(0,a.useMemo)(()=>(function(e){let t="dark"===e?l.kY.dark:l.kY.light;return(0,i.A)({palette:{mode:e,primary:{main:"#007bff"},secondary:{main:"#6c757d"},error:{main:"dark"===e?"#f87171":"#dc2626",light:"dark"===e?"#5a3333":"#fecaca",dark:"dark"===e?"#3a2222":"#b91c1c"},warning:{main:"#f59e0b"},info:{main:"#3b82f6"},success:{main:"dark"===e?"#4ade80":"#16a34a"},background:{default:t.background,paper:t.paperBackground},text:{primary:t.foreground,secondary:t.textSecondary}},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"}}},MuiTextField:{styleOverrides:{root:{"& .MuiOutlinedInput-root":{borderRadius:"0.375rem"}}}},MuiCard:{styleOverrides:{root:{borderRadius:"0.5rem",boxShadow:"dark"===e?"0 4px 6px -1px rgba(0, 0, 0, 0.2), 0 2px 4px -1px rgba(0, 0, 0, 0.1)":"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)"}}}}})})(p?"dark":"light"),[p]);return u.debug("Rendering ThemeProvider with isDarkMode: ".concat(p)),(0,n.jsx)(h.Provider,{value:{toggleTheme:()=>{m(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,n.jsxs)(s.A,{theme:f,children:[(0,n.jsx)(d.Ay,{}),t]})})},m=()=>{let e=(0,a.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}},43076:(e,t,r)=>{"use strict";r.d(t,{N:()=>i,X:()=>s});let n=(0,r(87021).h)("frontend/services/model");class a{async fetchWithErrorHandling(e,t){try{n.debug("Making API request",{url:e,method:(null==t?void 0:t.method)||"GET"});let r=await fetch(e,t),a=null;try{if(204!==r.status){let t=r.headers.get("content-type");if(t&&t.includes("application/json"))a=await r.json();else{let o=await r.text();n.warn("Received non-JSON response",{url:e,contentType:t,text:o.substring(0,200)}),a=o}}}catch(t){throw n.error("Failed to parse response",{url:e,status:r.status,contentType:r.headers.get("content-type"),parseError:t}),Error("Invalid response format")}if(!r.ok){let o;throw o="object"==typeof a&&null!==a?a.error||a.message||a.errorMessage||JSON.stringify(a):a||"HTTP error! status: ".concat(r.status),n.error("Request failed",{url:e,method:(null==t?void 0:t.method)||"GET",status:r.status,error:o,data:a}),Error(o)}return n.debug("API request successful",{url:e,method:(null==t?void 0:t.method)||"GET",status:r.status}),a}catch(r){if(r instanceof TypeError&&"Failed to fetch"===r.message)throw n.error("Network error",{url:e,method:(null==t?void 0:t.method)||"GET",error:r}),Error("Unable to connect to the server. Please check your internet connection.");if(r instanceof Error)throw r;throw n.error("API request failed",{url:e,method:(null==t?void 0:t.method)||"GET",error:r}),Error("Failed to complete request")}}async tryLoadModels(){try{let e=await this.fetchWithErrorHandling("/api/model");return Array.isArray(e)?e:null}catch(e){return n.error("Failed to load models",e),null}}async loadModels(){var e;return null!=(e=await this.tryLoadModels())?e:[]}async getModel(e){try{return await this.fetchWithErrorHandling("/api/model/".concat(encodeURIComponent(e)))}catch(t){return n.error("Failed to get model",{id:e,error:t}),null}}async addModel(e){try{if(!e.provider)return{success:!1,error:"Provider is required"};n.debug("Attempting to add model",{displayName:e.displayName,provider:e.provider});let t=await this.fetchWithErrorHandling("/api/model",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});return n.debug("Model added successfully",{modelId:t.id,displayName:t.displayName}),{success:!0,model:t}}catch(r){n.error("Failed to add model",{displayName:e.displayName,provider:e.provider,error:r instanceof Error?r.message:r});let t=r instanceof Error?r.message:"Failed to add model";if(t.includes("display name already exists"))return{success:!1,error:'The display name "'.concat(e.displayName,'" is already in use. Please choose a different name.')};if(t.includes("technical name already exists"))return{success:!1,error:'A model with the name "'.concat(e.name,'" already exists. Please choose a different name.')};return{success:!1,error:t}}}async updateModel(e){try{if(!e.id)return{success:!1,error:"Model ID is required"};n.debug("Attempting to update model",{modelId:e.id,displayName:e.displayName});let t=await this.fetchWithErrorHandling("/api/model/".concat(encodeURIComponent(e.id)),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});return n.debug("Model updated successfully",{modelId:e.id,displayName:e.displayName}),{success:!0,model:t}}catch(r){n.error("Failed to update model",{modelId:e.id,displayName:e.displayName,error:r instanceof Error?r.message:r});let t=r instanceof Error?r.message:"Failed to update model";return t.includes("display name")&&t.includes("already exists"),{success:!1,error:t}}}async deleteModel(e){try{if(!e)return{success:!1,error:"Model ID is required"};let t=await this.getModel(e);if(!t)return{success:!1,error:"Model not found"};return n.debug("Attempting to delete model",{modelId:e,displayName:t.displayName}),await this.fetchWithErrorHandling("/api/model/".concat(encodeURIComponent(e)),{method:"DELETE"}),n.debug("Model deleted successfully",{modelId:e,displayName:t.displayName}),{success:!0}}catch(a){let t;try{let r=await this.getModel(e);t=null==r?void 0:r.displayName}catch(e){}n.error("Failed to delete model",{modelId:e,displayName:t,error:a instanceof Error?a.message:a});let r=a instanceof Error?a.message:"Failed to delete model";if(r.includes("not found"))return{success:!1,error:"The model no longer exists or has already been deleted"};return{success:!1,error:r}}}async updateModelApiKey(e,t){try{let r=await this.getModel(e);if(!r)return{success:!1,error:"Model not found"};return await this.updateModel({...r,ApiKey:t})}catch(t){return n.error("Failed to update model API key",{modelId:e,error:t}),{success:!1,error:t instanceof Error?t.message:"Failed to update API key"}}}async testModel(e){return n.debug("Testing model",{modelId:e.modelId,name:e.name}),await this.fetchWithErrorHandling("/api/model/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async fetchProviderModels(e,t,r,a){try{var o;n.debug("Fetching provider models",{baseUrl:e,modelId:t,searchTerm:r?'"'.concat(r,'"'):"none",apiKey:a?"provided":"not provided"});let s=await this.fetchWithErrorHandling("/api/model/provider",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:e,modelId:t,searchTerm:r,apiKey:a})});return n.debug("Provider models fetched successfully",{baseUrl:e,modelCount:(null==(o=s.models)?void 0:o.length)||0,searchTerm:r?'"'.concat(r,'"'):"none"}),s.models||[]}catch(t){return n.error("Failed to fetch provider models",{baseUrl:e,searchTerm:r,error:t}),[]}}}let o=null,s=()=>(o||(o=new a),o),i=new Proxy({},{get(e,t){let r=s(),n=r[t];return"function"==typeof n?n.bind(r):n}})},52397:(e,t,r)=>{"use strict";r.d(t,{RJ:()=>a,gF:()=>n});let n="masked:********",a="********"},58812:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>eg});var n=r(95155),a=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),m=r(9562),f=r(56422),g=r(41983),y=r(91871),x=r(21422),b=r(87830),v=r(68212),j=r(42063),w=r(9164);function k(){let{setKey:e,changeKey:t,verifyKey:r,isEncryptionInitialized:i,isUserEncryptionEnabled:l}=(0,w.useStorage)(),[d,c]=(0,o.useState)(""),[k,A]=(0,o.useState)(""),[S,C]=(0,o.useState)(!1),[E,T]=(0,o.useState)(""),[R,I]=(0,o.useState)(""),[O,P]=(0,o.useState)(!1),[F,M]=(0,o.useState)(!1),[W,N]=(0,o.useState)(null),[B,L]=(0,o.useState)(!1),[U,D]=(0,o.useState)(!1),[V,z]=(0,o.useState)(!1),G=()=>{setTimeout(()=>window.location.reload(),800)};(0,o.useEffect)(()=>{(async()=>{let e=await i(),t=await l();L(e),D(t)})()},[i,l]);let H=async t=>{t.preventDefault(),z(!0),N(null);try{if(d.length<12){N({type:"error",text:"Encryption password must be at least 12 characters long for security"}),z(!1);return}if(d!==k){N({type:"error",text:"Passwords do not match"}),z(!1);return}await e(d),N({type:"success",text:"Encryption password set successfully"}),c(""),A(""),L(!0),G()}catch(e){N({type:"error",text:"Failed to set encryption password"})}finally{z(!1)}},J=async e=>{e.preventDefault(),z(!0),N(null);try{if(R.length<12){N({type:"error",text:"New password must be at least 12 characters long for security"}),z(!1);return}if(!await r(E)){N({type:"error",text:"Current password is incorrect"}),z(!1);return}await t(E,R)?(N({type:"success",text:"Encryption password changed successfully"}),T(""),I(""),G()):N({type:"error",text:"Failed to change encryption password"})}catch(e){N({type:"error",text:"An error occurred while changing the password"})}finally{z(!1)}};return(0,n.jsxs)(a.default,{sx:{width:"100%"},children:[(0,n.jsx)(s.default,{variant:"h6",gutterBottom:!0,children:"Encryption Settings"}),(0,n.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,n.jsx)(u.A,{severity:W.type,sx:{mb:3},children:W.text}),(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",mb:3},children:[(0,n.jsx)(s.default,{variant:"body1",sx:{mr:2},children:"Current encryption status:"}),B?U?(0,n.jsx)(h.A,{icon:(0,n.jsx)(x.A,{}),label:"Custom Password Protection",color:"success",variant:"outlined"}):(0,n.jsx)(h.A,{icon:(0,n.jsx)(b.A,{}),label:"Default Encryption",color:"primary",variant:"outlined"}):(0,n.jsx)(h.A,{label:"No Encryption",color:"error",variant:"outlined"})]}),B&&U?U?(0,n.jsxs)(p.A,{elevation:2,sx:{p:3},children:[(0,n.jsx)(s.default,{variant:"subtitle1",gutterBottom:!0,fontWeight:"bold",children:"Change Encryption Password"}),(0,n.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,n.jsxs)(a.default,{component:"form",onSubmit:J,children:[(0,n.jsx)(m.A,{fullWidth:!0,label:"Current Password",variant:"outlined",value:E,onChange:e=>T(e.target.value),type:O?"text":"password",InputProps:{endAdornment:(0,n.jsx)(f.A,{position:"end",children:(0,n.jsx)(g.A,{"aria-label":"toggle current password visibility",onClick:()=>P(!O),edge:"end",children:O?(0,n.jsx)(v.A,{}):(0,n.jsx)(j.A,{})})})},sx:{mb:2}}),(0,n.jsx)(m.A,{fullWidth:!0,label:"New Password",variant:"outlined",value:R,onChange:e=>I(e.target.value),type:F?"text":"password",InputProps:{endAdornment:(0,n.jsx)(f.A,{position:"end",children:(0,n.jsx)(g.A,{"aria-label":"toggle new password visibility",onClick:()=>M(!F),edge:"end",children:F?(0,n.jsx)(v.A,{}):(0,n.jsx)(j.A,{})})})},sx:{mb:3}}),(0,n.jsx)(y.A,{type:"submit",variant:"contained",color:"primary",disabled:!E||!R||V,children:"Change Password"})]})]}):null:(0,n.jsxs)(p.A,{elevation:2,sx:{p:3,mb:4},children:[(0,n.jsx)(s.default,{variant:"subtitle1",gutterBottom:!0,fontWeight:"bold",children:"Set Custom Encryption Password"}),(0,n.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:B?"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,n.jsxs)(a.default,{component:"form",onSubmit:H,children:[(0,n.jsx)(m.A,{fullWidth:!0,label:"New Password",variant:"outlined",value:d,onChange:e=>c(e.target.value),type:S?"text":"password",InputProps:{endAdornment:(0,n.jsx)(f.A,{position:"end",children:(0,n.jsx)(g.A,{"aria-label":"toggle password visibility",onClick:()=>C(!S),edge:"end",children:S?(0,n.jsx)(v.A,{}):(0,n.jsx)(j.A,{})})})},sx:{mb:2}}),(0,n.jsx)(m.A,{fullWidth:!0,label:"Confirm Password",variant:"outlined",value:k,onChange:e=>A(e.target.value),type:S?"text":"password",sx:{mb:3}}),(0,n.jsx)(y.A,{type:"submit",variant:"contained",color:"primary",disabled:!d||!k||V,children:B?"Upgrade to Custom Password":"Set Encryption Password"})]})]}),(0,n.jsx)(a.default,{sx:{mt:4},children:(0,n.jsxs)(u.A,{severity:U?"warning":"info",children:[(0,n.jsx)(s.default,{variant:"subtitle2",fontWeight:"bold",children:U?"Important Security Information":"About Default Encryption"}),U?(0,n.jsxs)(s.default,{variant:"body2",children:["• Your custom encryption password is never stored directly on the server",(0,n.jsx)("br",{}),"• If you forget your password, you will not be able to access your encrypted data",(0,n.jsx)("br",{}),"• Consider using a password manager to securely store this password"]}):(0,n.jsxs)(s.default,{variant:"body2",children:["• Your data is currently encrypted with a built-in default key",(0,n.jsx)("br",{}),"• This provides basic protection without requiring password setup",(0,n.jsx)("br",{}),"• For maximum security, set a custom password using the form above"]})]})})]})}var A=r(99944),S=r(9957),C=r(21067),E=r(26796),T=r(87021);let R=(0,T.h)("frontend/components/Settings/ThemeSettings");function I(){let{isDarkMode:e,toggleTheme:t}=(0,E.useTheme)();return R.debug("Rendering ThemeSettings with isDarkMode: ".concat(e)),(0,n.jsxs)(a.default,{sx:{maxWidth:600},children:[(0,n.jsx)(s.default,{variant:"h6",gutterBottom:!0,children:"Theme Settings"}),(0,n.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Customize the application appearance"}),(0,n.jsx)(A.A,{control:(0,n.jsx)(S.A,{checked:e,onChange:t,name:"darkMode"}),label:"Dark Mode"}),(0,n.jsx)(C.A,{sx:{my:3}}),(0,n.jsx)(s.default,{variant:"subtitle1",gutterBottom:!0,children:"Theme CSS Variables"}),(0,n.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"The following CSS variables are available for custom styling:"}),(0,n.jsx)(p.A,{sx:{p:2,mb:3},children:(0,n.jsx)(s.default,{variant:"body2",component:"pre",sx:{fontFamily:"var(--font-geist-mono)"},children:"/* Access in CSS */\n:root {\n /* Light theme variables (default) */\n --background: #FFFFFF;\n --foreground: #2C3E50;\n --paper-background: #F5F6FA;\n --text-secondary: #7F8C8D;\n}\n\n:root.dark-theme {\n /* Dark theme variables */\n --background: #1a1a1a;\n --foreground: #f0f0f0;\n --paper-background: #2a2a2a;\n --text-secondary: #aaaaaa;\n}\n\n/* Access in inline styles */\ncolor: var(--foreground);\nbackground: var(--background);"})}),(0,n.jsx)(s.default,{variant:"subtitle1",gutterBottom:!0,children:"Usage in Components"}),(0,n.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Import the theme utilities to use theme-aware styling in your components:"}),(0,n.jsx)(p.A,{sx:{p:2},children:(0,n.jsx)(s.default,{variant:"body2",component:"pre",sx:{fontFamily:"var(--font-geist-mono)"},children:"// Using the useTheme hook\nimport { useTheme } from '@/frontend/contexts/ThemeContext';\n\nfunction MyComponent() {\n const { isDarkMode } = useTheme();\n \n return (\n <div>\n {isDarkMode ? 'Dark Mode' : 'Light Mode'}\n </div>\n );\n}\n\n// Using CSS variables in inline styles\nimport { getCssVar } from '@/frontend/utils';\n\nfunction StyledComponent() {\n return (\n <div style={{ \n color: getCssVar('foreground'),\n background: getCssVar('background')\n }}>\n Themed content\n </div>\n );\n}"})})]})}var O=r(71892),P=r(52397);function F(){let{globalEnvVars:e,setGlobalEnvVars:t,deleteGlobalEnvVar:r}=(0,w.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,n.jsxs)(a.default,{sx:{width:"100%"},children:[(0,n.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,n.jsx)(u.A,{severity:i.type,sx:{mb:2},children:i.text}),(0,n.jsx)(O.A,{serverName:"Global",initialEnv:e,onSave:d,onDelete:r})]})}var M=r(17325),W=r(22822),N=r(4474),B=r(2778),L=r(52363),U=r(65036),D=r(50001),V=r(75912),z=r(27156);let G=(0,T.h)("frontend/components/Settings/BackupSettings"),H=[{key:"models",label:"Models",description:"AI model configurations",storageKey:z.Z.MODELS},{key:"mcpServers",label:"MCP Servers Configuration",description:"MCP server settings",storageKey:z.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:z.Z.FLOWS},{key:"chatHistory",label:"Chat History",description:"Conversation history",storageKey:z.Z.CHAT_HISTORY},{key:"settings",label:"Settings",description:"Application settings",storageKey:z.Z.THEME},{key:"globalEnvVars",label:"Global Environment Variables",description:"Global environment variables",storageKey:z.Z.GLOBAL_ENV_VARS},{key:"encryptionKey",label:"Encryption Key",description:"Data encryption key",storageKey:z.Z.ENCRYPTION_KEY}];function J(){let[e,t]=(0,o.useState)(H.reduce((e,t)=>({...e,[t.key]:!0}),{})),[r,i]=(0,o.useState)(H.reduce((e,t)=>({...e,[t.key]:!0}),{})),[l,d]=(0,o.useState)(null),c=(0,o.useRef)(null),[h,m]=(0,o.useState)(null),[f,g]=(0,o.useState)(!1),[x,b]=(0,o.useState)(!1),v=r=>{t({...e,[r.target.name]:r.target.checked})},j=e=>{i({...r,[e.target.name]:e.target.checked})},w=async()=>{G.debug("Creating backup with selections:",e),g(!0),m(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){m({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 n=await r.blob(),a=window.URL.createObjectURL(n),o=document.createElement("a");o.style.display="none",o.href=a;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(a),document.body.removeChild(o),m({type:"success",text:"Backup created successfully"})}catch(e){G.error("Error creating backup:",e),m({type:"error",text:e instanceof Error?e.message:"Failed to create backup"})}finally{g(!1)}},k=async()=>{G.debug("Restoring from backup with selections:",r),g(!0),m(null),b(!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 n=await fetch("/api/restore",{method:"POST",body:t});if(!n.ok){let e=await n.json();throw Error(e.error||"Failed to restore from backup")}m({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),m({type:"error",text:e instanceof Error?e.message:"Failed to restore from backup"})}finally{g(!1)}},S=r=>{let n={...e};H.forEach(e=>{n[e.key]=r}),t(n)},E=e=>{let t={...r};H.forEach(r=>{t[r.key]=e}),i(t)};return(0,n.jsxs)(a.default,{sx:{width:"100%"},children:[(0,n.jsx)(s.default,{variant:"h6",gutterBottom:!0,children:"Backup and Restore"}),(0,n.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,n.jsx)(u.A,{severity:h.type,sx:{mb:2},children:h.text}),(0,n.jsxs)(p.A,{sx:{p:3,mb:3},children:[(0,n.jsx)(s.default,{variant:"subtitle1",gutterBottom:!0,fontWeight:"bold",children:"Create Backup"}),(0,n.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Select the components you want to include in the backup."}),(0,n.jsxs)(a.default,{sx:{mb:2},children:[(0,n.jsx)(y.A,{size:"small",onClick:()=>S(!0),sx:{mr:1},children:"Select All"}),(0,n.jsx)(y.A,{size:"small",onClick:()=>S(!1),children:"Deselect All"})]}),(0,n.jsx)(M.A,{sx:{mb:3},children:H.map(t=>(0,n.jsx)(A.A,{control:(0,n.jsx)(W.A,{checked:e[t.key],onChange:v,name:t.key}),label:(0,n.jsxs)(a.default,{children:[(0,n.jsx)(s.default,{variant:"body1",children:t.label}),(0,n.jsx)(s.default,{variant:"body2",color:"text.secondary",children:t.description})]})},t.key))}),(0,n.jsx)(y.A,{variant:"contained",onClick:w,disabled:f||Object.values(e).every(e=>!e),startIcon:f?(0,n.jsx)(N.default,{size:20}):null,children:f?"Creating Backup...":"Create Backup"})]}),(0,n.jsxs)(p.A,{sx:{p:3},children:[(0,n.jsx)(s.default,{variant:"subtitle1",gutterBottom:!0,fontWeight:"bold",children:"Restore from Backup"}),(0,n.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Select a backup file and choose which components to restore."}),(0,n.jsxs)(a.default,{sx:{mb:3},children:[(0,n.jsxs)(y.A,{variant:"outlined",component:"label",sx:{mb:2},children:["Select Backup File",(0,n.jsx)("input",{type:"file",hidden:!0,accept:".zip",onChange:e=>{let t=e.target.files;t&&t.length>0&&(d(t[0]),m(null))},ref:c})]}),l&&(0,n.jsxs)(s.default,{variant:"body2",sx:{ml:1},children:["Selected file: ",l.name]})]}),(0,n.jsx)(C.A,{sx:{mb:2}}),(0,n.jsx)(s.default,{variant:"subtitle2",gutterBottom:!0,children:"Restore Options"}),(0,n.jsxs)(a.default,{sx:{mb:2},children:[(0,n.jsx)(y.A,{size:"small",onClick:()=>E(!0),sx:{mr:1},children:"Select All"}),(0,n.jsx)(y.A,{size:"small",onClick:()=>E(!1),children:"Deselect All"})]}),(0,n.jsx)(M.A,{sx:{mb:3},children:H.map(e=>(0,n.jsx)(A.A,{control:(0,n.jsx)(W.A,{checked:r[e.key],onChange:j,name:e.key}),label:(0,n.jsxs)(a.default,{children:[(0,n.jsx)(s.default,{variant:"body1",children:e.label}),(0,n.jsx)(s.default,{variant:"body2",color:"text.secondary",children:e.description})]})},e.key))}),(0,n.jsx)(y.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 m({type:"error",text:"Please select at least one item to restore"}):void b(!0):void m({type:"error",text:"Please select a backup file"}),disabled:f||!l||Object.values(r).every(e=>!e),startIcon:f?(0,n.jsx)(N.default,{size:20}):null,children:f?"Restoring...":"Restore from Backup"})]}),(0,n.jsxs)(B.A,{open:x,onClose:()=>b(!1),children:[(0,n.jsx)(L.A,{children:"Confirm Restore"}),(0,n.jsx)(U.A,{children:(0,n.jsx)(D.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,n.jsxs)(V.A,{children:[(0,n.jsx)(y.A,{onClick:()=>b(!1),children:"Cancel"}),(0,n.jsx)(y.A,{onClick:k,color:"warning",variant:"contained",children:"Restore"})]})]})]})}var Y=r(52641),_=r(84869);function K(){let{settings:e,updateSettings:t}=(0,w.useStorage)(),r=(0,_.G)(),o=(null==e?void 0:e.speech)||{enabled:!0};return(0,n.jsxs)(a.default,{sx:{p:2},children:[!r.supported&&(0,n.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,n.jsxs)(Y.A,{fullWidth:!0,sx:{mb:3},children:[(0,n.jsx)(A.A,{control:(0,n.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,n.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,n.jsxs)(p.A,{variant:"outlined",sx:{p:2,mb:3},children:[(0,n.jsx)(s.default,{variant:"subtitle2",gutterBottom:!0,children:"Speech Recognition Information"}),(0,n.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",mb:1},children:[(0,n.jsx)(s.default,{variant:"body2",children:"Technology:"}),(0,n.jsx)(s.default,{variant:"body2",children:"Web Speech API"})]}),(0,n.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",mb:1},children:[(0,n.jsx)(s.default,{variant:"body2",children:"Processing:"}),(0,n.jsx)(s.default,{variant:"body2",children:"Browser-based"})]}),(0,n.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",mb:1},children:[(0,n.jsx)(s.default,{variant:"body2",children:"Language:"}),(0,n.jsx)(s.default,{variant:"body2",children:"Automatically uses browser language"})]}),(0,n.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",mb:1},children:[(0,n.jsx)(s.default,{variant:"body2",children:"Privacy:"}),(0,n.jsx)(s.default,{variant:"body2",children:"Depends on browser implementation"})]})]}),(0,n.jsx)(u.A,{severity:"info",sx:{mt:3},children:(0,n.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,T.h)("frontend/components/Settings/SpeechRecognitionSettings");let q=(0,T.h)("frontend/components/Settings/UpdateSettings");function Z(){let{settings:e,updateSettings:t}=(0,w.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),[m,f]=(0,o.useState)(null),g=null===m||"git"===m,x=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){q.error("Update check failed",e),p({severity:"error",message:"Failed to check for updates."})}finally{l(!1)}},b=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){q.error("Update failed",e),p({severity:"error",message:"Update failed."}),c(!1)}};return(0,n.jsxs)(a.default,{sx:{p:2},children:[(0,n.jsxs)(Y.A,{fullWidth:!0,sx:{mb:2},children:[(0,n.jsx)(A.A,{control:(0,n.jsx)(S.A,{checked:r.checkOnStartup,onChange:n=>{t({...e,update:{...r,checkOnStartup:n.target.checked}})},name:"checkOnStartup"}),label:"Check for updates on startup"}),(0,n.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,n.jsx)("code",{children:"git pull"})," + rebuild in your install folder; your data is preserved."]}),!g&&(0,n.jsxs)(s.default,{variant:"body2",color:"text.secondary",sx:{mt:1},children:["This install can't update itself in place","container"===m?" (running in Docker) — pull a newer image instead.":"npm"===m?" (installed via npm) — rerun with the latest version instead.":" — it is not running from a git clone."]})]}),(0,n.jsxs)(a.default,{sx:{display:"flex",gap:2,mb:2},children:[(0,n.jsxs)(y.A,{variant:"outlined",onClick:x,disabled:i||d,children:[i?(0,n.jsx)(N.default,{size:20,sx:{mr:1}}):null,"Check now"]}),(0,n.jsxs)(y.A,{variant:"contained",onClick:b,disabled:d||!g,children:[d?(0,n.jsx)(N.default,{size:20,sx:{mr:1}}):null,"Update now"]})]}),h&&(0,n.jsx)(u.A,{severity:h.severity,sx:{mt:1},children:h.message})]})}var $=r(8907),X=r(69195);function Q(){let{startTour:e}=(0,X.useTour)();return(0,n.jsxs)(a.default,{sx:{p:2},children:[(0,n.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,n.jsx)(y.A,{variant:"outlined",startIcon:(0,n.jsx)($.A,{}),onClick:e,children:"Replay guided tour"})]})}var ee=r(80777),et=r(86973),er=r(62617),en=r(90363),ea=r(43076);let eo=["bug","ux","frontend","backend","github-integration","mcp","performance"];function es(e){return["### Environment\n```","App version: ".concat(e.appVersion),"Install mode: ".concat(e.installMode),"OS: ".concat(e.os),"Browser: ".concat(e.browser),"MCP servers: ".concat(e.mcpServerNames.length?e.mcpServerNames.join(", "):"(none)"),"Reported: ".concat(e.timestamp),"```"].join("\n")}async function ei(){let e="unknown",t="unknown",r=[];try{let r=await fetch("/api/update");if(r.ok){let n=await r.json();n&&"object"==typeof n&&(e="string"==typeof n.currentVersion?n.currentVersion:e,t="string"==typeof n.updateMode?n.updateMode:n.isGitRepo?"git":t)}}catch(e){}try{let e=await fetch("/api/mcp/servers");if(e.ok){let t=await e.json();if(Array.isArray(t))for(let e of t)e&&"string"==typeof e.name&&r.push(e.name)}}catch(e){}return function(){var e,t;let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=null!=(e=r.userAgent)?e:"";return{appVersion:(r.appVersion||"").trim()||"unknown",installMode:(r.installMode||"").trim()||"unknown",os:function(e){let t=(e||"").toLowerCase();return t.includes("windows")?"Windows":t.includes("mac os")||t.includes("macintosh")?"macOS":t.includes("android")?"Android":t.includes("iphone")||t.includes("ipad")||t.includes("ios")?"iOS":t.includes("linux")?"Linux":"unknown"}(n),browser:function(e){let t=e||"";return/edg\//i.test(t)?"Edge":/opr\/|opera/i.test(t)?"Opera":/firefox\//i.test(t)?"Firefox":/chrome\//i.test(t)&&!/edg\//i.test(t)?"Chrome":/safari\//i.test(t)&&!/chrome\//i.test(t)?"Safari":"unknown"}(n),mcpServerNames:Array.isArray(r.mcpServerNames)?r.mcpServerNames.filter(e=>"string"==typeof e&&e.length>0):[],timestamp:(null!=(t=r.now)?t:new Date).toISOString()}}({appVersion:e,installMode:t,mcpServerNames:r,userAgent:"undefined"!=typeof navigator?navigator.userAgent:""})}let el="\n\n_(Report truncated to fit GitHub URL limits — please paste any remaining logs/details manually.)_",ed=(0,T.h)("frontend/services/bugReport");class ec{async fetchWithErrorHandling(e,t){ed.debug("Making API request",{url:e,method:(null==t?void 0:t.method)||"GET"});let r=await fetch(e,t),n=null;if(204!==r.status){let e=r.headers.get("content-type");n=e&&e.includes("application/json")?await r.json():await r.text()}if(!r.ok){let t="object"==typeof n&&null!==n?n.error||n.message||JSON.stringify(n):n||"HTTP error! status: ".concat(r.status);throw ed.error("Request failed",{url:e,status:r.status,error:t}),Error(t)}return n}async enhance(e){return this.fetchWithErrorHandling("/api/bugs/enhance",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}}let eu=new ec,eh=(0,T.h)("frontend/components/Settings/BugReportSettings");function ep(){let[e,t]=(0,o.useState)(!1),[r,i]=(0,o.useState)(""),[l,d]=(0,o.useState)(""),[c,h]=(0,o.useState)(null),[p,f]=(0,o.useState)([]),[g,x]=(0,o.useState)(""),[b,v]=(0,o.useState)(["bug"]),[j,w]=(0,o.useState)(!1),[k,A]=(0,o.useState)(null),S=(0,o.useCallback)(async()=>{try{let e=await ei();h(e)}catch(e){eh.warn("Failed to collect bug-report context",e)}try{let e=await ea.N.loadModels();f(e),e.length>0&&x(t=>t||e[0].id)}catch(e){eh.warn("Failed to load models for bug-report enhancement",e)}},[]);(0,o.useEffect)(()=>{e&&S()},[e,S]);let E=(0,o.useMemo)(()=>c?es(c):"Collecting app context…",[c]),T=(0,o.useCallback)(async()=>{if(g&&c){w(!0),A(null);try{var e;let t=await eu.enhance({modelId:g,title:r,description:l,context:c});i(t.title),d(t.body),v((null==(e=t.labels)?void 0:e.length)?t.labels:["bug"]),A(t.enhanced?{severity:"success",text:"AI suggestion applied — review and edit before submitting."}:{severity:"warning",text:"AI enhancement was unavailable; your original text is unchanged."})}catch(e){eh.error("Bug-report enhancement failed",e),A({severity:"error",text:"Enhancement failed — you can still submit your report as-is."})}finally{w(!1)}}},[g,c,r,l]),R=(0,o.useCallback)(()=>{let e=c?"".concat(l.trim(),"\n\n").concat(es(c)):l.trim();!function(e,t){let r=function(e){let{title:t,body:r,labels:n=[]}=e,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mario-andreschak/FLUJO",o=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=new Set,r=[];for(let n of e)"string"==typeof n&&eo.includes(n)&&!t.has(n)&&(t.add(n),r.push(n));return r}(n),s="https://github.com/".concat(a,"/issues/new"),i=e=>{let r=new URLSearchParams;return t&&r.set("title",t),r.set("body",e),o.length&&r.set("labels",o.join(",")),"".concat(s,"?").concat(r.toString())},l=i(r);if(l.length<=8e3)return l;let d=r;for(l=i(d+el);l.length>8e3&&d.length>0;){let e=Math.max(16,Math.ceil(1.2*(l.length-8e3)));l=i((d=d.slice(0,Math.max(0,d.length-e)))+el)}return l}(e,void 0);window.open(r,"_blank","noopener,noreferrer")}({title:r.trim()||"Bug report",body:e,labels:b})},[r,l,c,b]),I=(0,o.useCallback)(()=>t(!1),[]);return(0,n.jsxs)(a.default,{sx:{maxWidth:700},children:[(0,n.jsx)(s.default,{variant:"h6",gutterBottom:!0,children:"Report a Bug"}),(0,n.jsxs)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:["Found a problem? Describe it here. FLUJO attaches only safe, non-sensitive context (app version, install mode, browser/OS, and the ",(0,n.jsx)("em",{children:"names"})," of your configured MCP servers). No API keys, environment variables, or secrets are ever included. You can optionally polish the report with an AI model, then review it on GitHub before submitting."]}),(0,n.jsx)(y.A,{variant:"contained",startIcon:(0,n.jsx)(er.A,{}),onClick:()=>t(!0),children:"Report a Bug"}),(0,n.jsxs)(B.A,{open:e,onClose:I,maxWidth:"md",fullWidth:!0,children:[(0,n.jsx)(L.A,{children:"Report a Bug"}),(0,n.jsx)(U.A,{dividers:!0,children:(0,n.jsxs)(ee.A,{spacing:2,children:[k&&(0,n.jsx)(u.A,{severity:k.severity,children:k.text}),(0,n.jsx)(m.A,{label:"Title",value:r,onChange:e=>i(e.target.value),fullWidth:!0,placeholder:"Short summary of the problem"}),(0,n.jsx)(m.A,{label:"Description",value:l,onChange:e=>d(e.target.value),fullWidth:!0,multiline:!0,minRows:6,placeholder:"What happened? What did you expect? Steps to reproduce?"}),(0,n.jsx)(C.A,{}),(0,n.jsxs)(a.default,{children:[(0,n.jsx)(s.default,{variant:"subtitle2",gutterBottom:!0,children:"Enhance with AI (optional)"}),0===p.length?(0,n.jsx)(s.default,{variant:"body2",color:"text.secondary",children:"No models configured — add a model in the Models page to enable AI enhancement. You can still file the report without it."}):(0,n.jsxs)(ee.A,{direction:{xs:"column",sm:"row"},spacing:2,alignItems:"center",children:[(0,n.jsx)(m.A,{select:!0,label:"Model",value:g,onChange:e=>x(e.target.value),sx:{minWidth:220},size:"small",children:p.map(e=>(0,n.jsx)(et.A,{value:e.id,children:e.displayName||e.name},e.id))}),(0,n.jsx)(y.A,{variant:"outlined",startIcon:j?(0,n.jsx)(N.default,{size:16}):(0,n.jsx)(en.A,{}),onClick:T,disabled:j||!g||!l.trim()||!c,children:j?"Enhancing…":"Enhance with AI"})]})]}),(0,n.jsx)(C.A,{}),(0,n.jsxs)(a.default,{children:[(0,n.jsx)(s.default,{variant:"subtitle2",gutterBottom:!0,children:"Included app context (read-only)"}),(0,n.jsx)(m.A,{value:E,fullWidth:!0,multiline:!0,minRows:4,InputProps:{readOnly:!0,sx:{fontFamily:"var(--font-geist-mono)",fontSize:12}}})]})]})}),(0,n.jsxs)(V.A,{children:[(0,n.jsx)(y.A,{onClick:I,children:"Cancel"}),(0,n.jsx)(y.A,{variant:"contained",onClick:R,disabled:!l.trim(),children:"Open on GitHub"})]})]})]})}function em(){let[e,t]=(0,o.useState)("globalEnv"),r=e=>(r,n)=>{t(!!n&&e)};return(0,n.jsxs)(a.default,{sx:{p:3},children:[(0,n.jsx)(s.default,{variant:"h5",gutterBottom:!0,children:"Settings"}),(0,n.jsxs)(a.default,{sx:{mt:2},children:[(0,n.jsxs)(i.A,{expanded:"globalEnv"===e,onChange:r("globalEnv"),children:[(0,n.jsx)(l.A,{expandIcon:(0,n.jsx)(c.A,{}),"aria-controls":"globalEnv-content",id:"globalEnv-header",children:(0,n.jsx)(s.default,{variant:"h6",children:"Global Environment Variables"})}),(0,n.jsx)(d.A,{children:(0,n.jsx)(F,{})})]}),(0,n.jsxs)(i.A,{expanded:"encryption"===e,onChange:r("encryption"),children:[(0,n.jsx)(l.A,{expandIcon:(0,n.jsx)(c.A,{}),"aria-controls":"encryption-content",id:"encryption-header",children:(0,n.jsx)(s.default,{variant:"h6",children:"Encryption"})}),(0,n.jsx)(d.A,{children:(0,n.jsx)(k,{})})]}),(0,n.jsxs)(i.A,{expanded:"theme"===e,onChange:r("theme"),children:[(0,n.jsx)(l.A,{expandIcon:(0,n.jsx)(c.A,{}),"aria-controls":"theme-content",id:"theme-header",children:(0,n.jsx)(s.default,{variant:"h6",children:"Theme"})}),(0,n.jsx)(d.A,{children:(0,n.jsx)(I,{})})]}),(0,n.jsxs)(i.A,{expanded:"backup"===e,onChange:r("backup"),children:[(0,n.jsx)(l.A,{expandIcon:(0,n.jsx)(c.A,{}),"aria-controls":"backup-content",id:"backup-header",children:(0,n.jsx)(s.default,{variant:"h6",children:"Backup & Restore"})}),(0,n.jsx)(d.A,{children:(0,n.jsx)(J,{})})]}),(0,n.jsxs)(i.A,{expanded:"speech"===e,onChange:r("speech"),children:[(0,n.jsx)(l.A,{expandIcon:(0,n.jsx)(c.A,{}),"aria-controls":"speech-content",id:"speech-header",children:(0,n.jsx)(s.default,{variant:"h6",children:"Speech Recognition"})}),(0,n.jsx)(d.A,{children:(0,n.jsx)(K,{})})]}),(0,n.jsxs)(i.A,{expanded:"updates"===e,onChange:r("updates"),children:[(0,n.jsx)(l.A,{expandIcon:(0,n.jsx)(c.A,{}),"aria-controls":"updates-content",id:"updates-header",children:(0,n.jsx)(s.default,{variant:"h6",children:"Updates"})}),(0,n.jsx)(d.A,{children:(0,n.jsx)(Z,{})})]}),(0,n.jsxs)(i.A,{expanded:"onboarding"===e,onChange:r("onboarding"),children:[(0,n.jsx)(l.A,{expandIcon:(0,n.jsx)(c.A,{}),"aria-controls":"onboarding-content",id:"onboarding-header",children:(0,n.jsx)(s.default,{variant:"h6",children:"Onboarding"})}),(0,n.jsx)(d.A,{children:(0,n.jsx)(Q,{})})]}),(0,n.jsxs)(i.A,{expanded:"bugReport"===e,onChange:r("bugReport"),children:[(0,n.jsx)(l.A,{expandIcon:(0,n.jsx)(c.A,{}),"aria-controls":"bugReport-content",id:"bugReport-header",children:(0,n.jsx)(s.default,{variant:"h6",children:"Report a Bug"})}),(0,n.jsx)(d.A,{children:(0,n.jsx)(ep,{})})]})]})]})}let ef=(0,T.h)("app/settings/page");function eg(){return ef.debug("Rendering SettingsPage"),(0,n.jsx)(a.default,{component:"main",sx:{minHeight:"100vh"},children:(0,n.jsx)(em,{})})}},69195:(e,t,r)=>{"use strict";r.r(t),r.d(t,{TourProvider:()=>c,useTour:()=>d});var n=r(95155),a=r(12115),o=r(9164),s=r(77326);let i=(0,r(87021).h)("frontend/contexts/TourContext"),l=(0,a.createContext)({isActive:!1,stepIndex:0,startTour:()=>{},next:()=>{},back:()=>{},endTour:()=>{}}),d=()=>(0,a.useContext)(l),c=e=>{var t;let{children:r}=e,{settings:d,updateSettings:c,isLoading:u,settingsHydrated:h}=(0,o.useStorage)(),[p,m]=(0,a.useState)(!1),[f,g]=(0,a.useState)(0),y=(0,a.useRef)(!1),x=(0,a.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]),b=(0,a.useCallback)(()=>{i.info("Starting guided tour"),g(0),m(!0)},[]),v=(0,a.useCallback)(()=>{i.info("Ending guided tour"),m(!1),x()},[x]),j=(0,a.useCallback)(()=>{g(e=>e>=s.$.length-1?(m(!1),x(),e):e+1)},[x]),w=(0,a.useCallback)(()=>{g(e=>Math.max(0,e-1))},[]);return(0,a.useEffect)(()=>{var e;u||!h||y.current||(y.current=!0,(null==(e=d.onboarding)?void 0:e.completed)!==!0&&(i.info("First run detected — auto-starting guided tour"),b()))},[u,h,null==(t=d.onboarding)?void 0:t.completed,b]),(0,n.jsx)(l.Provider,{value:{isActive:p,stepIndex:f,startTour:b,next:j,back:w,endTour:v},children:r})}},71892:(e,t,r)=>{"use strict";r.d(t,{A:()=>T});var n=r(95155),a=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),m=r(99944),f=r(22822),g=r(41983),y=r(56682),x=r(87021),b=r(9164),v=r(86946),j=r(21422),w=r(12857),k=r(48363),A=r(4484),S=r(1877),C=r(52397);let E=(0,x.h)("frontend/components/mcp/MCPEnvManager/EnvEditor"),T=e=>{let{serverName:t,initialEnv:r,onSave:x,onDelete:T,onServerRestart:R}=e,{globalEnvVars:I}=(0,b.useStorage)(),[O,P]=(0,a.useState)([]),[F,M]=(0,a.useState)(!1),[W,N]=(0,a.useState)(!1),[B,L]=(0,a.useState)(!1),[U,D]=(0,a.useState)(null);(0,a.useEffect)(()=>{E.debug("Initializing environment variables for server: ".concat(t),{variableCount:Object.keys(r).length}),P(Object.entries(r).map(e=>{let[t,r]=e,n="object"==typeof r&&null!==r&&"value"in r?r.value:r,a="object"==typeof r&&null!==r&&"metadata"in r?r.metadata:{isSecret:(0,S.xc)(t)},o=n.match(/\$\{global:([^}]+)\}/);if(o){let e=o[1];return{key:t,value:n,isSecret:a.isSecret,isBound:!0,boundTo:e}}let s="string"==typeof n&&(n.startsWith("encrypted:")||n.startsWith("encrypted_failed:"));return{key:t,value:s?C.gF:n,isSecret:a.isSecret,isEncrypted:s}}))},[r]);let V=async e=>{E.debug("Removing environment variable at index: ".concat(e));let r=O[e];if("Global"===t&&T&&r.key)try{await T(r.key),P(O.filter((t,r)=>r!==e))}catch(e){E.error("Failed to delete environment variable: ".concat(r.key),e)}else P(O.filter((t,r)=>r!==e)),M(!0)},z=(e,t,r)=>{let n=[...O];if("isSecret"===t){let t=n[e];t.isSecret&&!r?n[e]={...t,isSecret:r,value:"",isEncrypted:!1,showWarning:!0}:n[e]={...t,isSecret:r}}else{let a={...n[e],[t]:r,isSecret:"key"===t?(0,S.xc)(r):n[e].isSecret};"key"===t&&(a.isValidKey=""===r||/^[a-zA-Z0-9_]+$/.test(r)),"value"===t&&(n[e].isEncrypted&&(a.isEncrypted=!1),n[e].showWarning&&r&&(a.showWarning=!1)),n[e]=a}P(n),M(!0)},G=async()=>{if(O.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:O.length}),N(!0);try{let e=O.reduce((e,t)=>{let{key:r,value:n,isBound:a,boundTo:o,isSecret:s,isEncrypted:i}=t;return r&&(a&&o?e[r]={value:"${global:".concat(o,"}"),metadata:{isSecret:s}}:s&&n===C.gF||(e[r]={value:n,metadata:{isSecret:s}})),e},{});await x(e),M(!1),R&&"Global"!==t&&(E.debug("Restarting server after env variable changes: ".concat(t)),await R(t))}catch(e){E.error("Failed to save environment variables:",e)}N(!1)};return(0,n.jsxs)(o.A,{sx:{p:3,borderRadius:2,border:1,borderColor:e=>"dark"===e.palette.mode?"#3a3a3a":"#e5e7eb"},children:[(0,n.jsxs)(s.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:3},children:[(0,n.jsxs)(i.default,{variant:"h6",sx:{fontWeight:"semibold"},children:["Environment Variables - ",t]}),(0,n.jsx)(l.A,{variant:"contained",color:"primary",size:"small",startIcon:(0,n.jsx)(v.A,{}),onClick:()=>{E.debug("Adding new environment variable"),P([...O,{key:"",value:"",isSecret:!1}]),M(!0)},children:"Add Variable"})]}),(0,n.jsx)(d.A,{spacing:3,children:O.map((e,t)=>(0,n.jsxs)(c.Ay,{container:!0,spacing:2,alignItems:"flex-start",children:[(0,n.jsx)(c.Ay,{item:!0,xs:12,sm:5,children:(0,n.jsx)(u.A,{fullWidth:!0,placeholder:"Variable name",value:e.key,onChange:e=>z(t,"key",e.target.value),error:!1===e.isValidKey,helperText:!1===e.isValidKey?"Only alphanumeric characters and underscores allowed":"",size:"small"})}),(0,n.jsx)(c.Ay,{item:!0,xs:12,sm:5,children:(0,n.jsx)(u.A,{fullWidth:!0,type:e.isSecret?"password":"text",placeholder:e.showWarning?"Re-enter value":"Value",value:e.value,onChange:e=>z(t,"value",e.target.value),InputProps:{readOnly:e.isBound,startAdornment:e.isEncrypted?(0,n.jsx)(h.A,{position:"start",children:(0,n.jsx)(j.A,{fontSize:"small",titleAccess:"This value is stored encrypted"})}):null,endAdornment:e.isBound?(0,n.jsx)(h.A,{position:"end",children:(0,n.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=[...O];t[e]={...t[e],isBound:!1,boundTo:void 0},P(t),M(!0)})(t),deleteIcon:(0,n.jsx)(w.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,n.jsx)(c.Ay,{item:!0,xs:12,sm:2,children:(0,n.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",mt:.5},children:[(0,n.jsx)(m.A,{control:(0,n.jsx)(f.A,{checked:e.isSecret,onChange:e=>z(t,"isSecret",e.target.checked),size:"small"}),label:"Secret",sx:{mr:1}}),!e.isBound&&(0,n.jsx)(g.A,{size:"small",color:"primary",onClick:()=>(e=>{E.debug("Opening bind modal for variable at index: ".concat(e)),D(e),L(!0)})(t),title:"Bind to global variable",sx:{mr:1},children:(0,n.jsx)(k.A,{fontSize:"small"})}),(0,n.jsx)(g.A,{size:"small",color:"error",onClick:()=>V(t),title:"Remove variable",children:(0,n.jsx)(A.A,{fontSize:"small"})})]})})]},t))}),(0,n.jsx)(y.A,{open:B,onClose:()=>{L(!1),D(null)},children:(0,n.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,n.jsx)(i.default,{variant:"h6",sx:{mb:2},children:"Bind to Global Variable"}),0===Object.keys(I).length?(0,n.jsx)(i.default,{color:"text.secondary",sx:{mb:2},children:"No global variables available. Add some in Settings first."}):(0,n.jsx)(s.default,{sx:{maxHeight:300,overflow:"auto",mb:2},children:Object.entries(I).map(e=>{let[t,r]=e;return(0,n.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=[...O];t[U]={...t[U],isBound:!0,boundTo:e,value:"${global:".concat(e,"}")},P(t),L(!1),D(null),M(!0)}})(t),sx:{justifyContent:"space-between",textAlign:"left",mb:1,p:1,borderRadius:1},children:[(0,n.jsx)(i.default,{variant:"body2",children:t}),(0,n.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,n.jsx)(s.default,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,n.jsx)(l.A,{variant:"outlined",onClick:()=>{L(!1),D(null)},children:"Cancel"})})]})}),F&&(0,n.jsx)(s.default,{sx:{display:"flex",justifyContent:"flex-end",mt:3},children:(0,n.jsx)(l.A,{variant:"contained",color:"success",onClick:G,disabled:W||O.some(e=>""!==e.key&&!1===e.isValidKey),children:W?"Saving...":"Save Changes"})})]})}},77326:(e,t,r)=>{"use strict";r.d(t,{$:()=>n});let n=[{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 n=(0,r(87021).h)("frontend/services/transcription/webSpeech"),a=()=>"webkitSpeechRecognition"in window||"SpeechRecognition"in window;async function o(e,t){if(!a())throw Error("Web Speech API is not supported in this browser");n.debug("Starting Web Speech API transcription");try{let r=URL.createObjectURL(e),a=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 n=e.results[t][0].transcript;e.results[t].isFinal?s+=n+" ":r+=n}(null==t?void 0:t.onInterimResult)&&t.onInterimResult(s+r),n.debug("Recognition interim result",{finalLength:s.length,interimLength:r.length})},o.onend=()=>{n.debug("Recognition ended",{transcriptLength:s.length}),e(s.trim())},o.onerror=e=>{n.error("Recognition error",{error:e.error}),r(Error("Speech recognition error: ".concat(e.error)))},a.onplay=()=>{o.start(),n.debug("Recognition started")},a.onended=()=>{o.stop(),n.debug("Audio playback ended")},a.onerror=e=>{n.error("Audio playback error",{error:e}),o.stop(),r(Error("Error playing audio"))},a.play().catch(e=>{n.error("Error starting audio playback",{error:e}),r(e)})})}catch(e){throw n.error("Error in Web Speech API transcription",{error:e}),e}}function s(){return{supported:a(),message:a()?"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 n={LOG_LEVEL:3},a={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},o="number"==typeof n.LOG_LEVEL?n.LOG_LEVEL:a.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 n of Object.getOwnPropertyNames(e)){if("name"===n||"message"===n)continue;let a=e[n];"function"!=typeof a&&("stack"===n?r.stack=a:"cause"===n?r.cause=s(a,t+1):"errors"===n&&Array.isArray(a)?r.errors=a.map(e=>s(e,t+1)):r[n]=a)}return r}function i(e,t,r,n,i){if(e>=("number"==typeof i?i:o)){if("function"==typeof n)try{n=n()}catch(e){n="[lazy log data threw]"}let o=new Date().toISOString(),i="[".concat(o,"] [").concat(t,"]"),l="".concat(i," ").concat(r);if(void 0!==n)if(n instanceof Error||"object"==typeof n)try{let e=n instanceof Error?s(n):n,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(n);switch(e){case a.VERBOSE:console.debug("[VERBOSE] ".concat(l));break;case a.DEBUG:console.debug(l);break;case a.INFO:console.info(l);break;case a.WARN:console.warn(l);break;case a.ERROR:console.error(l);break;default:console.log(l)}}}function l(e,t){let r,n=((r=e.replace(/^src\//,"")).startsWith("/")&&(r=r.substring(1)),r);return{verbose:(e,r)=>{i(a.VERBOSE,n,e,r,t)},debug:(e,r)=>{i(a.DEBUG,n,e,r,t)},info:(e,r)=>{i(a.INFO,n,e,r,t)},warn:(e,r)=>{i(a.WARN,n,e,r,t)},error:(e,r)=>{i(a.ERROR,n,e,r,t)}}}}},e=>{e.O(0,[2678,4754,9244,8548,1983,1871,2003,5501,488,3272,3077,8598,9659,2403,9554,6288,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,26756))},8301:()=>{},26756:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>N});var o=n(95155),r=n(94049),l=n(12115),i=n(4474),a=n(25635),s=n(28548),c=n(22003),u=n(80777),d=n(2300),f=n(21067);let h=(0,n(36697).A)((0,o.jsx)("path",{d:"M17 16.99c-1.35 0-2.2.42-2.95.8-.65.33-1.18.6-2.05.6-.9 0-1.4-.25-2.05-.6-.75-.38-1.57-.8-2.95-.8s-2.2.42-2.95.8c-.65.33-1.17.6-2.05.6v1.95c1.35 0 2.2-.42 2.95-.8.65-.33 1.17-.6 2.05-.6s1.4.25 2.05.6c.75.38 1.57.8 2.95.8s2.2-.42 2.95-.8c.65-.33 1.18-.6 2.05-.6.9 0 1.4.25 2.05.6.75.38 1.58.8 2.95.8v-1.95c-.9 0-1.4-.25-2.05-.6-.75-.38-1.6-.8-2.95-.8m0-4.45c-1.35 0-2.2.43-2.95.8-.65.32-1.18.6-2.05.6-.9 0-1.4-.25-2.05-.6-.75-.38-1.57-.8-2.95-.8s-2.2.43-2.95.8c-.65.32-1.17.6-2.05.6v1.95c1.35 0 2.2-.43 2.95-.8.65-.35 1.15-.6 2.05-.6s1.4.25 2.05.6c.75.38 1.57.8 2.95.8s2.2-.43 2.95-.8c.65-.35 1.15-.6 2.05-.6s1.4.25 2.05.6c.75.38 1.58.8 2.95.8v-1.95c-.9 0-1.4-.25-2.05-.6-.75-.38-1.6-.8-2.95-.8m2.95-8.08c-.75-.38-1.58-.8-2.95-.8s-2.2.42-2.95.8c-.65.32-1.18.6-2.05.6-.9 0-1.4-.25-2.05-.6-.75-.37-1.57-.8-2.95-.8s-2.2.42-2.95.8c-.65.33-1.17.6-2.05.6v1.93c1.35 0 2.2-.43 2.95-.8.65-.33 1.17-.6 2.05-.6s1.4.25 2.05.6c.75.38 1.57.8 2.95.8s2.2-.43 2.95-.8c.65-.32 1.18-.6 2.05-.6.9 0 1.4.25 2.05.6.75.38 1.58.8 2.95.8V5.04c-.9 0-1.4-.25-2.05-.58M17 8.09c-1.35 0-2.2.43-2.95.8-.65.35-1.15.6-2.05.6s-1.4-.25-2.05-.6c-.75-.38-1.57-.8-2.95-.8s-2.2.43-2.95.8c-.65.35-1.15.6-2.05.6v1.95c1.35 0 2.2-.43 2.95-.8.65-.32 1.18-.6 2.05-.6s1.4.25 2.05.6c.75.38 1.57.8 2.95.8s2.2-.43 2.95-.8c.65-.32 1.18-.6 2.05-.6.9 0 1.4.25 2.05.6.75.38 1.58.8 2.95.8V9.49c-.9 0-1.4-.25-2.05-.6-.75-.38-1.6-.8-2.95-.8"}),"Waves");var x=n(87021);let g=(0,x.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 g.warn("Failed to list waves",e),{paused:!1,generatedAt:new Date().toISOString(),waves:[],orphans:[]}}}}let m=new p;var v=n(76122),b=n(22539);n(8301);let w={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 y=n(55930);function I(e){let{subflows:t,depth:n=0}=e;return t&&0!==t.length?(0,o.jsx)(r.default,{sx:{pl:1.5*(0!==n),mt:.25},children:t.map((e,t)=>{var l;return(0,o.jsxs)(r.default,{sx:{borderLeft:n>0?"1px dashed rgba(0,0,0,0.2)":"none",pl:+(n>0)},children:[(0,o.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,o.jsx)(y.A,{sx:{fontSize:12,opacity:.6}}),(0,o.jsxs)(a.default,{variant:"caption",sx:{opacity:e.missing?.6:.85,fontStyle:e.missing?"italic":"normal"},children:[null!=(l=e.flowName)?l:e.flowId,e.missing?" (missing)":"",e.truncated?" …":""]})]}),e.children.length>0&&(0,o.jsx)(I,{subflows:e.children,depth:n+1})]},"".concat(e.flowId,"-").concat(t))})}):null}let j={trigger:function(e){var t,n,l,i,c;let{data:u}=e,{chainNode:d,now:f}=u,h=null!=(c=w[i=d.triggerKind])?c:{label:i,color:"#616161",timeline:!1},x="";return"timeline"===d.timing.mode?x=function(e,t){if(!e)return"no scheduled run";let n=new Date(e).getTime()-t;if(Number.isNaN(n))return"no scheduled run";if(n<=0)return"due now";let o=Math.floor(n/6e4),r=Math.floor(o/1440),l=Math.floor(o%1440/60);if(r>0)return"".concat(r,"d ").concat(l,"h until next run");let i=String(l).padStart(2,"0"),a=String(o%60).padStart(2,"0");return"".concat(i,":").concat(a," until next run")}(d.timing.nextRun,f):"fixed"===d.timing.mode?x="fires when it happens":"event"===d.timing.mode&&(x="signal"===d.timing.via?'on signal "'.concat(null!=(t=d.timing.topic)?t:"",'"'):"on upstream completion"),(0,o.jsxs)(r.default,{sx:{minWidth:220,maxWidth:260,borderRadius:1,border:"1px solid rgba(0,0,0,0.15)",borderTop:"4px solid ".concat(h.color),bgcolor:"background.paper",boxShadow:2,p:1,opacity:d.enabled?1:.55},children:[(0,o.jsx)(b.h7,{type:"target",position:v.yX.Left,style:{background:h.color}}),(0,o.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:.5},children:[(0,o.jsx)(s.A,{label:h.label,size:"small",sx:{bgcolor:h.color,color:"#fff",height:18,fontSize:10}}),d.isRoot&&(0,o.jsx)(a.default,{variant:"caption",sx:{opacity:.6},children:"root"})]}),(0,o.jsx)(a.default,{variant:"subtitle2",sx:{mt:.5,fontWeight:600,lineHeight:1.2},noWrap:!0,title:d.name,children:d.name}),(0,o.jsx)(a.default,{variant:"caption",sx:{display:"block",opacity:.75},noWrap:!0,title:null!=(n=d.flowName)?n:d.flowId,children:null!=(l=d.flowName)?l:d.flowId}),(0,o.jsx)(a.default,{variant:"caption",sx:{display:"block",mt:.25,color:h.color,fontWeight:500},children:x}),(0,o.jsx)(I,{subflows:d.subflows}),(0,o.jsx)(b.h7,{type:"source",position:v.yX.Right,style:{background:h.color}})]})}};function E(e){let{wave:t,height:n=360}=e,[i,a]=(0,l.useState)(()=>Date.now());(0,l.useEffect)(()=>{if(!t.nodes.some(e=>"timeline"===e.timing.mode))return;let e=setInterval(()=>a(Date.now()),1e3);return()=>clearInterval(e)},[t]);let s=(0,l.useMemo)(()=>(function(e){var t,n,o;let r=new Map;for(let t of e.nodes)r.set(t.executionId,t);let l=new Map,i=new Map;for(let t of e.nodes)l.set(t.executionId,[]),i.set(t.executionId,[]);for(let t of e.edges)r.has(t.fromExecutionId)&&r.has(t.toExecutionId)&&(l.get(t.toExecutionId).push(t.fromExecutionId),i.get(t.fromExecutionId).push(t.toExecutionId));let a=e.nodes.filter(e=>{var t,n;return(null!=(n=null==(t=l.get(e.executionId))?void 0:t.length)?n:0)===0}).map(e=>e.executionId).sort(),s=a.length>0?a:e.rootExecutionIds,c=new Map,u=new Map;for(let e of s)c.set(e,0),u.set(e,e);let d=e.nodes.length+1;for(let o=0;o<d;o++){let o=!1;for(let r of e.edges){let e=c.get(r.fromExecutionId);if(void 0===e)continue;let l=e+1,i=c.get(r.toExecutionId);(void 0===i||l>i)&&(c.set(r.toExecutionId,l),u.set(r.toExecutionId,null!=(n=null!=(t=u.get(r.fromExecutionId))?t:s[0])?n:r.fromExecutionId),o=!0)}if(!o)break}for(let t of e.nodes)c.has(t.executionId)||(c.set(t.executionId,0),u.set(t.executionId,t.executionId));let f=new Map;for(let t of e.nodes){let e=null!=(o=c.get(t.executionId))?o:0;f.has(e)||f.set(e,[]),f.get(e).push(t.executionId)}let h=new Map;for(let[,e]of f)e.sort(),e.forEach((e,t)=>h.set(e,t));return{nodes:e.nodes.map(e=>{var t,n,o;return{chainNode:e,column:null!=(t=c.get(e.executionId))?t:0,row:null!=(n=h.get(e.executionId))?n:0,rootExecutionId:null!=(o=u.get(e.executionId))?o:e.executionId}})}})(t),[t]),c=(0,l.useMemo)(()=>{let e=new Map;for(let n of t.nodes)e.set(n.executionId,n);return e},[t]),u=(0,l.useMemo)(()=>s.nodes.map(e=>{let t=c.get(e.rootExecutionId),n=t&&"timeline"===t.timing.mode?function(e,t){if(!e)return 0;let n=new Date(e).getTime()-t;return Number.isNaN(n)||n<=0?0:Math.round(260*Math.min(1,n/216e5))}(t.timing.nextRun,i):0;return{id:e.chainNode.executionId,type:"trigger",position:{x:40+300*e.column+n,y:40+170*e.row},data:{chainNode:e.chainNode,now:i},draggable:!1,connectable:!1}}),[s,c,i]),d=(0,l.useMemo)(()=>t.edges.map(e=>{var t,n;let o="signal"===e.via?"signal: ".concat(null!=(t=e.topic)?t:""):e.on&&e.on.length>0?e.on.join(" / "):"on completion";return{id:"".concat(e.fromExecutionId,"->").concat(e.toExecutionId,"-").concat(e.via,"-").concat(null!=(n=e.topic)?n:""),source:e.fromExecutionId,target:e.toExecutionId,label:o,animated:!0,markerEnd:{type:v.TG.ArrowClosed},style:{stroke:"signal"===e.via?"#7b1fa2":"#616161"}}}),[t]);return(0,o.jsx)(r.default,{sx:{height:n,width:"100%",border:"1px solid rgba(0,0,0,0.1)",borderRadius:1},children:(0,o.jsxs)(b.Gc,{nodes:u,edges:d,nodeTypes:j,fitView:!0,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,proOptions:{hideAttribution:!0},children:[(0,o.jsx)(b.VS,{}),(0,o.jsx)(b.H2,{showInteractive:!1})]})})}function k(e){return(0,o.jsx)(b.Ln,{children:(0,o.jsx)(E,{...e})})}let R=(0,x.h)("frontend/components/Waves");function A(){var e,t;let[n,x]=(0,l.useState)(null),[g,p]=(0,l.useState)(!0),v=(0,l.useCallback)(async()=>{x(await m.list()),p(!1)},[]);if((0,l.useEffect)(()=>{v().catch(e=>{R.warn("Initial waves load failed",e),p(!1)});let e=setInterval(()=>{v().catch(e=>R.warn("Waves refresh failed",e))},3e4);return()=>clearInterval(e)},[v]),g)return(0,o.jsx)(r.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,o.jsx)(i.default,{})});let b=null!=(e=null==n?void 0:n.waves)?e:[],w=null!=(t=null==n?void 0:n.orphans)?t:[];return(0,o.jsxs)(r.default,{sx:{p:3,height:"100%",overflow:"auto"},children:[(0,o.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:1},children:[(0,o.jsx)(h,{color:"primary"}),(0,o.jsx)(a.default,{variant:"h5",sx:{fontWeight:600},children:"Waves"}),(null==n?void 0:n.paused)&&(0,o.jsx)(s.A,{label:"Scheduler paused",color:"warning",size:"small"})]}),(0,o.jsx)(a.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. Nothing here arms or fires anything."}),0===b.length&&0===w.length&&(0,o.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,o.jsx)(u.A,{spacing:3,children:b.map(e=>{let t=e.nodes.filter(t=>e.rootExecutionIds.includes(t.executionId)).map(e=>e.name);return(0,o.jsxs)(d.A,{variant:"outlined",sx:{p:1.5},children:[(0,o.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:1},children:[(0,o.jsx)(a.default,{variant:"subtitle1",sx:{fontWeight:600},children:t.length>0?t.join(", "):"Wave"}),(0,o.jsx)(s.A,{label:"".concat(e.nodes.length," execution(s)"),size:"small",variant:"outlined"}),e.hasCycle&&(0,o.jsx)(s.A,{label:"recursive",color:"warning",size:"small"})]}),(0,o.jsx)(k,{wave:e})]},e.id)})}),w.length>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(f.A,{sx:{my:3}}),(0,o.jsx)(a.default,{variant:"subtitle1",sx:{fontWeight:600,mb:1},children:"Unlinked event triggers"}),(0,o.jsx)(a.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,o.jsx)(u.A,{direction:"row",spacing:1,flexWrap:"wrap",useFlexGap:!0,children:w.map(e=>{var t;return(0,o.jsx)(s.A,{label:"".concat(e.name," → ").concat(null!=(t=e.flowName)?t:e.flowId),size:"small"},e.executionId)})})]})]})}let S=(0,x.h)("app/waves/page");function N(){return S.debug("Rendering WavesPage"),(0,o.jsx)(r.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:(0,o.jsx)(A,{})})}},80777:(e,t,n)=>{"use strict";n.d(t,{A:()=>y});var o=n(12115),r=n(2821),l=n(46779),i=n(95195),a=n(57001),s=n(78831),c=n(11947),u=n(33065),d=n(41934),f=n(13419),h=n(36473),x=n(95155);let g=(0,d.A)(),p=(0,s.A)("div",{name:"MuiStack",slot:"Root",overridesResolver:(e,t)=>t.root});function m(e){return(0,c.A)({props:e,name:"MuiStack",defaultTheme:g})}let v=e=>{let{ownerState:t,theme:n}=e,o={display:"flex",flexDirection:"column",...(0,f.NI)({theme:n},(0,f.kW)({values:t.direction,breakpoints:n.breakpoints.values}),e=>({flexDirection:e}))};if(t.spacing){let e=(0,h.LX)(n),r=Object.keys(n.breakpoints.values).reduce((e,n)=>(("object"==typeof t.spacing&&null!=t.spacing[n]||"object"==typeof t.direction&&null!=t.direction[n])&&(e[n]=!0),e),{}),i=(0,f.kW)({values:t.direction,base:r}),a=(0,f.kW)({values:t.spacing,base:r});"object"==typeof i&&Object.keys(i).forEach((e,t,n)=>{if(!i[e]){let o=t>0?i[n[t-1]]:"column";i[e]=o}}),o=(0,l.A)(o,(0,f.NI)({theme:n},a,(n,o)=>t.useFlexGap?{gap:(0,h._W)(e,n)}:{"& > :not(style):not(style)":{margin:0},"& > :not(style) ~ :not(style)":{["margin".concat({row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[o?i[o]:t.direction])]:(0,h._W)(e,n)}}))}return(0,f.iZ)(n.breakpoints,o)};var b=n(48116),w=n(16625);let y=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{createStyledComponent:t=p,useThemeProps:n=m,componentName:l="MuiStack"}=e,s=t(v);return o.forwardRef(function(e,t){let c=n(e),{component:d="div",direction:f="column",spacing:h=0,divider:g,children:p,className:m,useFlexGap:v=!1,...b}=(0,u.A)(c),w=(0,a.A)({root:["root"]},e=>(0,i.Ay)(l,e),{});return(0,x.jsx)(s,{as:d,ownerState:{direction:f,spacing:h,useFlexGap:v},ref:t,className:(0,r.A)(w.root,m),...b,children:g?function(e,t){let n=o.Children.toArray(e).filter(Boolean);return n.reduce((e,r,l)=>(e.push(r),l<n.length-1&&e.push(o.cloneElement(t,{key:"separator-".concat(l)})),e),[])}(p,g):p})})}({createStyledComponent:(0,b.Ay)("div",{name:"MuiStack",slot:"Root",overridesResolver:(e,t)=>t.root}),useThemeProps:e=>(0,w.b)({props:e,name:"MuiStack"})})},87021:(e,t,n)=>{"use strict";n.d(t,{h:()=>s});let o={LOG_LEVEL:3},r={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},l="number"==typeof o.LOG_LEVEL?o.LOG_LEVEL:r.ERROR;function i(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 o of Object.getOwnPropertyNames(e)){if("name"===o||"message"===o)continue;let r=e[o];"function"!=typeof r&&("stack"===o?n.stack=r:"cause"===o?n.cause=i(r,t+1):"errors"===o&&Array.isArray(r)?n.errors=r.map(e=>i(e,t+1)):n[o]=r)}return n}function a(e,t,n,o,a){if(e>=("number"==typeof a?a:l)){if("function"==typeof o)try{o=o()}catch(e){o="[lazy log data threw]"}let l=new Date().toISOString(),a="[".concat(l,"] [").concat(t,"]"),s="".concat(a," ").concat(n);if(void 0!==o)if(o instanceof Error||"object"==typeof o)try{let e=o instanceof Error?i(o):o,t=JSON.stringify(e,(e,t)=>t instanceof Error?i(t):t,2);s+=":\n".concat(t)}catch(e){s+=": [Object cannot be stringified]"}else s+=": ".concat(o);switch(e){case r.VERBOSE:console.debug("[VERBOSE] ".concat(s));break;case r.DEBUG:console.debug(s);break;case r.INFO:console.info(s);break;case r.WARN:console.warn(s);break;case r.ERROR:console.error(s);break;default:console.log(s)}}}function s(e,t){let n,o=((n=e.replace(/^src\//,"")).startsWith("/")&&(n=n.substring(1)),n);return{verbose:(e,n)=>{a(r.VERBOSE,o,e,n,t)},debug:(e,n)=>{a(r.DEBUG,o,e,n,t)},info:(e,n)=>{a(r.INFO,o,e,n,t)},warn:(e,n)=>{a(r.WARN,o,e,n,t)},error:(e,n)=>{a(r.ERROR,o,e,n,t)}}}}},e=>{e.O(0,[6714,3862,2678,4754,9244,8548,1983,2003,488,8480,8441,1255,7358],()=>e(e.s=7720)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(()=>{"use strict";var e={},t={};function r(a){var o=t[a];if(void 0!==o)return o.exports;var n=t[a]={exports:{}},c=!0;try{e[a].call(n.exports,n,n.exports,r),c=!1}finally{c&&delete t[a]}return n.exports}r.m=e,(()=>{var e=[];r.O=(t,a,o,n)=>{if(a){n=n||0;for(var c=e.length;c>0&&e[c-1][2]>n;c--)e[c]=e[c-1];e[c]=[a,o,n];return}for(var i=1/0,c=0;c<e.length;c++){for(var[a,o,n]=e[c],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(c--,1);var u=o();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,o){if(1&o&&(a=this(a)),8&o||"object"==typeof a&&a&&(4&o&&a.__esModule||16&o&&"function"==typeof a.then))return a;var n=Object.create(null);r.r(n);var c={};e=e||[null,t({}),t([]),t(t)];for(var i=2&o&&a;"object"==typeof i&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach(e=>c[e]=()=>a[e]);return c.default=()=>a,r.d(n,c),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":7583===e?"static/chunks/7583.7af90b94e3c263f2.js":6016===e?"static/chunks/6016.8201fa15ab6aa90e.js":3217===e?"static/chunks/3217.058098140ec3f563.js":9195===e?"static/chunks/9195.294887f083b1a11b.js":8083===e?"static/chunks/8083.16fda2c7f6d10d0c.js":3545===e?"static/chunks/3545.353a62a68d3b7fd1.js":8198===e?"static/chunks/8198.cd0d3f8429c02862.js":"static/chunks/"+e+"-"+({1871:"dd8c10ed9d37100b",1983:"242862b3dc022a26",2003:"460f30484998c05d",2005:"f9d38c39f10c321f",2619:"04bc32f026a0d946",2678:"c88052addfb0478a",3272:"fd8d59523f61da96",4754:"5c62bb61142f82d1",5501:"f5b093c8dfd74196",8548:"8e4a95334064e8b2",8598:"1b627b3d682b364a",9164:"d9f1abba780231e0",9244:"3281f7fd02003a2c"})[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,o,n,c)=>{if(e[a])return void e[a].push(o);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]=[o];var l=(t,r)=>{i.onerror=i.onload=null,clearTimeout(b);var o=e[a];if(delete e[a],i.parentNode&&i.parentNode.removeChild(i),o&&o.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 o=r.o(e,t)?e[t]:void 0;if(0!==o)if(o)a.push(o[2]);else if(/^((113|568|631)7|2978|6714)$/.test(t))e[t]=0;else{var n=new Promise((r,a)=>o=e[t]=[r,a]);a.push(o[2]=n);var c=r.p+r.u(t),i=Error();r.l(c,a=>{if(r.o(e,t)&&(0!==(o=e[t])&&(e[t]=void 0),o)){var n=a&&("load"===a.type?"missing":a.type),c=a&&a.target&&a.target.src;i.message="Loading chunk "+t+" failed.\n("+n+": "+c+")",i.name="ChunkLoadError",i.type=n,i.request=c,o[1](i)}},"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,a)=>{var o,n,[c,i,s]=a,d=0;if(c.some(t=>0!==e[t])){for(o in i)r.o(i,o)&&(r.m[o]=i[o]);if(s)var u=s(r)}for(t&&t(a);d<c.length;d++)n=c[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))})()})();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
:root{--background:#FFFFFF;--foreground:#2C3E50;--paper-background:#F5F6FA;--text-secondary:#7F8C8D}:root.dark-theme{--background:#1a1a1a;--foreground:#f0f0f0;--paper-background:#2a2a2a;--text-secondary:#aaaaaa}body{color:var(--foreground);background:var(--background);font-family:Arial,Helvetica,sans-serif;margin:0;padding:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST=function(e,r,t,_){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:53,errorRate:1e-4,numBits:1017,numHashes:14,bitArray:[1,0,1,0,e,r,r,e,r,e,r,r,e,r,r,e,r,r,r,r,r,e,r,e,e,r,e,e,r,e,e,r,e,r,e,r,e,r,e,e,r,r,e,e,e,e,e,r,e,r,e,r,e,r,r,r,r,e,e,e,e,e,e,e,r,e,e,r,e,e,e,e,e,e,r,e,r,r,r,e,e,r,e,e,r,e,r,e,e,r,e,e,e,e,e,e,r,e,e,r,r,e,r,e,r,r,e,e,e,r,r,r,r,e,e,e,e,e,r,e,e,e,e,r,r,r,e,e,r,e,e,e,r,e,e,e,r,e,r,r,e,e,r,e,e,e,r,r,r,r,e,e,r,e,r,e,e,e,r,e,r,r,e,e,r,e,e,e,r,r,e,r,r,r,r,e,e,r,r,e,e,r,e,e,r,r,r,r,r,r,e,r,r,r,r,r,r,r,e,r,r,r,r,e,r,r,r,e,r,r,e,e,e,r,e,r,r,e,r,r,e,e,e,e,e,e,e,r,r,e,r,e,e,e,r,e,e,r,r,e,e,e,r,r,e,e,e,r,e,r,r,r,e,e,r,e,e,e,r,r,r,r,r,r,e,e,e,r,r,e,e,r,e,e,e,e,r,e,r,r,e,e,r,r,r,r,r,r,r,r,e,e,r,e,r,e,r,e,r,e,e,r,e,e,e,e,r,r,e,r,e,e,e,r,r,e,e,r,r,e,e,e,e,e,e,e,e,r,r,e,e,r,r,e,e,e,r,r,e,e,r,e,r,r,r,r,e,r,e,r,r,e,r,r,e,r,r,r,e,e,e,r,r,r,e,r,r,e,r,r,e,e,r,e,r,e,e,r,r,r,e,e,r,r,e,r,e,r,e,e,r,r,r,e,r,r,r,r,e,e,r,e,e,e,e,e,r,e,e,e,e,r,r,r,e,e,e,e,e,r,e,e,r,e,e,e,e,e,r,e,e,e,e,e,e,r,r,r,e,e,e,r,e,r,e,r,e,r,e,r,e,e,r,e,e,e,e,r,r,r,e,r,e,r,r,r,r,r,e,e,e,e,r,r,r,r,e,e,e,r,r,r,e,r,e,r,e,e,r,r,r,e,r,e,e,r,r,e,e,r,e,r,e,r,e,r,e,e,r,e,e,e,e,r,r,r,e,e,e,e,r,r,e,e,r,r,r,r,e,e,e,r,e,e,e,r,e,e,r,r,r,e,r,r,e,e,r,e,r,r,r,e,e,e,r,r,e,e,r,e,r,e,e,e,e,r,e,r,e,r,e,r,e,r,e,r,r,r,e,r,e,r,e,e,e,r,r,e,e,e,r,e,e,e,e,e,r,r,e,e,r,e,e,r,e,r,r,e,e,e,e,r,r,e,r,e,r,e,e,e,e,e,r,r,r,r,e,r,e,r,r,e,r,e,e,r,e,r,e,e,e,e,e,r,r,r,r,r,r,r,r,r,r,r,r,e,r,e,r,e,e,r,r,r,e,e,e,e,r,e,e,e,e,e,r,e,r,r,e,e,r,e,e,r,r,e,e,r,r,r,e,e,e,e,e,r,e,e,e,r,e,e,r,r,e,e,r,e,r,e,e,e,e,e,e,e,r,e,e,r,r,e,e,r,r,r,e,r,r,e,r,r,e,e,e,e,r,r,e,e,r,e,r,e,e,e,r,r,r,r,e,r,e,r,r,e,e,e,e,r,r,r,r,e,e,r,e,e,e,r,e,r,e,r,e,e,r,r,r,r,r,r,r,e,e,r,e,e,r,r,r,r,r,r,r,e,e,r,r,e,e,e,e,r,e,e,e,e,r,r,e,r,r,e,e,e,e,r,r,e,e,r,r,r,e,r,e,e,r,r,e,r,r,e,r,r,r,e,r,e,r,e,r,r,e,e,e,r,r,e,r,e,e,e,r,r,e,e,r,r,r,e,r,r,r,e,r,e,r,r,e,e,r,e,r,r,r,r,e,e,r,r,e,e,e,e,r,e,e,e,r,r,r,r,e,e,r,r,r,e,e,e,r,e,e,e,e,e,e,r,e,e,e,r,e,e,e,r,e,e,e,e,e,e,e,e,e,e,e,e,r,e,r,e,r,e,e,e,r,r,r,r,r,e,e,r,r,r,r,r,r,r,e,r,e,e,e,e,e,e,r,r,r,e,e,e,r,e,e,r,r,r,e,r,e,r,r,r,e,r,e,e,e,e,r,r,r,e,e,r,e,r,r,r,e,e,e,r,e,r,r,r,e,e,r,e,e,e,e,r,e,e,e,r,e,r,r]},__routerFilterDynamic:{numItems:8,errorRate:1e-4,numBits:154,numHashes:14,bitArray:[e,e,e,r,r,e,r,r,r,e,r,e,r,r,r,e,e,r,e,r,r,e,e,r,r,e,e,r,e,e,e,e,e,e,r,e,e,r,r,r,e,e,e,e,e,r,r,r,r,e,e,r,r,e,r,r,e,e,r,r,e,e,r,r,r,r,r,r,e,e,e,r,r,e,r,e,e,r,r,r,e,r,r,r,r,e,e,r,e,e,e,e,r,r,r,r,r,r,e,e,e,r,r,e,r,e,e,e,r,e,e,e,e,r,e,r,e,r,e,e,e,e,e,e,e,e,r,e,r,r,r,e,e,e,e,e,r,r,r,r,e,r,r,r,e,e,e,r,e,e,r,r,e,e]},"/_error":["static/chunks/pages/_error-c8f84f7bd11d43d4.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4,14),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
|
File without changes
|