flujo-ai 3.24.0 → 3.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +399 -290
- package/.next/app-path-routes-manifest.json +18 -8
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +24 -0
- package/.next/react-loadable-manifest.json +26 -20
- package/.next/routes-manifest.json +6 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +3 -3
- package/.next/server/app/api/approvals/[id]/route.js +1 -1
- package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/approvals/route.js +2 -2
- package/.next/server/app/api/approvals/route.js.nft.json +1 -1
- package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/backup/route.js +1 -1
- package/.next/server/app/api/backup/route.js.nft.json +1 -1
- package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/browse/route.js +1 -1
- package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/bugs/enhance/route.js +3 -3
- package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
- package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cwd/route.js +1 -1
- package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/encryption/secure/route.js +1 -1
- package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
- package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/env/route.js +1 -1
- package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/route.js +1 -1
- package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/compile/route.js +1 -1
- package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/generate/route.js +1 -1
- package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/improve/route.js +1 -1
- package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
- package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/repair/route.js +1 -1
- package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/route.js +1 -1
- package/.next/server/app/api/flow/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/git/route.js +2 -2
- package/.next/server/app/api/git/route.js.nft.json +1 -1
- package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/init/route.js +1 -1
- package/.next/server/app/api/init/route.js.nft.json +1 -1
- package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/cancel/route.js +2 -2
- package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/route.js +2 -2
- package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/[id]/route.js +1 -1
- package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/provider/route.js +2 -2
- package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
- package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/route.js +1 -1
- package/.next/server/app/api/model/route.js.nft.json +1 -1
- package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/test/route.js +2 -2
- package/.next/server/app/api/model/test/route.js.nft.json +1 -1
- package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/callback/route.js +2 -2
- package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/initiate/route.js +2 -2
- package/.next/server/app/api/oauth/initiate/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/reset/route.js +2 -2
- package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/build/route.js +1 -0
- package/.next/server/app/api/packages/build/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/derive-secrets/route.js +1 -0
- package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/install/route.js +1 -0
- package/.next/server/app/api/packages/install/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/install/status/route.js +1 -0
- package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/resolve/route.js +1 -0
- package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/planned-executions/[id]/route.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/route.js +1 -1
- package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/resend/route.js +1 -0
- package/.next/server/app/api/registry/auth/resend/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/auth/route.js +1 -0
- package/.next/server/app/api/registry/auth/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/publish/route.js +1 -0
- package/.next/server/app/api/registry/publish/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/settings/route.js +1 -0
- package/.next/server/app/api/registry/settings/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/restore/route.js +1 -1
- package/.next/server/app/api/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/runs/active/route.js +2 -2
- package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
- package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/update/route.js +1 -1
- package/.next/server/app/api/update/route.js.nft.json +1 -1
- package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/waves/route.js +1 -1
- package/.next/server/app/api/waves/route.js.nft.json +1 -1
- package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/chat/page.js +9 -10
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +4 -4
- package/.next/server/app/docs/page.js +13 -10
- package/.next/server/app/docs/page.js.nft.json +1 -1
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +4 -4
- package/.next/server/app/executions/page.js +3 -3
- package/.next/server/app/executions/page.js.nft.json +1 -1
- package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/executions.html +1 -1
- package/.next/server/app/executions.rsc +4 -4
- package/.next/server/app/flows/page.js +3 -3
- package/.next/server/app/flows/page.js.nft.json +1 -1
- package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
- package/.next/server/app/flows.html +1 -1
- package/.next/server/app/flows.rsc +5 -5
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- package/.next/server/app/mcp/page.js +6 -6
- package/.next/server/app/mcp/page.js.nft.json +1 -1
- package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-flows/route.js +1 -1
- package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
- package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
- package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp.html +1 -1
- package/.next/server/app/mcp.rsc +4 -4
- package/.next/server/app/models/page.js +2 -2
- package/.next/server/app/models/page.js.nft.json +1 -1
- package/.next/server/app/models/page_client-reference-manifest.js +1 -1
- package/.next/server/app/packages/page.js +3 -0
- package/.next/server/app/packages/page.js.nft.json +1 -0
- package/.next/server/app/packages/page_client-reference-manifest.js +1 -0
- package/.next/server/app/packages.html +1 -0
- package/.next/server/app/packages.meta +7 -0
- package/.next/server/app/packages.rsc +22 -0
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +3 -57
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +4 -4
- package/.next/server/app/v1/chat/completions/route.js +1 -1
- package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/models/route.js +2 -2
- package/.next/server/app/v1/models/route.js.nft.json +1 -1
- package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/waves/page.js +4 -4
- package/.next/server/app/waves/page.js.nft.json +1 -1
- package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
- package/.next/server/app/waves.html +1 -1
- package/.next/server/app/waves.rsc +4 -4
- package/.next/server/app-paths-manifest.json +18 -8
- package/.next/server/chunks/1083.js +1 -1
- package/.next/server/chunks/1089.js +1 -0
- package/.next/server/chunks/1114.js +1 -0
- package/.next/server/chunks/1197.js +2 -2
- package/.next/server/chunks/1226.js +1 -1
- package/.next/server/chunks/1314.js +1 -0
- package/.next/server/chunks/1604.js +65 -0
- package/.next/server/chunks/1659.js +1 -1
- package/.next/server/chunks/166.js +5 -0
- package/.next/server/chunks/1805.js +1 -0
- package/.next/server/chunks/1819.js +2 -0
- package/.next/server/chunks/1925.js +1 -0
- package/.next/server/chunks/237.js +1 -0
- package/.next/server/chunks/2373.js +1 -0
- package/.next/server/chunks/2388.js +1 -0
- package/.next/server/chunks/2434.js +2 -0
- package/.next/server/chunks/2666.js +1 -0
- package/.next/server/chunks/2859.js +1 -3
- package/.next/server/chunks/2940.js +41 -0
- package/.next/server/chunks/2985.js +1 -0
- package/.next/server/chunks/3298.js +2 -0
- package/.next/server/chunks/3312.js +1 -0
- package/.next/server/chunks/{8445.js → 3392.js} +2 -2
- package/.next/server/chunks/346.js +1 -0
- package/.next/server/chunks/3569.js +1 -0
- package/.next/server/chunks/3629.js +1 -0
- package/.next/server/chunks/4042.js +1 -0
- package/.next/server/chunks/4306.js +1 -0
- package/.next/server/chunks/4322.js +1 -0
- package/.next/server/chunks/{3774.js → 4426.js} +2 -2
- package/.next/server/chunks/4545.js +6 -2
- package/.next/server/chunks/{3928.js → 4661.js} +1 -1
- package/.next/server/chunks/4671.js +1 -1
- package/.next/server/chunks/4681.js +1 -0
- package/.next/server/chunks/4765.js +1 -0
- package/.next/server/chunks/4771.js +2 -2
- package/.next/server/chunks/5094.js +2 -0
- package/.next/server/chunks/5096.js +1 -0
- package/.next/server/chunks/510.js +1 -0
- package/.next/server/chunks/5150.js +1 -0
- package/.next/server/chunks/5463.js +1 -0
- package/.next/server/chunks/5544.js +5 -0
- package/.next/server/chunks/5708.js +12 -9
- package/.next/server/chunks/5880.js +1 -0
- package/.next/server/chunks/6005.js +1 -0
- package/.next/server/chunks/6529.js +5 -0
- package/.next/server/chunks/6537.js +1 -1
- package/.next/server/chunks/6826.js +1 -1
- package/.next/server/chunks/6996.js +1 -62
- package/.next/server/chunks/701.js +1 -1
- package/.next/server/chunks/7028.js +1 -0
- package/.next/server/chunks/7214.js +6 -0
- package/.next/server/chunks/724.js +1 -1
- package/.next/server/chunks/7362.js +17 -13
- package/.next/server/chunks/7463.js +6 -0
- package/.next/server/chunks/7485.js +1 -0
- package/.next/server/chunks/7498.js +42 -0
- package/.next/server/chunks/7506.js +1 -1
- package/.next/server/chunks/7579.js +82 -0
- package/.next/server/chunks/7674.js +1 -0
- package/.next/server/chunks/7764.js +37 -0
- package/.next/server/chunks/7821.js +1 -1
- package/.next/server/chunks/8192.js +12 -0
- package/.next/server/chunks/{2998.js → 826.js} +2 -2
- package/.next/server/chunks/8387.js +1 -0
- package/.next/server/chunks/{5662.js → 8522.js} +1 -1
- package/.next/server/chunks/8667.js +1 -0
- package/.next/server/chunks/869.js +2 -0
- package/.next/server/chunks/{3489.js → 8730.js} +1 -1
- package/.next/server/chunks/8732.js +62 -0
- package/.next/server/chunks/8739.js +2 -2
- package/.next/server/chunks/8745.js +1 -1
- package/.next/server/chunks/8851.js +1 -0
- package/.next/server/chunks/94.js +1 -0
- package/.next/server/chunks/{1152.js → 9400.js} +1 -1
- package/.next/server/chunks/{4456.js → 9472.js} +2 -2
- package/.next/server/chunks/9583.js +1 -0
- package/.next/server/functions-config-manifest.json +2 -2
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/server/src/middleware.js +2 -2
- package/.next/server/src/middleware.js.map +1 -1
- package/.next/static/O-elWbT5rs6ci1CrCqez1/_buildManifest.js +1 -0
- package/.next/static/chunks/1871-14c3e63ca865d85e.js +1 -0
- package/.next/static/chunks/2003-f826c607d609d1fa.js +1 -0
- package/.next/static/chunks/{6257-ee5d8d88050d7705.js → 2019-f22580cb726c5dca.js} +1 -1
- package/.next/static/chunks/256-a13a59247ac6cc68.js +1 -0
- package/.next/static/chunks/2566-60acd5838abd9f3f.js +1 -0
- package/.next/static/chunks/2822-8168e3bb8443a1ec.js +1 -0
- package/.next/static/chunks/289-98f50bfcf833d661.js +1 -0
- package/.next/static/chunks/2981-10313d395eb99645.js +1 -0
- package/.next/static/chunks/3028-fc1f04241ed578ff.js +1 -0
- package/.next/static/chunks/3089.9e15df4ffd0fe4e8.js +1 -0
- package/.next/static/chunks/3217.260785c2198d1e9d.js +1 -0
- package/.next/static/chunks/3392-6dd9ad3be66a7ce9.js +1 -0
- package/.next/static/chunks/3556-b9855146c7506696.js +1 -0
- package/.next/static/chunks/3560-5bdceef09b50e1c3.js +1 -0
- package/.next/static/chunks/3574-94e9f20550550a58.js +1 -0
- package/.next/static/chunks/4483-463f8bfc6f3dd5fa.js +1 -0
- package/.next/static/chunks/4523-a540747aa2ed34e8.js +1 -0
- package/.next/static/chunks/{488-623d07c3fbc21e28.js → 488-7ab54d8ae2b4b550.js} +1 -1
- package/.next/static/chunks/5512.682bef7fd3a7c286.js +1 -0
- package/.next/static/chunks/5578-49bc150686c13b6f.js +1 -0
- package/.next/static/chunks/5766-dbd21cb8435605aa.js +1 -0
- package/.next/static/chunks/5866-6834cbc4ab02d86f.js +1 -0
- package/.next/static/chunks/6669-012c73587a6628fc.js +1 -0
- package/.next/static/chunks/6691-117567b2b40cd9f4.js +1 -0
- package/.next/static/chunks/6961-a40e97c06e616300.js +1 -0
- package/.next/static/chunks/7111-44538f8a64241b74.js +1 -0
- package/.next/static/chunks/7445-2802e158c9093556.js +1 -0
- package/.next/static/chunks/7554-db290baed5782cab.js +8 -0
- package/.next/static/chunks/795-704a0e742ecc2ef6.js +1 -0
- package/.next/static/chunks/8041-05830e887c133085.js +1 -0
- package/.next/static/chunks/{812-624e93f4c0f671c7.js → 812-8b3d4e0f6546d6f9.js} +1 -1
- package/.next/static/chunks/8345.bc5534ec13abc9ee.js +1 -0
- package/.next/static/chunks/8401-0f39d91810180a88.js +1 -0
- package/.next/static/chunks/8405.73e8be2c8e5b55c5.js +1 -0
- package/.next/static/chunks/8470-72cf748472d4d501.js +1 -0
- package/.next/static/chunks/8834-faf121e257b517d5.js +1 -0
- package/.next/static/chunks/8989-5fa9c7c670eb9a1a.js +1 -0
- package/.next/static/chunks/{9164-d9f1abba780231e0.js → 9164-840f056a0e11d979.js} +1 -1
- package/.next/static/chunks/9562-ef0ddd4e6b9023cf.js +1 -0
- package/.next/static/chunks/9720-5ecb48f1a28808fe.js +1 -0
- package/.next/static/chunks/app/api/approvals/[id]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/approvals/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/backup/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/browse/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/bugs/enhance/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/cwd/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/encryption/secure/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/env/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/flow/compile/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/flow/generate/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/flow/improve/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/flow/quick-chat/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/flow/repair/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/flow/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/git/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/init/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/local-models/capability/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/local-models/pull/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/local-models/suggest/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/cancel/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/model/[id]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/model/provider/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/model/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/model/test/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/oauth/callback/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/oauth/initiate/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/oauth/reset/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/packages/build/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/packages/derive-secrets/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/packages/install/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/packages/install/status/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/packages/resolve/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/resend/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/registry/publish/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/registry/settings/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/restore/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/runs/active/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/storage/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/update/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/waves/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/api/webhooks/[id]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/chat/page-93403b0e520ba8d3.js +1 -0
- package/.next/static/chunks/app/docs/page-2c972a639cd9a41c.js +1 -0
- package/.next/static/chunks/app/executions/page-bb2fef60b2240f69.js +1 -0
- package/.next/static/chunks/app/flows/page-d60c5b47c923564a.js +1 -0
- package/.next/static/chunks/app/layout-eea7078d7553c21a.js +1 -0
- package/.next/static/chunks/app/mcp/page-92c03186d566a4f5.js +1 -0
- package/.next/static/chunks/app/mcp-flows/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/mcp-proxy/[server]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/models/error-5732fbb053e182c5.js +1 -0
- package/.next/static/chunks/app/models/page-d71e5606a8e29479.js +1 -0
- package/.next/static/chunks/app/packages/page-e64480d78312edd0.js +1 -0
- package/.next/static/chunks/app/{page-a859e4dbd180df98.js → page-d3ea90b065b95d1e.js} +1 -1
- package/.next/static/chunks/app/settings/page-d067a3a624ec2fa0.js +1 -0
- package/.next/static/chunks/app/v1/chat/completions/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/v1/models/route-3e3cc52436d34625.js +1 -0
- package/.next/static/chunks/app/waves/page-ff15db2f75fb5d62.js +1 -0
- package/.next/static/chunks/webpack-2b2d7505a2ac6538.js +1 -0
- package/.next/static/css/40f9bef305b11bf5.css +1 -0
- package/.next/static/css/{64cb1f185b52a623.css → 69ab44eb350e0b6c.css} +1 -1
- package/.next/trace +9 -8
- package/.next/types/app/api/packages/build/route.ts +347 -0
- package/.next/types/app/api/packages/derive-secrets/route.ts +347 -0
- package/.next/types/app/api/packages/install/route.ts +347 -0
- package/.next/types/app/api/packages/install/status/route.ts +347 -0
- package/.next/types/app/api/packages/resolve/route.ts +347 -0
- package/.next/types/app/api/registry/auth/resend/route.ts +347 -0
- package/.next/types/app/api/registry/auth/route.ts +347 -0
- package/.next/types/app/api/registry/publish/route.ts +347 -0
- package/.next/types/app/api/registry/settings/route.ts +347 -0
- package/.next/types/app/packages/page.ts +84 -0
- package/.next/types/routes.d.ts +12 -2
- package/.next/types/validator.ts +90 -0
- package/README.md +31 -1
- package/package.json +6 -1
- package/.next/server/chunks/1119.js +0 -1
- package/.next/server/chunks/1223.js +0 -1
- package/.next/server/chunks/1377.js +0 -1
- package/.next/server/chunks/1439.js +0 -1
- package/.next/server/chunks/1910.js +0 -37
- package/.next/server/chunks/1999.js +0 -1
- package/.next/server/chunks/2246.js +0 -1
- package/.next/server/chunks/2823.js +0 -6
- package/.next/server/chunks/289.js +0 -1
- package/.next/server/chunks/3030.js +0 -1
- package/.next/server/chunks/3286.js +0 -6
- package/.next/server/chunks/3291.js +0 -1
- package/.next/server/chunks/3823.js +0 -41
- package/.next/server/chunks/4372.js +0 -1
- package/.next/server/chunks/4561.js +0 -65
- package/.next/server/chunks/4637.js +0 -81
- package/.next/server/chunks/472.js +0 -1
- package/.next/server/chunks/5148.js +0 -1
- package/.next/server/chunks/5311.js +0 -1
- package/.next/server/chunks/62.js +0 -1
- package/.next/server/chunks/6644.js +0 -1
- package/.next/server/chunks/6793.js +0 -1
- package/.next/server/chunks/6908.js +0 -12
- package/.next/server/chunks/7427.js +0 -1
- package/.next/server/chunks/7723.js +0 -1
- package/.next/server/chunks/7769.js +0 -6
- package/.next/server/chunks/8518.js +0 -2
- package/.next/server/chunks/8652.js +0 -42
- package/.next/static/chunks/1620-0d8ecd877f123f7b.js +0 -1
- package/.next/static/chunks/1871-dd8c10ed9d37100b.js +0 -1
- package/.next/static/chunks/1983-242862b3dc022a26.js +0 -1
- package/.next/static/chunks/2003-460f30484998c05d.js +0 -1
- package/.next/static/chunks/2403-5c26e0abd76095b1.js +0 -1
- package/.next/static/chunks/2619-04bc32f026a0d946.js +0 -1
- package/.next/static/chunks/3217.058098140ec3f563.js +0 -1
- package/.next/static/chunks/3454-a8db9caba457e5fa.js +0 -1
- package/.next/static/chunks/3730-149f2f058529f75f.js +0 -1
- package/.next/static/chunks/3736-5e2b3f6cda1bb923.js +0 -1
- package/.next/static/chunks/4207-41abb9622eb4b4f8.js +0 -1
- package/.next/static/chunks/4749-f8796d16ff604d54.js +0 -1
- package/.next/static/chunks/4812-4a9aceb49632a973.js +0 -1
- package/.next/static/chunks/5501-f5b093c8dfd74196.js +0 -1
- package/.next/static/chunks/6016.8201fa15ab6aa90e.js +0 -1
- package/.next/static/chunks/6288-a285bbbd701e0dbf.js +0 -1
- package/.next/static/chunks/6731-c230e88cf0032609.js +0 -1
- package/.next/static/chunks/7430-6e78aaeac66988a9.js +0 -1
- package/.next/static/chunks/7583.7af90b94e3c263f2.js +0 -1
- package/.next/static/chunks/7687-7edf1a6e1f063b08.js +0 -1
- package/.next/static/chunks/8083.16fda2c7f6d10d0c.js +0 -1
- package/.next/static/chunks/8480-229fd353b68b570f.js +0 -1
- package/.next/static/chunks/8548-8e4a95334064e8b2.js +0 -1
- package/.next/static/chunks/8611-f6d51119761d52ff.js +0 -8
- package/.next/static/chunks/8834-bda798efab40c60a.js +0 -1
- package/.next/static/chunks/9356-99ba407b60b9dfe9.js +0 -1
- package/.next/static/chunks/9451-680fa09f81f18806.js +0 -1
- package/.next/static/chunks/9659-a279e3aaba407251.js +0 -1
- package/.next/static/chunks/app/api/approvals/[id]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/approvals/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/backup/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/browse/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/bugs/enhance/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/cwd/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/encryption/secure/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/env/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/compile/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/generate/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/improve/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/quick-chat/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/repair/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/git/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/init/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/local-models/capability/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/local-models/pull/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/local-models/suggest/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/cancel/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/model/[id]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/model/provider/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/model/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/model/test/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/oauth/callback/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/oauth/initiate/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/oauth/reset/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/restore/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/runs/active/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/storage/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/update/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/waves/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/webhooks/[id]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/chat/page-6a5b5f9ea2542fb3.js +0 -1
- package/.next/static/chunks/app/docs/page-935b0386917b91bb.js +0 -1
- package/.next/static/chunks/app/executions/page-d72027b0179e8fa2.js +0 -1
- package/.next/static/chunks/app/flows/page-fbce5abe34500f28.js +0 -1
- package/.next/static/chunks/app/layout-2ebf01d97702a18a.js +0 -1
- package/.next/static/chunks/app/mcp/page-8666173926cabf31.js +0 -1
- package/.next/static/chunks/app/mcp-flows/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/mcp-proxy/[server]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/models/error-a3183f168e8a9b04.js +0 -1
- package/.next/static/chunks/app/models/page-18dbd8e01cf87e98.js +0 -1
- package/.next/static/chunks/app/settings/page-7a68583660508ffd.js +0 -1
- package/.next/static/chunks/app/v1/chat/completions/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/models/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/waves/page-ec33cf79f6103a9e.js +0 -1
- package/.next/static/chunks/webpack-f4a471ab560eb19e.js +0 -1
- package/.next/static/css/39393a79f7cb0dee.css +0 -1
- package/.next/static/eUM7C1boixGI469h5wtIk/_buildManifest.js +0 -1
- /package/.next/static/{eUM7C1boixGI469h5wtIk → O-elWbT5rs6ci1CrCqez1}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,109,282,312,397,405,624,761,846,1144,1189,1288,1337,1426,1513,1677,1797,2047,2348,2437,2483,2567,2669,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4735,4806,4825,4864,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8084,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,109,282,312,397,405,624,761,846,1144,1189,1288,1337,1426,1513,1677,1797,2047,2348,2437,2483,2567,2669,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4735,4806,4825,4864,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8084,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,109,282,312,397,405,624,761,846,1144,1189,1288,1337,1426,1513,1677,1797,2047,2348,2437,2483,2567,2669,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4735,4806,4825,4864,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8084,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,109,282,312,397,405,624,761,846,1144,1189,1288,1337,1426,1513,1677,1797,2047,2348,2437,2483,2567,2669,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4735,4806,4825,4864,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8084,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,109,282,312,397,405,624,761,846,1144,1189,1288,1337,1426,1513,1677,1797,2047,2348,2437,2483,2567,2669,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4735,4806,4825,4864,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8084,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,109,282,312,397,405,624,761,846,1144,1189,1288,1337,1426,1513,1677,1797,2047,2348,2437,2483,2567,2669,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4735,4806,4825,4864,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8084,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,109,282,312,397,405,624,761,846,1144,1189,1288,1337,1426,1513,1677,1797,2047,2348,2437,2483,2567,2669,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4735,4806,4825,4864,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8084,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,109,282,312,397,405,624,761,846,1144,1189,1288,1337,1426,1513,1677,1797,2047,2348,2437,2483,2567,2669,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4735,4806,4825,4864,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8084,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,109,282,312,397,405,624,761,846,1144,1189,1288,1337,1426,1513,1677,1797,2047,2348,2437,2483,2567,2669,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4735,4806,4825,4864,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8084,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,109,282,312,397,405,624,761,846,1144,1189,1288,1337,1426,1513,1677,1797,2047,2348,2437,2483,2567,2669,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4735,4806,4825,4864,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8084,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,109,282,312,397,405,624,761,846,1144,1189,1288,1337,1426,1513,1677,1797,2047,2348,2437,2483,2567,2669,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4735,4806,4825,4864,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8084,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[77,109,282,312,397,405,624,761,846,1144,1189,1288,1337,1426,1513,1677,1797,2047,2348,2437,2483,2567,2669,3190,3292,3369,3371,3551,3587,3623,3691,4063,4216,4233,4267,4300,4524,4735,4806,4825,4864,5196,5617,5618,5644,5817,6078,6600,6744,7002,7144,7221,7276,7591,7822,7824,7845,8046,8068,8084,8140,8201,8350,8467,8479,8510,8563,9128,9217,9247,9487,9604,9661,9666,9726,9942,9959],{84441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8457,9164],{1877:(e,t,n)=>{"use strict";n.d(t,{Hm:()=>a,xc:()=>o,yo:()=>l});let r=["key","secret","token","password"],o=e=>r.some(t=>e.toLowerCase().includes(t)),a=e=>o(e)||"authorization"===e.trim().toLowerCase(),l=e=>{if(!e)return e;if(e.includes("_-_-_")){let t=e.split("_-_-_");return 3===t.length?t[2]:e}let t=/^mcp_(.+)_[0-9a-z]+$/.exec(e);if(t&&t[1])return t[1];let n=e.indexOf("__");return n>0&&n+2<e.length?e.slice(n+2):e}},8852:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>ny});var r=n(95155),o=n(12115),a=n(97322),l=n(20063),i=n(94049),s=n(78470),d=n(41983),c=n(22003),u=n(9562),p=n(25635),f=n(28548),h=n(91871),g=n(3339),m=n(67895),x=n(2778),v=n(52363),y=n(65036),b=n(50001),w=n(75912),j=n(22719),A=n(11096),S=n(76530),I=n(36741),k=n(60691),C=n(47419),E=n(78410),T=n(14915),N=n(55930),z=n(26922),R=n(29692),_=n(23820),D=n(73707),P=n(17681),O=n(21067),M=n(56422),F=n(52641),L=n(55606),W=n(86973),H=n(41602),U=n(50430),B=n(4484),J=n(86946),q=n(19219),G=n(51611),V=n(12140),K=n(63186),Y=n(62962);function Q(e){return"string"==typeof e&&e.startsWith("quickchat-")}n(77890);var X=n(88377),Z=n(38459);let $="wave:__adhoc__",ee="wave:__archived__";var et=n(97104);function en(e){let{nodes:t,childrenByParent:n,renderItem:o,expanded:a,onToggle:l,depth:s=0,visited:c,maxDepth:u=20}=e;if(!t||0===t.length||s>u)return null;let p=null!=c?c:new Set;return(0,r.jsx)(r.Fragment,{children:t.map(e=>{var t;if(p.has(e.id))return null;let c=null!=(t=n.get(e.id))?t:[],f=c.length>0&&s<u,h=!1!==a[e.id],g=new Set(p);return g.add(e.id),(0,r.jsxs)(i.default,{sx:{pl:1.5*(s>0),borderLeft:s>0?"1px dashed rgba(128,128,128,0.35)":"none"},children:[(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"flex-start"},children:[f?(0,r.jsx)(d.A,{size:"small",onClick:()=>l(e.id),"aria-label":h?"Collapse chain":"Expand chain",sx:{mt:.5,flexShrink:0},children:h?(0,r.jsx)(Y.A,{fontSize:"small"}):(0,r.jsx)(K.A,{fontSize:"small"})}):(0,r.jsx)(i.default,{sx:{width:34,flexShrink:0}}),(0,r.jsx)(i.default,{sx:{flex:1,minWidth:0},children:o(e,s)})]}),f&&(0,r.jsx)(U.A,{in:h,timeout:"auto",unmountOnExit:!0,children:(0,r.jsx)(en,{nodes:c,childrenByParent:n,renderItem:o,expanded:a,onToggle:l,depth:s+1,visited:g,maxDepth:u})})]},e.id)})})}let er={group:"flujo-ui:chat-sidebar:group",status:"flujo-ui:chat-sidebar:status",flow:"flujo-ui:chat-sidebar:flow",date:"flujo-ui:chat-sidebar:date",collapsed:"flujo-ui:chat-sidebar:collapsed",searchDim:"flujo-ui:chat-sidebar:search-dim"},eo=[{value:"all",label:"Any status"},{value:"running",label:"Processing"},{value:"awaiting_tool_approval",label:"Awaiting approval"},{value:"paused_debug",label:"Paused (debug)"},{value:"completed",label:"Completed"},{value:"error",label:"Error"}],ea=[{value:"all",label:"Any time"},{value:"today",label:"Last 24h"},{value:"7d",label:"Last 7 days"},{value:"30d",label:"Last 30 days"}],el=[{value:"none",label:"No grouping"},{value:"date",label:"Group by date"},{value:"flow",label:"Group by flow"},{value:"wave",label:"Group by wave"},{value:"chain",label:"Group by chain"}],ei=e=>{let{conversations:t,currentConversationId:n,onSelectConversation:a,onDeleteConversation:l,onStopConversation:c,onNewConversation:g,onQuickChat:m,onCollapse:x,flowNames:v={}}=e,[y,b]=o.useState(""),[w,j]=(0,et.Xk)(er.searchDim,"title"),[S,I]=o.useState(null),[k,E]=(0,et.Xk)(er.group,"none"),[T,N]=(0,et.Xk)(er.status,"all"),[z,R]=(0,et.Xk)(er.flow,"all"),[ei,es]=(0,et.Xk)(er.date,"all"),[ed,ec]=(0,et.Xk)(er.collapsed,{}),[eu,ep]=o.useState(null);o.useEffect(()=>{if("wave"!==k)return;let e=!1;return fetch("/api/waves").then(e=>e.ok?e.json():null).then(t=>{!e&&t&&ep(t)}).catch(()=>{}),()=>{e=!0}},[k,t]);let ef=(0,o.useMemo)(()=>(function(e){let t=new Map;if(!(null==e?void 0:e.waves))return t;for(let r of e.waves){var n;let e=null==(n=r.rootExecutionIds)?void 0:n[0],o=e&&r.nodes.find(t=>t.executionId===e)||r.nodes[0],a=(null==o?void 0:o.name)||(null==o?void 0:o.flowName)||r.id;for(let e of r.nodes)t.set(e.executionId,{waveId:r.id,label:a})}return t})(eu),[eu]);o.useEffect(()=>{let e=y.trim();if("content"!==w||0===e.length)return void I(null);let t=!1,n=setTimeout(()=>{fetch("/v1/chat/conversations?search=".concat(encodeURIComponent(e),"&dimension=content")).then(e=>e.ok?e.json():[]).then(e=>{t||I(new Set(Array.isArray(e)?e.map(e=>e.id):[]))}).catch(()=>{t||I(new Set)})},300);return()=>{t=!0,clearTimeout(n)}},[y,w]);let eh=o.useCallback(e=>{var t;return e?Q(e)?{key:"flow:__quickchat__",label:"Quick Chat"}:{key:"flow:".concat(e),label:null!=(t=v[e])?t:"Unknown flow"}:{key:"flow:__none__",label:"No flow"}},[v]),eg=(0,o.useMemo)(()=>{let e=new Map;for(let n of t){let t=eh(n.flowId);e.has(t.key)||e.set(t.key,t.label)}return Array.from(e.entries()).map(e=>{let[t,n]=e;return{key:t,label:n}}).sort((e,t)=>e.label.localeCompare(t.label))},[t,eh]),em=(0,o.useMemo)(()=>{let e=y.trim().toLowerCase(),n=Date.now(),r="today"===ei?n-864e5:"7d"===ei?n-6048e5:"30d"===ei?n-2592e6:0;return t.filter(t=>{if("all"!==T&&t.status!==T||"all"!==z&&eh(t.flowId).key!==z||r&&t.updatedAt<r)return!1;if(e){if("content"===w){if(!S||!S.has(t.id))return!1}else if(!"".concat(t.title," ").concat(eh(t.flowId).label).toLowerCase().includes(e))return!1}return!0}).sort((e,t)=>t.updatedAt-e.updatedAt)},[t,y,w,S,T,z,ei,eh]),ex=(0,o.useMemo)(()=>"none"===k?[{key:"all",label:"",items:em}]:"wave"===k?function(e){let t=new Set([$,ee]);return[...e.filter(e=>!t.has(e.key)),...e.filter(e=>t.has(e.key))]}((0,Z.Az)(em,e=>(function(e,t){if(!e)return{key:$,label:"Ad-hoc"};let n=t.get(e);return n?{key:"wave:".concat(n.waveId),label:n.label}:{key:ee,label:"Archived / no longer scheduled"}})(e.plannedExecutionId,ef))):(0,Z.Az)(em,e=>"date"===k?(0,X.K)(e.updatedAt):eh(e.flowId)),[em,k,eh,ef]),ev=(0,o.useMemo)(()=>"chain"===k?function(e){var t,n;let r=new Map;for(let t of e)r.set(t.id,t);let o=new Map,a=[],l=e=>e.parentConversationId&&e.parentConversationId!==e.id?e.parentConversationId:null;for(let n of e){let e=l(n);if(e&&r.has(e)){let r=null!=(t=o.get(e))?t:[];r.push(n),o.set(e,r)}else a.push(n)}let i=new Set,s=[...a];for(;s.length;){let e=s.pop();if(!i.has(e.id))for(let t of(i.add(e.id),null!=(n=o.get(e.id))?n:[]))s.push(t)}let d=new Set(a.map(e=>e.id));for(let t of e)i.has(t.id)||d.has(t.id)||(a.push(t),d.add(t.id));return{roots:a,childrenByParent:o}}(em):{roots:[],childrenByParent:new Map},[k,em]),[ey,eb]=o.useState({}),ew=o.useCallback(e=>{eb(t=>({...t,[e]:!1===t[e]}))},[]),ej=+("all"!==T)+ +("all"!==z)+ +("all"!==ei),eA=e=>{let t=!!c&&("running"===e.status||"awaiting_tool_approval"===e.status),o=eh(e.flowId),u="flow:__quickchat__"===o.key;return(0,r.jsx)(_.Ay,{disablePadding:!0,secondaryAction:(0,r.jsxs)(r.Fragment,{children:[t&&(0,r.jsx)(s.A,{title:"Stop this run",children:(0,r.jsx)(d.A,{edge:"end","aria-label":"stop run",onClick:t=>{t.stopPropagation(),c(e.id)},children:(0,r.jsx)(C.A,{color:"error"})})}),(0,r.jsx)(d.A,{edge:"end","aria-label":"delete",onClick:t=>{t.stopPropagation(),l(e.id)},children:(0,r.jsx)(B.A,{})})]}),sx:{opacity:e.id===n?1:.7},children:(0,r.jsx)(D.A,{selected:e.id===n,onClick:()=>a(e.id),sx:{pr:t?12:7},children:(0,r.jsx)(P.A,{primary:(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[e.status&&(0,r.jsx)(s.A,{title:(e=>{switch(e){case"running":return"Processing";case"awaiting_tool_approval":return"Waiting for tool approval";case"paused_debug":return"Paused in debug mode";case"completed":return"Completed";case"error":return"Error";default:return""}})(e.status),children:(0,r.jsx)(i.default,{component:"span",sx:{width:8,height:8,borderRadius:"50%",bgcolor:(e=>{switch(e){case"running":return"primary.main";case"awaiting_tool_approval":return"warning.main";case"paused_debug":return"secondary.main";case"completed":return"success.main";case"error":return"error.main";default:return"transparent"}})(e.status),display:"inline-block",flexShrink:0}})}),(0,r.jsx)(s.A,{title:e.title,enterDelay:500,children:(0,r.jsx)(p.default,{component:"span",fontWeight:e.id===n?"bold":"normal",sx:{display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden",wordBreak:"break-word"},children:e.title})})]}),secondary:(0,r.jsxs)(i.default,{component:"span",sx:{display:"flex",alignItems:"center",gap:.75,mt:.5,flexWrap:"wrap"},children:["flow"!==k&&(0,r.jsx)(s.A,{title:u?"Quick Chat (no saved flow)":"Flow: ".concat(o.label),children:(0,r.jsx)(f.A,{icon:u?(0,r.jsx)(A.A,{}):void 0,label:o.label,size:"small",variant:"outlined",color:u?"secondary":"default",sx:{maxWidth:"100%",height:20,"& .MuiChip-label":{px:.75,fontSize:"0.7rem"}}})}),(0,r.jsx)(p.default,{component:"span",variant:"caption",color:"text.secondary",children:new Date(e.updatedAt).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]}),secondaryTypographyProps:{component:"div"}})})},e.id)},eS=t.length,eI=em.length;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(i.default,{sx:{p:2,display:"flex",justifyContent:"space-between",alignItems:"center",gap:1},children:[x&&(0,r.jsx)(s.A,{title:"Hide sidebar",children:(0,r.jsx)(d.A,{size:"small",onClick:x,"aria-label":"Hide conversation sidebar",children:(0,r.jsx)(q.A,{})})}),(0,r.jsx)(p.default,{variant:"h6",sx:{flex:1},noWrap:!0,children:"Conversations"}),m&&(0,r.jsx)(s.A,{title:"Quick Chat: a model + optional MCP servers, no saved flow",children:(0,r.jsx)(h.A,{variant:"outlined",color:"primary",startIcon:(0,r.jsx)(A.A,{}),onClick:m,size:"small",children:"Quick"})}),(0,r.jsx)(h.A,{variant:"contained",color:"primary",startIcon:(0,r.jsx)(J.A,{}),onClick:g,size:"small",children:"New"})]}),(0,r.jsx)(O.A,{}),(0,r.jsxs)(i.default,{sx:{px:2,pt:1.5,pb:1,display:"flex",flexDirection:"column",gap:1},children:[(0,r.jsxs)(i.default,{sx:{display:"flex",gap:1},children:[(0,r.jsx)(u.A,{size:"small",sx:{flex:1},placeholder:"content"===w?"Search message content…":"Search title or flow…",value:y,onChange:e=>b(e.target.value),InputProps:{startAdornment:(0,r.jsx)(M.A,{position:"start",children:(0,r.jsx)(G.A,{fontSize:"small"})}),endAdornment:y?(0,r.jsx)(M.A,{position:"end",children:(0,r.jsx)(d.A,{size:"small","aria-label":"Clear search",onClick:()=>b(""),children:(0,r.jsx)(V.A,{fontSize:"small"})})}):void 0}}),(0,r.jsx)(F.A,{size:"small",sx:{minWidth:100},children:(0,r.jsxs)(L.A,{value:w,onChange:e=>j(e.target.value),"aria-label":"Search dimension",children:[(0,r.jsx)(W.A,{value:"title",children:"Title"}),(0,r.jsx)(W.A,{value:"content",children:"Content"})]})})]}),(0,r.jsxs)(i.default,{sx:{display:"flex",flexWrap:"wrap",gap:1},children:[(0,r.jsx)(F.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,r.jsx)(L.A,{value:k,onChange:e=>E(e.target.value),"aria-label":"Group conversations",children:el.map(e=>(0,r.jsx)(W.A,{value:e.value,children:e.label},e.value))})}),(0,r.jsx)(F.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,r.jsx)(L.A,{value:T,onChange:e=>N(e.target.value),"aria-label":"Filter by status",children:eo.map(e=>(0,r.jsx)(W.A,{value:e.value,children:e.label},e.value))})}),(0,r.jsx)(F.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,r.jsxs)(L.A,{value:eg.some(e=>e.key===z)?z:"all",onChange:e=>R(e.target.value),"aria-label":"Filter by flow",children:[(0,r.jsx)(W.A,{value:"all",children:"Any flow"}),eg.map(e=>(0,r.jsx)(W.A,{value:e.key,children:e.label},e.key))]})}),(0,r.jsx)(F.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,r.jsx)(L.A,{value:ei,onChange:e=>es(e.target.value),"aria-label":"Filter by date",children:ea.map(e=>(0,r.jsx)(W.A,{value:e.value,children:e.label},e.value))})})]}),(y||ej>0)&&(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,r.jsxs)(p.default,{variant:"caption",color:"text.secondary",children:[eI," of ",eS]}),(0,r.jsx)(h.A,{size:"small",onClick:()=>{b(""),N("all"),R("all"),es("all")},children:"Clear filters"})]})]}),(0,r.jsx)(O.A,{}),(0,r.jsx)(H.A,{sx:{overflow:"auto",flex:1},children:0===eS?(0,r.jsx)(_.Ay,{children:(0,r.jsx)(P.A,{primary:"No conversations yet",secondary:"Start a new conversation",primaryTypographyProps:{align:"center"},secondaryTypographyProps:{align:"center"}})}):0===eI?(0,r.jsx)(_.Ay,{children:(0,r.jsx)(P.A,{primary:"No matching conversations",secondary:"Try a different search or filter",primaryTypographyProps:{align:"center"},secondaryTypographyProps:{align:"center"}})}):"chain"===k?(0,r.jsx)(en,{nodes:ev.roots,childrenByParent:ev.childrenByParent,renderItem:e=>eA(e),expanded:ey,onToggle:ew}):"none"===k?em.map(eA):ex.map(e=>{let t=!!ed[e.key];return(0,r.jsxs)(i.default,{children:[(0,r.jsxs)(D.A,{onClick:()=>(e=>{ec(t=>({...t,[e]:!t[e]}))})(e.key),sx:{py:.5,bgcolor:"action.hover"},children:[t?(0,r.jsx)(K.A,{fontSize:"small"}):(0,r.jsx)(Y.A,{fontSize:"small"}),(0,r.jsx)(p.default,{variant:"overline",sx:{ml:.5,flex:1,lineHeight:1.6},noWrap:!0,children:e.label}),(0,r.jsx)(f.A,{label:e.items.length,size:"small",sx:{height:18,"& .MuiChip-label":{px:.75,fontSize:"0.7rem"}}})]}),(0,r.jsx)(U.A,{in:!t,timeout:"auto",unmountOnExit:!0,children:e.items.map(eA)})]},e.key)})})]})};var es=n(4474),ed=n(99944),ec=n(9957),eu=n(2300),ep=n(51221),ef=n(98267),eh=n(20537),eg=n(37960),em=n(36314),ex=n(49501),ev=n(6504),ey=n(22133),eb=n(11665),ew=n(97516),ej=n(91861),eA=n(53612),eS=n(3014),eI=n(70863),ek=n(67891),eC=n(12121),eE=n(63992),eT=n(59637),eN=n(30949),ez=n(1877),eR=n(18466);function e_(e){return!!e&&(e.startsWith(eR.n9)||"handoff"===e)}var eD=n(26188),eP=n(38952),eO=n(17897),eM=n(81029).hp,eF=n(87021);let eL=(0,eF.h)("frontend/components/Chat/McpAppFrame"),eW=e=>{let{serverName:t,uri:n}=e,[a,l]=(0,o.useState)(!1),[d,u]=(0,o.useState)(!1),[f,g]=(0,o.useState)(null),[m,x]=(0,o.useState)(null),v=(0,o.useCallback)(async()=>{u(!0),g(null);try{let e=await eO.S.readResource(t,n);if(!e||!1===e.success)return void g((null==e?void 0:e.error)||"Failed to read the UI resource.");let r=function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2097152,r=null==e?void 0:e.contents;if(!Array.isArray(r)||0===r.length)return{error:"Resource has no contents"};let o=r.find(e=>(function(e){if("string"!=typeof e)return!1;let t=e.toLowerCase().replace(/\s+/g,"");return t.startsWith("text/html")&&t.includes("profile=mcp-app")})(e.mimeType)&&"string"==typeof e.text)||r.find(e=>"string"==typeof e.text);if(!o||"string"!=typeof o.text)return{error:"Resource has no HTML text body"};if((void 0!==eM?eM.byteLength(o.text,"utf8"):new TextEncoder().encode(o.text).length)>n)return{error:"Resource exceeds the ".concat(Math.round(n/1024)," KiB size cap")};let a=null==(t=o._meta)?void 0:t.ui;return{html:o.text,meta:a}}(e.data);if("error"in r)return void g(r.error);x(function(e,t){let n='<meta http-equiv="Content-Security-Policy" content="'.concat(function(e){let t=e=>(e||[]).map(e=>"string"==typeof e?e.trim():"").filter(e=>""!==e&&"string"==typeof e&&("'self'"===e||"'none'"===e||!(/[^\x21-\x7e]/.test(e)||/[;,'"`$<>\\()]/.test(e))&&/^(?:https|wss):\/\/(?:\*\.)?(?:[a-z0-9-]+\.)*[a-z0-9-]+(?::\d{1,5})?$/i.test(e))).join(" "),n=t(null==e?void 0:e.connectDomains),r=t(null==e?void 0:e.resourceDomains),o=t(null==e?void 0:e.frameDomains),a=t(null==e?void 0:e.baseUriDomains);return["default-src 'none'","script-src 'unsafe-inline'".concat(r?" ".concat(r):""),"style-src 'unsafe-inline'".concat(r?" ".concat(r):""),"img-src data: blob:".concat(r?" ".concat(r):""),"font-src".concat(r?" ".concat(r):" 'none'"),"media-src data: blob:".concat(r?" ".concat(r):""),"connect-src".concat(n?" ".concat(n):" 'none'"),"frame-src".concat(o?" ".concat(o):" 'none'"),"base-uri".concat(a?" ".concat(a):" 'none'"),"form-action 'none'"].join("; ")}(t),'">');return/<head[\s>]/i.test(e)?e.replace(/<head([^>]*)>/i,(e,t)=>"<head".concat(t,">").concat(n)):'<!DOCTYPE html><html><head><meta charset="utf-8">'.concat(n,"</head><body>").concat(e,"</body></html>")}(r.html,r.meta))}catch(e){eL.warn("Failed to load MCP App resource ".concat(n," from ").concat(t),e),g(e instanceof Error?e.message:"Failed to load the UI resource.")}finally{u(!1)}},[t,n]),y=(0,o.useCallback)(()=>{let e=!a;l(e),e&&null===m&&!d&&v()},[a,m,d,v]);return(0,r.jsxs)(i.default,{sx:{mt:1,border:"1px solid",borderColor:"divider",borderRadius:1,overflow:"hidden"},children:[(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.5,bgcolor:"action.hover"},children:[(0,r.jsx)(eD.A,{fontSize:"small",color:"primary"}),(0,r.jsxs)(p.default,{variant:"body2",sx:{fontWeight:500},children:["Interactive app from ",t]}),(0,r.jsx)(s.A,{title:"Rendered read-only in a strict sandbox (no same-origin access, no network unless the app declares it). The app cannot call tools in this view.",children:(0,r.jsx)(eP.A,{fontSize:"small",color:"action"})}),(0,r.jsx)(h.A,{size:"small",onClick:y,startIcon:a?(0,r.jsx)(Y.A,{}):(0,r.jsx)(K.A,{}),sx:{ml:"auto"},children:a?"Hide":"Open app"})]}),(0,r.jsx)(U.A,{in:a,unmountOnExit:!0,children:(0,r.jsxs)(i.default,{sx:{p:1},children:[d&&(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2,justifyContent:"center"},children:[(0,r.jsx)(es.default,{size:16,thickness:6}),(0,r.jsx)(p.default,{variant:"body2",color:"text.secondary",children:"Loading the app…"})]}),f&&(0,r.jsx)(c.A,{severity:"error",sx:{my:1},children:f}),!d&&!f&&null!==m&&(0,r.jsx)(i.default,{component:"iframe",title:"MCP App: ".concat(n),srcDoc:m,sandbox:"allow-scripts",referrerPolicy:"no-referrer",sx:{width:"100%",height:420,border:"none",borderRadius:1,bgcolor:"#fff"}})]})})]})},eH=(0,eF.h)("frontend/components/Chat/ChatMessages");function eU(e){return"assistant"===e.role&&"tool_calls"in e&&Array.isArray(e.tool_calls)}function eB(e){if("tool"!==e.role||"string"!=typeof e.content)return!1;try{var t;return(null==(t=JSON.parse(e.content))?void 0:t.handoff)===!0}catch(e){return!1}}let eJ={p:e=>(0,r.jsx)(p.default,{variant:"body1",sx:{mb:.5,whiteSpace:"pre-line"},children:e.children}),h1:e=>(0,r.jsx)(p.default,{variant:"h5",sx:{mt:2,mb:.5},children:e.children}),h2:e=>(0,r.jsx)(p.default,{variant:"h6",sx:{mt:2,mb:.5},children:e.children}),h3:e=>(0,r.jsx)(p.default,{variant:"subtitle1",sx:{mt:1.5,mb:.5},children:e.children}),h4:e=>(0,r.jsx)(p.default,{variant:"subtitle2",sx:{mt:1.5,mb:.5},children:e.children}),h5:e=>(0,r.jsx)(p.default,{variant:"body1",sx:{mt:1,mb:.5,fontWeight:"bold"},children:e.children}),h6:e=>(0,r.jsx)(p.default,{variant:"body2",sx:{mt:1,mb:.5,fontWeight:"bold"},children:e.children}),ul:e=>(0,r.jsx)(i.default,{component:"ul",sx:{pl:2,mb:1},children:e.children}),ol:e=>(0,r.jsx)(i.default,{component:"ol",sx:{pl:2,mb:1},children:e.children}),li:e=>(0,r.jsx)(i.default,{component:"li",sx:{mb:.5,whiteSpace:"pre-line"},children:e.children}),a:e=>(0,r.jsx)(p.default,{component:"a",sx:{color:"primary.main"},href:e.href,children:e.children}),blockquote:e=>(0,r.jsx)(i.default,{component:"blockquote",sx:{borderLeft:"4px solid",borderColor:"divider",pl:2,py:.5,my:1,bgcolor:"action.hover",borderRadius:"4px"},children:e.children}),code:e=>{let{node:t,className:n,children:o,...a}=e;return/language-(\w+)/.exec(n||"")||n?(0,r.jsx)(i.default,{component:"pre",sx:{bgcolor:"action.hover",p:1.5,borderRadius:"4px",overflowX:"auto",fontFamily:"monospace",fontSize:"0.875rem",my:1,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:o}):(0,r.jsx)(p.default,{component:"code",sx:{bgcolor:"action.hover",px:.5,py:.25,borderRadius:"4px",fontFamily:"monospace",wordBreak:"break-all"},children:o})}},eq=e=>{let{content:t,showRaw:n}=e;return n?(0,r.jsx)(i.default,{component:"pre",sx:{whiteSpace:"pre-wrap",wordBreak:"break-all",fontSize:"0.8rem",p:1,borderRadius:1,border:1,borderColor:e=>e.palette.divider,bgcolor:"action.hover",color:e=>e.palette.text.primary,overflow:"auto",maxHeight:"300px"},children:"string"==typeof t?t:"[Invalid tool content]"}):"string"!=typeof t?(0,r.jsx)(p.default,{variant:"body2",fontStyle:"italic",color:"text.secondary",children:"[Invalid tool content]"}):(0,r.jsx)(i.default,{sx:{width:"100%",minWidth:0},children:(()=>{try{let e=JSON.parse(t);if(e&&Array.isArray(e.content))return(0,r.jsx)(i.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:e.content.map((e,t)=>"text"===e.type?(0,r.jsx)(ev.oz,{remarkPlugins:[ey.A],children:e.text},t):"image"===e.type&&e.data&&e.mimeType?(0,r.jsx)("img",{src:"data:".concat(e.mimeType,";base64,").concat(e.data),alt:"Tool Result Image ".concat(t+1),style:{maxWidth:"100%",height:"auto",borderRadius:"4px",marginTop:"8px"}},t):"audio"===e.type&&e.data&&e.mimeType?(0,r.jsx)("audio",{controls:!0,src:"data:".concat(e.mimeType,";base64,").concat(e.data),style:{width:"100%",marginTop:"8px"},children:"Your browser does not support the audio element."},t):(0,r.jsx)(i.default,{component:"pre",sx:{whiteSpace:"pre-wrap",wordBreak:"break-all",fontSize:"0.8rem",p:1,borderRadius:1,border:1,borderColor:e=>e.palette.divider,bgcolor:"action.hover",color:e=>e.palette.text.primary,overflow:"auto",mt:1},children:"Unsupported content type: ".concat(e.type,"\n").concat(JSON.stringify(e,null,2))},t))});return(0,r.jsx)(ev.oz,{remarkPlugins:[ey.A],children:"```json\n".concat(JSON.stringify(e,null,2),"\n```")})}catch(e){return(0,r.jsx)(ev.oz,{remarkPlugins:[ey.A],children:t})}})()})},eG=e=>{let{pairs:t,messageId:n}=e,[a,l]=(0,o.useState)(null),[d,c]=(0,o.useState)({}),u=(e,t)=>e.toolCall.id||"tc-".concat(n,"-").concat(t);return(0,r.jsxs)(i.default,{sx:{mt:1,pt:1,borderTop:"1px solid",borderColor:"divider"},children:[(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",color:"primary.main",mb:1},children:[(0,r.jsx)(eI.A,{fontSize:"small",sx:{mr:1}}),(0,r.jsx)(p.default,{variant:"body2",children:1===t.length?"The assistant used a tool":"The assistant used ".concat(t.length," tools")})]}),(0,r.jsx)(i.default,{sx:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:.5},children:t.map((e,t)=>{let n=u(e,t),d=function(e){if(!e)return"pending";if("string"==typeof e.content)try{let t=JSON.parse(e.content);if(t&&(!0===t.isError||null!=t.error))return"error"}catch(e){}return"done"}(e.result),c=a===n;return(0,r.jsxs)(o.Fragment,{children:[t>0&&(0,r.jsx)(i.default,{sx:{width:14,height:"2px",bgcolor:"divider",flexShrink:0}}),(0,r.jsx)(s.A,{title:c?"Hide call & result":"Show call & result",children:(0,r.jsx)(f.A,{icon:function(e){return"pending"===e?(0,r.jsx)(es.default,{size:14,thickness:6}):"error"===e?(0,r.jsx)(k.A,{fontSize:"small"}):(0,r.jsx)(eC.A,{fontSize:"small"})}(d),label:(0,ez.yo)(e.toolCall.function.name),size:"small",clickable:!0,variant:c?"filled":"outlined",color:"error"===d?"error":"pending"===d?"default":"primary",onClick:()=>l(c?null:n),sx:{maxWidth:"100%"}})})]},n)})}),t.map((e,t)=>{var n,o;let l=u(e,t),s=e.toolCall.function.arguments;try{s=JSON.stringify(JSON.parse(e.toolCall.function.arguments),null,2)}catch(e){}let h=!!d[l];return(0,r.jsx)(U.A,{in:a===l,unmountOnExit:!0,children:(0,r.jsxs)(i.default,{sx:{mt:1,p:1,borderRadius:1,bgcolor:"rgba(0, 0, 0, 0.03)"},children:[(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,r.jsx)(eI.A,{fontSize:"small",sx:{mr:.5,color:"primary.main"}}),(0,r.jsx)(p.default,{variant:"caption",sx:{fontWeight:"bold"},children:"Parameters"}),(0,r.jsx)(f.A,{label:"ID: ".concat(e.toolCall.id?e.toolCall.id.substring(0,8):"N/A","..."),size:"small",color:"default",variant:"outlined",sx:{ml:1,height:20,fontSize:"0.7rem"}})]}),(0,r.jsx)(i.default,{component:"pre",sx:{bgcolor:"action.hover",p:1,borderRadius:"4px",overflowX:"auto",fontFamily:"monospace",fontSize:"0.75rem",my:.5,maxHeight:"150px",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:s}),(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",mt:1,mb:.5},children:[(0,r.jsx)(ek.A,{fontSize:"small",sx:{mr:.5,color:"text.secondary"}}),(0,r.jsx)(p.default,{variant:"caption",sx:{fontWeight:"bold"},children:"Result"}),e.result&&(0,r.jsx)(ed.A,{control:(0,r.jsx)(ec.A,{size:"small",checked:h,onChange:e=>c(t=>({...t,[l]:e.target.checked}))}),label:"Raw",sx:{ml:"auto",mr:0,"& .MuiTypography-root":{fontSize:"0.75rem"}}})]}),e.result?(0,r.jsx)(eq,{content:e.result.content,showRaw:h}):(0,r.jsxs)(p.default,{variant:"body2",fontStyle:"italic",color:"text.secondary",sx:{display:"flex",alignItems:"center",gap:1},children:[(0,r.jsx)(es.default,{size:14,thickness:6})," Waiting for the tool to respond…"]}),(null==(o=e.result)||null==(n=o.ui)?void 0:n.uri)&&e.result.ui.serverName&&(0,r.jsx)(eW,{serverName:e.result.ui.serverName,uri:e.result.ui.uri})]})},l)})]})},eV=o.memo(function(e){var t,n;let o,{message:a,nodeLabel:l,availableNodes:c,showRaw:u,toolCallPairs:g,hoistedHandoffs:m,edit:x,onMenuOpen:v,onToggleRaw:y,onEditContentChange:b,onEditNodeChange:w,onSaveEdit:j,onCancelEdit:A}=e,S=null!=(t=a.depth)?t:0;return(0,r.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",alignItems:"user"===a.role?"flex-end":"flex-start",opacity:a.disabled?.5:1,...S>0&&{pl:3*S,borderLeft:"2px solid",borderColor:"divider",ml:1}},children:[(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,r.jsxs)(p.default,{variant:"caption",color:"text.secondary",sx:{mr:1},children:["user"===a.role?"You":"assistant"===a.role?"Assistant":"tool"===a.role?"Tool":"System"," • ","number"!=typeof(n=a.timestamp)||isNaN(n)?(eH.warn("formatTime received invalid timestamp:",n),"Invalid Date"):new Date(n).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"})]}),a.processNodeId&&(0,r.jsx)(s.A,{title:"".concat(l?"".concat(l," — "):"","Process Node ID: ").concat(a.processNodeId),children:(0,r.jsx)(f.A,{label:"Node: ".concat(l||"".concat(a.processNodeId.substring(0,6),"...")),size:"small",color:"primary",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),S>0&&(0,r.jsx)(s.A,{title:"Nested subflow step (depth ".concat(S,")"),children:(0,r.jsx)(f.A,{label:"Subflow step",size:"small",color:"secondary",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),a.disabled&&(0,r.jsx)(f.A,{label:"Disabled",size:"small",color:"default",variant:"outlined",sx:{height:20,fontSize:"0.7rem"}}),a.usage&&(0,r.jsx)(s.A,{title:"".concat(a.usage.promptTokens.toLocaleString()," prompt + ").concat(a.usage.completionTokens.toLocaleString()," completion tokens (provider-reported)"),children:(0,r.jsx)(f.A,{label:"".concat((o=a.usage.totalTokens)>=1e3?"".concat((o/1e3).toFixed(o>=1e5?0:1),"k"):"".concat(o)," tok"),size:"small",color:"default",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),(0,r.jsx)(d.A,{size:"small",onClick:e=>v(e,a.id),sx:{ml:1},children:(0,r.jsx)(eb.A,{fontSize:"small"})})]}),(0,r.jsxs)(eu.A,{elevation:1,sx:{p:2,maxWidth:"75vw",borderRadius:2,bgcolor:"user"===a.role?"primary.light":"assistant"===a.role||"tool"===a.role?"background.paper":"info.light",color:"user"===a.role?"primary.contrastText":"assistant"===a.role||"tool"===a.role?"text.primary":"info.contrastText",position:"relative",borderLeft:"tool"===a.role?"4px solid":"none",borderColor:"tool"===a.role?"grey.400":"transparent",overflowWrap:"break-word",wordBreak:"break-word",overflow:"hidden"},children:[x?(0,r.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:[(0,r.jsx)("textarea",{value:x.content,onChange:e=>b(e.target.value),style:{width:"100%",minHeight:"100px",padding:"8px",borderRadius:"4px",border:"1px solid var(--border)",fontFamily:"inherit",fontSize:"inherit",backgroundColor:"var(--surface-raised)",color:"var(--foreground)"}}),(0,r.jsxs)(F.A,{fullWidth:!0,size:"small",sx:{mt:1},children:[(0,r.jsx)(ep.A,{id:"node-id-select-label",children:"Process Node"}),(0,r.jsx)(L.A,{labelId:"node-id-select-label",id:"node-id-select",value:x.nodeId||(c.length>0?c[0].id:""),label:"Process Node",onChange:e=>w(e.target.value),children:c.map(e=>(0,r.jsx)(W.A,{value:e.id,children:e.label||e.id.substring(0,8)},e.id))})]}),(0,r.jsxs)(i.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:1},children:[(0,r.jsx)(h.A,{variant:"outlined",size:"small",onClick:A,children:"Cancel"}),(0,r.jsx)(h.A,{variant:"contained",size:"small",onClick:j,children:"Save"})]})]}):(0,r.jsxs)(r.Fragment,{children:["tool"!==a.role&&"string"==typeof a.content&&(0,r.jsx)(ev.oz,{remarkPlugins:[ey.A],components:eJ,children:a.content}),"tool"!==a.role&&Array.isArray(a.content)&&(0,r.jsx)(i.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:a.content.map((e,t)=>{var n;return(null==e?void 0:e.type)==="text"?(0,r.jsx)(ev.oz,{remarkPlugins:[ey.A],children:e.text},t):(null==e?void 0:e.type)==="image_url"&&(null==(n=e.image_url)?void 0:n.url)?(0,r.jsx)("img",{src:e.image_url.url,alt:"Image ".concat(t+1),style:{maxWidth:"100%",height:"auto",borderRadius:"4px"}},t):null})}),"tool"!==a.role&&"string"!=typeof a.content&&!Array.isArray(a.content)&&!eU(a)&&(0,r.jsx)(p.default,{variant:"body2",fontStyle:"italic",color:"text.secondary",children:"[No text content]"})]}),(()=>{let e=[...eU(a)?a.tool_calls.filter(e=>{var t;return!!(t=e.function.name)&&(t.startsWith(eR.n9)||"handoff"===t)}):[],...null!=m?m:[]];return(0,r.jsx)(i.default,{sx:{mt:1,display:"flex",flexWrap:"wrap",gap:.5},children:e.map((e,t)=>(0,r.jsx)(f.A,{size:"small",variant:"outlined",color:"secondary",icon:(0,r.jsx)(eN.A,{fontSize:"small"}),label:"Handoff → ".concat(function(e,t){let n=e.startsWith(eR.n9)?e.slice(eR.n9.length):e,r=n.replace(/_\d+$/,""),o=t.find(e=>{let t=(0,eR.RN)(e.label);return t===n||t===r});return(null==o?void 0:o.label)?o.label:r.split("_").filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")||"target node"}(e.function.name,c)),sx:{maxWidth:"100%",fontWeight:500}},e.id||"handoff-".concat(a.id,"-").concat(t)))})})(),g&&g.length>0&&(0,r.jsx)(eG,{pairs:g,messageId:a.id}),"tool"===a.role&&a.tool_call_id&&!eB(a)&&(0,r.jsxs)(i.default,{children:[(0,r.jsxs)(p.default,{variant:"body2",sx:{display:"flex",alignItems:"center",color:"text.secondary",mb:1},children:[(0,r.jsx)(ek.A,{fontSize:"small",sx:{mr:1}}),"The tool responded to the assistant"]}),(0,r.jsxs)(ef.A,{defaultExpanded:!1,sx:{mb:.5,"&:before":{display:"none"},boxShadow:"none",bgcolor:"rgba(0, 0, 0, 0.02)"},children:[(0,r.jsx)(eh.A,{expandIcon:(0,r.jsx)(K.A,{}),children:(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center"},children:[(0,r.jsx)(ek.A,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,r.jsx)(p.default,{variant:"subtitle2",children:"Tool Result"}),(0,r.jsx)(f.A,{label:"ID: ".concat(a.tool_call_id.substring(0,8),"..."),size:"small",color:"default",variant:"outlined",sx:{ml:1,height:20,fontSize:"0.7rem"}}),(0,r.jsx)(ed.A,{control:(0,r.jsx)(ec.A,{size:"small",checked:u,onChange:e=>y(a.id,e.target.checked),onClick:e=>e.stopPropagation()}),label:"Raw",sx:{mr:1,ml:"auto","& .MuiTypography-root":{fontSize:"0.75rem"}},onClick:e=>e.stopPropagation()})]})}),(0,r.jsx)(eg.A,{sx:{pt:0,pb:1,overflow:"hidden"},children:(0,r.jsx)(eq,{content:a.content,showRaw:u})})]})]}),a.attachments&&a.attachments.length>0&&(0,r.jsxs)(i.default,{sx:{mt:1,pt:1,borderTop:"1px solid",borderColor:"divider"},children:[(0,r.jsx)(p.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:.5},children:"Attachments:"}),a.attachments.map(e=>"image"===e.type?(0,r.jsx)(i.default,{sx:{mb:.5},children:(0,r.jsx)("img",{src:e.content,alt:e.originalName||"image attachment",style:{maxWidth:"100%",height:"auto",borderRadius:"4px"}})},e.id):(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",p:1,borderRadius:1,bgcolor:"rgba(0, 0, 0, 0.04)",mb:.5},children:["document"===e.type?(0,r.jsx)(eA.A,{fontSize:"small",sx:{mr:1}}):(0,r.jsx)(eS.A,{fontSize:"small",sx:{mr:1}}),(0,r.jsx)(p.default,{variant:"caption",sx:{wordBreak:"break-all"},children:e.originalName||"".concat(e.type," attachment")})]},e.id))]})]})]})}),eK=e=>{let{messages:t,pendingToolCalls:n,availableNodes:a=[],conversationId:l,onToggleDisabled:s,onSplitConversation:d,onEditMessage:c,onApproveToolCall:u,onRejectToolCall:g}=e,[m,x]=(0,o.useState)(50);(0,o.useEffect)(()=>{x(50)},[l]);let v=Math.max(0,(Array.isArray(t)?t.length:0)-m),y=(0,o.useMemo)(()=>Array.isArray(t)?v>0?t.slice(v):t:[],[t,v]),{pairsByAnchorId:b,handoffsByAnchorId:w,consumedToolCallIds:j,groups:A}=(0,o.useMemo)(()=>(function(e){let t=new Map,n=new Map,r=new Set,o=new Set,a=new Map,l=[];if(!Array.isArray(e))return{pairsByAnchorId:t,handoffsByAnchorId:n,hoistedAssistantIds:r,consumedToolCallIds:o,groups:l};let i=new Map;for(let t of e)"tool"===t.role&&"string"==typeof t.tool_call_id&&t.tool_call_id&&!i.has(t.tool_call_id)&&i.set(t.tool_call_id,t);let s=e=>{let r=a.get(e);return r||(r={anchorId:e,memberIds:[e],hoistedIds:[]},a.set(e,r),l.push(r),t.set(e,[]),n.set(e,[])),r},d=null;for(let a of e){if("user"===a.role||"system"===a.role){d=null;continue}if("assistant"!==a.role)continue;let e=Array.isArray(a.tool_calls)?a.tool_calls:[],l=[],u=[];for(let t of e){var c;if("function"!==t.type)continue;if(e_(null==(c=t.function)?void 0:c.name)){u.push(t);continue}let e=t.id,n=e?i.get(e):void 0;e&&o.add(e),l.push({toolCall:t,result:n})}let p=function(e){let t=e.content;return"string"==typeof t?t.trim().length>0:!!Array.isArray(t)&&t.some(e=>{var t,n;return!!e&&"object"==typeof e&&("text"===e.type?"string"==typeof e.text&&e.text.trim().length>0:"image_url"===e.type?!!(null==(t=e.image_url)?void 0:t.url):"input_audio"===e.type&&!!(null==(n=e.input_audio)?void 0:n.data))})}(a),f=l.length>0||u.length>0;if(p){d=a.id,f&&(s(a.id),t.get(a.id).push(...l),n.get(a.id).push(...u));continue}if(f)if(d){let e=s(d);t.get(d).push(...l),n.get(d).push(...u),e.memberIds.push(a.id),e.hoistedIds.push(a.id),r.add(a.id)}else d=a.id,s(a.id),t.get(a.id).push(...l),n.get(a.id).push(...u)}return{pairsByAnchorId:t,handoffsByAnchorId:n,hoistedAssistantIds:r,consumedToolCallIds:o,groups:l}})(t),[t]),S=(0,o.useMemo)(()=>(function(e){let t=new Set;if(!Array.isArray(e))return t;for(let r of e){if("assistant"!==r.role)continue;let e=r.tool_calls;if(Array.isArray(e))for(let r of e){var n;"function"===r.type&&e_(null==(n=r.function)?void 0:n.name)&&"string"==typeof r.id&&r.id&&t.add(r.id)}}return t})(t),[t]),I=(0,o.useMemo)(()=>new Set(y.map(e=>e.id)),[y]),{renderPairsById:k,renderHandoffsById:C,suppressedIds:E}=(0,o.useMemo)(()=>{let e=new Map,t=new Map,n=new Set;for(let l of A){var r,o,a;let i=null!=(r=b.get(l.anchorId))?r:[],s=null!=(o=w.get(l.anchorId))?o:[],d=null!=(a=l.memberIds.find(e=>I.has(e)))?a:l.anchorId;for(let r of(i.length>0&&e.set(d,i),s.length>0&&t.set(d,s),l.hoistedIds))r!==d&&n.add(r)}return{renderPairsById:e,renderHandoffsById:t,suppressedIds:n}},[A,b,w,I]),[N,z]=o.useState(null),[R,_]=o.useState(null),[D,O]=o.useState(null),[M,F]=o.useState(!1),[L,H]=o.useState(""),[U,B]=o.useState(null),[J,q]=o.useState({}),G=(0,o.useCallback)((e,t)=>{eH.debug("handleMenuOpen called with messageId: ".concat(t)),z(e.currentTarget),_(t)},[]),V=(0,o.useCallback)((e,t)=>{q(n=>({...n,[e]:t}))},[]),Y=(0,o.useCallback)(e=>{H(e)},[]),Q=(0,o.useCallback)(e=>{B(e)},[]),X=()=>{z(null),_(null)},Z=()=>{if(R){let e=t.find(e=>e.id===R);e&&"user"===e.role&&"string"==typeof e.content&&(H(e.content),B(e.processNodeId||(a.length>0?a[0].id:"")),O(R),F(!0)),X()}},$=()=>{D&&c&&(c(D,L,U||""),F(!1),O(null),B(null))},ee=()=>{F(!1),O(null),B(null)},et=(0,o.useMemo)(()=>{let e=new Map;for(let t of a)e.set(t.id,t.label);return e},[a]),en=(0,o.useMemo)(()=>R&&t.find(e=>e.id===R)||null,[R,t]);return(0,r.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:[v>0&&(0,r.jsx)(i.default,{sx:{display:"flex",justifyContent:"center"},children:(0,r.jsxs)(h.A,{size:"small",variant:"outlined",onClick:()=>x(e=>e+200),children:["Show earlier messages (",v," more)"]})}),y.map((e,t)=>{if(eB(e)||"tool"===e.role&&"string"==typeof e.tool_call_id&&S.has(e.tool_call_id)||"tool"===e.role&&"string"==typeof e.tool_call_id&&j.has(e.tool_call_id)||E.has(e.id))return null;let n=M&&e.id===D;return(0,r.jsx)(eV,{message:e,nodeLabel:e.processNodeId?et.get(e.processNodeId):void 0,availableNodes:a,showRaw:!!J[e.id],toolCallPairs:k.get(e.id),hoistedHandoffs:C.get(e.id),edit:n?{content:L,nodeId:U}:null,onMenuOpen:G,onToggleRaw:V,onEditContentChange:Y,onEditNodeChange:Q,onSaveEdit:n?$:void 0,onCancelEdit:n?ee:void 0},e.id||"msg-".concat(v+t))}),(0,r.jsxs)(em.A,{anchorEl:N,open:!!N,onClose:X,children:[en&&(()=>{eH.debug("Entering menu item rendering logic",{activeMessageId:R}),eH.debug("Active message object for menu:",en),eH.debug("Active message role for menu:",null==en?void 0:en.role);try{let e=!!c,t="user"===en.role&&e;if(eH.debug("Rendering Edit Message menu item check",{activeMessageId:en.id,messageRole:en.role,onEditMessagePropType:typeof c,hasOnEditMessageProp:e,shouldShowEdit:t}),t)return(0,r.jsxs)(W.A,{onClick:Z,children:[(0,r.jsx)(ex.A,{children:(0,r.jsx)(T.A,{fontSize:"small"})}),(0,r.jsx)(P.A,{children:"Edit Message"})]});return null}catch(e){return eH.error("Error rendering Edit Message menu item",{error:e}),null}})(),(0,r.jsxs)(W.A,{onClick:()=>{R&&(s(R),X())},children:[(0,r.jsx)(ex.A,{children:(0,r.jsx)(ew.A,{fontSize:"small"})}),(0,r.jsx)(P.A,{children:(null==en?void 0:en.disabled)?"Enable Message":"Disable Message"})]}),(0,r.jsxs)(W.A,{onClick:()=>{R&&(d(R),X())},children:[(0,r.jsx)(ex.A,{children:(0,r.jsx)(ej.A,{fontSize:"small"})}),(0,r.jsx)(P.A,{children:"Split Conversation Here"})]})]}),n&&n.length>0&&(0,r.jsxs)(eu.A,{elevation:2,sx:{p:2,mt:2,bgcolor:"warning.light",border:"1px solid",borderColor:"warning.main",borderRadius:2},children:[(0,r.jsxs)(p.default,{variant:"h6",sx:{mb:1,display:"flex",alignItems:"center"},children:[(0,r.jsx)(eI.A,{sx:{mr:1}})," Tool Approval Required"]}),(0,r.jsx)(p.default,{variant:"body2",sx:{mb:2},children:"The assistant wants to use the following tool(s). Please approve or reject each request."}),n.map((e,t)=>{let n=(0,ez.yo)(e.function.name),o=e.function.arguments;try{let t=JSON.parse(e.function.arguments);o=JSON.stringify(t,null,2)}catch(e){}return(0,r.jsxs)(ef.A,{defaultExpanded:!0,sx:{mb:1,"&:before":{display:"none"},boxShadow:1},children:[(0,r.jsx)(eh.A,{expandIcon:(0,r.jsx)(K.A,{}),children:(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",width:"100%"},children:[(0,r.jsx)(eI.A,{fontSize:"small",sx:{mr:1,color:"primary.main"}}),(0,r.jsx)(p.default,{variant:"subtitle2",sx:{fontWeight:"bold",flexGrow:1},children:n}),(0,r.jsx)(f.A,{label:"ID: ".concat(e.id?e.id.substring(0,8):"N/A","..."),size:"small",variant:"outlined",sx:{ml:1,height:20,fontSize:"0.7rem"}})]})}),(0,r.jsxs)(eg.A,{sx:{pt:0},children:[(0,r.jsx)(i.default,{component:"pre",sx:{bgcolor:"action.hover",p:1,borderRadius:"4px",overflowX:"auto",fontFamily:"monospace",fontSize:"0.75rem",my:.5,maxHeight:"150px",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:o}),(0,r.jsxs)(i.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:1},children:[(0,r.jsx)(h.A,{variant:"outlined",color:"error",size:"small",startIcon:(0,r.jsx)(eT.A,{}),onClick:()=>g&&g(e.id),disabled:!g,children:"Reject"}),(0,r.jsx)(h.A,{variant:"contained",color:"success",size:"small",startIcon:(0,r.jsx)(eE.A,{}),onClick:()=>u&&u(e.id),disabled:!u,children:"Approve"})]})]})]},e.id||"ptc-".concat(t))})]})]})};var eY=n(84869);let eQ=(0,eF.h)("frontend/services/transcription");async function eX(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{onProgress:n,onStatusChange:r,language:o}=t;try{if(eQ.debug("Starting transcription service"),r&&r("Initializing transcription..."),!(0,eY.G)().supported)throw Error("Web Speech API is not supported in this browser");r&&r("Using browser speech recognition...");let t=await (0,eY.S)(e,{language:o,onInterimResult:e=>{r&&r("Transcribing: ".concat(e)),n&&n(50)}});return r&&r("Transcription completed"),eQ.debug("Web Speech API transcription completed successfully",{textLength:t.length}),{text:t,success:!0,engine:"webspeech"}}catch(e){return eQ.error("Transcription failed",{error:e}),r&&r("Transcription failed"),{text:"Transcription failed. Please check if your browser supports speech recognition.",success:!1,error:e instanceof Error?e.message:String(e)}}}var eZ=n(9164),e$=n(22822),e0=n(35205),e1=n(77073),e2=n(9693),e5=n(4823),e6=n(74879);let e8=(0,eF.h)("frontend/components/Chat/ChatInput"),e4=e=>{var t;let{onSendMessage:n,disabled:a=!1,requireApproval:l=!1,onRequireApprovalChange:c,executeInDebugger:g=!1,onExecuteInDebuggerChange:m,availableNodes:b=[],currentNodeId:j=null,nodeOverrideActive:A=!1,onSelectNode:S}=e,{settings:I}=(0,eZ.useStorage)(),[k,C]=(0,o.useState)(""),[E,T]=(0,o.useState)([]),[z,R]=(0,o.useState)(!1),[_,D]=(0,o.useState)(0),[M,F]=(0,o.useState)(null),L=(0,o.useRef)(null),H=(0,o.useRef)(null),U=(0,o.useRef)([]),[B,J]=(0,o.useState)(null),q=(null==(t=b.find(e=>e.id===j))?void 0:t.label)||(j?"".concat(j.substring(0,6),"..."):"Start"),[G,V]=(0,o.useState)(!1),[K,Y]=(0,o.useState)(""),[Q,X]=(0,o.useState)(""),[Z,$]=(0,o.useState)("document"),[ee,et]=(0,o.useState)(!1),[en,er]=(0,o.useState)(0),[eo,ea]=(0,o.useState)(""),el=()=>{(k.trim()||E.length>0)&&(e8.debug("Sending message",{messageLength:k.length,attachmentsCount:E.length}),n(k,E),C(""),T([]))},ei=async e=>{let t=e.target.files;if(!t||0===t.length)return;let n=t[0];e8.debug("File selected",{fileName:n.name,fileSize:n.size,fileType:n.type}),X("Processing ".concat(n.name)),$("document"),Y(""),et(!0),V(!0);try{let e=await ec(n);e8.debug("File read successfully",{contentLength:e.length}),Y(e),et(!1)}catch(e){e8.error("Error reading file:",e),Y("Error reading file. Please try again with a text file."),et(!1)}L.current&&(L.current.value="")},ec=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=e=>{var r;(null==(r=e.target)?void 0:r.result)?t(e.target.result):n(Error("Failed to read file"))},r.onerror=()=>{n(Error("Error reading file"))},r.readAsText(e)}),ep=async()=>{e8.debug("Starting audio recording");try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});e8.debug("Audio stream obtained successfully"),U.current=[];let t=new MediaRecorder(e);H.current=t,t.ondataavailable=e=>{e.data.size>0&&U.current.push(e.data)},t.onstop=async()=>{let t=new Blob(U.current,{type:"audio/wav"});X("Audio Recording"),$("audio"),Y(""),et(!0),V(!0);try{if(((null==I?void 0:I.speech)||{enabled:!0,modelSize:"base",autoDownload:!1}).enabled){ea("Initializing transcription..."),er(0);let e=await eX(t,{onProgress:er,onStatusChange:ea,language:navigator.language});if(e.success){let t=e.text;Y(t),e8.debug("Transcription successful",{textLength:e.text.length,engine:e.engine})}else Y("Error transcribing audio: ".concat(e.error,".")),e8.error("Transcription failed",{error:e.error})}else Y("Speech recognition is disabled in settings. Enable it to get automatic transcriptions.")}catch(e){e8.error("Error handling audio recording",{error:e}),Y("Failed to process audio: ".concat(e))}finally{et(!1),e.getTracks().forEach(e=>e.stop())}},t.start(),R(!0);let n=setInterval(()=>{D(e=>e+1)},1e3);F(n)}catch(e){e8.error("Error starting recording:",e),alert("Could not access microphone. Please check permissions.")}};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(eu.A,{elevation:3,sx:{p:2,display:"flex",flexDirection:"column",borderRadius:2},children:[E.length>0&&(0,r.jsx)(i.default,{sx:{mb:2,display:"flex",flexWrap:"wrap",gap:1},children:E.map(e=>(0,r.jsxs)(eu.A,{variant:"outlined",sx:{p:1,display:"flex",alignItems:"center",borderRadius:1,bgcolor:"background.default"},children:["image"===e.type?(0,r.jsx)(i.default,{component:"img",src:e.content,alt:e.originalName||"pasted image",sx:{width:40,height:40,objectFit:"cover",borderRadius:1,mr:1}}):"document"===e.type?(0,r.jsx)(eA.A,{fontSize:"small",sx:{mr:1}}):(0,r.jsx)(eS.A,{fontSize:"small",sx:{mr:1}}),(0,r.jsx)(p.default,{variant:"body2",noWrap:!0,sx:{maxWidth:150},children:e.originalName||"".concat(e.type," attachment")}),(0,r.jsx)(d.A,{size:"small",onClick:()=>(e=>{e8.debug("Removing attachment",{id:e}),T(E.filter(t=>t.id!==e))})(e.id),sx:{ml:1},children:(0,r.jsx)(e1.A,{fontSize:"small"})})]},e.id))}),(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"flex-end"},children:[(0,r.jsx)(u.A,{fullWidth:!0,multiline:!0,maxRows:4,"data-tour":"chat-input",placeholder:"Type a message...",value:k,onChange:e=>{C(e.target.value)},onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e8.debug("Enter key pressed, sending message"),e.preventDefault(),el())},onPaste:e=>{var t;let n=null==(t=e.clipboardData)?void 0:t.items;if(!n)return;let r=[];for(let e=0;e<n.length;e++){let t=n[e];if("file"===t.kind&&t.type.startsWith("image/")){let e=t.getAsFile();e&&r.push(e)}}0!==r.length&&(e.preventDefault(),e8.debug("Pasting image attachment(s)",{count:r.length}),r.forEach(e=>{let t=new FileReader;t.onload=t=>{var n;let r=null==(n=t.target)?void 0:n.result;if("string"!=typeof r)return;let o=(e.type.split("/")[1]||"png").split("+")[0];T(t=>[...t,{id:(0,e6.A)(),type:"image",content:r,originalName:e.name&&!/^image\.\w+$/i.test(e.name)?e.name:"Pasted image.".concat(o)}])},t.onerror=()=>e8.error("Failed to read pasted image"),t.readAsDataURL(e)}))},disabled:a,variant:"outlined",sx:{mr:1},InputProps:{sx:{borderRadius:2}}}),(0,r.jsx)(s.A,{title:"Attach document",children:(0,r.jsx)(d.A,{color:"primary",onClick:()=>{var e;e8.debug("File selection triggered"),null==(e=L.current)||e.click()},disabled:a||z,children:(0,r.jsx)(eA.A,{})})}),(0,r.jsx)("input",{type:"file",ref:L,onChange:ei,style:{display:"none"},accept:".txt,.md,.json,.csv,.html,.xml,.js,.ts,.jsx,.tsx,.css,.scss"}),(0,r.jsx)(s.A,{title:z?"Stop recording":"Record audio",children:(0,r.jsxs)(d.A,{color:z?"error":"primary",onClick:z?()=>{e8.debug("Stopping audio recording"),H.current&&"inactive"!==H.current.state&&(H.current.stop(),R(!1),M&&(clearInterval(M),F(null)),D(0))}:ep,disabled:a,children:[(0,r.jsx)(eS.A,{}),z&&(0,r.jsx)(p.default,{variant:"caption",sx:{position:"absolute",bottom:-15,fontSize:"0.7rem",color:"error.main"},children:(e=>{let t=Math.floor(e/60);return"".concat(t.toString().padStart(2,"0"),":").concat((e%60).toString().padStart(2,"0"))})(_)})]})}),(0,r.jsx)(s.A,{title:"Send message",children:(0,r.jsx)(d.A,{color:"primary",onClick:el,disabled:a||!k.trim()&&0===E.length,children:(0,r.jsx)(e0.A,{})})})]})," ",(c||S&&b.length>0)&&(0,r.jsxs)(i.default,{sx:{mt:1,display:"flex",justifyContent:"flex-start",alignItems:"center",flexWrap:"wrap",gap:1},children:[S&&b.length>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.A,{title:A?"Next message will run on this manually picked node — click to change":"Node the next message will run on — click to pick a different one",children:(0,r.jsx)(f.A,{icon:(0,r.jsx)(N.A,{}),label:q,size:"small",color:A?"primary":"default",variant:A?"filled":"outlined",onClick:e=>J(e.currentTarget),disabled:a})}),(0,r.jsxs)(em.A,{anchorEl:B,open:!!B,onClose:()=>J(null),children:[(0,r.jsxs)(W.A,{selected:!A,onClick:()=>{S(null),J(null)},children:[(0,r.jsx)(ex.A,{children:(0,r.jsx)(e5.A,{fontSize:"small"})}),(0,r.jsx)(P.A,{primary:"Automatic",secondary:"Follow the conversation",secondaryTypographyProps:{variant:"caption"}})]}),(0,r.jsx)(O.A,{}),b.map(e=>(0,r.jsxs)(W.A,{selected:A&&e.id===j,onClick:()=>{S(e.id),J(null)},children:[(0,r.jsx)(ex.A,{children:e.id===j?(0,r.jsx)(e2.A,{fontSize:"small"}):null}),(0,r.jsx)(P.A,{primary:e.label})]},e.id))]})]}),c&&(0,r.jsx)(ed.A,{control:(0,r.jsx)(e$.A,{checked:l,onChange:e=>c(e.target.checked),size:"small",disabled:a}),label:(0,r.jsx)(p.default,{variant:"caption",children:"Require Tool Approvals"}),sx:{mr:"auto"}}),m&&(0,r.jsx)(ed.A,{control:(0,r.jsx)(e$.A,{checked:g,onChange:e=>m(e.target.checked),size:"small",disabled:a}),label:(0,r.jsx)(p.default,{variant:"caption",children:"Execute in Debugger"}),sx:{ml:2}})]})," "]})," ",(0,r.jsxs)(x.A,{open:G,onClose:()=>!ee&&V(!1),maxWidth:"md",fullWidth:!0,children:[(0,r.jsxs)(v.A,{children:[Q,!ee&&(0,r.jsx)(d.A,{"aria-label":"close",onClick:()=>V(!1),sx:{position:"absolute",right:8,top:8},children:(0,r.jsx)(e1.A,{})})]}),(0,r.jsx)(y.A,{dividers:!0,children:ee?(0,r.jsxs)(i.default,{sx:{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",p:4},children:[(0,r.jsx)(es.default,{value:"audio"===Z&&en?en:void 0,variant:"audio"===Z&&en>0?"determinate":"indeterminate"}),"audio"===Z&&(0,r.jsxs)(i.default,{sx:{mt:2,textAlign:"center"},children:[(0,r.jsx)(p.default,{variant:"body2",children:eo||"Processing audio..."}),en>0&&(0,r.jsxs)(p.default,{variant:"body2",color:"text.secondary",sx:{mt:1},children:[Math.round(en),"%"]})]})]}):(0,r.jsx)(u.A,{multiline:!0,fullWidth:!0,minRows:10,maxRows:20,value:K,onChange:e=>Y(e.target.value),variant:"outlined",placeholder:"document"===Z?"Document content":"Audio transcription"})}),(0,r.jsxs)(w.A,{children:[(0,r.jsx)(h.A,{onClick:()=>V(!1),disabled:ee,children:"Cancel"}),(0,r.jsx)(h.A,{onClick:()=>{e8.debug("Adding attachment",{type:Z,titleLength:Q.length}),T([...E,{id:(0,e6.A)(),type:Z,content:K,originalName:Q}]),V(!1)},variant:"contained",disabled:ee||!K.trim(),children:"Add to Message"})]})]})]})};function e7(e,t){var n;return null!=(n=e[t])?n:[]}var e3=n(25731),e9=n(12857),te=n(16186);let tt={byIndex:{}};function tn(e,t,n){for(let r=0;r<t;r++)e[r]||(e[r]={laneIndex:r,laneCount:t,label:"Lane ".concat(r+1,"/").concat(t),status:"pending",lastEventAt:n})}let tr=e=>{let{lane:t,onOpenLane:n}=e,o=!!t.laneConversationId&&!!n,a="pending"===t.status;return(0,r.jsxs)(i.default,{onClick:o?()=>n(t.laneConversationId):void 0,sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.25,borderRadius:1,...o&&{cursor:"pointer","&:hover":{bgcolor:"action.hover",textDecoration:"underline"}}},children:["running"===t.status&&(0,r.jsx)(es.default,{size:14,sx:{flexShrink:0}}),"completed"===t.status&&(0,r.jsx)(I.A,{sx:{fontSize:16,flexShrink:0},color:"success"}),"error"===t.status&&(0,r.jsx)(e9.A,{sx:{fontSize:16,flexShrink:0},color:"error"}),a&&(0,r.jsx)(te.A,{sx:{fontSize:16,flexShrink:0},color:"disabled"}),(0,r.jsxs)(p.default,{variant:"caption",color:a?"text.disabled":"textSecondary",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[t.label,a&&" — queued","running"===t.status&&t.activity&&(0,r.jsxs)(p.default,{component:"span",variant:"caption",color:"text.disabled",children:[" \xb7 ",t.activity]})]})]})},to=e=>{var t;let{liveStats:n,onStop:a,stopDisabled:l,awaitingApproval:s,lanes:d,onOpenLane:c}=e,[u,f]=(0,o.useState)(()=>Date.now());(0,o.useEffect)(()=>{let e=setInterval(()=>f(Date.now()),1e3);return()=>clearInterval(e)},[]);let g=n?Math.max(0,Math.round((u-n.startedAt)/1e3)):0,m=n?Math.round((u-n.lastEventAt)/1e3):0,x=!s&&!!n&&m>=60,v=d?Object.values(d.byIndex).sort((e,t)=>e.laneIndex-t.laneIndex):[],y=v.length>0?(e=>{let t=e.filter(e=>"running"===e.status).length,n=e.filter(e=>"pending"===e.status).length,r=e.filter(e=>"completed"===e.status).length,o=e.filter(e=>"error"===e.status).length;if(0===t&&0===n&&o>0)return{text:"".concat(o,"/").concat(e.length," lanes failed — partial results"),warning:!0};let a=[t>0?"".concat(t," running"):"",n>0?"".concat(n," queued"):"",r>0?"".concat(r," done"):"",o>0?"".concat(o," failed"):""].filter(Boolean);return{text:"".concat(e.length," lanes — ").concat(a.join(", ")),warning:o>0}})(v):null;return(0,r.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",my:2,gap:.5},children:[(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:2},children:[s?(0,r.jsx)(e3.A,{fontSize:"small",color:"warning"}):(0,r.jsx)(es.default,{size:20,color:x?"warning":"primary"}),(0,r.jsx)(p.default,{variant:"body2",color:"textSecondary",children:s?"Waiting for tool approval":(null==n?void 0:n.activeNode)?"Running: ".concat(n.activeNode):"Working…"}),(0,r.jsx)(h.A,{variant:"outlined",color:"secondary",size:"small",onClick:a,disabled:l,children:"Stop"})]}),y&&(0,r.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",alignItems:"stretch",minWidth:280,maxWidth:520},children:[(0,r.jsx)(p.default,{variant:"caption",color:y.warning?"warning.main":"textSecondary",sx:{px:1,fontWeight:500},children:y.text}),v.map(e=>(0,r.jsx)(tr,{lane:e,onOpenLane:c},e.laneIndex))]}),!s&&(0,r.jsxs)(p.default,{variant:"caption",color:x?"warning.main":"textSecondary",children:[(null!=(t=null==n?void 0:n.totalTokens)?t:0).toLocaleString()," tokens \xb7 ",g,"s elapsed",x?" \xb7 no activity for ".concat(m,"s — may be stuck"):""]})]})};var ta=n(88538),tl=n(16963),ti=n(2456),ts=n(64792),td=n(71356),tc=n(45202),tu=n(52005),tp=n(77998);let tf=e=>e>=1e3?"".concat((e/1e3).toFixed(e>=1e5?0:1),"k"):"".concat(e),th=e=>{var t;let{usage:n,contextInfo:a,availableNodes:l}=e,[d,c]=(0,o.useState)(null);if(!n&&!a)return null;let u=(null==n?void 0:n.byNode)?Object.entries(n.byNode):[],h=null!=(t=null==n?void 0:n.cacheReadTokens)?t:0,g=n?Math.max(0,n.promptTokens-h):0,m=n?Math.max(0,n.totalTokens-h):0,x=(null==a?void 0:a.contextWindow)&&a.contextWindow>0?Math.min(100,Math.round(a.promptTokens/a.contextWindow*100)):void 0;return(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1.5,flexShrink:0},children:[n&&m>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.A,{title:"Tokens this conversation — ".concat(g.toLocaleString()," prompt / ").concat(n.completionTokens.toLocaleString()," completion").concat(h>0?" (+".concat(h.toLocaleString()," cached reads, not counted)"):"",". Click for the per-node breakdown."),children:(0,r.jsx)(f.A,{icon:(0,r.jsx)(tp.A,{}),label:"".concat(tf(m)," tokens"),size:"small",variant:"outlined",onClick:e=>c(e.currentTarget),sx:{cursor:"pointer"}})}),(0,r.jsx)(ta.Ay,{open:!!d,anchorEl:d,onClose:()=>c(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:(0,r.jsxs)(i.default,{sx:{p:2,maxWidth:420},children:[(0,r.jsx)(p.default,{variant:"subtitle2",sx:{mb:1},children:"Token usage by node"}),(0,r.jsxs)(tl.A,{size:"small",children:[(0,r.jsx)(ti.A,{children:(0,r.jsxs)(ts.A,{children:[(0,r.jsx)(td.A,{children:"Node"}),(0,r.jsx)(td.A,{align:"right",children:"Prompt"}),(0,r.jsx)(td.A,{align:"right",children:"Completion"}),(0,r.jsx)(td.A,{align:"right",children:"Total"})]})}),(0,r.jsxs)(tc.A,{children:[u.map(e=>{let[t,n]=e;return(0,r.jsxs)(ts.A,{children:[(0,r.jsx)(td.A,{children:(0,r.jsx)(s.A,{title:t,children:(0,r.jsx)("span",{children:(e=>{var t;return(null==(t=l.find(t=>t.id===e))?void 0:t.label)||"".concat(e.substring(0,8),"…")})(t)})})}),(0,r.jsx)(td.A,{align:"right",children:n.promptTokens.toLocaleString()}),(0,r.jsx)(td.A,{align:"right",children:n.completionTokens.toLocaleString()}),(0,r.jsx)(td.A,{align:"right",children:n.totalTokens.toLocaleString()})]},t)}),(0,r.jsxs)(ts.A,{children:[(0,r.jsx)(td.A,{sx:{fontWeight:"bold"},children:"Total"}),(0,r.jsx)(td.A,{align:"right",sx:{fontWeight:"bold"},children:n.promptTokens.toLocaleString()}),(0,r.jsx)(td.A,{align:"right",sx:{fontWeight:"bold"},children:n.completionTokens.toLocaleString()}),(0,r.jsx)(td.A,{align:"right",sx:{fontWeight:"bold"},children:n.totalTokens.toLocaleString()})]})]})]}),h>0&&(0,r.jsxs)(p.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:1},children:["Prompt totals include ",h.toLocaleString()," tokens re-read from the prompt cache. The header chip shows the fresh figure (",m.toLocaleString(),") with those cached reads excluded."]})]})})]}),a&&void 0!==x&&(0,r.jsx)(s.A,{title:"Context of the latest call".concat(a.modelDisplayName?" (".concat(a.modelDisplayName,")"):"",": ").concat(a.promptTokens.toLocaleString()," of ").concat(a.contextWindow.toLocaleString()," tokens"),children:(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,minWidth:140},children:[(0,r.jsx)(tu.A,{variant:"determinate",value:x,color:x>=90?"error":x>=70?"warning":"primary",sx:{flex:1,height:6,borderRadius:3}}),(0,r.jsxs)(p.default,{variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:[tf(a.promptTokens),"/",tf(a.contextWindow)," (",x,"%)"]})]})}),a&&void 0===x&&(0,r.jsx)(s.A,{title:"Prompt size of the latest call".concat(a.modelDisplayName?" (".concat(a.modelDisplayName,")"):"",". Set the model's Context Window in its settings to see a usage meter."),children:(0,r.jsxs)(p.default,{variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:["ctx ",tf(a.promptTokens)]})})]})};var tg=n(75870),tm=n(43076);let tx=(0,eF.h)("frontend/components/Chat/QuickChatDialog"),tv=e=>{let{open:t,onClose:n,onStart:a}=e,[l,s]=(0,o.useState)([]),[g,m]=(0,o.useState)([]),[b,j]=(0,o.useState)(!1),[A,S]=(0,o.useState)(null),[I,k]=(0,o.useState)(""),[C,E]=(0,o.useState)(""),[T,N]=(0,o.useState)({}),[z,R]=(0,o.useState)(!1),[_,D]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!t)return;let e=!1;return j(!0),S(null),(async()=>{try{let[t,n]=await Promise.all([tm.N.loadModels(),eO.S.loadServerConfigs()]);if(e)return;s(t);let r=Array.isArray(n)?n.filter(e=>!e.disabled).map(e=>e.name):[];m(r),k(e=>{var n;return e||(null==(n=t[0])?void 0:n.id)||""})}catch(t){e||(tx.warn("Failed to load models/servers for quick chat",t),S("Could not load models or servers."))}finally{e||j(!1)}})(),()=>{e=!0}},[t]),(0,o.useEffect)(()=>{t||(E(""),N({}),D(null),R(!1))},[t]);let P=(0,o.useCallback)(e=>{N(t=>{let n=t[e];return(null==n?void 0:n.selected)?{...t,[e]:{...n,selected:!1}}:{...t,[e]:{...null!=n?n:{tools:null,expanded:!1},selected:!0}}})},[]),M=(0,o.useCallback)(async e=>{N(t=>{var n;let r=null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!1};return{...t,[e]:{...r,expanded:!r.expanded}}});let t=T[e];if(!(null==t?void 0:t.available)&&!(null==t?void 0:t.loading)){N(t=>{var n;return{...t,[e]:{...null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!0},loading:!0}}});try{let{tools:t}=await eO.S.listServerTools(e),n=Array.isArray(t)?t.map(e=>e.name).filter(Boolean):[];N(t=>{var r;return{...t,[e]:{...null!=(r=t[e])?r:{selected:!1,tools:null,expanded:!0},available:n,loading:!1}}})}catch(t){tx.warn("Failed to load tools for ".concat(e),t),N(t=>{var n;return{...t,[e]:{...null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!0},available:[],loading:!1}}})}}},[T]),H=(0,o.useCallback)((e,t,n)=>{N(r=>{var o,a;let l=null!=(o=r[e])?o:{selected:!0,tools:null,expanded:!0},i=new Set(null!=(a=l.tools)?a:new Set(n));return i.has(t)?i.delete(t):i.add(t),{...r,[e]:{...l,selected:!0,tools:i}}})},[]),B=!!I&&!z&&!b,J=async()=>{if(!I)return void D("Pick a model to chat with.");R(!0),D(null);let e=g.filter(e=>{var t;return null==(t=T[e])?void 0:t.selected}).map(e=>{let t=T[e];return!t.tools||t.available&&t.tools.size===t.available.length?{name:e}:{name:e,enabledTools:[...t.tools]}});try{await a({modelId:I,servers:e,systemPrompt:C.trim()||void 0})}catch(e){tx.warn("Quick chat failed to start",e),D(e instanceof Error?e.message:"Could not start the quick chat."),R(!1)}};return(0,r.jsxs)(x.A,{open:t,onClose:z?void 0:n,maxWidth:"sm",fullWidth:!0,children:[(0,r.jsx)(v.A,{children:"Quick Chat"}),(0,r.jsxs)(y.A,{children:[(0,r.jsx)(p.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Chat with a model and, optionally, some MCP servers — no need to build and save a flow."}),A&&(0,r.jsx)(c.A,{severity:"error",sx:{mb:2},children:A}),(0,r.jsxs)(F.A,{fullWidth:!0,size:"small",sx:{mb:2},disabled:b,children:[(0,r.jsx)(ep.A,{id:"quick-chat-model-label",children:"Model"}),(0,r.jsxs)(L.A,{labelId:"quick-chat-model-label",label:"Model",value:I,onChange:e=>k(e.target.value),children:[0===l.length&&(0,r.jsx)(W.A,{value:"",disabled:!0,children:b?"Loading…":"No models configured"}),l.map(e=>(0,r.jsx)(W.A,{value:e.id,children:e.displayName||e.name},e.id))]})]}),(0,r.jsx)(u.A,{fullWidth:!0,size:"small",multiline:!0,minRows:2,maxRows:6,label:"System prompt (optional)",placeholder:"e.g. You are a concise coding assistant.",value:C,onChange:e=>E(e.target.value),sx:{mb:2}}),(0,r.jsx)(O.A,{sx:{mb:1}}),(0,r.jsx)(p.default,{variant:"subtitle2",gutterBottom:!0,children:"MCP servers (optional)"}),b?(0,r.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,r.jsx)(es.default,{size:22})}):0===g.length?(0,r.jsx)(p.default,{variant:"body2",color:"text.secondary",children:"No connected MCP servers. You can still chat with the model alone."}):g.map(e=>{let t=T[e],n=!!(null==t?void 0:t.selected),o=null==t?void 0:t.available,a=null==t?void 0:t.tools;return(0,r.jsxs)(i.default,{sx:{mb:.5},children:[(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center"},children:[(0,r.jsx)(ed.A,{sx:{flexGrow:1,mr:0},control:(0,r.jsx)(e$.A,{size:"small",checked:n,onChange:()=>P(e)}),label:(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,r.jsx)(p.default,{variant:"body2",children:e}),n&&(0,r.jsx)(f.A,{size:"small",variant:"outlined",label:a?"".concat(a.size," tool").concat(1===a.size?"":"s"):"all tools"})]})}),(0,r.jsx)(d.A,{size:"small",onClick:()=>M(e),"aria-label":"customize ".concat(e," tools"),children:(null==t?void 0:t.expanded)?(0,r.jsx)(Y.A,{fontSize:"small"}):(0,r.jsx)(K.A,{fontSize:"small"})})]}),(0,r.jsx)(U.A,{in:!!(null==t?void 0:t.expanded),unmountOnExit:!0,children:(0,r.jsx)(i.default,{sx:{pl:4,pb:1},children:(null==t?void 0:t.loading)?(0,r.jsx)(es.default,{size:16}):o&&o.length>0?o.map(t=>{let n=!a||a.has(t);return(0,r.jsx)(ed.A,{sx:{display:"flex"},control:(0,r.jsx)(e$.A,{size:"small",checked:n,onChange:()=>H(e,t,o)}),label:(0,r.jsx)(p.default,{variant:"caption",children:t})},t)}):(0,r.jsx)(p.default,{variant:"caption",color:"text.secondary",children:o?"No tools reported (server may be offline).":""})})})]},e)}),_&&(0,r.jsx)(c.A,{severity:"error",sx:{mt:2},children:_})]}),(0,r.jsxs)(w.A,{children:[(0,r.jsx)(h.A,{onClick:n,disabled:z,children:"Cancel"}),(0,r.jsx)(h.A,{variant:"contained",onClick:J,disabled:!B,startIcon:z?(0,r.jsx)(es.default,{size:16,color:"inherit"}):void 0,children:z?"Starting…":"Start chat"})]})]})};var ty=n(49692),tb=n(39486),tw=n(82446),tj=n(54178),tA=n(56900),tS=n(11305),tI=n(48116),tk=n(33567),tC=n(22539),tE=n(90057),tT=n(33420),tN=n(53911);let tz={byNode:{},byResource:{},byResourceName:{},resourceVersion:0};function tR(e,t){return"".concat(e," ").concat(t)}var t_=n(59323),tD=n(72308),tP=n(6422),tO=n(48363);let tM=(0,eF.h)("frontend/components/Chat/RunResourcesPanel"),tF=e=>{let{conversationId:t,refreshToken:n}=e,[a,l]=(0,o.useState)(null),[s,d]=(0,o.useState)(null);return((0,o.useEffect)(()=>{if(!t)return;let e=!1;return fetch("/v1/chat/conversations/".concat(encodeURIComponent(t),"/resources")).then(async e=>{if(!e.ok)throw Error("HTTP ".concat(e.status));return e.json()}).then(t=>{e||(l(Array.isArray(t.resources)?t.resources:[]),d(null))}).catch(t=>{e||(tM.warn("Failed to load run resources",t),d(t instanceof Error?t.message:String(t)))}),()=>{e=!0}},[t,n]),s)?(0,r.jsxs)(p.default,{variant:"caption",color:"text.secondary",children:["Run data unavailable (",s,")"]}):null===a?(0,r.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",p:1},children:(0,r.jsx)(es.default,{size:16})}):0===a.length?(0,r.jsx)(p.default,{variant:"caption",color:"text.secondary",children:"No data artifacts captured in this run yet."}):(0,r.jsx)(H.A,{dense:!0,disablePadding:!0,children:[...a].sort((e,t)=>t.createdAt-e.createdAt).map(e=>{var t;return(0,r.jsxs)(_.Ay,{disableGutters:!0,sx:{alignItems:"flex-start"},children:[(0,r.jsx)(ex.A,{sx:{minWidth:30,mt:.5},children:function(e){switch(e){case"image":return(0,r.jsx)(tD.A,{fontSize:"small",sx:{color:"#009688"}});case"audio":return(0,r.jsx)(tP.A,{fontSize:"small",sx:{color:"#009688"}});case"link":return(0,r.jsx)(tO.A,{fontSize:"small",sx:{color:"#009688"}});default:return(0,r.jsx)(t_.A,{fontSize:"small",sx:{color:"#009688"}})}}(e.kind)}),(0,r.jsx)(P.A,{primary:(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5,flexWrap:"wrap"},children:[(0,r.jsx)(p.default,{variant:"body2",sx:{fontWeight:500},children:null!=(t=e.name)?t:"".concat(e.kind,"-").concat(e.id.slice(0,8))}),e.mimeType&&(0,r.jsx)(f.A,{label:e.mimeType,size:"small",variant:"outlined",sx:{height:18,fontSize:"0.65rem"}}),(0,r.jsx)(p.default,{variant:"caption",color:"text.secondary",children:function(e){return e<1024?"".concat(e," B"):e<1048576?"".concat(Math.round(e/1024)," KB"):"".concat((e/1048576).toFixed(1)," MB")}(e.size)})]}),secondary:(0,r.jsxs)(p.default,{variant:"caption",color:"text.secondary",component:"span",sx:{wordBreak:"break-all"},children:["by ",function(e){var t,n,r,o,a,l,i;let s=e.producedBy;switch(s.source){case"tool-result":return"tool ".concat(null!=(t=s.server)?t:"?","/").concat(null!=(n=s.toolName)?n:"?");case"tool-args":return"tool args ".concat(null!=(r=s.server)?r:"?","/").concat(null!=(o=s.toolName)?o:"?");case"capture":return"step ".concat(null!=(l=null!=(a=s.nodeName)?a:s.nodeId)?l:"?");case"mcp-link":return"link from ".concat(null!=(i=s.server)?i:"?");default:return"run"}}(e),e.readBy.length>0?" \xb7 read ".concat(e.readBy.length,"\xd7"):""," \xb7 ",e.uri]})})]},e.id)})})};var tL=n(14913),tW=n(57883);let tH={system:{label:"system",color:"secondary"},sent:{label:"sent",color:"success"},folded:{label:"folded",color:"warning"},"scoped-out":{label:"scoped out",color:"info"},"handoff-stripped":{label:"handoff plumbing",color:"default"}},tU={whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0,fontSize:"0.75rem",fontFamily:"inherit"},tB=e=>{let{role:t,content:n,toolCallNames:o,status:a,faded:l}=e;return(0,r.jsxs)(eu.A,{variant:"outlined",sx:{p:1,mb:.75,opacity:l?.55:1,borderStyle:l?"dashed":"solid"},children:[(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5,mb:.5,flexWrap:"wrap"},children:[(0,r.jsx)(f.A,{size:"small",label:t,color:function(e){switch(e){case"system":return"secondary";case"user":return"primary";case"assistant":return"success";case"tool":return"info";default:return"default"}}(t),variant:"outlined"}),o&&o.length>0&&(0,r.jsx)(f.A,{size:"small",variant:"outlined",label:"\uD83D\uDD27 ".concat(o.join(", ")),sx:{maxWidth:"100%"}}),a&&"sent"!==a&&"system"!==a&&(0,r.jsx)(f.A,{size:"small",color:tH[a].color,label:tH[a].label})]}),n.trim().length>0?(0,r.jsx)("pre",{style:tU,children:n}):(0,r.jsx)(p.default,{variant:"caption",color:"textSecondary",children:"(no text content)"})]})},tJ=e=>{let{provenance:t}=e;return(0,r.jsxs)(i.default,{children:[(0,r.jsx)(p.default,{variant:"caption",color:"textSecondary",sx:{display:"block",mb:.5},children:"Full threaded history — greyed rows are not sent to the model."}),t.map((e,t)=>{var n,o;return(0,r.jsx)(tB,{role:e.role,content:null!=(n=e.preview)?n:"",toolCallNames:e.toolCallNames,status:e.status,faded:"sent"!==e.status&&"system"!==e.status},null!=(o=e.id)?o:"hist-".concat(t))}),t.some(e=>"sent"!==e.status&&"system"!==e.status)&&(0,r.jsx)(p.default,{variant:"caption",color:"textSecondary",sx:{display:"block",mt:1},children:"Hover a badge label to understand why a message is not on the wire: folded (outputMode), scoped out (inputMode), or handoff plumbing (tool-call strip)."})]})},tq=()=>{},tG=e=>{let{modelInput:t,conversationId:n}=e,[a,l]=(0,o.useState)("wire"),{systemMessage:s,wireMessages:d,provenance:c,counts:u,inputMode:h}=t,g=(0,o.useMemo)(()=>(d||[]).filter(e=>"system"!==e.role),[d]);return(0,r.jsxs)(i.default,{sx:{height:"100%",display:"flex",flexDirection:"column",p:1},children:[(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5,flexWrap:"wrap",mb:1},children:[(0,r.jsx)(p.default,{variant:"caption",color:"textSecondary",children:function(e){return"".concat(e.threaded," in history → ").concat(e.sent," sent")+(e.folded?" \xb7 ".concat(e.folded," folded"):"")+(e.scopedOut?" \xb7 ".concat(e.scopedOut," scoped out"):"")+(e.handoffStripped?" \xb7 ".concat(e.handoffStripped," handoff-stripped"):"")}(u)}),h&&"full-history"!==h&&(0,r.jsx)(f.A,{size:"small",variant:"outlined",label:"inputMode: ".concat(h)})]}),(0,r.jsxs)(ef.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,r.jsx)(eh.A,{expandIcon:(0,r.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,r.jsx)(p.default,{variant:"caption",children:(0,r.jsx)("b",{children:"System message"})})}),(0,r.jsx)(eg.A,{sx:{p:0},children:s&&s.content.trim().length>0?(0,r.jsx)(eu.A,{variant:"outlined",sx:{p:1,maxHeight:220,overflowY:"auto"},children:(0,r.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0,fontSize:"0.75rem",fontFamily:"inherit"},children:s.content})}):(0,r.jsx)(p.default,{variant:"caption",color:"textSecondary",children:"(no system message)"})})]}),(0,r.jsxs)(tL.A,{size:"small",exclusive:!0,value:a,onChange:(e,t)=>{t&&l(t)},sx:{my:1},children:[(0,r.jsx)(tW.A,{value:"wire",children:"What the model sees"}),(0,r.jsx)(tW.A,{value:"annotated",children:"Full history (annotated)"})]}),(0,r.jsx)(i.default,{sx:{flexGrow:1,overflowY:"auto",minHeight:0},children:"wire"===a?0===g.length?(0,r.jsx)(p.default,{variant:"body2",color:"textSecondary",sx:{p:1},children:"No conversation messages — the model sees only the system message."}):(0,r.jsx)(eK,{messages:g,conversationId:n?"debug-".concat(n):void 0,onToggleDisabled:tq,onSplitConversation:tq}):(0,r.jsx)(tJ,{provenance:c})})]})},tV=(0,eF.h)("frontend/components/Chat/DebuggerCanvas"),tK={start:tT.vm,process:tT.Uw,finish:tT.IK,mcp:tT.v2,subflow:tT.lA,resource:tT.z9},tY={custom:tN.jY,mcpEdge:tN.oY,resourceEdge:tN.sZ},tQ=["conversation","tracker","detail"],tX={conversation:"Conversation",tracker:"Execution Tracker",detail:"Detail"},tZ="flujo-debugger-section-order",t$="flujo-debugger-section-visible",t0="flujo-debugger-conv-width",t1="flujo-debugger-detail-width";function t2(e,t){let n=Number(window.localStorage.getItem(e));return Number.isFinite(n)&&n>=240?n:t}let t5=(0,tI.Ay)(eu.A)(e=>{let{theme:t}=e;return{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden",padding:t.spacing(1)}}),t6=(0,tI.Ay)(i.default)(e=>{let{theme:t}=e;return{padding:t.spacing(1,2),borderBottom:"1px solid ".concat(t.palette.divider)}}),t8=(0,tI.Ay)(i.default)({flexGrow:1,display:"flex",overflow:"hidden",minHeight:0}),t4=(0,tI.Ay)(i.default)(e=>{let{theme:t}=e;return{width:"200px",flexShrink:0,borderRight:"1px solid ".concat(t.palette.divider),overflowY:"auto",padding:t.spacing(1)}}),t7=(0,tI.Ay)(i.default)({flexGrow:1,position:"relative",height:"100%"}),t3=(0,tI.Ay)(i.default)(e=>{let{theme:t}=e;return{padding:t.spacing(1,2),borderTop:"1px solid ".concat(t.palette.divider),display:"flex",gap:t.spacing(1),justifyContent:"center"}}),t9=(0,tI.Ay)(i.default)(e=>{let{theme:t}=e;return{width:"6px",flexShrink:0,cursor:"col-resize",backgroundColor:t.palette.divider,transition:"background-color 120ms",touchAction:"none","&:hover":{backgroundColor:t.palette.primary.main}}}),ne=e=>{var t,n,a,l;let{debugState:u,conversationId:f,onStep:g,onStepOver:m,onContinue:x,onCancel:v,isLoading:y,breakpoints:b,onToggleBreakpoint:w,onClose:j,isExpanded:A,onToggleExpand:S,liveActivity:I}=e,k=(0,tk.A)(),[C,E]=(0,o.useState)(u.executionTrace&&u.executionTrace.length>0?u.executionTrace.length-1:-1),[T,N]=(0,o.useState)(()=>(function(){try{let e=JSON.parse(window.localStorage.getItem(tZ)||"null");if(Array.isArray(e)){let t=e.filter(e=>tQ.includes(e)),n=tQ.filter(e=>!t.includes(e));if(t.length+n.length===tQ.length)return[...t,...n]}}catch(e){}return[...tQ]})()),[z,R]=(0,o.useState)(()=>(function(){let e={conversation:!0,tracker:!0,detail:!0};try{let t=JSON.parse(window.localStorage.getItem(t$)||"null");if(t&&"object"==typeof t)for(let n of tQ)"boolean"==typeof t[n]&&(e[n]=t[n])}catch(e){}return e})()),[O,M]=(0,o.useState)(()=>t2(t0,480)),[F,L]=(0,o.useState)(()=>t2(t1,320)),[W,U]=(0,o.useState)(null),[B,J]=(0,o.useState)(!0),[G,V]=(0,o.useState)(null),[Y,Q,X]=(0,tC.ck)([]),[Z,$,ee]=(0,tC.fM)([]);(0,o.useEffect)(()=>{window.localStorage.setItem(tZ,JSON.stringify(T))},[T]),(0,o.useEffect)(()=>{window.localStorage.setItem(t$,JSON.stringify(z))},[z]),(0,o.useEffect)(()=>{window.localStorage.setItem(t0,String(Math.round(O)))},[O]),(0,o.useEffect)(()=>{window.localStorage.setItem(t1,String(Math.round(F)))},[F]),(0,o.useEffect)(()=>{var e;let t=(null==(e=u.executionTrace)?void 0:e.length)||0;t>0?(E(e=>Math.min(e,t-1)),C<t-1&&E(t-1)):E(-1)},[u.executionTrace]),(0,o.useEffect)(()=>{(async()=>{if(!u.flowId){V("Flow ID is missing in debug state."),J(!1);return}J(!0),V(null);try{tV.debug("Loading flow definition for ID: ".concat(u.flowId));let e=await tE.g.getFlow(u.flowId);if(!e)throw Error("Flow with ID ".concat(u.flowId," not found."));U(e),tV.info("Flow definition loaded: ".concat(e.name))}catch(e){tV.error("Error loading flow definition:",e),V(e instanceof Error?e.message:"Failed to load flow definition."),U(null)}finally{J(!1)}})()},[u.flowId]),(0,o.useEffect)(()=>{if(W){tV.debug("Setting nodes and edges from flow definition");let e=W.nodes.map(e=>({...e,draggable:!1,selectable:!1,connectable:!1})),t=W.edges.map(e=>({...e,selectable:!1}));Q(e),$(t)}},[W,Q,$]);let et=(0,o.useCallback)(()=>{if(tV.debug("Previous button clicked. Current index: ".concat(C)),C>0){let e=C-1;tV.debug("Setting current step index to: ".concat(e)),E(e)}else tV.debug("Already at the first step, cannot go previous.")},[C]),en=(0,o.useCallback)(()=>{var e;if(tV.debug("Next button clicked. Current index: ".concat(C,", Trace length: ").concat(null==(e=u.executionTrace)?void 0:e.length)),u.executionTrace&&C<u.executionTrace.length-1){let e=C+1;tV.debug("Navigating to next trace step: ".concat(e)),E(e)}else tV.info("At end of trace, triggering API call for next step."),g()},[C,u.executionTrace,g]),er=(0,o.useMemo)(()=>{if(u.executionTrace&&C>=0&&C<u.executionTrace.length)return u.executionTrace[C]},[u.executionTrace,C]),eo=(0,o.useMemo)(()=>(null==er?void 0:er.modelInputs)&&er.modelInputs.length>0?er.modelInputs:(null==er?void 0:er.modelInput)?[er.modelInput]:void 0,[er]),[ea,el]=(0,o.useState)(0);(0,o.useEffect)(()=>{el(0)},[C]);let ei=eo?Math.min(ea,eo.length-1):0,ed=null==eo?void 0:eo[ei],[ec,eu]=(0,o.useState)(()=>Date.now());(0,o.useEffect)(()=>{if(!I)return;let e=()=>{let e=Date.now();return[...Object.values(I.byNode),...Object.values(I.byResource),...Object.values(I.byResourceName)].some(t=>e-t.ts<4e3)};if(!e())return;let t=setInterval(()=>{eu(Date.now()),e()||clearInterval(t)},350);return()=>clearInterval(t)},[I]);let ep=(0,o.useCallback)(e=>{var t,n;if(!I)return null;let r=I.byNode[e.id];if(r&&ec-r.ts<4e3)return r;let o=e.data;if((null!=(t=null==o?void 0:o.type)?t:e.type)!=="resource")return null;let a=null!=(n=null==o?void 0:o.properties)?n:{},l="run"===a.scope?"string"==typeof a.runName?I.byResourceName[a.runName]:void 0:"string"==typeof a.boundServer&&"string"==typeof a.uri?I.byResource[tR(a.boundServer,a.uri)]:void 0;return l&&ec-l.ts<4e3?{kind:"read"===l.kind?"resource-read":"resource-write",ts:l.ts}:null},[I,ec]),em=(0,o.useMemo)(()=>{let e=null==er?void 0:er.nodeId;return Y.map(t=>{var n;let r=t.id===e,o=null==b?void 0:b.includes(t.id),a=r?null:ep(t),l=a?Math.max(.25,1-(ec-a.ts)/4e3):0,i=(null==a?void 0:a.kind)==="active"?k.palette.primary.main:"#009688";return{...t,style:{...t.style,border:r?"2px solid ".concat(k.palette.warning.main):a?"2px solid ".concat(i):o?"2px dashed ".concat(k.palette.error.main):null==(n=t.style)?void 0:n.border,boxShadow:r?"0 0 10px ".concat(k.palette.warning.light):a?"0 0 ".concat("resource-write"===a.kind?14:10,"px ").concat(i).concat(Math.round(255*l).toString(16).padStart(2,"0")):void 0}}})},[Y,er,b,k,ep,ec]),ex=(0,o.useMemo)(()=>T.filter(e=>z[e]),[T,z]),ev=(0,o.useCallback)(e=>{R(t=>({...t,[e]:!t[e]}))},[]),ey=(0,o.useCallback)((e,t)=>{N(n=>{let r=n.indexOf(e),o=r+t;if(r<0||o<0||o>=n.length)return n;let a=[...n];return[a[r],a[o]]=[a[o],a[r]],a})},[]),eb=(0,o.useCallback)((e,t,n)=>{n.preventDefault();let r=n.clientX,o="conversation"===e?O:F,a="conversation"===e?M:L,l=document.body.style.userSelect,i=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let s=e=>{a(Math.min(Math.max(o+t*(e.clientX-r),240),1100))},d=()=>{window.removeEventListener("pointermove",s),window.removeEventListener("pointerup",d),document.body.style.userSelect=l,document.body.style.cursor=i};window.addEventListener("pointermove",s),window.addEventListener("pointerup",d)},[O,F]),ew=(0,r.jsx)(i.default,{sx:{flexGrow:1,overflow:"hidden",minHeight:0,display:"flex",flexDirection:"column"},children:er?ed&&eo?(0,r.jsxs)(i.default,{sx:{flexGrow:1,minHeight:0,display:"flex",flexDirection:"column"},children:[eo.length>1&&(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"center",gap:.5,px:1,py:.5,borderBottom:"1px solid ".concat(k.palette.divider)},children:[(0,r.jsx)(s.A,{title:"Previous model call",children:(0,r.jsx)("span",{children:(0,r.jsx)(d.A,{size:"small",onClick:()=>el(e=>Math.max(0,Math.min(e,eo.length-1)-1)),disabled:ei<=0,"aria-label":"Previous model call",children:(0,r.jsx)(q.A,{fontSize:"small"})})})}),(0,r.jsxs)(p.default,{variant:"caption",color:"textSecondary",children:["Model call ",ei+1," / ",eo.length]}),(0,r.jsx)(s.A,{title:"Next model call",children:(0,r.jsx)("span",{children:(0,r.jsx)(d.A,{size:"small",onClick:()=>el(e=>Math.min(eo.length-1,Math.min(e,eo.length-1)+1)),disabled:ei>=eo.length-1,"aria-label":"Next model call",children:(0,r.jsx)(ty.A,{fontSize:"small"})})})})]}),(0,r.jsx)(i.default,{sx:{flexGrow:1,minHeight:0,overflow:"hidden",display:"flex",flexDirection:"column"},children:(0,r.jsx)(tG,{modelInput:ed,conversationId:f})})]}):(0,r.jsx)(p.default,{variant:"body2",color:"textSecondary",sx:{p:2},children:"No model call for this step."}):(0,r.jsx)(p.default,{variant:"body2",color:"textSecondary",sx:{p:2},children:"Select a step from the execution tracker."})}),ej={conversation:ew,tracker:(0,r.jsxs)(i.default,{sx:{flexGrow:1,display:"flex",overflow:"hidden",minHeight:0},children:[(0,r.jsxs)(t4,{children:[(0,r.jsx)(p.default,{variant:"caption",color:"textSecondary",gutterBottom:!0,sx:{display:"block"},children:"Execution Trace"}),(0,r.jsxs)(H.A,{dense:!0,disablePadding:!0,children:[null==(t=u.executionTrace)?void 0:t.map((e,t)=>(0,r.jsx)(_.Ay,{disablePadding:!0,children:(0,r.jsx)(D.A,{selected:t===C,onClick:()=>(e=>{u.executionTrace&&e>=0&&e<u.executionTrace.length?(tV.debug("Trace step selected: ".concat(e)),E(e)):tV.warn("Invalid step index selected: ".concat(e))})(t),children:(0,r.jsx)(P.A,{primary:"".concat(e.stepIndex,": ").concat(e.nodeName||e.nodeId),secondary:e.nodeType})})},e.stepIndex)),y&&(0,r.jsx)(_.Ay,{children:(0,r.jsx)(es.default,{size:20,sx:{margin:"auto"}})})]})]}),(0,r.jsx)(t7,{children:B?(0,r.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,r.jsx)(es.default,{})}):G?(0,r.jsx)(c.A,{severity:"error",sx:{margin:2},children:G}):(0,r.jsxs)(tC.Ln,{children:[" ",(0,r.jsx)(tC.Gc,{nodes:em,edges:Z,onNodesChange:X,onEdgesChange:ee,nodeTypes:tK,edgeTypes:tY,fitView:!0,attributionPosition:"bottom-right",nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!1,onNodeClick:(e,t)=>{e.preventDefault(),w&&w(t.id)},onEdgeClick:e=>e.preventDefault(),onPaneClick:()=>{},children:" "})]})})]}),detail:(0,r.jsxs)(i.default,{sx:{flexGrow:1,overflowY:"auto",minHeight:0,p:2},children:[er?(0,r.jsxs)(i.default,{children:[(0,r.jsxs)(p.default,{variant:"body2",children:[(0,r.jsx)("b",{children:"Node:"})," ",er.nodeName," (",er.nodeId,")"]}),(0,r.jsxs)(p.default,{variant:"body2",children:[(0,r.jsx)("b",{children:"Type:"})," ",er.nodeType]}),(0,r.jsxs)(p.default,{variant:"body2",children:[(0,r.jsx)("b",{children:"Timestamp:"})," ",new Date(er.timestamp).toLocaleString()]}),(0,r.jsxs)(p.default,{variant:"body2",children:[(0,r.jsx)("b",{children:"Action Taken:"})," ",er.actionTaken]}),(0,r.jsxs)(ef.A,{sx:{mt:2,boxShadow:"none","&:before":{display:"none"}},children:[(0,r.jsx)(eh.A,{expandIcon:(0,r.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,r.jsx)(p.default,{variant:"caption",children:"Prep Result"})}),(0,r.jsx)(eg.A,{sx:{p:0},children:(0,r.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(er.prepResultSnapshot,null,2)})})]}),(0,r.jsxs)(ef.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,r.jsx)(eh.A,{expandIcon:(0,r.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,r.jsxs)(p.default,{variant:"caption",color:(null==(n=er.execResultSnapshot)?void 0:n.success)===!1?"error":"inherit",children:["Exec Result ",(null==(a=er.execResultSnapshot)?void 0:a.success)===!1?"(Error)":""]})}),(0,r.jsx)(eg.A,{sx:{p:0},children:(null==(l=er.execResultSnapshot)?void 0:l.success)===!1?(0,r.jsxs)(i.default,{sx:{p:1,background:k.palette.error.light,borderRadius:1},children:[(0,r.jsxs)(p.default,{variant:"body2",color:"error",gutterBottom:!0,children:[(0,r.jsx)("b",{children:"Error:"})," ",er.execResultSnapshot.error||"Unknown error"]}),er.execResultSnapshot.errorDetails&&(0,r.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"150px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"4px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(er.execResultSnapshot.errorDetails,null,2)})]}):(0,r.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(er.execResultSnapshot,null,2)})})]}),(0,r.jsxs)(ef.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,r.jsx)(eh.A,{expandIcon:(0,r.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,r.jsx)(p.default,{variant:"caption",children:"State Before"})}),(0,r.jsx)(eg.A,{sx:{p:0},children:(0,r.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(er.stateBefore,null,2)})})]}),(0,r.jsxs)(ef.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,r.jsx)(eh.A,{expandIcon:(0,r.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,r.jsx)(p.default,{variant:"caption",children:"State After"})}),(0,r.jsx)(eg.A,{sx:{p:0},children:(0,r.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",maxHeight:"200px",overflowY:"auto",background:"var(--surface-raised)",color:"var(--foreground)",padding:"8px",borderRadius:"4px",fontSize:"0.75rem",margin:0},children:JSON.stringify(er.stateAfter,null,2)})})]})]}):(0,r.jsx)(p.default,{variant:"body2",color:"textSecondary",children:"Select a step from the execution tracker."}),(0,r.jsxs)(ef.A,{defaultExpanded:!0,sx:{mt:2,boxShadow:"none","&:before":{display:"none"}},children:[(0,r.jsx)(eh.A,{expandIcon:(0,r.jsx)(K.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,r.jsx)(p.default,{variant:"caption",children:"Run Data"})}),(0,r.jsx)(eg.A,{sx:{p:0},children:(0,r.jsx)(tF,{conversationId:f,refreshToken:null==I?void 0:I.resourceVersion})})]})]})};return(0,r.jsxs)(t5,{elevation:2,children:[(0,r.jsxs)(t6,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"space-between"},children:[(0,r.jsxs)(i.default,{children:[(0,r.jsx)(p.default,{variant:"h6",children:"Flow Debugger"}),(0,r.jsxs)(p.default,{variant:"caption",color:"textSecondary",display:"block",children:["Click a node to toggle a breakpoint",b&&b.length>0?" \xb7 ".concat(b.length," active"):""]})]}),(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,r.jsx)(s.A,{title:z.conversation?"Hide Conversation":"Show Conversation",children:(0,r.jsx)(d.A,{size:"small",onClick:()=>ev("conversation"),color:z.conversation?"primary":"default","aria-label":z.conversation?"Hide Conversation":"Show Conversation",children:(0,r.jsx)(tj.A,{fontSize:"small"})})}),(0,r.jsx)(s.A,{title:z.tracker?"Hide Execution Tracker":"Show Execution Tracker",children:(0,r.jsx)(d.A,{size:"small",onClick:()=>ev("tracker"),color:z.tracker?"primary":"default","aria-label":z.tracker?"Hide Execution Tracker":"Show Execution Tracker",children:(0,r.jsx)(tA.A,{fontSize:"small"})})}),(0,r.jsx)(s.A,{title:z.detail?"Hide Detail":"Show Detail",children:(0,r.jsx)(d.A,{size:"small",onClick:()=>ev("detail"),color:z.detail?"primary":"default","aria-label":z.detail?"Hide Detail":"Show Detail",children:(0,r.jsx)(tS.A,{fontSize:"small"})})}),S&&(0,r.jsx)(s.A,{title:A?"Exit full screen":"Expand to full screen",children:(0,r.jsx)(d.A,{size:"small",onClick:S,"aria-label":A?"Exit full screen":"Expand to full screen",children:A?(0,r.jsx)(tw.A,{fontSize:"small"}):(0,r.jsx)(tb.A,{fontSize:"small"})})}),j&&(0,r.jsx)(s.A,{title:"Close debugger",children:(0,r.jsx)(d.A,{size:"small",onClick:j,"aria-label":"Close debugger",children:(0,r.jsx)(e1.A,{fontSize:"small"})})})]})]}),(0,r.jsx)(t8,{children:0===ex.length?(0,r.jsx)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",p:3},children:(0,r.jsx)(p.default,{variant:"body2",color:"textSecondary",children:"All sections are hidden — use the toolbar toggles above to show a section."})}):ex.map((e,t)=>(0,r.jsxs)(o.Fragment,{children:[(e=>{let t="tracker"!==e,n="conversation"===e?O:"detail"===e?F:void 0;return(0,r.jsxs)(i.default,{sx:{...t?{width:n,flexShrink:0}:{flexGrow:1,minWidth:300},display:"flex",flexDirection:"column",overflow:"hidden",minHeight:0},children:[(e=>{let t=ex.indexOf(e);return(0,r.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",px:1,py:.5,borderBottom:"1px solid ".concat(k.palette.divider)},children:[(0,r.jsx)(p.default,{variant:"subtitle2",noWrap:!0,children:tX[e]}),(0,r.jsxs)(i.default,{sx:{display:"flex"},children:[(0,r.jsx)(s.A,{title:"Move left",children:(0,r.jsx)("span",{children:(0,r.jsx)(d.A,{size:"small",onClick:()=>ey(e,-1),disabled:t<=0,"aria-label":"Move ".concat(tX[e]," left"),children:(0,r.jsx)(q.A,{fontSize:"small"})})})}),(0,r.jsx)(s.A,{title:"Move right",children:(0,r.jsx)("span",{children:(0,r.jsx)(d.A,{size:"small",onClick:()=>ey(e,1),disabled:t<0||t>=ex.length-1,"aria-label":"Move ".concat(tX[e]," right"),children:(0,r.jsx)(ty.A,{fontSize:"small"})})})}),(0,r.jsx)(s.A,{title:"Hide section",children:(0,r.jsx)(d.A,{size:"small",onClick:()=>ev(e),"aria-label":"Hide ".concat(tX[e]),children:(0,r.jsx)(e1.A,{fontSize:"small"})})})]})]})})(e),ej[e]]},e)})(e),t<ex.length-1&&((e,t)=>{let n="tracker"!==e?e:"tracker"!==t?t:null;if(!n)return null;let o="tracker"!==e?1:-1;return(0,r.jsx)(t9,{onPointerDown:e=>eb(n,o,e),"aria-label":"Resize ".concat(tX[n]," section")},"resizer-".concat(e,"-").concat(t))})(e,ex[t+1])]},e))}),(0,r.jsxs)(t3,{children:[(0,r.jsx)(h.A,{variant:"outlined",size:"small",onClick:et,disabled:y||C<=0,children:"Previous"}),(0,r.jsx)(h.A,{variant:"contained",size:"small",onClick:en,disabled:y||-1===C,children:u.executionTrace&&C<u.executionTrace.length-1?"Next Trace Step":"Step Next"}),m&&(0,r.jsx)(h.A,{variant:"outlined",size:"small",onClick:m,disabled:y,children:"Step Over"}),(0,r.jsx)(h.A,{variant:"contained",color:"secondary",size:"small",onClick:x,disabled:y,children:"Continue"}),(0,r.jsx)(h.A,{variant:"outlined",color:"error",size:"small",onClick:v,disabled:y,children:"Stop"})]})]})};function nt(e){var t;return null==e||null==(t=e.nodes)?void 0:t.find(e=>{var t,n;return(null!=(n=null==e?void 0:e.type)?n:null==e||null==(t=e.data)?void 0:t.type)==="start"})}var nn=n(94929),nr=n(29155),no=n(63650);let na=(0,eF.h)("frontend/services/chat/index");class nl extends Error{constructor(e,t,n){super(e),this.name="ChatApiError",this.status=t,this.body=n}}let ni="/v1/chat/conversations";async function ns(e){let t;if(204===e.status)return;let n=await e.text();if(n)try{t=JSON.parse(n)}catch(e){t=n}if(!e.ok)throw new nl(t&&"object"==typeof t&&(t.error||t.message)||"Request failed with status ".concat(e.status),e.status,t);return t}class nd{async listConversations(){return na.debug("listConversations: Entering method"),ns(await fetch(ni))}async getConversation(e){return na.debug("getConversation: Entering method",{conversationId:e}),ns(await fetch("".concat(ni,"/").concat(encodeURIComponent(e))))}async createConversation(e){return na.debug("createConversation: Entering method",{conversationId:e.id}),ns(await fetch(ni,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}))}async updateConversationFlow(e,t){return na.debug("updateConversationFlow: Entering method",{conversationId:e,flowId:t}),ns(await fetch("".concat(ni,"/").concat(encodeURIComponent(e)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({flowId:t})}))}async updateConversationTitle(e,t){return na.debug("updateConversationTitle: Entering method",{conversationId:e}),ns(await fetch("".concat(ni,"/").concat(encodeURIComponent(e)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:t})}))}async updateConversationApproval(e,t){return na.debug("updateConversationApproval: Entering method",{conversationId:e,requireApproval:t}),ns(await fetch("".concat(ni,"/").concat(encodeURIComponent(e)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApproval:t})}))}async deleteConversation(e){na.debug("deleteConversation: Entering method",{conversationId:e});let t=await fetch("".concat(ni,"/").concat(encodeURIComponent(e)),{method:"DELETE"});await ns(t)}async respondToToolCall(e,t,n){return na.debug("respondToToolCall: Entering method",{conversationId:e,action:t,toolCallId:n}),ns(await fetch("".concat(ni,"/").concat(encodeURIComponent(e),"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:t,toolCallId:n})}))}async debugStep(e){return na.debug("debugStep: Entering method",{conversationId:e}),ns(await fetch("".concat(ni,"/").concat(encodeURIComponent(e),"/debug/step"),{method:"POST"}))}async debugContinue(e){return na.debug("debugContinue: Entering method",{conversationId:e}),ns(await fetch("".concat(ni,"/").concat(encodeURIComponent(e),"/debug/continue"),{method:"POST"}))}async setBreakpoints(e,t){na.debug("setBreakpoints: Entering method",{conversationId:e,count:t.length});let n=await fetch("".concat(ni,"/").concat(encodeURIComponent(e),"/breakpoints"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({breakpoints:t})});await ns(n)}async synthesizeQuickChat(e){return na.debug("synthesizeQuickChat: Entering method",{conversationId:e.conversationId}),ns(await fetch("/api/flow/quick-chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}))}async cancel(e){na.debug("cancel: Entering method",{conversationId:e});let t=await fetch("".concat(ni,"/").concat(encodeURIComponent(e),"/cancel"),{method:"POST"});await ns(t)}subscribeToEvents(e,t,n){let r=new EventSource(void 0!==n?"".concat(ni,"/").concat(encodeURIComponent(e),"/events?fromSeq=").concat(n):"".concat(ni,"/").concat(encodeURIComponent(e),"/events"));return r.onopen=()=>{var n;na.debug("Execution event stream open",{conversationId:e}),null==(n=t.onOpen)||n.call(t)},r.onmessage=e=>{try{t.onEvent(JSON.parse(e.data))}catch(e){na.warn("Failed to parse SSE event",{err:e})}},r.onerror=e=>{var n;na.debug("SSE stream error (browser will retry if still open)"),null==(n=t.onError)||n.call(t,e)},r}}let nc=new nd,nu=(0,eF.h)("frontend/components/Chat/index");function np(e){var t;if(Array.isArray(e.content))return e.content;let n="string"==typeof e.content?e.content:"",r=null!=(t=e.attachments)?t:[],o=r.filter(e=>"image"!==e.type),a=r.filter(e=>"image"===e.type);if(o.length>0&&(n+="\n\n"+o.map(e=>"[".concat(e.type.toUpperCase(),"]: ").concat(e.content)).join("\n\n")),0===a.length)return n;let l=[];for(let e of(n.trim()&&l.push({type:"text",text:n}),a))l.push({type:"image_url",image_url:{url:e.content}});return l}let nf=/cancelled by user|execution cancelled/i,nh=e=>{var t,n;return(null==e?void 0:e.code)==="cancelled"||(null==e||null==(t=e.error)?void 0:t.code)==="cancelled"||[null==e?void 0:e.message,"string"==typeof(null==e||null==(n=e.body)?void 0:n.error)?e.body.error:void 0].some(e=>"string"==typeof e&&nf.test(e))},ng=()=>{var e;let t=(0,l.useRouter)(),[n,a]=(0,o.useState)([]),[_,D]=(0,o.useState)(!0),[P,O]=(0,o.useState)(null),[M,F]=(0,o.useState)(null),[L,W]=(0,o.useState)(!1),[H,U]=(0,o.useState)(null),[B,J]=(0,R.Mj)(R.Zg.CURRENT_CONVERSATION_ID,null),[q,G]=(0,R.Mj)(R.Zg.LAST_PICKED_FLOW_ID,null),[V,K]=(0,o.useState)(!1),[Y,X]=(0,o.useState)(new Set),Z=(0,o.useCallback)((e,t)=>{e&&X(n=>{if(t===n.has(e))return n;let r=new Set(n);return t?r.add(e):r.delete(e),r})},[]),[$,ee]=(0,o.useState)({}),et=(0,o.useRef)(!1),[en,er]=(0,o.useState)(null),[eo,ea]=(0,o.useState)([]),[el,es]=(0,o.useState)(!1),[ed,ec]=(0,o.useState)(!1),[eu,ep]=(0,o.useState)(""),[ef,eh]=(0,o.useState)(!1),[eg,em]=(0,o.useState)(null),[ex,ev]=(0,o.useState)(null),[ey,eb]=(0,o.useState)(null),[ew,ej]=(0,o.useState)(!1),[eA,eS]=(0,o.useState)(null),[eI,ek]=(0,o.useState)(!1),[eC,eE]=(0,o.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-debugger-width"));return Number.isFinite(e)&&e>0?e:0}),[eT,eN]=(0,o.useState)(()=>"1"===window.localStorage.getItem("flujo-debugger-expanded"));(0,o.useEffect)(()=>{window.localStorage.setItem("flujo-debugger-expanded",eT?"1":"0")},[eT]);let ez=(0,o.useCallback)(e=>{e.preventDefault();let t=document.body.style.userSelect,n=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let r=e=>{eE(Math.min(Math.max(window.innerWidth-e.clientX,360),Math.round(.85*window.innerWidth)))},o=()=>{window.removeEventListener("pointermove",r),window.removeEventListener("pointerup",o),document.body.style.userSelect=t,document.body.style.cursor=n,eE(e=>(e>0&&window.localStorage.setItem("flujo-debugger-width",String(Math.round(e))),e))};window.addEventListener("pointermove",r),window.addEventListener("pointerup",o)},[]),[eR,e_]=(0,o.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-chat-sidebar-width"));return Number.isFinite(e)&&e>0?e:300}),[eD,eP]=(0,o.useState)(()=>"1"===window.localStorage.getItem("flujo-chat-sidebar-collapsed")),eO=(0,o.useCallback)(()=>{eP(e=>{let t=!e;return window.localStorage.setItem("flujo-chat-sidebar-collapsed",t?"1":"0"),t})},[]),eM=(0,o.useCallback)(e=>{e.preventDefault();let t=document.body.style.userSelect,n=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let r=e=>{e_(Math.min(Math.max(e.clientX,220),560))},o=()=>{window.removeEventListener("pointermove",r),window.removeEventListener("pointerup",o),document.body.style.userSelect=t,document.body.style.cursor=n,e_(e=>(e>0&&window.localStorage.setItem("flujo-chat-sidebar-width",String(Math.round(e))),e))};window.addEventListener("pointermove",r),window.addEventListener("pointerup",o)},[]),[eF,eL]=(0,o.useState)(null),[eW,eH]=(0,o.useState)(tz),[eU,eB]=(0,o.useState)(tt),[eJ,eq]=(0,o.useState)([]),[eG,eV]=(0,o.useState)(null),eY=(0,o.useRef)(null),eQ=(0,o.useRef)(null),eX=(0,o.useRef)(null),eZ=(0,o.useRef)(-1),e$=(0,o.useRef)(B);(0,o.useEffect)(()=>{e$.current=B},[B]);let e0=(0,o.useRef)(new Set),e1=(0,o.useRef)(new Set),e2=(0,o.useRef)(new Set),[e5,e8]=(0,o.useState)(new Set),e3=(0,o.useCallback)((e,t)=>{e&&(t?e2.current.add(e):e2.current.delete(e),e8(new Set(e2.current)))},[]),e9=(0,o.useRef)(null),te=(0,o.useRef)(!0),[tr,ta]=(0,o.useState)(!1),tl=(0,o.useCallback)(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"auto",t=e9.current;t&&t.scrollTo({top:t.scrollHeight,behavior:e})},[]),ti=(0,o.useCallback)(()=>{let e=e9.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight<80;te.current=t,ta(!t)},[]),ts=(0,o.useCallback)(()=>{te.current=!0,ta(!1),tl("smooth")},[tl]);(0,o.useEffect)(()=>{te.current=!0,ta(!1)},[B]),(0,o.useEffect)(()=>{te.current&&tl("auto")},[null==M?void 0:M.messages,tl]);let td=(0,o.useRef)(null);(0,o.useEffect)(()=>{td.current=eG},[eG]),(0,o.useEffect)(()=>{let e=window.location.origin+"/v1";eY.current=new nr.Ay({baseURL:e,apiKey:"FLUJO",dangerouslyAllowBrowser:!0,maxRetries:0,timeout:18e6})},[]),(0,o.useEffect)(()=>{(async()=>{nu.debug("Loading flows");try{let e=await tE.g.loadFlows();ea(e)}catch(e){nu.error("Error loading flows:",e)}})()},[]);let tc=(0,o.useCallback)(async(e,t)=>{var n;let r=null!=(n=null==t?void 0:t.silent)&&n;nu.debug("Fetching conversation list from backend",{silent:r}),r||(D(!0),O(null));let o=[],l=!1;try{for(let e of o=(await nc.listConversations()).filter(e=>!e1.current.has(e.id)).sort((e,t)=>t.updatedAt-e.updatedAt))e0.current.delete(e.id);a(e=>{let t=e.filter(e=>e0.current.has(e.id)),n=t.length>0?[...t,...o].sort((e,t)=>t.updatedAt-e.updatedAt):o;return((e,t)=>e.length===t.length&&e.every((e,n)=>{let r=t[n];return e.id===r.id&&e.title===r.title&&e.flowId===r.flowId&&e.status===r.status&&e.plannedExecutionId===r.plannedExecutionId&&e.parentConversationId===r.parentConversationId&&e.rootConversationId===r.rootConversationId&&e.createdAt===r.createdAt&&e.updatedAt===r.updatedAt}))(e,n)?e:n}),nu.info("Fetched ".concat(o.length," conversations for the list"))}catch(e){l=!0,nu.error("Error fetching conversation list:",e),r||(O("Failed to load conversation history."),a([]))}finally{if(r||D(!1),r||l)return;let t=void 0!==e?e:e$.current,n=e$.current;if(t&&(e=>o.some(t=>t.id===e)||e0.current.has(e))(t))t!==n&&(nu.debug("Setting currentConversationId to ".concat(t," after fetch/operation.")),J(t));else if(o.length>0){let e=o[0].id;e!==n&&(nu.debug("Selecting most recent conversation ".concat(e," after fetch/operation.")),J(e))}else null===n||e0.current.has(n)||(nu.debug("No conversations available after fetch/operation, clearing selection."),J(null))}},[J]);(0,o.useEffect)(()=>{tc()},[]),(0,o.useEffect)(()=>{let e=()=>{("undefined"==typeof document||"visible"===document.visibilityState)&&tc(void 0,{silent:!0})},t=setInterval(e,5e3);return document.addEventListener("visibilitychange",e),()=>{clearInterval(t),document.removeEventListener("visibilitychange",e)}},[tc]);let tu=(0,o.useCallback)(async e=>{if(e0.current.has(e))return void nu.debug("Skipping detail fetch for client-only conversation",{conversationId:e});if(e$.current!==e){nu.debug("Detail fetch requested for non-viewed conversation; refreshing list instead",{conversationId:e}),tc(void 0,{silent:!0});return}nu.debug("Fetching detailed conversation",{conversationId:e}),W(!0),U(null),F(null);try{let t=await nc.getConversation(e);if(e$.current!==e)return void nu.debug("Discarding stale detailed conversation response",{fetchedId:e,currentId:e$.current});F(t),a(n=>n.map(n=>{var r;return n.id===e?{...n,title:t.title,flowId:t.flowId,updatedAt:t.updatedAt,status:null!=(r=t.status)?r:n.status}:n}).sort((e,t)=>t.updatedAt-e.updatedAt)),nu.info("Fetched detailed conversation successfully",{conversationId:e})}catch(t){if(nu.error("Error fetching detailed conversation:",{conversationId:e,err:t}),e$.current!==e)return;t instanceof nl&&404===t.status?(U("Conversation ".concat(e," not found.")),J(null),tc()):U("Failed to load details for conversation ".concat(e,".")),F(null)}finally{e$.current===e&&W(!1)}},[tc,J]);(0,o.useEffect)(()=>{em(null),eb(null),B?tu(B):(F(null),W(!1),U(null))},[B,tu]),(0,o.useEffect)(()=>{if(M){var e;es(null!=(e=M.requireApproval)&&e)}},[null==M?void 0:M.id]);let tp=(0,o.useCallback)(async e=>{if(es(e),B)try{await nc.updateConversationApproval(B,e)}catch(e){nu.warn("Failed to persist requireApproval setting",{conversationId:B,err:e})}},[B]),tf=n.find(e=>e.id===B)||null,tm=(0,o.useMemo)(()=>{let e={};for(let t of eo)t.id&&(e[t.id]=t.name);return e},[eo]),tx=(0,o.useMemo)(()=>{var e,t;return(null==(t=eo.find(e=>e.id===(null==M?void 0:M.flowId)))||null==(e=t.nodes)?void 0:e.map(e=>({id:e.id,label:e.data.label||e.id})))||[]},[eo,null==M?void 0:M.flowId]),ty=(0,o.useMemo)(()=>{var e,t,n;let r=e=>!!e&&tx.some(t=>t.id===e);if(r(ey))return ey;if(r(null==M?void 0:M.currentNodeId))return M.currentNodeId;let o=null!=(t=null==M?void 0:M.messages)?t:[];for(let e=o.length-1;e>=0;e--){let t=o[e];if("assistant"===t.role&&r(t.processNodeId))return t.processNodeId}return null!=(n=null==(e=tx[0])?void 0:e.id)?n:null},[ey,M,tx]),tb=async e=>{var t,n,r,o;nu.debug("Attempting to create new conversation"),er(null);let l="string"!=typeof e||Q(e)?void 0:eo.find(t=>t.id===e),i=q&&!Q(q)?eo.find(e=>e.id===q):void 0,s=(null==(t=null!=(r=null!=(n=null!=l?l:i)?n:eo.find(e=>e.favorite))?r:eo[0])?void 0:t.id)||null;if(!s){nu.error("Cannot create conversation: No flows available or first flow has no ID."),er("Cannot create a new conversation: No flows available.");return}let d=(0,e6.A)(),c=Date.now(),u={id:d,title:"New Conversation",flowId:s,createdAt:c,updatedAt:c};try{nu.info("Sending request to create conversation on backend",{payload:JSON.stringify(u)});let e=await nc.createConversation(u);nu.info("Successfully created conversation on backend",{conversationId:e.id}),a(t=>[e,...t].sort((e,t)=>t.updatedAt-e.updatedAt)),J(e.id),F({id:e.id,title:e.title,flowId:e.flowId,createdAt:e.createdAt,updatedAt:e.updatedAt,messages:[]}),W(!1),U(null)}catch(t){nu.error("Error creating conversation on backend:",t);let e="Failed to create conversation on the server.";t instanceof nl?e+=" Error: ".concat((null==(o=t.body)?void 0:o.error)||t.message):t instanceof Error&&(e+=" Error: ".concat(t.message)),er(e)}},tw=(0,o.useRef)(!1);(0,o.useEffect)(()=>{if(tw.current||0===eo.length)return;let e=new URLSearchParams(window.location.search).get("flow");if(!e){tw.current=!0;return}tw.current=!0,eo.some(t=>t.id===e)&&!Q(e)&&tb(e),t.replace("/chat")},[eo]);let[tj,tA]=(0,o.useState)(!1),tS=async e=>{er(null);let t=(0,e6.A)(),{flow:n}=await nc.synthesizeQuickChat({conversationId:t,modelId:e.modelId,servers:e.servers,systemPrompt:e.systemPrompt}),r=Date.now(),o=await nc.createConversation({id:t,title:"Quick Chat",flowId:n.id,flowSnapshot:n,createdAt:r,updatedAt:r});a(e=>[o,...e].sort((e,t)=>t.updatedAt-e.updatedAt)),J(o.id),F({id:o.id,title:o.title,flowId:o.flowId,createdAt:o.createdAt,updatedAt:o.updatedAt,messages:[]}),W(!1),U(null),tA(!1)},tI=(0,o.useCallback)(e=>{nu.debug("Updating detailed conversation state locally",{conversationId:e.id});let t={...e,updatedAt:Date.now()};F(t),a(e=>e.map(e=>e.id===t.id?{...e,title:t.title,updatedAt:t.updatedAt}:e).sort((e,t)=>t.updatedAt-e.updatedAt))},[]),tk=(0,o.useCallback)(()=>{eX.current&&(nu.debug("Closing execution event stream"),eX.current.close(),eX.current=null)},[]),tC=(0,o.useCallback)((e,t)=>{a(n=>{let r=n.findIndex(t=>t.id===e);if(-1===r||n[r].status===t)return n;let o=[...n];return o[r]={...o[r],status:t},o})},[]),tT=(0,o.useCallback)(e=>{var t,n,r,o;if("number"==typeof e.seq){if(e.seq<=eZ.current)return;eZ.current=e.seq}let a=e=>eL(t=>{var n,r,o,a;return{totalTokens:null!=(r=null!=(n=e.totalTokens)?n:null==t?void 0:t.totalTokens)?r:0,activeNode:void 0!==e.activeNode?e.activeNode:null!=(o=null==t?void 0:t.activeNode)?o:null,startedAt:null!=(a=null==t?void 0:t.startedAt)?a:Date.now(),lastEventAt:Date.now()}}),l=e=>eH(t=>{let n=Date.now(),r={byNode:{...t.byNode},byResource:{...t.byResource},byResourceName:{...t.byResourceName},resourceVersion:t.resourceVersion};return e(r),function(e,t){let n=e=>{let n={};for(let[r,o]of Object.entries(e))t-o.ts<4e3&&(n[r]=o);return n};return{byNode:n(e.byNode),byResource:n(e.byResource),byResourceName:n(e.byResourceName),resourceVersion:e.resourceVersion}}(r,n)});if(null!=e.laneIndex)switch(eB(t=>(function(e,t){var n,r,o,a,l,i;let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),d=t.laneIndex,c=t.laneCount;if(null==d||null==c)return e;let u=("subflow:start"===t.type||"subflow:done"===t.type)&&1===t.depth;if(u&&"subflow:start"===t.type){let a=null==(n=t.node)?void 0:n.nodeId,l=e.ownerNodeId&&a&&e.ownerNodeId!==a?{}:{...e.byIndex};return tn(l,c,s),l[d]={laneIndex:d,laneCount:c,label:t.laneTitle||function(e,t,n){let r=e.subflowName||e.subflowId;return r?"".concat(r," ").concat(t+1,"/").concat(n):"Lane ".concat(t+1,"/").concat(n)}(t,d,c),laneConversationId:null!=(o=t.laneConversationId)?o:null==(r=l[d])?void 0:r.laneConversationId,status:"running",lastEventAt:s},{ownerNodeId:null!=a?a:e.ownerNodeId,byIndex:l}}if(u&&"subflow:done"===t.type){let n={...e.byIndex};tn(n,c,s);let r=n[d];return n[d]={...r,label:r.label&&"pending"!==r.status?r.label:t.laneTitle||r.label,laneConversationId:null!=(l=r.laneConversationId)?l:t.laneConversationId,status:t.status,activity:void 0,lastEventAt:s},{ownerNodeId:null!=(i=e.ownerNodeId)?i:null==(a=t.node)?void 0:a.nodeId,byIndex:n}}let p=function(e){switch(e.type){case"node:enter":var t,n;return(null==(t=e.node)?void 0:t.nodeName)||(null==(n=e.node)?void 0:n.nodeId)||void 0;case"tool:call":return e.name;case"tool:progress":return e.message?"".concat(e.name," — ").concat(e.message):e.name;case"subflow:start":return"↳ ".concat(e.subflowName||e.subflowId);case"handoff":return"→ ".concat(e.toNodeId);default:return}}(t);if(void 0===p)return e;let f=e.byIndex[d];if(f&&f.activity===p&&"pending"!==f.status||f&&("completed"===f.status||"error"===f.status))return e;let h={...e.byIndex};tn(h,c,s);let g=h[d];return h[d]={...g,status:"pending"===g.status?"running":g.status,activity:p,lastEventAt:s},{ownerNodeId:e.ownerNodeId,byIndex:h}})(t,e)),e.type){case"node:enter":if(null==(t=e.node)?void 0:t.nodeId){let t=e.node.nodeId;l(e=>{e.byNode[t]={kind:"active",ts:Date.now()}})}a({});return;case"tool:call":case"tool:progress":case"subflow:start":case"handoff":a({});return}switch(e.type){case"run:start":eL({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),eH(tz),eB(tt),e.conversationId&&(tC(e.conversationId,"running"),e3(e.conversationId,!1));break;case"message":{let t=e.message;a({}),F(n=>{let r;if(!n||n.id!==e.conversationId)return n;let o=n.messages.findIndex(e=>e.id===t.id);return o>=0?(r=[...n.messages])[o]={...r[o],...t}:r=[...n.messages,t],{...n,messages:r}});break}case"usage":eL(t=>{var n,r,o;return{totalTokens:(null!=(n=null==t?void 0:t.totalTokens)?n:0)+(e.totalTokens||0),activeNode:null!=(r=null==t?void 0:t.activeNode)?r:null,startedAt:null!=(o=null==t?void 0:t.startedAt)?o:Date.now(),lastEventAt:Date.now()}});break;case"node:enter":if(a({activeNode:(null==(n=e.node)?void 0:n.nodeName)||(null==(r=e.node)?void 0:r.nodeId)||null}),null==(o=e.node)?void 0:o.nodeId){let t=e.node.nodeId;l(e=>{e.byNode[t]={kind:"active",ts:Date.now()}})}break;case"resource:read":case"resource:write":{let t="resource:read"===e.type?"read":"write";l(n=>{var r;let o=Date.now();(null==(r=e.node)?void 0:r.nodeId)&&(n.byNode[e.node.nodeId]={kind:"read"===t?"resource-read":"resource-write",ts:o}),e.server&&e.uri&&(n.byResource[tR(e.server,e.uri)]={kind:t,ts:o}),e.name&&(n.byResourceName[e.name]={kind:t,ts:o}),"write"===t&&(n.resourceVersion=n.resourceVersion+1)}),a({});break}case"tool:call":a({activeNode:e.name});break;case"tool:progress":a({activeNode:e.message?"".concat(e.name," — ").concat(e.message):e.name});break;case"subflow:start":a({activeNode:"↳ ".concat(e.subflowName||e.subflowId)});break;case"handoff":a({activeNode:"→ ".concat(e.toNodeId)});break;case"run:awaiting_approval":e.conversationId&&e.conversationId===e$.current&&em(e.pendingToolCalls||[]),e.conversationId&&tC(e.conversationId,"awaiting_tool_approval");break;case"breakpoint:hit":case"run:paused":K(!1),e.conversationId&&(Z(e.conversationId,!1),tC(e.conversationId,"paused_debug")),ej(!0);break;case"run:done":if(e.conversationId&&(Z(e.conversationId,!1),tC(e.conversationId,e.status)),e.conversationId&&td.current&&e.conversationId!==td.current)break;eL(null),eH(tz),eB(tt),K(!1),eV(null),tk(),e.conversationId&&e.conversationId===e$.current?tu(e.conversationId):tc(void 0,{silent:!0});break;case"error":er(e.message||"Execution error");break;default:a({})}},[tk,tu,tc,Z,tC,e3]),tN=(0,o.useCallback)((e,t)=>(tk(),eZ.current=void 0!==t?t-1:-1,eB(tt),new Promise(n=>{let r=!1,o=()=>{r||(r=!0,n())};try{eX.current=nc.subscribeToEvents(e,{onEvent:tT,onOpen:o},t),setTimeout(o,1500)}catch(t){nu.error("Failed to open execution event stream",{conversationId:e,err:t}),o()}})),[tT,tk]);(0,o.useEffect)(()=>{if(B&&(null==tf?void 0:tf.status)==="running"&&td.current!==B){if(e2.current.has(B))return void nu.debug("Skipping re-attach to a conversation the user just stopped",{conversationId:B});nu.info("Re-attaching to in-progress run",{conversationId:B}),td.current=B,K(!0),eV(B),Z(B,!0),eL(e=>null!=e?e:{totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),tN(B,0)}},[B,null==tf?void 0:tf.status,tN]);let t_=async e=>{nu.debug("Attempting to delete conversation",{conversationId:e}),er(null),e1.current.add(e);let t=e0.current.delete(e);td.current===e&&(tk(),K(!1),eV(null),eL(null),eB(tt)),Z(e,!1),ee(t=>(function(e,t){if(!(t in e))return e;let n={...e};return delete n[t],n})(t,e));let r=n.filter(t=>t.id!==e);a(r);let o=B;B===e&&(r.length>0?(o=r[0].id,nu.debug("Deleted current conversation, selecting next most recent",{nextSelectionId:o})):(o=null,nu.debug("Deleted last conversation, clearing selection")),J(o));try{await nc.deleteConversation(e),nu.info("Successfully deleted conversation on backend",{conversationId:e})}catch(r){nu.error("Error deleting conversation:",{conversationId:e,err:r}),er("Failed to delete conversation ".concat(e,". Please try again.")),e1.current.delete(e),t&&e0.current.add(e),a(n),J(B)}},tD=async e=>{if(nu.debug("Flow selected, attempting to update",{flowId:e,currentConversationId:B}),er(null),!B){nu.warn("Cannot update flow: No conversation selected."),er("Please select a conversation first.");return}M&&M.id===B&&F({...M,flowId:e,updatedAt:Date.now()}),a(t=>t.map(t=>t.id===B?{...t,flowId:e,updatedAt:Date.now()}:t).sort((e,t)=>t.updatedAt-e.updatedAt));try{let t=await nc.updateConversationFlow(B,e);nu.info("Successfully updated flowId on backend",{conversationId:B,flowId:e}),F(e=>e&&e.id===B?(nu.debug("Confirming detailedConversation update from server response",{conversationId:B,flowId:t.flowId}),{...e,flowId:t.flowId,updatedAt:t.updatedAt}):(nu.debug("Skipping detailedConversation update, ID mismatch or null state",{currentDetailedId:null==e?void 0:e.id,targetId:B}),e)),a(e=>e.map(e=>e.id===B?t:e).sort((e,t)=>t.updatedAt-e.updatedAt))}catch(o){nu.error("Error updating flowId on backend:",{conversationId:B,flowId:e,err:o});let r="Failed to update the selected flow.";if(o instanceof nl){var t;r+=" Error: ".concat((null==(t=o.body)?void 0:t.error)||o.message)}else o instanceof Error&&(r+=" Error: ".concat(o.message));er(r),F(M),a(n)}},tP=()=>{var e,t;ep(null!=(t=null!=(e=null==M?void 0:M.title)?e:null==tf?void 0:tf.title)?t:""),ec(!0)},tO=async()=>{var e,t;if(ec(!1),!B)return;let n=null!=(t=null!=(e=null==M?void 0:M.title)?e:null==tf?void 0:tf.title)?t:"",r=eu.trim().slice(0,200);if(r&&r!==n){F(e=>e&&e.id===B?{...e,title:r}:e),a(e=>e.map(e=>e.id===B?{...e,title:r}:e));try{let e=await nc.updateConversationTitle(B,r);F(t=>t&&t.id===B?{...t,title:e.title}:t),a(t=>t.map(t=>t.id===B?{...t,title:e.title}:t))}catch(e){nu.warn("Failed to rename conversation",{conversationId:B,err:e}),F(e=>e&&e.id===B?{...e,title:n}:e),a(e=>e.map(e=>e.id===B?{...e,title:n}:e)),er("Failed to rename the conversation.")}}},tM=async function(e){var t;let n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=arguments.length>2?arguments[2]:void 0;if(!e.trim()&&0===r.length)return;if(!M){nu.error("Cannot send message, detailed conversation not loaded."),er("Cannot send message: conversation details not loaded.");return}if(!(null==o?void 0:o.fromQueue)&&Y.has(M.id)){let t={id:(0,e6.A)(),content:e,attachments:r,nodeOverride:null!=ey?ey:null,timestamp:Date.now()};ee(e=>{var n;return n=M.id,{...e,[n]:[...e7(e,n),t]}}),eb(null),nu.debug("Run in progress — queued message",{conversationId:M.id,queuedId:t.id});return}nu.debug("Sending message",{conversationId:M.id,contentLength:e.length,attachmentsCount:r.length});let a=M.messages,l=!a.some(e=>"user"===e.role),i=M.flowId,s=(null==o?void 0:o.fromQueue)?null!=(t=o.nodeOverride)?t:null:ey;if(s)n=s,(null==o?void 0:o.fromQueue)||eb(null),nu.debug("Assigning manually picked node ID to user message: ".concat(n));else if(l){let e=nt(eo.find(e=>e.id===i));e?(n=e.id,nu.debug("Assigning start node ID to first user message: ".concat(n))):nu.warn("Could not find start node for flow ".concat(i,". User message will not have a processNodeId."))}else if((null==tf?void 0:tf.status)==="error"){let e=nt(eo.find(e=>e.id===i));e?(n=e.id,nu.debug("Post-error message: re-driving turn from start node ID: ".concat(n))):nu.warn("Could not find start node for post-error message in flow ".concat(i,". User message will not have a processNodeId."))}else{for(let e=a.length-1;e>=0;e--){let t=a[e];if("assistant"===t.role&&t.processNodeId){n=t.processNodeId,nu.debug("Assigning last assistant node ID to user message: ".concat(n));break}}if(!n){let e=nt(eo.find(e=>e.id===i));e?(n=e.id,nu.debug("No prior assistant node ID found, falling back to start node ID: ".concat(n))):nu.warn("Could not find start node for fallback in flow ".concat(i,". User message will not have a processNodeId."))}}let d={id:(0,e6.A)(),role:"user",content:e,timestamp:Date.now(),attachments:r.length>0?r:void 0,processNodeId:n},c={...M,messages:[...M.messages,d]};tI(c),c.flowId?await tW(c):(er("Please select a flow for this conversation before sending messages"),F(M))},tF=(0,o.useCallback)((e,t)=>{nu.verbose("Handling API response data",JSON.stringify(e)),Z(t,"running"===e.status);let n=td.current===t,r=e$.current===t;if("paused_debug"===e.status&&e.debugState)return(nu.info("API Response: Paused for debugging",{conversationId:t}),r)?(eS(e.debugState),ej(!0),ek(!0),K(!1),eV(null),tk(),tL(),F(n=>(null==n?void 0:n.id)===t&&e.debugState.messages&&JSON.stringify(n.messages)!==JSON.stringify(e.debugState.messages)?(nu.debug("Updating detailed conversation messages from debug state"),{...n,messages:e.debugState.messages,updatedAt:e.debugState.updatedAt}):n),a(n=>n.map(n=>{var r,o;return n.id===t?{...n,title:null!=(r=e.debugState.title)?r:n.title,flowId:null!=(o=e.debugState.flowId)?o:n.flowId,status:"paused_debug",updatedAt:e.debugState.updatedAt}:n}).sort((e,t)=>t.updatedAt-e.updatedAt))):(tC(t,"paused_debug"),n&&(K(!1),eV(null),tk(),tL())),!0;if(("completed"===e.status||"error"===e.status)&&r?(nu.info("API Response: Execution completed or errored (Status: ".concat(e.status,"). Hiding debugger panel."),{conversationId:t}),ej(!1),eS(null),ek(!1)):nu.debug("API Response: Status is '".concat(e.status,"'. Debugger panel visibility unchanged (currently ").concat(ew?"visible":"hidden",")."),{conversationId:t}),e.messages&&e.conversation_id===t){let n=e.messages.map((e,n)=>"number"!=typeof e.timestamp||isNaN(e.timestamp)?(nu.warn("Invalid timestamp found in message index ".concat(n," from API response. Defaulting to Date.now()."),{conversationId:t,messageId:e.id,invalidTimestamp:e.timestamp}),{...e,timestamp:Date.now()}):e);F(r=>{var o,a;let l=r;return(null==r?void 0:r.id)===t&&JSON.stringify(r.messages)!==JSON.stringify(n)&&(nu.info("API Response/Polling: Updating detailed conversation messages",{conversationId:t,newMessageCount:n.length}),l={...r,messages:n,updatedAt:e.updatedAt||r.updatedAt}),nu.debug("Polling: setDetailedConversation callback executed.",{conversationId:t,messagesChanged:l!==r,newMessageCount:null!=(a=null==l||null==(o=l.messages)?void 0:o.length)?a:"N/A"}),l})}if("awaiting_tool_approval"===e.status)nu.info("API Response/Polling: Pausing for tool approval",{conversationId:t}),r&&em(e.pendingToolCalls||[]),n&&(K(!1),eV(null),tk(),tL());else if("completed"===e.status||"error"===e.status){if(nu.info("API Response/Polling: Stopping due to final status",{conversationId:t,status:e.status}),n&&(tL(),K(!1),eV(null),tk()),"error"===e.status){var o,l;let a=(null==(o=e.error)?void 0:o.message)||(null==(l=e.lastResponse)?void 0:l.error)||"Unknown error during execution";nf.test(a)||e2.current.has(t)?(e3(t,!0),(n||r)&&er(null),nu.info("API Response/Polling: Execution cancelled by user",{conversationId:t})):(er(a),nu.error("API Response/Polling: Execution resulted in error",{conversationId:t,error:e.error||e.lastResponse}))}tu(t)}else"running"!==e.status||ew?r&&em(null):(r&&em(null),n&&!eQ.current&&K(!0));return e.conversation_id===t&&a(n=>n.map(n=>{var r,o,a;return n.id===t?{...n,title:null!=(r=e.title)?r:n.title,flowId:null!=(o=e.flowId)?o:n.flowId,status:null!=(a=e.status)?a:n.status,updatedAt:e.updatedAt||n.updatedAt}:n}).sort((e,t)=>t.updatedAt-e.updatedAt)),!1},[F,em,K,er,ej,eS,a,tu,tk,Z,tC,e3]),tL=()=>{eQ.current&&(nu.debug("Stopping polling interval"),clearInterval(eQ.current),eQ.current=null)};(0,o.useEffect)(()=>()=>{tk()},[tk]);let tW=async e=>{if(!(null==e?void 0:e.id)||!e.flowId||!eY.current)return nu.error("Cannot send to completions: Missing conversation ID or flow ID.",{id:null==e?void 0:e.id,flowId:null==e?void 0:e.flowId}),er("Cannot send message: Missing conversation ID or flow ID."),!1;em(null),er(null),K(!0),eV(e.id),Z(e.id,!0),e3(e.id,!1);let t=e0.current.delete(e.id);eL({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),await tN(e.id);let n=!1;try{let t;if(Q(e.flowId))t="flow-Quick Chat",nu.debug("Sending quick chat to completions",{flowId:e.flowId,conversationId:e.id});else{let n=await tE.g.getFlow(e.flowId);if(!n)throw Error("Flow with ID ".concat(e.flowId," not found"));t="flow-".concat(n.name),nu.debug("Sending to chat completions",{flowId:e.flowId,flowName:n.name,conversationId:e.id})}let r=e.messages.filter(e=>{var t;return!e.disabled&&!((null!=(t=e.depth)?t:0)>0)}).map(e=>{let t=np(e),n=e.processNodeId,r={id:e.id,timestamp:e.timestamp};return"user"===e.role?{role:"user",content:t,...r,processNodeId:n}:"assistant"===e.role?{role:"assistant",content:t,tool_calls:e.tool_calls,...r,processNodeId:n}:"system"===e.role?{role:"system",content:t,...r,processNodeId:n}:"tool"===e.role?e.tool_call_id?{role:"tool",content:t,tool_call_id:e.tool_call_id,...r,processNodeId:n}:{role:"user",content:"string"==typeof t?"Tool result: ".concat(t):t,...r,processNodeId:n}:{role:"user",content:t,...r,processNodeId:n}}),o=await eY.current.chat.completions.create({model:t,messages:r,stream:!1,metadata:(()=>{let t={flujo:"true",requireApproval:el?"true":void 0,flujodebug:ef?"true":void 0,conversationId:e.id},n={};return t.flujo&&(n.flujo=t.flujo),t.requireApproval&&(n.requireApproval=t.requireApproval),t.flujodebug&&(n.flujodebug=t.flujodebug),t.conversationId&&(n.conversationId=t.conversationId),n})()});nu.debug("Chat completion initial response received",{completionId:o.id}),n=!0;let a={...o,status:o.status||"completed",conversation_id:e.id,messages:o.messages||e.messages,pendingToolCalls:o.pendingToolCalls,debugState:o.debugState,error:o.error,lastResponse:o.lastResponse,updatedAt:o.updatedAt||Date.now()},l=tF(a,e.id);l||eQ.current?l&&nu.debug("Debug state handled, polling remains stopped."):nu.debug("Starting polling after initial non-debug response.")}catch(a){if(nh(a)||e2.current.has(e.id))return nu.info("Chat completion cancelled by user",{conversationId:e.id}),n=!1,Z(e.id,!1),e3(e.id,!0),td.current===e.id&&(tL(),K(!1),eV(null),tk(),er(null)),n;nu.error("Error calling chat completions API:",a),n=!1;let o="An error occurred while sending the message.";if(a instanceof no.LG)o="API Error: ".concat(a.message," (Status: ").concat(a.status,")"),a.code&&(o+=" (Code: ".concat(a.code,")")),a.type&&(o+=" [Type: ".concat(a.type,"]")),nu.verbose("APIError details",JSON.stringify(a));else if(a instanceof no.vc){o="OpenAI Error: ".concat(a.message);let e=a.error;e&&"object"==typeof e&&(e.code&&(o+=" (Code: ".concat(e.code,")")),e.type&&(o+=" [Type: ".concat(e.type,"]"))),nu.verbose("OpenAIError details",JSON.stringify(a))}else if(a instanceof nl){var r;o="Error: ".concat((null==(r=a.body)?void 0:r.error)||a.message),a.status&&(o+=" (Status: ".concat(a.status,")")),nu.verbose("ChatApiError details",JSON.stringify(a.body))}else a instanceof Error&&(o=a.message);er(o),Z(e.id,!1),td.current===e.id&&(tL(),K(!1),eV(null),tk()),t&&e0.current.add(e.id)}finally{}return n},tH=async(e,t,n)=>{if(!M)return;nu.debug("Editing message",{messageId:e,contentLength:t.length,processNodeId:n});let r=M.messages.findIndex(t=>t.id===e);if(-1===r)return;let o={...M.messages[r],content:t,timestamp:Date.now(),processNodeId:n||void 0},a=[...M.messages.slice(0,r),o],l={...M,messages:a};if(tI(l),l.flowId){let e={flujo:"true",requireApproval:el?"true":void 0,flujodebug:ef?"true":void 0,conversationId:l.id,processNodeId:n||void 0};if(!eY.current)return;er(null),K(!0),eV(l.id),Z(l.id,!0),e3(l.id,!1),eL({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),await tN(l.id);try{let t=await tE.g.getFlow(l.flowId);if(!t)throw Error("Flow with ID ".concat(l.flowId," not found"));let n=l.messages.filter(e=>{var t;return!e.disabled&&!((null!=(t=e.depth)?t:0)>0)}).map(e=>{let t=np(e),n={id:e.id,timestamp:e.timestamp,processNodeId:e.processNodeId};return"user"===e.role?{role:"user",content:t,...n}:"assistant"===e.role?{role:"assistant",content:t,tool_calls:e.tool_calls,...n}:"system"===e.role?{role:"system",content:t,...n}:"tool"===e.role?e.tool_call_id?{role:"tool",content:t,tool_call_id:e.tool_call_id,...n}:{role:"user",content:"string"==typeof t?"Tool result: ".concat(t):t,...n}:{role:"user",content:t,...n}}),r=await eY.current.chat.completions.create({model:"flow-".concat(t.name),messages:n,stream:!1,metadata:(()=>{let t={};return e.flujo&&(t.flujo=e.flujo),e.requireApproval&&(t.requireApproval=e.requireApproval),e.flujodebug&&(t.flujodebug=e.flujodebug),e.conversationId&&(t.conversationId=e.conversationId),e.processNodeId&&(t.processNodeId=e.processNodeId),t})()}),o={...r,status:r.status||"completed",conversation_id:l.id,messages:r.messages||l.messages,pendingToolCalls:r.pendingToolCalls,debugState:r.debugState,error:r.error,updatedAt:r.updatedAt||Date.now()};tF(o,l.id)}catch(e){nh(e)||e2.current.has(l.id)?(nu.info("Edited-message run cancelled by user",{conversationId:l.id}),e3(l.id,!0)):(nu.error("Error sending edited message:",e),er(e instanceof Error?e.message:"Failed to send edited message")),Z(l.id,!1),td.current===l.id&&(K(!1),eV(null),tk())}}},tU=async(e,t)=>{if(B){nu.info("Handling tool response: ".concat(e),{conversationId:B,toolCallId:t}),em(null),K(!0),eV(B),Z(B,!0),er(null),await tN(B);try{let n=await nc.respondToToolCall(B,e,t);nu.debug("Tool response successful",{conversationId:B,action:e,toolCallId:t}),tF(n,B)}catch(o){if(nh(o)||e2.current.has(B)){nu.info("Tool-response resume cancelled by user",{conversationId:B}),e3(B,!0),td.current===B&&K(!1),Z(B,!1);return}nu.error("Error sending tool response (".concat(e,")"),{conversationId:B,toolCallId:t,err:o});let r="Failed to ".concat(e," tool call.");if(o instanceof nl){var n;r+=" Error: ".concat((null==(n=o.body)?void 0:n.error)||o.message)}else o instanceof Error&&(r+=" Error: ".concat(o.message));er(r),td.current===B&&K(!1),Z(B,!1)}}},tB=async()=>{if(B&&ew){nu.info("Handling debug step request",{conversationId:B}),K(!0),eV(B),Z(B,!0),er(null),await tN(B);try{let e=await nc.debugStep(B);tF(e,B)}catch(e){nu.error("Error during debug step API call",{conversationId:B,err:e}),er(e instanceof Error?e.message:"Failed to execute debug step."),K(!1),Z(B,!1),ej(!1),eS(null)}finally{}}},tJ=async()=>{if(B&&ew){nu.info("Handling debug continue request",{conversationId:B}),K(!0),eV(B),Z(B,!0),er(null),ej(!1),await tN(B);try{let e=await nc.debugContinue(B);tF(e,B)}catch(e){nu.error("Error during debug continue API call",{conversationId:B,err:e}),er(e instanceof Error?e.message:"Failed to continue execution."),K(!1),Z(B,!1)}finally{}}};(0,o.useEffect)(()=>{if(eA){var e;eq(null!=(e=eA.breakpoints)?e:[])}},[eA]);let tq=(0,o.useCallback)(async e=>{if(!B)return;let t=eJ.includes(e)?eJ.filter(t=>t!==e):[...eJ,e];eq(t);try{await nc.setBreakpoints(B,t)}catch(e){nu.error("Failed to update breakpoints",{conversationId:B,err:e}),eq(eJ)}},[eJ,B]),tG=async()=>{if(!B||!ew)return;let e=null==eA?void 0:eA.currentNodeId;K(!0),eV(B),Z(B,!0),er(null),await tN(B);try{for(let o=0;o<50;o++){var t,n,r;let o=await nc.debugStep(B),a=null!=(r=null==o?void 0:o.status)?r:null==o||null==(t=o.debugState)?void 0:t.status,l=null==o||null==(n=o.debugState)?void 0:n.currentNodeId;if("paused_debug"!==a||l&&l!==e)return void tF(o,B)}nu.warn("Step Over hit iteration cap",{conversationId:B}),K(!1),Z(B,!1)}catch(e){nu.error("Error during step over",{conversationId:B,err:e}),er(e instanceof Error?e.message:"Failed to step over."),K(!1),Z(B,!1)}},tV=async()=>{if(B){nu.info("Cancelling request",{conversationId:B}),tL(),K(!1),eV(null),Z(B,!1),e3(B,!0),ek(!1),tk(),em(null),er(null);try{await nc.cancel(B),nu.debug("Cancel request sent successfully",{conversationId:B}),await tu(B)}catch(e){nu.error("Error sending cancel request",{conversationId:B,err:e}),er("Failed to send cancel request to the server.")}}},tK=async e=>{if(e===B)return void await tV();nu.info("Stopping background conversation",{conversationId:e}),e3(e,!0);try{await nc.cancel(e),Z(e,!1),await tc(void 0,{silent:!0})}catch(t){nu.error("Error stopping background conversation",{conversationId:e,err:t}),er("Failed to send cancel request to the server.")}},tY=async()=>{nu.info("Closing debugger panel",{conversationId:B}),ej(!1),eS(null),ek(!1),await tV()};nu.debug("Rendering Chat component",{currentConversationId:B,isHandleEditMessageDefined:!0});let tQ=(eI||ew)&&!!eA&&!!B,tX=(null==tf?void 0:tf.status)==="awaiting_tool_approval"||!!eg,tZ=!(tX||(null==tf?void 0:tf.status)==="paused_debug")&&(V&&eG===B||!!B&&Y.has(B)||(null==tf?void 0:tf.status)==="running"),t$=!tZ&&!!B&&e5.has(B);return(0,o.useEffect)(()=>{if(!B||et.current||!M||M.id!==B)return;let e=e7($,B)[0];if(!e||!function(e){return!e.running&&!e.pendingApproval&&!e.debugPaused&&!e.hasError&&!e.stopped}({running:Y.has(B),pendingApproval:!!eg,debugPaused:ew,hasError:(null==tf?void 0:tf.status)==="error",stopped:t$}))return;et.current=!0,ee(e=>(function(e,t){let n=e7(e,t);if(0===n.length)return{queues:e,head:void 0};let[r,...o]=n,a={...e};return o.length>0?a[t]=o:delete a[t],{queues:a,head:r}})(e,B).queues);let t=setTimeout(()=>{et.current=!1,tM(e.content,e.attachments,{fromQueue:!0,nodeOverride:e.nodeOverride})},0);return()=>clearTimeout(t)},[B,M,$,Y,eg,ew,null==tf?void 0:tf.status,t$]),(0,r.jsxs)(i.default,{sx:{display:"flex",height:"calc(100vh - 64px)"},children:[eD&&(0,r.jsx)(i.default,{sx:{width:40,flexShrink:0,borderRight:1,borderColor:"divider",display:"flex",justifyContent:"center",pt:1},children:(0,r.jsx)(s.A,{title:"Show conversation sidebar",children:(0,r.jsx)(d.A,{size:"small",onClick:eO,"aria-label":"Show conversation sidebar",children:(0,r.jsx)(E.A,{fontSize:"small"})})})}),!eD&&(0,r.jsx)(i.default,{sx:{width:eR,flexShrink:0,borderRight:1,borderColor:"divider",display:"flex",flexDirection:"column"},children:_?(0,r.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",p:2},children:(0,r.jsx)(nn.default,{size:"medium",color:"primary"})}):P?(0,r.jsx)(c.A,{severity:"error",sx:{m:2},children:P}):(0,r.jsx)(ei,{conversations:n,flowNames:tm,currentConversationId:B,onSelectConversation:J,onDeleteConversation:t_,onStopConversation:tK,onNewConversation:tb,onQuickChat:()=>tA(!0),onCollapse:eO})}),!eD&&(0,r.jsx)(i.default,{onPointerDown:eM,sx:{width:"6px",flexShrink:0,cursor:"col-resize",bgcolor:"divider",transition:"background-color 120ms","&:hover":{bgcolor:"primary.main"},touchAction:"none"},"aria-label":"Resize conversation sidebar"}),(0,r.jsxs)(i.default,{sx:{flex:1,height:"100%",display:"flex",minWidth:0,minHeight:0},children:[(0,r.jsxs)(i.default,{sx:{flex:1,minWidth:0,display:"flex",flexDirection:"column",height:"100%"},children:[B&&(0,r.jsx)(i.default,{sx:{px:2,pt:2,pb:1,display:"flex",alignItems:"center",gap:1,minWidth:0},children:ed?(0,r.jsx)(u.A,{value:eu,onChange:e=>ep(e.target.value),onBlur:tO,onKeyDown:e=>{"Enter"===e.key?(e.preventDefault(),tO()):"Escape"===e.key&&ec(!1)},size:"small",autoFocus:!0,fullWidth:!0,inputProps:{maxLength:200,"aria-label":"Conversation title"}}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(p.default,{variant:"h6",noWrap:!0,onClick:tP,title:(null==M?void 0:M.title)||(null==tf?void 0:tf.title)||"",sx:{flex:1,minWidth:0,cursor:"text"},children:(null==M?void 0:M.title)||(null==tf?void 0:tf.title)||"Untitled Conversation"}),(0,r.jsx)(s.A,{title:"Rename conversation",children:(0,r.jsx)(d.A,{size:"small",onClick:tP,"aria-label":"Rename conversation",children:(0,r.jsx)(T.A,{fontSize:"small"})})})]})}),B&&(0,r.jsxs)(i.default,{sx:{p:2,borderBottom:1,borderColor:"divider",display:"flex",alignItems:"center",gap:2},children:[(0,r.jsx)(i.default,{sx:{flex:1,minWidth:0},children:Q((null==tf?void 0:tf.flowId)||(null==M?void 0:M.flowId))?(0,r.jsx)(f.A,{color:"primary",variant:"outlined",icon:(0,r.jsx)(A.A,{}),label:"Quick Chat"}):(0,r.jsx)(tg.A,{selectedFlowId:(null==tf?void 0:tf.flowId)||(null==M?void 0:M.flowId)||null,onSelectFlow:e=>{var t,n,r,o;if(!B){nu.warn("Cannot update flow: No conversation selected."),er("Please select a conversation first.");return}Q(e)||G(e);let a=null!=(r=null!=(n=null==M?void 0:M.flowId)?n:null==tf?void 0:tf.flowId)?r:null;if((null!=(o=null==M||null==(t=M.messages)?void 0:t.length)?o:0)>0&&a&&e!==a){nu.debug("Flow switch on executed conversation — asking for confirmation",{flowId:e,currentFlowId:a}),ev(e);return}tD(e)},disabled:ew})}),(()=>{let e=(null==tf?void 0:tf.flowId)||(null==M?void 0:M.flowId)||null;return!e||Q(e)?null:(0,r.jsx)(s.A,{title:"Open this flow in the FlowBuilder",children:(0,r.jsx)(d.A,{color:"primary",onClick:()=>t.push("/flows?flow=".concat(encodeURIComponent(e))),children:(0,r.jsx)(N.A,{})})})})(),(0,r.jsx)(th,{usage:null==M?void 0:M.usage,contextInfo:null==M?void 0:M.contextInfo,availableNodes:tx})]}),(0,r.jsxs)(i.default,{sx:{flex:1,minHeight:0,position:"relative",display:"flex",flexDirection:"column"},children:[(0,r.jsx)(i.default,{ref:e9,onScroll:ti,sx:{flex:1,overflow:"auto",p:2},children:L?(0,r.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,r.jsx)(nn.default,{size:"medium",color:"primary"})}):H?(0,r.jsx)(c.A,{severity:"error",sx:{m:2},children:H}):M?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(eK,{messages:M.messages,pendingToolCalls:eg,availableNodes:tx,conversationId:M.id,onToggleDisabled:e=>{if(!M)return;nu.debug("Toggling message disabled state",{messageId:e});let t=M.messages.map(t=>t.id===e?{...t,disabled:!t.disabled}:t);tI({...M,messages:t})},onSplitConversation:e=>{if(!M)return;nu.debug("Splitting conversation at message",{messageId:e});let t=M.messages.findIndex(t=>t.id===e);if(-1===t)return;let n=M.messages.slice(0,t+1),r=(0,e6.A)(),o={id:r,title:"Split from ".concat(M.title),messages:n,flowId:M.flowId,createdAt:Date.now(),updatedAt:Date.now()},l={id:r,title:o.title,flowId:o.flowId,createdAt:o.createdAt,updatedAt:o.updatedAt};e0.current.add(r),a(e=>[l,...e].sort((e,t)=>t.updatedAt-e.updatedAt)),J(r),F(o),W(!1),U(null)},onEditMessage:tH,onApproveToolCall:e=>{tU("approve",e)},onRejectToolCall:e=>{tU("reject",e)}}),!V&&!ew&&M.messages.length>0&&(null==tf?void 0:tf.status)==="completed"&&(0,r.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,r.jsx)(c.A,{icon:(0,r.jsx)(I.A,{fontSize:"inherit"}),severity:"success",variant:"filled",sx:{borderRadius:2,py:.5},children:"Conversation completed"})}),!V&&!ew&&t$&&(0,r.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,r.jsx)(c.A,{icon:(0,r.jsx)(C.A,{fontSize:"inherit"}),severity:"info",variant:"outlined",sx:{borderRadius:2,py:.5,alignItems:"center"},action:(0,r.jsx)(h.A,{color:"inherit",size:"small",startIcon:(0,r.jsx)(S.A,{}),onClick:()=>tW(M),children:"Resume"}),children:"Conversation stopped"})}),!V&&!ew&&!en&&!t$&&(null==tf?void 0:tf.status)==="error"&&(0,r.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,r.jsx)(c.A,{icon:(0,r.jsx)(k.A,{fontSize:"inherit"}),severity:"error",variant:"filled",sx:{borderRadius:2,py:.5,alignItems:"center"},action:(0,r.jsx)(h.A,{color:"inherit",size:"small",startIcon:(0,r.jsx)(S.A,{}),onClick:()=>{tW(M)},children:"Retry"}),children:"Conversation ended with an error"})}),tZ&&!ew&&(0,r.jsx)(to,{liveStats:eF,lanes:eU,onOpenLane:J,onStop:tV,stopDisabled:!B}),!tZ&&tX&&!ew&&(0,r.jsx)(to,{liveStats:eF,lanes:eU,onOpenLane:J,awaitingApproval:!0,onStop:tV,stopDisabled:!B}),en&&(0,r.jsx)(c.A,{severity:"error",sx:{mt:2},action:(0,r.jsx)(h.A,{color:"inherit",size:"small",startIcon:(0,r.jsx)(S.A,{}),onClick:()=>{M&&tW(M)},children:"Retry"}),children:en})]}):(0,r.jsx)(p.default,{variant:"body1",color:"textSecondary",align:"center",sx:{mt:4},children:n.length>0?"Select a conversation or create a new one.":"Create a new conversation to start chatting."})}),(0,r.jsx)(g.A,{in:tr,unmountOnExit:!0,children:(0,r.jsx)(m.A,{size:"small",color:"primary","aria-label":"Scroll to latest messages",onClick:ts,sx:{position:"absolute",bottom:16,right:24,zIndex:2},children:(0,r.jsx)(j.A,{})})})]}),(0,r.jsxs)(i.default,{sx:{p:2,borderTop:1,borderColor:"divider"},children:[B&&e7($,B).length>0&&(0,r.jsxs)(i.default,{"data-testid":"queued-messages",sx:{mb:1,display:"flex",flexWrap:"wrap",gap:1,alignItems:"center"},children:[(0,r.jsxs)(p.default,{variant:"caption",color:"text.secondary",sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,r.jsx)(z.A,{fontSize:"inherit"})," Queued:"]}),e7($,B).map(e=>(0,r.jsx)(f.A,{size:"small",variant:"outlined",label:e.content.trim().slice(0,40)||(e.attachments.length?"".concat(e.attachments.length," attachment(s)"):"message"),onDelete:()=>ee(t=>(function(e,t,n){let r=e7(e,t),o=r.filter(e=>e.id!==n);if(o.length===r.length)return e;let a={...e};return o.length>0?a[t]=o:delete a[t],a})(t,B,e.id))},e.id))]}),(0,r.jsx)(e4,{onSendMessage:tM,disabled:L||!((null==M?void 0:M.flowId)||(null==tf?void 0:tf.flowId))||!!eg||ew,requireApproval:el,onRequireApprovalChange:tp,executeInDebugger:ef,onExecuteInDebuggerChange:eh,availableNodes:tx,currentNodeId:ty,nodeOverrideActive:!!ey,onSelectNode:eb})]})]})," ",tQ&&eA&&B&&!eT&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.default,{onPointerDown:ez,sx:{width:"6px",flexShrink:0,cursor:"col-resize",bgcolor:"divider",transition:"background-color 120ms","&:hover":{bgcolor:"primary.main"},touchAction:"none"},"aria-label":"Resize debugger panel"}),(0,r.jsx)(i.default,{sx:{width:eC?"".concat(eC,"px"):"50%",minWidth:360,maxWidth:"85vw",flexShrink:0,display:"flex",flexDirection:"column",height:"100%"},children:(0,r.jsx)(ne,{debugState:eA,conversationId:B,liveActivity:eW,onStep:tB,onStepOver:tG,onContinue:tJ,onCancel:tV,isLoading:V,breakpoints:eJ,onToggleBreakpoint:tq,onClose:tY,isExpanded:eT,onToggleExpand:()=>eN(e=>!e)})})]})]})," ",tQ&&eA&&B&&eT&&(0,r.jsx)(x.A,{fullScreen:!0,open:!0,onClose:()=>eN(!1),children:(0,r.jsx)(i.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:(0,r.jsx)(ne,{debugState:eA,conversationId:B,liveActivity:eW,onStep:tB,onStepOver:tG,onContinue:tJ,onCancel:tV,isLoading:V,breakpoints:eJ,onToggleBreakpoint:tq,onClose:tY,isExpanded:eT,onToggleExpand:()=>eN(e=>!e)})})}),(0,r.jsxs)(x.A,{open:!!ex,onClose:()=>ev(null),children:[(0,r.jsx)(v.A,{children:"Switch flow?"}),(0,r.jsx)(y.A,{children:(0,r.jsxs)(b.A,{children:["This conversation has already been processed with its current flow."," ","If you switch to"," ",(0,r.jsx)("strong",{children:(null==(e=eo.find(e=>e.id===ex))?void 0:e.name)||"the selected flow"}),","," ","the conversation will continue processing from that flow's Start node again."]})}),(0,r.jsxs)(w.A,{children:[(0,r.jsx)(h.A,{onClick:()=>ev(null),children:"Cancel"}),(0,r.jsx)(h.A,{variant:"contained",onClick:()=>{ev(null),ex&&tD(ex)},children:"Switch Flow"})]})]}),(0,r.jsx)(tv,{open:tj,onClose:()=>tA(!1),onStart:tS})]})},nm=(0,eF.h)("frontend/components/ClientOnly");function nx(e){let{children:t}=e,[n,a]=(0,o.useState)(!1);return((0,o.useEffect)(()=>(nm.debug("ClientOnly component mounted"),a(!0),()=>{nm.debug("ClientOnly component unmounted")}),[]),n)?(nm.debug("ClientOnly component rendering children"),(0,r.jsx)(r.Fragment,{children:t})):(nm.debug("ClientOnly component rendering null (not yet mounted)"),null)}let nv=(0,eF.h)("app/chat/page");function ny(){return nv.debug("Rendering ChatPage"),(0,r.jsx)(a.A,{maxWidth:!1,disableGutters:!0,children:(0,r.jsx)(nx,{children:(0,r.jsx)(ng,{})})})}},9164:(e,t,n)=>{"use strict";n.r(t),n.d(t,{StorageProvider:()=>p,default:()=>f,useStorage:()=>u});var r=n(95155),o=n(12115),a=n(29692),l=n(1877),i=n(87021),s=n(31373);let d=(0,i.h)("frontend/contexts/StorageContext"),c=(0,o.createContext)({setKey:async()=>{},changeKey:async()=>!1,verifyKey:async()=>!1,isEncryptionInitialized:async()=>!1,globalEnvVars:{},setGlobalEnvVars:async()=>{},deleteGlobalEnvVar:async()=>{},encryptValue:async()=>null,decryptValue:async()=>null,isUserEncryptionEnabled:async()=>!1,isLoading:!0,settings:{speech:{enabled:!0},update:{checkOnStartup:!1}},settingsHydrated:!1,updateSettings:async()=>{}}),u=()=>(0,o.useContext)(c),p=e=>{let{children:t}=e,[n,i]=(0,o.useState)(!1),[u,p]=(0,o.useState)(!1),[f,h]=(0,o.useState)({}),[g,m]=(0,o.useState)({speech:{enabled:!0},update:{checkOnStartup:!1}}),x=(0,o.useCallback)(async()=>{d.debug("isEncryptionInitialized: Entering method");try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_initialized"})});if(!e.ok)throw Error("Failed to check encryption status");let t=await e.json();return!0===t.initialized}catch(e){return d.warn("isEncryptionInitialized: Failed to check encryption status:",e),!1}},[]),v=(0,o.useCallback)(async e=>{d.debug("setKey: Entering method");try{if(!(await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize",password:e})})).ok)throw Error("Failed to set encryption key")}catch(e){d.warn("setKey: Failed to set encryption key:",e)}},[]),y=(0,o.useCallback)(async(e,t)=>{d.debug("changeKey: Entering method");try{let n=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",oldPassword:e,newPassword:t})});if(!n.ok)throw Error("Failed to change encryption key");let r=await n.json();if(r.success&&sessionStorage.getItem("encryption_token")){let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"authenticate",password:t})});if(e.ok){let t=await e.json();t.success&&t.token&&(sessionStorage.setItem("encryption_token",t.token),sessionStorage.setItem("encryption_authenticated","true"),sessionStorage.removeItem("encryption_key"))}}return!0===r.success}catch(e){return d.warn("changeKey: Failed to change encryption key:",e),!1}},[]),b=(0,o.useCallback)(async e=>{d.debug("verifyKey: Entering method");try{let t=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"verify_password",password:e})});if(!t.ok)throw Error("Failed to verify encryption key");let n=await t.json();return n.valid&&n.token&&(sessionStorage.setItem("encryption_token",n.token),sessionStorage.setItem("encryption_authenticated","true"),sessionStorage.removeItem("encryption_key")),!0===n.valid}catch(e){return d.warn("verifyKey: Failed to verify encryption key:",e),!1}},[]),w=(0,o.useCallback)(async()=>{let e={speech:{enabled:!0},update:{checkOnStartup:!1}};try{var t;let n=await fetch("/api/storage?key=".concat(encodeURIComponent(a.Zg.SPEECH_SETTINGS),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(e))));if(!n.ok)return void d.debug("loadSettings: settings read not ok, keeping defaults",{status:n.status});let r=await n.json();d.debug("Loaded settings from storage",{settings:r.value}),m(null!=(t=r.value)?t:e),p(!0)}catch(e){d.warn("loadSettings: failed to load settings:",e)}},[]);(0,o.useEffect)(()=>{let e=()=>{d.info("Encryption unlocked signal received; reloading settings"),w()};return window.addEventListener(s.ZB,e),()=>window.removeEventListener(s.ZB,e)},[w]),(0,o.useEffect)(()=>{(async()=>{d.debug("loadData: Entering method");try{d.info("Calling initialization API to verify storage");let e=await fetch("/api/init");if(e.ok)d.info("Storage initialization completed successfully");else{let t=await e.json();d.warn("Storage initialization warning:",t.error)}await x()||await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize_default"})});let t=await fetch("/api/env?includeSecrets=false");if(t.ok){let e=await t.json();d.debug("Loaded environment variables",{count:Object.keys(e.variables||{}).length}),h(e.variables||{})}else d.error("loadData: Failed to load environment variables"),h({});await w(),i(!0)}catch(e){d.error("loadData: Error loading data:",e),i(!0)}})()},[x,w]);let j=(0,o.useCallback)(async(e,t)=>{d.debug("encryptValue: Entering method");try{let n=sessionStorage.getItem("encryption_token"),r=sessionStorage.getItem("encryption_key"),o={action:"encrypt",data:e};n?o.token=n:t?o.password=t:r&&(o.password=r);let a=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!a.ok)throw Error("Failed to encrypt value");return(await a.json()).result}catch(e){return d.warn("encryptValue: Failed to encrypt value:",e),null}},[]),A=(0,o.useCallback)(async(e,t)=>(d.debug("decryptValue: Entering method - THIS METHOD IS DEPRECATED"),d.warn("decryptValue: Frontend decryption is deprecated for security reasons"),null),[]),S=(0,o.useCallback)(async()=>{d.debug("isUserEncryptionEnabled: Entering method");try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_user_encryption"})});if(!e.ok)throw Error("Failed to check user encryption status");let t=await e.json();return!0===t.userEncryption}catch(e){return d.warn("isUserEncryptionEnabled: Failed to check user encryption status:",e),!1}},[]),I=(0,o.useCallback)(async e=>{d.debug("setGlobalEnvVars: Entering method");try{await x()||await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize_default"})});let t=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"setAll",variables:e})});if(!t.ok){let e=await t.json();d.error("setGlobalEnvVars: Failed to set environment variables:",e.error);return}let n={};for(let[t,r]of Object.entries(e)){let e="object"==typeof r&&null!==r&&"value"in r?r.value:r,o="object"==typeof r&&null!==r&&"metadata"in r?r.metadata:{isSecret:(0,l.xc)(t)};o.isSecret?n[t]={value:"********",metadata:o}:n[t]={value:e,metadata:o}}h(n)}catch(e){d.error("setGlobalEnvVars: Error setting environment variables:",e)}},[x]),k=(0,o.useCallback)(async e=>{d.debug("deleteGlobalEnvVar: Deleting environment variable: ".concat(e));try{let t=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"delete",key:e})});if(!t.ok){let e=await t.json();d.error("deleteGlobalEnvVar: Failed to delete environment variable:",e.error);return}h(t=>{let n={...t};return delete n[e],n})}catch(e){d.error("deleteGlobalEnvVar: Error deleting environment variable:",e)}},[]),C=(0,o.useCallback)(async e=>{d.debug("updateSettings: Updating settings",{newSettings:e});try{await (0,a.VH)(a.Zg.SPEECH_SETTINGS,e),m(e)}catch(e){d.error("updateSettings: Error updating settings:",e)}},[]);return(0,r.jsx)(c.Provider,{value:{setKey:v,changeKey:y,verifyKey:b,isEncryptionInitialized:x,globalEnvVars:f,setGlobalEnvVars:I,deleteGlobalEnvVar:k,encryptValue:j,decryptValue:A,isUserEncryptionEnabled:S,isLoading:!n,settings:g,settingsHydrated:u,updateSettings:C},children:t})},f=c},27156:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var r=function(e){return e.MODELS="models",e.FLOWS="flows",e.CHAT_HISTORY="history",e.THEME="theme",e.ENCRYPTION_KEY="encryption_key",e.MCP_SERVERS="mcp_servers",e.GLOBAL_ENV_VARS="global_env_vars",e.CURRENT_CONVERSATION_ID="current_conversation_id",e.SELECTED_FLOW_ID="selected_flow_id",e.LAST_PICKED_FLOW_ID="last_picked_flow_id",e.SPEECH_SETTINGS="speech_settings",e.SPOTLIGHT_SERVERS="spotlight_servers",e.PLANNED_EXECUTIONS="planned_executions",e.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",e.MCP_QUALITY_SETTINGS="mcp_quality_settings",e.RUN_RESOURCE_SETTINGS="run_resource_settings",e.KV_STORE_SETTINGS="kv_store_settings",e.PENDING_APPROVALS="pending_approvals",e.MCP_INTERNAL_OVERRIDES="mcp_internal_overrides",e.PACKAGE_INSTALLS="package_installs",e.EXPERIMENTAL_SETTINGS="experimental_settings",e.REGISTRY_ACCOUNT="registry_account",e.REGISTRY_SETTINGS="registry_settings",e}({})},29692:(e,t,n)=>{"use strict";n.d(t,{Zg:()=>r.Z,YM:()=>s,VH:()=>i,Mj:()=>l});var r=n(27156),o=n(12115);let a=(0,n(87021).h)("utils/storage/frontend.ts");function l(e,t){a.verbose("useLocalStorage: Entering method");let[n,r]=(0,o.useState)(t),[l,i]=(0,o.useState)(!0),s=(0,o.useRef)(n);return(0,o.useEffect)(()=>{s.current=n},[n]),(0,o.useEffect)(()=>{(async()=>{a.verbose("loadValue: Entering method");try{let n=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t)))),o=await n.json();n.ok&&r(o.value)}catch(t){a.warn('Error reading storage key "'.concat(e,'":'),t)}finally{i(!1)}})()},[e]),[n,(0,o.useCallback)(async t=>{a.verbose("setValue: Entering method");try{let n=t instanceof Function?t(s.current):t;if(r(n),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:n})})).ok)throw Error("Failed to save value")}catch(t){a.warn('Error setting storage key "'.concat(e,'":'),t)}},[e]),l]}let i=async(e,t)=>{a.verbose("saveItem: Entering method");try{if(!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:t})})).ok)throw Error("Failed to save item")}catch(e){throw a.error("Error saving to storage:",e),e}},s=async(e,t)=>{a.verbose("loadItem: Entering method");try{let n=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t))));if(!n.ok)throw Error("Failed to load item");return(await n.json()).value}catch(e){return a.error("Error loading from storage:",e),t}}},31373:(e,t,n)=>{"use strict";n.d(t,{UJ:()=>r,ZB:()=>o,bx:()=>l});let r="flujo:encryption-locked",o="flujo:encryption-unlocked",a=!1;function l(){if(a||"function"!=typeof window.fetch)return;a=!0;let e=window.fetch.bind(window);window.fetch=async function(){for(var t=arguments.length,n=Array(t),o=0;o<t;o++)n[o]=arguments[o];let a=await e(...n);return 423===a.status&&function(){try{sessionStorage.removeItem("encryption_authenticated"),sessionStorage.removeItem("encryption_token")}catch(e){}window.dispatchEvent(new CustomEvent(r))}(),a}}},65818:(e,t,n)=>{"use strict";n.d(t,{mO:()=>a,oO:()=>l});var r=n(38459);let o=["stdio","websocket","sse","streamable"];function a(e,t){switch(t){case"name-asc":case"name-desc":return(0,r.po)(e.name);case"status-connected":case"status-disconnected":{let t=e.status;if("connected"===t)return{key:"status:connected",label:"Connected"};if("error"===t)return{key:"status:error",label:"Error"};if("requires_authentication"===t)return{key:"status:auth",label:"Requires authentication"};return{key:"status:disconnected",label:"Disconnected"}}case"transport":{let t=e.transport||"unknown";return{key:"transport:".concat(t),label:({stdio:"Stdio",websocket:"WebSocket",sse:"SSE",streamable:"Streamable HTTP"})[t]||t}}default:return{key:"all",label:"All servers"}}}function l(e,t){let n=(e,n)=>{switch(t){case"name-asc":return e.name.localeCompare(n.name);case"name-desc":return n.name.localeCompare(e.name);case"status-connected":if("connected"===e.status&&"connected"!==n.status)return -1;if("connected"!==e.status&&"connected"===n.status)return 1;return e.name.localeCompare(n.name);case"status-disconnected":if("disconnected"===e.status&&"disconnected"!==n.status)return -1;if("disconnected"!==e.status&&"disconnected"===n.status)return 1;return e.name.localeCompare(n.name);case"transport":{var r,a;let t=o.indexOf(null!=(r=e.transport)?r:""),l=o.indexOf(null!=(a=n.transport)?a:"");if(t!==l)return t-l;return e.name.localeCompare(n.name)}default:return 0}};return[...e].sort((e,t)=>{let r=Number(!!t.favorite)-Number(!!e.favorite);return 0!==r?r:n(e,t)})}},75870:(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var r=n(95155),o=n(12115),a=n(94049),l=n(25635),i=n(4474),s=n(91871),d=n(56900),c=n(90057),u=n(96362),p=n(9226),f=n(68503);let h=e=>{let{selectedFlowId:t,onSelectFlow:n,disabled:h=!1,hideLabel:g=!1}=e,[m,x]=(0,o.useState)([]),[v,y]=(0,o.useState)(!0),[b,w]=(0,o.useState)(null),[j,A]=(0,o.useState)(!1);(0,o.useEffect)(()=>{(async()=>{y(!0),w(null);try{let e=await c.g.loadFlows();x(e)}catch(e){console.error("Error loading flows:",e),w("Failed to load flows")}finally{y(!1)}})()},[]);let S=e=>{n(e),A(!1)},I=async e=>{let t=m.find(t=>t.id===e);if(!t)return;let n=!t.favorite,r={...t,favorite:n||void 0};try{(await c.g.updateFlow(r)).success&&x(t=>t.map(t=>t.id===e?r:t))}catch(e){console.error("Error toggling flow favorite:",e)}},k=(0,f.E)("flows",m),C=e=>({key:e.id,content:(e=>(0,r.jsx)(p.A,{flow:e,selected:e.id===t,onSelect:S,onToggleFavorite:I,pickerMode:!0}))(e)}),E=k.items.map(C),T=k.groups?k.groups.map(e=>({...e,items:e.items.map(C)})):null,N=(()=>{if(!t)return"";let e=m.find(e=>e.id===t);return e?e.name:""})();return(0,r.jsxs)(a.default,{children:[!g&&(0,r.jsx)(l.default,{variant:"subtitle1",gutterBottom:!0,children:"Select Flow"}),v?(0,r.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,r.jsx)(i.default,{size:20}),(0,r.jsx)(l.default,{variant:"body2",color:"text.secondary",children:"Loading flows..."})]}):b?(0,r.jsx)(l.default,{color:"error",variant:"body2",children:b}):0===m.length?(0,r.jsx)(l.default,{variant:"body2",color:"text.secondary",children:"No flows available. Create some flows in the Flow Builder first."}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.A,{variant:"outlined",startIcon:(0,r.jsx)(d.A,{}),onClick:()=>A(!0),disabled:h,sx:{textTransform:"none",maxWidth:"100%"},children:(0,r.jsx)(a.default,{component:"span",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t&&N||"Select a flow"})}),(0,r.jsx)(l.default,{variant:"caption",color:"text.secondary",display:"block",sx:{mt:.5},children:t?'Using "'.concat(N,'" flow for this conversation'):"Select a flow to use for this conversation"}),(0,r.jsx)(u.A,{open:j,onClose:()=>A(!1),title:"Select a flow",description:"Pick the flow this conversation will run.",skeleton:(0,r.jsx)(p.o,{}),emptyMessage:"No flows available. Create some flows in the Flow Builder first.",searchable:!0,searchPlaceholder:"Search flows…",searchTerm:k.searchTerm,onSearchChange:k.setSearchTerm,items:E,groups:T,collapsedKeys:k.collapsedKeys,onToggleGroup:k.toggleGroup})]})]})}},84869:(e,t,n)=>{"use strict";n.d(t,{G:()=>l,S:()=>a});let r=(0,n(87021).h)("frontend/services/transcription/webSpeech"),o=()=>"webkitSpeechRecognition"in window||"SpeechRecognition"in window;async function a(e,t){if(!o())throw Error("Web Speech API is not supported in this browser");r.debug("Starting Web Speech API transcription");try{let n=URL.createObjectURL(e),o=new Audio(n),a=new(window.SpeechRecognition||window.webkitSpeechRecognition);return a.continuous=!0,a.interimResults=!0,(null==t?void 0:t.language)&&(a.lang=t.language),new Promise((e,n)=>{let l="";a.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?l+=r+" ":n+=r}(null==t?void 0:t.onInterimResult)&&t.onInterimResult(l+n),r.debug("Recognition interim result",{finalLength:l.length,interimLength:n.length})},a.onend=()=>{r.debug("Recognition ended",{transcriptLength:l.length}),e(l.trim())},a.onerror=e=>{r.error("Recognition error",{error:e.error}),n(Error("Speech recognition error: ".concat(e.error)))},o.onplay=()=>{a.start(),r.debug("Recognition started")},o.onended=()=>{a.stop(),r.debug("Audio playback ended")},o.onerror=e=>{r.error("Audio playback error",{error:e}),a.stop(),n(Error("Error playing audio"))},o.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 l(){return{supported:o(),message:o()?"Web Speech API is supported":"Web Speech API is not supported in this browser"}}},97206:(e,t,n)=>{Promise.resolve().then(n.bind(n,8852))}},e=>{e.O(0,[3862,2678,4754,9244,3392,1871,7111,2003,9562,488,3272,8470,3077,5866,2822,795,5578,256,3556,8401,9554,3028,2005,2019,7554,812,6669,6691,8441,1255,7358],()=>e(e.s=97206)),_N_E=e.O()}]);
|