flujo-ai 3.17.0 → 3.18.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 +196 -181
- package/.next/app-path-routes-manifest.json +6 -4
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +12 -12
- package/.next/react-loadable-manifest.json +6 -6
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/api/backup/route.js.nft.json +1 -1
- package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/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_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 -19
- 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 -0
- package/.next/server/app/api/flow/improve/route.js.nft.json +1 -0
- package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/flow/prompt-renderer/route.js +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js +1 -0
- package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -0
- package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -0
- 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_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 +1 -1
- package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/[id]/route.js +1 -1
- package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/provider/route.js +1 -1
- package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
- package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/route.js +1 -1
- package/.next/server/app/api/model/route.js.nft.json +1 -1
- package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/test/route.js +1 -1
- package/.next/server/app/api/model/test/route.js.nft.json +1 -1
- package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/reset/route.js +1 -1
- package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/route.js.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.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.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/route.js +1 -1
- package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/restore/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_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 -9
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +2 -2
- package/.next/server/app/docs/page.js +5 -2
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +2 -2
- package/.next/server/app/executions/page.js +3 -3
- package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/executions.html +1 -1
- package/.next/server/app/executions.rsc +2 -2
- package/.next/server/app/flows/page.js +3 -39
- package/.next/server/app/flows/page.js.nft.json +1 -1
- package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
- package/.next/server/app/flows.html +1 -1
- package/.next/server/app/flows.rsc +2 -2
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/mcp/page.js +23 -27
- 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 +3 -3
- package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
- package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
- package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp.html +1 -1
- package/.next/server/app/mcp.rsc +2 -2
- package/.next/server/app/models/page.js +3 -3
- package/.next/server/app/models/page.js.nft.json +1 -1
- package/.next/server/app/models/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +2 -2
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +2 -2
- package/.next/server/app/v1/chat/completions/route.js +1 -1
- package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +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 +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +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 +1 -1
- package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/models/route.js +1 -1
- package/.next/server/app/v1/models/route.js.nft.json +1 -1
- package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +6 -4
- package/.next/server/chunks/1403.js +4 -2
- package/.next/server/chunks/1912.js +38 -0
- package/.next/server/chunks/2350.js +1 -0
- package/.next/server/chunks/{7531.js → 2439.js} +2 -2
- package/.next/server/chunks/{5504.js → 264.js} +2 -2
- package/.next/server/chunks/2776.js +1 -1
- package/.next/server/chunks/2859.js +3 -3
- package/.next/server/chunks/3304.js +1 -1
- package/.next/server/chunks/3310.js +35 -0
- package/.next/server/chunks/3984.js +4 -4
- package/.next/server/chunks/453.js +1 -0
- package/.next/server/chunks/4681.js +1 -1
- package/.next/server/chunks/5311.js +1 -0
- package/.next/server/chunks/6037.js +41 -0
- package/.next/server/chunks/6069.js +6 -0
- package/.next/server/chunks/6201.js +5 -0
- package/.next/server/chunks/6826.js +1 -0
- package/.next/server/chunks/6936.js +8 -6
- package/.next/server/chunks/701.js +1 -1
- package/.next/server/chunks/7186.js +2 -0
- package/.next/server/chunks/7214.js +2 -2
- package/.next/server/chunks/7362.js +6 -6
- package/.next/server/chunks/7506.js +1 -1
- package/.next/server/chunks/7635.js +1 -1
- package/.next/server/chunks/7821.js +1 -1
- package/.next/server/chunks/7982.js +1 -1
- package/.next/server/chunks/8227.js +2 -0
- package/.next/server/chunks/8342.js +1 -0
- package/.next/server/chunks/{3309.js → 8367.js} +2 -2
- package/.next/server/chunks/8739.js +1 -1
- package/.next/server/chunks/906.js +35 -0
- package/.next/server/chunks/{5888.js → 9314.js} +3 -3
- package/.next/server/chunks/9509.js +2 -2
- package/.next/server/chunks/9687.js +1 -0
- package/.next/server/chunks/9880.js +1 -0
- package/.next/server/chunks/9938.js +1 -1
- package/.next/server/chunks/9957.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-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/Fdh7zqKv38txmpLAxepeR/_buildManifest.js +1 -0
- package/.next/static/chunks/1374-e084b3c40554288a.js +1 -0
- package/.next/static/chunks/1892-359187893bbc7f3a.js +1 -0
- package/.next/static/chunks/{7126-2bafddf1b09cacac.js → 2084-2463e1d781bad2a6.js} +1 -1
- package/.next/static/chunks/4105-8fddb00196bf3c6d.js +1 -0
- package/.next/static/chunks/4244-6f399c7ff9980207.js +1 -0
- package/.next/static/chunks/4809-423a2a4a90d02f2c.js +1 -0
- package/.next/static/chunks/6084-68908a197e957e5f.js +1 -0
- package/.next/static/chunks/6509-3380826fd7c82b4e.js +1 -0
- package/.next/static/chunks/7290-fd5bb2c94fd7f605.js +1 -0
- package/.next/static/chunks/{7583.8a518353bd072db9.js → 7583.b6c2f8874b6b89cd.js} +1 -1
- package/.next/static/chunks/8098-297bf477152a565b.js +1 -0
- package/.next/static/chunks/{8187.5d6523f30e705998.js → 8187.15bf331f5318c00f.js} +1 -1
- package/.next/static/chunks/{9164-36fedeb944fa71e9.js → 9164-a56181e5e93cc47e.js} +1 -1
- package/.next/static/chunks/924-64f908860caf1a35.js +1 -0
- package/.next/static/chunks/9286-6ea909e5bf70a97e.js +1 -0
- package/.next/static/chunks/9747-ffb8be5e59700c27.js +8 -0
- package/.next/static/chunks/app/api/backup/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/browse/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/cwd/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/encryption/secure/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/env/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/flow/compile/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/flow/generate/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/flow/improve/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/flow/quick-chat/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/flow/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/git/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/init/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/local-models/capability/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/local-models/pull/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/local-models/suggest/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/mcp/cancel/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/model/[id]/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/model/provider/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/model/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/model/test/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/oauth/callback/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/oauth/initiate/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/oauth/reset/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/restore/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/storage/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/update/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/api/webhooks/[id]/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/chat/page-6486974f4a6c7b57.js +1 -0
- package/.next/static/chunks/app/docs/page-5da72cc6db51f238.js +1 -0
- package/.next/static/chunks/app/executions/page-fe19f6a1bd3fe05c.js +1 -0
- package/.next/static/chunks/app/flows/page-3b84093cdf2aee84.js +1 -0
- package/.next/static/chunks/app/mcp/page-355386ec2a542e42.js +1 -0
- package/.next/static/chunks/app/mcp-flows/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/mcp-proxy/[server]/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/models/page-20c80d398bf83fc5.js +1 -0
- package/.next/static/chunks/app/settings/page-9430dfdaff87d70c.js +1 -0
- package/.next/static/chunks/app/v1/chat/completions/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/app/v1/models/route-1691635994fcddb5.js +1 -0
- package/.next/static/chunks/{webpack-4015bd6f241940a1.js → webpack-4880945dd240d429.js} +1 -1
- package/.next/trace +7 -7
- package/.next/types/app/api/flow/improve/route.ts +347 -0
- package/.next/types/app/api/flow/quick-chat/route.ts +347 -0
- package/.next/types/routes.d.ts +3 -1
- package/.next/types/validator.ts +18 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/.next/server/chunks/117.js +0 -1
- package/.next/server/chunks/1519.js +0 -1
- package/.next/server/chunks/1877.js +0 -32
- package/.next/server/chunks/1905.js +0 -2
- package/.next/server/chunks/3243.js +0 -1
- package/.next/server/chunks/3370.js +0 -38
- package/.next/server/chunks/407.js +0 -6
- package/.next/server/chunks/5558.js +0 -1
- package/.next/server/chunks/5587.js +0 -1
- package/.next/server/chunks/5838.js +0 -1
- package/.next/server/chunks/5935.js +0 -2
- package/.next/server/chunks/6283.js +0 -2
- package/.next/server/chunks/6523.js +0 -1
- package/.next/server/chunks/7328.js +0 -1
- package/.next/server/chunks/8434.js +0 -1
- package/.next/server/chunks/9188.js +0 -1
- package/.next/static/KMEKXonxBXI3WzCfozXx4/_buildManifest.js +0 -1
- package/.next/static/chunks/1226-af62e7a89fa9032e.js +0 -1
- package/.next/static/chunks/1979-e2d922370ecef69f.js +0 -1
- package/.next/static/chunks/2158-0d6bb5a428ed0688.js +0 -1
- package/.next/static/chunks/510-e39ad4e1fae6dd1f.js +0 -1
- package/.next/static/chunks/539-8ddf886986877cfc.js +0 -1
- package/.next/static/chunks/5781-4328d17aad13f908.js +0 -8
- package/.next/static/chunks/5961-828f4f7efc3e1381.js +0 -1
- package/.next/static/chunks/687-98ba5f5043866f48.js +0 -1
- package/.next/static/chunks/6902-cba4e59c4295b4a0.js +0 -1
- package/.next/static/chunks/8862-1170dad1d6f3cd39.js +0 -1
- package/.next/static/chunks/8867-3f7163974605427b.js +0 -1
- package/.next/static/chunks/8989-401559d9f3bc80a0.js +0 -1
- package/.next/static/chunks/9414-3cd5c3976cba66b2.js +0 -1
- package/.next/static/chunks/app/api/backup/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/browse/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/cwd/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/encryption/secure/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/env/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/flow/compile/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/flow/generate/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/flow/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/git/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/init/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/local-models/capability/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/local-models/pull/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/local-models/suggest/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/mcp/cancel/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/model/[id]/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/model/provider/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/model/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/model/test/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/oauth/callback/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/oauth/initiate/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/oauth/reset/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/restore/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/storage/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/update/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/api/webhooks/[id]/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/chat/page-c759cf382bcabd77.js +0 -1
- package/.next/static/chunks/app/docs/page-fca894f60b9174e9.js +0 -1
- package/.next/static/chunks/app/executions/page-4155f9f682ee6f84.js +0 -1
- package/.next/static/chunks/app/flows/page-4e1ec20653e5dc86.js +0 -1
- package/.next/static/chunks/app/mcp/page-5234695929980171.js +0 -1
- package/.next/static/chunks/app/mcp-flows/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/mcp-proxy/[server]/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/models/page-4fc4d100a8b1d4b4.js +0 -1
- package/.next/static/chunks/app/settings/page-9a2bfb8d5bdba29e.js +0 -1
- package/.next/static/chunks/app/v1/chat/completions/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/route-7248529e02c31012.js +0 -1
- package/.next/static/chunks/app/v1/models/route-7248529e02c31012.js +0 -1
- /package/.next/static/{KMEKXonxBXI3WzCfozXx4 → Fdh7zqKv38txmpLAxepeR}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7290],{1702:(e,t,o)=>{o.d(t,{A:()=>g});var r=o(12115),n=o(2821),a=o(57001),i=o(48116),l=o(16625),c=o(85795),s=o(95195);function u(e){return(0,s.Ay)("MuiCardActions",e)}(0,c.A)("MuiCardActions",["root","spacing"]);var p=o(95155);let d=(0,i.Ay)("div",{name:"MuiCardActions",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:o}=e;return[t.root,!o.disableSpacing&&t.spacing]}})({display:"flex",alignItems:"center",padding:8,variants:[{props:{disableSpacing:!1},style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),g=r.forwardRef(function(e,t){let o=(0,l.b)({props:e,name:"MuiCardActions"}),{disableSpacing:r=!1,className:i,...c}=o,s={...o,disableSpacing:r},g=(e=>{let{classes:t,disableSpacing:o}=e;return(0,a.A)({root:["root",!o&&"spacing"]},u,t)})(s);return(0,p.jsx)(d,{className:(0,n.A)(g.root,i),ownerState:s,ref:t,...c})})},7517:(e,t,o)=>{o.d(t,{A:()=>a});var r=o(36697),n=o(95155);let a=(0,r.A)((0,n.jsx)("path",{d:"M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2m0 12H4V6h5.17l2 2H20zm-8-4h2v2h2v-2h2v-2h-2v-2h-2v2h-2z"}),"CreateNewFolderOutlined")},8190:(e,t,o)=>{o.d(t,{A:()=>a});var r=o(36697),n=o(95155);let a=(0,r.A)((0,n.jsx)("path",{d:"M20 6h-8l-2-2H7.17l4 4H20v9.17l1.76 1.76c.15-.28.24-.59.24-.93V8c0-1.1-.9-2-2-2M2.1 2.1.69 3.51l1.56 1.56c-.15.28-.24.59-.24.93L2 18c0 1.1.9 2 2 2h13.17l3.31 3.31 1.41-1.41zM4 18V6.83L15.17 18z"}),"FolderOffOutlined")},8567:(e,t,o)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorage",{enumerable:!0,get:function(){return r.workAsyncStorageInstance}});let r=o(17828)},17828:(e,t,o)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorageInstance",{enumerable:!0,get:function(){return r}});let r=(0,o(64054).createAsyncLocalStorage)()},20063:(e,t,o)=>{var r=o(47260);o.o(r,"usePathname")&&o.d(t,{usePathname:function(){return r.usePathname}}),o.o(r,"useRouter")&&o.d(t,{useRouter:function(){return r.useRouter}}),o.o(r,"useSearchParams")&&o.d(t,{useSearchParams:function(){return r.useSearchParams}})},24437:(e,t,o)=>{function r(e){let{reason:t,children:o}=e;return o}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSR",{enumerable:!0,get:function(){return r}}),o(24553)},29767:(e,t,o)=>{o.d(t,{A:()=>f});var r=o(12115),n=o(2821),a=o(57001),i=o(48116),l=o(16625),c=o(2300),s=o(85795),u=o(95195);function p(e){return(0,u.Ay)("MuiCard",e)}(0,s.A)("MuiCard",["root"]);var d=o(95155);let g=(0,i.Ay)(c.A,{name:"MuiCard",slot:"Root",overridesResolver:(e,t)=>t.root})({overflow:"hidden"}),f=r.forwardRef(function(e,t){let o=(0,l.b)({props:e,name:"MuiCard"}),{className:r,raised:i=!1,...c}=o,s={...o,raised:i},u=(e=>{let{classes:t}=e;return(0,a.A)({root:["root"]},p,t)})(s);return(0,d.jsx)(g,{className:(0,n.A)(u.root,r),elevation:i?8:void 0,ref:t,ownerState:s,...c})})},36552:(e,t,o)=>{function r(e){let{moduleIds:t}=e;return null}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadChunks",{enumerable:!0,get:function(){return r}}),o(95155),o(47650),o(8567),o(77278)},45587:(e,t,o)=>{o.d(t,{A:()=>a});var r=o(36697),n=o(95155);let a=(0,r.A)([(0,n.jsx)("path",{d:"m12 2-5.5 9h11z"},"0"),(0,n.jsx)("circle",{cx:"17.5",cy:"17.5",r:"4.5"},"1"),(0,n.jsx)("path",{d:"M3 13.5h8v8H3z"},"2")],"Category")},48363:(e,t,o)=>{o.d(t,{A:()=>a});var r=o(36697),n=o(95155);let a=(0,r.A)((0,n.jsx)("path",{d:"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1M8 13h8v-2H8zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5"}),"Link")},53062:(e,t,o)=>{o.d(t,{A:()=>b});var r=o(12115),n=o(2821),a=o(57001),i=o(48116),l=o(66964),c=o(16625),s=o(85795),u=o(95195);function p(e){return(0,u.Ay)("MuiCardActionArea",e)}let d=(0,s.A)("MuiCardActionArea",["root","focusVisible","focusHighlight"]);var g=o(95070),f=o(77765),h=o(95155);let v=(0,i.Ay)(g.A,{name:"MuiCardActionArea",slot:"Root",overridesResolver:(e,t)=>t.root})((0,l.A)(e=>{let{theme:t}=e;return{display:"block",textAlign:"inherit",borderRadius:"inherit",width:"100%",["&:hover .".concat(d.focusHighlight)]:{opacity:(t.vars||t).palette.action.hoverOpacity,"@media (hover: none)":{opacity:0}},["&.".concat(d.focusVisible," .").concat(d.focusHighlight)]:{opacity:(t.vars||t).palette.action.focusOpacity}}})),m=(0,i.Ay)("span",{name:"MuiCardActionArea",slot:"FocusHighlight",overridesResolver:(e,t)=>t.focusHighlight})((0,l.A)(e=>{let{theme:t}=e;return{overflow:"hidden",pointerEvents:"none",position:"absolute",top:0,right:0,bottom:0,left:0,borderRadius:"inherit",opacity:0,backgroundColor:"currentcolor",transition:t.transitions.create("opacity",{duration:t.transitions.duration.short})}})),b=r.forwardRef(function(e,t){let o=(0,c.b)({props:e,name:"MuiCardActionArea"}),{children:r,className:i,focusVisibleClassName:l,slots:s={},slotProps:u={},...d}=o,g=(e=>{let{classes:t}=e;return(0,a.A)({root:["root"],focusHighlight:["focusHighlight"]},p,t)})(o),b={slots:s,slotProps:u},[A,y]=(0,f.A)("root",{elementType:v,externalForwardedProps:{...b,...d},shouldForwardComponentProp:!0,ownerState:o,ref:t,className:(0,n.A)(g.root,i),additionalProps:{focusVisibleClassName:(0,n.A)(l,g.focusVisible)}}),[x,C]=(0,f.A)("focusHighlight",{elementType:m,externalForwardedProps:b,ownerState:o,ref:t,className:g.focusHighlight});return(0,h.jsxs)(A,{...y,children:[r,(0,h.jsx)(x,{...C})]})})},63109:(e,t,o)=>{o.d(t,{A:()=>ee});var r,n,a=o(12115),i=o(2821),l=o(57001),c=o(8532),s=o(99347),u=o(69827),p=o(2457),d=o(57421),g=o(65083);function f(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}let h=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{ignoreAccents:t=!0,ignoreCase:o=!0,limit:r,matchFrom:n="any",stringify:a,trim:i=!1}=e;return(e,l)=>{let{inputValue:c,getOptionLabel:s}=l,u=i?c.trim():c;o&&(u=u.toLowerCase()),t&&(u=f(u));let p=u?e.filter(e=>{let r=(a||s)(e);return o&&(r=r.toLowerCase()),t&&(r=f(r)),"start"===n?r.startsWith(u):r.includes(u)}):e;return"number"==typeof r?p.slice(0,r):p}}(),v=e=>{var t;return null!==e.current&&(null==(t=e.current.parentElement)?void 0:t.contains(document.activeElement))},m=[];function b(e,t,o){if(t||null==e)return"";let r=o(e);return"string"==typeof r?r:""}let A=function(e){let{unstable_isActiveElementInListbox:t=v,unstable_classNamePrefix:o="Mui",autoComplete:r=!1,autoHighlight:n=!1,autoSelect:i=!1,blurOnSelect:l=!1,clearOnBlur:c=!e.freeSolo,clearOnEscape:f=!1,componentName:A="useAutocomplete",defaultValue:y=e.multiple?m:null,disableClearable:x=!1,disableCloseOnSelect:C=!1,disabled:S,disabledItemsFocusable:w=!1,disableListWrap:R=!1,filterOptions:k=h,filterSelectedOptions:P=!1,freeSolo:M=!1,getOptionDisabled:I,getOptionKey:O,getOptionLabel:L=e=>{var t;return null!=(t=e.label)?t:e},groupBy:j,handleHomeEndKeys:H=!e.freeSolo,id:N,includeInputInList:T=!1,inputValue:z,isOptionEqualToValue:D=(e,t)=>e===t,multiple:V=!1,onChange:E,onClose:_,onHighlightChange:F,onInputChange:W,onOpen:B,open:U,openOnFocus:q=!1,options:G,readOnly:K=!1,selectOnFocus:X=!e.freeSolo,value:J}=e,Q=(0,s.A)(N),Y=L;Y=e=>{let t=L(e);return"string"!=typeof t?String(t):t};let Z=a.useRef(!1),$=a.useRef(!0),ee=a.useRef(null),et=a.useRef(null),[eo,er]=a.useState(null),[en,ea]=a.useState(-1),ei=n?0:-1,el=a.useRef(ei),ec=a.useRef(b(null!=y?y:J,V,Y)).current,[es,eu]=(0,u.A)({controlled:J,default:y,name:A}),[ep,ed]=(0,u.A)({controlled:z,default:ec,name:A,state:"inputValue"}),[eg,ef]=a.useState(!1),eh=a.useCallback((e,t,o)=>{if(!(V?es.length<t.length:null!==t)&&!c)return;let r=b(t,V,Y);ep!==r&&(ed(r),W&&W(e,r,o))},[Y,ep,V,W,ed,c,es]),[ev,em]=(0,u.A)({controlled:U,default:!1,name:A,state:"open"}),[eb,eA]=a.useState(!0),ey=!V&&null!=es&&ep===Y(es),ex=ev&&!K,eC=ex?k(G.filter(e=>!(P&&(V?es:[es]).some(t=>null!==t&&D(e,t)))),{inputValue:ey&&eb?"":ep,getOptionLabel:Y}):[],eS=(0,p.A)({filteredOptions:eC,value:es,inputValue:ep});a.useEffect(()=>{let e=es!==eS.value;(!eg||e)&&(!M||e)&&eh(null,es,"reset")},[es,eh,eg,eS.value,M]);let ew=ev&&eC.length>0&&!K,eR=(0,d.A)(e=>{-1===e?ee.current.focus():eo.querySelector('[data-tag-index="'.concat(e,'"]')).focus()});a.useEffect(()=>{V&&en>es.length-1&&(ea(-1),eR(-1))},[es,V,en,eR]);let ek=(0,d.A)(e=>{let{event:t,index:r,reason:n}=e;if(el.current=r,-1===r?ee.current.removeAttribute("aria-activedescendant"):ee.current.setAttribute("aria-activedescendant","".concat(Q,"-option-").concat(r)),F&&["mouse","keyboard","touch"].includes(n)&&F(t,-1===r?null:eC[r],n),!et.current)return;let a=et.current.querySelector('[role="option"].'.concat(o,"-focused"));a&&(a.classList.remove("".concat(o,"-focused")),a.classList.remove("".concat(o,"-focusVisible")));let i=et.current;if("listbox"!==et.current.getAttribute("role")&&(i=et.current.parentElement.querySelector('[role="listbox"]')),!i)return;if(-1===r){i.scrollTop=0;return}let l=et.current.querySelector('[data-option-index="'.concat(r,'"]'));if(l&&(l.classList.add("".concat(o,"-focused")),"keyboard"===n&&l.classList.add("".concat(o,"-focusVisible")),i.scrollHeight>i.clientHeight&&"mouse"!==n&&"touch"!==n)){let e=i.clientHeight+i.scrollTop,t=l.offsetTop+l.offsetHeight;t>e?i.scrollTop=t-i.clientHeight:l.offsetTop-l.offsetHeight*(1.3*!!j)<i.scrollTop&&(i.scrollTop=l.offsetTop-l.offsetHeight*(1.3*!!j))}}),eP=(0,d.A)(e=>{let{event:t,diff:o,direction:n="next",reason:a}=e;if(!ex)return;let i=function(e,t){if(!et.current||e<0||e>=eC.length)return -1;let o=e;for(;;){let r=et.current.querySelector('[data-option-index="'.concat(o,'"]')),n=!w&&(!r||r.disabled||"true"===r.getAttribute("aria-disabled"));if(r&&r.hasAttribute("tabindex")&&!n)return o;if((o="next"===t?(o+1)%eC.length:(o-1+eC.length)%eC.length)===e)return -1}}((()=>{let e=eC.length-1;if("reset"===o)return ei;if("start"===o)return 0;if("end"===o)return e;let t=el.current+o;return t<0?-1===t&&T?-1:R&&-1!==el.current||Math.abs(o)>1?0:e:t>e?t===e+1&&T?-1:R||Math.abs(o)>1?e:0:t})(),n);if(ek({index:i,reason:a,event:t}),r&&"reset"!==o)if(-1===i)ee.current.value=ep;else{let e=Y(eC[i]);ee.current.value=e,0===e.toLowerCase().indexOf(ep.toLowerCase())&&ep.length>0&&ee.current.setSelectionRange(ep.length,e.length)}}),eM=a.useCallback(()=>{if(!ex)return;let e=(()=>{var e,t;if(-1!==el.current&&eS.filteredOptions&&eS.filteredOptions.length!==eC.length&&eS.inputValue===ep&&(V?es.length===eS.value.length&&eS.value.every((e,t)=>Y(es[t])===Y(e)):(e=eS.value,t=es,(e?Y(e):"")===(t?Y(t):"")))){let e=eS.filteredOptions[el.current];if(e)return eC.findIndex(t=>Y(t)===Y(e))}return -1})();if(-1!==e){el.current=e;return}let t=V?es[0]:es;if(0===eC.length||null==t)return void eP({diff:"reset"});if(et.current){if(null!=t){let e=eC[el.current];if(V&&e&&-1!==es.findIndex(t=>D(e,t)))return;let o=eC.findIndex(e=>D(e,t));-1===o?eP({diff:"reset"}):ek({index:o});return}if(el.current>=eC.length-1)return void ek({index:eC.length-1});ek({index:el.current})}},[eC.length,!V&&es,P,eP,ek,ex,ep,V]),eI=(0,d.A)(e=>{(0,g.A)(et,e),e&&eM()});a.useEffect(()=>{eM()},[eM]);let eO=e=>{!ev&&(em(!0),eA(!0),B&&B(e))},eL=(e,t)=>{ev&&(em(!1),_&&_(e,t))},ej=(e,t,o,r)=>{if(V){if(es.length===t.length&&es.every((e,o)=>e===t[o]))return}else if(es===t)return;E&&E(e,t,o,r),eu(t)},eH=a.useRef(!1),eN=function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"selectOption",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"options",n=o,a=t;if(V){let e=(a=Array.isArray(es)?es.slice():[]).findIndex(e=>D(t,e));-1===e?a.push(t):"freeSolo"!==r&&(a.splice(e,1),n="removeOption")}eh(e,a,n),ej(e,a,n,{option:t}),C||e&&(e.ctrlKey||e.metaKey)||eL(e,n),(!0===l||"touch"===l&&eH.current||"mouse"===l&&!eH.current)&&ee.current.blur()},eT=(e,t)=>{if(!V)return;""===ep&&eL(e,"toggleInput");let o=en;-1===en?""===ep&&"previous"===t&&(o=es.length-1):((o+="next"===t?1:-1)<0&&(o=0),o===es.length&&(o=-1)),ea(o=function(e,t){if(-1===e)return -1;let o=e;for(;;){if("next"===t&&o===es.length||"previous"===t&&-1===o)return -1;let e=eo.querySelector('[data-tag-index="'.concat(o,'"]'));if(e&&e.hasAttribute("tabindex")&&!e.disabled&&"true"!==e.getAttribute("aria-disabled"))return o;o+="next"===t?1:-1}}(o,t)),eR(o)},ez=e=>{Z.current=!0,ed(""),W&&W(e,"","clear"),ej(e,V?[]:null,"clear")},eD=e=>{ef(!0),q&&!Z.current&&eO(e)},eV=e=>{if(t(et))return void ee.current.focus();ef(!1),$.current=!0,Z.current=!1,i&&-1!==el.current&&ex?eN(e,eC[el.current],"blur"):i&&M&&""!==ep?eN(e,ep,"blur","freeSolo"):c&&eh(e,es,"blur"),eL(e,"blur")},eE=e=>{let t=e.target.value;ep!==t&&(ed(t),eA(!1),W&&W(e,t,"input")),""===t?x||V||ej(e,null,"clear"):eO(e)},e_=e=>{let t=Number(e.currentTarget.getAttribute("data-option-index"));el.current!==t&&ek({event:e,index:t,reason:"mouse"})},eF=e=>{ek({event:e,index:Number(e.currentTarget.getAttribute("data-option-index")),reason:"touch"}),eH.current=!0},eW=e=>{let t=Number(e.currentTarget.getAttribute("data-option-index"));eN(e,eC[t],"selectOption"),eH.current=!1},eB=e=>{ev?eL(e,"toggleInput"):eO(e)},eU=e=>{e.currentTarget.contains(e.target)&&e.target.getAttribute("id")!==Q&&e.preventDefault()},eq=e=>{e.currentTarget.contains(e.target)&&(ee.current.focus(),X&&$.current&&ee.current.selectionEnd-ee.current.selectionStart==0&&ee.current.select(),$.current=!1)},eG=e=>{S||""!==ep&&ev||eB(e)},eK=M&&ep.length>0;eK=eK||(V?es.length>0:null!==es);let eX=eC;return j&&(eX=eC.reduce((e,t,o)=>{let r=j(t);return e.length>0&&e[e.length-1].group===r?e[e.length-1].options.push(t):e.push({key:o,index:o,group:r,options:[t]}),e},[])),S&&eg&&eV(),{getRootProps:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{...e,onKeyDown:t=>{if(e.onKeyDown&&e.onKeyDown(t),!t.defaultMuiPrevented&&(-1===en||["ArrowLeft","ArrowRight"].includes(t.key)||(ea(-1),eR(-1)),229!==t.which))switch(t.key){case"Home":ex&&H&&(t.preventDefault(),eP({diff:"start",direction:"next",reason:"keyboard",event:t}));break;case"End":ex&&H&&(t.preventDefault(),eP({diff:"end",direction:"previous",reason:"keyboard",event:t}));break;case"PageUp":t.preventDefault(),eP({diff:-5,direction:"previous",reason:"keyboard",event:t}),eO(t);break;case"PageDown":t.preventDefault(),eP({diff:5,direction:"next",reason:"keyboard",event:t}),eO(t);break;case"ArrowDown":t.preventDefault(),eP({diff:1,direction:"next",reason:"keyboard",event:t}),eO(t);break;case"ArrowUp":t.preventDefault(),eP({diff:-1,direction:"previous",reason:"keyboard",event:t}),eO(t);break;case"ArrowLeft":eT(t,"previous");break;case"ArrowRight":eT(t,"next");break;case"Enter":if(-1!==el.current&&ex){let e=eC[el.current],o=!!I&&I(e);if(t.preventDefault(),o)return;eN(t,e,"selectOption"),r&&ee.current.setSelectionRange(ee.current.value.length,ee.current.value.length)}else M&&""!==ep&&!1===ey&&(V&&t.preventDefault(),eN(t,ep,"createOption","freeSolo"));break;case"Escape":ex?(t.preventDefault(),t.stopPropagation(),eL(t,"escape")):f&&(""!==ep||V&&es.length>0)&&(t.preventDefault(),t.stopPropagation(),ez(t));break;case"Backspace":if(V&&!K&&""===ep&&es.length>0){let e=-1===en?es.length-1:en,o=es.slice();o.splice(e,1),ej(t,o,"removeOption",{option:es[e]})}break;case"Delete":if(V&&!K&&""===ep&&es.length>0&&-1!==en){let e=es.slice();e.splice(en,1),ej(t,e,"removeOption",{option:es[en]})}}},onMouseDown:eU,onClick:eq}},getInputLabelProps:()=>({id:"".concat(Q,"-label"),htmlFor:Q}),getInputProps:()=>({id:Q,value:ep,onBlur:eV,onFocus:eD,onChange:eE,onMouseDown:eG,"aria-activedescendant":ex?"":null,"aria-autocomplete":r?"both":"list","aria-controls":ew?"".concat(Q,"-listbox"):void 0,"aria-expanded":ew,autoComplete:"off",ref:ee,autoCapitalize:"none",spellCheck:"false",role:"combobox",disabled:S}),getClearProps:()=>({tabIndex:-1,type:"button",onClick:ez}),getPopupIndicatorProps:()=>({tabIndex:-1,type:"button",onClick:eB}),getTagProps:e=>{let{index:t}=e;return{key:t,"data-tag-index":t,tabIndex:-1,...!K&&{onDelete:e=>{let o=es.slice();o.splice(t,1),ej(e,o,"removeOption",{option:es[t]})}}}},getListboxProps:()=>({role:"listbox",id:"".concat(Q,"-listbox"),"aria-labelledby":"".concat(Q,"-label"),ref:eI,onMouseDown:e=>{e.preventDefault()}}),getOptionProps:e=>{var t;let{index:o,option:r}=e,n=(V?es:[es]).some(e=>null!=e&&D(r,e)),a=!!I&&I(r);return{key:null!=(t=null==O?void 0:O(r))?t:Y(r),tabIndex:-1,role:"option",id:"".concat(Q,"-option-").concat(o),onMouseMove:e_,onClick:eW,onTouchStart:eF,"data-option-index":o,"aria-disabled":a,"aria-selected":n}},id:Q,inputValue:ep,value:es,dirty:eK,expanded:ex&&eo,popupOpen:ex,focused:eg||-1!==en,anchorEl:eo,setAnchorEl:er,focusedTag:en,groupedOptions:eX}};var y=o(3004),x=o(48116),C=o(66964),S=o(16625),w=o(81852),R=o(85795),k=o(95195);function P(e){return(0,k.Ay)("MuiListSubheader",e)}(0,R.A)("MuiListSubheader",["root","colorPrimary","colorInherit","gutters","inset","sticky"]);var M=o(95155);let I=(0,x.Ay)("li",{name:"MuiListSubheader",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:o}=e;return[t.root,"default"!==o.color&&t["color".concat((0,w.A)(o.color))],!o.disableGutters&&t.gutters,o.inset&&t.inset,!o.disableSticky&&t.sticky]}})((0,C.A)(e=>{let{theme:t}=e;return{boxSizing:"border-box",lineHeight:"48px",listStyle:"none",color:(t.vars||t).palette.text.secondary,fontFamily:t.typography.fontFamily,fontWeight:t.typography.fontWeightMedium,fontSize:t.typography.pxToRem(14),variants:[{props:{color:"primary"},style:{color:(t.vars||t).palette.primary.main}},{props:{color:"inherit"},style:{color:"inherit"}},{props:e=>{let{ownerState:t}=e;return!t.disableGutters},style:{paddingLeft:16,paddingRight:16}},{props:e=>{let{ownerState:t}=e;return t.inset},style:{paddingLeft:72}},{props:e=>{let{ownerState:t}=e;return!t.disableSticky},style:{position:"sticky",top:0,zIndex:1,backgroundColor:(t.vars||t).palette.background.paper}}]}})),O=a.forwardRef(function(e,t){let o=(0,S.b)({props:e,name:"MuiListSubheader"}),{className:r,color:n="default",component:a="li",disableGutters:c=!1,disableSticky:s=!1,inset:u=!1,...p}=o,d={...o,color:n,component:a,disableGutters:c,disableSticky:s,inset:u},g=(e=>{let{classes:t,color:o,disableGutters:r,inset:n,disableSticky:a}=e,i={root:["root","default"!==o&&"color".concat((0,w.A)(o)),!r&&"gutters",n&&"inset",!a&&"sticky"]};return(0,l.A)(i,P,t)})(d);return(0,M.jsx)(I,{as:a,className:(0,i.A)(g.root,r),ref:t,ownerState:d,...p})});O&&(O.muiSkipListHighlight=!0);var L=o(2300),j=o(41983),H=o(28548),N=o(40353),T=o(13693),z=o(44877),D=o(81781),V=o(57908),E=o(10556);function _(e){return(0,k.Ay)("MuiAutocomplete",e)}let F=(0,R.A)("MuiAutocomplete",["root","expanded","fullWidth","focused","focusVisible","tag","tagSizeSmall","tagSizeMedium","hasPopupIcon","hasClearIcon","inputRoot","input","inputFocused","endAdornment","clearIndicator","popupIndicator","popupIndicatorOpen","popper","popperDisablePortal","paper","listbox","loading","noOptions","option","groupLabel","groupUl"]);var W=o(77765);let B=(0,x.Ay)("div",{name:"MuiAutocomplete",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:o}=e,{fullWidth:r,hasClearIcon:n,hasPopupIcon:a,inputFocused:i,size:l}=o;return[{["& .".concat(F.tag)]:t.tag},{["& .".concat(F.tag)]:t["tagSize".concat((0,w.A)(l))]},{["& .".concat(F.inputRoot)]:t.inputRoot},{["& .".concat(F.input)]:t.input},{["& .".concat(F.input)]:i&&t.inputFocused},t.root,r&&t.fullWidth,a&&t.hasPopupIcon,n&&t.hasClearIcon]}})({["&.".concat(F.focused," .").concat(F.clearIndicator)]:{visibility:"visible"},"@media (pointer: fine)":{["&:hover .".concat(F.clearIndicator)]:{visibility:"visible"}},["& .".concat(F.tag)]:{margin:3,maxWidth:"calc(100% - 6px)"},["& .".concat(F.inputRoot)]:{[".".concat(F.hasPopupIcon,"&, .").concat(F.hasClearIcon,"&")]:{paddingRight:30},[".".concat(F.hasPopupIcon,".").concat(F.hasClearIcon,"&")]:{paddingRight:56},["& .".concat(F.input)]:{width:0,minWidth:30}},["& .".concat(N.A.root)]:{paddingBottom:1,"& .MuiInput-input":{padding:"4px 4px 4px 0px"}},["& .".concat(N.A.root,".").concat(T.A.sizeSmall)]:{["& .".concat(N.A.input)]:{padding:"2px 4px 3px 0"}},["& .".concat(z.A.root)]:{padding:9,[".".concat(F.hasPopupIcon,"&, .").concat(F.hasClearIcon,"&")]:{paddingRight:39},[".".concat(F.hasPopupIcon,".").concat(F.hasClearIcon,"&")]:{paddingRight:65},["& .".concat(F.input)]:{padding:"7.5px 4px 7.5px 5px"},["& .".concat(F.endAdornment)]:{right:9}},["& .".concat(z.A.root,".").concat(T.A.sizeSmall)]:{paddingTop:6,paddingBottom:6,paddingLeft:6,["& .".concat(F.input)]:{padding:"2.5px 4px 2.5px 8px"}},["& .".concat(D.A.root)]:{paddingTop:19,paddingLeft:8,[".".concat(F.hasPopupIcon,"&, .").concat(F.hasClearIcon,"&")]:{paddingRight:39},[".".concat(F.hasPopupIcon,".").concat(F.hasClearIcon,"&")]:{paddingRight:65},["& .".concat(D.A.input)]:{padding:"7px 4px"},["& .".concat(F.endAdornment)]:{right:9}},["& .".concat(D.A.root,".").concat(T.A.sizeSmall)]:{paddingBottom:1,["& .".concat(D.A.input)]:{padding:"2.5px 4px"}},["& .".concat(T.A.hiddenLabel)]:{paddingTop:8},["& .".concat(D.A.root,".").concat(T.A.hiddenLabel)]:{paddingTop:0,paddingBottom:0,["& .".concat(F.input)]:{paddingTop:16,paddingBottom:17}},["& .".concat(D.A.root,".").concat(T.A.hiddenLabel,".").concat(T.A.sizeSmall)]:{["& .".concat(F.input)]:{paddingTop:8,paddingBottom:9}},["& .".concat(F.input)]:{flexGrow:1,textOverflow:"ellipsis",opacity:0},variants:[{props:{fullWidth:!0},style:{width:"100%"}},{props:{size:"small"},style:{["& .".concat(F.tag)]:{margin:2,maxWidth:"calc(100% - 4px)"}}},{props:{inputFocused:!0},style:{["& .".concat(F.input)]:{opacity:1}}},{props:{multiple:!0},style:{["& .".concat(F.inputRoot)]:{flexWrap:"wrap"}}}]}),U=(0,x.Ay)("div",{name:"MuiAutocomplete",slot:"EndAdornment",overridesResolver:(e,t)=>t.endAdornment})({position:"absolute",right:0,top:"50%",transform:"translate(0, -50%)"}),q=(0,x.Ay)(j.A,{name:"MuiAutocomplete",slot:"ClearIndicator",overridesResolver:(e,t)=>t.clearIndicator})({marginRight:-2,padding:4,visibility:"hidden"}),G=(0,x.Ay)(j.A,{name:"MuiAutocomplete",slot:"PopupIndicator",overridesResolver:(e,t)=>{let{ownerState:o}=e;return[t.popupIndicator,o.popupOpen&&t.popupIndicatorOpen]}})({padding:2,marginRight:-2,variants:[{props:{popupOpen:!0},style:{transform:"rotate(180deg)"}}]}),K=(0,x.Ay)(y.A,{name:"MuiAutocomplete",slot:"Popper",overridesResolver:(e,t)=>{let{ownerState:o}=e;return[{["& .".concat(F.option)]:t.option},t.popper,o.disablePortal&&t.popperDisablePortal]}})((0,C.A)(e=>{let{theme:t}=e;return{zIndex:(t.vars||t).zIndex.modal,variants:[{props:{disablePortal:!0},style:{position:"absolute"}}]}})),X=(0,x.Ay)(L.A,{name:"MuiAutocomplete",slot:"Paper",overridesResolver:(e,t)=>t.paper})((0,C.A)(e=>{let{theme:t}=e;return{...t.typography.body1,overflow:"auto"}})),J=(0,x.Ay)("div",{name:"MuiAutocomplete",slot:"Loading",overridesResolver:(e,t)=>t.loading})((0,C.A)(e=>{let{theme:t}=e;return{color:(t.vars||t).palette.text.secondary,padding:"14px 16px"}})),Q=(0,x.Ay)("div",{name:"MuiAutocomplete",slot:"NoOptions",overridesResolver:(e,t)=>t.noOptions})((0,C.A)(e=>{let{theme:t}=e;return{color:(t.vars||t).palette.text.secondary,padding:"14px 16px"}})),Y=(0,x.Ay)("ul",{name:"MuiAutocomplete",slot:"Listbox",overridesResolver:(e,t)=>t.listbox})((0,C.A)(e=>{let{theme:t}=e;return{listStyle:"none",margin:0,padding:"8px 0",maxHeight:"40vh",overflow:"auto",position:"relative",["& .".concat(F.option)]:{minHeight:48,display:"flex",overflow:"hidden",justifyContent:"flex-start",alignItems:"center",cursor:"pointer",paddingTop:6,boxSizing:"border-box",outline:"0",WebkitTapHighlightColor:"transparent",paddingBottom:6,paddingLeft:16,paddingRight:16,[t.breakpoints.up("sm")]:{minHeight:"auto"},["&.".concat(F.focused)]:{backgroundColor:(t.vars||t).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},'&[aria-disabled="true"]':{opacity:(t.vars||t).palette.action.disabledOpacity,pointerEvents:"none"},["&.".concat(F.focusVisible)]:{backgroundColor:(t.vars||t).palette.action.focus},'&[aria-selected="true"]':{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / ").concat(t.vars.palette.action.selectedOpacity,")"):(0,c.X4)(t.palette.primary.main,t.palette.action.selectedOpacity),["&.".concat(F.focused)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.hoverOpacity,"))"):(0,c.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:(t.vars||t).palette.action.selected}},["&.".concat(F.focusVisible)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.focusOpacity,"))"):(0,c.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.focusOpacity)}}}}})),Z=(0,x.Ay)(O,{name:"MuiAutocomplete",slot:"GroupLabel",overridesResolver:(e,t)=>t.groupLabel})((0,C.A)(e=>{let{theme:t}=e;return{backgroundColor:(t.vars||t).palette.background.paper,top:-8}})),$=(0,x.Ay)("ul",{name:"MuiAutocomplete",slot:"GroupUl",overridesResolver:(e,t)=>t.groupUl})({padding:0,["& .".concat(F.option)]:{paddingLeft:24}}),ee=a.forwardRef(function(e,t){let o,c=(0,S.b)({props:e,name:"MuiAutocomplete"}),{autoComplete:s=!1,autoHighlight:u=!1,autoSelect:p=!1,blurOnSelect:d=!1,ChipProps:g,className:f,clearIcon:h=r||(r=(0,M.jsx)(V.A,{fontSize:"small"})),clearOnBlur:v=!c.freeSolo,clearOnEscape:m=!1,clearText:b="Clear",closeText:x="Close",componentsProps:C,defaultValue:R=c.multiple?[]:null,disableClearable:k=!1,disableCloseOnSelect:P=!1,disabled:I=!1,disabledItemsFocusable:O=!1,disableListWrap:j=!1,disablePortal:N=!1,filterOptions:T,filterSelectedOptions:z=!1,forcePopupIcon:D="auto",freeSolo:F=!1,fullWidth:ee=!1,getLimitTagsText:et=e=>"+".concat(e),getOptionDisabled:eo,getOptionKey:er,getOptionLabel:en,isOptionEqualToValue:ea,groupBy:ei,handleHomeEndKeys:el=!c.freeSolo,id:ec,includeInputInList:es=!1,inputValue:eu,limitTags:ep=-1,ListboxComponent:ed,ListboxProps:eg,loading:ef=!1,loadingText:eh="Loading…",multiple:ev=!1,noOptionsText:em="No options",onChange:eb,onClose:eA,onHighlightChange:ey,onInputChange:ex,onOpen:eC,open:eS,openOnFocus:ew=!1,openText:eR="Open",options:ek,PaperComponent:eP,PopperComponent:eM,popupIcon:eI=n||(n=(0,M.jsx)(E.A,{})),readOnly:eO=!1,renderGroup:eL,renderInput:ej,renderOption:eH,renderTags:eN,selectOnFocus:eT=!c.freeSolo,size:ez="medium",slots:eD={},slotProps:eV={},value:eE,...e_}=c,{getRootProps:eF,getInputProps:eW,getInputLabelProps:eB,getPopupIndicatorProps:eU,getClearProps:eq,getTagProps:eG,getListboxProps:eK,getOptionProps:eX,value:eJ,dirty:eQ,expanded:eY,id:eZ,popupOpen:e$,focused:e1,focusedTag:e0,anchorEl:e2,setAnchorEl:e5,inputValue:e9,groupedOptions:e6}=A({...c,componentName:"Autocomplete"}),e4=!k&&!I&&eQ&&!eO,e7=(!F||!0===D)&&!1!==D,{onMouseDown:e8}=eW(),{ref:e3,...te}=eK(),tt=en||(e=>{var t;return null!=(t=e.label)?t:e}),to={...c,disablePortal:N,expanded:eY,focused:e1,fullWidth:ee,getOptionLabel:tt,hasClearIcon:e4,hasPopupIcon:e7,inputFocused:-1===e0,popupOpen:e$,size:ez},tr=(e=>{let{classes:t,disablePortal:o,expanded:r,focused:n,fullWidth:a,hasClearIcon:i,hasPopupIcon:c,inputFocused:s,popupOpen:u,size:p}=e,d={root:["root",r&&"expanded",n&&"focused",a&&"fullWidth",i&&"hasClearIcon",c&&"hasPopupIcon"],inputRoot:["inputRoot"],input:["input",s&&"inputFocused"],tag:["tag","tagSize".concat((0,w.A)(p))],endAdornment:["endAdornment"],clearIndicator:["clearIndicator"],popupIndicator:["popupIndicator",u&&"popupIndicatorOpen"],popper:["popper",o&&"popperDisablePortal"],paper:["paper"],listbox:["listbox"],loading:["loading"],noOptions:["noOptions"],option:["option"],groupLabel:["groupLabel"],groupUl:["groupUl"]};return(0,l.A)(d,_,t)})(to),tn={slots:{paper:eP,popper:eM,...eD},slotProps:{chip:g,listbox:eg,...C,...eV}},[ta,ti]=(0,W.A)("listbox",{elementType:Y,externalForwardedProps:tn,ownerState:to,className:tr.listbox,additionalProps:te,ref:e3}),[tl,tc]=(0,W.A)("paper",{elementType:L.A,externalForwardedProps:tn,ownerState:to,className:tr.paper}),[ts,tu]=(0,W.A)("popper",{elementType:y.A,externalForwardedProps:tn,ownerState:to,className:tr.popper,additionalProps:{disablePortal:N,style:{width:e2?e2.clientWidth:null},role:"presentation",anchorEl:e2,open:e$}});if(ev&&eJ.length>0){let e=e=>({className:tr.tag,disabled:I,...eG(e)});o=eN?eN(eJ,e,to):eJ.map((t,o)=>{let{key:r,...n}=e({index:o});return(0,M.jsx)(H.A,{label:tt(t),size:ez,...n,...tn.slotProps.chip},r)})}if(ep>-1&&Array.isArray(o)){let e=o.length-ep;!e1&&e>0&&(o=o.splice(0,ep)).push((0,M.jsx)("span",{className:tr.tag,children:et(e)},o.length))}let tp=eL||(e=>(0,M.jsxs)("li",{children:[(0,M.jsx)(Z,{className:tr.groupLabel,ownerState:to,component:"div",children:e.group}),(0,M.jsx)($,{className:tr.groupUl,ownerState:to,children:e.children})]},e.key)),td=eH||((e,t)=>{let{key:o,...r}=e;return(0,M.jsx)("li",{...r,children:tt(t)},o)}),tg=(e,t)=>{let o=eX({option:e,index:t});return td({...o,className:tr.option},e,{selected:o["aria-selected"],index:t,inputValue:e9},to)},tf=tn.slotProps.clearIndicator,th=tn.slotProps.popupIndicator;return(0,M.jsxs)(a.Fragment,{children:[(0,M.jsx)(B,{ref:t,className:(0,i.A)(tr.root,f),ownerState:to,...eF(e_),children:ej({id:eZ,disabled:I,fullWidth:!0,size:"small"===ez?"small":void 0,InputLabelProps:eB(),InputProps:{ref:e5,className:tr.inputRoot,startAdornment:o,onMouseDown:e=>{e.target===e.currentTarget&&e8(e)},...(e4||e7)&&{endAdornment:(0,M.jsxs)(U,{className:tr.endAdornment,ownerState:to,children:[e4?(0,M.jsx)(q,{...eq(),"aria-label":b,title:b,ownerState:to,...tf,className:(0,i.A)(tr.clearIndicator,null==tf?void 0:tf.className),children:h}):null,e7?(0,M.jsx)(G,{...eU(),disabled:I,"aria-label":e$?x:eR,title:e$?x:eR,ownerState:to,...th,className:(0,i.A)(tr.popupIndicator,null==th?void 0:th.className),children:eI}):null]})}},inputProps:{className:tr.input,disabled:I,readOnly:eO,...eW()}})}),e2?(0,M.jsx)(K,{as:ts,...tu,children:(0,M.jsxs)(X,{as:tl,...tc,children:[ef&&0===e6.length?(0,M.jsx)(J,{className:tr.loading,ownerState:to,children:eh}):null,0!==e6.length||F||ef?null:(0,M.jsx)(Q,{className:tr.noOptions,ownerState:to,role:"presentation",onMouseDown:e=>{e.preventDefault()},children:em}),e6.length>0?(0,M.jsx)(ta,{as:ed,...ti,children:e6.map((e,t)=>ei?tp({key:e.key,group:e.group,children:e.options.map((t,o)=>tg(t,e.index+o))}):tg(e,t))}):null]})}):null]})})},64054:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var o in t)Object.defineProperty(e,o,{enumerable:!0,get:t[o]})}(t,{bindSnapshot:function(){return i},createAsyncLocalStorage:function(){return a},createSnapshot:function(){return l}});let o=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class r{disable(){throw o}getStore(){}run(){throw o}exit(){throw o}enterWith(){throw o}static bind(e){return e}}let n="undefined"!=typeof globalThis&&globalThis.AsyncLocalStorage;function a(){return n?new n:new r}function i(e){return n?n.bind(e):r.bind(e)}function l(){return n?n.snapshot():function(e,...t){return e(...t)}}},81952:(e,t,o)=>{o.d(t,{A:()=>a});var r=o(36697),n=o(95155);let a=(0,r.A)((0,n.jsx)("path",{d:"M15 9H9v6h6zm-2 4h-2v-2h2zm8-2V9h-2V7c0-1.1-.9-2-2-2h-2V3h-2v2h-2V3H9v2H7c-1.1 0-2 .9-2 2v2H3v2h2v2H3v2h2v2c0 1.1.9 2 2 2h2v2h2v-2h2v2h2v-2h2c1.1 0 2-.9 2-2v-2h2v-2h-2v-2zm-4 6H7V7h10z"}),"Memory")},84578:(e,t,o)=>{o.d(t,{A:()=>g});var r=o(12115),n=o(2821),a=o(57001),i=o(48116),l=o(16625),c=o(85795),s=o(95195);function u(e){return(0,s.Ay)("MuiCardContent",e)}(0,c.A)("MuiCardContent",["root"]);var p=o(95155);let d=(0,i.Ay)("div",{name:"MuiCardContent",slot:"Root",overridesResolver:(e,t)=>t.root})({padding:16,"&:last-child":{paddingBottom:24}}),g=r.forwardRef(function(e,t){let o=(0,l.b)({props:e,name:"MuiCardContent"}),{className:r,component:i="div",...c}=o,s={...o,component:i},g=(e=>{let{classes:t}=e;return(0,a.A)({root:["root"]},u,t)})(s);return(0,p.jsx)(d,{as:i,className:(0,n.A)(g.root,r),ownerState:s,ref:t,...c})})},91665:(e,t,o)=>{o.d(t,{A:()=>a});var r=o(36697),n=o(95155);let a=(0,r.A)((0,n.jsx)("path",{d:"m9.17 6 2 2H20v10H4V6zM10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8z"}),"FolderOutlined")}}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7583],{2226:(e,t,r)=>{r.d(t,{Dp:()=>c,Dg:()=>u}),r(12115);var o=r(33065),a=r(95695),n=r(50361),s=r(46892),
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7583],{2226:(e,t,r)=>{r.d(t,{Dp:()=>c,Dg:()=>u}),r(12115);var o=r(33065),a=r(95695),n=r(50361),s=r(46892),i=r(95155);let d=function(e){return(0,i.jsx)(a.A,{...e,defaultTheme:n.A,themeId:s.A})};function c(e){return function(t){return(0,i.jsx)(d,{styles:"function"==typeof e?r=>e({theme:r,...t}):e})}}function u(){return o.A}},9352:(e,t,r)=>{r.d(t,{Ic:()=>s,kY:()=>n});var o=r(26796);let a=(0,r(87021).h)("frontend/utils/theme"),n={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,o.useTheme)();return a.debug("useThemeUtils called with isDarkMode: ".concat(e)),{getThemeValue:(t,r)=>e?r:t,getThemeColor:t=>{let r=t.split("."),o=n[e?"dark":"light"];for(let e of r)if(!o||"object"!=typeof o||!(e in o))return a.warn("Theme color path not found: ".concat(t)),"";else o=o[e];return o},colors:e?n.dark:n.light,isDarkMode:e}}},26796:(e,t,r)=>{r.r(t),r.d(t,{ThemeProvider:()=>h,useTheme:()=>m});var o=r(95155),a=r(12115),n=r(87021),s=r(7160),i=r(29197),d=r(9352),c=r(84563),u=r(29692);let l=(0,n.h)("frontend/contexts/ThemeContext"),f=(0,a.createContext)(void 0),h=e=>{let{children:t}=e,[r,n]=(0,a.useState)(!1),[h,m]=(0,a.useState)(!1);(0,a.useEffect)(()=>{(async()=>{l.debug("Loading theme preference from storage");let e=await (0,u.YM)(u.Zg.THEME,"light");l.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"),n(!0)})()},[]);let g=(0,a.useMemo)(()=>(function(e){let t="dark"===e?d.kY.dark:d.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)"}}}}})})(h?"dark":"light"),[h]);return l.debug("Rendering ThemeProvider with isDarkMode: ".concat(h)),(0,o.jsx)(f.Provider,{value:{toggleTheme:()=>{m(e=>{let t=!e,r=t?"dark":"light";return l.info("Toggling theme to: ".concat(r)),t?document.documentElement.classList.add("dark-theme"):document.documentElement.classList.remove("dark-theme"),(0,u.VH)(u.Zg.THEME,r),t})},isDarkMode:h},children:(0,o.jsxs)(s.A,{theme:g,children:[(0,o.jsx)(c.Ay,{}),t]})})},m=()=>{let e=(0,a.useContext)(f);if(!e)throw l.error("useTheme hook used outside of ThemeProvider"),Error("useTheme must be used within a ThemeProvider");return l.debug("useTheme hook accessed"),e}},27156:(e,t,r)=>{r.d(t,{Z:()=>o});var o=function(e){return e.MODELS="models",e.FLOWS="flows",e.CHAT_HISTORY="history",e.THEME="theme",e.ENCRYPTION_KEY="encryption_key",e.MCP_SERVERS="mcp_servers",e.GLOBAL_ENV_VARS="global_env_vars",e.CURRENT_CONVERSATION_ID="current_conversation_id",e.SELECTED_FLOW_ID="selected_flow_id",e.SPEECH_SETTINGS="speech_settings",e.SPOTLIGHT_SERVERS="spotlight_servers",e.PLANNED_EXECUTIONS="planned_executions",e.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",e}({})},29692:(e,t,r)=>{r.d(t,{Zg:()=>o.Z,YM:()=>d,VH:()=>i,Mj:()=>s});var o=r(27156),a=r(12115);let n=(0,r(87021).h)("utils/storage/frontend.ts");function s(e,t){n.verbose("useLocalStorage: Entering method");let[r,o]=(0,a.useState)(t),[s,i]=(0,a.useState)(!0),d=(0,a.useRef)(r);return(0,a.useEffect)(()=>{d.current=r},[r]),(0,a.useEffect)(()=>{(async()=>{n.verbose("loadValue: Entering method");try{let r=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t)))),a=await r.json();r.ok&&o(a.value)}catch(t){n.warn('Error reading storage key "'.concat(e,'":'),t)}finally{i(!1)}})()},[e]),[r,(0,a.useCallback)(async t=>{n.verbose("setValue: Entering method");try{let r=t instanceof Function?t(d.current):t;if(o(r),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:r})})).ok)throw Error("Failed to save value")}catch(t){n.warn('Error setting storage key "'.concat(e,'":'),t)}},[e]),s]}let i=async(e,t)=>{n.verbose("saveItem: Entering method");try{if(!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:t})})).ok)throw Error("Failed to save item")}catch(e){throw n.error("Error saving to storage:",e),e}},d=async(e,t)=>{n.verbose("loadItem: Entering method");try{let r=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t))));if(!r.ok)throw Error("Failed to load item");return(await r.json()).value}catch(e){return n.error("Error loading from storage:",e),t}}},44102:(e,t,r)=>{r.d(t,{A:()=>n}),r(12115);var o=r(10225),a=r(95155);function n(e){let{styles:t,defaultTheme:r={}}=e,n="function"==typeof t?e=>t(null==e||0===Object.keys(e).length?r:e):t;return(0,a.jsx)(o.mL,{styles:n})}},46320:(e,t,r)=>{r.d(t,{A:()=>i,I:()=>s});var o=r(12115),a=r(95155);let n=o.createContext(),s=()=>{let e=o.useContext(n);return null!=e&&e},i=function(e){let{value:t,...r}=e;return(0,a.jsx)(n.Provider,{value:null==t||t,...r})}},89255:(e,t,r)=>{r.d(t,{A:()=>a});var o=r(12115);let a="undefined"!=typeof window?o.useLayoutEffect:o.useEffect},95695:(e,t,r)=>{r.d(t,{A:()=>d}),r(12115);var o=r(54211),a=r(44102),n=r(89505),s=r(95155);function i(e){let t=(0,o.tT)(e);return e!==t&&t.styles?(t.styles.match(/^@layer\s+[^{]*$/)||(t.styles="@layer global{".concat(t.styles,"}")),t):e}let d=function(e){let{styles:t,themeId:r,defaultTheme:o={}}=e,d=(0,n.A)(o),c=r&&d[r]||d,u="function"==typeof t?t(c):t;return c.modularCssLayers&&(u=Array.isArray(u)?u.map(e=>"function"==typeof e?i(e(c)):i(e)):i(u)),(0,s.jsx)(a.A,{styles:u})}},99347:(e,t,r)=>{r.d(t,{A:()=>i});var o,a=r(12115);let n=0,s={...o||(o=r.t(a,2))}.useId;function i(e){if(void 0!==s){let t=s();return null!=e?e:t}let[t,r]=a.useState(e),o=e||t;return a.useEffect(()=>{null==t&&(n+=1,r("mui-".concat(n)))},[t]),o}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8098],{9352:(e,r,t)=>{t.d(r,{Ic:()=>s,kY:()=>n});var a=t(26796);let o=(0,t(87021).h)("frontend/utils/theme"),n={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,a.useTheme)();return o.debug("useThemeUtils called with isDarkMode: ".concat(e)),{getThemeValue:(r,t)=>e?t:r,getThemeColor:r=>{let t=r.split("."),a=n[e?"dark":"light"];for(let e of t)if(!a||"object"!=typeof a||!(e in a))return o.warn("Theme color path not found: ".concat(r)),"";else a=a[e];return a},colors:e?n.dark:n.light,isDarkMode:e}}},9898:(e,r,t)=>{t.d(r,{v:()=>l});var a=t(12115),o=t(17897);let n=(0,t(87021).h)("frontend/hooks/useServerStatus");function s(e){return"stdio"===e.transport?e.args&&e.args.length>0?e.args[0]:"Unknown path":"websocket"===e.transport?e.websocketUrl||"Unknown URL":e.serverUrl||"Unknown URL"}function l(){let[e,r]=(0,a.useState)([]),[t,l]=(0,a.useState)(!0),[i,c]=(0,a.useState)(null),[d,u]=(0,a.useState)(new Set),p=(0,a.useCallback)(async()=>{n.debug("Loading servers"),l(!0),c(null);try{let e=await o.S.loadServerConfigs();if(!e||"error"in e){n.warn("Failed to load server configurations:",null==e?void 0:e.error),c((null==e?void 0:e.error)||"Failed to load server configurations"),l(!1);return}let t=await Promise.all(e.map(async e=>{n.debug("Getting status for server: ".concat(e.name));let r=await o.S.getServerStatus(e.name),t="string"==typeof r?r:r.status,a="object"==typeof r&&r.message?r.message:void 0,l="object"==typeof r&&r.stderrOutput?r.stderrOutput:void 0,i=s(e);return{...e,path:i,status:t,error:a,stderrOutput:l}}));n.debug("Final server states:",t),r(t),l(!1)}catch(e){n.warn("Failed to load servers:",e),c("Failed to load servers"),l(!1)}},[]),f=(0,a.useCallback)(async(t,a)=>{n.debug("Toggling server ".concat(t," to ").concat(a?"enabled":"disabled"));try{let s=e.find(e=>e.name===t);if(!s)return n.warn("Server not found: ".concat(t)),!1;n.debug("Found server ".concat(t,", current disabled state: ").concat(s.disabled));let l=await o.S.updateServerConfig(t,{disabled:!a});if(l.error)return n.warn("Failed to update server config:",[l.error,t]),!1;n.debug("Updating server ".concat(t," state in UI, new disabled state: ").concat(!a)),r(e=>e.map(e=>e.name===t?{...e,disabled:!a}:e)),n.info("Successfully toggled server ".concat(t," to ").concat(a?"enabled":"disabled"));try{let e=await o.S.getServerStatus(t),a="string"==typeof e?e:e.status,n="object"==typeof e&&e.message?e.message:void 0,s="object"==typeof e&&e.stderrOutput?e.stderrOutput:void 0;r(e=>e.map(e=>e.name===t?{...e,status:a,error:n,stderrOutput:s}:e))}catch(e){n.warn("Failed to get status for server ".concat(t," after toggle:"),e)}return!0}catch(e){return n.warn("Failed to toggle server:",e),!1}},[e]),h=(0,a.useCallback)(async t=>{n.debug("Deleting server: ".concat(t));try{if(!e.find(e=>e.name===t))return n.warn("Server not found:",t),!1;let a=await o.S.deleteServerConfig(t);if(a.error)return n.warn("Failed to delete server config:",a.error),!1;return r(e=>e.filter(e=>e.name!==t)),!0}catch(e){return n.warn("Failed to delete server:",e),!1}},[e]),m=(0,a.useCallback)(async e=>{n.debug("Adding server:",e);try{let t=s(e),a={...e,path:t,status:"connecting",tools:[],env:e.env||{}};r(e=>[...e,a]),u(r=>new Set(r).add(e.name));let l=await o.S.updateServerConfig(e.name,e);if(l.error)return n.warn("Failed to update server config:",l.error),r(r=>r.map(r=>r.name===e.name?{...r,status:"error",error:l.error}:r)),u(r=>{let t=new Set(r);return t.delete(e.name),t}),!1;n.info("Successfully added server ".concat(e.name));try{let t=await o.S.getServerStatus(e.name),a="string"==typeof t?t:t.status,n="object"==typeof t&&t.message?t.message:void 0,s="object"==typeof t&&t.stderrOutput?t.stderrOutput:void 0;r(r=>r.map(r=>r.name===e.name?{...r,status:a,error:n,stderrOutput:s}:r))}catch(r){n.warn("Failed to get status for server ".concat(e.name," after adding:"),r)}return u(r=>{let t=new Set(r);return t.delete(e.name),t}),!0}catch(t){return n.warn("Failed to add server:",t),r(r=>r.map(r=>r.name===e.name?{...r,status:"error",error:t instanceof Error?t.message:"Unknown error during server addition"}:r)),u(r=>{let t=new Set(r);return t.delete(e.name),t}),!1}},[]),x=(0,a.useCallback)(async(e,t)=>{let a=null!=t?t:e.name,l=a!==e.name;n.debug("Updating server:",e);try{r(r=>r.map(r=>r.name===a?{...e,path:s(e),status:r.status,error:r.error,stderrOutput:r.stderrOutput}:r));let t=await o.S.updateServerConfig(a,e);if(t.error){if(n.warn("Failed to update server config:",t.error),l)return await p(),!1;return r(r=>r.map(r=>r.name===e.name?{...r,status:"error",error:t.error}:r)),!1}n.info("Successfully updated config for server ".concat(e.name));try{let t=await o.S.getServerStatus(e.name),a="string"==typeof t?t:t.status,n="object"==typeof t&&t.message?t.message:void 0,s="object"==typeof t&&t.stderrOutput?t.stderrOutput:void 0;r(r=>r.map(r=>r.name===e.name?{...r,status:a,error:n,stderrOutput:s}:r))}catch(r){n.warn("Failed to get status for server ".concat(e.name," after config update:"),r)}return!0}catch(a){if(n.warn("Failed to update server:",a),l)return await p(),!1;let t=a instanceof Error?a.message:"Unknown error during update";return r(r=>r.map(r=>r.name===e.name?{...r,status:"error",error:t}:r)),!1}},[p]),g=(0,a.useCallback)(async(e,t)=>{let a=t&&t.trim()?t.trim():"";n.debug("Setting folder for server ".concat(e," to ").concat(a||"(none)"));try{let t=await o.S.updateServerConfig(e,{folder:a});if("error"in t&&t.error)return n.warn("Failed to update server folder:",t.error),!1;return r(r=>r.map(r=>r.name===e?{...r,folder:a||void 0}:r)),!0}catch(e){return n.warn("Failed to set server folder:",e),!1}},[]),b=(0,a.useCallback)(async(t,a)=>{n.debug("Saving environment variables for server: ".concat(t),a);try{if(!e.find(e=>e.name===t))return n.warn("Server not found: ".concat(t)),!1;let s=await o.S.updateServerConfig(t,{env:a});if(s.error)return n.warn("Failed to update server config:",s.error),!1;return n.debug("Updating environment variables in UI for server: ".concat(t)),r(e=>e.map(e=>e.name===t?{...e,env:a}:e)),n.info("Successfully saved environment variables for server: ".concat(t)),!0}catch(e){return n.warn("Failed to save environment variables:",e),!1}},[e]);return(0,a.useEffect)(()=>{p()},[p]),{servers:e,isLoading:t,loadError:i,connectingServers:d,loadServers:p,toggleServer:f,retryServer:(0,a.useCallback)(async e=>{n.debug("Retrying server status for: ".concat(e));try{let t=await o.S.getServerStatus(e),a="string"==typeof t?t:t.status,n="object"==typeof t&&t.message?t.message:void 0,s="object"==typeof t&&t.stderrOutput?t.stderrOutput:void 0;return r(r=>r.map(r=>r.name===e?{...r,status:a,error:n,stderrOutput:s}:r)),!0}catch(e){return n.warn("Failed to retry server status:",e),!1}},[]),deleteServer:h,addServer:m,updateServer:x,setServerFolder:g,saveEnv:b}}},22573:(e,r,t)=>{t.d(r,{A:()=>p});var a=t(95155);t(12115);var o=t(33567),n=t(94049),s=t(41983),l=t(25635),i=t(28548),c=t(50430),d=t(63186),u=t(91665);let p=e=>{let{label:r,count:t,expanded:p,onToggle:f,showFolderIcon:h=!1,children:m}=e,x=(0,o.A)();return(0,a.jsxs)(n.default,{sx:{mb:1.5},children:[(0,a.jsxs)(n.default,{role:"button",tabIndex:0,"aria-expanded":p,onClick:f,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),f())},sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.75,borderRadius:1,cursor:"pointer",userSelect:"none",backgroundColor:x.palette.background.default,border:"1px solid ".concat(x.palette.divider),"&:hover":{backgroundColor:x.palette.action.hover}},children:[(0,a.jsx)(s.A,{size:"small","aria-label":p?"Collapse section":"Expand section",onClick:e=>{e.stopPropagation(),f()},sx:{transition:"transform 0.2s",transform:p?"rotate(0deg)":"rotate(-90deg)"},children:(0,a.jsx)(d.A,{fontSize:"small"})}),h&&(0,a.jsx)(u.A,{fontSize:"small",sx:{color:"text.secondary"}}),(0,a.jsx)(l.default,{variant:"subtitle2",sx:{fontWeight:600},children:r}),(0,a.jsx)(i.A,{label:t,size:"small",sx:{height:20,fontSize:"0.7rem"}})]}),(0,a.jsx)(c.A,{in:p,unmountOnExit:!0,children:(0,a.jsx)(n.default,{sx:{pt:1.5},children:m})})]})}},26796:(e,r,t)=>{t.r(r),t.d(r,{ThemeProvider:()=>f,useTheme:()=>h});var a=t(95155),o=t(12115),n=t(87021),s=t(7160),l=t(29197),i=t(9352),c=t(84563),d=t(29692);let u=(0,n.h)("frontend/contexts/ThemeContext"),p=(0,o.createContext)(void 0),f=e=>{let{children:r}=e,[t,n]=(0,o.useState)(!1),[f,h]=(0,o.useState)(!1);(0,o.useEffect)(()=>{(async()=>{u.debug("Loading theme preference from storage");let e=await (0,d.YM)(d.Zg.THEME,"light");u.info("Theme loaded from storage: ".concat(e));let r="dark"===e;h(r),r?document.documentElement.classList.add("dark-theme"):document.documentElement.classList.remove("dark-theme"),n(!0)})()},[]);let m=(0,o.useMemo)(()=>(function(e){let r="dark"===e?i.kY.dark:i.kY.light;return(0,l.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:r.background,paper:r.paperBackground},text:{primary:r.foreground,secondary:r.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)"}}}}})})(f?"dark":"light"),[f]);return u.debug("Rendering ThemeProvider with isDarkMode: ".concat(f)),(0,a.jsx)(p.Provider,{value:{toggleTheme:()=>{h(e=>{let r=!e,t=r?"dark":"light";return u.info("Toggling theme to: ".concat(t)),r?document.documentElement.classList.add("dark-theme"):document.documentElement.classList.remove("dark-theme"),(0,d.VH)(d.Zg.THEME,t),r})},isDarkMode:f},children:(0,a.jsxs)(s.A,{theme:m,children:[(0,a.jsx)(c.Ay,{}),r]})})},h=()=>{let e=(0,o.useContext)(p);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}},38459:(e,r,t)=>{function a(e,r){let t=[],a=new Map;for(let o of e){let{key:e,label:n}=r(o),s=a.get(e);s||(s={key:e,label:n,items:[]},a.set(e,s),t.push(s)),s.items.push(o)}return t}function o(e){let r=(null!=e?e:"").trim().charAt(0).toUpperCase();return r>="A"&&r<="Z"?{key:"letter:".concat(r),label:r}:{key:"letter:#",label:"#"}}function n(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Ungrouped",a=new Map,o=[];for(let t of e){var n;let e=null==(n=r(t))?void 0:n.trim();if(e){let r=a.get(e);r?r.push(t):a.set(e,[t])}else o.push(t)}let s=Array.from(a.keys()).sort((e,r)=>e.localeCompare(r)).map(e=>({key:"folder:".concat(e),label:e,items:a.get(e)}));return o.length>0&&s.push({key:"folder:__ungrouped__",label:t,items:o}),s}function s(e,r){let t=new Set;for(let o of e){var a;let e=null==(a=r(o))?void 0:a.trim();e&&t.add(e)}return Array.from(t).sort((e,r)=>e.localeCompare(r))}t.d(r,{Az:()=>a,Je:()=>n,po:()=>o,yF:()=>s})},62640:(e,r,t)=>{t.d(r,{A:()=>z});var a=t(95155),o=t(12115),n=t(2778),s=t(52363),l=t(65036),i=t(94049),c=t(78470),d=t(41983),u=t(9562),p=t(28548),f=t(22003),h=t(4474),m=t(25635),x=t(41602),g=t(73707),b=t(49501),v=t(17681),y=t(75912),j=t(70690),w=t(80007),S=t(74482),A=t(40171),k=t(36944);let C=(0,t(87021).h)("frontend/components/shared/FolderPickerDialog"),z=e=>{let{open:r,title:t="Choose a folder",selectFiles:z=!1,initialPath:F,onClose:T,onSelect:E}=e,[O,U]=(0,o.useState)(null),[P,R]=(0,o.useState)(""),[W,I]=(0,o.useState)(!1),[M,D]=(0,o.useState)(null),L=(0,o.useCallback)(async e=>{I(!0),D(null);try{let r=e?"?path=".concat(encodeURIComponent(e)):"",t=await fetch("/api/browse".concat(r)),a=await t.json();if(!t.ok||a.error)return void D(a.error||"HTTP ".concat(t.status));U(a),R(a.path)}catch(e){C.warn("Browse failed",e),D("Could not reach the backend to browse folders.")}finally{I(!1)}},[]);(0,o.useEffect)(()=>{r?L(F||void 0):(U(null),D(null))},[r,F,L]);let N=e=>{E(e),T()};return(0,a.jsxs)(n.A,{open:r,onClose:T,maxWidth:"sm",fullWidth:!0,children:[(0,a.jsx)(s.A,{children:t}),(0,a.jsxs)(l.A,{dividers:!0,sx:{display:"flex",flexDirection:"column",gap:1.5},children:[(0,a.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,a.jsx)(c.A,{title:"Up one folder",children:(0,a.jsx)("span",{children:(0,a.jsx)(d.A,{size:"small",disabled:!(null==O?void 0:O.parent)||W,onClick:()=>(null==O?void 0:O.parent)&&void L(O.parent),children:(0,a.jsx)(A.A,{fontSize:"small"})})})}),(0,a.jsx)(c.A,{title:"Home folder",children:(0,a.jsx)("span",{children:(0,a.jsx)(d.A,{size:"small",disabled:W,onClick:()=>void L(),children:(0,a.jsx)(k.A,{fontSize:"small"})})})}),(0,a.jsx)(u.A,{fullWidth:!0,size:"small",value:P,onChange:e=>R(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),L(P))},placeholder:"Type a path and press Enter"})]}),O&&O.drives.length>0&&(0,a.jsx)(i.default,{sx:{display:"flex",gap:.75,flexWrap:"wrap"},children:O.drives.map(e=>(0,a.jsx)(p.A,{label:e,size:"small",variant:O.path.toLowerCase().startsWith(e.toLowerCase())?"filled":"outlined",onClick:()=>void L(e)},e))}),M&&(0,a.jsx)(f.A,{severity:"error",children:M}),(0,a.jsxs)(i.default,{sx:{minHeight:240,maxHeight:"45vh",overflow:"auto",border:1,borderColor:"divider",borderRadius:1},children:[W&&(0,a.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,a.jsx)(h.default,{size:24})}),!W&&O&&0===O.entries.length&&(0,a.jsx)(m.default,{variant:"body2",color:"text.secondary",sx:{p:2},children:"This folder is empty."}),!W&&(0,a.jsx)(x.A,{dense:!0,disablePadding:!0,children:null==O?void 0:O.entries.map(e=>(0,a.jsxs)(g.A,{disabled:!e.isDirectory&&!z,onClick:()=>e.isDirectory?void L(e.path):N(e.path),children:[(0,a.jsx)(b.A,{sx:{minWidth:34},children:e.isDirectory?(0,a.jsx)(w.A,{fontSize:"small",color:"primary"}):(0,a.jsx)(S.A,{fontSize:"small"})}),(0,a.jsx)(v.A,{primary:e.name,primaryTypographyProps:{noWrap:!0}})]},e.path))})]})]}),(0,a.jsxs)(y.A,{children:[(0,a.jsx)(j.A,{onClick:T,children:"Cancel"}),(0,a.jsx)(j.A,{variant:"contained",disabled:!O||W,onClick:()=>O&&N(O.path),children:"Select this folder"})]})]})}},71651:(e,r,t)=>{t.d(r,{A:()=>g});var a=t(95155),o=t(12115),n=t(94049),s=t(25635),l=t(80777),i=t(9562),c=t(78470),d=t(41983),u=t(70690),p=t(86946),f=t(4484),h=t(80007),m=t(79299),x=t(62640);let g=e=>{let{roots:r,onChange:t}=e,g=Array.isArray(r)?r:[],[b,v]=(0,o.useState)(null),y=(e,r)=>{t(g.map((t,a)=>a===e?r:t))};return(0,a.jsxs)(n.default,{children:[(0,a.jsxs)(n.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,a.jsx)(h.A,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,a.jsx)(s.default,{variant:"subtitle1",children:"Workspace folders"})]}),(0,a.jsxs)(s.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1.5},children:["Limit which folders this server may work in. Advisory only — the server is told these paths via MCP roots; it is not a hard sandbox. Leave empty to default to the server's own root dir. Supports ",(0,a.jsx)("code",{children:"${global:VAR}"}),"."]}),(0,a.jsx)(l.A,{spacing:1,children:g.map((e,r)=>(0,a.jsxs)(n.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,a.jsx)(i.A,{size:"small",fullWidth:!0,placeholder:"/path/to/folder or file:///path",value:e,onChange:e=>y(r,e.target.value)}),(0,a.jsx)(c.A,{title:"Browse folders (on the FLUJO machine)",children:(0,a.jsx)(d.A,{size:"small",onClick:()=>v(r),"aria-label":"browse for folder",children:(0,a.jsx)(m.A,{fontSize:"small"})})}),(0,a.jsx)(c.A,{title:"Remove",children:(0,a.jsx)(d.A,{size:"small",onClick:()=>t(g.filter((e,t)=>t!==r)),"aria-label":"remove workspace folder",children:(0,a.jsx)(f.A,{fontSize:"small"})})})]},r))}),(0,a.jsx)(u.A,{size:"small",startIcon:(0,a.jsx)(p.A,{}),onClick:()=>t([...g,""]),sx:{mt:1},children:"Add folder"}),(0,a.jsx)(x.A,{open:null!==b,title:"Choose a workspace folder",initialPath:null!==b&&g[b]||void 0,onClose:()=>v(null),onSelect:e=>{null!==b&&y(b,e)}})]})}},80411:(e,r,t)=>{t.d(r,{Fu:()=>i,M8:()=>n,Qv:()=>s,Qz:()=>l});let a=(0,t(87021).h)("frontend/components/mcp/MCPServerManager/utils/serverUpdates"),o=new Map;async function n(e){let r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],t=Date.now(),n={},s=[];for(let a of new Set(e.filter(Boolean))){let e=o.get(a);!r&&e&&t-e.at<6e5?n[a]=e.info:s.push(a)}if(s.length>0)try{let e=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"checkUpdatesBatch",paths:s})}),r=await e.json();if(e.ok&&r.results)for(let[e,a]of Object.entries(r.results))o.set(e,{at:t,info:a}),n[e]=a;else a.warn("Batch update check failed",r.error)}catch(e){a.warn("Batch update check request failed",e)}return n}async function s(e){try{let r=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"pullUpdates",savePath:e})}),t=await r.json();if(!r.ok)return{success:!1,error:t.error||"Failed to pull updates"};return{success:!0,oldSha:t.oldSha,newSha:t.newSha,updated:t.updated}}catch(e){return{success:!1,error:e.message||"Failed to pull updates"}}}async function l(e,r,t){let o=e.match(/github\.com[:/]([^/]+)\/([^/]+?)(?:\.git)?\/?$/i);if(!o)return null;try{let e=await fetch("https://api.github.com/repos/".concat(o[1],"/").concat(o[2],"/compare/").concat(r,"...").concat(t));if(!e.ok)return null;let a=await e.json(),n=Array.isArray(a.commits)?a.commits:[];return{behindBy:"number"==typeof a.total_commits?a.total_commits:null,commits:n.slice(-10).reverse().map(e=>{var r;return{sha:(e.sha||"").slice(0,7),message:((null==(r=e.commit)?void 0:r.message)||"").split("\n")[0]}})}}catch(e){return a.debug("GitHub compare preview failed (non-fatal)",e),null}}function i(e){return e?e.slice(0,7):""}},81956:(e,r,t)=>{t.d(r,{A:()=>y});var a=t(95155),o=t(12115),n=t(36314),s=t(86973),l=t(49501),i=t(17681),c=t(21067),d=t(2778),u=t(52363),p=t(65036),f=t(9562),h=t(75912),m=t(70690),x=t(9693),g=t(91665),b=t(7517),v=t(8190);let y=e=>{let{anchorEl:r,open:t,currentFolder:y,folders:j,onClose:w,onAssign:S}=e,[A,k]=(0,o.useState)(!1),[C,z]=(0,o.useState)(""),F=e=>{S(e),w()},T=()=>{let e=C.trim();e&&(k(!1),F(e))};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.A,{anchorEl:r,open:t,onClose:w,children:[j.length>0&&j.map(e=>(0,a.jsxs)(s.A,{onClick:()=>F(e),selected:e===y,children:[(0,a.jsx)(l.A,{children:e===y?(0,a.jsx)(x.A,{fontSize:"small"}):(0,a.jsx)(g.A,{fontSize:"small"})}),(0,a.jsx)(i.A,{primary:e})]},e)),j.length>0&&(0,a.jsx)(c.A,{}),(0,a.jsxs)(s.A,{onClick:()=>{z(""),k(!0)},children:[(0,a.jsx)(l.A,{children:(0,a.jsx)(b.A,{fontSize:"small"})}),(0,a.jsx)(i.A,{primary:"New folder…"})]}),y&&(0,a.jsxs)(s.A,{onClick:()=>F(void 0),children:[(0,a.jsx)(l.A,{children:(0,a.jsx)(v.A,{fontSize:"small"})}),(0,a.jsx)(i.A,{primary:"Remove from folder"})]})]}),(0,a.jsxs)(d.A,{open:A,onClose:()=>k(!1),maxWidth:"xs",fullWidth:!0,children:[(0,a.jsx)(u.A,{children:"New folder"}),(0,a.jsx)(p.A,{children:(0,a.jsx)(f.A,{autoFocus:!0,margin:"dense",label:"Folder name",fullWidth:!0,value:C,onChange:e=>z(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),T())}})}),(0,a.jsxs)(h.A,{children:[(0,a.jsx)(m.A,{onClick:()=>k(!1),children:"Cancel"}),(0,a.jsx)(m.A,{variant:"contained",disabled:!C.trim(),onClick:T,children:"Create"})]})]})]})}},86631:(e,r,t)=>{t.d(r,{b:()=>n,c:()=>s});var a=t(56290);async function o(e,r){try{let t=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok||!t.body)return null;let o=null;return await (0,a.z)(t,e=>{if("stdout"===e.type||"stderr"===e.type)r(e.data);else if("result"===e.type){var t;o={success:e.success,output:null!=(t=e.commandOutput)?t:""}}}),o}catch(e){return console.error("Error streaming git command:",e),null}}let n=async(e,r,t)=>{if(t){let a=await o({action:"installStream",savePath:e,installCommand:r},t);if(a)return{success:a.success,message:a.success?{type:"success",text:"Dependencies installed successfully. You can now build the server."}:{type:"error",text:"Error installing dependencies. You can still try to build the server."},output:a.output||"No output was returned from the installation process."}}try{let t=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"install",savePath:e,installCommand:r})}),a=await t.json();if(!t.ok)throw Error(a.error||"Failed to install dependencies");return{success:!0,message:{type:"success",text:"Dependencies installed successfully. You can now build the server."},output:a.commandOutput||"No output was returned from the installation process."}}catch(e){return console.error("Error installing dependencies:",e),{success:!1,message:{type:"error",text:"Error installing dependencies: ".concat(e.message||"Unknown error",". You can still try to build the server.")},output:e instanceof Response?await e.text():(null==e?void 0:e.message)||"Unknown error"}}},s=async(e,r,t)=>{if(t){let a=await o({action:"buildStream",savePath:e,buildCommand:r},t);if(a)return{success:a.success,message:a.success?{type:"success",text:"Server built successfully."}:{type:"error",text:"Error building server."},output:a.output||"No output was returned from the build process."}}try{let t=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"build",savePath:e,buildCommand:r})}),a=await t.json();if(!t.ok)throw Error(a.error||"Failed to build repository");return{success:!0,message:{type:"success",text:"Server built successfully."},output:a.commandOutput||"No output was returned from the build process."}}catch(e){return console.error("Error building server:",e),{success:!1,message:{type:"error",text:"Error building server: ".concat(e.message||"Unknown error",".")},output:e instanceof Response?await e.text():(null==e?void 0:e.message)||"Unknown error"}}}},94035:(e,r,t)=>{t.d(r,{O:()=>s});var a=t(12115),o=t(17897);let n=(0,t(87021).h)("frontend/hooks/useServerTools");function s(e){let[r,t]=(0,a.useState)([]),[s,l]=(0,a.useState)(!1),[i,c]=(0,a.useState)(null),[d,u]=(0,a.useState)(null),[p,f]=(0,a.useState)(null),[h,m]=(0,a.useState)(0),[x,g]=(0,a.useState)(!1),b=(0,a.useRef)(null);(0,a.useEffect)(()=>()=>{b.current&&clearTimeout(b.current)},[]);let v=(0,a.useCallback)(async function(){let a=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!e){t([]),c(null);return}if(f(e),!a&&d&&new Date().getTime()-d.getTime()<200&&r.length>0&&e===p)return void n.debug("Rate limiting tool refresh for server: ".concat(e));n.debug("Loading tools for server: ".concat(e)),l(!0),c(null);try{let r=await o.S.listServerTools(e);if(e!==p)return void n.debug("Server changed during tool loading from ".concat(e," to ").concat(p));if(r.error)n.warn("Error loading tools for ".concat(e,":"),r.error),c(r.error),t([]);else{let a=r.tools||[];n.debug("Loaded ".concat(a.length," tools for ").concat(e)),t(a),u(new Date),m(0)}}catch(r){if(e!==p)return void n.debug("Server changed during tool loading from ".concat(e," to ").concat(p));n.warn("Failed to load tools for server ".concat(e,":"),r),c("Failed to load tools: ".concat(r instanceof Error?r.message:"Unknown error")),t([])}finally{e===p&&l(!1)}},[e,d,r.length,p]),y=(0,a.useCallback)(()=>{if(!e)return;b.current&&(clearTimeout(b.current),b.current=null),g(!0);let r=Math.min(1e3*Math.pow(2,h),1e4);return n.debug("Retrying tool load for ".concat(e," in ").concat(r,"ms (attempt ").concat(h+1,")")),b.current=setTimeout(()=>{m(e=>e+1),v(!0),g(!1)},r),()=>{b.current&&clearTimeout(b.current)}},[e,h,v]),j=(0,a.useCallback)(async(r,t,a)=>{if(!e)return{success:!1,output:"",error:"No server selected"};n.debug("Testing tool ".concat(r," on server ").concat(e," with params:"),t);try{let s=await o.S.callTool(e,r,t,a);if(s.error)return n.warn("Error calling tool ".concat(r,":"),s.error),{success:!1,output:"",error:s.error};return n.debug("Tool ".concat(r," executed successfully:"),s),{success:!0,output:JSON.stringify(s,null,2)}}catch(e){return n.error("Exception calling tool ".concat(r,":"),e),{success:!1,output:"",error:e instanceof Error?e.message:"Unknown error occurred"}}},[e]);return(0,a.useEffect)(()=>{n.debug("Server name changed to: ".concat(e||"null")),b.current&&(clearTimeout(b.current),b.current=null),m(0),g(!1),e?(f(e),v()):(n.debug("Clearing tools as no server is selected"),t([]),c(null),f(null))},[e,v]),{tools:r,isLoading:s||x,error:i,loadTools:v,retryLoadTools:y,isRetrying:x,retryCount:h,testTool:j}}},94929:(e,r,t)=>{t.d(r,{default:()=>s});var a=t(95155);t(12115);var o=t(94049),n=t(4474);let s=e=>{let{size:r="medium",color:t="primary",className:s="",sx:l={}}=e,i="white"===t?{color:"#fff",...l}:l;return(0,a.jsxs)(o.default,{component:"span",sx:{display:"inline-block",lineHeight:0,...i},className:s,role:"status",children:[(0,a.jsx)(n.default,{size:{small:16,medium:24,large:36}[r],color:"white"===t?"inherit":t,"aria-hidden":"true"}),(0,a.jsx)(o.default,{component:"span",sx:{position:"absolute",width:"1px",height:"1px",padding:0,margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:0},children:"Loading..."})]})}},95906:(e,r,t)=>{t.d(r,{A:()=>eo});var a=t(95155),o=t(12115),n=t(87021),s=t(9352),l=t(36741),i=t(12857),c=t(48563),d=t(76530),u=t(14915),p=t(4484),f=t(80412),h=t(13548),m=t(20099),x=t(11414),g=t(26188),b=t(52277),v=t(89296),y=t(97714),j=t(94929),w=t(81956),S=t(17897),A=t(28548),k=t(67891),C=t(84318),z=t(4543),F=t(8415);let T=e=>{let{transport:r,size:t="small"}=e,o=(()=>{switch(r){case"stdio":return{label:"STDIO",icon:(0,a.jsx)(k.A,{fontSize:"small"}),color:"#1976d2",bgColor:"#e3f2fd"};case"websocket":return{label:"WebSocket",icon:(0,a.jsx)(C.A,{fontSize:"small"}),color:"#2e7d32",bgColor:"#e8f5e8"};case"sse":return{label:"SSE",icon:(0,a.jsx)(z.A,{fontSize:"small"}),color:"#f57c00",bgColor:"#fff3e0"};case"streamable":return{label:"HTTP Stream",icon:(0,a.jsx)(F.A,{fontSize:"small"}),color:"#00796b",bgColor:"#e0f2f1"};default:return{label:"UNKNOWN",icon:(0,a.jsx)(k.A,{fontSize:"small"}),color:"#757575",bgColor:"#f5f5f5"}}})();return(0,a.jsx)(A.A,{icon:o.icon,label:o.label,size:t,sx:{backgroundColor:o.bgColor,color:o.color,fontWeight:500,fontSize:"small"===t?"0.75rem":"0.875rem",height:"small"===t?24:32,"& .MuiChip-icon":{color:o.color}}})};var E=t(2778),O=t(52363),U=t(65036),P=t(75912),R=t(70690),W=t(94049),I=t(25635),M=t(22003),D=t(99944),L=t(22822),N=t(41602),B=t(23820),H=t(49501),J=t(17681),_=t(16186),q=t(80411),Y=t(86631);let V=(0,n.h)("frontend/components/mcp/MCPServerManager/ServerUpdateDialog"),K=e=>{let{open:r,onClose:t,serverName:n,rootPath:s,installCommand:i,buildCommand:d,enabled:u,updateInfo:p,onToggle:f,onUpdated:h}=e,[m,x]=(0,o.useState)(null),[g,b]=(0,o.useState)(!1),[v,w]=(0,o.useState)(!1),[S,k]=(0,o.useState)(!1),[C,z]=(0,o.useState)(null),[F,T]=(0,o.useState)({}),[K,Q]=(0,o.useState)(""),$=!!(i&&i.trim()),G=!!(d&&d.trim()),Z=[{key:"stop",label:"Stop server",active:u},{key:"pull",label:"Pull latest changes",active:!0},{key:"install",label:"Install dependencies (".concat(i,")"),active:$},{key:"build",label:"Build (".concat(d,")"),active:G},{key:"restart",label:"Restart server",active:u}];(0,o.useEffect)(()=>{r&&(b(!1),w(!1),k(!1),z(null),T({}),Q(""))},[r,n]),(0,o.useEffect)(()=>{if(r&&p.remoteUrl&&p.localSha&&p.remoteSha){let e=!1;return(0,q.Qz)(p.remoteUrl,p.localSha,p.remoteSha).then(r=>{e||x(r)}),()=>{e=!0}}x(null)},[r,p.remoteUrl,p.localSha,p.remoteSha]);let X=(0,o.useCallback)((e,r)=>{T(t=>({...t,[e]:r}))},[]),ee=(0,o.useCallback)((e,r)=>{Q(t=>t+(t?"\n":"")+"--- ".concat(e," ---\n")+(r||"").trim()+"\n")},[]),er=async()=>{w(!0),z(null),V.info("Starting update for server ".concat(n));let e=(e,r)=>{X(e,"error"),z(r),w(!1)};try{u&&(X("stop","running"),await Promise.resolve(f(!1)),X("stop","done")),X("pull","running");let r=await (0,q.Qv)(s);if(!r.success)return void e("pull",r.error||"Failed to pull updates");if(ee("Pull","Updated ".concat((0,q.Fu)(r.oldSha)," -> ").concat((0,q.Fu)(r.newSha))),X("pull","done"),$){X("install","running");let r=await (0,Y.b)(s,i.trim());if(ee("Install",r.output),!r.success)return void e("install",r.message.text);X("install","done")}if(G){X("build","running");let r=await (0,Y.c)(s,d.trim());if(ee("Build",r.output),!r.success)return void e("build",r.message.text);X("build","done")}u&&(X("restart","running"),await Promise.resolve(f(!0)),X("restart","done")),V.info("Update completed for server ".concat(n)),k(!0),w(!1),null==h||h()}catch(e){V.error("Update failed for server ".concat(n),e),z(e.message||"Update failed"),w(!1)}},et=v||S||Object.keys(F).length>0,ea=p.hasLocalChanges&&!g;return(0,a.jsxs)(E.A,{open:r,onClose:v?void 0:t,maxWidth:"sm",fullWidth:!0,onClick:e=>e.stopPropagation(),children:[(0,a.jsxs)(O.A,{component:"div",sx:{display:"flex",alignItems:"center",gap:1},children:[(0,a.jsx)(y.A,{color:"primary"}),"Update ",n]}),(0,a.jsxs)(U.A,{children:[(0,a.jsxs)(W.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:1,flexWrap:"wrap"},children:[(0,a.jsx)(A.A,{size:"small",label:(0,q.Fu)(p.localSha),sx:{fontFamily:"monospace"}}),(0,a.jsx)(I.default,{variant:"body2",color:"text.secondary",children:"→"}),(0,a.jsx)(A.A,{size:"small",color:"primary",label:(0,q.Fu)(p.remoteSha),sx:{fontFamily:"monospace"}}),p.branch&&"HEAD"!==p.branch&&(0,a.jsxs)(I.default,{variant:"body2",color:"text.secondary",children:["on ",(0,a.jsx)("code",{children:p.branch})]}),(null==m?void 0:m.behindBy)!=null&&(0,a.jsxs)(I.default,{variant:"body2",color:"text.secondary",children:["(",m.behindBy," commit",1===m.behindBy?"":"s"," behind)"]})]}),p.repoRoot&&p.repoRoot.replace(/\\/g,"/").replace(/\/+$/,"").toLowerCase()!==s.replace(/\\/g,"/").replace(/\/+$/,"").toLowerCase()&&(0,a.jsxs)(I.default,{variant:"body2",color:"text.secondary",sx:{mb:1},children:["This server lives inside a larger repository — the update pulls"," ",(0,a.jsx)("code",{children:p.repoRoot})," as a whole (other servers from the same repository are updated along with it)."]}),m&&m.commits.length>0&&!et&&(0,a.jsx)(W.default,{sx:{mb:2,p:1,borderRadius:1,border:"1px solid",borderColor:"divider",maxHeight:160,overflow:"auto"},children:m.commits.map(e=>(0,a.jsxs)(I.default,{variant:"body2",sx:{fontSize:"0.8rem"},noWrap:!0,title:e.message,children:[(0,a.jsx)("code",{children:e.sha})," ",e.message]},e.sha))}),p.hasLocalChanges&&!et&&(0,a.jsxs)(M.A,{severity:"warning",sx:{mb:2},children:[(0,a.jsxs)(I.default,{variant:"body2",sx:{mb:1},children:["This repository has local changes to tracked files. Updating will ",(0,a.jsx)("strong",{children:"discard"})," them. Untracked files (e.g. a ",(0,a.jsx)("code",{children:".env"})," you created) and all FLUJO settings for this server are kept."]}),(0,a.jsx)(W.default,{component:"ul",sx:{m:0,pl:3,maxHeight:100,overflow:"auto"},children:p.dirtyFiles.map(e=>(0,a.jsx)("li",{children:(0,a.jsx)(I.default,{variant:"body2",component:"span",sx:{fontFamily:"monospace",fontSize:"0.8rem"},children:e})},e))}),(0,a.jsx)(D.A,{sx:{mt:1},control:(0,a.jsx)(L.A,{size:"small",checked:g,onChange:e=>b(e.target.checked)}),label:(0,a.jsx)(I.default,{variant:"body2",children:"Discard my local changes and update"})})]}),(0,a.jsx)(N.A,{dense:!0,disablePadding:!0,children:Z.filter(e=>e.active).map(e=>(0,a.jsxs)(B.Ay,{disableGutters:!0,sx:{py:.25},children:[(0,a.jsx)(H.A,{sx:{minWidth:32},children:(e=>{switch(e){case"running":return(0,a.jsx)(j.default,{size:"small",color:"primary"});case"done":return(0,a.jsx)(l.A,{color:"success",fontSize:"small"});case"error":return(0,a.jsx)(c.A,{color:"error",fontSize:"small"});default:return(0,a.jsx)(_.A,{color:"disabled",fontSize:"small"})}})(F[e.key])}),(0,a.jsx)(J.A,{primary:e.label,primaryTypographyProps:{variant:"body2",noWrap:!0,title:e.label}})]},e.key))}),C&&(0,a.jsxs)(M.A,{severity:"error",sx:{mt:2,whiteSpace:"pre-wrap"},children:[C,u&&(0,a.jsx)(I.default,{variant:"body2",sx:{mt:1},children:"The server was left stopped. Adjust the install/build commands via Edit, then re-enable it."})]}),S&&(0,a.jsxs)(M.A,{severity:"success",sx:{mt:2},children:["Server updated successfully",u?" and restarted":"","."]}),K&&(0,a.jsx)(W.default,{sx:{mt:2,p:1,borderRadius:1,bgcolor:"background.paper",border:"1px solid",borderColor:"divider",fontFamily:"monospace",fontSize:"0.75rem",whiteSpace:"pre-wrap",overflow:"auto",maxHeight:200},children:K})]}),(0,a.jsxs)(P.A,{children:[(0,a.jsx)(R.A,{onClick:t,disabled:v,children:S?"Close":"Cancel"}),!S&&(0,a.jsx)(R.A,{variant:"contained",color:"primary",startIcon:(0,a.jsx)(y.A,{}),onClick:er,disabled:v||ea,children:v?"Updating…":C?"Retry Update":"Update"})]})]})};var Q=t(80422),$=t(33567),G=t(29767),Z=t(84578),X=t(78470),ee=t(41983),er=t(9957),et=t(1702);let ea=(0,n.h)("frontend/components/mcp/MCPServerManager/ServerCard"),eo=e=>{let{name:r,status:n,path:k,enabled:C,transport:z,onToggle:F=()=>{},onRetry:D=()=>{},onDelete:N=()=>{},onClick:B,onEdit:H=()=>{},onAuthenticate:J,pickerMode:_=!1,error:Y,stderrOutput:V,authorizationUrl:eo,selected:en=!1,onSelect:es,selectionMode:el=!1,hasOAuthTokens:ei=!1,exposeAsMcpServer:ec=!1,enableMcpApps:ed=!1,updateInfo:eu,installCommand:ep,buildCommand:ef,onUpdated:eh,folder:em,folders:ex=[],onSetFolder:eg,builtIn:eb=!1}=e,[ev,ey]=(0,o.useState)(!1),[ej,ew]=(0,o.useState)(null),[eS,eA]=(0,o.useState)(!1),[ek,eC]=(0,o.useState)(!1),[ez,eF]=(0,o.useState)(""),[eT,eE]=(0,o.useState)("success"),[eO,eU]=(0,o.useState)(!1),[eP,eR]=(0,o.useState)(!1),[eW,eI]=(0,o.useState)(ec),[eM,eD]=(0,o.useState)(ed);(0,$.A)(),(0,o.useEffect)(()=>{eI(ec)},[ec]),(0,o.useEffect)(()=>{eD(ed)},[ed]);let eL="".concat(window.location.origin,"/mcp-proxy/").concat(encodeURIComponent(r)),eN=async e=>{eI(e);let t=await S.S.updateServerConfig(r,{exposeAsMcpServer:e});"success"in t&&t.success?(eF(e?"Server is now exposed to external apps.":"Server is no longer exposed."),eE("success")):(eI(!e),eF("Failed to update exposure setting."),eE("error")),eC(!0)},eB=async e=>{eD(e);let t=await S.S.updateServerConfig(r,{enableMcpApps:e});"success"in t&&t.success?(eF(e?"This server may now render interactive apps in chat (sandboxed).":"Interactive apps disabled for this server."),eE("success")):(eD(!e),eF("Failed to update the MCP Apps setting."),eE("error")),eC(!0)},eH=()=>{navigator.clipboard.writeText(eL),eF("Endpoint URL copied to clipboard."),eE("success"),eC(!0)},eJ={connected:"success.main",disconnected:"text.secondary",error:"error.main",connecting:"info.main",initialization:"info.main",requires_authentication:"warning.main"}[n];(0,o.useEffect)(()=>{if(("connecting"===n||"initialization"===n)&&C&&!_){eU(!0);let e=setTimeout(()=>{ea.debug("Polling status for server: ".concat(r)),D()},2e3);return()=>{clearTimeout(e),eU(!1)}}"connecting"!==n&&"initialization"!==n&&eU(!1)},[n,C,r,D]);let[e_,eq]=(0,o.useState)(null);(0,o.useEffect)(()=>()=>{e_&&clearTimeout(e_)},[e_]);let eY=async e=>{e.stopPropagation(),ea.debug("Reset OAuth tokens button clicked for server: ".concat(r)),eR(!0);try{let e=await fetch("/api/oauth/reset",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({serverName:r})});if(!e.ok){let r=await e.json();throw Error(r.error||"Failed to reset OAuth tokens")}let t=await e.json();ea.info("OAuth tokens reset successfully for ".concat(r),t),eF("OAuth tokens reset successfully. Server will require re-authentication."),eE("success"),eC(!0),setTimeout(()=>{D()},500)}catch(e){ea.error("Failed to reset OAuth tokens for ".concat(r),e),eF("Failed to reset OAuth tokens: ".concat(e instanceof Error?e.message:"Unknown error")),eE("error"),eC(!0)}finally{eR(!1)}},{getThemeValue:eV,getThemeColor:eK,colors:eQ}=(0,s.Ic)(),e$=()=>{ea.debug("Server restart initiated for: ".concat(r)),F(!1),setTimeout(()=>{F(!0),ea.info("Server ".concat(r," restarted"))},1e3)};return(0,a.jsxs)(G.A,{role:_?"button":void 0,"aria-pressed":_?en:void 0,sx:{cursor:"pointer",height:_?"100%":void 0,transition:"box-shadow 0.3s ease, border-color 0.12s ease",border:e=>_&&en?"2px solid ".concat(e.palette.primary.main):"2px solid transparent","&:hover":{boxShadow:3}},onClick:()=>{ea.debug("Server card clicked: ".concat(r)),B()},children:[(0,a.jsxs)(Z.A,{sx:{pb:1},children:[(0,a.jsxs)(W.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",mb:1},children:[(0,a.jsxs)(W.default,{sx:{display:"flex",alignItems:"center",flex:1},children:[el&&es&&(0,a.jsx)(L.A,{checked:en,onClick:e=>e.stopPropagation(),onChange:e=>es(e.target.checked),size:"small",sx:{mr:1,p:.5}}),(0,a.jsx)(I.default,{variant:"h6",component:"h3",sx:{flex:1},children:r})]}),(0,a.jsxs)(W.default,{sx:{display:"flex",flexDirection:"column",alignItems:"flex-end",gap:.5},children:[(0,a.jsxs)(W.default,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(null==eu?void 0:eu.updateAvailable)&&(0,a.jsx)(X.A,{title:"Update available: ".concat((0,q.Fu)(eu.localSha)," → ").concat((0,q.Fu)(eu.remoteSha),". Click to update."),children:(0,a.jsx)(A.A,{icon:(0,a.jsx)(y.A,{}),label:"Update",color:"warning",size:"small",onClick:e=>{e.stopPropagation(),ea.debug("Update badge clicked for server: ".concat(r)),eA(!0)}})}),eb?(0,a.jsx)(X.A,{title:"FLUJO's built-in server — always available, cannot be edited or removed.",children:(0,a.jsx)(A.A,{label:"Built-in",color:"primary",size:"small"})}):(0,a.jsx)(T,{transport:z,size:"small"})]}),(0,a.jsxs)(W.default,{sx:{display:"flex",alignItems:"center"},children:["connected"===n&&(0,a.jsx)(l.A,{color:"success",sx:{mr:.5},fontSize:"small"}),"disconnected"===n&&(0,a.jsx)(i.A,{color:"action",sx:{mr:.5},fontSize:"small"}),"error"===n&&(0,a.jsx)(c.A,{color:"error",sx:{mr:.5},fontSize:"small"}),"requires_authentication"===n&&(0,a.jsx)(f.A,{color:"warning",sx:{mr:.5},fontSize:"small"}),("connecting"===n||"initialization"===n)&&(0,a.jsx)(j.default,{size:"small",color:"primary",sx:{mr:.5}}),(0,a.jsx)(I.default,{variant:"body2",color:eJ,children:"requires_authentication"===n?"Requires Authentication":n})]})]})]}),(0,a.jsx)(I.default,{variant:"body2",color:"text.secondary",sx:{mb:1,fontSize:"0.875rem"},noWrap:!0,title:eb?void 0:k,children:eb?"FLUJO's own backend API — flow authoring, execution and server management as MCP tools.":k}),eb&&!_&&(0,a.jsxs)(W.default,{sx:{mt:1,mb:1,p:1,borderRadius:1,border:"1px solid",borderColor:"divider"},onClick:e=>e.stopPropagation(),children:[(0,a.jsxs)(W.default,{sx:{display:"flex",alignItems:"center"},children:[(0,a.jsx)(x.A,{fontSize:"small",sx:{mr:.5,color:"primary.main"}}),(0,a.jsx)(X.A,{title:"External MCP clients (Claude Code, Claude Desktop, Cursor, …) can drive FLUJO through this local endpoint.",children:(0,a.jsx)(I.default,{variant:"body2",sx:{fontWeight:500},children:"Exposed to external apps"})})]}),(0,a.jsxs)(W.default,{sx:{display:"flex",alignItems:"center",mt:.5},children:[(0,a.jsx)(I.default,{variant:"caption",sx:{flex:1,fontFamily:"monospace",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:eL,children:eL}),(0,a.jsx)(X.A,{title:"Copy endpoint URL",children:(0,a.jsx)(ee.A,{size:"small",onClick:eH,children:(0,a.jsx)(b.A,{fontSize:"small"})})})]})]}),!eb&&!_&&(0,a.jsxs)(W.default,{sx:{mt:1,mb:1,p:1,borderRadius:1,border:"1px solid",borderColor:"divider"},onClick:e=>e.stopPropagation(),children:[(0,a.jsxs)(W.default,{sx:{display:"flex",alignItems:"center"},children:[(0,a.jsx)(x.A,{fontSize:"small",sx:{mr:.5,color:eW?"primary.main":"text.disabled"}}),(0,a.jsx)(er.A,{checked:eW,onChange:e=>eN(e.target.checked),size:"small"}),(0,a.jsx)(X.A,{title:"Re-expose this server's tools to external MCP clients (Claude Desktop, Cursor, …) at a local URL.",children:(0,a.jsx)(I.default,{variant:"body2",sx:{fontWeight:500},children:"Expose to external apps"})})]}),eW&&(0,a.jsxs)(W.default,{sx:{display:"flex",alignItems:"center",mt:.5},children:[(0,a.jsx)(I.default,{variant:"caption",sx:{flex:1,fontFamily:"monospace",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:eL,children:eL}),(0,a.jsx)(X.A,{title:"Copy endpoint URL",children:(0,a.jsx)(ee.A,{size:"small",onClick:eH,children:(0,a.jsx)(b.A,{fontSize:"small"})})})]})]}),!eb&&!_&&(0,a.jsx)(W.default,{sx:{mt:1,mb:1,p:1,borderRadius:1,border:"1px solid",borderColor:"divider"},onClick:e=>e.stopPropagation(),children:(0,a.jsxs)(W.default,{sx:{display:"flex",alignItems:"center"},children:[(0,a.jsx)(g.A,{fontSize:"small",sx:{mr:.5,color:eM?"primary.main":"text.disabled"}}),(0,a.jsx)(er.A,{checked:eM,onChange:e=>eB(e.target.checked),size:"small"}),(0,a.jsx)(X.A,{title:"Allow this server's tools to render interactive apps (MCP Apps / ui:// resources) in chat. Rendered read-only in a strict sandbox. Only enable for servers you trust.",children:(0,a.jsx)(I.default,{variant:"body2",sx:{fontWeight:500},children:"Render interactive apps"})})]})}),"error"===n&&(0,a.jsxs)(W.default,{sx:{mt:1,mb:1},children:[(0,a.jsxs)(W.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:.5},children:[(0,a.jsx)(I.default,{variant:"body2",fontWeight:"medium",color:"error",children:"Error:"}),(0,a.jsx)(R.A,{size:"small",color:"primary",onClick:e=>{e.stopPropagation(),ea.debug("View full error clicked for server: ".concat(r)),ey(!0)},children:"View Full Error"})]}),(0,a.jsx)(W.default,{sx:{maxHeight:"80px",overflow:"auto",p:1,borderRadius:1,bgcolor:e=>eK("error.background"),color:e=>eK("error.text"),border:"1px solid",borderColor:e=>eK("error.border"),fontSize:"0.75rem",fontWeight:500,whiteSpace:"pre-wrap"},children:Y||"Unknown error"})]}),"requires_authentication"===n&&!_&&(0,a.jsxs)(W.default,{sx:{mt:1,mb:1},children:[(0,a.jsx)(W.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:1},children:(0,a.jsx)(I.default,{variant:"body2",fontWeight:"medium",color:"warning.main",children:"Authentication Required"})}),(0,a.jsxs)(R.A,{variant:"contained",color:"warning",size:"small",startIcon:(0,a.jsx)(h.A,{}),onClick:async e=>{if(e.stopPropagation(),ea.debug("Authenticate button clicked for server: ".concat(r)),J)J();else try{let e=await fetch("/api/oauth/initiate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({serverName:r})});if(!e.ok){let r=await e.json();throw Error(r.error||"Failed to initiate OAuth")}let{authorizationUrl:a,alreadyAuthorized:o}=await e.json();if(o||!a){ea.info("Server ".concat(r," already authorized, no popup needed")),e$();return}let{openOAuthPopup:n}=await t.e(8198).then(t.bind(t,68198));await n({url:a,windowName:"oauth_".concat(r),onSuccess:e=>{ea.info("OAuth authentication successful for ".concat(r),e),ea.info("Automatically restarting server ".concat(r," after OAuth completion")),e$()},onError:e=>{ea.error("OAuth authentication failed for ".concat(r),e),eF("OAuth authentication failed"),eE("error"),eC(!0)}})}catch(e){ea.error("Failed to start OAuth authentication for ".concat(r),e),eF("Failed to start OAuth authentication"),eE("error"),eC(!0)}},sx:{width:"100%"},children:["Authenticate with ",r]})]})]}),!eb&&!_&&(0,a.jsxs)(et.A,{sx:{justifyContent:"space-between",px:2,py:1},children:[(0,a.jsxs)(W.default,{sx:{display:"flex",alignItems:"center"},children:[(0,a.jsx)(er.A,{checked:C,onClick:e=>e.stopPropagation(),onChange:e=>{ea.debug("Server ".concat(r," toggle changed to: ").concat(e.target.checked)),F(e.target.checked)},color:"primary",size:"small"}),(0,a.jsx)(I.default,{variant:"body2",sx:{ml:.5,fontWeight:500,color:C?"primary.main":"text.secondary"},children:C?"Enabled":"Disabled"}),C&&(0,a.jsx)(X.A,{title:"Restart server",children:(0,a.jsx)(ee.A,{size:"small",onClick:e=>{e.stopPropagation(),ea.debug("Restart button clicked for server: ".concat(r)),e$()},sx:{ml:1},children:(0,a.jsx)(d.A,{fontSize:"small"})})})]}),(0,a.jsxs)(W.default,{children:[(0,a.jsx)(X.A,{title:"Retry connection",children:(0,a.jsx)(ee.A,{color:"primary",onClick:e=>{e.stopPropagation(),ea.debug("Retry button clicked for server: ".concat(r)),e_&&clearTimeout(e_),eU(!0),D();let t=setTimeout(()=>{"connecting"!==n&&"initialization"!==n&&eU(!1),eq(null)},1e4);eq(t)},disabled:eO,size:"small",children:eO?(0,a.jsx)(j.default,{size:"small",color:"primary"}):(0,a.jsx)(d.A,{})})}),"streamable"===z&&ei&&(0,a.jsx)(X.A,{title:"Reset OAuth tokens",children:(0,a.jsx)(ee.A,{color:"warning",onClick:eY,disabled:eP,size:"small",children:eP?(0,a.jsx)(j.default,{size:"small",color:"primary"}):(0,a.jsx)(m.A,{})})}),eg&&(0,a.jsx)(X.A,{title:em?"Folder: ".concat(em):"Move to folder",children:(0,a.jsx)(ee.A,{color:em?"primary":"default",onClick:e=>{e.stopPropagation(),ew(e.currentTarget)},size:"small",children:(0,a.jsx)(v.A,{})})}),(0,a.jsx)(X.A,{title:"Edit server",children:(0,a.jsx)(ee.A,{color:"primary",onClick:e=>{e.stopPropagation(),H()},size:"small",children:(0,a.jsx)(u.A,{})})}),(0,a.jsx)(X.A,{title:"Delete server",children:(0,a.jsx)(ee.A,{color:"error",onClick:e=>{e.stopPropagation(),N()},size:"small",children:(0,a.jsx)(p.A,{})})})]})]}),eg&&(0,a.jsx)(w.A,{anchorEl:ej,open:!!ej,currentFolder:em,folders:ex,onClose:()=>ew(null),onAssign:e=>eg(e)}),(0,a.jsxs)(E.A,{open:ev,onClose:()=>{ea.debug("Error modal closed for server: ".concat(r)),ey(!1)},maxWidth:"md",fullWidth:!0,onClick:e=>e.stopPropagation(),children:[(0,a.jsxs)(O.A,{component:"div",children:["Error Details for ",r]}),(0,a.jsxs)(U.A,{children:[(0,a.jsx)(W.default,{sx:{p:2,borderRadius:1,bgcolor:e=>eK("error.background"),color:e=>eK("error.text"),border:"1px solid",borderColor:e=>eK("error.border"),fontFamily:"monospace",fontSize:"0.875rem",fontWeight:500,whiteSpace:"pre-wrap",overflow:"auto",maxHeight:"300px",mb:2},children:Y||"Unknown error"}),V&&(0,a.jsxs)(W.default,{sx:{mt:2},children:[(0,a.jsx)(I.default,{variant:"h6",gutterBottom:!0,children:"Stderr Output:"}),(0,a.jsx)(W.default,{sx:{p:2,borderRadius:1,bgcolor:"background.paper",border:"1px solid",borderColor:"divider",fontFamily:"monospace",fontSize:"0.875rem",whiteSpace:"pre-wrap",overflow:"auto",maxHeight:"300px"},children:V})]})]}),(0,a.jsxs)(P.A,{children:[(0,a.jsx)(R.A,{onClick:()=>ey(!1),children:"Close"}),(0,a.jsx)(R.A,{onClick:()=>{let e=[Y||"Unknown error",V?"\n\nStderr Output:\n".concat(V):""].join("");navigator.clipboard.writeText(e),ea.debug("Error copied to clipboard for server: ".concat(r)),eF("Error message copied to clipboard"),eE("success"),eC(!0)},color:"primary",children:"Copy to Clipboard"})]})]}),eu&&(0,a.jsx)(K,{open:eS,onClose:()=>eA(!1),serverName:r,rootPath:k,installCommand:ep,buildCommand:ef,enabled:C,updateInfo:eu,onToggle:F,onUpdated:eh}),(0,a.jsx)(Q.A,{open:ek,autoHideDuration:3e3,onClose:()=>eC(!1),anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,a.jsx)(M.A,{onClose:()=>eC(!1),severity:eT,sx:{width:"100%"},children:ez||"Error message copied to clipboard"})})]})}},97104:(e,r,t)=>{t.d(r,{Xk:()=>o});var a=t(12115);function o(e,r){let[t,o]=(0,a.useState)(()=>(function(e,r){try{let t=window.localStorage.getItem(e);if(null===t)return r;return JSON.parse(t)}catch(e){return r}})(e,r));return[t,(0,a.useCallback)(r=>{o(t=>{let a="function"==typeof r?r(t):r;try{window.localStorage.setItem(e,JSON.stringify(a))}catch(e){}return a})},[e])]}}}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8187],{9352:(e,t,r)=>{r.d(t,{Ic:()=>i,kY:()=>n});var o=r(26796);let a=(0,r(87021).h)("frontend/utils/theme"),n={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 i(){let{isDarkMode:e}=(0,o.useTheme)();return a.debug("useThemeUtils called with isDarkMode: ".concat(e)),{getThemeValue:(t,r)=>e?r:t,getThemeColor:t=>{let r=t.split("."),o=n[e?"dark":"light"];for(let e of r)if(!o||"object"!=typeof o||!(e in o))return a.warn("Theme color path not found: ".concat(t)),"";else o=o[e];return o},colors:e?n.dark:n.light,isDarkMode:e}}},26796:(e,t,r)=>{r.r(t),r.d(t,{ThemeProvider:()=>m,useTheme:()=>f});var o=r(95155),a=r(12115),n=r(87021),i=r(7160),s=r(29197),d=r(9352),c=r(84563),l=r(29692);let u=(0,n.h)("frontend/contexts/ThemeContext"),h=(0,a.createContext)(void 0),m=e=>{let{children:t}=e,[r,n]=(0,a.useState)(!1),[m,f]=(0,a.useState)(!1);(0,a.useEffect)(()=>{(async()=>{u.debug("Loading theme preference from storage");let e=await (0,l.YM)(l.Zg.THEME,"light");u.info("Theme loaded from storage: ".concat(e));let t="dark"===e;f(t),t?document.documentElement.classList.add("dark-theme"):document.documentElement.classList.remove("dark-theme"),n(!0)})()},[]);let g=(0,a.useMemo)(()=>(function(e){let t="dark"===e?d.kY.dark:d.kY.light;return(0,s.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)"}}}}})})(m?"dark":"light"),[m]);return u.debug("Rendering ThemeProvider with isDarkMode: ".concat(m)),(0,o.jsx)(h.Provider,{value:{toggleTheme:()=>{f(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,l.VH)(l.Zg.THEME,r),t})},isDarkMode:m},children:(0,o.jsxs)(i.A,{theme:g,children:[(0,o.jsx)(c.Ay,{}),t]})})},f=()=>{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}},27156:(e,t,r)=>{r.d(t,{Z:()=>o});var o=function(e){return e.MODELS="models",e.FLOWS="flows",e.CHAT_HISTORY="history",e.THEME="theme",e.ENCRYPTION_KEY="encryption_key",e.MCP_SERVERS="mcp_servers",e.GLOBAL_ENV_VARS="global_env_vars",e.CURRENT_CONVERSATION_ID="current_conversation_id",e.SELECTED_FLOW_ID="selected_flow_id",e.SPEECH_SETTINGS="speech_settings",e.SPOTLIGHT_SERVERS="spotlight_servers",e.PLANNED_EXECUTIONS="planned_executions",e}({})},29692:(e,t,r)=>{r.d(t,{Zg:()=>o.Z,YM:()=>d,VH:()=>s,Mj:()=>i});var o=r(27156),a=r(12115);let n=(0,r(87021).h)("utils/storage/frontend.ts");function i(e,t){n.verbose("useLocalStorage: Entering method");let[r,o]=(0,a.useState)(t),[i,s]=(0,a.useState)(!0),d=(0,a.useRef)(r);return(0,a.useEffect)(()=>{d.current=r},[r]),(0,a.useEffect)(()=>{(async()=>{n.verbose("loadValue: Entering method");try{let r=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t)))),a=await r.json();r.ok&&o(a.value)}catch(t){n.warn('Error reading storage key "'.concat(e,'":'),t)}finally{s(!1)}})()},[e]),[r,(0,a.useCallback)(async t=>{n.verbose("setValue: Entering method");try{let r=t instanceof Function?t(d.current):t;if(o(r),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:r})})).ok)throw Error("Failed to save value")}catch(t){n.warn('Error setting storage key "'.concat(e,'":'),t)}},[e]),i]}let s=async(e,t)=>{n.verbose("saveItem: Entering method");try{if(!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:t})})).ok)throw Error("Failed to save item")}catch(e){throw n.error("Error saving to storage:",e),e}},d=async(e,t)=>{n.verbose("loadItem: Entering method");try{let r=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t))));if(!r.ok)throw Error("Failed to load item");return(await r.json()).value}catch(e){return n.error("Error loading from storage:",e),t}}},48187:(e,t,r)=>{r.r(t),r.d(t,{default:()=>v});var o=r(95155),a=r(33567),n=r(63417),i=r(30354),s=r(25635),d=r(94049),c=r(41983),l=r(26796),u=r(87021),h=r(35620),m=r(36525),f=r(52619),g=r.n(f),p=r(20063),k=r(60530);let x=(0,u.h)("frontend/components/Navigation"),y=[{name:"Models",path:"/models",tour:"nav-models"},{name:"MCP",path:"/mcp",tour:"nav-mcp"},{name:"Flows",path:"/flows",tour:"nav-flows"},{name:"Executions",path:"/executions",tour:"nav-executions"},{name:"Chat",path:"/chat",tour:"nav-chat"},{name:"Docs",path:"/docs",tour:"nav-docs"},{name:"Settings",path:"/settings",tour:"nav-settings"}];function v(){let{toggleTheme:e,isDarkMode:t}=(0,l.useTheme)();(0,a.A)();let r=(0,p.usePathname)(),u=(0,p.useRouter)();x.debug("Rendering Navigation component with pathname: ".concat(r));let f=e=>t=>{t.defaultPrevented||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||0!==t.button||(0,k.L_)(()=>u.push(e))&&t.preventDefault()};return(0,o.jsx)(n.A,{position:"sticky",color:"default",elevation:1,children:(0,o.jsxs)(i.A,{children:[(0,o.jsx)(s.default,{variant:"h6",component:g(),href:"/",onClick:f("/"),sx:{color:"text.primary",textDecoration:"none",flexGrow:0,mr:4,fontWeight:600},children:"FLUJO"}),(0,o.jsx)(d.default,{sx:{flexGrow:1,display:"flex",gap:2},children:y.map(e=>(0,o.jsx)(s.default,{component:g(),href:e.path,"data-tour":e.tour,onClick:f(e.path),sx:{color:r===e.path?"primary.main":"text.primary",textDecoration:"none",fontWeight:r===e.path?600:400,"&:hover":{color:"primary.main"}},children:e.name},e.path))}),(0,o.jsx)(c.A,{onClick:()=>{x.debug("Theme toggle clicked, current mode: ".concat(t?"dark":"light")),e()},color:"inherit",children:t?(0,o.jsx)(m.A,{}):(0,o.jsx)(h.A,{})})]})})}},60530:(e,t,r)=>{r.d(t,{L_:()=>i,QO:()=>a,bH:()=>n});let o=null;function a(e){o=e}function n(e){o===e&&(o=null)}function i(e){return!!o&&(o(e),!0)}}}]);
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8187],{9352:(e,t,r)=>{r.d(t,{Ic:()=>i,kY:()=>n});var o=r(26796);let a=(0,r(87021).h)("frontend/utils/theme"),n={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 i(){let{isDarkMode:e}=(0,o.useTheme)();return a.debug("useThemeUtils called with isDarkMode: ".concat(e)),{getThemeValue:(t,r)=>e?r:t,getThemeColor:t=>{let r=t.split("."),o=n[e?"dark":"light"];for(let e of r)if(!o||"object"!=typeof o||!(e in o))return a.warn("Theme color path not found: ".concat(t)),"";else o=o[e];return o},colors:e?n.dark:n.light,isDarkMode:e}}},26796:(e,t,r)=>{r.r(t),r.d(t,{ThemeProvider:()=>m,useTheme:()=>f});var o=r(95155),a=r(12115),n=r(87021),i=r(7160),s=r(29197),d=r(9352),c=r(84563),l=r(29692);let u=(0,n.h)("frontend/contexts/ThemeContext"),h=(0,a.createContext)(void 0),m=e=>{let{children:t}=e,[r,n]=(0,a.useState)(!1),[m,f]=(0,a.useState)(!1);(0,a.useEffect)(()=>{(async()=>{u.debug("Loading theme preference from storage");let e=await (0,l.YM)(l.Zg.THEME,"light");u.info("Theme loaded from storage: ".concat(e));let t="dark"===e;f(t),t?document.documentElement.classList.add("dark-theme"):document.documentElement.classList.remove("dark-theme"),n(!0)})()},[]);let g=(0,a.useMemo)(()=>(function(e){let t="dark"===e?d.kY.dark:d.kY.light;return(0,s.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)"}}}}})})(m?"dark":"light"),[m]);return u.debug("Rendering ThemeProvider with isDarkMode: ".concat(m)),(0,o.jsx)(h.Provider,{value:{toggleTheme:()=>{f(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,l.VH)(l.Zg.THEME,r),t})},isDarkMode:m},children:(0,o.jsxs)(i.A,{theme:g,children:[(0,o.jsx)(c.Ay,{}),t]})})},f=()=>{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}},27156:(e,t,r)=>{r.d(t,{Z:()=>o});var o=function(e){return e.MODELS="models",e.FLOWS="flows",e.CHAT_HISTORY="history",e.THEME="theme",e.ENCRYPTION_KEY="encryption_key",e.MCP_SERVERS="mcp_servers",e.GLOBAL_ENV_VARS="global_env_vars",e.CURRENT_CONVERSATION_ID="current_conversation_id",e.SELECTED_FLOW_ID="selected_flow_id",e.SPEECH_SETTINGS="speech_settings",e.SPOTLIGHT_SERVERS="spotlight_servers",e.PLANNED_EXECUTIONS="planned_executions",e.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",e}({})},29692:(e,t,r)=>{r.d(t,{Zg:()=>o.Z,YM:()=>d,VH:()=>s,Mj:()=>i});var o=r(27156),a=r(12115);let n=(0,r(87021).h)("utils/storage/frontend.ts");function i(e,t){n.verbose("useLocalStorage: Entering method");let[r,o]=(0,a.useState)(t),[i,s]=(0,a.useState)(!0),d=(0,a.useRef)(r);return(0,a.useEffect)(()=>{d.current=r},[r]),(0,a.useEffect)(()=>{(async()=>{n.verbose("loadValue: Entering method");try{let r=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t)))),a=await r.json();r.ok&&o(a.value)}catch(t){n.warn('Error reading storage key "'.concat(e,'":'),t)}finally{s(!1)}})()},[e]),[r,(0,a.useCallback)(async t=>{n.verbose("setValue: Entering method");try{let r=t instanceof Function?t(d.current):t;if(o(r),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:r})})).ok)throw Error("Failed to save value")}catch(t){n.warn('Error setting storage key "'.concat(e,'":'),t)}},[e]),i]}let s=async(e,t)=>{n.verbose("saveItem: Entering method");try{if(!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:t})})).ok)throw Error("Failed to save item")}catch(e){throw n.error("Error saving to storage:",e),e}},d=async(e,t)=>{n.verbose("loadItem: Entering method");try{let r=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t))));if(!r.ok)throw Error("Failed to load item");return(await r.json()).value}catch(e){return n.error("Error loading from storage:",e),t}}},48187:(e,t,r)=>{r.r(t),r.d(t,{default:()=>v});var o=r(95155),a=r(33567),n=r(63417),i=r(30354),s=r(25635),d=r(94049),c=r(41983),l=r(26796),u=r(87021),h=r(35620),m=r(36525),f=r(52619),g=r.n(f),p=r(20063),k=r(60530);let x=(0,u.h)("frontend/components/Navigation"),y=[{name:"Models",path:"/models",tour:"nav-models"},{name:"MCP",path:"/mcp",tour:"nav-mcp"},{name:"Flows",path:"/flows",tour:"nav-flows"},{name:"Executions",path:"/executions",tour:"nav-executions"},{name:"Chat",path:"/chat",tour:"nav-chat"},{name:"Docs",path:"/docs",tour:"nav-docs"},{name:"Settings",path:"/settings",tour:"nav-settings"}];function v(){let{toggleTheme:e,isDarkMode:t}=(0,l.useTheme)();(0,a.A)();let r=(0,p.usePathname)(),u=(0,p.useRouter)();x.debug("Rendering Navigation component with pathname: ".concat(r));let f=e=>t=>{t.defaultPrevented||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||0!==t.button||(0,k.L_)(()=>u.push(e))&&t.preventDefault()};return(0,o.jsx)(n.A,{position:"sticky",color:"default",elevation:1,children:(0,o.jsxs)(i.A,{children:[(0,o.jsx)(s.default,{variant:"h6",component:g(),href:"/",onClick:f("/"),sx:{color:"text.primary",textDecoration:"none",flexGrow:0,mr:4,fontWeight:600},children:"FLUJO"}),(0,o.jsx)(d.default,{sx:{flexGrow:1,display:"flex",gap:2},children:y.map(e=>(0,o.jsx)(s.default,{component:g(),href:e.path,"data-tour":e.tour,onClick:f(e.path),sx:{color:r===e.path?"primary.main":"text.primary",textDecoration:"none",fontWeight:r===e.path?600:400,"&:hover":{color:"primary.main"}},children:e.name},e.path))}),(0,o.jsx)(c.A,{onClick:()=>{x.debug("Theme toggle clicked, current mode: ".concat(t?"dark":"light")),e()},color:"inherit",children:t?(0,o.jsx)(m.A,{}):(0,o.jsx)(h.A,{})})]})})}},60530:(e,t,r)=>{r.d(t,{L_:()=>i,QO:()=>a,bH:()=>n});let o=null;function a(e){o=e}function n(e){o===e&&(o=null)}function i(e){return!!o&&(o(e),!0)}}}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9164],{1877:(e,t,n)=>{n.d(t,{Hm:()=>o,xc:()=>r,yo:()=>i});let a=["key","secret","token","password"],r=e=>a.some(t=>e.toLowerCase().includes(t)),o=e=>r(e)||"authorization"===e.trim().toLowerCase(),i=e=>{if(!e)return e;if(e.includes("_-_-_")){let t=e.split("_-_-_");return 3===t.length?t[2]:e}let t=/^mcp_(.+)_[0-9a-z]+$/.exec(e);if(t&&t[1])return t[1];let n=e.indexOf("__");return n>0&&n+2<e.length?e.slice(n+2):e}},9164:(e,t,n)=>{n.r(t),n.d(t,{StorageProvider:()=>u,default:()=>p,useStorage:()=>y});var a=n(95155),r=n(12115),o=n(29692),i=n(1877),s=n(87021),c=n(31373);let l=(0,s.h)("frontend/contexts/StorageContext"),d=(0,r.createContext)({setKey:async()=>{},changeKey:async()=>!1,verifyKey:async()=>!1,isEncryptionInitialized:async()=>!1,globalEnvVars:{},setGlobalEnvVars:async()=>{},deleteGlobalEnvVar:async()=>{},encryptValue:async()=>null,decryptValue:async()=>null,isUserEncryptionEnabled:async()=>!1,isLoading:!0,settings:{speech:{enabled:!0},update:{checkOnStartup:!1}},settingsHydrated:!1,updateSettings:async()=>{}}),y=()=>(0,r.useContext)(d),u=e=>{let{children:t}=e,[n,s]=(0,r.useState)(!1),[y,u]=(0,r.useState)(!1),[p,h]=(0,r.useState)({}),[g,f]=(0,r.useState)({speech:{enabled:!0},update:{checkOnStartup:!1}}),E=(0,r.useCallback)(async()=>{l.debug("isEncryptionInitialized: Entering method");try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_initialized"})});if(!e.ok)throw Error("Failed to check encryption status");let t=await e.json();return!0===t.initialized}catch(e){return l.warn("isEncryptionInitialized: Failed to check encryption status:",e),!1}},[]),w=(0,r.useCallback)(async e=>{l.debug("setKey: Entering method");try{if(!(await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize",password:e})})).ok)throw Error("Failed to set encryption key")}catch(e){l.warn("setKey: Failed to set encryption key:",e)}},[]),S=(0,r.useCallback)(async(e,t)=>{l.debug("changeKey: Entering method");try{let n=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",oldPassword:e,newPassword:t})});if(!n.ok)throw Error("Failed to change encryption key");let a=await n.json();if(a.success&&sessionStorage.getItem("encryption_token")){let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"authenticate",password:t})});if(e.ok){let t=await e.json();t.success&&t.token&&(sessionStorage.setItem("encryption_token",t.token),sessionStorage.setItem("encryption_authenticated","true"),sessionStorage.removeItem("encryption_key"))}}return!0===a.success}catch(e){return l.warn("changeKey: Failed to change encryption key:",e),!1}},[]),v=(0,r.useCallback)(async e=>{l.debug("verifyKey: Entering method");try{let t=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"verify_password",password:e})});if(!t.ok)throw Error("Failed to verify encryption key");let n=await t.json();return n.valid&&n.token&&(sessionStorage.setItem("encryption_token",n.token),sessionStorage.setItem("encryption_authenticated","true"),sessionStorage.removeItem("encryption_key")),!0===n.valid}catch(e){return l.warn("verifyKey: Failed to verify encryption key:",e),!1}},[]),b=(0,r.useCallback)(async()=>{let e={speech:{enabled:!0},update:{checkOnStartup:!1}};try{var t;let n=await fetch("/api/storage?key=".concat(encodeURIComponent(o.Zg.SPEECH_SETTINGS),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(e))));if(!n.ok)return void l.debug("loadSettings: settings read not ok, keeping defaults",{status:n.status});let a=await n.json();l.debug("Loaded settings from storage",{settings:a.value}),f(null!=(t=a.value)?t:e),u(!0)}catch(e){l.warn("loadSettings: failed to load settings:",e)}},[]);(0,r.useEffect)(()=>{let e=()=>{l.info("Encryption unlocked signal received; reloading settings"),b()};return window.addEventListener(c.ZB,e),()=>window.removeEventListener(c.ZB,e)},[b]),(0,r.useEffect)(()=>{(async()=>{l.debug("loadData: Entering method");try{l.info("Calling initialization API to verify storage");let e=await fetch("/api/init");if(e.ok)l.info("Storage initialization completed successfully");else{let t=await e.json();l.warn("Storage initialization warning:",t.error)}await E()||await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize_default"})});let t=await fetch("/api/env?includeSecrets=false");if(t.ok){let e=await t.json();l.debug("Loaded environment variables",{count:Object.keys(e.variables||{}).length}),h(e.variables||{})}else l.error("loadData: Failed to load environment variables"),h({});await b(),s(!0)}catch(e){l.error("loadData: Error loading data:",e),s(!0)}})()},[E,b]);let k=(0,r.useCallback)(async(e,t)=>{l.debug("encryptValue: Entering method");try{let n=sessionStorage.getItem("encryption_token"),a=sessionStorage.getItem("encryption_key"),r={action:"encrypt",data:e};n?r.token=n:t?r.password=t:a&&(r.password=a);let o=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!o.ok)throw Error("Failed to encrypt value");return(await o.json()).result}catch(e){return l.warn("encryptValue: Failed to encrypt value:",e),null}},[]),m=(0,r.useCallback)(async(e,t)=>(l.debug("decryptValue: Entering method - THIS METHOD IS DEPRECATED"),l.warn("decryptValue: Frontend decryption is deprecated for security reasons"),null),[]),_=(0,r.useCallback)(async()=>{l.debug("isUserEncryptionEnabled: Entering method");try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_user_encryption"})});if(!e.ok)throw Error("Failed to check user encryption status");let t=await e.json();return!0===t.userEncryption}catch(e){return l.warn("isUserEncryptionEnabled: Failed to check user encryption status:",e),!1}},[]),C=(0,r.useCallback)(async e=>{l.debug("setGlobalEnvVars: Entering method");try{await E()||await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize_default"})});let t=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"setAll",variables:e})});if(!t.ok){let e=await t.json();l.error("setGlobalEnvVars: Failed to set environment variables:",e.error);return}let n={};for(let[t,a]of Object.entries(e)){let e="object"==typeof a&&null!==a&&"value"in a?a.value:a,r="object"==typeof a&&null!==a&&"metadata"in a?a.metadata:{isSecret:(0,i.xc)(t)};r.isSecret?n[t]={value:"********",metadata:r}:n[t]={value:e,metadata:r}}h(n)}catch(e){l.error("setGlobalEnvVars: Error setting environment variables:",e)}},[E]),O=(0,r.useCallback)(async e=>{l.debug("deleteGlobalEnvVar: Deleting environment variable: ".concat(e));try{let t=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"delete",key:e})});if(!t.ok){let e=await t.json();l.error("deleteGlobalEnvVar: Failed to delete environment variable:",e.error);return}h(t=>{let n={...t};return delete n[e],n})}catch(e){l.error("deleteGlobalEnvVar: Error deleting environment variable:",e)}},[]),T=(0,r.useCallback)(async e=>{l.debug("updateSettings: Updating settings",{newSettings:e});try{await (0,o.VH)(o.Zg.SPEECH_SETTINGS,e),f(e)}catch(e){l.error("updateSettings: Error updating settings:",e)}},[]);return(0,a.jsx)(d.Provider,{value:{setKey:w,changeKey:S,verifyKey:v,isEncryptionInitialized:E,globalEnvVars:p,setGlobalEnvVars:C,deleteGlobalEnvVar:O,encryptValue:k,decryptValue:m,isUserEncryptionEnabled:_,isLoading:!n,settings:g,settingsHydrated:y,updateSettings:T},children:t})},p=d},27156:(e,t,n)=>{n.d(t,{Z:()=>a});var a=function(e){return e.MODELS="models",e.FLOWS="flows",e.CHAT_HISTORY="history",e.THEME="theme",e.ENCRYPTION_KEY="encryption_key",e.MCP_SERVERS="mcp_servers",e.GLOBAL_ENV_VARS="global_env_vars",e.CURRENT_CONVERSATION_ID="current_conversation_id",e.SELECTED_FLOW_ID="selected_flow_id",e.SPEECH_SETTINGS="speech_settings",e.SPOTLIGHT_SERVERS="spotlight_servers",e.PLANNED_EXECUTIONS="planned_executions",e}({})},29692:(e,t,n)=>{n.d(t,{Zg:()=>a.Z,YM:()=>c,VH:()=>s,Mj:()=>i});var a=n(27156),r=n(12115);let o=(0,n(87021).h)("utils/storage/frontend.ts");function i(e,t){o.verbose("useLocalStorage: Entering method");let[n,a]=(0,r.useState)(t),[i,s]=(0,r.useState)(!0),c=(0,r.useRef)(n);return(0,r.useEffect)(()=>{c.current=n},[n]),(0,r.useEffect)(()=>{(async()=>{o.verbose("loadValue: Entering method");try{let n=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t)))),r=await n.json();n.ok&&a(r.value)}catch(t){o.warn('Error reading storage key "'.concat(e,'":'),t)}finally{s(!1)}})()},[e]),[n,(0,r.useCallback)(async t=>{o.verbose("setValue: Entering method");try{let n=t instanceof Function?t(c.current):t;if(a(n),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:n})})).ok)throw Error("Failed to save value")}catch(t){o.warn('Error setting storage key "'.concat(e,'":'),t)}},[e]),i]}let s=async(e,t)=>{o.verbose("saveItem: Entering method");try{if(!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:t})})).ok)throw Error("Failed to save item")}catch(e){throw o.error("Error saving to storage:",e),e}},c=async(e,t)=>{o.verbose("loadItem: Entering method");try{let n=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t))));if(!n.ok)throw Error("Failed to load item");return(await n.json()).value}catch(e){return o.error("Error loading from storage:",e),t}}},31373:(e,t,n)=>{n.d(t,{UJ:()=>a,ZB:()=>r,bx:()=>i});let a="flujo:encryption-locked",r="flujo:encryption-unlocked",o=!1;function i(){if(o||"function"!=typeof window.fetch)return;o=!0;let e=window.fetch.bind(window);window.fetch=async function(){for(var t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];let o=await e(...n);return 423===o.status&&function(){try{sessionStorage.removeItem("encryption_authenticated"),sessionStorage.removeItem("encryption_token")}catch(e){}window.dispatchEvent(new CustomEvent(a))}(),o}}}}]);
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9164],{1877:(e,t,n)=>{n.d(t,{Hm:()=>o,xc:()=>r,yo:()=>i});let a=["key","secret","token","password"],r=e=>a.some(t=>e.toLowerCase().includes(t)),o=e=>r(e)||"authorization"===e.trim().toLowerCase(),i=e=>{if(!e)return e;if(e.includes("_-_-_")){let t=e.split("_-_-_");return 3===t.length?t[2]:e}let t=/^mcp_(.+)_[0-9a-z]+$/.exec(e);if(t&&t[1])return t[1];let n=e.indexOf("__");return n>0&&n+2<e.length?e.slice(n+2):e}},9164:(e,t,n)=>{n.r(t),n.d(t,{StorageProvider:()=>u,default:()=>p,useStorage:()=>y});var a=n(95155),r=n(12115),o=n(29692),i=n(1877),s=n(87021),c=n(31373);let l=(0,s.h)("frontend/contexts/StorageContext"),d=(0,r.createContext)({setKey:async()=>{},changeKey:async()=>!1,verifyKey:async()=>!1,isEncryptionInitialized:async()=>!1,globalEnvVars:{},setGlobalEnvVars:async()=>{},deleteGlobalEnvVar:async()=>{},encryptValue:async()=>null,decryptValue:async()=>null,isUserEncryptionEnabled:async()=>!1,isLoading:!0,settings:{speech:{enabled:!0},update:{checkOnStartup:!1}},settingsHydrated:!1,updateSettings:async()=>{}}),y=()=>(0,r.useContext)(d),u=e=>{let{children:t}=e,[n,s]=(0,r.useState)(!1),[y,u]=(0,r.useState)(!1),[p,g]=(0,r.useState)({}),[h,f]=(0,r.useState)({speech:{enabled:!0},update:{checkOnStartup:!1}}),E=(0,r.useCallback)(async()=>{l.debug("isEncryptionInitialized: Entering method");try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_initialized"})});if(!e.ok)throw Error("Failed to check encryption status");let t=await e.json();return!0===t.initialized}catch(e){return l.warn("isEncryptionInitialized: Failed to check encryption status:",e),!1}},[]),w=(0,r.useCallback)(async e=>{l.debug("setKey: Entering method");try{if(!(await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize",password:e})})).ok)throw Error("Failed to set encryption key")}catch(e){l.warn("setKey: Failed to set encryption key:",e)}},[]),S=(0,r.useCallback)(async(e,t)=>{l.debug("changeKey: Entering method");try{let n=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",oldPassword:e,newPassword:t})});if(!n.ok)throw Error("Failed to change encryption key");let a=await n.json();if(a.success&&sessionStorage.getItem("encryption_token")){let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"authenticate",password:t})});if(e.ok){let t=await e.json();t.success&&t.token&&(sessionStorage.setItem("encryption_token",t.token),sessionStorage.setItem("encryption_authenticated","true"),sessionStorage.removeItem("encryption_key"))}}return!0===a.success}catch(e){return l.warn("changeKey: Failed to change encryption key:",e),!1}},[]),v=(0,r.useCallback)(async e=>{l.debug("verifyKey: Entering method");try{let t=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"verify_password",password:e})});if(!t.ok)throw Error("Failed to verify encryption key");let n=await t.json();return n.valid&&n.token&&(sessionStorage.setItem("encryption_token",n.token),sessionStorage.setItem("encryption_authenticated","true"),sessionStorage.removeItem("encryption_key")),!0===n.valid}catch(e){return l.warn("verifyKey: Failed to verify encryption key:",e),!1}},[]),b=(0,r.useCallback)(async()=>{let e={speech:{enabled:!0},update:{checkOnStartup:!1}};try{var t;let n=await fetch("/api/storage?key=".concat(encodeURIComponent(o.Zg.SPEECH_SETTINGS),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(e))));if(!n.ok)return void l.debug("loadSettings: settings read not ok, keeping defaults",{status:n.status});let a=await n.json();l.debug("Loaded settings from storage",{settings:a.value}),f(null!=(t=a.value)?t:e),u(!0)}catch(e){l.warn("loadSettings: failed to load settings:",e)}},[]);(0,r.useEffect)(()=>{let e=()=>{l.info("Encryption unlocked signal received; reloading settings"),b()};return window.addEventListener(c.ZB,e),()=>window.removeEventListener(c.ZB,e)},[b]),(0,r.useEffect)(()=>{(async()=>{l.debug("loadData: Entering method");try{l.info("Calling initialization API to verify storage");let e=await fetch("/api/init");if(e.ok)l.info("Storage initialization completed successfully");else{let t=await e.json();l.warn("Storage initialization warning:",t.error)}await E()||await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize_default"})});let t=await fetch("/api/env?includeSecrets=false");if(t.ok){let e=await t.json();l.debug("Loaded environment variables",{count:Object.keys(e.variables||{}).length}),g(e.variables||{})}else l.error("loadData: Failed to load environment variables"),g({});await b(),s(!0)}catch(e){l.error("loadData: Error loading data:",e),s(!0)}})()},[E,b]);let k=(0,r.useCallback)(async(e,t)=>{l.debug("encryptValue: Entering method");try{let n=sessionStorage.getItem("encryption_token"),a=sessionStorage.getItem("encryption_key"),r={action:"encrypt",data:e};n?r.token=n:t?r.password=t:a&&(r.password=a);let o=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!o.ok)throw Error("Failed to encrypt value");return(await o.json()).result}catch(e){return l.warn("encryptValue: Failed to encrypt value:",e),null}},[]),m=(0,r.useCallback)(async(e,t)=>(l.debug("decryptValue: Entering method - THIS METHOD IS DEPRECATED"),l.warn("decryptValue: Frontend decryption is deprecated for security reasons"),null),[]),_=(0,r.useCallback)(async()=>{l.debug("isUserEncryptionEnabled: Entering method");try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_user_encryption"})});if(!e.ok)throw Error("Failed to check user encryption status");let t=await e.json();return!0===t.userEncryption}catch(e){return l.warn("isUserEncryptionEnabled: Failed to check user encryption status:",e),!1}},[]),C=(0,r.useCallback)(async e=>{l.debug("setGlobalEnvVars: Entering method");try{await E()||await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize_default"})});let t=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"setAll",variables:e})});if(!t.ok){let e=await t.json();l.error("setGlobalEnvVars: Failed to set environment variables:",e.error);return}let n={};for(let[t,a]of Object.entries(e)){let e="object"==typeof a&&null!==a&&"value"in a?a.value:a,r="object"==typeof a&&null!==a&&"metadata"in a?a.metadata:{isSecret:(0,i.xc)(t)};r.isSecret?n[t]={value:"********",metadata:r}:n[t]={value:e,metadata:r}}g(n)}catch(e){l.error("setGlobalEnvVars: Error setting environment variables:",e)}},[E]),T=(0,r.useCallback)(async e=>{l.debug("deleteGlobalEnvVar: Deleting environment variable: ".concat(e));try{let t=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"delete",key:e})});if(!t.ok){let e=await t.json();l.error("deleteGlobalEnvVar: Failed to delete environment variable:",e.error);return}g(t=>{let n={...t};return delete n[e],n})}catch(e){l.error("deleteGlobalEnvVar: Error deleting environment variable:",e)}},[]),O=(0,r.useCallback)(async e=>{l.debug("updateSettings: Updating settings",{newSettings:e});try{await (0,o.VH)(o.Zg.SPEECH_SETTINGS,e),f(e)}catch(e){l.error("updateSettings: Error updating settings:",e)}},[]);return(0,a.jsx)(d.Provider,{value:{setKey:w,changeKey:S,verifyKey:v,isEncryptionInitialized:E,globalEnvVars:p,setGlobalEnvVars:C,deleteGlobalEnvVar:T,encryptValue:k,decryptValue:m,isUserEncryptionEnabled:_,isLoading:!n,settings:h,settingsHydrated:y,updateSettings:O},children:t})},p=d},27156:(e,t,n)=>{n.d(t,{Z:()=>a});var a=function(e){return e.MODELS="models",e.FLOWS="flows",e.CHAT_HISTORY="history",e.THEME="theme",e.ENCRYPTION_KEY="encryption_key",e.MCP_SERVERS="mcp_servers",e.GLOBAL_ENV_VARS="global_env_vars",e.CURRENT_CONVERSATION_ID="current_conversation_id",e.SELECTED_FLOW_ID="selected_flow_id",e.SPEECH_SETTINGS="speech_settings",e.SPOTLIGHT_SERVERS="spotlight_servers",e.PLANNED_EXECUTIONS="planned_executions",e.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",e}({})},29692:(e,t,n)=>{n.d(t,{Zg:()=>a.Z,YM:()=>c,VH:()=>s,Mj:()=>i});var a=n(27156),r=n(12115);let o=(0,n(87021).h)("utils/storage/frontend.ts");function i(e,t){o.verbose("useLocalStorage: Entering method");let[n,a]=(0,r.useState)(t),[i,s]=(0,r.useState)(!0),c=(0,r.useRef)(n);return(0,r.useEffect)(()=>{c.current=n},[n]),(0,r.useEffect)(()=>{(async()=>{o.verbose("loadValue: Entering method");try{let n=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t)))),r=await n.json();n.ok&&a(r.value)}catch(t){o.warn('Error reading storage key "'.concat(e,'":'),t)}finally{s(!1)}})()},[e]),[n,(0,r.useCallback)(async t=>{o.verbose("setValue: Entering method");try{let n=t instanceof Function?t(c.current):t;if(a(n),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:n})})).ok)throw Error("Failed to save value")}catch(t){o.warn('Error setting storage key "'.concat(e,'":'),t)}},[e]),i]}let s=async(e,t)=>{o.verbose("saveItem: Entering method");try{if(!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:t})})).ok)throw Error("Failed to save item")}catch(e){throw o.error("Error saving to storage:",e),e}},c=async(e,t)=>{o.verbose("loadItem: Entering method");try{let n=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t))));if(!n.ok)throw Error("Failed to load item");return(await n.json()).value}catch(e){return o.error("Error loading from storage:",e),t}}},31373:(e,t,n)=>{n.d(t,{UJ:()=>a,ZB:()=>r,bx:()=>i});let a="flujo:encryption-locked",r="flujo:encryption-unlocked",o=!1;function i(){if(o||"function"!=typeof window.fetch)return;o=!0;let e=window.fetch.bind(window);window.fetch=async function(){for(var t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];let o=await e(...n);return 423===o.status&&function(){try{sessionStorage.removeItem("encryption_authenticated"),sessionStorage.removeItem("encryption_token")}catch(e){}window.dispatchEvent(new CustomEvent(a))}(),o}}}}]);
|