flujo-ai 3.16.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 +202 -187
- package/.next/app-path-routes-manifest.json +9 -7
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +6 -6
- package/.next/react-loadable-manifest.json +6 -6
- 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 +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 -17
- 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 +2 -2
- package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js +1 -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 +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 +7 -3
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +2 -2
- package/.next/server/app/executions/page.js +2 -2
- 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_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 -2
- 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 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/models/route.js +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 +9 -7
- 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/2859.js +5 -5
- package/.next/server/chunks/3304.js +1 -1
- package/.next/server/chunks/3310.js +35 -0
- 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 +9 -7
- 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/724.js +1 -1
- package/.next/server/chunks/7362.js +8 -8
- package/.next/server/chunks/7506.js +1 -1
- package/.next/server/chunks/7635.js +2 -2
- package/.next/server/chunks/7821.js +1 -0
- package/.next/server/chunks/7982.js +1 -0
- package/.next/server/chunks/8227.js +2 -0
- package/.next/server/chunks/8342.js +1 -0
- 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/9687.js +1 -0
- package/.next/server/chunks/9880.js +1 -0
- package/.next/server/chunks/9938.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/pages-manifest.json +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/1877.js +0 -31
- package/.next/server/chunks/1905.js +0 -2
- package/.next/server/chunks/3243.js +0 -1
- 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/6195.js +0 -37
- 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/8126.js +0 -1
- package/.next/server/chunks/8312.js +0 -5
- package/.next/server/chunks/8434.js +0 -1
- package/.next/server/chunks/9188.js +0 -1
- package/.next/server/chunks/9688.js +0 -2
- package/.next/server/chunks/9989.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-1d349e2d82f7b104.js +0 -1
- package/.next/static/chunks/app/executions/page-4155f9f682ee6f84.js +0 -1
- package/.next/static/chunks/app/flows/page-375150edff9134a3.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/z7fsG7kblb_yxkUhOxn-G/_buildManifest.js +0 -1
- /package/.next/static/{z7fsG7kblb_yxkUhOxn-G → Fdh7zqKv38txmpLAxepeR}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8329],{22573:(e,t,l)=>{"use strict";l.d(t,{A:()=>p});var r=l(95155);l(12115);var n=l(33567),a=l(94049),o=l(41983),s=l(25635),i=l(28548),d=l(50430),c=l(63186),u=l(91665);let p=e=>{let{label:t,count:l,expanded:p,onToggle:x,showFolderIcon:m=!1,children:h}=e,f=(0,n.A)();return(0,r.jsxs)(a.default,{sx:{mb:1.5},children:[(0,r.jsxs)(a.default,{role:"button",tabIndex:0,"aria-expanded":p,onClick:x,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),x())},sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.75,borderRadius:1,cursor:"pointer",userSelect:"none",backgroundColor:f.palette.background.default,border:"1px solid ".concat(f.palette.divider),"&:hover":{backgroundColor:f.palette.action.hover}},children:[(0,r.jsx)(o.A,{size:"small","aria-label":p?"Collapse section":"Expand section",onClick:e=>{e.stopPropagation(),x()},sx:{transition:"transform 0.2s",transform:p?"rotate(0deg)":"rotate(-90deg)"},children:(0,r.jsx)(c.A,{fontSize:"small"})}),m&&(0,r.jsx)(u.A,{fontSize:"small",sx:{color:"text.secondary"}}),(0,r.jsx)(s.default,{variant:"subtitle2",sx:{fontWeight:600},children:t}),(0,r.jsx)(i.A,{label:l,size:"small",sx:{height:20,fontSize:"0.7rem"}})]}),(0,r.jsx)(d.A,{in:p,unmountOnExit:!0,children:(0,r.jsx)(a.default,{sx:{pt:1.5},children:h})})]})}},32098:()=>{},37051:(e,t,l)=>{"use strict";l.r(t),l.d(t,{default:()=>eA});var r=l(95155),n=l(12115),a=l(20063),o=l(2300),s=l(94049),i=l(9562),d=l(56422),c=l(70690),u=l(22003),p=l(86946),x=l(51611),m=l(74879),h=l(33567),f=l(4474),v=l(33077),b=l(25635),g=l(41983),y=l(36314),j=l(86973),A=l(49501),w=l(17681),k=l(21067),C=l(64419),S=l(28466),N=l(45587),U=l(81952),M=l(94885),T=l(15686),I=l(91665),P=l(29767),z=l(84578),K=l(78470),W=l(28548),L=l(1702),D=l(14915),B=l(4484),E=l(89623),O=l(11665);let F=[{id:"openai",label:"OpenAI",provider:"openai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.openai.com/v1",showBaseUrl:!0},{id:"openrouter",label:"OpenRouter",provider:"openrouter",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://openrouter.ai/api/v1",showBaseUrl:!0},{id:"requesty",label:"Requesty",provider:"requesty",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://router.requesty.ai/v1",showBaseUrl:!0},{id:"xai",label:"X.ai",provider:"xai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.x.ai/v1",showBaseUrl:!0},{id:"ollama",label:"Ollama",provider:"ollama",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"http://localhost:11434/v1",showBaseUrl:!0},{id:"litellm",label:"LiteLLM",provider:"litellm",adapter:"openai",sdkLabel:"OpenAI SDK (via LiteLLM Proxy)",baseUrl:"http://localhost:4000/v1",showBaseUrl:!0},{id:"gemini-openai",label:"Gemini (OpenAI Format)",provider:"gemini",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai/",showBaseUrl:!0},{id:"gemini-native",label:"Gemini (Native)",provider:"gemini",adapter:"gemini",sdkLabel:"GenAI SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.0-flash"]},{id:"anthropic-openai",label:"Anthropic (OpenAI Format)",provider:"anthropic",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.anthropic.com/v1/",showBaseUrl:!0},{id:"anthropic-native",label:"Anthropic (Native)",provider:"anthropic",adapter:"anthropic",sdkLabel:"Anthropic SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["claude-opus-4-8","claude-sonnet-4-6","claude-haiku-4-5-20251001","claude-fable-5"]},{id:"claude-subscription",label:"Claude Subscription",provider:"claude-subscription",adapter:"claude-cli",sdkLabel:"Claude CLI",baseUrl:"",showBaseUrl:!1,defaultModels:["opus","sonnet","haiku","fable"]}];function _(e,t){let l=e||"openai",r=t||"openai";return F.find(e=>e.provider===l&&e.adapter===r)||F.find(e=>e.provider===l)||F[0]}var R=l(43076),q=l(87021),$=l(2778),X=l(52363),G=l(65036),H=l(75912),J=l(36741),Z=l(48563);let V=e=>{var t,l,n,a,o,i,d,c,u;let{title:p,attempt:x}=e;return(0,r.jsxs)(s.default,{sx:{mb:2},children:[(0,r.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:.5},children:[x.ok?(0,r.jsx)(J.A,{color:"success",fontSize:"small"}):(0,r.jsx)(Z.A,{color:"error",fontSize:"small"}),(0,r.jsx)(b.default,{variant:"subtitle2",children:p}),"number"==typeof x.status&&(0,r.jsx)(W.A,{size:"small",label:"HTTP ".concat(x.status)}),(0,r.jsx)(W.A,{size:"small",variant:"outlined",label:"".concat(x.durationMs," ms")})]}),x.ok?(0,r.jsxs)(b.default,{variant:"body2",color:"text.secondary",sx:{pl:3},children:["Response: ",x.content?'"'.concat(x.content,'"'):"(empty)"]}):(0,r.jsxs)(s.default,{sx:{pl:3},children:[(0,r.jsx)(b.default,{variant:"body2",color:"error.main",children:null==(t=x.error)?void 0:t.message}),((null==(l=x.error)?void 0:l.code)||(null==(n=x.error)?void 0:n.type))&&(0,r.jsxs)(b.default,{variant:"caption",color:"text.secondary",display:"block",children:[(null==(a=x.error)?void 0:a.type)?"type: ".concat(x.error.type):"",(null==(o=x.error)?void 0:o.type)&&(null==(i=x.error)?void 0:i.code)?" \xb7 ":"",(null==(d=x.error)?void 0:d.code)?"code: ".concat(x.error.code):""]}),(null==(c=x.error)?void 0:c.retryAfter)&&(0,r.jsxs)(b.default,{variant:"caption",color:"text.secondary",display:"block",children:["retry-after: ",x.error.retryAfter,"s"]}),(null==(u=x.error)?void 0:u.body)!==void 0&&(0,r.jsx)(s.default,{component:"pre",sx:{mt:.5,p:1,bgcolor:"action.hover",borderRadius:1,fontSize:"0.7rem",overflowX:"auto",maxHeight:160},children:JSON.stringify(x.error.body,null,2)})]})]})},Y=e=>{let{open:t,modelLabel:l,loading:n,result:a,error:o,onClose:i,onRetry:d}=e;return(0,r.jsxs)($.A,{open:t,onClose:i,maxWidth:"sm",fullWidth:!0,children:[(0,r.jsxs)(X.A,{children:["Test model: ",l]}),(0,r.jsx)(G.A,{dividers:!0,children:n?(0,r.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:2,py:3},children:[(0,r.jsx)(f.default,{size:24}),(0,r.jsx)(b.default,{variant:"body2",children:"Sending a direct test request (SDK + axios)…"})]}):o?(0,r.jsx)(u.A,{severity:"error",children:o}):a?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(u.A,{severity:a.ok?"success":"warning",sx:{mb:2},children:a.diagnosis}),(0,r.jsxs)(b.default,{variant:"caption",color:"text.secondary",display:"block",sx:{mb:2},children:["model: ",a.model,a.baseUrl?" \xb7 ".concat(a.baseUrl):"",a.provider?" \xb7 ".concat(a.provider):""]}),(0,r.jsx)(k.A,{sx:{mb:2}}),(0,r.jsx)(V,{title:"OpenAI SDK (used by flows)",attempt:a.sdk}),(0,r.jsx)(V,{title:"axios (independent cross-check)",attempt:a.axios})]}):null}),(0,r.jsxs)(H.A,{children:[(0,r.jsx)(c.A,{onClick:d,disabled:n,children:"Run again"}),(0,r.jsx)(c.A,{onClick:i,variant:"contained",children:"Close"})]})]})};var Q=l(81956);let ee=(0,q.h)("frontend/components/models/list/ModelCard"),et=e=>{let{model:t,onEdit:l,onDelete:a,folder:o,folders:i=[],onSetFolder:d}=e,[c,u]=(0,n.useState)(!1),[p,x]=(0,n.useState)(!1),[m,h]=(0,n.useState)(null),[f,v]=(0,n.useState)(null),[y,j]=(0,n.useState)(null),A=async()=>{x(!0),v(null),h(null);try{let e=await (0,R.X)().testModel({modelId:t.id});h(e)}catch(e){ee.error("Model test failed",{modelId:t.id,error:e}),v(e instanceof Error?e.message:"Failed to run test")}finally{x(!1)}};return(0,r.jsxs)(P.A,{elevation:2,sx:{height:"100%",display:"flex",flexDirection:"column"},children:[(0,r.jsxs)(z.A,{sx:{flexGrow:1},children:[(0,r.jsx)(b.default,{variant:"h6",gutterBottom:!0,children:t.displayName||t.name}),(0,r.jsx)(b.default,{variant:"body2",color:"text.secondary",sx:{mb:2},style:{display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden",textOverflow:"ellipsis"},children:t.description}),(0,r.jsxs)(s.default,{sx:{mb:1},children:[(0,r.jsxs)(b.default,{variant:"body2",color:"text.secondary",children:["Provider: ",_(t.provider,t.adapter).label]}),t.displayName&&(0,r.jsxs)(b.default,{variant:"body2",color:"text.secondary",noWrap:!0,children:["Model: ",t.name]}),"number"==typeof t.contextWindow&&(0,r.jsxs)(b.default,{variant:"body2",color:"text.secondary",children:["Context: ",t.contextWindow.toLocaleString()," tokens"]})]}),t.baseUrl&&(0,r.jsx)(K.A,{title:t.baseUrl,arrow:!0,placement:"top",children:(0,r.jsxs)(b.default,{variant:"body2",color:"text.secondary",noWrap:!0,children:["Base URL: ",t.baseUrl]})}),o&&(0,r.jsx)(W.A,{icon:(0,r.jsx)(I.A,{}),label:o,size:"small",variant:"outlined",sx:{mt:1,maxWidth:"100%"}})]}),(0,r.jsxs)(L.A,{disableSpacing:!0,children:[(0,r.jsx)(K.A,{title:"Test model (direct SDK call, no flow)",arrow:!0,children:(0,r.jsx)(g.A,{"aria-label":"test",onClick:()=>{u(!0),A()},children:(0,r.jsx)(E.A,{})})}),(0,r.jsx)(g.A,{"aria-label":"edit",onClick:l,children:(0,r.jsx)(D.A,{})}),(0,r.jsx)(g.A,{"aria-label":"delete",onClick:a,children:(0,r.jsx)(B.A,{})}),d&&(0,r.jsx)(K.A,{title:"Move to folder…",arrow:!0,children:(0,r.jsx)(g.A,{"aria-label":"move to folder",onClick:e=>j(e.currentTarget),sx:{ml:"auto"},children:(0,r.jsx)(O.A,{})})})]}),d&&(0,r.jsx)(Q.A,{anchorEl:y,open:!!y,currentFolder:o,folders:i,onClose:()=>j(null),onAssign:d}),(0,r.jsx)(Y,{open:c,modelLabel:t.displayName||t.name,loading:p,result:m,error:f,onClose:()=>u(!1),onRetry:A})]})};var el=l(22573),er=l(38459);let en={"name-asc":"Name (A-Z)","name-desc":"Name (Z-A)",provider:"Provider","context-desc":"Context (largest)","context-asc":"Context (smallest)"},ea=e=>e.displayName||e.name||"",eo=e=>_(e.provider,e.adapter).label,es=(0,q.h)("frontend/components/models/list/ModelList"),ei=e=>{let{models:t,isLoading:l,onAdd:a,onUpdate:i,onDelete:d,folders:c=[],onSetFolder:u}=e,p=(0,h.A)(),[x,m]=(0,n.useState)("name-asc"),[P,z]=(0,n.useState)("none"),[K,W]=(0,n.useState)(null),[L,D]=(0,n.useState)(null),[B,E]=(0,n.useState)(new Set),O=e=>{m(e),W(null)},F=e=>{z(e),D(null)},_=async e=>{let t=await i(e);t.success||es.error("Failed to update model in ModelList",t.error)},R=(0,n.useMemo)(()=>(function(e,t){return[...e].sort((e,l)=>{switch(t){case"name-asc":return ea(e).localeCompare(ea(l));case"name-desc":return ea(l).localeCompare(ea(e));case"provider":return eo(e).localeCompare(eo(l))||ea(e).localeCompare(ea(l));case"context-desc":case"context-asc":{let r="number"!=typeof e.contextWindow||Number.isNaN(e.contextWindow)?void 0:e.contextWindow,n="number"!=typeof l.contextWindow||Number.isNaN(l.contextWindow)?void 0:l.contextWindow;if(void 0===r&&void 0===n)return ea(e).localeCompare(ea(l));if(void 0===r)return 1;if(void 0===n)return -1;let a="context-desc"===t?n-r:r-n;return 0!==a?a:ea(e).localeCompare(ea(l))}default:return 0}})})(t,x),[t,x]),q=(0,n.useMemo)(()=>"folder"===P?(0,er.Je)(R,e=>e.folder):"sort"===P?(0,er.Az)(R,e=>(function(e,t){switch(t){case"provider":{let t=eo(e);return{key:"provider:".concat(t),label:t}}case"context-asc":case"context-desc":var l;return"number"!=typeof(l=e.contextWindow)||Number.isNaN(l)?{key:"ctx:unknown",label:"Unknown context"}:l<=8e3?{key:"ctx:<=8k",label:"≤ 8K tokens"}:l<=32e3?{key:"ctx:8k-32k",label:"8K–32K tokens"}:l<=128e3?{key:"ctx:32k-128k",label:"32K–128K tokens"}:l<=1e6?{key:"ctx:128k-1m",label:"128K–1M tokens"}:{key:"ctx:>1m",label:"> 1M tokens"};default:return(0,er.po)(ea(e))}})(e,x)):[],[P,R,x]);if(l)return(0,r.jsx)(s.default,{display:"flex",justifyContent:"center",py:4,children:(0,r.jsx)(f.default,{})});let $=e=>(0,r.jsx)(v.Ay,{container:!0,spacing:2,children:e.map(e=>(0,r.jsx)(v.Ay,{item:!0,xs:12,sm:6,md:4,children:(0,r.jsx)(et,{model:e,onEdit:()=>_(e),onDelete:()=>d(e.id),folder:e.folder,folders:c,onSetFolder:u?t=>u(e.id,t):void 0})},e.id))});return(0,r.jsxs)(s.default,{children:[(0,r.jsx)(o.A,{elevation:1,sx:{mb:2,p:1},children:(0,r.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:1},children:[(0,r.jsxs)(b.default,{variant:"body2",color:"textSecondary",children:[t.length," model",1===t.length?"":"s",(0,r.jsx)(s.default,{component:"span",sx:{mx:1,opacity:.5},children:"\xb7"}),"Sorted by: ",en[x]]}),(0,r.jsxs)(s.default,{sx:{display:"flex",gap:1,alignItems:"center"},children:[(0,r.jsx)(g.A,{size:"small",onClick:e=>D(e.currentTarget),color:"none"!==P?"primary":"default",sx:{border:"1px solid ".concat(p.palette.divider),backgroundColor:p.palette.background.default},title:"Group cards",children:(0,r.jsx)(M.A,{fontSize:"small"})}),(0,r.jsx)(g.A,{size:"small",onClick:e=>W(e.currentTarget),sx:{border:"1px solid ".concat(p.palette.divider),backgroundColor:p.palette.background.default},title:"Sort models",children:(0,r.jsx)(C.A,{fontSize:"small"})})]})]})}),t&&0!==t.length?"none"===P?$(R):q.map(e=>(0,r.jsx)(el.A,{label:e.label,count:e.items.length,expanded:!B.has(e.key),onToggle:()=>(e=>{E(t=>{let l=new Set(t);return l.has(e)?l.delete(e):l.add(e),l})})(e.key),showFolderIcon:"folder"===P,children:$(e.items)},e.key)):(0,r.jsx)(s.default,{textAlign:"center",py:4,children:"No models found"}),(0,r.jsxs)(y.A,{anchorEl:L,open:!!L,onClose:()=>D(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,r.jsxs)(j.A,{selected:"none"===P,onClick:()=>F("none"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(T.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"No grouping"})]}),(0,r.jsxs)(j.A,{selected:"folder"===P,onClick:()=>F("folder"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(I.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"By folder"})]}),(0,r.jsxs)(j.A,{selected:"sort"===P,onClick:()=>F("sort"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(M.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"By sort setting"})]})]}),(0,r.jsxs)(y.A,{anchorEl:K,open:!!K,onClose:()=>W(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,r.jsxs)(j.A,{selected:"name-asc"===x,onClick:()=>O("name-asc"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(S.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"Name (A-Z)"})]}),(0,r.jsxs)(j.A,{selected:"name-desc"===x,onClick:()=>O("name-desc"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(S.A,{fontSize:"small",sx:{transform:"scaleX(-1)"}})}),(0,r.jsx)(w.A,{primary:"Name (Z-A)"})]}),(0,r.jsx)(k.A,{}),(0,r.jsxs)(j.A,{selected:"provider"===x,onClick:()=>O("provider"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(N.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"Provider"})]}),(0,r.jsx)(k.A,{}),(0,r.jsxs)(j.A,{selected:"context-desc"===x,onClick:()=>O("context-desc"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(U.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"Context (largest)"})]}),(0,r.jsxs)(j.A,{selected:"context-asc"===x,onClick:()=>O("context-asc"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(U.A,{fontSize:"small",sx:{transform:"scaleY(-1)"}})}),(0,r.jsx)(w.A,{primary:"Context (smallest)"})]})]})]})};var ed=l(52641),ec=l(51221),eu=l(55606),ep=l(63109),ex=l(12857),em=l(48363),eh=l(9164),ef=l(95480),ev=l(52397);let eb=(0,q.h)("frontend/components/models/modal"),eg=e=>{var t,l,o;let{open:d,model:p,onSave:x,onClose:m}=e,h=(0,a.useRouter)(),{globalEnvVars:y}=(0,eh.useStorage)(),[A,w]=(0,n.useState)({}),[k,C]=(0,n.useState)({}),[S,N]=(0,n.useState)(null),[U,M]=(0,n.useState)(!1),[T,I]=(0,n.useState)(null),[P,z]=(0,n.useState)(!1),[K,W]=(0,n.useState)([]),[L,D]=(0,n.useState)(!1),B=(0,n.useRef)(null),E=(0,n.useRef)(null);(0,n.useEffect)(()=>{d&&W([])},[d]),(0,n.useEffect)(()=>{A.baseUrl&&(eb.debug("Base URL or API Key changed",{baseUrl:A.baseUrl}),W([]))},[A.baseUrl,A.ApiKey]),(0,n.useEffect)(()=>(E.current&&clearTimeout(E.current),A.baseUrl&&(E.current=setTimeout(()=>{eb.debug("Debounced fetchModels triggered",{name:A.name,baseUrl:A.baseUrl,searchTerm:A.name?'"'.concat(A.name,'"'):"none"}),O(A.baseUrl,A.name)},100)),()=>{E.current&&clearTimeout(E.current)}),[A.name,A.baseUrl]),(0,n.useEffect)(()=>()=>{E.current&&clearTimeout(E.current)},[]);let O=async(e,t)=>{eb.debug("fetchModels called",{baseUrl:e,searchTerm:t?'"'.concat(t,'"'):"none",apiKey:A.ApiKey?"present":"not present",isApiKeyBound:U}),D(!0),C({});try{let l=U&&T?"${global:".concat(T,"}"):A.ApiKey&&A.ApiKey!==ev.RJ?A.ApiKey:void 0,r=await R.N.fetchProviderModels(e,p.id,t,l);eb.debug("Models fetched successfully",{count:null==r?void 0:r.length,searchTerm:t?'"'.concat(t,'"'):"none"}),Array.isArray(r)?(W(r),eb.info("Models set in state",{count:r.length,searchTerm:t?'"'.concat(t,'"'):"none"})):(eb.warn("Unexpected API response format",{models:r}),W([]))}catch(l){eb.warn("Error fetching models",{baseUrl:e,searchTerm:t,error:l}),W([])}finally{D(!1)}};(0,n.useEffect)(()=>{if(d){w({...p,displayName:p.displayName||p.name});let e=(p.ApiKey||"").match(/\$\{global:([^}]+)\}/);e?(M(!0),I(e[1])):(M(!1),I(null),w(e=>({...e,ApiKey:p.name?ev.RJ:""})))}else w({name:"",displayName:"",description:"",ApiKey:"",baseUrl:"https://api.openai.com/v1",provider:"openai",adapter:"openai",promptTemplate:"",temperature:"0.0"}),M(!1),I(null);C({}),N(null)},[d,p]);let q=_(A.provider,A.adapter),J=(e,t)=>{w(l=>({...l,[e]:t})),C(t=>({...t,[e]:""}))},Z=async e=>{var t,l,r;e.preventDefault();let n={};if((null==(t=A.name)?void 0:t.trim())||(n.name="Name is required"),(null==(l=A.displayName)?void 0:l.trim())||(n.displayName="Display Name is required"),U||(null==(r=A.ApiKey)?void 0:r.trim())||(n.ApiKey="API key is required"),Object.keys(n).length>0)return void C(n);try{let e=await x({id:p.id,name:A.name,displayName:A.displayName,description:A.description,ApiKey:A.ApiKey,baseUrl:A.baseUrl,provider:A.provider,adapter:A.adapter||"openai",promptTemplate:A.promptTemplate,temperature:A.temperature,contextWindow:A.contextWindow,maxTurns:A.maxTurns});e.success?h.refresh():C({submit:e.error||"Failed to save model"})}catch(e){eb.error("Failed to save model",{error:e}),C({submit:(null==e?void 0:e.message)||"Failed to save model"})}};return(0,r.jsx)($.A,{open:d,onClose:m,maxWidth:"xl",fullWidth:!0,PaperProps:{sx:{width:"95vw",height:"90vh",maxWidth:"95vw",maxHeight:"90vh"}},children:(0,r.jsxs)("form",{onSubmit:Z,children:[(0,r.jsx)(X.A,{children:p?"Edit Model":"Add Model"}),(0,r.jsxs)(G.A,{sx:{display:"flex",flexDirection:"column",height:"calc(90vh - 130px)"},children:[k.submit&&(0,r.jsx)(u.A,{severity:"error",sx:{mb:2},children:k.submit}),S&&(0,r.jsx)(u.A,{severity:"info",sx:{mb:2},children:S}),(0,r.jsxs)(v.Ay,{container:!0,spacing:2,sx:{flexGrow:1},children:[(0,r.jsx)(v.Ay,{item:!0,xs:6,sx:{height:"100%"},children:(0,r.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",height:"100%",pr:2},children:[(0,r.jsx)(b.default,{variant:"h6",gutterBottom:!0,children:"Model Configuration"}),(0,r.jsx)(i.A,{autoFocus:!0,margin:"dense",label:"Display Name",fullWidth:!0,required:!0,value:A.displayName||"",onChange:e=>J("displayName",e.target.value),error:!!k.displayName,helperText:k.displayName||"The name shown in the UI"}),(0,r.jsxs)(ed.A,{fullWidth:!0,margin:"dense",children:[(0,r.jsx)(ec.A,{id:"provider-profile-label",children:"Provider"}),(0,r.jsx)(eu.A,{labelId:"provider-profile-label",label:"Provider",value:q.id,onChange:e=>(e=>{let t=F.find(t=>t.id===e);t&&(w(e=>({...e,provider:t.provider,adapter:t.adapter,baseUrl:t.baseUrl})),C(e=>({...e,baseUrl:""})))})(e.target.value),children:F.map(e=>(0,r.jsx)(j.A,{value:e.id,children:e.label},e.id))})]}),(0,r.jsxs)(b.default,{variant:"caption",color:"text.secondary",sx:{mt:.5,mb:1,display:"block"},children:["Uses the ",(0,r.jsx)("strong",{children:q.sdkLabel}),"claude-cli"===q.adapter?". Paste an OAuth token from `claude setup-token` into the API Key field.":""]}),q.showBaseUrl&&(0,r.jsx)(i.A,{margin:"dense",label:"Base URL",fullWidth:!0,value:A.baseUrl||"",onChange:e=>J("baseUrl",e.target.value),helperText:"Endpoint for the OpenAI-compatible API."}),(0,r.jsx)(s.default,{sx:{position:"relative",mt:1,mb:1},children:(0,r.jsx)(i.A,{margin:"dense",label:"API Key",fullWidth:!0,required:!U,type:U?"text":"password",value:A.ApiKey||"",onChange:e=>J("ApiKey",e.target.value),error:!!k.ApiKey,helperText:k.ApiKey||"API key is required for this provider",InputProps:{readOnly:U,endAdornment:(0,r.jsx)(s.default,{sx:{display:"flex",alignItems:"center"},children:U?(0,r.jsx)(g.A,{onClick:()=>{M(!1),I(null),w(e=>({...e,ApiKey:""}))},size:"small",title:"Unbind from global variable",children:(0,r.jsx)(ex.A,{})}):(0,r.jsx)(g.A,{onClick:()=>{z(!0)},size:"small",title:"Bind to global variable",children:(0,r.jsx)(em.A,{})})})}})}),(0,r.jsx)(ep.A,{freeSolo:!0,loading:L,options:q.showBaseUrl?K.map(e=>e.id):null!=(t=q.defaultModels)?t:[],value:A.name||"",onChange:(e,t)=>{J("name",t||"")},onInputChange:(e,t)=>{J("name",t)},filterOptions:(e,t)=>{let l=t.inputValue.toLowerCase();return l?e.filter(e=>{let t=e.toLowerCase();if(t.includes(l))return!0;let r=0,n=0;for(;r<t.length&&n<l.length;)t[r]===l[n]&&n++,r++;return n===l.length}):e},ListboxProps:{style:{maxHeight:"300px",overflow:"auto"}},renderInput:e=>(0,r.jsx)(i.A,{...e,margin:"dense",label:"Technical Name",required:!0,error:!!k.name,helperText:k.name||"Used for API calls to the LLM. Type to search available models.",InputProps:{...e.InputProps,endAdornment:(0,r.jsxs)(r.Fragment,{children:[L?(0,r.jsx)(f.default,{color:"inherit",size:20}):null,e.InputProps.endAdornment]})}}),renderOption:(e,t)=>{let l=K.find(e=>e.id===t),{key:n,...a}=e;return(0,r.jsx)("li",{...a,style:{borderBottom:"1px solid rgba(0,0,0,0.1)",padding:"8px 16px"},children:(0,r.jsxs)(s.default,{children:[(0,r.jsx)(b.default,{variant:"body1",fontWeight:"bold",children:t}),(null==l?void 0:l.description)&&(0,r.jsx)(b.default,{variant:"body2",color:"text.secondary",sx:{fontSize:"0.75rem"},children:l.description})]})},n)},noOptionsText:"No matching models found",loadingText:"Loading models..."}),(0,r.jsx)(i.A,{margin:"dense",label:"Description",fullWidth:!0,multiline:!0,rows:3,value:A.description||"",onChange:e=>J("description",e.target.value)}),(0,r.jsx)(i.A,{margin:"dense",label:"Context Window (tokens)",fullWidth:!0,type:"number",value:null!=(l=A.contextWindow)?l:"",onChange:e=>{let t=e.target.value,l=""===t?void 0:Number(t);w(e=>({...e,contextWindow:void 0!==l&&Number.isFinite(l)&&l>0?Math.floor(l):void 0}))},helperText:"Optional. Enables the context-usage meter in chat (e.g. 200000 for Claude, 128000 for GPT-4o)."}),(0,r.jsx)(i.A,{margin:"dense",label:"Max Turns",fullWidth:!0,type:"number",value:null!=(o=A.maxTurns)?o:"",onChange:e=>{let t=e.target.value,l=""===t?void 0:Number(t);w(e=>({...e,maxTurns:void 0!==l&&Number.isFinite(l)&&l>0?Math.floor(l):void 0}))},inputProps:{min:1},helperText:"Max agentic turns before a run stops (default 50). Process nodes can override this per-node."})]})}),(0,r.jsx)(v.Ay,{item:!0,xs:6,sx:{height:"100%"},children:(0,r.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",height:"100%",pl:2},children:[(0,r.jsx)(b.default,{variant:"h6",gutterBottom:!0,children:"Prompt Template"}),(0,r.jsx)(s.default,{sx:{flexGrow:1,display:"flex",flexDirection:"column",height:"calc(100% - 32px)"},children:(0,r.jsx)(ef.A,{ref:B,value:A.promptTemplate||"",onChange:e=>J("promptTemplate",e),label:"",height:"100%"})})]})})]}),P&&(0,r.jsxs)(s.default,{sx:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:400,bgcolor:"background.paper",boxShadow:24,p:4,borderRadius:1,zIndex:9999},children:[(0,r.jsx)(b.default,{variant:"h6",component:"h2",sx:{mb:2},children:"Bind to Global Variable"}),0===Object.keys(y).length?(0,r.jsx)(b.default,{sx:{mb:2},children:"No global variables available. Add some in Settings first."}):(0,r.jsx)(s.default,{sx:{maxHeight:300,overflow:"auto",mb:2},children:Object.entries(y).map(e=>{let[t,l]=e;return(0,r.jsx)(c.A,{onClick:()=>(e=>{M(!0),I(e),w(t=>({...t,ApiKey:"${global:".concat(e,"}")})),z(!1)})(t),fullWidth:!0,sx:{justifyContent:"flex-start",textAlign:"left",mb:1,p:1,"&:hover":{bgcolor:"action.hover"}},children:(0,r.jsxs)(s.default,{sx:{display:"flex",justifyContent:"space-between",width:"100%"},children:[(0,r.jsx)(b.default,{children:t}),(0,r.jsx)(b.default,{variant:"body2",color:"text.secondary",children:t.toLowerCase().includes("key")||t.toLowerCase().includes("secret")||t.toLowerCase().includes("token")||t.toLowerCase().includes("password")?"********":"object"==typeof l&&null!==l&&"value"in l?l.value:l})]})},t)})}),(0,r.jsx)(s.default,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,r.jsx)(c.A,{onClick:()=>z(!1),children:"Cancel"})})]})]}),(0,r.jsxs)(H.A,{children:[(0,r.jsx)(c.A,{onClick:m,children:"Cancel"}),(0,r.jsx)(c.A,{type:"submit",variant:"contained",color:"primary",children:"Save"})]})]})})};var ey=l(94929);let ej=(0,q.h)("app/models/ModelClient");function eA(e){var t;let{initialModels:l}=e,h=(0,a.useRouter)(),f=(0,a.useSearchParams)(),[v,b]=(0,n.useState)(l),[g,y]=(0,n.useState)(""),[j,A]=(0,n.useState)(null),[w,k]=(0,n.useState)(!1),[C,S]=(0,n.useState)(!1),[N,U]=(0,n.useState)(null),M="1"===f.get("add");if((0,n.useEffect)(()=>{M?U(e=>null!=e?e:{id:(0,m.A)(),name:"",displayName:"",description:"",ApiKey:"",baseUrl:"",provider:"openai",promptTemplate:"",temperature:"0.0"}):U(null)},[M]),(0,n.useEffect)(()=>{try{let e=(0,R.X)();e&&"function"==typeof e.loadModels&&(S(!0),ej.debug("Model service is ready"))}catch(t){ej.warn("Model service not ready, retrying...",t);let e=setTimeout(()=>{try{let e=(0,R.X)();e&&"function"==typeof e.loadModels&&(S(!0),ej.debug("Model service is now ready"))}catch(e){ej.warn("Model service still not ready",e)}},100);return()=>clearTimeout(e)}},[]),!C)return ej.debug("Waiting for model service to be ready..."),(0,r.jsx)(ey.default,{});let T=f.get("edit"),I=M?N:T&&null!=(t=v.find(e=>e.id===T))?t:null,P=M?!!N:!!T,z=async e=>{ej.info("Saving model",{modelId:e.id,modelName:e.name,mode:M?"add":"update"}),k(!0);try{let t=(0,R.X)(),l=M?await t.addModel(e):await t.updateModel(e);if(!l.success)return A(l.error||"Failed to save model."),{success:!1,error:l.error};{let e=await t.loadModels();return b(e),U(null),h.push("/models"),{success:!0,model:l.model}}}catch(e){return ej.error("Failed to save model",e),A((null==e?void 0:e.message)||"Failed to save model. Please try again."),{success:!1,error:(null==e?void 0:e.message)||"Failed to save model"}}finally{k(!1)}},K=async e=>(ej.info("Editing model",{modelId:e.id,modelName:e.name}),h.push("/models?edit=".concat(e.id)),{success:!0}),W=async()=>{ej.info("Opening add-model modal"),h.push("/models?add=1")},L=async e=>{ej.info("Deleting model",{modelId:e}),k(!0);try{let t=(0,R.X)();await t.deleteModel(e);let l=await t.loadModels();b(l)}catch(e){ej.error("Failed to delete model",e),A("Failed to delete model. Please try again.")}finally{k(!1)}},D=async(e,t)=>{ej.info("Setting model folder",{modelId:e,folder:t}),k(!0);try{let l=(0,R.X)(),r=await l.getModel(e);if(!r)return void A("Model not found.");let n=await l.updateModel({...r,folder:t});if(!n.success)return void A(n.error||"Failed to move model to folder.");let a=await l.loadModels();b(a)}catch(e){ej.error("Failed to set model folder",e),A((null==e?void 0:e.message)||"Failed to move model to folder. Please try again.")}finally{k(!1)}},B=async()=>{U(null),h.push("/models")},E=g.trim()?v.filter(e=>{let t=g.toLowerCase();return(e.displayName||"").toLowerCase().includes(t)||(e.name||"").toLowerCase().includes(t)}):v;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.A,{elevation:1,sx:{mb:2,p:1},children:(0,r.jsxs)(s.default,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},gap:1,alignItems:{xs:"stretch",sm:"center"},justifyContent:"space-between"},children:[(0,r.jsx)(i.A,{placeholder:"Search models...",variant:"outlined",size:"small",value:g,onChange:e=>y(e.target.value),InputProps:{startAdornment:(0,r.jsx)(d.A,{position:"start",children:(0,r.jsx)(x.A,{fontSize:"small"})})},sx:{maxWidth:{sm:300},width:"100%"}}),(0,r.jsx)(c.A,{variant:"contained",color:"primary",startIcon:(0,r.jsx)(p.A,{}),onClick:W,"data-tour":"add-model",children:"Add Model"})]})}),j&&(0,r.jsx)(s.default,{sx:{mb:2},children:(0,r.jsx)(u.A,{severity:"error",onClose:()=>A(null),children:j})}),(0,r.jsx)(ei,{models:E,isLoading:w,onAdd:W,onUpdate:K,onDelete:L,folders:(0,er.yF)(v,e=>e.folder),onSetFolder:D}),P&&I?(0,r.jsx)(eg,{open:P,model:I,onSave:z,onClose:B}):null]})}},38459:(e,t,l)=>{"use strict";function r(e,t){let l=[],r=new Map;for(let n of e){let{key:e,label:a}=t(n),o=r.get(e);o||(o={key:e,label:a,items:[]},r.set(e,o),l.push(o)),o.items.push(n)}return l}function n(e){let t=(null!=e?e:"").trim().charAt(0).toUpperCase();return t>="A"&&t<="Z"?{key:"letter:".concat(t),label:t}:{key:"letter:#",label:"#"}}function a(e,t){let l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Ungrouped",r=new Map,n=[];for(let l of e){var a;let e=null==(a=t(l))?void 0:a.trim();if(e){let t=r.get(e);t?t.push(l):r.set(e,[l])}else n.push(l)}let o=Array.from(r.keys()).sort((e,t)=>e.localeCompare(t)).map(e=>({key:"folder:".concat(e),label:e,items:r.get(e)}));return n.length>0&&o.push({key:"folder:__ungrouped__",label:l,items:n}),o}function o(e,t){let l=new Set;for(let n of e){var r;let e=null==(r=t(n))?void 0:r.trim();e&&l.add(e)}return Array.from(l).sort((e,t)=>e.localeCompare(t))}l.d(t,{Az:()=>r,Je:()=>a,po:()=>n,yF:()=>o})},52397:(e,t,l)=>{"use strict";l.d(t,{RJ:()=>n,gF:()=>r});let r="masked:********",n="********"},61033:(e,t,l)=>{"use strict";l.d(t,{A$:()=>c,X8:()=>s,YP:()=>u,js:()=>d});let r="_-_-_",n=/^(tool|resource):(.+)$/,a=/\$\{((?:tool|resource):[^}]+|_-_-_[^}]+)\}/g;function o(e,t){return"".concat(e,"__").concat(t)}function s(e,t,l){return"${".concat(e,":").concat(o(t,l),"}")}function i(e){let t=n.exec(e);if(t){let e=t[1],l=function(e){let t=e.indexOf("__");if(t<=0)return null;let l=e.slice(t+2);return l?{server:e.slice(0,t),name:l}:null}(t[2]);return l?{kind:e,server:l.server,name:l.name}:null}if(e.startsWith(r)){let t=e.split(r);if(3===t.length&&t[1]&&t[2])return{kind:"tool",server:t[1],name:t[2]}}return null}function d(e){return e.startsWith("${")&&e.endsWith("}")?i(e.slice(2,-1)):null}function c(e){let t,l=[];for(a.lastIndex=0;null!==(t=a.exec(e));){let e=i(t[1]);e&&l.push({...e,fullMatch:t[0],index:t.index})}return l}function u(e){return"tool"===e.kind&&"handoff"===e.server?"handoff:".concat(e.name):"".concat(e.kind,":").concat(o(e.server,e.name))}},67034:(e,t,l)=>{Promise.resolve().then(l.bind(l,94049)),Promise.resolve().then(l.bind(l,25635)),Promise.resolve().then(l.bind(l,24437)),Promise.resolve().then(l.bind(l,36552)),Promise.resolve().then(l.bind(l,37051)),Promise.resolve().then(l.bind(l,94929))},81956:(e,t,l)=>{"use strict";l.d(t,{A:()=>y});var r=l(95155),n=l(12115),a=l(36314),o=l(86973),s=l(49501),i=l(17681),d=l(21067),c=l(2778),u=l(52363),p=l(65036),x=l(9562),m=l(75912),h=l(70690),f=l(9693),v=l(91665),b=l(7517),g=l(8190);let y=e=>{let{anchorEl:t,open:l,currentFolder:y,folders:j,onClose:A,onAssign:w}=e,[k,C]=(0,n.useState)(!1),[S,N]=(0,n.useState)(""),U=e=>{w(e),A()},M=()=>{let e=S.trim();e&&(C(!1),U(e))};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(a.A,{anchorEl:t,open:l,onClose:A,children:[j.length>0&&j.map(e=>(0,r.jsxs)(o.A,{onClick:()=>U(e),selected:e===y,children:[(0,r.jsx)(s.A,{children:e===y?(0,r.jsx)(f.A,{fontSize:"small"}):(0,r.jsx)(v.A,{fontSize:"small"})}),(0,r.jsx)(i.A,{primary:e})]},e)),j.length>0&&(0,r.jsx)(d.A,{}),(0,r.jsxs)(o.A,{onClick:()=>{N(""),C(!0)},children:[(0,r.jsx)(s.A,{children:(0,r.jsx)(b.A,{fontSize:"small"})}),(0,r.jsx)(i.A,{primary:"New folder…"})]}),y&&(0,r.jsxs)(o.A,{onClick:()=>U(void 0),children:[(0,r.jsx)(s.A,{children:(0,r.jsx)(g.A,{fontSize:"small"})}),(0,r.jsx)(i.A,{primary:"Remove from folder"})]})]}),(0,r.jsxs)(c.A,{open:k,onClose:()=>C(!1),maxWidth:"xs",fullWidth:!0,children:[(0,r.jsx)(u.A,{children:"New folder"}),(0,r.jsx)(p.A,{children:(0,r.jsx)(x.A,{autoFocus:!0,margin:"dense",label:"Folder name",fullWidth:!0,value:S,onChange:e=>N(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),M())}})}),(0,r.jsxs)(m.A,{children:[(0,r.jsx)(h.A,{onClick:()=>C(!1),children:"Cancel"}),(0,r.jsx)(h.A,{variant:"contained",disabled:!S.trim(),onClick:M,children:"Create"})]})]})]})}},94929:(e,t,l)=>{"use strict";l.d(t,{default:()=>o});var r=l(95155);l(12115);var n=l(94049),a=l(4474);let o=e=>{let{size:t="medium",color:l="primary",className:o="",sx:s={}}=e,i="white"===l?{color:"#fff",...s}:s;return(0,r.jsxs)(n.default,{component:"span",sx:{display:"inline-block",lineHeight:0,...i},className:o,role:"status",children:[(0,r.jsx)(a.default,{size:{small:16,medium:24,large:36}[t],color:"white"===l?"inherit":l,"aria-hidden":"true"}),(0,r.jsx)(n.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..."})]})}},95480:(e,t,l)=>{"use strict";l.d(t,{A:()=>U});var r=l(95155),n=l(12115),a=l(87021),o=l(63941),s=l(29985),i=l(80372),d=l(94049),c=l(25635),u=l(3139),p=l(57883),x=l(2300),m=l(89218),h=l(42063),f=l(17897);l(32098);var v=l(61033);let b=(0,a.h)("frontend/components/shared/PromptBuilder"),g=e=>{b.debug("Deserializing markdown to Slate value");let t=e.split("\n").map(e=>({type:"paragraph",children:(e=>{let t=(0,v.A$)(e);if(0===t.length)return[{text:e}];let l=[],r=0;for(let n of t)n.index>r&&l.push({text:e.slice(r,n.index)}),l.push({type:"binding-reference",kind:n.kind,server:n.server,name:n.name,children:[{text:""}]}),r=n.index+n.fullMatch.length;return r<e.length&&l.push({text:e.slice(r)}),l})(e)}));return t.length>0?t:[{type:"paragraph",children:[{text:""}]}]},y=e=>{b.debug("Serializing Slate value to markdown");let t=0,l=e.map(e=>e.children?e.children.map(e=>o.EY.isText(e)?e.text:"binding-reference"===e.type?(t++,(0,v.X8)(e.kind,e.server,e.name)):"").join(""):"").join("\n");return t>0&&b.debug("Serialized ".concat(t," binding references")),l},j=e=>{let{attributes:t,children:l,element:n}=e;return"binding-reference"===n.type?(0,r.jsxs)("span",{...t,className:"tool-reference-wrapper",children:[(0,r.jsx)(()=>{let e=(0,s.Zi)(),t=(e=>"tool"===e.kind&&"handoff"===e.server)(n),l="resource"===n.kind?"resource":t?"handoff":"",a=()=>{let t=s.rL.findPath(e,n);b.debug("Removing binding reference: ".concat(n.kind,":").concat(n.server,":").concat(n.name)),o.gB.removeNodes(e,{at:t})};return(0,r.jsxs)("span",{contentEditable:!1,className:"tool-reference-container ".concat(l),children:[(0,r.jsx)("span",{className:"tool-reference ".concat(l),children:(0,v.YP)(n)}),(0,r.jsx)("span",{className:"tool-reference-delete ".concat(l),role:"button",tabIndex:0,onClick:e=>{e.preventDefault(),e.stopPropagation(),a()},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),e.stopPropagation(),a())},children:"\xd7"})]})},{}),l," "]}):(0,r.jsx)("p",{...t,children:l})},A=e=>{let{attributes:t,children:l,leaf:n}=e,a=l;return n.bold&&(a=(0,r.jsx)("strong",{children:a})),n.italic&&(a=(0,r.jsx)("em",{children:a})),n.code&&(a=(0,r.jsx)("code",{children:a})),(0,r.jsx)("span",{...t,children:a})},w=e=>{let{server:t,name:l}=e,a="handoff"===t,[o,s]=(0,n.useState)(null),[i,d]=(0,n.useState)(!0);return((0,n.useEffect)(()=>{let e=!1;return(async()=>{try{var r;d(!0);let n=null==(r=(await f.S.listServerTools(t)).tools)?void 0:r.find(e=>e.name===l);e||s(n||null)}catch(e){b.error("Failed to fetch tool info for ".concat(t,":").concat(l),e)}finally{e||d(!1)}})(),()=>{e=!0}},[t,l]),i)?(0,r.jsx)("span",{className:"tool-reference-preview loading ".concat(a?"handoff":""),children:"tool:".concat(t,"__").concat(l)}):o?(0,r.jsxs)("span",{className:"tool-reference-preview ".concat(a?"handoff":""),children:["[The user is referencing a ",a?"handoff":"tool"," `tool:",t,"__",l,"` (",o.description||"No description",")]"]}):(0,r.jsx)("span",{className:"tool-reference-preview not-found ".concat(a?"handoff":""),children:"tool:".concat(t,"__").concat(l," (Tool not found)")})},k=e=>{let{server:t,name:l}=e,[a,o]=(0,n.useState)(null),[s,i]=(0,n.useState)(!0);return((0,n.useEffect)(()=>{let e=!1;return(async()=>{try{i(!0);let r=await f.S.listServerResources(t),n=[...r.resources||[],...r.resourceTemplates||[]].find(e=>e.uri===l||e.uriTemplate===l);e||o((null==n?void 0:n.description)||(null==n?void 0:n.name)||null)}catch(e){b.error("Failed to fetch resource info for ".concat(t,":").concat(l),e)}finally{e||i(!1)}})(),()=>{e=!0}},[t,l]),s)?(0,r.jsx)("span",{className:"tool-reference-preview loading resource",children:"resource:".concat(t,"__").concat(l)}):(0,r.jsxs)("span",{className:"tool-reference-preview resource",children:["[The contents of resource `",l,"` from `",t,"`",a?" (".concat(a,")"):""," will be inserted here]"]})},C=e=>{let{binding:t}=e;return"resource"===t.kind?(0,r.jsx)(k,{server:t.server,name:t.name}):(0,r.jsx)(w,{server:t.server,name:t.name})},S=e=>{let{value:t}=e;b.debug("Rendering preview");let l=[],n=0;for(let e of(0,v.A$)(t))e.index>n&&l.push({type:"text",value:t.slice(n,e.index)}),l.push({type:"binding",binding:e,key:e.index}),n=e.index+e.fullMatch.length;n<t.length&&l.push({type:"text",value:t.slice(n)});let a=[],o=[],s=()=>{a.push((0,r.jsx)("p",{children:o},"p-".concat(a.length))),o=[]};for(let e of l)if("text"===e.type){let t=e.value.split("\n");for(let e=0;e<t.length;e++)o.push(t[e]),e<t.length-1&&s()}else o.push((0,r.jsx)(C,{binding:e.binding},"binding-".concat(e.key)));return o.length>0&&s(),(0,r.jsx)("div",{className:"preview-content",children:a})},N=(0,n.forwardRef)((e,t)=>{let{value:l,onChange:a,label:f="Prompt Builder",height:w=300,onModeChange:k,customPreviewRenderer:C}=e;b.info("PromptBuilder initialized");let N=(0,n.useMemo)(()=>{let e=(0,i.$k)((0,s.o$)((0,o.ie)())),{isInline:t,isVoid:l}=e;return e.isInline=e=>"binding-reference"===e.type||t(e),e.isVoid=e=>"binding-reference"===e.type||l(e),e},[]),[U,M]=(0,n.useState)("raw"),[T,I]=(0,n.useState)(()=>g(l||"")),P=(0,n.useRef)(!1),[,z]=(0,n.useState)(0);(0,n.useImperativeHandle)(t,()=>({insertText:e=>{b.info("insertText called with text length: ".concat(e.length));let t=(0,v.js)(e);if(t){b.info("Inserting ".concat(t.kind," reference: ").concat(t.server,":").concat(t.name));let e={type:"binding-reference",kind:t.kind,server:t.server,name:t.name,children:[{text:""}]};N.selection||o.gB.select(N,o.KE.end(N,[])),o.gB.insertNodes(N,e),o.gB.move(N),z(e=>e+1),I([...N.children])}else N.selection||o.gB.select(N,o.KE.end(N,[])),o.gB.insertText(N,e);a(y(N.children)),b.info("insertText completed successfully")},getMode:()=>U})),(0,n.useEffect)(()=>{y(T)!==y(g(l||""))&&(b.debug("External value change detected"),P.current=!0,I(g(l||"")))},[l,T]);let K=(0,n.useCallback)(e=>{if(P.current){P.current=!1;return}I(e),a(y(e))},[a]);return(0,r.jsxs)(d.default,{sx:{width:"100%",height:"100%",display:"flex",flexDirection:"column"},children:[f&&(0,r.jsx)(c.default,{variant:"subtitle1",gutterBottom:!0,sx:{fontWeight:"medium",mb:1},children:f}),(0,r.jsx)(d.default,{sx:{mb:1},children:(0,r.jsxs)(u.A,{value:U,exclusive:!0,onChange:(e,t)=>{null!==t&&(b.info("Mode changed from ".concat(U," to ").concat(t)),M(t),k&&k(t))},size:"small",children:[(0,r.jsxs)(p.A,{value:"raw",children:[(0,r.jsx)(m.A,{fontSize:"small",sx:{mr:.5}}),"Raw"]}),(0,r.jsxs)(p.A,{value:"preview",children:[(0,r.jsx)(h.A,{fontSize:"small",sx:{mr:.5}}),"Preview"]})]})}),(0,r.jsx)(x.A,{elevation:0,sx:{border:"1px solid rgba(0, 0, 0, 0.12)",borderRadius:1,overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column"},children:"raw"===U?(0,r.jsx)(d.default,{className:"slate-editor-container",sx:{height:"number"==typeof w?w:"100%",overflow:"auto",p:2},children:(0,r.jsx)(s.A,{editor:N,initialValue:T,onChange:K,children:(0,r.jsx)(s.Fo,{className:"slate-editor",renderElement:j,renderLeaf:A,placeholder:"Write your prompt here..."})})}):C?(0,r.jsx)(d.default,{className:"custom-preview-container",sx:{height:"number"==typeof w?w:"100%",overflow:"auto"},children:C()}):(0,r.jsx)(d.default,{className:"preview-container",sx:{height:"number"==typeof w?w:"100%",overflow:"auto",p:2},children:(0,r.jsx)(S,{value:l})})})]})});N.displayName="PromptBuilder";let U=N}},e=>{e.O(0,[1137,7926,2678,4754,9244,8548,690,9562,2003,488,3272,6582,3077,539,8867,6902,9164,2380,8441,1255,7358],()=>e(e.s=67034)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4662,9195],{8209:(e,t,n)=>{Promise.resolve().then(n.bind(n,46487))},46487:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>en});var r=n(95155),a=n(94049),o=n(12115),s=n(25635),i=n(98267),l=n(20537),c=n(37960),d=n(63186),u=n(22003),h=n(28548),p=n(2300),x=n(9562),b=n(56422),y=n(41983),f=n(70690),g=n(21422),m=n(87830),j=n(68212),v=n(42063),w=n(9164);function k(){let{setKey:e,changeKey:t,verifyKey:n,isEncryptionInitialized:i,isUserEncryptionEnabled:l}=(0,w.useStorage)(),[c,d]=(0,o.useState)(""),[k,A]=(0,o.useState)(""),[S,C]=(0,o.useState)(!1),[E,R]=(0,o.useState)(""),[O,P]=(0,o.useState)(""),[F,I]=(0,o.useState)(!1),[T,B]=(0,o.useState)(!1),[L,U]=(0,o.useState)(null),[D,M]=(0,o.useState)(!1),[W,N]=(0,o.useState)(!1),[V,G]=(0,o.useState)(!1),_=()=>{setTimeout(()=>window.location.reload(),800)};(0,o.useEffect)(()=>{(async()=>{let e=await i(),t=await l();M(e),N(t)})()},[i,l]);let z=async t=>{t.preventDefault(),G(!0),U(null);try{if(c.length<12){U({type:"error",text:"Encryption password must be at least 12 characters long for security"}),G(!1);return}if(c!==k){U({type:"error",text:"Passwords do not match"}),G(!1);return}await e(c),U({type:"success",text:"Encryption password set successfully"}),d(""),A(""),M(!0),_()}catch(e){U({type:"error",text:"Failed to set encryption password"})}finally{G(!1)}},Y=async e=>{e.preventDefault(),G(!0),U(null);try{if(O.length<12){U({type:"error",text:"New password must be at least 12 characters long for security"}),G(!1);return}if(!await n(E)){U({type:"error",text:"Current password is incorrect"}),G(!1);return}await t(E,O)?(U({type:"success",text:"Encryption password changed successfully"}),R(""),P(""),_()):U({type:"error",text:"Failed to change encryption password"})}catch(e){U({type:"error",text:"An error occurred while changing the password"})}finally{G(!1)}};return(0,r.jsxs)(a.default,{sx:{width:"100%"},children:[(0,r.jsx)(s.default,{variant:"h6",gutterBottom:!0,children:"Encryption Settings"}),(0,r.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:3},children:"Set an encryption password to secure sensitive data like API keys and credentials. This password is used to encrypt your data and is never stored directly."}),L&&(0,r.jsx)(u.A,{severity:L.type,sx:{mb:3},children:L.text}),(0,r.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",mb:3},children:[(0,r.jsx)(s.default,{variant:"body1",sx:{mr:2},children:"Current encryption status:"}),D?W?(0,r.jsx)(h.A,{icon:(0,r.jsx)(g.A,{}),label:"Custom Password Protection",color:"success",variant:"outlined"}):(0,r.jsx)(h.A,{icon:(0,r.jsx)(m.A,{}),label:"Default Encryption",color:"primary",variant:"outlined"}):(0,r.jsx)(h.A,{label:"No Encryption",color:"error",variant:"outlined"})]}),D&&W?W?(0,r.jsxs)(p.A,{elevation:2,sx:{p:3},children:[(0,r.jsx)(s.default,{variant:"subtitle1",gutterBottom:!0,fontWeight:"bold",children:"Change Encryption Password"}),(0,r.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"You can change your custom encryption password here. This will re-encrypt your data with the new password. Your data will remain intact."}),(0,r.jsxs)(a.default,{component:"form",onSubmit:Y,children:[(0,r.jsx)(x.A,{fullWidth:!0,label:"Current Password",variant:"outlined",value:E,onChange:e=>R(e.target.value),type:F?"text":"password",InputProps:{endAdornment:(0,r.jsx)(b.A,{position:"end",children:(0,r.jsx)(y.A,{"aria-label":"toggle current password visibility",onClick:()=>I(!F),edge:"end",children:F?(0,r.jsx)(j.A,{}):(0,r.jsx)(v.A,{})})})},sx:{mb:2}}),(0,r.jsx)(x.A,{fullWidth:!0,label:"New Password",variant:"outlined",value:O,onChange:e=>P(e.target.value),type:T?"text":"password",InputProps:{endAdornment:(0,r.jsx)(b.A,{position:"end",children:(0,r.jsx)(y.A,{"aria-label":"toggle new password visibility",onClick:()=>B(!T),edge:"end",children:T?(0,r.jsx)(j.A,{}):(0,r.jsx)(v.A,{})})})},sx:{mb:3}}),(0,r.jsx)(f.A,{type:"submit",variant:"contained",color:"primary",disabled:!E||!O||V,children:"Change Password"})]})]}):null:(0,r.jsxs)(p.A,{elevation:2,sx:{p:3,mb:4},children:[(0,r.jsx)(s.default,{variant:"subtitle1",gutterBottom:!0,fontWeight:"bold",children:"Set Custom Encryption Password"}),(0,r.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:D?"Your data is currently protected with default encryption. Set a custom password for enhanced security.":"Create a strong password to protect your sensitive data. Make sure to remember this password as it cannot be recovered if lost."}),(0,r.jsxs)(a.default,{component:"form",onSubmit:z,children:[(0,r.jsx)(x.A,{fullWidth:!0,label:"New Password",variant:"outlined",value:c,onChange:e=>d(e.target.value),type:S?"text":"password",InputProps:{endAdornment:(0,r.jsx)(b.A,{position:"end",children:(0,r.jsx)(y.A,{"aria-label":"toggle password visibility",onClick:()=>C(!S),edge:"end",children:S?(0,r.jsx)(j.A,{}):(0,r.jsx)(v.A,{})})})},sx:{mb:2}}),(0,r.jsx)(x.A,{fullWidth:!0,label:"Confirm Password",variant:"outlined",value:k,onChange:e=>A(e.target.value),type:S?"text":"password",sx:{mb:3}}),(0,r.jsx)(f.A,{type:"submit",variant:"contained",color:"primary",disabled:!c||!k||V,children:D?"Upgrade to Custom Password":"Set Encryption Password"})]})]}),(0,r.jsx)(a.default,{sx:{mt:4},children:(0,r.jsxs)(u.A,{severity:W?"warning":"info",children:[(0,r.jsx)(s.default,{variant:"subtitle2",fontWeight:"bold",children:W?"Important Security Information":"About Default Encryption"}),W?(0,r.jsxs)(s.default,{variant:"body2",children:["• Your custom encryption password is never stored directly on the server",(0,r.jsx)("br",{}),"• If you forget your password, you will not be able to access your encrypted data",(0,r.jsx)("br",{}),"• Consider using a password manager to securely store this password"]}):(0,r.jsxs)(s.default,{variant:"body2",children:["• Your data is currently encrypted with a built-in default key",(0,r.jsx)("br",{}),"• This provides basic protection without requiring password setup",(0,r.jsx)("br",{}),"• For maximum security, set a custom password using the form above"]})]})})]})}var A=n(99944),S=n(9957),C=n(21067),E=n(26796),R=n(87021);let O=(0,R.h)("frontend/components/Settings/ThemeSettings");function P(){let{isDarkMode:e,toggleTheme:t}=(0,E.useTheme)();return O.debug("Rendering ThemeSettings with isDarkMode: ".concat(e)),(0,r.jsxs)(a.default,{sx:{maxWidth:600},children:[(0,r.jsx)(s.default,{variant:"h6",gutterBottom:!0,children:"Theme Settings"}),(0,r.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Customize the application appearance"}),(0,r.jsx)(A.A,{control:(0,r.jsx)(S.A,{checked:e,onChange:t,name:"darkMode"}),label:"Dark Mode"}),(0,r.jsx)(C.A,{sx:{my:3}}),(0,r.jsx)(s.default,{variant:"subtitle1",gutterBottom:!0,children:"Theme CSS Variables"}),(0,r.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"The following CSS variables are available for custom styling:"}),(0,r.jsx)(p.A,{sx:{p:2,mb:3},children:(0,r.jsx)(s.default,{variant:"body2",component:"pre",sx:{fontFamily:"var(--font-geist-mono)"},children:"/* Access in CSS */\n:root {\n /* Light theme variables (default) */\n --background: #FFFFFF;\n --foreground: #2C3E50;\n --paper-background: #F5F6FA;\n --text-secondary: #7F8C8D;\n}\n\n:root.dark-theme {\n /* Dark theme variables */\n --background: #1a1a1a;\n --foreground: #f0f0f0;\n --paper-background: #2a2a2a;\n --text-secondary: #aaaaaa;\n}\n\n/* Access in inline styles */\ncolor: var(--foreground);\nbackground: var(--background);"})}),(0,r.jsx)(s.default,{variant:"subtitle1",gutterBottom:!0,children:"Usage in Components"}),(0,r.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Import the theme utilities to use theme-aware styling in your components:"}),(0,r.jsx)(p.A,{sx:{p:2},children:(0,r.jsx)(s.default,{variant:"body2",component:"pre",sx:{fontFamily:"var(--font-geist-mono)"},children:"// Using the useTheme hook\nimport { useTheme } from '@/frontend/contexts/ThemeContext';\n\nfunction MyComponent() {\n const { isDarkMode } = useTheme();\n \n return (\n <div>\n {isDarkMode ? 'Dark Mode' : 'Light Mode'}\n </div>\n );\n}\n\n// Using CSS variables in inline styles\nimport { getCssVar } from '@/frontend/utils';\n\nfunction StyledComponent() {\n return (\n <div style={{ \n color: getCssVar('foreground'),\n background: getCssVar('background')\n }}>\n Themed content\n </div>\n );\n}"})})]})}var F=n(71892),I=n(52397);function T(){let{globalEnvVars:e,setGlobalEnvVars:t,deleteGlobalEnvVar:n}=(0,w.useStorage)(),[i,l]=(0,o.useState)(null),c=async e=>{try{let n=Object.fromEntries(Object.entries(e).filter(e=>{let[t,n]=e;return"string"==typeof n||!n.metadata.isSecret||n.value!==I.gF}));await t(n),l({type:"success",text:"Global environment variables updated successfully"}),setTimeout(()=>{l(null)},3e3)}catch(e){l({type:"error",text:"Failed to update global environment variables"})}};return(0,r.jsxs)(a.default,{sx:{width:"100%"},children:[(0,r.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Define global environment variables that can be bound to MCP servers. This allows you to manage API keys and other sensitive information in one place."}),i&&(0,r.jsx)(u.A,{severity:i.type,sx:{mb:2},children:i.text}),(0,r.jsx)(F.A,{serverName:"Global",initialEnv:e,onSave:c,onDelete:n})]})}var B=n(17325),L=n(22822),U=n(4474),D=n(2778),M=n(52363),W=n(65036),N=n(50001),V=n(75912),G=n(27156);let _=(0,R.h)("frontend/components/Settings/BackupSettings"),z=[{key:"models",label:"Models",description:"AI model configurations",storageKey:G.Z.MODELS},{key:"mcpServers",label:"MCP Servers Configuration",description:"MCP server settings",storageKey:G.Z.MCP_SERVERS},{key:"mcpServersFolder",label:"MCP Servers Folder",description:"MCP server code and files",isFolder:!0},{key:"flows",label:"Flows",description:"Flow configurations",storageKey:G.Z.FLOWS},{key:"chatHistory",label:"Chat History",description:"Conversation history",storageKey:G.Z.CHAT_HISTORY},{key:"settings",label:"Settings",description:"Application settings",storageKey:G.Z.THEME},{key:"globalEnvVars",label:"Global Environment Variables",description:"Global environment variables",storageKey:G.Z.GLOBAL_ENV_VARS},{key:"encryptionKey",label:"Encryption Key",description:"Data encryption key",storageKey:G.Z.ENCRYPTION_KEY}];function Y(){let[e,t]=(0,o.useState)(z.reduce((e,t)=>({...e,[t.key]:!0}),{})),[n,i]=(0,o.useState)(z.reduce((e,t)=>({...e,[t.key]:!0}),{})),[l,c]=(0,o.useState)(null),d=(0,o.useRef)(null),[h,x]=(0,o.useState)(null),[b,y]=(0,o.useState)(!1),[g,m]=(0,o.useState)(!1),j=n=>{t({...e,[n.target.name]:n.target.checked})},v=e=>{i({...n,[e.target.name]:e.target.checked})},w=async()=>{_.debug("Creating backup with selections:",e),y(!0),x(null);try{let t=Object.entries(e).filter(e=>{let[t,n]=e;return n}).map(e=>{let[t]=e;return t});if(0===t.length){x({type:"error",text:"Please select at least one item to backup"}),y(!1);return}let n=await fetch("/api/backup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({selections:t})});if(!n.ok)throw Error("Failed to create backup");let r=await n.blob(),a=window.URL.createObjectURL(r),o=document.createElement("a");o.style.display="none",o.href=a;let s=new Date().toISOString().replace(/[:.]/g,"-").substring(0,19);o.download="flujo-backup-".concat(s,".zip"),document.body.appendChild(o),o.click(),window.URL.revokeObjectURL(a),document.body.removeChild(o),x({type:"success",text:"Backup created successfully"})}catch(e){_.error("Error creating backup:",e),x({type:"error",text:e instanceof Error?e.message:"Failed to create backup"})}finally{y(!1)}},k=async()=>{_.debug("Restoring from backup with selections:",n),y(!0),x(null),m(!1);try{let e=Object.entries(n).filter(e=>{let[t,n]=e;return n}).map(e=>{let[t]=e;return t}),t=new FormData;t.append("file",l),t.append("selections",JSON.stringify(e));let r=await fetch("/api/restore",{method:"POST",body:t});if(!r.ok){let e=await r.json();throw Error(e.error||"Failed to restore from backup")}x({type:"success",text:"Restore completed successfully. You may need to refresh the page to see the changes."}),d.current&&(d.current.value=""),c(null)}catch(e){_.error("Error restoring from backup:",e),x({type:"error",text:e instanceof Error?e.message:"Failed to restore from backup"})}finally{y(!1)}},S=n=>{let r={...e};z.forEach(e=>{r[e.key]=n}),t(r)},E=e=>{let t={...n};z.forEach(n=>{t[n.key]=e}),i(t)};return(0,r.jsxs)(a.default,{sx:{width:"100%"},children:[(0,r.jsx)(s.default,{variant:"h6",gutterBottom:!0,children:"Backup and Restore"}),(0,r.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Create backups of your application data or restore from a previous backup."}),h&&(0,r.jsx)(u.A,{severity:h.type,sx:{mb:2},children:h.text}),(0,r.jsxs)(p.A,{sx:{p:3,mb:3},children:[(0,r.jsx)(s.default,{variant:"subtitle1",gutterBottom:!0,fontWeight:"bold",children:"Create Backup"}),(0,r.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Select the components you want to include in the backup."}),(0,r.jsxs)(a.default,{sx:{mb:2},children:[(0,r.jsx)(f.A,{size:"small",onClick:()=>S(!0),sx:{mr:1},children:"Select All"}),(0,r.jsx)(f.A,{size:"small",onClick:()=>S(!1),children:"Deselect All"})]}),(0,r.jsx)(B.A,{sx:{mb:3},children:z.map(t=>(0,r.jsx)(A.A,{control:(0,r.jsx)(L.A,{checked:e[t.key],onChange:j,name:t.key}),label:(0,r.jsxs)(a.default,{children:[(0,r.jsx)(s.default,{variant:"body1",children:t.label}),(0,r.jsx)(s.default,{variant:"body2",color:"text.secondary",children:t.description})]})},t.key))}),(0,r.jsx)(f.A,{variant:"contained",onClick:w,disabled:b||Object.values(e).every(e=>!e),startIcon:b?(0,r.jsx)(U.default,{size:20}):null,children:b?"Creating Backup...":"Create Backup"})]}),(0,r.jsxs)(p.A,{sx:{p:3},children:[(0,r.jsx)(s.default,{variant:"subtitle1",gutterBottom:!0,fontWeight:"bold",children:"Restore from Backup"}),(0,r.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Select a backup file and choose which components to restore."}),(0,r.jsxs)(a.default,{sx:{mb:3},children:[(0,r.jsxs)(f.A,{variant:"outlined",component:"label",sx:{mb:2},children:["Select Backup File",(0,r.jsx)("input",{type:"file",hidden:!0,accept:".zip",onChange:e=>{let t=e.target.files;t&&t.length>0&&(c(t[0]),x(null))},ref:d})]}),l&&(0,r.jsxs)(s.default,{variant:"body2",sx:{ml:1},children:["Selected file: ",l.name]})]}),(0,r.jsx)(C.A,{sx:{mb:2}}),(0,r.jsx)(s.default,{variant:"subtitle2",gutterBottom:!0,children:"Restore Options"}),(0,r.jsxs)(a.default,{sx:{mb:2},children:[(0,r.jsx)(f.A,{size:"small",onClick:()=>E(!0),sx:{mr:1},children:"Select All"}),(0,r.jsx)(f.A,{size:"small",onClick:()=>E(!1),children:"Deselect All"})]}),(0,r.jsx)(B.A,{sx:{mb:3},children:z.map(e=>(0,r.jsx)(A.A,{control:(0,r.jsx)(L.A,{checked:n[e.key],onChange:v,name:e.key}),label:(0,r.jsxs)(a.default,{children:[(0,r.jsx)(s.default,{variant:"body1",children:e.label}),(0,r.jsx)(s.default,{variant:"body2",color:"text.secondary",children:e.description})]})},e.key))}),(0,r.jsx)(f.A,{variant:"contained",color:"warning",onClick:()=>l?0===Object.entries(n).filter(e=>{let[t,n]=e;return n}).map(e=>{let[t]=e;return t}).length?void x({type:"error",text:"Please select at least one item to restore"}):void m(!0):void x({type:"error",text:"Please select a backup file"}),disabled:b||!l||Object.values(n).every(e=>!e),startIcon:b?(0,r.jsx)(U.default,{size:20}):null,children:b?"Restoring...":"Restore from Backup"})]}),(0,r.jsxs)(D.A,{open:g,onClose:()=>m(!1),children:[(0,r.jsx)(M.A,{children:"Confirm Restore"}),(0,r.jsx)(W.A,{children:(0,r.jsx)(N.A,{children:"This will overwrite your existing data with the contents of the backup file. This action cannot be undone. Are you sure you want to continue?"})}),(0,r.jsxs)(V.A,{children:[(0,r.jsx)(f.A,{onClick:()=>m(!1),children:"Cancel"}),(0,r.jsx)(f.A,{onClick:k,color:"warning",variant:"contained",children:"Restore"})]})]})]})}var J=n(52641),K=n(84869);function H(){let{settings:e,updateSettings:t}=(0,w.useStorage)(),n=(0,K.G)(),o=(null==e?void 0:e.speech)||{enabled:!0};return(0,r.jsxs)(a.default,{sx:{p:2},children:[!n.supported&&(0,r.jsx)(u.A,{severity:"warning",sx:{mb:3},children:"Speech recognition is not supported in your browser. Please use Chrome, Edge, or Safari for the best experience."}),(0,r.jsxs)(J.A,{fullWidth:!0,sx:{mb:3},children:[(0,r.jsx)(A.A,{control:(0,r.jsx)(S.A,{checked:o.enabled,onChange:n=>{t({...e,speech:{...o,enabled:n.target.checked}})},name:"enabled",disabled:!n.supported}),label:"Enable speech recognition"}),(0,r.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mt:1},children:"When enabled, audio recordings will be transcribed using your browser's built-in offfline speech recognition capabilities."})]}),(0,r.jsxs)(p.A,{variant:"outlined",sx:{p:2,mb:3},children:[(0,r.jsx)(s.default,{variant:"subtitle2",gutterBottom:!0,children:"Speech Recognition Information"}),(0,r.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",mb:1},children:[(0,r.jsx)(s.default,{variant:"body2",children:"Technology:"}),(0,r.jsx)(s.default,{variant:"body2",children:"Web Speech API"})]}),(0,r.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",mb:1},children:[(0,r.jsx)(s.default,{variant:"body2",children:"Processing:"}),(0,r.jsx)(s.default,{variant:"body2",children:"Browser-based"})]}),(0,r.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",mb:1},children:[(0,r.jsx)(s.default,{variant:"body2",children:"Language:"}),(0,r.jsx)(s.default,{variant:"body2",children:"Automatically uses browser language"})]}),(0,r.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",mb:1},children:[(0,r.jsx)(s.default,{variant:"body2",children:"Privacy:"}),(0,r.jsx)(s.default,{variant:"body2",children:"Depends on browser implementation"})]})]}),(0,r.jsx)(u.A,{severity:"info",sx:{mt:3},children:(0,r.jsx)(s.default,{variant:"body2",children:"Speech recognition quality may vary based on your browser, microphone quality, and background noise. For best results, speak clearly and use a good quality microphone."})})]})}(0,R.h)("frontend/components/Settings/SpeechRecognitionSettings");let Z=(0,R.h)("frontend/components/Settings/UpdateSettings");function q(){let{settings:e,updateSettings:t}=(0,w.useStorage)(),n=(null==e?void 0:e.update)||{checkOnStartup:!1},[i,l]=(0,o.useState)(!1),[c,d]=(0,o.useState)(!1),[h,p]=(0,o.useState)(null),[x,b]=(0,o.useState)(null),y=null===x||"git"===x,g=async()=>{l(!0),p(null);try{let e=await fetch("/api/update"),t=await e.json();"string"==typeof t.updateMode&&b(t.updateMode),e.ok&&!1!==t.success?!1===t.isGitRepo?p({severity:"info",message:t.message}):t.updateAvailable?p({severity:"warning",message:"An update is available (".concat(t.behindBy," new commit").concat(1===t.behindBy?"":"s"," on ").concat(t.branch,").")}):p({severity:"success",message:"FLUJO is up to date (v".concat(t.currentVersion,").")}):p({severity:"error",message:t.error||"Failed to check for updates."})}catch(e){Z.error("Update check failed",e),p({severity:"error",message:"Failed to check for updates."})}finally{l(!1)}},m=async()=>{d(!0),p({severity:"info",message:"Updating FLUJO - this may take a few minutes..."});try{let e=await fetch("/api/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"apply"})}),t=await e.json();if(!e.ok||!1===t.success){p({severity:"error",message:t.error||"Update failed."}),d(!1);return}if(p({severity:"success",message:t.message}),t.restarting){let e=!1,t=async()=>{try{if((await fetch("/api/cwd",{cache:"no-store"})).ok&&e)return void window.location.reload()}catch(t){e=!0}setTimeout(t,3e3)};setTimeout(t,5e3)}else d(!1)}catch(e){Z.error("Update failed",e),p({severity:"error",message:"Update failed."}),d(!1)}};return(0,r.jsxs)(a.default,{sx:{p:2},children:[(0,r.jsxs)(J.A,{fullWidth:!0,sx:{mb:2},children:[(0,r.jsx)(A.A,{control:(0,r.jsx)(S.A,{checked:n.checkOnStartup,onChange:r=>{t({...e,update:{...n,checkOnStartup:r.target.checked}})},name:"checkOnStartup"}),label:"Check for updates on startup"}),(0,r.jsxs)(s.default,{variant:"body2",color:"text.secondary",sx:{mt:1},children:["When enabled, FLUJO checks GitHub for a newer version when the home page loads and shows a one-click update banner if one is available. Updates run ",(0,r.jsx)("code",{children:"git pull"})," + rebuild in your install folder; your data is preserved."]}),!y&&(0,r.jsxs)(s.default,{variant:"body2",color:"text.secondary",sx:{mt:1},children:["This install can't update itself in place","container"===x?" (running in Docker) — pull a newer image instead.":"npm"===x?" (installed via npm) — rerun with the latest version instead.":" — it is not running from a git clone."]})]}),(0,r.jsxs)(a.default,{sx:{display:"flex",gap:2,mb:2},children:[(0,r.jsxs)(f.A,{variant:"outlined",onClick:g,disabled:i||c,children:[i?(0,r.jsx)(U.default,{size:20,sx:{mr:1}}):null,"Check now"]}),(0,r.jsxs)(f.A,{variant:"contained",onClick:m,disabled:c||!y,children:[c?(0,r.jsx)(U.default,{size:20,sx:{mr:1}}):null,"Update now"]})]}),h&&(0,r.jsx)(u.A,{severity:h.severity,sx:{mt:1},children:h.message})]})}var $=n(8907),Q=n(69195);function X(){let{startTour:e}=(0,Q.useTour)();return(0,r.jsxs)(a.default,{sx:{p:2},children:[(0,r.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"The guided tour walks you through the full first-run path — adding a model, connecting an MCP tool server, building a flow, and running it in chat. It launches automatically the first time you open FLUJO; replay it any time below."}),(0,r.jsx)(f.A,{variant:"outlined",startIcon:(0,r.jsx)($.A,{}),onClick:e,children:"Replay guided tour"})]})}function ee(){let[e,t]=(0,o.useState)("globalEnv"),n=e=>(n,r)=>{t(!!r&&e)};return(0,r.jsxs)(a.default,{sx:{p:3},children:[(0,r.jsx)(s.default,{variant:"h5",gutterBottom:!0,children:"Settings"}),(0,r.jsxs)(a.default,{sx:{mt:2},children:[(0,r.jsxs)(i.A,{expanded:"globalEnv"===e,onChange:n("globalEnv"),children:[(0,r.jsx)(l.A,{expandIcon:(0,r.jsx)(d.A,{}),"aria-controls":"globalEnv-content",id:"globalEnv-header",children:(0,r.jsx)(s.default,{variant:"h6",children:"Global Environment Variables"})}),(0,r.jsx)(c.A,{children:(0,r.jsx)(T,{})})]}),(0,r.jsxs)(i.A,{expanded:"encryption"===e,onChange:n("encryption"),children:[(0,r.jsx)(l.A,{expandIcon:(0,r.jsx)(d.A,{}),"aria-controls":"encryption-content",id:"encryption-header",children:(0,r.jsx)(s.default,{variant:"h6",children:"Encryption"})}),(0,r.jsx)(c.A,{children:(0,r.jsx)(k,{})})]}),(0,r.jsxs)(i.A,{expanded:"theme"===e,onChange:n("theme"),children:[(0,r.jsx)(l.A,{expandIcon:(0,r.jsx)(d.A,{}),"aria-controls":"theme-content",id:"theme-header",children:(0,r.jsx)(s.default,{variant:"h6",children:"Theme"})}),(0,r.jsx)(c.A,{children:(0,r.jsx)(P,{})})]}),(0,r.jsxs)(i.A,{expanded:"backup"===e,onChange:n("backup"),children:[(0,r.jsx)(l.A,{expandIcon:(0,r.jsx)(d.A,{}),"aria-controls":"backup-content",id:"backup-header",children:(0,r.jsx)(s.default,{variant:"h6",children:"Backup & Restore"})}),(0,r.jsx)(c.A,{children:(0,r.jsx)(Y,{})})]}),(0,r.jsxs)(i.A,{expanded:"speech"===e,onChange:n("speech"),children:[(0,r.jsx)(l.A,{expandIcon:(0,r.jsx)(d.A,{}),"aria-controls":"speech-content",id:"speech-header",children:(0,r.jsx)(s.default,{variant:"h6",children:"Speech Recognition"})}),(0,r.jsx)(c.A,{children:(0,r.jsx)(H,{})})]}),(0,r.jsxs)(i.A,{expanded:"updates"===e,onChange:n("updates"),children:[(0,r.jsx)(l.A,{expandIcon:(0,r.jsx)(d.A,{}),"aria-controls":"updates-content",id:"updates-header",children:(0,r.jsx)(s.default,{variant:"h6",children:"Updates"})}),(0,r.jsx)(c.A,{children:(0,r.jsx)(q,{})})]}),(0,r.jsxs)(i.A,{expanded:"onboarding"===e,onChange:n("onboarding"),children:[(0,r.jsx)(l.A,{expandIcon:(0,r.jsx)(d.A,{}),"aria-controls":"onboarding-content",id:"onboarding-header",children:(0,r.jsx)(s.default,{variant:"h6",children:"Onboarding"})}),(0,r.jsx)(c.A,{children:(0,r.jsx)(X,{})})]})]})]})}let et=(0,R.h)("app/settings/page");function en(){return et.debug("Rendering SettingsPage"),(0,r.jsx)(a.default,{component:"main",sx:{minHeight:"100vh"},children:(0,r.jsx)(ee,{})})}},69195:(e,t,n)=>{"use strict";n.r(t),n.d(t,{TourProvider:()=>d,useTour:()=>c});var r=n(95155),a=n(12115),o=n(9164),s=n(77326);let i=(0,n(87021).h)("frontend/contexts/TourContext"),l=(0,a.createContext)({isActive:!1,stepIndex:0,startTour:()=>{},next:()=>{},back:()=>{},endTour:()=>{}}),c=()=>(0,a.useContext)(l),d=e=>{var t;let{children:n}=e,{settings:c,updateSettings:d,isLoading:u,settingsHydrated:h}=(0,o.useStorage)(),[p,x]=(0,a.useState)(!1),[b,y]=(0,a.useState)(0),f=(0,a.useRef)(!1),g=(0,a.useCallback)(()=>{var e;d({...c,onboarding:{...null!=(e=c.onboarding)?e:{},completed:!0}}).catch(e=>i.warn("Failed to persist onboarding completion",e))},[c,d]),m=(0,a.useCallback)(()=>{i.info("Starting guided tour"),y(0),x(!0)},[]),j=(0,a.useCallback)(()=>{i.info("Ending guided tour"),x(!1),g()},[g]),v=(0,a.useCallback)(()=>{y(e=>e>=s.$.length-1?(x(!1),g(),e):e+1)},[g]),w=(0,a.useCallback)(()=>{y(e=>Math.max(0,e-1))},[]);return(0,a.useEffect)(()=>{var e;u||!h||f.current||(f.current=!0,(null==(e=c.onboarding)?void 0:e.completed)!==!0&&(i.info("First run detected — auto-starting guided tour"),m()))},[u,h,null==(t=c.onboarding)?void 0:t.completed,m]),(0,r.jsx)(l.Provider,{value:{isActive:p,stepIndex:b,startTour:m,next:v,back:w,endTour:j},children:n})}},77326:(e,t,n)=>{"use strict";n.d(t,{$:()=>r});let r=[{id:"welcome",path:"/",placement:"center",title:"Welcome to FLUJO \uD83D\uDC4B",body:"This quick tour walks you through going from zero to a running AI flow.\n\nYou'll add a model, connect a tool server, build a flow, and run it in chat. It takes about a minute — you can skip any time."},{id:"add-model",path:"/models",target:'[data-tour="add-model"]',placement:"bottom",title:"1. Add a model",body:'FLUJO needs at least one AI model to think with. Click "Add Model" to configure one.\n\nTip: an OpenRouter API key gives you access to several free models — paste the key, name the model, pick a free one, and add a custom instruction.'},{id:"add-mcp-server",path:"/mcp",target:'[data-tour="add-mcp-server"]',placement:"bottom",title:"2. Connect a tool server (MCP)",body:'MCP servers give your model real tools — file access, image generation, web search, and more.\n\nClick "Add Server" and install the "Everything" reference server to try the full range of capabilities while you learn.'},{id:"new-flow",path:"/flows",target:'[data-tour="new-flow"]',placement:"bottom",title:"3. Build a flow",body:'A flow wires everything together. Click "New Flow" to open the builder.\n\nConnect Start → Process → Finish, attach your model to the Process node, and bind the Everything MCP server so the model can use its tools.'},{id:"chat-input",path:"/chat",target:'[data-tour="chat-input"]',placement:"top",title:"4. Run it in chat",body:"Pick your flow from the selector, then send a message here.\n\nTry asking it to generate an image with the MCP server and tell you a joke — you'll see the flow execute live, step by step."},{id:"docs",path:"/chat",target:'[data-tour="nav-docs"]',placement:"bottom",title:"Need the API?",body:"FLUJO exposes an OpenAI-compatible API and a full REST surface. The Docs page lists every endpoint with its method, parameters, and response shape.\n\nYou can re-run this tour any time from Settings → Onboarding."},{id:"finish",path:"/chat",placement:"center",title:"You're all set \uD83C\uDF89",body:"That's the whole loop: models, tools, flows, and chat.\n\nExplore at your own pace — and remember the Docs page and Settings are there when you need them."}]},84869:(e,t,n)=>{"use strict";n.d(t,{G:()=>s,S:()=>o});let r=(0,n(87021).h)("frontend/services/transcription/webSpeech"),a=()=>"webkitSpeechRecognition"in window||"SpeechRecognition"in window;async function o(e,t){if(!a())throw Error("Web Speech API is not supported in this browser");r.debug("Starting Web Speech API transcription");try{let n=URL.createObjectURL(e),a=new Audio(n),o=new(window.SpeechRecognition||window.webkitSpeechRecognition);return o.continuous=!0,o.interimResults=!0,(null==t?void 0:t.language)&&(o.lang=t.language),new Promise((e,n)=>{let s="";o.onresult=e=>{let n="";for(let t=e.resultIndex;t<e.results.length;t++){let r=e.results[t][0].transcript;e.results[t].isFinal?s+=r+" ":n+=r}(null==t?void 0:t.onInterimResult)&&t.onInterimResult(s+n),r.debug("Recognition interim result",{finalLength:s.length,interimLength:n.length})},o.onend=()=>{r.debug("Recognition ended",{transcriptLength:s.length}),e(s.trim())},o.onerror=e=>{r.error("Recognition error",{error:e.error}),n(Error("Speech recognition error: ".concat(e.error)))},a.onplay=()=>{o.start(),r.debug("Recognition started")},a.onended=()=>{o.stop(),r.debug("Audio playback ended")},a.onerror=e=>{r.error("Audio playback error",{error:e}),o.stop(),n(Error("Error playing audio"))},a.play().catch(e=>{r.error("Error starting audio playback",{error:e}),n(e)})})}catch(e){throw r.error("Error in Web Speech API transcription",{error:e}),e}}function s(){return{supported:a(),message:a()?"Web Speech API is supported":"Web Speech API is not supported in this browser"}}},87021:(e,t,n)=>{"use strict";n.d(t,{h:()=>l});let r={LOG_LEVEL:3},a={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},o="number"==typeof r.LOG_LEVEL?r.LOG_LEVEL:a.ERROR;function s(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(t>6)return String(e);if(!(e instanceof Error))return e;let n={name:e.name,message:e.message};for(let r of Object.getOwnPropertyNames(e)){if("name"===r||"message"===r)continue;let a=e[r];"function"!=typeof a&&("stack"===r?n.stack=a:"cause"===r?n.cause=s(a,t+1):"errors"===r&&Array.isArray(a)?n.errors=a.map(e=>s(e,t+1)):n[r]=a)}return n}function i(e,t,n,r,i){if(e>=("number"==typeof i?i:o)){if("function"==typeof r)try{r=r()}catch(e){r="[lazy log data threw]"}let o=new Date().toISOString(),i="[".concat(o,"] [").concat(t,"]"),l="".concat(i," ").concat(n);if(void 0!==r)if(r instanceof Error||"object"==typeof r)try{let e=r instanceof Error?s(r):r,t=JSON.stringify(e,(e,t)=>t instanceof Error?s(t):t,2);l+=":\n".concat(t)}catch(e){l+=": [Object cannot be stringified]"}else l+=": ".concat(r);switch(e){case a.VERBOSE:console.debug("[VERBOSE] ".concat(l));break;case a.DEBUG:console.debug(l);break;case a.INFO:console.info(l);break;case a.WARN:console.warn(l);break;case a.ERROR:console.error(l);break;default:console.log(l)}}}function l(e,t){let n,r=((n=e.replace(/^src\//,"")).startsWith("/")&&(n=n.substring(1)),n);return{verbose:(e,n)=>{i(a.VERBOSE,r,e,n,t)},debug:(e,n)=>{i(a.DEBUG,r,e,n,t)},info:(e,n)=>{i(a.INFO,r,e,n,t)},warn:(e,n)=>{i(a.WARN,r,e,n,t)},error:(e,n)=>{i(a.ERROR,r,e,n,t)}}}}},e=>{e.O(0,[2678,4754,9244,8548,690,9562,2003,488,3272,2403,3077,8598,9554,2709,9164,1226,8441,1255,7358],()=>e(e.s=8209)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,2047,2348,2437,2483,2567,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,2047,2348,2437,2483,2567,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,2047,2348,2437,2483,2567,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,2047,2348,2437,2483,2567,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,2047,2348,2437,2483,2567,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,2047,2348,2437,2483,2567,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,2047,2348,2437,2483,2567,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,2047,2348,2437,2483,2567,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-7248529e02c31012.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,2047,2348,2437,2483,2567,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,2047,2348,2437,2483,2567,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,397,405,624,761,846,1144,1189,1288,1337,1426,1677,2047,2348,2437,2483,2567,3292,3371,3587,3623,3691,4063,4216,4233,4267,4524,4825,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7591,7822,7824,8046,8068,8140,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST=function(e,r,t,_){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:44,errorRate:1e-4,numBits:844,numHashes:14,bitArray:[0,0,r,r,r,r,1,r,1,e,r,e,r,r,e,e,r,e,r,r,e,r,e,e,e,e,e,e,e,e,r,e,e,e,e,e,e,r,e,r,e,e,e,r,r,r,r,r,r,r,r,r,e,r,r,r,r,r,e,e,e,r,r,r,r,r,e,e,e,r,e,e,e,e,e,e,e,e,r,r,r,e,e,r,e,e,e,r,e,e,e,r,r,e,e,e,e,r,r,r,e,e,e,e,e,r,e,r,r,e,e,r,e,r,r,e,e,r,r,r,e,r,e,r,e,r,e,e,e,e,e,e,r,e,e,e,e,r,e,e,r,r,e,r,r,r,e,r,r,r,e,e,e,r,e,r,r,e,r,r,r,e,r,r,e,e,e,e,r,r,r,r,e,e,e,r,e,r,e,r,e,e,r,e,r,e,e,r,r,e,e,r,r,r,r,r,r,e,e,e,e,e,e,e,r,r,e,r,r,e,e,e,r,e,e,e,r,e,r,e,e,e,r,r,e,e,r,e,r,r,r,r,r,r,e,e,e,r,r,e,r,e,r,r,e,r,r,e,r,e,e,r,e,e,r,r,e,r,e,r,r,e,e,e,e,r,r,r,r,r,r,r,r,e,e,r,e,e,e,e,e,r,e,r,r,r,e,r,r,e,r,r,r,e,r,e,r,r,r,r,e,e,e,r,r,r,e,r,e,e,e,e,r,r,r,e,e,e,e,e,e,r,e,r,r,r,r,r,e,e,e,e,e,e,e,r,e,r,r,r,r,r,e,e,r,e,r,r,r,r,e,r,r,r,r,e,r,e,e,e,e,r,e,e,r,e,r,e,e,r,r,r,r,e,r,e,r,e,e,r,r,r,r,e,e,r,e,r,e,e,r,e,r,e,e,e,e,r,r,r,e,e,r,e,e,e,r,e,e,r,e,e,r,e,r,r,r,r,r,e,r,e,r,e,r,r,r,e,e,r,e,r,r,e,r,e,r,e,e,e,e,r,e,e,e,e,e,e,e,e,e,r,e,e,e,r,e,e,r,e,r,r,e,r,r,e,r,r,r,r,e,e,e,r,r,e,e,e,e,e,r,e,e,e,r,e,e,r,e,e,e,e,e,e,e,r,e,r,e,r,r,r,r,e,e,r,e,e,e,e,r,e,r,e,e,e,e,r,e,e,e,r,e,e,r,r,r,e,e,r,e,e,r,r,e,e,r,e,e,r,e,r,e,r,r,e,r,e,r,r,e,e,e,r,r,e,r,e,r,r,e,r,e,e,e,e,e,e,e,e,r,r,r,e,e,e,r,r,e,r,r,e,e,r,e,r,r,e,e,r,e,r,e,e,r,r,e,r,r,r,r,r,e,r,e,r,r,e,r,e,e,r,e,r,e,e,e,e,r,r,e,e,r,r,e,e,r,r,r,e,e,r,r,r,r,e,r,r,e,e,e,r,e,r,e,r,e,e,e,r,e,e,e,e,e,e,r,e,e,r,r,e,r,e,e,e,r,r,r,r,r,r,e,r,r,e,r,e,r,e,r,e,e,r,e,r,e,r,e,e,r,r,e,e,e,e,e,r,r,e,r,e,e,e,e,e,r,r,e,e,r,r,r,r,r,r,r,r,e,r,e,r,r,e,e,r,r,r,r,r,r,e,r,r,r,r,r,e,r,r,e,e,r,r,e,e,r,r,e,r,e,r,e,e,e,e,r,r,e,r,r,e,r,r,r,r,e,r,e,e,e,e,r,e,r,e,e,r,e,e,e,r,e,e,e,r,r,e,e,e,r,r,r,r,r,r,e,e,r,e,r,r,e,r,e,e,e,e,r,e,e,r,e,r,e,r,r,r,e,r,r,e,r,e,r,e,e,r,e,r,e,e,r,r,e,e,r,e,r,e,r,e,r,e]},__routerFilterDynamic:{numItems:7,errorRate:1e-4,numBits:135,numHashes:14,bitArray:[e,e,e,r,r,e,r,e,r,e,r,e,e,r,e,e,r,e,e,r,e,r,r,e,r,e,r,e,r,e,r,e,r,e,r,e,e,e,e,e,r,r,e,e,r,r,r,r,r,r,r,e,e,r,e,r,r,e,e,r,r,e,r,r,e,r,r,r,e,r,r,e,e,r,e,e,r,r,e,r,r,r,e,r,r,e,e,e,e,e,r,e,e,e,r,e,e,e,e,e,r,r,e,r,r,e,r,r,r,e,r,e,e,e,e,r,r,e,e,e,r,e,r,r,e,r,r,r,r,e,r,r,e,e,r]},"/_error":["static/chunks/pages/_error-c8f84f7bd11d43d4.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4,14),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
|
File without changes
|