flujo-ai 3.28.0 → 3.30.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 +481 -464
- package/.next/app-path-routes-manifest.json +20 -17
- package/.next/build-manifest.json +6 -6
- package/.next/prerender-manifest.json +30 -30
- package/.next/react-loadable-manifest.json +7 -6
- package/.next/required-server-files.json +4 -4
- package/.next/routes-manifest.json +8 -0
- package/.next/server/app/_not-found/page.js +4 -4
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +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.js.nft.json +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.js.nft.json +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 +2 -2
- package/.next/server/app/api/env/route.js.nft.json +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/[id]/versions/[versionId]/route.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/route.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/versions/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.js +2 -1
- package/.next/server/app/api/local-models/capability/route.js.nft.json +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.js +2 -1
- package/.next/server/app/api/local-models/pull/route.js.nft.json +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.js +2 -2
- package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/app-sandbox/route.js +1 -1
- package/.next/server/app/api/mcp/app-sandbox/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/app-sandbox/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/oauth-capability/route.js +1 -1
- package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/oauth-capability/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.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/[id]/route.js +1 -1
- package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/provider/route.js +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 -1
- package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/derive-secrets/route.js +1 -1
- package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/install/route.js +1 -1
- package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/install/status/route.js +1 -1
- package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/installed/route.js +1 -1
- package/.next/server/app/api/packages/installed/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/resolve/route.js +1 -1
- package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/scan-targets/route.js +1 -0
- package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/search/route.js +1 -0
- package/.next/server/app/api/packages/search/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/search/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/uninstall/route.js +1 -1
- package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/route.js +2 -2
- 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 +2 -2
- 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 +2 -2
- 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.js +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route.js.nft.json +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 -1
- package/.next/server/app/api/registry/auth/resend/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/reset/route.js +1 -1
- package/.next/server/app/api/registry/auth/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/route.js +1 -1
- package/.next/server/app/api/registry/auth/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/oauth/callback/route.js +1 -1
- package/.next/server/app/api/registry/oauth/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/oauth/initiate/route.js +1 -1
- package/.next/server/app/api/registry/oauth/initiate/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/publish/route.js +1 -1
- package/.next/server/app/api/registry/publish/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/settings/route.js +1 -1
- package/.next/server/app/api/registry/settings/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/restore/route.js +1 -1
- package/.next/server/app/api/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/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.js +1 -1
- package/.next/server/app/api/storage/route.js.nft.json +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 -9
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +4 -4
- package/.next/server/app/docs/page.js +5 -5
- 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 +2 -39
- 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 +4 -4
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- package/.next/server/app/mcp/page.js +11 -11
- 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 +2 -2
- package/.next/server/app/packages/page.js.nft.json +1 -1
- package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
- package/.next/server/app/packages.html +1 -1
- package/.next/server/app/packages.rsc +4 -4
- package/.next/server/app/page.js +3 -3
- 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 +2 -2
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +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 +4 -4
- 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]/inject/route.js +2 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js.nft.json +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/chat/events/route.js +3 -3
- package/.next/server/app/v1/chat/events/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/events/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 +20 -17
- package/.next/server/chunks/1114.js +1 -1
- package/.next/server/chunks/1226.js +1 -1
- package/.next/server/chunks/1314.js +1 -1
- package/.next/server/chunks/{6529.js → 1578.js} +2 -2
- package/.next/server/chunks/1634.js +1 -0
- package/.next/server/chunks/166.js +5 -5
- package/.next/server/chunks/1690.js +1 -0
- package/.next/server/chunks/2180.js +1 -0
- package/.next/server/chunks/227.js +2 -2
- package/.next/server/chunks/2273.js +2 -0
- package/.next/server/chunks/237.js +1 -0
- package/.next/server/chunks/2695.js +2 -2
- package/.next/server/chunks/2859.js +1 -1
- package/.next/server/chunks/2866.js +2 -0
- package/.next/server/chunks/{7674.js → 3030.js} +1 -1
- package/.next/server/chunks/3128.js +4 -4
- package/.next/server/chunks/{8730.js → 3489.js} +1 -1
- package/.next/server/chunks/3570.js +228 -105
- package/.next/server/chunks/3629.js +1 -1
- package/.next/server/chunks/3912.js +2 -0
- package/.next/server/chunks/3984.js +4 -4
- package/.next/server/chunks/4265.js +1 -1
- package/.next/server/chunks/4366.js +2 -0
- package/.next/server/chunks/4551.js +6 -0
- package/.next/server/chunks/4566.js +6 -0
- package/.next/server/chunks/4671.js +1 -1
- package/.next/server/chunks/4681.js +1 -1
- package/.next/server/chunks/4685.js +1 -0
- package/.next/server/chunks/4771.js +2 -2
- package/.next/server/chunks/4961.js +2 -0
- package/.next/server/chunks/5040.js +53 -0
- package/.next/server/chunks/5067.js +1 -1
- package/.next/server/chunks/544.js +135 -0
- package/.next/server/chunks/5463.js +1 -1
- package/.next/server/chunks/5544.js +5 -5
- package/.next/server/chunks/5548.js +62 -0
- package/.next/server/chunks/5561.js +1 -0
- package/.next/server/chunks/5705.js +1 -0
- package/.next/server/chunks/5708.js +1 -1
- package/.next/server/chunks/5829.js +1 -0
- package/.next/server/chunks/5863.js +37 -0
- package/.next/server/chunks/5880.js +1 -1
- package/.next/server/chunks/6034.js +77 -0
- package/.next/server/chunks/6226.js +6 -0
- package/.next/server/chunks/6404.js +2 -0
- package/.next/server/chunks/6432.js +1 -0
- package/.next/server/chunks/6496.js +1 -0
- package/.next/server/chunks/6793.js +1 -0
- package/.next/server/chunks/694.js +3 -0
- package/.next/server/chunks/701.js +1 -1
- package/.next/server/chunks/7506.js +1 -1
- package/.next/server/chunks/7579.js +4 -4
- package/.next/server/chunks/7634.js +4 -0
- package/.next/server/chunks/7724.js +1 -0
- package/.next/server/chunks/7821.js +1 -1
- package/.next/server/chunks/793.js +15 -5
- package/.next/server/chunks/7969.js +1 -0
- package/.next/server/chunks/{6537.js → 8001.js} +1 -1
- package/.next/server/chunks/8034.js +1 -0
- package/.next/server/chunks/8092.js +1 -0
- package/.next/server/chunks/{8568.js → 8192.js} +1 -1
- package/.next/server/chunks/826.js +2 -0
- package/.next/server/chunks/8298.js +1 -0
- package/.next/server/chunks/8321.js +1 -0
- package/.next/server/chunks/8356.js +1 -0
- package/.next/server/chunks/8366.js +90 -0
- package/.next/server/chunks/8387.js +1 -1
- package/.next/server/chunks/848.js +39 -0
- package/.next/server/chunks/8615.js +1 -0
- package/.next/server/chunks/8645.js +2 -0
- package/.next/server/chunks/8739.js +1 -1
- package/.next/server/chunks/8851.js +1 -0
- package/.next/server/chunks/9174.js +1 -0
- package/.next/server/chunks/9313.js +1 -0
- package/.next/server/chunks/94.js +1 -1
- package/.next/server/chunks/9406.js +2 -2
- package/.next/server/chunks/9509.js +2 -2
- package/.next/server/chunks/9537.js +39 -0
- package/.next/server/chunks/9576.js +2 -0
- package/.next/server/chunks/9671.js +1 -1
- package/.next/server/chunks/9724.js +16 -6
- package/.next/server/chunks/9857.js +1 -0
- package/.next/server/chunks/{3298.js → 9868.js} +2 -2
- package/.next/server/chunks/9957.js +1 -0
- package/.next/server/chunks/9983.js +2 -0
- package/.next/server/edge-instrumentation.js.map +1 -1
- package/.next/server/functions-config-manifest.json +2 -2
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +5 -5
- 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/A9jP2ydtYbqx-IayWP2Sg/_buildManifest.js +1 -0
- package/.next/static/chunks/1496-d478bce7d7c85080.js +1 -0
- package/.next/static/chunks/1572-b663a83bba28a0a1.js +8 -0
- package/.next/static/chunks/1641-e5ff8f112da0a335.js +1 -0
- package/.next/static/chunks/1988-bd73f26184e930c1.js +1 -0
- package/.next/static/chunks/2266-d812473724cc6643.js +1 -0
- package/.next/static/chunks/{8345.bc5534ec13abc9ee.js → 2969.eb9ff8cd2a5034b0.js} +1 -1
- package/.next/static/chunks/3089.a0856f8093b90939.js +1 -0
- package/.next/static/chunks/{2005-f9d38c39f10c321f.js → 3189-fa8ec6d719d5e72b.js} +1 -1
- package/.next/static/chunks/3452-a639f121f2953f50.js +62 -0
- package/.next/static/chunks/3560-5bdceef09b50e1c3.js +1 -0
- package/.next/static/chunks/3659-0ab9580d5ee5deea.js +1 -0
- package/.next/static/chunks/3672-cd86ace43288da79.js +1 -0
- package/.next/static/chunks/3711-0050bb4d345c2c9c.js +1 -0
- package/.next/static/chunks/4147-20897d83b3cd3978.js +39 -0
- package/.next/static/chunks/435-17c79f3b9f8dd38d.js +1 -0
- package/.next/static/chunks/454.5fc2f8eef98483e3.js +1 -0
- package/.next/static/chunks/469-1f043fe082d9f475.js +1 -0
- package/.next/static/chunks/4740-62814d07b2b7f760.js +1 -0
- package/.next/static/chunks/5418-45aa7e646ad024be.js +1 -0
- package/.next/static/chunks/5441-cb0c31de8bce65c3.js +1 -0
- package/.next/static/chunks/6404-86615a5f5ce5c00f.js +1 -0
- package/.next/static/chunks/7445-d8a8be6e451c522e.js +1 -0
- package/.next/static/chunks/{3827-9e9a6e11ef808d90.js → 8041-05830e887c133085.js} +1 -1
- package/.next/static/chunks/812-dfe7ba07ddb7a565.js +1 -0
- package/.next/static/chunks/8404-14ef0345dc401ac5.js +1 -0
- package/.next/static/chunks/8678-c6c6be2672f337f6.js +1 -0
- package/.next/static/chunks/8855-f802599c4af81cca.js +1 -0
- package/.next/static/chunks/9562-5494feecd8c6f7a3.js +1 -0
- package/.next/static/chunks/9581-6d2523fd68a5e3c4.js +1 -0
- package/.next/static/chunks/app/_not-found/page-26055690a2426e22.js +1 -0
- package/.next/static/chunks/app/api/approvals/[id]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/approvals/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/backup/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/browse/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/bugs/enhance/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/cwd/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/encryption/secure/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/env/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/versions/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/compile/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/generate/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/improve/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/quick-chat/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/repair/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/git/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/init/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/local-models/capability/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/local-models/pull/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/local-models/suggest/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/app-sandbox/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/cancel/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/oauth-capability/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/model/[id]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/model/provider/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/model/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/model/test/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/oauth/callback/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/oauth/initiate/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/oauth/reset/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/build/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/derive-secrets/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/install/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/install/status/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/installed/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/resolve/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/scan-targets/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/search/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/uninstall/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/resend/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/reset/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/registry/oauth/callback/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/registry/oauth/initiate/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/registry/publish/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/registry/settings/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/restore/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/runs/active/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/storage/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/update/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/waves/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/webhooks/[id]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/chat/page-558edb21321a32d0.js +1 -0
- package/.next/static/chunks/app/docs/{page-250523af44e96120.js → page-fc30f613607b8a26.js} +1 -1
- package/.next/static/chunks/app/executions/page-e71689c7256af1e8.js +1 -0
- package/.next/static/chunks/app/flows/page-e90e8d7b4c1bd1c8.js +1 -0
- package/.next/static/chunks/app/layout-038b35b382eef11d.js +1 -0
- package/.next/static/chunks/app/mcp/page-6041156fc67ef361.js +1 -0
- package/.next/static/chunks/app/mcp-flows/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/mcp-proxy/[server]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/models/{error-5732fbb053e182c5.js → error-1718b538d6967e56.js} +1 -1
- package/.next/static/chunks/app/models/{loading-57d1c02d0817fc47.js → loading-1687ae86584f5b1b.js} +1 -1
- package/.next/static/chunks/app/models/page-d16f2721e7a93b43.js +1 -0
- package/.next/static/chunks/app/packages/page-c6b0e7aa95bc1064.js +1 -0
- package/.next/static/chunks/app/page-5c7fccd019942d46.js +1 -0
- package/.next/static/chunks/app/settings/page-fb336bb049bab72a.js +1 -0
- package/.next/static/chunks/app/v1/chat/completions/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/events/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/models/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/waves/page-3cf4b47b12662196.js +1 -0
- package/.next/static/chunks/{main-app-faff38c77cb00119.js → main-app-2de821d2899bb841.js} +1 -1
- package/.next/static/chunks/webpack-2d8e0c13c0b865fe.js +1 -0
- package/.next/static/css/30253fcfa8035221.css +1 -0
- package/.next/trace +10 -10
- package/.next/types/app/api/approvals/[id]/route.ts +1 -1
- package/.next/types/app/api/approvals/route.ts +1 -1
- package/.next/types/app/api/backup/route.ts +1 -1
- package/.next/types/app/api/browse/route.ts +1 -1
- package/.next/types/app/api/bugs/enhance/route.ts +1 -1
- package/.next/types/app/api/cwd/route.ts +1 -1
- package/.next/types/app/api/encryption/secure/route.ts +1 -1
- package/.next/types/app/api/env/route.ts +1 -1
- package/.next/types/app/api/flow/[id]/route.ts +1 -1
- package/.next/types/app/api/flow/[id]/versions/[versionId]/route.ts +1 -1
- package/.next/types/app/api/flow/[id]/versions/route.ts +1 -1
- package/.next/types/app/api/flow/compile/route.ts +1 -1
- package/.next/types/app/api/flow/generate/route.ts +1 -1
- package/.next/types/app/api/flow/improve/route.ts +1 -1
- package/.next/types/app/api/flow/prompt-renderer/route.ts +1 -1
- package/.next/types/app/api/flow/quick-chat/route.ts +1 -1
- package/.next/types/app/api/flow/repair/route.ts +1 -1
- package/.next/types/app/api/flow/route.ts +1 -1
- package/.next/types/app/api/git/route.ts +1 -1
- package/.next/types/app/api/init/route.ts +1 -1
- package/.next/types/app/api/local-models/capability/route.ts +1 -1
- package/.next/types/app/api/local-models/pull/route.ts +1 -1
- package/.next/types/app/api/local-models/suggest/route.ts +1 -1
- package/.next/types/app/api/mcp/app-sandbox/route.ts +1 -1
- package/.next/types/app/api/mcp/cancel/route.ts +1 -1
- package/.next/types/app/api/mcp/oauth-capability/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/[name]/prompts/get/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/[name]/prompts/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/[name]/resources/read/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/[name]/resources/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/[name]/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/[name]/status/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/[name]/tools/[toolName]/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/[name]/tools/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/route.ts +1 -1
- package/.next/types/app/api/mcp/test-connection/route.ts +1 -1
- package/.next/types/app/api/mcp/test-connection/stream/route.ts +1 -1
- package/.next/types/app/api/mcp-registry/route.ts +1 -1
- package/.next/types/app/api/mcp-registry/spotlight/route.ts +1 -1
- package/.next/types/app/api/model/[id]/route.ts +1 -1
- package/.next/types/app/api/model/provider/route.ts +1 -1
- package/.next/types/app/api/model/route.ts +1 -1
- package/.next/types/app/api/model/test/route.ts +1 -1
- package/.next/types/app/api/oauth/callback/route.ts +1 -1
- package/.next/types/app/api/oauth/initiate/route.ts +1 -1
- package/.next/types/app/api/oauth/reset/route.ts +1 -1
- package/.next/types/app/api/packages/build/route.ts +1 -1
- package/.next/types/app/api/packages/derive-secrets/route.ts +1 -1
- package/.next/types/app/api/packages/install/route.ts +1 -1
- package/.next/types/app/api/packages/install/status/route.ts +1 -1
- package/.next/types/app/api/packages/installed/route.ts +1 -1
- package/.next/types/app/api/packages/resolve/route.ts +1 -1
- package/.next/types/app/api/packages/scan-targets/route.ts +347 -0
- package/.next/types/app/api/packages/search/route.ts +347 -0
- package/.next/types/app/api/packages/uninstall/route.ts +1 -1
- package/.next/types/app/api/planned-executions/[id]/route.ts +1 -1
- package/.next/types/app/api/planned-executions/[id]/run/route.ts +1 -1
- package/.next/types/app/api/planned-executions/[id]/runs/route.ts +1 -1
- package/.next/types/app/api/planned-executions/preview-schedule/route.ts +1 -1
- package/.next/types/app/api/planned-executions/reconcile/route.ts +1 -1
- package/.next/types/app/api/planned-executions/route.ts +1 -1
- package/.next/types/app/api/registry/auth/resend/route.ts +1 -1
- package/.next/types/app/api/registry/auth/reset/route.ts +1 -1
- package/.next/types/app/api/registry/auth/route.ts +1 -1
- package/.next/types/app/api/registry/oauth/callback/route.ts +1 -1
- package/.next/types/app/api/registry/oauth/initiate/route.ts +1 -1
- package/.next/types/app/api/registry/publish/route.ts +1 -1
- package/.next/types/app/api/registry/settings/route.ts +1 -1
- package/.next/types/app/api/restore/route.ts +1 -1
- package/.next/types/app/api/runs/active/route.ts +1 -1
- package/.next/types/app/api/storage/route.ts +1 -1
- package/.next/types/app/api/update/route.ts +1 -1
- package/.next/types/app/api/waves/route.ts +1 -1
- package/.next/types/app/api/webhooks/[id]/route.ts +1 -1
- package/.next/types/app/chat/page.ts +1 -1
- package/.next/types/app/docs/page.ts +1 -1
- package/.next/types/app/executions/page.ts +1 -1
- package/.next/types/app/flows/page.ts +1 -1
- package/.next/types/app/layout.ts +1 -1
- package/.next/types/app/mcp/page.ts +1 -1
- package/.next/types/app/mcp-flows/route.ts +1 -1
- package/.next/types/app/mcp-proxy/[server]/route.ts +1 -1
- package/.next/types/app/models/page.ts +1 -1
- package/.next/types/app/packages/page.ts +1 -1
- package/.next/types/app/page.ts +1 -1
- package/.next/types/app/settings/page.ts +1 -1
- package/.next/types/app/v1/chat/completions/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/breakpoints/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/cancel/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/debug/continue/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/debug/step/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/edit-state/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/events/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/inject/route.ts +347 -0
- package/.next/types/app/v1/chat/conversations/[conversationId]/resources/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/respond/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/route.ts +1 -1
- package/.next/types/app/v1/chat/events/route.ts +1 -1
- package/.next/types/app/v1/models/route.ts +1 -1
- package/.next/types/app/waves/page.ts +1 -1
- package/.next/types/routes.d.ts +4 -1
- package/.next/types/validator.ts +27 -0
- package/README.md +6 -1
- package/bin/flujo.mjs +120 -120
- package/next.config.mjs +139 -139
- package/package.json +2 -1
- package/scripts/launch-next.mjs +112 -112
- package/.next/server/chunks/1083.js +0 -2
- package/.next/server/chunks/1197.js +0 -2
- package/.next/server/chunks/1373.js +0 -1
- package/.next/server/chunks/1604.js +0 -70
- package/.next/server/chunks/1659.js +0 -1
- package/.next/server/chunks/1819.js +0 -2
- package/.next/server/chunks/2434.js +0 -2
- package/.next/server/chunks/2666.js +0 -1
- package/.next/server/chunks/2940.js +0 -46
- package/.next/server/chunks/2985.js +0 -1
- package/.next/server/chunks/3273.js +0 -1
- package/.next/server/chunks/3304.js +0 -1
- package/.next/server/chunks/346.js +0 -1
- package/.next/server/chunks/3648.js +0 -1
- package/.next/server/chunks/38.js +0 -2
- package/.next/server/chunks/3951.js +0 -151
- package/.next/server/chunks/4042.js +0 -1
- package/.next/server/chunks/4239.js +0 -1
- package/.next/server/chunks/4426.js +0 -6
- package/.next/server/chunks/4661.js +0 -1
- package/.next/server/chunks/4765.js +0 -1
- package/.next/server/chunks/5148.js +0 -1
- package/.next/server/chunks/5471.js +0 -1
- package/.next/server/chunks/5958.js +0 -2
- package/.next/server/chunks/6005.js +0 -1
- package/.next/server/chunks/6126.js +0 -53
- package/.next/server/chunks/6849.js +0 -66
- package/.next/server/chunks/7214.js +0 -6
- package/.next/server/chunks/724.js +0 -27
- package/.next/server/chunks/7463.js +0 -6
- package/.next/server/chunks/7538.js +0 -21
- package/.next/server/chunks/8339.js +0 -1
- package/.next/server/chunks/8522.js +0 -2
- package/.next/server/chunks/8572.js +0 -1
- package/.next/server/chunks/8667.js +0 -1
- package/.next/server/chunks/869.js +0 -2
- package/.next/server/chunks/8979.js +0 -37
- package/.next/server/chunks/8994.js +0 -2
- package/.next/server/chunks/9165.js +0 -1
- package/.next/server/chunks/9387.js +0 -15
- package/.next/server/chunks/9400.js +0 -2
- package/.next/server/chunks/9472.js +0 -2
- package/.next/server/chunks/9583.js +0 -1
- package/.next/server/chunks/991.js +0 -2
- package/.next/static/Q6ITx_bZyoEOnKdZu_C7j/_buildManifest.js +0 -1
- package/.next/static/chunks/1594-309fa6363f215d76.js +0 -1
- package/.next/static/chunks/1809-e56cf3c476261e34.js +0 -1
- package/.next/static/chunks/1937-6bbdcdc660db562c.js +0 -1
- package/.next/static/chunks/1988-1b651d581fc44a36.js +0 -1
- package/.next/static/chunks/2164-7d6451e88a447de7.js +0 -1
- package/.next/static/chunks/218-6cbe09820faa3272.js +0 -1
- package/.next/static/chunks/2566-60acd5838abd9f3f.js +0 -1
- package/.next/static/chunks/2800-4fa29a3eeb693593.js +0 -1
- package/.next/static/chunks/289-98f50bfcf833d661.js +0 -1
- package/.next/static/chunks/3089.9e15df4ffd0fe4e8.js +0 -1
- package/.next/static/chunks/3418-a2f5d0c4f29ee2fb.js +0 -1
- package/.next/static/chunks/3556-b9855146c7506696.js +0 -1
- package/.next/static/chunks/3948-1cb8fc7a64805254.js +0 -1
- package/.next/static/chunks/3958-5641a828b320f2fe.js +0 -100
- package/.next/static/chunks/5328-4e556503b70e72b4.js +0 -1
- package/.next/static/chunks/5512.682bef7fd3a7c286.js +0 -1
- package/.next/static/chunks/6195-8c4c57628e9013d5.js +0 -1
- package/.next/static/chunks/6669-a949326b30ea1d39.js +0 -1
- package/.next/static/chunks/6777-4b0d05731a089de4.js +0 -1
- package/.next/static/chunks/6947-0ff3545efb53e959.js +0 -1
- package/.next/static/chunks/7304-e7cd725083617b81.js +0 -8
- package/.next/static/chunks/7445-2802e158c9093556.js +0 -1
- package/.next/static/chunks/795-704a0e742ecc2ef6.js +0 -1
- package/.next/static/chunks/812-3ceea0da38ad2891.js +0 -1
- package/.next/static/chunks/8551-a28272acfda62ac9.js +0 -1
- package/.next/static/chunks/8855-02889c9ab4bf0bcf.js +0 -1
- package/.next/static/chunks/9554-cb5bd72cb40e8dbe.js +0 -1
- package/.next/static/chunks/9562-ef0ddd4e6b9023cf.js +0 -1
- package/.next/static/chunks/app/_not-found/page-81dc485d60f94046.js +0 -1
- package/.next/static/chunks/app/api/approvals/[id]/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/approvals/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/backup/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/browse/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/bugs/enhance/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/cwd/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/encryption/secure/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/env/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/versions/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/flow/compile/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/flow/generate/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/flow/improve/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/flow/quick-chat/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/flow/repair/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/flow/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/git/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/init/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/local-models/capability/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/local-models/pull/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/local-models/suggest/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/mcp/app-sandbox/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/mcp/cancel/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/mcp/oauth-capability/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/model/[id]/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/model/provider/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/model/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/model/test/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/oauth/callback/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/oauth/initiate/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/oauth/reset/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/packages/build/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/packages/derive-secrets/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/packages/install/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/packages/install/status/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/packages/installed/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/packages/resolve/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/packages/uninstall/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/resend/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/reset/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/registry/oauth/callback/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/registry/oauth/initiate/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/registry/publish/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/registry/settings/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/restore/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/runs/active/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/storage/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/update/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/waves/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/api/webhooks/[id]/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/chat/page-c39160ddf90bbae9.js +0 -1
- package/.next/static/chunks/app/executions/page-10d09f36de30939f.js +0 -1
- package/.next/static/chunks/app/flows/page-0d8fb471adfc2981.js +0 -1
- package/.next/static/chunks/app/layout-eea7078d7553c21a.js +0 -1
- package/.next/static/chunks/app/mcp/page-8ad71bf5801bfe5f.js +0 -1
- package/.next/static/chunks/app/mcp-flows/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/mcp-proxy/[server]/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/models/page-17e8e6668f92f58d.js +0 -1
- package/.next/static/chunks/app/packages/page-9f61751e98134f3d.js +0 -1
- package/.next/static/chunks/app/page-d3ea90b065b95d1e.js +0 -1
- package/.next/static/chunks/app/settings/page-afbf8790e99fecaf.js +0 -1
- package/.next/static/chunks/app/v1/chat/completions/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/v1/chat/events/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/v1/models/route-c745e5b53b81491a.js +0 -1
- package/.next/static/chunks/app/waves/page-97ad6b51c9cae4b3.js +0 -1
- package/.next/static/chunks/webpack-0d4a4e773990ac44.js +0 -1
- package/.next/static/css/40f9bef305b11bf5.css +0 -1
- /package/.next/static/{Q6ITx_bZyoEOnKdZu_C7j → A9jP2ydtYbqx-IayWP2Sg}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8457],{38131:(e,t,n)=>{"use strict";n.d(t,{A:()=>z});var l=n(95155),r=n(12115),o=n(33567),a=n(94049),i=n(4474),s=n(25635),d=n(22003),c=n(78470),u=n(91871),p=n(50430),f=n(26188),h=n(38952),g=n(63186),x=n(62962),m=n(39486),v=n(82446),b=n(9127),y=n(17897),w=n(41080);let j=(0,n(87021).h)("frontend/components/Chat/McpAppFrame"),A={name:"FLUJO",version:"1.0.0"};function S(e){let t=(Array.isArray(null==e?void 0:e.content)?e.content:[]).map(e=>(null==e?void 0:e.type)==="text"&&"string"==typeof e.text?e.text:"").filter(Boolean).join("\n").trim();return t||((null==e?void 0:e.structuredContent)&&"object"==typeof e.structuredContent?JSON.stringify(e.structuredContent):"")}let C=null;async function k(){C||(C=fetch("/api/mcp/app-sandbox").then(e=>e.json()).then(e=>"number"==typeof(null==e?void 0:e.port)?e.port:4201).catch(()=>4201));let e=await C;return"".concat(window.location.protocol,"//").concat(window.location.hostname,":").concat(e,"/sandbox.html")}function I(e){if(e)try{return JSON.parse(e)}catch(e){return}}function E(e){let t=I(e);return t&&"object"==typeof t?Array.isArray(t.content)?t:{content:[{type:"text",text:e}]}:null}let z=e=>{let{serverName:t,uri:n,toolName:C,toolArgs:z,toolResultContent:T,onAppMessage:N,onRequestDock:R,onDockable:D,docked:M=!1,visible:P=!0}=e,O=(0,o.A)(),[W,F]=(0,r.useState)(!1),[_,L]=(0,r.useState)(!1),[H,U]=(0,r.useState)(null),[q,B]=(0,r.useState)("inline"),J=(0,r.useRef)(null),G=(0,r.useRef)(null),K=(0,r.useRef)(null),Q=(0,r.useRef)(!1),Y=(0,r.useRef)(N);(0,r.useEffect)(()=>{Y.current=N},[N]);let X=(0,r.useRef)(R);(0,r.useEffect)(()=>{X.current=R},[R]);let V=(0,r.useRef)(D);(0,r.useEffect)(()=>{V.current=D},[D]);let Z=(0,r.useRef)(M);(0,r.useEffect)(()=>{Z.current=M},[M]);let $=(0,r.useRef)(!1),ee=(0,r.useRef)(void 0),et=(0,r.useCallback)(()=>{try{var e;null==(e=K.current)||e.close()}catch(e){}K.current=null,G.current&&G.current.parentNode&&G.current.parentNode.removeChild(G.current),G.current=null,Q.current=!1},[]),en=(0,r.useCallback)(async()=>{if(!Q.current&&J.current){Q.current=!0,L(!0),U(null);try{let e=await y.S.readResource(t,n);if(!e||!1===e.success)throw Error((null==e?void 0:e.error)||"Failed to read the UI resource.");let l=function(e){var t,n;let l=null==e?void 0:e.contents;if(!Array.isArray(l)||0===l.length)throw Error("Resource has no contents");let r=l.find(e=>"string"==typeof e.mimeType&&e.mimeType.replace(/\s+/g,"").startsWith("text/html;profile=mcp-app".replace(/\s+/g,""))&&("string"==typeof e.text||"string"==typeof e.blob))||l.find(e=>"string"==typeof e.text||"string"==typeof e.blob);if(!r)throw Error("Resource has no HTML body");let o="string"==typeof r.text?r.text:atob(r.blob);if(new TextEncoder().encode(o).length>w.Pt)throw Error("Resource exceeds the ".concat(Math.round(w.Pt/1024)," KiB size cap"));let a=null==(t=null!=(n=r._meta)?n:r.meta)?void 0:t.ui;return{html:o,csp:null==a?void 0:a.csp,permissions:null==a?void 0:a.permissions}}(e.data),r=await k(),o=document.createElement("iframe");o.title="MCP App: ".concat(n),o.setAttribute("sandbox","allow-scripts allow-same-origin allow-forms"),o.referrerPolicy="origin";let a=(0,b.Sy)(l.permissions);a&&o.setAttribute("allow",a),o.style.cssText=Z.current?"width:100%;height:100%;border:none;background:#fff;":"width:100%;min-height:120px;height:200px;border:none;border-radius:4px;background:#fff;",J.current.appendChild(o),G.current=o;let i=new Promise((e,t)=>{let n=setTimeout(()=>{window.removeEventListener("message",l),t(Error("Timed out waiting for the sandbox proxy."))},1e4),l=t=>{var r;t.source===o.contentWindow&&(null==(r=t.data)?void 0:r.method)==="ui/notifications/sandbox-proxy-ready"&&(clearTimeout(n),window.removeEventListener("message",l),e())};window.addEventListener("message",l)}),s=new URL(r);l.csp&&s.searchParams.set("csp",JSON.stringify(l.csp)),o.src=s.href,await i;let d=new b.T1(function(e){return{getServerCapabilities:()=>({tools:{},resources:{}}),setNotificationHandler:()=>{},request:async t=>{let{method:n,params:l}=t;if("tools/call"===n){var r;j.info("MCP App tools/call: ".concat(e,"/").concat(null==l?void 0:l.name));let t=await y.S.callTool(e,l.name,null!=(r=l.arguments)?r:{});if(!t||!1===t.success)throw Error((null==t?void 0:t.error)||"Tool call failed: ".concat(null==l?void 0:l.name));return t.data}if("resources/read"===n){let t=await y.S.readResource(e,l.uri);if(!t||!1===t.success)throw Error((null==t?void 0:t.error)||"Resource read failed: ".concat(null==l?void 0:l.uri));return t.data}if("resources/list"===n)return{resources:[]};if("resources/templates/list"===n)return{resourceTemplates:[]};throw Error("MCP App requested unsupported method: ".concat(n))}}}(t),A,{openLinks:{},serverTools:{},serverResources:{},updateModelContext:{text:{}}},{hostContext:{theme:"dark"===O.palette.mode?"dark":"light",platform:"web",displayMode:Z.current?"pip":"inline",availableDisplayModes:["inline","fullscreen","pip"],containerDimensions:{maxHeight:6e3}}});K.current=d,d.onopenlink=async e=>{let{url:t}=e;return window.open(t,"_blank","noopener,noreferrer"),{}},d.ondownloadfile=async e=>{let{contents:t}=e;try{for(let e of null!=t?t:[]){let t,l=null==e?void 0:e.resource;if(!l)continue;let r=("string"==typeof l.uri?l.uri.split("/").pop():"")||"download",o="string"==typeof l.mimeType?l.mimeType:"application/octet-stream";if("string"==typeof l.blob){let e=Uint8Array.from(atob(l.blob),e=>e.charCodeAt(0));t=new Blob([e],{type:o})}else{var n;t=new Blob([String(null!=(n=l.text)?n:"")],{type:o})}let a=URL.createObjectURL(t),i=document.createElement("a");i.href=a,i.download=r,document.body.appendChild(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(a),4e3)}return{}}catch(e){return j.warn("MCP App download failed",e),{isError:!0}}},d.onloggingmessage=e=>j.debug("MCP App log",null==e?void 0:e.data),d.onmessage=async e=>{let t=S(e);return t&&(Y.current?Y.current(t):j.info("MCP App message (no chat sink): ".concat(t))),{}},d.onupdatemodelcontext=async e=>{let t=S(e);return t&&(Y.current?Y.current(t):j.info("MCP App context update (no chat sink): ".concat(t))),{}},d.onsizechange=async e=>{let{width:t,height:n}=e;!Z.current&&("number"==typeof n&&n>0&&(o.style.height="".concat(n,"px")),"number"==typeof t&&t>0&&(o.style.minWidth="min(".concat(t,"px, 100%)")))},d.onrequestdisplaymode=async e=>{let{mode:t}=e;if("pip"===t)return X.current?(X.current(),B("pip"),d.sendHostContextChange({displayMode:"pip"}),{mode:"pip"}):(B("inline"),d.sendHostContextChange({displayMode:"inline"}),{mode:"inline"});let n="fullscreen"===t?"fullscreen":"inline";return B(n),d.sendHostContextChange({displayMode:n}),{mode:n}},d.oninitialized=()=>{try{var e,t;let n=null==(e=d.getAppCapabilities())?void 0:e.availableDisplayModes;null==(t=V.current)||t.call(V,Array.isArray(n)&&n.includes("pip"))}catch(e){}let n=I(z);n&&"object"==typeof n&&d.sendToolInput({arguments:n});let l=E(T);l&&d.sendToolResult(l),ee.current=T,$.current=!0,L(!1)},await d.connect(new b.hJ(o.contentWindow,o.contentWindow)),await d.sendSandboxResourceReady({html:l.html,csp:l.csp,permissions:l.permissions})}catch(e){j.warn("Failed to mount MCP App ".concat(n," from ").concat(t),e),U(e instanceof Error?e.message:"Failed to load the app."),L(!1),et()}}},[t,n,z,T,O.palette.mode,et]),el=(0,r.useCallback)(()=>{let e=!W;F(e),e&&setTimeout(()=>{en()},0)},[W,en]);return((0,r.useEffect)(()=>{M&&!Q.current&&en()},[M,en]),(0,r.useEffect)(()=>{if(!$.current||!K.current||T===ee.current)return;let e=E(T);if(e)try{K.current.sendToolResult(e)}catch(e){j.warn("MCP App re-feed failed",e)}ee.current=T},[T]),(0,r.useEffect)(()=>{var e;null==(e=K.current)||e.sendHostContextChange({theme:"dark"===O.palette.mode?"dark":"light"})},[O.palette.mode]),(0,r.useEffect)(()=>()=>et(),[et]),M)?(0,l.jsxs)(a.default,{sx:{height:"100%",width:"100%",minHeight:0,display:P?"flex":"none",flexDirection:"column"},children:[_&&(0,l.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2,justifyContent:"center"},children:[(0,l.jsx)(i.default,{size:16,thickness:6}),(0,l.jsx)(s.default,{variant:"body2",color:"text.secondary",children:"Loading the app…"})]}),H&&(0,l.jsx)(d.A,{severity:"error",sx:{m:1},children:H}),(0,l.jsx)(a.default,{ref:J,sx:{flex:1,minHeight:0,width:"100%",display:H?"none":"block"}})]}):(0,l.jsxs)(a.default,{sx:{mt:1,border:"1px solid",borderColor:"divider",borderRadius:1,overflow:"hidden",..."fullscreen"===q?{position:"fixed",inset:16,zIndex:1300,bgcolor:"background.paper",boxShadow:6}:{}},children:[(0,l.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.5,bgcolor:"action.hover"},children:[(0,l.jsx)(f.A,{fontSize:"small",color:"primary"}),(0,l.jsxs)(s.default,{variant:"body2",sx:{fontWeight:500},children:["Interactive app from ",t]}),(0,l.jsx)(c.A,{title:"Runs in a separate-origin sandbox (no access to FLUJO's origin, cookies, storage, or DOM). Its tool calls are brokered through this server only.",children:(0,l.jsx)(h.A,{fontSize:"small",color:"action"})}),W&&(0,l.jsx)(c.A,{title:"fullscreen"===q?"Exit fullscreen":"Fullscreen",children:(0,l.jsx)(u.A,{size:"small",onClick:()=>{var e;let t="fullscreen"===q?"inline":"fullscreen";B(t),null==(e=K.current)||e.sendHostContextChange({displayMode:t})},sx:{minWidth:0,ml:"auto"},children:"fullscreen"===q?(0,l.jsx)(v.A,{fontSize:"small"}):(0,l.jsx)(m.A,{fontSize:"small"})})}),(0,l.jsx)(u.A,{size:"small",onClick:el,startIcon:W?(0,l.jsx)(x.A,{}):(0,l.jsx)(g.A,{}),sx:{ml:W?0:"auto"},children:W?"Hide":"Open app"})]}),(0,l.jsx)(p.A,{in:W,unmountOnExit:!0,onExited:et,children:(0,l.jsxs)(a.default,{sx:{p:1,height:"fullscreen"===q?"calc(100vh - 100px)":"auto"},children:[_&&(0,l.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2,justifyContent:"center"},children:[(0,l.jsx)(i.default,{size:16,thickness:6}),(0,l.jsx)(s.default,{variant:"body2",color:"text.secondary",children:"Loading the app…"})]}),H&&(0,l.jsx)(d.A,{severity:"error",sx:{my:1},children:H}),(0,l.jsx)(a.default,{ref:J,sx:{width:"100%",height:"fullscreen"===q?"100%":"auto",display:H?"none":"block"}})]})})]})}},41080:(e,t,n)=>{"use strict";n.d(t,{Gt:()=>r,Pt:()=>l}),n(81029).hp;let l=2097152;function r(e){if(e&&"object"==typeof e){for(let t of[e.ui,e["io.modelcontextprotocol/ui"]])if(t&&"object"==typeof t){let e=t.resourceUri;if("string"==typeof e&&e.trim().toLowerCase().startsWith("ui://"))return e}}}},65818:(e,t,n)=>{"use strict";n.d(t,{mO:()=>o,oO:()=>a});var l=n(38459);let r=["stdio","websocket","sse","streamable"];function o(e,t){switch(t){case"name-asc":case"name-desc":return(0,l.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 a(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 l,o;let t=r.indexOf(null!=(l=e.transport)?l:""),a=r.indexOf(null!=(o=n.transport)?o:"");if(t!==a)return t-a;return e.name.localeCompare(n.name)}default:return 0}};return[...e].sort((e,t)=>{let l=Number(!!t.favorite)-Number(!!e.favorite);return 0!==l?l:n(e,t)})}},75870:(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var l=n(95155),r=n(12115),o=n(94049),a=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,[x,m]=(0,r.useState)([]),[v,b]=(0,r.useState)(!0),[y,w]=(0,r.useState)(null),[j,A]=(0,r.useState)(!1);(0,r.useEffect)(()=>{(async()=>{b(!0),w(null);try{let e=await c.g.loadFlows();m(e)}catch(e){console.error("Error loading flows:",e),w("Failed to load flows")}finally{b(!1)}})()},[]);let S=e=>{n(e),A(!1)},C=async e=>{let t=x.find(t=>t.id===e);if(!t)return;let n=!t.favorite,l={...t,favorite:n||void 0};try{(await c.g.updateFlow(l)).success&&m(t=>t.map(t=>t.id===e?l:t))}catch(e){console.error("Error toggling flow favorite:",e)}},k=(0,f.E)("flows",x),I=e=>({key:e.id,content:(e=>(0,l.jsx)(p.A,{flow:e,selected:e.id===t,onSelect:S,onToggleFavorite:C,pickerMode:!0}))(e)}),E=k.items.map(I),z=k.groups?k.groups.map(e=>({...e,items:e.items.map(I)})):null,T=(()=>{if(!t)return"";let e=x.find(e=>e.id===t);return e?e.name:""})();return(0,l.jsxs)(o.default,{children:[!g&&(0,l.jsx)(a.default,{variant:"subtitle1",gutterBottom:!0,children:"Select Flow"}),v?(0,l.jsxs)(o.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,l.jsx)(i.default,{size:20}),(0,l.jsx)(a.default,{variant:"body2",color:"text.secondary",children:"Loading flows..."})]}):y?(0,l.jsx)(a.default,{color:"error",variant:"body2",children:y}):0===x.length?(0,l.jsx)(a.default,{variant:"body2",color:"text.secondary",children:"No flows available. Create some flows in the Flow Builder first."}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.A,{variant:"outlined",startIcon:(0,l.jsx)(d.A,{}),onClick:()=>A(!0),disabled:h,sx:{textTransform:"none",maxWidth:"100%"},children:(0,l.jsx)(o.default,{component:"span",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t&&T||"Select a flow"})}),(0,l.jsx)(a.default,{variant:"caption",color:"text.secondary",display:"block",sx:{mt:.5},children:t?'Using "'.concat(T,'" flow for this conversation'):"Select a flow to use for this conversation"}),(0,l.jsx)(u.A,{open:j,onClose:()=>A(!1),title:"Select a flow",description:"Pick the flow this conversation will run.",skeleton:(0,l.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:z,collapsedKeys:k.collapsedKeys,onToggleGroup:k.toggleGroup})]})]})}},79415:(e,t,n)=>{Promise.resolve().then(n.bind(n,98060))},84869:(e,t,n)=>{"use strict";n.d(t,{G:()=>a,S:()=>o});let l=(0,n(87021).h)("frontend/services/transcription/webSpeech"),r=()=>"webkitSpeechRecognition"in window||"SpeechRecognition"in window;async function o(e,t){if(!r())throw Error("Web Speech API is not supported in this browser");l.debug("Starting Web Speech API transcription");try{let n=URL.createObjectURL(e),r=new Audio(n),o=new(window.SpeechRecognition||window.webkitSpeechRecognition);return o.continuous=!0,o.interimResults=!0,(null==t?void 0:t.language)&&(o.lang=t.language),new Promise((e,n)=>{let a="";o.onresult=e=>{let n="";for(let t=e.resultIndex;t<e.results.length;t++){let l=e.results[t][0].transcript;e.results[t].isFinal?a+=l+" ":n+=l}(null==t?void 0:t.onInterimResult)&&t.onInterimResult(a+n),l.debug("Recognition interim result",{finalLength:a.length,interimLength:n.length})},o.onend=()=>{l.debug("Recognition ended",{transcriptLength:a.length}),e(a.trim())},o.onerror=e=>{l.error("Recognition error",{error:e.error}),n(Error("Speech recognition error: ".concat(e.error)))},r.onplay=()=>{o.start(),l.debug("Recognition started")},r.onended=()=>{o.stop(),l.debug("Audio playback ended")},r.onerror=e=>{l.error("Audio playback error",{error:e}),o.stop(),n(Error("Error playing audio"))},r.play().catch(e=>{l.error("Error starting audio playback",{error:e}),n(e)})})}catch(e){throw l.error("Error in Web Speech API transcription",{error:e}),e}}function a(){return{supported:r(),message:r()?"Web Speech API is supported":"Web Speech API is not supported in this browser"}}},98060:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>nQ});var l=n(95155),r=n(12115),o=n(97322),a=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),x=n(67895),m=n(2778),v=n(52363),b=n(65036),y=n(50001),w=n(75912),j=n(22719),A=n(11096),S=n(76530),C=n(36741),k=n(60691),I=n(47419),E=n(78410),z=n(14915),T=n(55930),N=n(56900),R=n(26922),D=n(29692),M=n(23820),P=n(73707),O=n(17681),W=n(21067),F=n(56422),_=n(52641),L=n(55606),H=n(86973),U=n(41602),q=n(50430),B=n(4484),J=n(86946),G=n(19219),K=n(51611),Q=n(12140),Y=n(63186),X=n(62962),V=n(51331),Z=n(97736);function $(e){return"string"==typeof e&&e.startsWith("quickchat-")}n(77890);var ee=n(88377),et=n(38459);let en="wave:__adhoc__",el="wave:__archived__";var er=n(97104);function eo(e){let{nodes:t,childrenByParent:n,renderItem:r,expanded:o,onToggle:a,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,l.jsx)(l.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!==o[e.id],g=new Set(p);return g.add(e.id),(0,l.jsxs)(i.default,{sx:{pl:1.5*(s>0),borderLeft:s>0?"1px dashed rgba(128,128,128,0.35)":"none"},children:[(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"flex-start"},children:[f?(0,l.jsx)(d.A,{size:"small",onClick:()=>a(e.id),"aria-label":h?"Collapse chain":"Expand chain",sx:{mt:.5,flexShrink:0},children:h?(0,l.jsx)(X.A,{fontSize:"small"}):(0,l.jsx)(Y.A,{fontSize:"small"})}):(0,l.jsx)(i.default,{sx:{width:34,flexShrink:0}}),(0,l.jsx)(i.default,{sx:{flex:1,minWidth:0},children:r(e,s)})]}),f&&(0,l.jsx)(q.A,{in:h,timeout:"auto",unmountOnExit:!0,children:(0,l.jsx)(eo,{nodes:c,childrenByParent:n,renderItem:r,expanded:o,onToggle:a,depth:s+1,visited:g,maxDepth:u})})]},e.id)})})}function ea(e){var t,n;let l=new Map;for(let t of e)l.set(t.id,t);let r=new Map,o=[],a=e=>e.parentConversationId&&e.parentConversationId!==e.id?e.parentConversationId:null;for(let n of e){let e=a(n);if(e&&l.has(e)){let l=null!=(t=r.get(e))?t:[];l.push(n),r.set(e,l)}else o.push(n)}let i=new Set,s=[...o];for(;s.length;){let e=s.pop();if(!i.has(e.id))for(let t of(i.add(e.id),null!=(n=r.get(e.id))?n:[]))s.push(t)}let d=new Set(o.map(e=>e.id));for(let t of e)i.has(t.id)||d.has(t.id)||(o.push(t),d.add(t.id));return{roots:o,childrenByParent:r}}let ei={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"},es=[{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"}],ed=[{value:"all",label:"Any time"},{value:"today",label:"Last 24h"},{value:"7d",label:"Last 7 days"},{value:"30d",label:"Last 30 days"}],ec=[{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"}],eu=e=>{let{conversations:t,currentConversationId:n,onSelectConversation:o,onDeleteConversation:a,onBulkDelete:c,onStopConversation:g,onNewConversation:x,onQuickChat:j,onCollapse:S,flowNames:C={}}=e,[k,E]=r.useState(""),[z,T]=r.useState({open:!1,ids:[],label:""}),[N,R]=(0,er.Xk)(ei.searchDim,"title"),[D,eu]=r.useState(null),[ep,ef]=(0,er.Xk)(ei.group,"none"),[eh,eg]=(0,er.Xk)(ei.status,"all"),[ex,em]=(0,er.Xk)(ei.flow,"all"),[ev,eb]=(0,er.Xk)(ei.date,"all"),[ey,ew]=(0,er.Xk)(ei.collapsed,{}),[ej,eA]=r.useState(null);r.useEffect(()=>{if("wave"!==ep)return;let e=!1;return fetch("/api/waves").then(e=>e.ok?e.json():null).then(t=>{!e&&t&&eA(t)}).catch(()=>{}),()=>{e=!0}},[ep,t]);let eS=(0,r.useMemo)(()=>(function(e){let t=new Map;if(!(null==e?void 0:e.waves))return t;for(let l of e.waves){var n;let e=null==(n=l.rootExecutionIds)?void 0:n[0],r=e&&l.nodes.find(t=>t.executionId===e)||l.nodes[0],o=(null==r?void 0:r.name)||(null==r?void 0:r.flowName)||l.id;for(let e of l.nodes)t.set(e.executionId,{waveId:l.id,label:o})}return t})(ej),[ej]);r.useEffect(()=>{let e=k.trim();if("content"!==N||0===e.length)return void eu(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||eu(new Set(Array.isArray(e)?e.map(e=>e.id):[]))}).catch(()=>{t||eu(new Set)})},300);return()=>{t=!0,clearTimeout(n)}},[k,N]);let eC=r.useCallback(e=>{var t;return e?$(e)?{key:"flow:__quickchat__",label:"Quick Chat"}:{key:"flow:".concat(e),label:null!=(t=C[e])?t:"Unknown flow"}:{key:"flow:__none__",label:"No flow"}},[C]),ek=(0,r.useMemo)(()=>{let e=new Map;for(let n of t){let t=eC(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,eC]),eI=(0,r.useMemo)(()=>{let e=k.trim().toLowerCase(),n=Date.now(),l="today"===ev?n-864e5:"7d"===ev?n-6048e5:"30d"===ev?n-2592e6:0;return t.filter(t=>{if("all"!==eh&&t.status!==eh||"all"!==ex&&eC(t.flowId).key!==ex||l&&t.updatedAt<l)return!1;if(e){if("content"===N){if(!D||!D.has(t.id))return!1}else if(!"".concat(t.title," ").concat(eC(t.flowId).label).toLowerCase().includes(e))return!1}return!0}).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})},[t,k,N,D,eh,ex,ev,eC]),eE=(0,r.useMemo)(()=>"none"===ep?[{key:"all",label:"",items:eI}]:"wave"===ep?function(e){let t=new Set([en,el]);return[...e.filter(e=>!t.has(e.key)),...e.filter(e=>t.has(e.key))]}((0,et.Az)(eI,e=>(function(e,t){if(!e)return{key:en,label:"Ad-hoc"};let n=t.get(e);return n?{key:"wave:".concat(n.waveId),label:n.label}:{key:el,label:"Archived / no longer scheduled"}})(e.plannedExecutionId,eS))):(0,et.Az)(eI,e=>"date"===ep?(0,ee.K)(e.updatedAt):eC(e.flowId)),[eI,ep,eC,eS]),ez=(0,r.useMemo)(()=>"chain"===ep?ea(eI):{roots:[],childrenByParent:new Map},[ep,eI]),[eT,eN]=r.useState({}),eR=r.useCallback(e=>{eN(t=>({...t,[e]:!1===t[e]}))},[]),eD=(0,r.useMemo)(()=>{let e=new Map;if("wave"!==ep)return e;for(let t of eE)e.set(t.key,ea(t.items));return e},[ep,eE]),eM=+("all"!==eh)+ +("all"!==ex)+ +("all"!==ev),eP=e=>{let t=!!g&&("running"===e.status||"awaiting_tool_approval"===e.status),r=eC(e.flowId),c="flow:__quickchat__"===r.key;return(0,l.jsx)(M.Ay,{disablePadding:!0,secondaryAction:(0,l.jsxs)(l.Fragment,{children:[t&&(0,l.jsx)(s.A,{title:"Stop this run",children:(0,l.jsx)(d.A,{edge:"end","aria-label":"stop run",onClick:t=>{t.stopPropagation(),g(e.id)},children:(0,l.jsx)(I.A,{color:"error"})})}),(0,l.jsx)(d.A,{edge:"end","aria-label":"delete",onClick:t=>{t.stopPropagation(),a(e.id)},children:(0,l.jsx)(B.A,{})})]}),sx:{opacity:e.id===n?1:.7},children:(0,l.jsx)(P.A,{selected:e.id===n,onClick:()=>o(e.id),sx:{pr:t?12:7},children:(0,l.jsx)(O.A,{primary:(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[e.status&&(0,l.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"capped":return"Landed at turn limit (summary produced)";case"error":return"Error";default:return""}})(e.status),children:(0,l.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"capped":return"info.main";case"error":return"error.main";default:return"transparent"}})(e.status),display:"inline-block",flexShrink:0}})}),(0,l.jsx)(s.A,{title:e.title,enterDelay:500,children:(0,l.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,l.jsxs)(i.default,{component:"span",sx:{display:"flex",alignItems:"center",gap:.75,mt:.5,flexWrap:"wrap"},children:["flow"!==ep&&(0,l.jsx)(s.A,{title:c?"Quick Chat (no saved flow)":"Flow: ".concat(r.label),children:(0,l.jsx)(f.A,{icon:c?(0,l.jsx)(A.A,{}):void 0,label:r.label,size:"small",variant:"outlined",color:c?"secondary":"default",sx:{maxWidth:"100%",height:20,"& .MuiChip-label":{px:.75,fontSize:"0.7rem"}}})}),(0,l.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)},eO=t.length,eW=eI.length;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(i.default,{sx:{p:2,display:"flex",justifyContent:"space-between",alignItems:"center",gap:1},children:[S&&(0,l.jsx)(s.A,{title:"Hide sidebar",children:(0,l.jsx)(d.A,{size:"small",onClick:S,"aria-label":"Hide conversation sidebar",children:(0,l.jsx)(G.A,{})})}),(0,l.jsx)(p.default,{variant:"h6",sx:{flex:1},noWrap:!0,children:"Conversations"}),t.length>0&&(0,l.jsx)(s.A,{title:"Delete all conversations",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",color:"error","aria-label":"Delete all conversations",onClick:()=>T({open:!0,ids:t.map(e=>e.id),label:"Delete all ".concat(t.length," conversation(s)?")}),children:(0,l.jsx)(V.A,{fontSize:"small"})})})}),eI.length>0&&eI.length<t.length&&(0,l.jsx)(s.A,{title:"Delete visible conversations (matching current filter)",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",color:"error","aria-label":"Delete visible conversations",onClick:()=>T({open:!0,ids:eI.map(e=>e.id),label:"Delete ".concat(eI.length," visible conversation(s)?")}),children:(0,l.jsx)(Z.A,{fontSize:"small"})})})}),j&&(0,l.jsx)(s.A,{title:"Quick Chat: a model + optional MCP servers, no saved flow",children:(0,l.jsx)(h.A,{variant:"outlined",color:"primary",startIcon:(0,l.jsx)(A.A,{}),onClick:j,size:"small",children:"Quick"})}),(0,l.jsx)(h.A,{variant:"contained",color:"primary",startIcon:(0,l.jsx)(J.A,{}),onClick:x,size:"small",children:"New"})]}),(0,l.jsx)(W.A,{}),(0,l.jsxs)(i.default,{sx:{px:2,pt:1.5,pb:1,display:"flex",flexDirection:"column",gap:1},children:[(0,l.jsxs)(i.default,{sx:{display:"flex",gap:1},children:[(0,l.jsx)(u.A,{size:"small",sx:{flex:1},placeholder:"content"===N?"Search message content…":"Search title or flow…",value:k,onChange:e=>E(e.target.value),InputProps:{startAdornment:(0,l.jsx)(F.A,{position:"start",children:(0,l.jsx)(K.A,{fontSize:"small"})}),endAdornment:k?(0,l.jsx)(F.A,{position:"end",children:(0,l.jsx)(d.A,{size:"small","aria-label":"Clear search",onClick:()=>E(""),children:(0,l.jsx)(Q.A,{fontSize:"small"})})}):void 0}}),(0,l.jsx)(_.A,{size:"small",sx:{minWidth:100},children:(0,l.jsxs)(L.A,{value:N,onChange:e=>R(e.target.value),"aria-label":"Search dimension",children:[(0,l.jsx)(H.A,{value:"title",children:"Title"}),(0,l.jsx)(H.A,{value:"content",children:"Content"})]})})]}),(0,l.jsxs)(i.default,{sx:{display:"flex",flexWrap:"wrap",gap:1},children:[(0,l.jsx)(_.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,l.jsx)(L.A,{value:ep,onChange:e=>ef(e.target.value),"aria-label":"Group conversations",children:ec.map(e=>(0,l.jsx)(H.A,{value:e.value,children:e.label},e.value))})}),(0,l.jsx)(_.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,l.jsx)(L.A,{value:eh,onChange:e=>eg(e.target.value),"aria-label":"Filter by status",children:es.map(e=>(0,l.jsx)(H.A,{value:e.value,children:e.label},e.value))})}),(0,l.jsx)(_.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,l.jsxs)(L.A,{value:ek.some(e=>e.key===ex)?ex:"all",onChange:e=>em(e.target.value),"aria-label":"Filter by flow",children:[(0,l.jsx)(H.A,{value:"all",children:"Any flow"}),ek.map(e=>(0,l.jsx)(H.A,{value:e.key,children:e.label},e.key))]})}),(0,l.jsx)(_.A,{size:"small",sx:{minWidth:128,flex:"1 1 128px"},children:(0,l.jsx)(L.A,{value:ev,onChange:e=>eb(e.target.value),"aria-label":"Filter by date",children:ed.map(e=>(0,l.jsx)(H.A,{value:e.value,children:e.label},e.value))})})]}),(k||eM>0)&&(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",children:[eW," of ",eO]}),(0,l.jsx)(h.A,{size:"small",onClick:()=>{E(""),eg("all"),em("all"),eb("all")},children:"Clear filters"})]})]}),(0,l.jsx)(W.A,{}),(0,l.jsx)(U.A,{sx:{overflow:"auto",flex:1},children:0===eO?(0,l.jsx)(M.Ay,{children:(0,l.jsx)(O.A,{primary:"No conversations yet",secondary:"Start a new conversation",primaryTypographyProps:{align:"center"},secondaryTypographyProps:{align:"center"}})}):0===eW?(0,l.jsx)(M.Ay,{children:(0,l.jsx)(O.A,{primary:"No matching conversations",secondary:"Try a different search or filter",primaryTypographyProps:{align:"center"},secondaryTypographyProps:{align:"center"}})}):"chain"===ep?(0,l.jsx)(eo,{nodes:ez.roots,childrenByParent:ez.childrenByParent,renderItem:e=>eP(e),expanded:eT,onToggle:eR}):"none"===ep?eI.map(eP):eE.map(e=>{let t=!!ey[e.key],n="wave"===ep?eD.get(e.key):void 0;return(0,l.jsxs)(i.default,{children:[(0,l.jsxs)(P.A,{onClick:()=>(e=>{ew(t=>({...t,[e]:!t[e]}))})(e.key),sx:{py:.5,bgcolor:"action.hover"},children:[t?(0,l.jsx)(Y.A,{fontSize:"small"}):(0,l.jsx)(X.A,{fontSize:"small"}),(0,l.jsx)(p.default,{variant:"overline",sx:{ml:.5,flex:1,lineHeight:1.6},noWrap:!0,children:e.label}),(0,l.jsx)(f.A,{label:e.items.length,size:"small",sx:{height:18,"& .MuiChip-label":{px:.75,fontSize:"0.7rem"}}})]}),(0,l.jsx)(q.A,{in:!t,timeout:"auto",unmountOnExit:!0,children:n?(0,l.jsx)(eo,{nodes:n.roots,childrenByParent:n.childrenByParent,renderItem:e=>eP(e),expanded:eT,onToggle:eR}):e.items.map(eP)})]},e.key)})}),(0,l.jsxs)(m.A,{open:z.open,onClose:()=>T(e=>({...e,open:!1})),"aria-labelledby":"bulk-delete-dialog-title",children:[(0,l.jsx)(v.A,{id:"bulk-delete-dialog-title",children:"Confirm deletion"}),(0,l.jsx)(b.A,{children:(0,l.jsxs)(y.A,{children:[z.label," This cannot be undone."]})}),(0,l.jsxs)(w.A,{children:[(0,l.jsx)(h.A,{onClick:()=>T(e=>({...e,open:!1})),children:"Cancel"}),(0,l.jsx)(h.A,{color:"error",onClick:async()=>{T(e=>({...e,open:!1})),await c(z.ids)},autoFocus:!0,children:"Delete"})]})]})]})};var ep=n(4474),ef=n(99944),eh=n(9957),eg=n(2300),ex=n(98267),em=n(20537),ev=n(37960),eb=n(22822),ey=n(95436),ew=n(18369),ej=n(9839),eA=n(43861),eS=n(75656),eC=n(36314),ek=n(49501),eI=n(6504),eE=n(22133),ez=n(11665),eT=n(97516),eN=n(91861),eR=n(53612),eD=n(3014),eM=n(70863),eP=n(67891),eO=n(12121),eW=n(63992),eF=n(59637),e_=n(30949),eL=n(26188),eH=n(1877),eU=n(18466);function eq(e){return!!e&&(e.startsWith(eU.n9)||"handoff"===e)}var eB=n(38131),eJ=n(87021);let eG=(0,eJ.h)("frontend/components/Chat/ChatMessages");function eK(e){return"assistant"===e.role&&"tool_calls"in e&&Array.isArray(e.tool_calls)}function eQ(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 eY={p:e=>(0,l.jsx)(p.default,{variant:"body1",sx:{mb:.5,whiteSpace:"pre-line"},children:e.children}),h1:e=>(0,l.jsx)(p.default,{variant:"h5",sx:{mt:2,mb:.5},children:e.children}),h2:e=>(0,l.jsx)(p.default,{variant:"h6",sx:{mt:2,mb:.5},children:e.children}),h3:e=>(0,l.jsx)(p.default,{variant:"subtitle1",sx:{mt:1.5,mb:.5},children:e.children}),h4:e=>(0,l.jsx)(p.default,{variant:"subtitle2",sx:{mt:1.5,mb:.5},children:e.children}),h5:e=>(0,l.jsx)(p.default,{variant:"body1",sx:{mt:1,mb:.5,fontWeight:"bold"},children:e.children}),h6:e=>(0,l.jsx)(p.default,{variant:"body2",sx:{mt:1,mb:.5,fontWeight:"bold"},children:e.children}),ul:e=>(0,l.jsx)(i.default,{component:"ul",sx:{pl:2,mb:1},children:e.children}),ol:e=>(0,l.jsx)(i.default,{component:"ol",sx:{pl:2,mb:1},children:e.children}),li:e=>(0,l.jsx)(i.default,{component:"li",sx:{mb:.5,whiteSpace:"pre-line"},children:e.children}),a:e=>(0,l.jsx)(p.default,{component:"a",sx:{color:"primary.main"},href:e.href,children:e.children}),blockquote:e=>(0,l.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:r,...o}=e;return/language-(\w+)/.exec(n||"")||n?(0,l.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:r}):(0,l.jsx)(p.default,{component:"code",sx:{bgcolor:"action.hover",px:.5,py:.25,borderRadius:"4px",fontFamily:"monospace",wordBreak:"break-all"},children:r})}},eX=e=>{let{content:t,showRaw:n}=e;return n?(0,l.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,l.jsx)(p.default,{variant:"body2",fontStyle:"italic",color:"text.secondary",children:"[Invalid tool content]"}):(0,l.jsx)(i.default,{sx:{width:"100%",minWidth:0},children:(()=>{try{let e=JSON.parse(t);if(e&&Array.isArray(e.content))return(0,l.jsx)(i.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:e.content.map((e,t)=>"text"===e.type?(0,l.jsx)(eI.oz,{remarkPlugins:[eE.A],children:e.text},t):"image"===e.type&&e.data&&e.mimeType?(0,l.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,l.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,l.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,l.jsx)(eI.oz,{remarkPlugins:[eE.A],children:"```json\n".concat(JSON.stringify(e,null,2),"\n```")})}catch(e){return(0,l.jsx)(eI.oz,{remarkPlugins:[eE.A],children:t})}})()})},eV=e=>{let{pairs:t,messageId:n,onAppMessage:o,onOpenInCanvas:a,canvasKeys:d}=e,[c,u]=(0,r.useState)(null),[g,x]=(0,r.useState)({}),m=(e,t)=>e.toolCall.id||"tc-".concat(n,"-").concat(t);return(0,l.jsxs)(i.default,{sx:{mt:1,pt:1,borderTop:"1px solid",borderColor:"divider"},children:[(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",color:"primary.main",mb:1},children:[(0,l.jsx)(eM.A,{fontSize:"small",sx:{mr:1}}),(0,l.jsx)(p.default,{variant:"body2",children:1===t.length?"The assistant used a tool":"The assistant used ".concat(t.length," tools")})]}),(0,l.jsx)(i.default,{sx:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:.5},children:t.map((e,t)=>{let n=m(e,t),o=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),a=c===n;return(0,l.jsxs)(r.Fragment,{children:[t>0&&(0,l.jsx)(i.default,{sx:{width:14,height:"2px",bgcolor:"divider",flexShrink:0}}),(0,l.jsx)(s.A,{title:a?"Hide call & result":"Show call & result",children:(0,l.jsx)(f.A,{icon:function(e){return"pending"===e?(0,l.jsx)(ep.default,{size:14,thickness:6}):"error"===e?(0,l.jsx)(k.A,{fontSize:"small"}):(0,l.jsx)(eO.A,{fontSize:"small"})}(o),label:(0,eH.yo)(e.toolCall.function.name),size:"small",clickable:!0,variant:a?"filled":"outlined",color:"error"===o?"error":"pending"===o?"default":"primary",onClick:()=>u(a?null:n),sx:{maxWidth:"100%"}})})]},n)})}),t.map((e,t)=>{var n,r;let s=m(e,t),u=e.toolCall.function.arguments;try{u=JSON.stringify(JSON.parse(e.toolCall.function.arguments),null,2)}catch(e){}let v=!!g[s];return(0,l.jsx)(q.A,{in:c===s,unmountOnExit:!0,children:(0,l.jsxs)(i.default,{sx:{mt:1,p:1,borderRadius:1,bgcolor:"rgba(0, 0, 0, 0.03)"},children:[(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,l.jsx)(eM.A,{fontSize:"small",sx:{mr:.5,color:"primary.main"}}),(0,l.jsx)(p.default,{variant:"caption",sx:{fontWeight:"bold"},children:"Parameters"}),(0,l.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,l.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:u}),(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",mt:1,mb:.5},children:[(0,l.jsx)(eP.A,{fontSize:"small",sx:{mr:.5,color:"text.secondary"}}),(0,l.jsx)(p.default,{variant:"caption",sx:{fontWeight:"bold"},children:"Result"}),e.result&&(0,l.jsx)(ef.A,{control:(0,l.jsx)(eh.A,{size:"small",checked:v,onChange:e=>x(t=>({...t,[s]:e.target.checked}))}),label:"Raw",sx:{ml:"auto",mr:0,"& .MuiTypography-root":{fontSize:"0.75rem"}}})]}),e.result?(0,l.jsx)(eX,{content:e.result.content,showRaw:v}):(0,l.jsxs)(p.default,{variant:"body2",fontStyle:"italic",color:"text.secondary",sx:{display:"flex",alignItems:"center",gap:1},children:[(0,l.jsx)(ep.default,{size:14,thickness:6})," Waiting for the tool to respond…"]}),(null==(r=e.result)||null==(n=r.ui)?void 0:n.uri)&&e.result.ui.serverName&&(a?(()=>{let t=e.result.ui,n=!!(null==d?void 0:d.has("".concat(t.serverName,"::").concat(t.uri)));return(0,l.jsxs)(i.default,{sx:{mt:1,display:"flex",alignItems:"center",gap:1,px:1,py:.5,border:"1px dashed",borderColor:"divider",borderRadius:1},children:[(0,l.jsx)(eL.A,{fontSize:"small",color:"primary"}),(0,l.jsxs)(p.default,{variant:"body2",sx:{flex:1,minWidth:0},noWrap:!0,children:["Interactive app from ",t.serverName]}),(0,l.jsx)(h.A,{size:"small",variant:n?"text":"outlined",onClick:()=>{var n;return a({serverName:t.serverName,uri:t.uri,toolName:e.toolCall.function.name,toolArgs:e.toolCall.function.arguments,resultContent:"string"==typeof(null==(n=e.result)?void 0:n.content)?e.result.content:void 0})},children:n?"Show in canvas":"Open in canvas"})]})})():(0,l.jsx)(eB.A,{serverName:e.result.ui.serverName,uri:e.result.ui.uri,toolName:e.toolCall.function.name,toolArgs:e.toolCall.function.arguments,toolResultContent:"string"==typeof e.result.content?e.result.content:void 0,onAppMessage:o}))]})},s)})]})},eZ=r.memo(function(e){var t,n;let r,{message:o,nodeLabel:a,availableNodes:c,showRaw:u,toolCallPairs:h,onAppMessage:g,onOpenInCanvas:x,canvasKeys:m,hoistedHandoffs:v,isBeingEdited:b,onMenuOpen:y,onToggleRaw:w}=e,j=null!=(t=o.depth)?t:0;return(0,l.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",alignItems:"user"===o.role?"flex-end":"flex-start",opacity:o.disabled?.5:1,...j>0&&{pl:3*j,borderLeft:"2px solid",borderColor:"divider",ml:1}},children:[(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",sx:{mr:1},children:["user"===o.role?"You":"assistant"===o.role?"Assistant":"tool"===o.role?"Tool":"System"," • ","number"!=typeof(n=o.timestamp)||isNaN(n)?(eG.warn("formatTime received invalid timestamp:",n),"Invalid Date"):new Date(n).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"})]}),o.processNodeId&&(0,l.jsx)(s.A,{title:"".concat(a?"".concat(a," — "):"","Process Node ID: ").concat(o.processNodeId),children:(0,l.jsx)(f.A,{label:"Node: ".concat(a||"".concat(o.processNodeId.substring(0,6),"...")),size:"small",color:"primary",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),j>0&&(0,l.jsx)(s.A,{title:"Nested subflow step (depth ".concat(j,")"),children:(0,l.jsx)(f.A,{label:"Subflow step",size:"small",color:"secondary",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),o.disabled&&(0,l.jsx)(f.A,{label:"Disabled",size:"small",color:"default",variant:"outlined",sx:{height:20,fontSize:"0.7rem"}}),o.usage&&(0,l.jsx)(s.A,{title:"".concat(o.usage.promptTokens.toLocaleString()," prompt + ").concat(o.usage.completionTokens.toLocaleString()," completion tokens (provider-reported)"),children:(0,l.jsx)(f.A,{label:"".concat((r=o.usage.totalTokens)>=1e3?"".concat((r/1e3).toFixed(r>=1e5?0:1),"k"):"".concat(r)," tok"),size:"small",color:"default",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),(0,l.jsx)(d.A,{size:"small",onClick:e=>y(e,o.id),sx:{ml:1},children:(0,l.jsx)(ez.A,{fontSize:"small"})})]}),(0,l.jsxs)(eg.A,{elevation:1,sx:{p:2,maxWidth:"75vw",borderRadius:2,bgcolor:"user"===o.role?"primary.light":"assistant"===o.role||"tool"===o.role?"background.paper":"info.light",color:"user"===o.role?"primary.contrastText":"assistant"===o.role||"tool"===o.role?"text.primary":"info.contrastText",position:"relative",borderLeft:"tool"===o.role?"4px solid":"none",borderColor:"tool"===o.role?"grey.400":"transparent",opacity:b?.55:1,outline:b?"2px dashed":"none",outlineColor:"warning.main",overflowWrap:"break-word",wordBreak:"break-word",overflow:"hidden"},children:[(0,l.jsxs)(l.Fragment,{children:["tool"!==o.role&&"string"==typeof o.content&&(0,l.jsx)(eI.oz,{remarkPlugins:[eE.A],components:eY,children:o.content}),"tool"!==o.role&&Array.isArray(o.content)&&(0,l.jsx)(i.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:o.content.map((e,t)=>{var n;return(null==e?void 0:e.type)==="text"?(0,l.jsx)(eI.oz,{remarkPlugins:[eE.A],children:e.text},t):(null==e?void 0:e.type)==="image_url"&&(null==(n=e.image_url)?void 0:n.url)?(0,l.jsx)("img",{src:e.image_url.url,alt:"Image ".concat(t+1),style:{maxWidth:"100%",height:"auto",borderRadius:"4px"}},t):null})}),"tool"!==o.role&&"string"!=typeof o.content&&!Array.isArray(o.content)&&!eK(o)&&(0,l.jsx)(p.default,{variant:"body2",fontStyle:"italic",color:"text.secondary",children:"[No text content]"})]}),(()=>{let e=[...eK(o)?o.tool_calls.filter(e=>{var t;return!!(t=e.function.name)&&(t.startsWith(eU.n9)||"handoff"===t)}):[],...null!=v?v:[]];return(0,l.jsx)(i.default,{sx:{mt:1,display:"flex",flexWrap:"wrap",gap:.5},children:e.map((e,t)=>(0,l.jsx)(f.A,{size:"small",variant:"outlined",color:"secondary",icon:(0,l.jsx)(e_.A,{fontSize:"small"}),label:"Handoff → ".concat(function(e,t){let n=e.startsWith(eU.n9)?e.slice(eU.n9.length):e,l=n.replace(/_\d+$/,""),r=t.find(e=>{let t=(0,eU.RN)(e.label);return t===n||t===l});return(null==r?void 0:r.label)?r.label:l.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(o.id,"-").concat(t)))})})(),h&&h.length>0&&(0,l.jsx)(eV,{pairs:h,messageId:o.id,onAppMessage:g,onOpenInCanvas:x,canvasKeys:m}),"tool"===o.role&&o.tool_call_id&&!eQ(o)&&(0,l.jsxs)(i.default,{children:[(0,l.jsxs)(p.default,{variant:"body2",sx:{display:"flex",alignItems:"center",color:"text.secondary",mb:1},children:[(0,l.jsx)(eP.A,{fontSize:"small",sx:{mr:1}}),"The tool responded to the assistant"]}),(0,l.jsxs)(ex.A,{defaultExpanded:!1,sx:{mb:.5,"&:before":{display:"none"},boxShadow:"none",bgcolor:"rgba(0, 0, 0, 0.02)"},children:[(0,l.jsx)(em.A,{expandIcon:(0,l.jsx)(Y.A,{}),children:(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center"},children:[(0,l.jsx)(eP.A,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,l.jsx)(p.default,{variant:"subtitle2",children:"Tool Result"}),(0,l.jsx)(f.A,{label:"ID: ".concat(o.tool_call_id.substring(0,8),"..."),size:"small",color:"default",variant:"outlined",sx:{ml:1,height:20,fontSize:"0.7rem"}}),(0,l.jsx)(ef.A,{control:(0,l.jsx)(eh.A,{size:"small",checked:u,onChange:e=>w(o.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,l.jsx)(ev.A,{sx:{pt:0,pb:1,overflow:"hidden"},children:(0,l.jsx)(eX,{content:o.content,showRaw:u})})]})]}),o.attachments&&o.attachments.length>0&&(0,l.jsxs)(i.default,{sx:{mt:1,pt:1,borderTop:"1px solid",borderColor:"divider"},children:[(0,l.jsx)(p.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:.5},children:"Attachments:"}),o.attachments.map(e=>"image"===e.type?(0,l.jsx)(i.default,{sx:{mb:.5},children:(0,l.jsx)("img",{src:e.content,alt:e.originalName||"image attachment",style:{maxWidth:"100%",height:"auto",borderRadius:"4px"}})},e.id):(0,l.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,l.jsx)(eR.A,{fontSize:"small",sx:{mr:1}}):(0,l.jsx)(eD.A,{fontSize:"small",sx:{mr:1}}),(0,l.jsx)(p.default,{variant:"caption",sx:{wordBreak:"break-all"},children:e.originalName||"".concat(e.type," attachment")})]},e.id))]})]})]})}),e$=e=>{var t;let{elicitation:n,onSubmit:o,onCancel:a}=e,{elicitationId:s,message:d,requestedSchema:c}=n,f=null!=(t=null==c?void 0:c.properties)?t:{},g=Object.keys(f),[x,m]=(0,r.useState)(()=>{let e={};for(let t of g){let n=f[t];void 0!==n.default?e[t]=n.default:"boolean"===n.type?e[t]=!1:"number"===n.type||"integer"===n.type?e[t]=0:e[t]=""}return e}),v=(e,t)=>{m(n=>({...n,[e]:t}))};return(0,l.jsxs)(eg.A,{elevation:2,sx:{p:2,mt:2,bgcolor:"info.light",border:"1px solid",borderColor:"info.main",borderRadius:2},children:[(0,l.jsx)(p.default,{variant:"h6",sx:{mb:1},children:"Server needs more information"}),(0,l.jsx)(p.default,{variant:"body2",sx:{mb:2},children:d}),(0,l.jsx)(i.default,{sx:{display:"flex",flexDirection:"column",gap:1.5},children:g.map(e=>{let t=f[e],n=t.title||e,r=x[e];if("boolean"===t.type)return(0,l.jsx)(ef.A,{control:(0,l.jsx)(eb.A,{checked:!!r,onChange:t=>v(e,t.target.checked),size:"small"}),label:n},e);if(t.enum&&t.enum.length>0)return(0,l.jsxs)(_.A,{size:"small",sx:{minWidth:200},children:[(0,l.jsx)(ey.A,{children:n}),(0,l.jsx)(L.A,{label:n,value:String(null!=r?r:""),onChange:t=>v(e,t.target.value),children:t.enum.map((e,n)=>{var r;return(0,l.jsx)(H.A,{value:e,children:(null==(r=t.enumNames)?void 0:r[n])||e},e)})}),t.description&&(0,l.jsx)(ew.A,{children:t.description})]},e);let o="number"===t.type||"integer"===t.type;return(0,l.jsx)(u.A,{size:"small",label:n,type:o?"number":"text",value:String(null!=r?r:""),helperText:t.description,inputProps:{minLength:t.minLength,maxLength:t.maxLength,min:t.minimum,max:t.maximum},onChange:t=>{if(o){let n=parseFloat(t.target.value);v(e,isNaN(n)?0:n)}else v(e,t.target.value)}},e)})}),(0,l.jsxs)(i.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:2},children:[(0,l.jsx)(h.A,{variant:"outlined",color:"inherit",size:"small",onClick:()=>{a&&a(s)},disabled:!a,children:"Cancel"}),(0,l.jsx)(h.A,{variant:"contained",color:"primary",size:"small",onClick:()=>{o&&o(s,x)},disabled:!o,children:"Submit"})]})]})},e0="Type your own answer",e1=e=>{let{question:t,onAnswer:n,onDecline:o}=e,{questionId:a,questions:s}=t,[d,c]=(0,r.useState)(()=>s.map(()=>[])),[f,g]=(0,r.useState)(()=>s.map(()=>"")),x=()=>s.map((e,t)=>{var n;return(null!=(n=d[t])?n:[]).map(e=>e===e0?f[t].trim():e).filter(e=>e.length>0)}),m=s.every((e,t)=>{var n;return(null!=(n=x()[t])?n:[]).length>0});return(0,l.jsxs)(eg.A,{elevation:2,sx:{p:2,mt:2,bgcolor:"info.light",border:"1px solid",borderColor:"info.main",borderRadius:2},children:[(0,l.jsx)(p.default,{variant:"h6",sx:{mb:1},children:"The assistant is asking"}),(0,l.jsx)(i.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:s.map((e,t)=>{var n,r,o;return(0,l.jsxs)(_.A,{component:"fieldset",sx:{display:"flex"},children:[(0,l.jsx)(ej.A,{sx:{mb:.5},children:e.prompt}),e.multiple?(0,l.jsx)(i.default,{sx:{display:"flex",flexDirection:"column"},children:e.options.map(e=>{var n;return(0,l.jsx)(ef.A,{control:(0,l.jsx)(eb.A,{size:"small",checked:(null!=(n=d[t])?n:[]).includes(e),onChange:()=>((e,t)=>{c(n=>{let l=n.map(e=>[...e]),r=l[e],o=r.indexOf(t);return o>=0?r.splice(o,1):r.push(t),l})})(t,e)}),label:e},e)})}):(0,l.jsx)(eA.A,{value:null!=(r=(null!=(n=d[t])?n:[])[0])?r:"",onChange:e=>{var n;return n=e.target.value,void c(e=>{let l=e.map(e=>[...e]);return l[t]=[n],l})},children:e.options.map(e=>(0,l.jsx)(ef.A,{value:e,control:(0,l.jsx)(eS.A,{size:"small"}),label:e},e))}),(null!=(o=d[t])?o:[]).includes(e0)&&(0,l.jsx)(u.A,{size:"small",sx:{mt:1},placeholder:"Your answer…",value:f[t],onChange:e=>g(n=>{let l=[...n];return l[t]=e.target.value,l})})]},t)})}),(0,l.jsxs)(i.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:2},children:[(0,l.jsx)(h.A,{variant:"outlined",color:"inherit",size:"small",onClick:()=>{o&&o(a)},disabled:!o,children:"Decline"}),(0,l.jsx)(h.A,{variant:"contained",color:"primary",size:"small",onClick:()=>{n&&n(a,x())},disabled:!n||!m,children:"Answer"})]})]})},e2=e=>{let{messages:t,pendingToolCalls:n,pendingElicitation:o,availableNodes:a=[],conversationId:s,editingMessageId:d,onToggleDisabled:c,onSplitConversation:g,onBeginEditMessage:x,onApproveToolCall:m,onRejectToolCall:v,onSubmitElicitation:b,onCancelElicitation:y,pendingQuestion:w,onAnswerQuestion:j,onDeclineQuestion:A,onAppMessage:S,onOpenInCanvas:C,canvasKeys:k,queuedMessages:I=[],queueHoldReason:E=null}=e,[T,N]=(0,r.useState)({}),[R,D]=(0,r.useState)(50);(0,r.useEffect)(()=>{D(50)},[s]);let M=Math.max(0,(Array.isArray(t)?t.length:0)-R),P=(0,r.useMemo)(()=>Array.isArray(t)?M>0?t.slice(M):t:[],[t,M]),{pairsByAnchorId:W,handoffsByAnchorId:F,consumedToolCallIds:_,groups:L}=(0,r.useMemo)(()=>(function(e){let t=new Map,n=new Map,l=new Set,r=new Set,o=new Map,a=[];if(!Array.isArray(e))return{pairsByAnchorId:t,handoffsByAnchorId:n,hoistedAssistantIds:l,consumedToolCallIds:r,groups:a};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 l=o.get(e);return l||(l={anchorId:e,memberIds:[e],hoistedIds:[]},o.set(e,l),a.push(l),t.set(e,[]),n.set(e,[])),l},d=null;for(let o of e){if("user"===o.role||"system"===o.role){d=null;continue}if("assistant"!==o.role)continue;let e=Array.isArray(o.tool_calls)?o.tool_calls:[],a=[],u=[];for(let t of e){var c;if("function"!==t.type)continue;if(eq(null==(c=t.function)?void 0:c.name)){u.push(t);continue}let e=t.id,n=e?i.get(e):void 0;e&&r.add(e),a.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))})}(o),f=a.length>0||u.length>0;if(p){d=o.id,f&&(s(o.id),t.get(o.id).push(...a),n.get(o.id).push(...u));continue}if(f)if(d){let e=s(d);t.get(d).push(...a),n.get(d).push(...u),e.memberIds.push(o.id),e.hoistedIds.push(o.id),l.add(o.id)}else d=o.id,s(o.id),t.get(o.id).push(...a),n.get(o.id).push(...u)}return{pairsByAnchorId:t,handoffsByAnchorId:n,hoistedAssistantIds:l,consumedToolCallIds:r,groups:a}})(t),[t]),U=(0,r.useMemo)(()=>(function(e){let t=new Set;if(!Array.isArray(e))return t;for(let l of e){if("assistant"!==l.role)continue;let e=l.tool_calls;if(Array.isArray(e))for(let l of e){var n;"function"===l.type&&eq(null==(n=l.function)?void 0:n.name)&&"string"==typeof l.id&&l.id&&t.add(l.id)}}return t})(t),[t]),q=(0,r.useMemo)(()=>new Set(P.map(e=>e.id)),[P]),{renderPairsById:B,renderHandoffsById:J,suppressedIds:G}=(0,r.useMemo)(()=>{let e=new Map,t=new Map,n=new Set;for(let a of L){var l,r,o;let i=null!=(l=W.get(a.anchorId))?l:[],s=null!=(r=F.get(a.anchorId))?r:[],d=null!=(o=a.memberIds.find(e=>q.has(e)))?o:a.anchorId;for(let l of(i.length>0&&e.set(d,i),s.length>0&&t.set(d,s),a.hoistedIds))l!==d&&n.add(l)}return{renderPairsById:e,renderHandoffsById:t,suppressedIds:n}},[L,W,F,q]),[K,Q]=r.useState(null),[X,V]=r.useState(null),[Z,$]=r.useState({}),ee=(0,r.useCallback)((e,t)=>{eG.debug("handleMenuOpen called with messageId: ".concat(t)),Q(e.currentTarget),V(t)},[]),et=(0,r.useCallback)((e,t)=>{$(n=>({...n,[e]:t}))},[]),en=()=>{Q(null),V(null)},el=()=>{X&&(null==x||x(X),en())},er=(0,r.useMemo)(()=>{let e=new Map;for(let t of a)e.set(t.id,t.label);return e},[a]),eo=(0,r.useMemo)(()=>X&&t.find(e=>e.id===X)||null,[X,t]);return(0,l.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:[M>0&&(0,l.jsx)(i.default,{sx:{display:"flex",justifyContent:"center"},children:(0,l.jsxs)(h.A,{size:"small",variant:"outlined",onClick:()=>D(e=>e+200),children:["Show earlier messages (",M," more)"]})}),P.map((e,t)=>eQ(e)||"tool"===e.role&&"string"==typeof e.tool_call_id&&U.has(e.tool_call_id)||"tool"===e.role&&"string"==typeof e.tool_call_id&&_.has(e.tool_call_id)||G.has(e.id)?null:(0,l.jsx)(eZ,{message:e,nodeLabel:e.processNodeId?er.get(e.processNodeId):void 0,availableNodes:a,showRaw:!!Z[e.id],toolCallPairs:B.get(e.id),onAppMessage:S,onOpenInCanvas:C,canvasKeys:k,hoistedHandoffs:J.get(e.id),isBeingEdited:!!d&&e.id===d,onMenuOpen:ee,onToggleRaw:et},e.id||"msg-".concat(M+t))),I.map(e=>(0,l.jsx)(i.default,{"data-testid":"queued-bubble",sx:{display:"flex",justifyContent:"flex-end",opacity:.6},children:(0,l.jsxs)(i.default,{sx:{maxWidth:"70%",bgcolor:"primary.light",color:"primary.contrastText",borderRadius:2,px:2,py:1,display:"flex",flexDirection:"column",gap:.5},children:[(0,l.jsx)(p.default,{variant:"body2",sx:{whiteSpace:"pre-wrap",wordBreak:"break-word"},children:e.content||(e.attachments.length>0?"".concat(e.attachments.length," attachment(s)"):"")}),(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5,justifyContent:"flex-end"},children:[!E&&(0,l.jsx)(ep.default,{size:10,color:"inherit"}),(0,l.jsx)(p.default,{variant:"caption",sx:{opacity:.85},children:null!=E?E:"Queued"})]})]})},e.id)),(0,l.jsxs)(eC.A,{anchorEl:K,open:!!K,onClose:en,children:[eo&&(()=>{eG.debug("Entering menu item rendering logic",{activeMessageId:X}),eG.debug("Active message object for menu:",eo),eG.debug("Active message role for menu:",null==eo?void 0:eo.role);try{if("user"===eo.role&&"string"==typeof eo.content&&x)return(0,l.jsxs)(H.A,{onClick:el,children:[(0,l.jsx)(ek.A,{children:(0,l.jsx)(z.A,{fontSize:"small"})}),(0,l.jsx)(O.A,{children:"Edit Message"})]});return null}catch(e){return eG.error("Error rendering Edit Message menu item",{error:e}),null}})(),(0,l.jsxs)(H.A,{onClick:()=>{X&&(c(X),en())},children:[(0,l.jsx)(ek.A,{children:(0,l.jsx)(eT.A,{fontSize:"small"})}),(0,l.jsx)(O.A,{children:(null==eo?void 0:eo.disabled)?"Enable Message":"Disable Message"})]}),(0,l.jsxs)(H.A,{onClick:()=>{X&&(g(X),en())},children:[(0,l.jsx)(ek.A,{children:(0,l.jsx)(eN.A,{fontSize:"small"})}),(0,l.jsx)(O.A,{children:"Split Conversation Here"})]})]}),o&&(0,l.jsx)(e$,{elicitation:o,onSubmit:b,onCancel:y}),w&&(0,l.jsx)(e1,{question:w,onAnswer:j,onDecline:A}),n&&n.length>0&&(0,l.jsxs)(eg.A,{elevation:2,sx:{p:2,mt:2,bgcolor:"warning.light",border:"1px solid",borderColor:"warning.main",borderRadius:2},children:[(0,l.jsxs)(p.default,{variant:"h6",sx:{mb:1,display:"flex",alignItems:"center"},children:[(0,l.jsx)(eM.A,{sx:{mr:1}})," Tool Approval Required"]}),(0,l.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)=>{var n;let r=(0,eH.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,l.jsxs)(ex.A,{defaultExpanded:!0,sx:{mb:1,"&:before":{display:"none"},boxShadow:1},children:[(0,l.jsx)(em.A,{expandIcon:(0,l.jsx)(Y.A,{}),children:(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",width:"100%"},children:[(0,l.jsx)(eM.A,{fontSize:"small",sx:{mr:1,color:"primary.main"}}),(0,l.jsx)(p.default,{variant:"subtitle2",sx:{fontWeight:"bold",flexGrow:1},children:r}),(0,l.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,l.jsxs)(ev.A,{sx:{pt:0},children:[(0,l.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,l.jsx)(u.A,{label:"Rejection reason (optional)",placeholder:"e.g. write to dist/ instead",value:null!=(n=T[e.id])?n:"",onChange:t=>N(n=>({...n,[e.id]:t.target.value})),multiline:!0,minRows:1,maxRows:4,fullWidth:!0,size:"small",sx:{mt:1,mb:1}}),(0,l.jsxs)(i.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:1,flexWrap:"wrap"},children:[(0,l.jsx)(h.A,{variant:"outlined",color:"error",size:"small",startIcon:(0,l.jsx)(eF.A,{}),onClick:()=>{var t;return v&&v(e.id,!1,(null==(t=T[e.id])?void 0:t.trim())||void 0)},disabled:!v,children:"Reject"}),(0,l.jsx)(h.A,{variant:"outlined",color:"error",size:"small",onClick:()=>v&&v(e.id,!0),disabled:!v,title:"Always deny this tool — saves a rule so future calls are auto-denied",children:"Always Deny"}),(0,l.jsx)(h.A,{variant:"outlined",color:"success",size:"small",startIcon:(0,l.jsx)(eW.A,{}),onClick:()=>m&&m(e.id,!0),disabled:!m,title:"Always allow this tool — saves a rule so future calls are auto-approved",children:"Always Allow"}),(0,l.jsx)(h.A,{variant:"contained",color:"success",size:"small",startIcon:(0,l.jsx)(eW.A,{}),onClick:()=>m&&m(e.id),disabled:!m,children:"Approve"})]})]})]},e.id||"ptc-".concat(t))})]})]})};var e5=n(84869);let e6=(0,eJ.h)("frontend/services/transcription");async function e4(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{onProgress:n,onStatusChange:l,language:r}=t;try{if(e6.debug("Starting transcription service"),l&&l("Initializing transcription..."),!(0,e5.G)().supported)throw Error("Web Speech API is not supported in this browser");l&&l("Using browser speech recognition...");let t=await (0,e5.S)(e,{language:r,onInterimResult:e=>{l&&l("Transcribing: ".concat(e)),n&&n(50)}});return l&&l("Transcription completed"),e6.debug("Web Speech API transcription completed successfully",{textLength:t.length}),{text:t,success:!0,engine:"webspeech"}}catch(e){return e6.error("Transcription failed",{error:e}),l&&l("Transcription failed"),{text:"Transcription failed. Please check if your browser supports speech recognition.",success:!1,error:e instanceof Error?e.message:String(e)}}}var e8=n(9164),e3=n(35205),e7=n(77073),e9=n(9693),te=n(4823),tt=n(76122),tn=n(22539),tl=n(33567),tr=n(77758);let to=new Set(["start","process","subflow"]),ta=e=>{var t,n;return null!=(n=e.type)?n:null==(t=e.data)?void 0:t.type},ti=e=>{let{flow:t,selectedNodeId:n,onSelect:o,onClose:a}=e,i=(0,tl.A)(),s=(0,r.useMemo)(()=>((null==t?void 0:t.nodes)||[]).map(e=>{let t=to.has(ta(e)||""),l=e.id===n;return{...e,draggable:!1,selectable:!1,style:{...e.style||{},opacity:t?1:.35,cursor:t?"pointer":"default",borderRadius:8,boxShadow:l?"0 0 0 3px ".concat(i.palette.primary.main):void 0,transition:"box-shadow 120ms ease"}}}),[null==t?void 0:t.nodes,n,i.palette.primary.main]),d=(0,r.useMemo)(()=>((null==t?void 0:t.edges)||[]).filter(e=>e.source&&e.target&&e.sourceHandle&&e.targetHandle),[null==t?void 0:t.edges]),c=(0,r.useMemo)(()=>({type:"custom",animated:!1,style:{stroke:i.palette.text.secondary,strokeWidth:2},markerEnd:{type:tt.TG.ArrowClosed,width:20,height:20,color:i.palette.text.secondary}}),[i.palette.text.secondary]);return(0,l.jsx)(tn.Gc,{nodes:s,edges:d,nodeTypes:tr.c_,edgeTypes:tr.nd,defaultEdgeOptions:c,connectionLineType:tt.Do.SmoothStep,fitView:!0,minZoom:.1,maxZoom:2,onNodeClick:(e,t)=>{to.has(ta(t)||"")&&(o(t.id),a())},nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,deleteKeyCode:null,proOptions:{hideAttribution:!0},children:(0,l.jsx)(tn.VS,{})})},ts=e=>{var t,n;let{open:r,flow:o,selectedNodeId:a,allowAutomatic:s,onSelect:d,onClose:c}=e,u=!!(o&&(null!=(n=null==(t=o.nodes)?void 0:t.length)?n:0)>0);return(0,l.jsxs)(m.A,{open:r,onClose:c,maxWidth:"lg",fullWidth:!0,children:[(0,l.jsx)(v.A,{children:"Pick a node to run on"}),(0,l.jsxs)(b.A,{dividers:!0,sx:{p:0},children:[(0,l.jsx)(i.default,{sx:{px:2,pt:1.5},children:(0,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",children:["Click a ",(0,l.jsx)("strong",{children:"Start"}),", ",(0,l.jsx)("strong",{children:"Process"}),", or"," ",(0,l.jsx)("strong",{children:"Subflow"})," node. Other nodes and edges can't be picked."]})}),(0,l.jsx)(i.default,{sx:{height:"62vh",width:"100%"},children:u?(0,l.jsx)(tn.Ln,{children:(0,l.jsx)(ti,{flow:o,selectedNodeId:a,onSelect:d,onClose:c})}):(0,l.jsx)(i.default,{sx:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center"},children:(0,l.jsx)(p.default,{variant:"body2",color:"text.secondary",children:"No flow to display."})})})]}),(0,l.jsxs)(w.A,{children:[s&&(0,l.jsx)(h.A,{startIcon:(0,l.jsx)(te.A,{}),onClick:()=>{d(null),c()},children:"Automatic"}),(0,l.jsx)(i.default,{sx:{flex:1}}),(0,l.jsx)(h.A,{onClick:c,children:"Cancel"})]})]})};var td=n(74879);let tc=(0,eJ.h)("frontend/components/Chat/ChatInput"),tu=e=>{var t,n;let{onSendMessage:o,disabled:a=!1,requireApproval:c=!1,onRequireApprovalChange:g,executeInDebugger:x=!1,onExecuteInDebuggerChange:y,availableNodes:j=[],flow:A=null,currentNodeId:S=null,nodeOverrideActive:C=!1,onSelectNode:k,editing:I=null,onEditingContentChange:E,onEditingNodeChange:N,onSaveEdit:R,onCancelEdit:D}=e,{settings:M}=(0,e8.useStorage)(),[P,O]=(0,r.useState)(""),[W,F]=(0,r.useState)([]),[_,L]=(0,r.useState)(!1),[H,U]=(0,r.useState)(0),[q,B]=(0,r.useState)(null),J=(0,r.useRef)(null),G=(0,r.useRef)(null),K=(0,r.useRef)([]),[Q,Y]=(0,r.useState)(!1),X=!!I,V=X?null!=(t=null==I?void 0:I.nodeId)?t:null:S,Z=(e=>{var t;return(null==(t=j.find(t=>t.id===e))?void 0:t.label)||(e?"".concat(e.substring(0,6),"..."):"Start")})(V),[$,ee]=(0,r.useState)(!1),[et,en]=(0,r.useState)(""),[el,er]=(0,r.useState)(""),[eo,ea]=(0,r.useState)("document"),[ei,es]=(0,r.useState)(!1),[ed,ec]=(0,r.useState)(0),[eu,eh]=(0,r.useState)(""),ex=()=>{I&&I.content.trim()&&(null==R||R())},em=()=>{(P.trim()||W.length>0)&&(tc.debug("Sending message",{messageLength:P.length,attachmentsCount:W.length}),o(P,W),O(""),F([]))},ev=async e=>{let t=e.target.files;if(!t||0===t.length)return;let n=t[0];tc.debug("File selected",{fileName:n.name,fileSize:n.size,fileType:n.type}),er("Processing ".concat(n.name)),ea("document"),en(""),es(!0),ee(!0);try{let e=await ey(n);tc.debug("File read successfully",{contentLength:e.length}),en(e),es(!1)}catch(e){tc.error("Error reading file:",e),en("Error reading file. Please try again with a text file."),es(!1)}J.current&&(J.current.value="")},ey=e=>new Promise((t,n)=>{let l=new FileReader;l.onload=e=>{var l;(null==(l=e.target)?void 0:l.result)?t(e.target.result):n(Error("Failed to read file"))},l.onerror=()=>{n(Error("Error reading file"))},l.readAsText(e)}),ew=async()=>{tc.debug("Starting audio recording");try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});tc.debug("Audio stream obtained successfully"),K.current=[];let t=new MediaRecorder(e);G.current=t,t.ondataavailable=e=>{e.data.size>0&&K.current.push(e.data)},t.onstop=async()=>{let t=new Blob(K.current,{type:"audio/wav"});er("Audio Recording"),ea("audio"),en(""),es(!0),ee(!0);try{if(((null==M?void 0:M.speech)||{enabled:!0,modelSize:"base",autoDownload:!1}).enabled){eh("Initializing transcription..."),ec(0);let e=await e4(t,{onProgress:ec,onStatusChange:eh,language:navigator.language});if(e.success){let t=e.text;en(t),tc.debug("Transcription successful",{textLength:e.text.length,engine:e.engine})}else en("Error transcribing audio: ".concat(e.error,".")),tc.error("Transcription failed",{error:e.error})}else en("Speech recognition is disabled in settings. Enable it to get automatic transcriptions.")}catch(e){tc.error("Error handling audio recording",{error:e}),en("Failed to process audio: ".concat(e))}finally{es(!1),e.getTracks().forEach(e=>e.stop())}},t.start(),L(!0);let n=setInterval(()=>{U(e=>e+1)},1e3);B(n)}catch(e){tc.error("Error starting recording:",e),alert("Could not access microphone. Please check permissions.")}};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(eg.A,{elevation:3,sx:{p:2,display:"flex",flexDirection:"column",borderRadius:2},children:[W.length>0&&(0,l.jsx)(i.default,{sx:{mb:2,display:"flex",flexWrap:"wrap",gap:1},children:W.map(e=>(0,l.jsxs)(eg.A,{variant:"outlined",sx:{p:1,display:"flex",alignItems:"center",borderRadius:1,bgcolor:"background.default"},children:["image"===e.type?(0,l.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,l.jsx)(eR.A,{fontSize:"small",sx:{mr:1}}):(0,l.jsx)(eD.A,{fontSize:"small",sx:{mr:1}}),(0,l.jsx)(p.default,{variant:"body2",noWrap:!0,sx:{maxWidth:150},children:e.originalName||"".concat(e.type," attachment")}),(0,l.jsx)(d.A,{size:"small",onClick:()=>(e=>{tc.debug("Removing attachment",{id:e}),F(W.filter(t=>t.id!==e))})(e.id),sx:{ml:1},children:(0,l.jsx)(e7.A,{fontSize:"small"})})]},e.id))}),X&&(0,l.jsxs)(i.default,{sx:{mb:1,display:"flex",alignItems:"center",gap:1},children:[(0,l.jsx)(f.A,{icon:(0,l.jsx)(z.A,{}),label:"Editing message",size:"small",color:"warning",variant:"outlined"}),(0,l.jsx)(p.default,{variant:"caption",color:"text.secondary",children:"Enter to save \xb7 Esc to cancel"})]}),(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"flex-end"},children:[(0,l.jsx)(u.A,{fullWidth:!0,multiline:!0,maxRows:X?12:4,"data-tour":"chat-input",placeholder:X?"Edit message...":"Type a message...",value:X?null!=(n=null==I?void 0:I.content)?n:"":P,onChange:e=>{X?null==E||E(e.target.value):O(e.target.value)},onKeyDown:e=>{"Enter"!==e.key||e.shiftKey?"Escape"===e.key&&X&&(e.preventDefault(),null==D||D()):(e.preventDefault(),X?ex():(tc.debug("Enter key pressed, sending message"),em()))},onPaste:e=>{var t;let n=null==(t=e.clipboardData)?void 0:t.items;if(!n)return;let l=[];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&&l.push(e)}}0!==l.length&&(e.preventDefault(),tc.debug("Pasting image attachment(s)",{count:l.length}),l.forEach(e=>{let t=new FileReader;t.onload=t=>{var n;let l=null==(n=t.target)?void 0:n.result;if("string"!=typeof l)return;let r=(e.type.split("/")[1]||"png").split("+")[0];F(t=>[...t,{id:(0,td.A)(),type:"image",content:l,originalName:e.name&&!/^image\.\w+$/i.test(e.name)?e.name:"Pasted image.".concat(r)}])},t.onerror=()=>tc.error("Failed to read pasted image"),t.readAsDataURL(e)}))},disabled:!X&&a,variant:"outlined",autoFocus:X,sx:{mr:1},InputProps:{sx:{borderRadius:2}}}),!X&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.A,{title:"Attach document",children:(0,l.jsx)(d.A,{color:"primary",onClick:()=>{var e;tc.debug("File selection triggered"),null==(e=J.current)||e.click()},disabled:a||_,children:(0,l.jsx)(eR.A,{})})}),(0,l.jsx)("input",{type:"file",ref:J,onChange:ev,style:{display:"none"},accept:".txt,.md,.json,.csv,.html,.xml,.js,.ts,.jsx,.tsx,.css,.scss"}),(0,l.jsx)(s.A,{title:_?"Stop recording":"Record audio",children:(0,l.jsxs)(d.A,{color:_?"error":"primary",onClick:_?()=>{tc.debug("Stopping audio recording"),G.current&&"inactive"!==G.current.state&&(G.current.stop(),L(!1),q&&(clearInterval(q),B(null)),U(0))}:ew,disabled:a,children:[(0,l.jsx)(eD.A,{}),_&&(0,l.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"))})(H)})]})})]}),X?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.A,{title:"Save edit",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{color:"primary",onClick:ex,disabled:!(null==I?void 0:I.content.trim()),children:(0,l.jsx)(e9.A,{})})})}),(0,l.jsx)(s.A,{title:"Cancel edit",children:(0,l.jsx)(d.A,{color:"default",onClick:()=>null==D?void 0:D(),children:(0,l.jsx)(e7.A,{})})})]}):(0,l.jsx)(s.A,{title:"Send message",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{color:"primary",onClick:em,disabled:a||!P.trim()&&0===W.length,children:(0,l.jsx)(e3.A,{})})})})]})," ",(g||(k||X)&&j.length>0)&&(0,l.jsxs)(i.default,{sx:{mt:1,display:"flex",justifyContent:"flex-start",alignItems:"center",flexWrap:"wrap",gap:1},children:[(k||X)&&j.length>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.A,{title:X?"Node this message runs on — click to pick from the flow":C?"Next message will run on this manually picked node — click to change":"Node the next message will run on — click to pick from the flow",children:(0,l.jsx)(f.A,{icon:(0,l.jsx)(T.A,{}),label:Z,size:"small",color:X||C?"primary":"default",variant:X||C?"filled":"outlined",onClick:()=>Y(!0),disabled:!X&&a})}),(0,l.jsx)(ts,{open:Q,flow:A,selectedNodeId:V,allowAutomatic:!X,onSelect:e=>{X?null==N||N(e):null==k||k(e)},onClose:()=>Y(!1)})]}),g&&(0,l.jsx)(ef.A,{control:(0,l.jsx)(eb.A,{checked:c,onChange:e=>g(e.target.checked),size:"small",disabled:a}),label:(0,l.jsx)(p.default,{variant:"caption",children:"Require Tool Approvals"}),sx:{mr:"auto"}}),y&&(0,l.jsx)(ef.A,{control:(0,l.jsx)(eb.A,{checked:x,onChange:e=>y(e.target.checked),size:"small",disabled:a}),label:(0,l.jsx)(p.default,{variant:"caption",children:"Execute in Debugger"}),sx:{ml:2}})]})," "]})," ",(0,l.jsxs)(m.A,{open:$,onClose:()=>!ei&&ee(!1),maxWidth:"md",fullWidth:!0,children:[(0,l.jsxs)(v.A,{children:[el,!ei&&(0,l.jsx)(d.A,{"aria-label":"close",onClick:()=>ee(!1),sx:{position:"absolute",right:8,top:8},children:(0,l.jsx)(e7.A,{})})]}),(0,l.jsx)(b.A,{dividers:!0,children:ei?(0,l.jsxs)(i.default,{sx:{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",p:4},children:[(0,l.jsx)(ep.default,{value:"audio"===eo&&ed?ed:void 0,variant:"audio"===eo&&ed>0?"determinate":"indeterminate"}),"audio"===eo&&(0,l.jsxs)(i.default,{sx:{mt:2,textAlign:"center"},children:[(0,l.jsx)(p.default,{variant:"body2",children:eu||"Processing audio..."}),ed>0&&(0,l.jsxs)(p.default,{variant:"body2",color:"text.secondary",sx:{mt:1},children:[Math.round(ed),"%"]})]})]}):(0,l.jsx)(u.A,{multiline:!0,fullWidth:!0,minRows:10,maxRows:20,value:et,onChange:e=>en(e.target.value),variant:"outlined",placeholder:"document"===eo?"Document content":"Audio transcription"})}),(0,l.jsxs)(w.A,{children:[(0,l.jsx)(h.A,{onClick:()=>ee(!1),disabled:ei,children:"Cancel"}),(0,l.jsx)(h.A,{onClick:()=>{tc.debug("Adding attachment",{type:eo,titleLength:el.length}),F([...W,{id:(0,td.A)(),type:eo,content:et,originalName:el}]),ee(!1)},variant:"contained",disabled:ei||!et.trim(),children:"Add to Message"})]})]})]})};var tp=n(66177),tf=n(39486),th=n(82446),tg=n(37596);let tx=e=>{let{entries:t,activeKey:n,onSelectTab:o,onCloseTab:a,onAppMessage:c}=e,u=(0,tl.A)(),[f,h]=(0,r.useState)(!1),[g,x]=(0,r.useState)(!1),[m,v]=(0,r.useState)([]),b=(0,r.useMemo)(()=>new Set(t.map(e=>e.key)),[t]),y=(0,r.useMemo)(()=>m.filter(e=>b.has(e)),[m,b]),w=(0,r.useMemo)(()=>y.length>0?y:n?[n]:[],[y,n]),j=(0,r.useMemo)(()=>new Set(w),[w]),A=Math.max(1,Math.ceil(Math.sqrt(w.length)));return 0===t.length?null:(0,l.jsxs)(i.default,{"data-testid":"dev-canvas-dock",sx:{borderTop:1,borderColor:"divider",bgcolor:"background.paper",display:"flex",flexDirection:"column",minHeight:0,...g?{position:"fixed",inset:16,zIndex:1300,borderRadius:1,boxShadow:6,border:1}:{maxHeight:"45vh"}},children:[(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5,px:1,py:.5,bgcolor:"action.hover"},children:[(0,l.jsx)(eL.A,{fontSize:"small",color:"primary"}),(0,l.jsx)(p.default,{variant:"caption",sx:{fontWeight:600,mr:1},children:"Canvas"}),(0,l.jsx)(i.default,{sx:{display:"flex",gap:.5,overflowX:"auto",flex:1,minWidth:0},children:t.map(e=>{let t=e.key===n,r=y.includes(e.key);return(0,l.jsxs)(i.default,{onClick:()=>o(e.key),sx:{display:"flex",alignItems:"center",gap:.5,px:1,py:.25,borderRadius:1,cursor:"pointer",whiteSpace:"nowrap",border:1,borderColor:t?"primary.main":"divider",bgcolor:t?"action.selected":"transparent"},title:"".concat(e.serverName," — ").concat(e.uri),children:[(0,l.jsx)(tp.A,{color:"primary",variant:"dot",invisible:!e.unread,children:(0,l.jsx)(p.default,{variant:"caption",sx:{fontWeight:t?600:400},children:function(e){return e.replace(/\/+$/,"").split("/").pop()||e}(e.uri)})}),(0,l.jsx)(p.default,{variant:"caption",color:"text.secondary",sx:{fontSize:"0.65rem"},children:e.serverName}),(0,l.jsx)(s.A,{title:r?"Remove from split":"Add to split view",children:(0,l.jsx)(d.A,{size:"small",sx:{p:.25},color:r?"primary":"default",onClick:t=>{t.stopPropagation(),(e=>{v(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])})(e.key)},"aria-label":"Toggle split view",children:(0,l.jsx)(tg.A,{sx:{fontSize:14}})})}),(0,l.jsx)(s.A,{title:"Close",children:(0,l.jsx)(d.A,{size:"small",sx:{p:.25},onClick:t=>{t.stopPropagation(),a(e.key)},"aria-label":"Close canvas tab",children:(0,l.jsx)(e7.A,{sx:{fontSize:14}})})})]},e.key)})}),(0,l.jsx)(s.A,{title:g?"Exit fullscreen":"Fullscreen",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>x(e=>!e),"aria-label":"Toggle canvas fullscreen",children:g?(0,l.jsx)(th.A,{fontSize:"small"}):(0,l.jsx)(tf.A,{fontSize:"small"})})}),(0,l.jsx)(s.A,{title:f?"Expand canvas":"Collapse canvas",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>h(e=>!e),"aria-label":"Toggle canvas collapse",children:f?(0,l.jsx)(X.A,{fontSize:"small"}):(0,l.jsx)(Y.A,{fontSize:"small"})})})]}),(0,l.jsx)(i.default,{sx:{display:f?"none":"grid",gridTemplateColumns:"repeat(".concat(A,", minmax(0, 1fr))"),gap:1,p:1,flex:1,minHeight:0,overflow:"hidden"},children:t.map(e=>{let t=!f&&j.has(e.key);return(0,l.jsx)(i.default,{sx:{display:t?"flex":"none",flexDirection:"column",minHeight:0,border:1,borderColor:"divider",borderRadius:1,overflow:"hidden",bgcolor:"dark"===u.palette.mode?"#111":"#fff"},children:(0,l.jsx)(eB.A,{docked:!0,visible:t,serverName:e.serverName,uri:e.uri,toolName:e.toolName,toolArgs:e.latestToolArgs,toolResultContent:e.latestResultContent,onAppMessage:c})},e.key)})})]})},tm={entries:{},order:[],activeKey:null};function tv(e,t){return"".concat(e,"::").concat(t)}function tb(e,t){var n;return null!=(n=e[t])?n:[]}function ty(e,t){if(!(t in e))return e;let n={...e};return delete n[t],n}function tw(e,t,n){let l=tb(e,t),r=l.filter(e=>e.id!==n);if(r.length===l.length)return e;let o={...e};return r.length>0?o[t]=r:delete o[t],o}var tj=n(25731),tA=n(62617),tS=n(12857),tC=n(16186);let tk={byIndex:{}};function tI(e,t,n){for(let l=0;l<t;l++)e[l]||(e[l]={laneIndex:l,laneCount:t,label:"Lane ".concat(l+1,"/").concat(t),status:"pending",lastEventAt:n})}let tE=[""," before breakfast"," under a full moon"," with expert supervision"," somewhere off the map"," according to ancient custom"," while nobody is looking"," for science"," one tiny step at a time"," against all reasonable advice"],tz=["Painting the fence","Watching the 1954 World Cup","Drying behind the ears","Attending the first moon landing","Fighting in the Thirty Years’ War","Discovering fire","Playing with the cats","Cutting down a tree","Plumbing a drain","Eating a sandwich","Committing tax fraud","Awaiting GTA 7","Going on a demonstration","Driving in the left lane","Repairing an old chair","Exploring magnetism","Teaching a goldfish algebra","Alphabetizing the spice rack","Polishing a brass telescope","Folding a fitted sheet","Training for the snail marathon","Counting the rings of Saturn","Sharpening a box of crayons","Negotiating with the squirrels","Rehearsing a dramatic entrance","Mapping an imaginary island","Baking a suspiciously round pie","Tuning a haunted piano","Watering the plastic plants","Untangling holiday lights","Building a pillow fortress","Decoding the grocery list","Interviewing a garden gnome","Organizing the sock drawer","Following a trail of breadcrumbs","Inventing a quieter kazoo","Dusting the dinosaur bones","Launching a paper airplane","Measuring the speed of gossip","Teaching robots to whistle","Calibrating the sundial","Searching for buried treasure","Painting clouds on the ceiling","Refilling the office stapler","Herding digital cats","Consulting the ancient scrolls","Testing the emergency hammock","Translating whale songs","Perfecting the secret handshake","Winding the grandfather clock","Chasing the northern lights","Sailing across a coffee cup","Planting a tiny forest","Borrowing sugar from the neighbors","Learning the penguin shuffle","Auditioning for a silent movie","Restoring a medieval tapestry","Naming every star","Packing for an expedition","Composing an elevator symphony","Inspecting the castle moat","Reading tea leaves","Assembling a model volcano","Studying the migration of sandwiches","Racing a steam locomotive","Picnicking beside a black hole","Practicing wizard etiquette","Delivering mail by pigeon","Searching the library stacks","Brewing a heroic cup of tea","Drawing moustaches on portraits","Balancing the household budget","Learning to speak dolphin","Mending a pirate sail","Surveying the ocean floor","Opening a detective agency","Carving a wooden spoon","Observing the neighborhood dragons","Crossing the Silk Road","Preparing for the robot uprising","Writing a strongly worded postcard","Spinning plates at the circus","Evicting ghosts from the attic","Charting the Bermuda Triangle","Making friends with the ravens","Designing a moon garden","Investigating the cookie jar","Practicing synchronized napping","Mining cheese on the Moon","Repairing the time machine","Conducting the dawn chorus","Waiting for paint to dry","Solving the sphinx’s riddle","Building a better mousetrap","Exploring an underwater city","Sorting the wizard’s mail","Escaping an awkward conversation","Raking leaves in a hurricane","Guarding the last doughnut","Looking busy"].flatMap(e=>tE.map(t=>"".concat(e).concat(t,"…"))),tT=e=>{let{lane:t,onOpenLane:n}=e,r=!!t.laneConversationId&&!!n,o="pending"===t.status;return(0,l.jsxs)(i.default,{onClick:r?()=>n(t.laneConversationId):void 0,sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.25,borderRadius:1,...r&&{cursor:"pointer","&:hover":{bgcolor:"action.hover",textDecoration:"underline"}}},children:["running"===t.status&&(0,l.jsx)(ep.default,{size:14,sx:{flexShrink:0}}),"completed"===t.status&&(0,l.jsx)(C.A,{sx:{fontSize:16,flexShrink:0},color:"success"}),"error"===t.status&&(0,l.jsx)(tS.A,{sx:{fontSize:16,flexShrink:0},color:"error"}),o&&(0,l.jsx)(tC.A,{sx:{fontSize:16,flexShrink:0},color:"disabled"}),(0,l.jsxs)(p.default,{variant:"caption",color:o?"text.disabled":"textSecondary",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[t.label,o&&" — queued","running"===t.status&&t.activity&&(0,l.jsxs)(p.default,{component:"span",variant:"caption",color:"text.disabled",children:[" \xb7 ",t.activity]})]})]})},tN=e=>{var t;let{liveStats:n,onStop:o,stopDisabled:a,awaitingApproval:s,lanes:d,onOpenLane:c,onAttachDebugger:u}=e,[f,g]=(0,r.useState)(()=>Date.now()),[x,m]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=setInterval(()=>g(Date.now()),1e3);return()=>clearInterval(e)},[]);let v=n?Math.max(0,Math.round((f-n.startedAt)/1e3)):0,b=n?Math.round((f-n.lastEventAt)/1e3):0,y=!s&&!!n&&b>=60,w=n?Math.floor(n.startedAt/1e3)%tz.length:0,j=tz[(w+Math.floor(v/5))%tz.length],A=d?Object.values(d.byIndex).sort((e,t)=>e.laneIndex-t.laneIndex):[],S=A.length>0?(e=>{let t=e.filter(e=>"running"===e.status).length,n=e.filter(e=>"pending"===e.status).length,l=e.filter(e=>"completed"===e.status).length,r=e.filter(e=>"error"===e.status).length;if(0===t&&0===n&&r>0)return{text:"".concat(r,"/").concat(e.length," lanes failed — partial results"),warning:!0};let o=[t>0?"".concat(t," running"):"",n>0?"".concat(n," queued"):"",l>0?"".concat(l," done"):"",r>0?"".concat(r," failed"):""].filter(Boolean);return{text:"".concat(e.length," lanes — ").concat(o.join(", ")),warning:r>0}})(A):null;return(0,l.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",my:2,gap:.5},children:[(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:2},children:[s?(0,l.jsx)(tj.A,{fontSize:"small",color:"warning"}):(0,l.jsx)(ep.default,{size:20,color:y?"warning":"primary"}),(0,l.jsx)(p.default,{variant:"body2",color:"textSecondary",children:s?"Waiting for tool approval":(null==n?void 0:n.activeNode)?"Running: ".concat(n.activeNode):"Working…"}),u&&!s&&(0,l.jsx)(h.A,{variant:"outlined",color:"primary",size:"small",startIcon:(0,l.jsx)(tA.A,{fontSize:"small"}),onClick:()=>{m(!0),u()},disabled:x,children:x?"Attaching…":"Attach debugger"}),(0,l.jsx)(h.A,{variant:"outlined",color:"secondary",size:"small",onClick:o,disabled:a,children:"Stop"})]}),!s&&(0,l.jsx)(p.default,{variant:"caption",color:"text.disabled",sx:{fontStyle:"italic"},"aria-live":"polite",children:j}),S&&(0,l.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",alignItems:"stretch",minWidth:280,maxWidth:520},children:[(0,l.jsx)(p.default,{variant:"caption",color:S.warning?"warning.main":"textSecondary",sx:{px:1,fontWeight:500},children:S.text}),A.map(e=>(0,l.jsx)(tT,{lane:e,onOpenLane:c},e.laneIndex))]}),!s&&(0,l.jsxs)(p.default,{variant:"caption",color:y?"warning.main":"textSecondary",children:[(null!=(t=null==n?void 0:n.totalTokens)?t:0).toLocaleString()," tokens \xb7 ",v,"s elapsed",y?" \xb7 no activity for ".concat(b,"s — may be stuck"):""]})]})};var tR=n(52005),tD=n(54121);let tM=e=>{let{todos:t}=e;if(!t||0===t.length)return null;let n=t.filter(e=>"done"===e.status).length,r=t.length>0?Math.round(n/t.length*100):0;return(0,l.jsxs)(eg.A,{variant:"outlined",sx:{mt:2,p:1.5,borderRadius:2},children:[(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",mb:1},children:[(0,l.jsx)(p.default,{variant:"subtitle2",sx:{fontWeight:600},children:"Tasks"}),(0,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",children:[n," of ",t.length," done"]})]}),(0,l.jsx)(tR.A,{variant:"determinate",value:r,sx:{mb:1,borderRadius:1}}),(0,l.jsx)(i.default,{component:"ul",sx:{listStyle:"none",m:0,p:0},children:t.map(e=>(0,l.jsxs)(i.default,{component:"li",sx:{display:"flex",alignItems:"center",gap:1,py:.25},children:[function(e){switch(e){case"done":return(0,l.jsx)(C.A,{fontSize:"small",color:"success"});case"in_progress":return(0,l.jsx)(tD.A,{fontSize:"small",color:"info"});case"cancelled":return(0,l.jsx)(tS.A,{fontSize:"small",color:"disabled"});default:return(0,l.jsx)(tC.A,{fontSize:"small",color:"disabled"})}}(e.status),(0,l.jsx)(p.default,{variant:"body2",sx:{textDecoration:"done"===e.status||"cancelled"===e.status?"line-through":"none",color:"done"===e.status||"cancelled"===e.status?"text.secondary":"text.primary"},children:e.content})]},e.id))})]})};var tP=n(88538),tO=n(16963),tW=n(2456),tF=n(64792),t_=n(71356),tL=n(45202),tH=n(77998);let tU=e=>e>=1e3?"".concat((e/1e3).toFixed(e>=1e5?0:1),"k"):"".concat(e),tq=e=>{var t;let{usage:n,contextInfo:o,availableNodes:a}=e,[d,c]=(0,r.useState)(null);if(!n&&!o)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,x=n?Math.max(0,n.totalTokens-h):0,m=(null==o?void 0:o.contextWindow)&&o.contextWindow>0?Math.min(100,Math.round(o.promptTokens/o.contextWindow*100)):void 0;return(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1.5,flexShrink:0},children:[n&&x>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.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,l.jsx)(f.A,{icon:(0,l.jsx)(tH.A,{}),label:"".concat(tU(x)," tokens"),size:"small",variant:"outlined",onClick:e=>c(e.currentTarget),sx:{cursor:"pointer"}})}),(0,l.jsx)(tP.Ay,{open:!!d,anchorEl:d,onClose:()=>c(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:(0,l.jsxs)(i.default,{sx:{p:2,maxWidth:420},children:[(0,l.jsx)(p.default,{variant:"subtitle2",sx:{mb:1},children:"Token usage by node"}),(0,l.jsxs)(tO.A,{size:"small",children:[(0,l.jsx)(tW.A,{children:(0,l.jsxs)(tF.A,{children:[(0,l.jsx)(t_.A,{children:"Node"}),(0,l.jsx)(t_.A,{align:"right",children:"Prompt"}),(0,l.jsx)(t_.A,{align:"right",children:"Completion"}),(0,l.jsx)(t_.A,{align:"right",children:"Total"})]})}),(0,l.jsxs)(tL.A,{children:[u.map(e=>{let[t,n]=e;return(0,l.jsxs)(tF.A,{children:[(0,l.jsx)(t_.A,{children:(0,l.jsx)(s.A,{title:t,children:(0,l.jsx)("span",{children:(e=>{var t;return(null==(t=a.find(t=>t.id===e))?void 0:t.label)||"".concat(e.substring(0,8),"…")})(t)})})}),(0,l.jsx)(t_.A,{align:"right",children:n.promptTokens.toLocaleString()}),(0,l.jsx)(t_.A,{align:"right",children:n.completionTokens.toLocaleString()}),(0,l.jsx)(t_.A,{align:"right",children:n.totalTokens.toLocaleString()})]},t)}),(0,l.jsxs)(tF.A,{children:[(0,l.jsx)(t_.A,{sx:{fontWeight:"bold"},children:"Total"}),(0,l.jsx)(t_.A,{align:"right",sx:{fontWeight:"bold"},children:n.promptTokens.toLocaleString()}),(0,l.jsx)(t_.A,{align:"right",sx:{fontWeight:"bold"},children:n.completionTokens.toLocaleString()}),(0,l.jsx)(t_.A,{align:"right",sx:{fontWeight:"bold"},children:n.totalTokens.toLocaleString()})]})]})]}),h>0&&(0,l.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 (",x.toLocaleString(),") with those cached reads excluded."]})]})})]}),o&&void 0!==m&&(0,l.jsx)(s.A,{title:"Context of the latest call".concat(o.modelDisplayName?" (".concat(o.modelDisplayName,")"):"",": ").concat(o.promptTokens.toLocaleString()," of ").concat(o.contextWindow.toLocaleString()," tokens"),children:(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,minWidth:140},children:[(0,l.jsx)(tR.A,{variant:"determinate",value:m,color:m>=90?"error":m>=70?"warning":"primary",sx:{flex:1,height:6,borderRadius:3}}),(0,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:[tU(o.promptTokens),"/",tU(o.contextWindow)," (",m,"%)"]})]})}),o&&void 0===m&&(0,l.jsx)(s.A,{title:"Prompt size of the latest call".concat(o.modelDisplayName?" (".concat(o.modelDisplayName,")"):"",". Set the model's Context Window in its settings to see a usage meter."),children:(0,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",sx:{whiteSpace:"nowrap"},children:["ctx ",tU(o.promptTokens)]})})]})};var tB=n(75870),tJ=n(43076),tG=n(17897);let tK=(0,eJ.h)("frontend/components/Chat/QuickChatDialog"),tQ=e=>{let{open:t,onClose:n,onStart:o}=e,[a,s]=(0,r.useState)([]),[g,x]=(0,r.useState)([]),[y,j]=(0,r.useState)(!1),[A,S]=(0,r.useState)(null),[C,k]=(0,r.useState)(""),[I,E]=(0,r.useState)(""),[z,T]=(0,r.useState)({}),[N,R]=(0,r.useState)(!1),[D,M]=(0,r.useState)(null);(0,r.useEffect)(()=>{if(!t)return;let e=!1;return j(!0),S(null),(async()=>{try{let[t,n]=await Promise.all([tJ.N.loadModels(),tG.S.loadServerConfigs()]);if(e)return;s(t);let l=Array.isArray(n)?n.filter(e=>!e.disabled).map(e=>e.name):[];x(l),k(e=>{var n;return e||(null==(n=t[0])?void 0:n.id)||""})}catch(t){e||(tK.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,r.useEffect)(()=>{t||(E(""),T({}),M(null),R(!1))},[t]);let P=(0,r.useCallback)(e=>{T(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}}})},[]),O=(0,r.useCallback)(async e=>{T(t=>{var n;let l=null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!1};return{...t,[e]:{...l,expanded:!l.expanded}}});let t=z[e];if(!(null==t?void 0:t.available)&&!(null==t?void 0:t.loading)){T(t=>{var n;return{...t,[e]:{...null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!0},loading:!0}}});try{let{tools:t}=await tG.S.listServerTools(e),n=Array.isArray(t)?t.map(e=>e.name).filter(Boolean):[];T(t=>{var l;return{...t,[e]:{...null!=(l=t[e])?l:{selected:!1,tools:null,expanded:!0},available:n,loading:!1}}})}catch(t){tK.warn("Failed to load tools for ".concat(e),t),T(t=>{var n;return{...t,[e]:{...null!=(n=t[e])?n:{selected:!1,tools:null,expanded:!0},available:[],loading:!1}}})}}},[z]),F=(0,r.useCallback)((e,t,n)=>{T(l=>{var r,o;let a=null!=(r=l[e])?r:{selected:!0,tools:null,expanded:!0},i=new Set(null!=(o=a.tools)?o:new Set(n));return i.has(t)?i.delete(t):i.add(t),{...l,[e]:{...a,selected:!0,tools:i}}})},[]),U=!!C&&!N&&!y,B=async()=>{if(!C)return void M("Pick a model to chat with.");R(!0),M(null);let e=g.filter(e=>{var t;return null==(t=z[e])?void 0:t.selected}).map(e=>{let t=z[e];return!t.tools||t.available&&t.tools.size===t.available.length?{name:e}:{name:e,enabledTools:[...t.tools]}});try{await o({modelId:C,servers:e,systemPrompt:I.trim()||void 0})}catch(e){tK.warn("Quick chat failed to start",e),M(e instanceof Error?e.message:"Could not start the quick chat."),R(!1)}};return(0,l.jsxs)(m.A,{open:t,onClose:N?void 0:n,maxWidth:"sm",fullWidth:!0,children:[(0,l.jsx)(v.A,{children:"Quick Chat"}),(0,l.jsxs)(b.A,{children:[(0,l.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,l.jsx)(c.A,{severity:"error",sx:{mb:2},children:A}),(0,l.jsxs)(_.A,{fullWidth:!0,size:"small",sx:{mb:2},disabled:y,children:[(0,l.jsx)(ey.A,{id:"quick-chat-model-label",children:"Model"}),(0,l.jsxs)(L.A,{labelId:"quick-chat-model-label",label:"Model",value:C,onChange:e=>k(e.target.value),children:[0===a.length&&(0,l.jsx)(H.A,{value:"",disabled:!0,children:y?"Loading…":"No models configured"}),a.map(e=>(0,l.jsx)(H.A,{value:e.id,children:e.displayName||e.name},e.id))]})]}),(0,l.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:I,onChange:e=>E(e.target.value),sx:{mb:2}}),(0,l.jsx)(W.A,{sx:{mb:1}}),(0,l.jsx)(p.default,{variant:"subtitle2",gutterBottom:!0,children:"MCP servers (optional)"}),y?(0,l.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,l.jsx)(ep.default,{size:22})}):0===g.length?(0,l.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=z[e],n=!!(null==t?void 0:t.selected),r=null==t?void 0:t.available,o=null==t?void 0:t.tools;return(0,l.jsxs)(i.default,{sx:{mb:.5},children:[(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center"},children:[(0,l.jsx)(ef.A,{sx:{flexGrow:1,mr:0},control:(0,l.jsx)(eb.A,{size:"small",checked:n,onChange:()=>P(e)}),label:(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,l.jsx)(p.default,{variant:"body2",children:e}),n&&(0,l.jsx)(f.A,{size:"small",variant:"outlined",label:o?"".concat(o.size," tool").concat(1===o.size?"":"s"):"all tools"})]})}),(0,l.jsx)(d.A,{size:"small",onClick:()=>O(e),"aria-label":"customize ".concat(e," tools"),children:(null==t?void 0:t.expanded)?(0,l.jsx)(X.A,{fontSize:"small"}):(0,l.jsx)(Y.A,{fontSize:"small"})})]}),(0,l.jsx)(q.A,{in:!!(null==t?void 0:t.expanded),unmountOnExit:!0,children:(0,l.jsx)(i.default,{sx:{pl:4,pb:1},children:(null==t?void 0:t.loading)?(0,l.jsx)(ep.default,{size:16}):r&&r.length>0?r.map(t=>{let n=!o||o.has(t);return(0,l.jsx)(ef.A,{sx:{display:"flex"},control:(0,l.jsx)(eb.A,{size:"small",checked:n,onChange:()=>F(e,t,r)}),label:(0,l.jsx)(p.default,{variant:"caption",children:t})},t)}):(0,l.jsx)(p.default,{variant:"caption",color:"text.secondary",children:r?"No tools reported (server may be offline).":""})})})]},e)}),D&&(0,l.jsx)(c.A,{severity:"error",sx:{mt:2},children:D})]}),(0,l.jsxs)(w.A,{children:[(0,l.jsx)(h.A,{onClick:n,disabled:N,children:"Cancel"}),(0,l.jsx)(h.A,{variant:"contained",onClick:B,disabled:!U,startIcon:N?(0,l.jsx)(ep.default,{size:16,color:"inherit"}):void 0,children:N?"Starting…":"Start chat"})]})]})};var tY=n(49692),tX=n(54178),tV=n(11305),tZ=n(48116),t$=n(90057),t0=n(33420),t1=n(53911);let t2={byNode:{},byResource:{},byResourceName:{},resourceVersion:0};function t5(e,t){return"".concat(e," ").concat(t)}var t6=n(59323),t4=n(72308),t8=n(6422),t3=n(48363);let t7=(0,eJ.h)("frontend/components/Chat/RunResourcesPanel"),t9=e=>{let{conversationId:t,refreshToken:n}=e,[o,a]=(0,r.useState)(null),[s,d]=(0,r.useState)(null);return((0,r.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||(a(Array.isArray(t.resources)?t.resources:[]),d(null))}).catch(t=>{e||(t7.warn("Failed to load run resources",t),d(t instanceof Error?t.message:String(t)))}),()=>{e=!0}},[t,n]),s)?(0,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",children:["Run data unavailable (",s,")"]}):null===o?(0,l.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",p:1},children:(0,l.jsx)(ep.default,{size:16})}):0===o.length?(0,l.jsx)(p.default,{variant:"caption",color:"text.secondary",children:"No data artifacts captured in this run yet."}):(0,l.jsx)(U.A,{dense:!0,disablePadding:!0,children:[...o].sort((e,t)=>t.createdAt-e.createdAt).map(e=>{var t;return(0,l.jsxs)(M.Ay,{disableGutters:!0,sx:{alignItems:"flex-start"},children:[(0,l.jsx)(ek.A,{sx:{minWidth:30,mt:.5},children:function(e){switch(e){case"image":return(0,l.jsx)(t4.A,{fontSize:"small",sx:{color:"#009688"}});case"audio":return(0,l.jsx)(t8.A,{fontSize:"small",sx:{color:"#009688"}});case"link":return(0,l.jsx)(t3.A,{fontSize:"small",sx:{color:"#009688"}});default:return(0,l.jsx)(t6.A,{fontSize:"small",sx:{color:"#009688"}})}}(e.kind)}),(0,l.jsx)(O.A,{primary:(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5,flexWrap:"wrap"},children:[(0,l.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,l.jsx)(f.A,{label:e.mimeType,size:"small",variant:"outlined",sx:{height:18,fontSize:"0.65rem"}}),(0,l.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,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",component:"span",sx:{wordBreak:"break-all"},children:["by ",function(e){var t,n,l,r,o,a,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!=(l=s.server)?l:"?","/").concat(null!=(r=s.toolName)?r:"?");case"capture":return"step ".concat(null!=(a=null!=(o=s.nodeName)?o:s.nodeId)?a:"?");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 ne=n(14913),nt=n(57883);let nn={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"}},nl={whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0,fontSize:"0.75rem",fontFamily:"inherit"},nr=e=>{let{role:t,content:n,toolCallNames:r,status:o,faded:a}=e;return(0,l.jsxs)(eg.A,{variant:"outlined",sx:{p:1,mb:.75,opacity:a?.55:1,borderStyle:a?"dashed":"solid"},children:[(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5,mb:.5,flexWrap:"wrap"},children:[(0,l.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"}),r&&r.length>0&&(0,l.jsx)(f.A,{size:"small",variant:"outlined",label:"\uD83D\uDD27 ".concat(r.join(", ")),sx:{maxWidth:"100%"}}),o&&"sent"!==o&&"system"!==o&&(0,l.jsx)(f.A,{size:"small",color:nn[o].color,label:nn[o].label})]}),n.trim().length>0?(0,l.jsx)("pre",{style:nl,children:n}):(0,l.jsx)(p.default,{variant:"caption",color:"textSecondary",children:"(no text content)"})]})},no=e=>{let{provenance:t}=e;return(0,l.jsxs)(i.default,{children:[(0,l.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,r;return(0,l.jsx)(nr,{role:e.role,content:null!=(n=e.preview)?n:"",toolCallNames:e.toolCallNames,status:e.status,faded:"sent"!==e.status&&"system"!==e.status},null!=(r=e.id)?r:"hist-".concat(t))}),t.some(e=>"sent"!==e.status&&"system"!==e.status)&&(0,l.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)."})]})},na=()=>{},ni=e=>{let{modelInput:t,conversationId:n}=e,[o,a]=(0,r.useState)("wire"),{systemMessage:s,wireMessages:d,provenance:c,counts:u,inputMode:h}=t,g=(0,r.useMemo)(()=>(d||[]).filter(e=>"system"!==e.role),[d]);return(0,l.jsxs)(i.default,{sx:{height:"100%",display:"flex",flexDirection:"column",p:1},children:[(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5,flexWrap:"wrap",mb:1},children:[(0,l.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,l.jsx)(f.A,{size:"small",variant:"outlined",label:"inputMode: ".concat(h)})]}),(0,l.jsxs)(ex.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(em.A,{expandIcon:(0,l.jsx)(Y.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(p.default,{variant:"caption",children:(0,l.jsx)("b",{children:"System message"})})}),(0,l.jsx)(ev.A,{sx:{p:0},children:s&&s.content.trim().length>0?(0,l.jsx)(eg.A,{variant:"outlined",sx:{p:1,maxHeight:220,overflowY:"auto"},children:(0,l.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0,fontSize:"0.75rem",fontFamily:"inherit"},children:s.content})}):(0,l.jsx)(p.default,{variant:"caption",color:"textSecondary",children:"(no system message)"})})]}),(0,l.jsxs)(ne.A,{size:"small",exclusive:!0,value:o,onChange:(e,t)=>{t&&a(t)},sx:{my:1},children:[(0,l.jsx)(nt.A,{value:"wire",children:"What the model sees"}),(0,l.jsx)(nt.A,{value:"annotated",children:"Full history (annotated)"})]}),(0,l.jsx)(i.default,{sx:{flexGrow:1,overflowY:"auto",minHeight:0},children:"wire"===o?0===g.length?(0,l.jsx)(p.default,{variant:"body2",color:"textSecondary",sx:{p:1},children:"No conversation messages — the model sees only the system message."}):(0,l.jsx)(e2,{messages:g,conversationId:n?"debug-".concat(n):void 0,onToggleDisabled:na,onSplitConversation:na}):(0,l.jsx)(no,{provenance:c})})]})},ns=(0,eJ.h)("frontend/components/Chat/DebuggerCanvas"),nd={start:t0.vm,process:t0.Uw,finish:t0.IK,mcp:t0.v2,subflow:t0.lA,resource:t0.z9},nc={custom:t1.jY,mcpEdge:t1.oY,resourceEdge:t1.sZ},nu=["conversation","tracker","detail"],np={conversation:"Conversation",tracker:"Execution Tracker",detail:"Detail"},nf="flujo-debugger-section-order",nh="flujo-debugger-section-visible",ng="flujo-debugger-conv-width",nx="flujo-debugger-detail-width";function nm(e,t){let n=Number(window.localStorage.getItem(e));return Number.isFinite(n)&&n>=240?n:t}let nv=(0,tZ.Ay)(eg.A)(e=>{let{theme:t}=e;return{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden",padding:t.spacing(1)}}),nb=(0,tZ.Ay)(i.default)(e=>{let{theme:t}=e;return{padding:t.spacing(1,2),borderBottom:"1px solid ".concat(t.palette.divider)}}),ny=(0,tZ.Ay)(i.default)({flexGrow:1,display:"flex",overflow:"hidden",minHeight:0}),nw=(0,tZ.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)}}),nj=(0,tZ.Ay)(i.default)({flexGrow:1,position:"relative",height:"100%"}),nA=(0,tZ.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"}}),nS=(0,tZ.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}}}),nC=e=>{var t,n,o,a;let{debugState:u,conversationId:f,onStep:g,onStepOver:x,onContinue:m,onCancel:v,isLoading:b,breakpoints:y,onToggleBreakpoint:w,onClose:j,isExpanded:A,onToggleExpand:S,liveActivity:C}=e,k=(0,tl.A)(),[I,E]=(0,r.useState)(u.executionTrace&&u.executionTrace.length>0?u.executionTrace.length-1:-1),[z,T]=(0,r.useState)(()=>(function(){try{let e=JSON.parse(window.localStorage.getItem(nf)||"null");if(Array.isArray(e)){let t=e.filter(e=>nu.includes(e)),n=nu.filter(e=>!t.includes(e));if(t.length+n.length===nu.length)return[...t,...n]}}catch(e){}return[...nu]})()),[R,D]=(0,r.useState)(()=>(function(){let e={conversation:!0,tracker:!0,detail:!0};try{let t=JSON.parse(window.localStorage.getItem(nh)||"null");if(t&&"object"==typeof t)for(let n of nu)"boolean"==typeof t[n]&&(e[n]=t[n])}catch(e){}return e})()),[W,F]=(0,r.useState)(()=>nm(ng,480)),[_,L]=(0,r.useState)(()=>nm(nx,320)),[H,q]=(0,r.useState)(null),[B,J]=(0,r.useState)(!0),[K,Q]=(0,r.useState)(null),[X,V,Z]=(0,tn.ck)([]),[$,ee,et]=(0,tn.fM)([]);(0,r.useEffect)(()=>{window.localStorage.setItem(nf,JSON.stringify(z))},[z]),(0,r.useEffect)(()=>{window.localStorage.setItem(nh,JSON.stringify(R))},[R]),(0,r.useEffect)(()=>{window.localStorage.setItem(ng,String(Math.round(W)))},[W]),(0,r.useEffect)(()=>{window.localStorage.setItem(nx,String(Math.round(_)))},[_]),(0,r.useEffect)(()=>{var e;let t=(null==(e=u.executionTrace)?void 0:e.length)||0;t>0?(E(e=>Math.min(e,t-1)),I<t-1&&E(t-1)):E(-1)},[u.executionTrace]),(0,r.useEffect)(()=>{(async()=>{if(!u.flowId){Q("Flow ID is missing in debug state."),J(!1);return}J(!0),Q(null);try{ns.debug("Loading flow definition for ID: ".concat(u.flowId));let e=await t$.g.getFlow(u.flowId);if(!e)throw Error("Flow with ID ".concat(u.flowId," not found."));q(e),ns.info("Flow definition loaded: ".concat(e.name))}catch(e){ns.error("Error loading flow definition:",e),Q(e instanceof Error?e.message:"Failed to load flow definition."),q(null)}finally{J(!1)}})()},[u.flowId]),(0,r.useEffect)(()=>{if(H){ns.debug("Setting nodes and edges from flow definition");let e=H.nodes.map(e=>({...e,draggable:!1,selectable:!1,connectable:!1})),t=H.edges.map(e=>({...e,selectable:!1}));V(e),ee(t)}},[H,V,ee]);let en=(0,r.useCallback)(()=>{if(ns.debug("Previous button clicked. Current index: ".concat(I)),I>0){let e=I-1;ns.debug("Setting current step index to: ".concat(e)),E(e)}else ns.debug("Already at the first step, cannot go previous.")},[I]),el=(0,r.useCallback)(()=>{var e;if(ns.debug("Next button clicked. Current index: ".concat(I,", Trace length: ").concat(null==(e=u.executionTrace)?void 0:e.length)),u.executionTrace&&I<u.executionTrace.length-1){let e=I+1;ns.debug("Navigating to next trace step: ".concat(e)),E(e)}else ns.info("At end of trace, triggering API call for next step."),g()},[I,u.executionTrace,g]),er=(0,r.useMemo)(()=>{if(u.executionTrace&&I>=0&&I<u.executionTrace.length)return u.executionTrace[I]},[u.executionTrace,I]),eo=(0,r.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,ei]=(0,r.useState)(0);(0,r.useEffect)(()=>{ei(0)},[I]);let es=eo?Math.min(ea,eo.length-1):0,ed=null==eo?void 0:eo[es],[ec,eu]=(0,r.useState)(()=>Date.now());(0,r.useEffect)(()=>{if(!C)return;let e=()=>{let e=Date.now();return[...Object.values(C.byNode),...Object.values(C.byResource),...Object.values(C.byResourceName)].some(t=>e-t.ts<4e3)};if(!e())return;let t=setInterval(()=>{eu(Date.now()),e()||clearInterval(t)},350);return()=>clearInterval(t)},[C]);let ef=(0,r.useCallback)(e=>{var t,n;if(!C)return null;let l=C.byNode[e.id];if(l&&ec-l.ts<4e3)return l;let r=e.data;if((null!=(t=null==r?void 0:r.type)?t:e.type)!=="resource")return null;let o=null!=(n=null==r?void 0:r.properties)?n:{},a="run"===o.scope?"string"==typeof o.runName?C.byResourceName[o.runName]:void 0:"string"==typeof o.boundServer&&"string"==typeof o.uri?C.byResource[t5(o.boundServer,o.uri)]:void 0;return a&&ec-a.ts<4e3?{kind:"read"===a.kind?"resource-read":"resource-write",ts:a.ts}:null},[C,ec]),eh=(0,r.useMemo)(()=>{let e=null==er?void 0:er.nodeId;return X.map(t=>{var n;let l=t.id===e,r=null==y?void 0:y.includes(t.id),o=l?null:ef(t),a=o?Math.max(.25,1-(ec-o.ts)/4e3):0,i=(null==o?void 0:o.kind)==="active"?k.palette.primary.main:"#009688";return{...t,style:{...t.style,border:l?"2px solid ".concat(k.palette.warning.main):o?"2px solid ".concat(i):r?"2px dashed ".concat(k.palette.error.main):null==(n=t.style)?void 0:n.border,boxShadow:l?"0 0 10px ".concat(k.palette.warning.light):o?"0 0 ".concat("resource-write"===o.kind?14:10,"px ").concat(i).concat(Math.round(255*a).toString(16).padStart(2,"0")):void 0}}})},[X,er,y,k,ef,ec]),eg=(0,r.useMemo)(()=>z.filter(e=>R[e]),[z,R]),eb=(0,r.useCallback)(e=>{D(t=>({...t,[e]:!t[e]}))},[]),ey=(0,r.useCallback)((e,t)=>{T(n=>{let l=n.indexOf(e),r=l+t;if(l<0||r<0||r>=n.length)return n;let o=[...n];return[o[l],o[r]]=[o[r],o[l]],o})},[]),ew=(0,r.useCallback)((e,t,n)=>{n.preventDefault();let l=n.clientX,r="conversation"===e?W:_,o="conversation"===e?F:L,a=document.body.style.userSelect,i=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let s=e=>{o(Math.min(Math.max(r+t*(e.clientX-l),240),1100))},d=()=>{window.removeEventListener("pointermove",s),window.removeEventListener("pointerup",d),document.body.style.userSelect=a,document.body.style.cursor=i};window.addEventListener("pointermove",s),window.addEventListener("pointerup",d)},[W,_]),ej=(0,l.jsx)(i.default,{sx:{flexGrow:1,overflow:"hidden",minHeight:0,display:"flex",flexDirection:"column"},children:er?ed&&eo?(0,l.jsxs)(i.default,{sx:{flexGrow:1,minHeight:0,display:"flex",flexDirection:"column"},children:[eo.length>1&&(0,l.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,l.jsx)(s.A,{title:"Previous model call",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",onClick:()=>ei(e=>Math.max(0,Math.min(e,eo.length-1)-1)),disabled:es<=0,"aria-label":"Previous model call",children:(0,l.jsx)(G.A,{fontSize:"small"})})})}),(0,l.jsxs)(p.default,{variant:"caption",color:"textSecondary",children:["Model call ",es+1," / ",eo.length]}),(0,l.jsx)(s.A,{title:"Next model call",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",onClick:()=>ei(e=>Math.min(eo.length-1,Math.min(e,eo.length-1)+1)),disabled:es>=eo.length-1,"aria-label":"Next model call",children:(0,l.jsx)(tY.A,{fontSize:"small"})})})})]}),(0,l.jsx)(i.default,{sx:{flexGrow:1,minHeight:0,overflow:"hidden",display:"flex",flexDirection:"column"},children:(0,l.jsx)(ni,{modelInput:ed,conversationId:f})})]}):(0,l.jsx)(p.default,{variant:"body2",color:"textSecondary",sx:{p:2},children:"No model call for this step."}):(0,l.jsx)(p.default,{variant:"body2",color:"textSecondary",sx:{p:2},children:"Select a step from the execution tracker."})}),eA={conversation:ej,tracker:(0,l.jsxs)(i.default,{sx:{flexGrow:1,display:"flex",overflow:"hidden",minHeight:0},children:[(0,l.jsxs)(nw,{children:[(0,l.jsx)(p.default,{variant:"caption",color:"textSecondary",gutterBottom:!0,sx:{display:"block"},children:"Execution Trace"}),(0,l.jsxs)(U.A,{dense:!0,disablePadding:!0,children:[null==(t=u.executionTrace)?void 0:t.map((e,t)=>(0,l.jsx)(M.Ay,{disablePadding:!0,children:(0,l.jsx)(P.A,{selected:t===I,onClick:()=>(e=>{u.executionTrace&&e>=0&&e<u.executionTrace.length?(ns.debug("Trace step selected: ".concat(e)),E(e)):ns.warn("Invalid step index selected: ".concat(e))})(t),children:(0,l.jsx)(O.A,{primary:"".concat(e.stepIndex,": ").concat(e.nodeName||e.nodeId),secondary:e.nodeType})})},e.stepIndex)),b&&(0,l.jsx)(M.Ay,{children:(0,l.jsx)(ep.default,{size:20,sx:{margin:"auto"}})})]})]}),(0,l.jsx)(nj,{children:B?(0,l.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,l.jsx)(ep.default,{})}):K?(0,l.jsx)(c.A,{severity:"error",sx:{margin:2},children:K}):(0,l.jsxs)(tn.Ln,{children:[" ",(0,l.jsx)(tn.Gc,{nodes:eh,edges:$,onNodesChange:Z,onEdgesChange:et,nodeTypes:nd,edgeTypes:nc,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,l.jsxs)(i.default,{sx:{flexGrow:1,overflowY:"auto",minHeight:0,p:2},children:[er?(0,l.jsxs)(i.default,{children:[(0,l.jsxs)(p.default,{variant:"body2",children:[(0,l.jsx)("b",{children:"Node:"})," ",er.nodeName," (",er.nodeId,")"]}),(0,l.jsxs)(p.default,{variant:"body2",children:[(0,l.jsx)("b",{children:"Type:"})," ",er.nodeType]}),(0,l.jsxs)(p.default,{variant:"body2",children:[(0,l.jsx)("b",{children:"Timestamp:"})," ",new Date(er.timestamp).toLocaleString()]}),(0,l.jsxs)(p.default,{variant:"body2",children:[(0,l.jsx)("b",{children:"Action Taken:"})," ",er.actionTaken]}),(0,l.jsxs)(ex.A,{sx:{mt:2,boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(em.A,{expandIcon:(0,l.jsx)(Y.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(p.default,{variant:"caption",children:"Prep Result"})}),(0,l.jsx)(ev.A,{sx:{p:0},children:(0,l.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,l.jsxs)(ex.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(em.A,{expandIcon:(0,l.jsx)(Y.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsxs)(p.default,{variant:"caption",color:(null==(n=er.execResultSnapshot)?void 0:n.success)===!1?"error":"inherit",children:["Exec Result ",(null==(o=er.execResultSnapshot)?void 0:o.success)===!1?"(Error)":""]})}),(0,l.jsx)(ev.A,{sx:{p:0},children:(null==(a=er.execResultSnapshot)?void 0:a.success)===!1?(0,l.jsxs)(i.default,{sx:{p:1,background:k.palette.error.light,borderRadius:1},children:[(0,l.jsxs)(p.default,{variant:"body2",color:"error",gutterBottom:!0,children:[(0,l.jsx)("b",{children:"Error:"})," ",er.execResultSnapshot.error||"Unknown error"]}),er.execResultSnapshot.errorDetails&&(0,l.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,l.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,l.jsxs)(ex.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(em.A,{expandIcon:(0,l.jsx)(Y.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(p.default,{variant:"caption",children:"State Before"})}),(0,l.jsx)(ev.A,{sx:{p:0},children:(0,l.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,l.jsxs)(ex.A,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(em.A,{expandIcon:(0,l.jsx)(Y.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(p.default,{variant:"caption",children:"State After"})}),(0,l.jsx)(ev.A,{sx:{p:0},children:(0,l.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,l.jsx)(p.default,{variant:"body2",color:"textSecondary",children:"Select a step from the execution tracker."}),(0,l.jsxs)(ex.A,{defaultExpanded:!0,sx:{mt:2,boxShadow:"none","&:before":{display:"none"}},children:[(0,l.jsx)(em.A,{expandIcon:(0,l.jsx)(Y.A,{}),sx:{minHeight:"36px","& .MuiAccordionSummary-content":{margin:"8px 0"}},children:(0,l.jsx)(p.default,{variant:"caption",children:"Run Data"})}),(0,l.jsx)(ev.A,{sx:{p:0},children:(0,l.jsx)(t9,{conversationId:f,refreshToken:null==C?void 0:C.resourceVersion})})]})]})};return(0,l.jsxs)(nv,{elevation:2,children:[(0,l.jsxs)(nb,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"space-between"},children:[(0,l.jsxs)(i.default,{children:[(0,l.jsx)(p.default,{variant:"h6",children:"Flow Debugger"}),(0,l.jsxs)(p.default,{variant:"caption",color:"textSecondary",display:"block",children:["Click a node to toggle a breakpoint",y&&y.length>0?" \xb7 ".concat(y.length," active"):""]})]}),(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,l.jsx)(s.A,{title:R.conversation?"Hide Conversation":"Show Conversation",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>eb("conversation"),color:R.conversation?"primary":"default","aria-label":R.conversation?"Hide Conversation":"Show Conversation",children:(0,l.jsx)(tX.A,{fontSize:"small"})})}),(0,l.jsx)(s.A,{title:R.tracker?"Hide Execution Tracker":"Show Execution Tracker",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>eb("tracker"),color:R.tracker?"primary":"default","aria-label":R.tracker?"Hide Execution Tracker":"Show Execution Tracker",children:(0,l.jsx)(N.A,{fontSize:"small"})})}),(0,l.jsx)(s.A,{title:R.detail?"Hide Detail":"Show Detail",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>eb("detail"),color:R.detail?"primary":"default","aria-label":R.detail?"Hide Detail":"Show Detail",children:(0,l.jsx)(tV.A,{fontSize:"small"})})}),S&&(0,l.jsx)(s.A,{title:A?"Exit full screen":"Expand to full screen",children:(0,l.jsx)(d.A,{size:"small",onClick:S,"aria-label":A?"Exit full screen":"Expand to full screen",children:A?(0,l.jsx)(th.A,{fontSize:"small"}):(0,l.jsx)(tf.A,{fontSize:"small"})})}),j&&(0,l.jsx)(s.A,{title:"Close debugger",children:(0,l.jsx)(d.A,{size:"small",onClick:j,"aria-label":"Close debugger",children:(0,l.jsx)(e7.A,{fontSize:"small"})})})]})]}),(0,l.jsx)(ny,{children:0===eg.length?(0,l.jsx)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:"100%",p:3},children:(0,l.jsx)(p.default,{variant:"body2",color:"textSecondary",children:"All sections are hidden — use the toolbar toggles above to show a section."})}):eg.map((e,t)=>(0,l.jsxs)(r.Fragment,{children:[(e=>{let t="tracker"!==e,n="conversation"===e?W:"detail"===e?_:void 0;return(0,l.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=eg.indexOf(e);return(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",px:1,py:.5,borderBottom:"1px solid ".concat(k.palette.divider)},children:[(0,l.jsx)(p.default,{variant:"subtitle2",noWrap:!0,children:np[e]}),(0,l.jsxs)(i.default,{sx:{display:"flex"},children:[(0,l.jsx)(s.A,{title:"Move left",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",onClick:()=>ey(e,-1),disabled:t<=0,"aria-label":"Move ".concat(np[e]," left"),children:(0,l.jsx)(G.A,{fontSize:"small"})})})}),(0,l.jsx)(s.A,{title:"Move right",children:(0,l.jsx)("span",{children:(0,l.jsx)(d.A,{size:"small",onClick:()=>ey(e,1),disabled:t<0||t>=eg.length-1,"aria-label":"Move ".concat(np[e]," right"),children:(0,l.jsx)(tY.A,{fontSize:"small"})})})}),(0,l.jsx)(s.A,{title:"Hide section",children:(0,l.jsx)(d.A,{size:"small",onClick:()=>eb(e),"aria-label":"Hide ".concat(np[e]),children:(0,l.jsx)(e7.A,{fontSize:"small"})})})]})]})})(e),eA[e]]},e)})(e),t<eg.length-1&&((e,t)=>{let n="tracker"!==e?e:"tracker"!==t?t:null;if(!n)return null;let r="tracker"!==e?1:-1;return(0,l.jsx)(nS,{onPointerDown:e=>ew(n,r,e),"aria-label":"Resize ".concat(np[n]," section")},"resizer-".concat(e,"-").concat(t))})(e,eg[t+1])]},e))}),(0,l.jsxs)(nA,{children:[(0,l.jsx)(h.A,{variant:"outlined",size:"small",onClick:en,disabled:b||I<=0,children:"Previous"}),(0,l.jsx)(h.A,{variant:"contained",size:"small",onClick:el,disabled:b||-1===I,children:u.executionTrace&&I<u.executionTrace.length-1?"Next Trace Step":"Step Next"}),x&&(0,l.jsx)(h.A,{variant:"outlined",size:"small",onClick:x,disabled:b,children:"Step Over"}),(0,l.jsx)(h.A,{variant:"contained",color:"secondary",size:"small",onClick:m,disabled:b,children:"Continue"}),(0,l.jsx)(h.A,{variant:"outlined",color:"error",size:"small",onClick:v,disabled:b,children:"Stop"})]})]})},nk=(0,eJ.h)("frontend/components/Chat/ExecutedFlowPanel"),nI={start:t0.vm,process:t0.Uw,finish:t0.IK,mcp:t0.v2,subflow:t0.lA,resource:t0.z9,signal:t0.z3},nE={custom:t1.jY,mcpEdge:t1.oY,resourceEdge:t1.sZ},nz=e=>{let{flowId:t,flowSnapshot:n,executedNodeIds:o,liveActivity:a,onClose:u}=e,f=(0,tl.A)(),[h,g]=(0,r.useState)(null),[x,m]=(0,r.useState)(!0),[v,b]=(0,r.useState)(null),[y,w,j]=(0,tn.ck)([]),[A,S,C]=(0,tn.fM)([]);(0,r.useEffect)(()=>{let e=!1;return(async()=>{m(!0),b(null);try{if(n&&Array.isArray(n.nodes)){e||g(n);return}if(!t)throw Error("No flow is associated with this conversation yet.");nk.debug("Loading flow definition for ID: ".concat(t));let l=await t$.g.getFlow(t);if(!l)throw Error("Flow with ID ".concat(t," not found."));e||g(l)}catch(t){nk.error("Error loading flow definition:",t),e||(b(t instanceof Error?t.message:"Failed to load flow definition."),g(null))}finally{e||m(!1)}})(),()=>{e=!0}},[t,n]),(0,r.useEffect)(()=>{h&&(w(h.nodes.map(e=>({...e,draggable:!1,selectable:!1,connectable:!1}))),S(h.edges.map(e=>({...e,selectable:!1}))))},[h,w,S]);let k=(0,r.useMemo)(()=>new Set(o),[o]),[I,E]=(0,r.useState)(()=>Date.now());(0,r.useEffect)(()=>{if(!a)return;let e=()=>Object.values(a.byNode).some(e=>Date.now()-e.ts<4e3);if(!e())return;let t=setInterval(()=>{E(Date.now()),e()||clearInterval(t)},350);return()=>clearInterval(t)},[a]);let z=(0,r.useMemo)(()=>y.map(e=>{let t=k.has(e.id),n=null==a?void 0:a.byNode[e.id],l=!!n&&I-n.ts<4e3;return{...e,style:{...e.style,opacity:t||l?1:.4,border:l?"2px solid ".concat(f.palette.primary.main):t?"2px solid ".concat(f.palette.success.main):"1px solid ".concat(f.palette.divider),boxShadow:l?"0 0 10px ".concat(f.palette.primary.light):t?"0 0 8px ".concat(f.palette.success.light):void 0}}}),[y,k,a,I,f]);return(0,l.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",height:"100%",borderLeft:1,borderColor:"divider",minWidth:0},children:[(0,l.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,px:1.5,py:1,borderBottom:1,borderColor:"divider",flexShrink:0},children:[(0,l.jsx)(N.A,{fontSize:"small",color:"action"}),(0,l.jsx)(p.default,{variant:"subtitle2",sx:{flex:1,minWidth:0},noWrap:!0,children:"Executed Steps"}),(0,l.jsx)(s.A,{title:"Hide panel",children:(0,l.jsx)(d.A,{size:"small",onClick:u,"aria-label":"Hide executed steps panel",children:(0,l.jsx)(e7.A,{fontSize:"small"})})})]}),(0,l.jsx)(i.default,{sx:{flex:1,minHeight:0,position:"relative"},children:x?(0,l.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,l.jsx)(ep.default,{})}):v?(0,l.jsx)(c.A,{severity:"info",sx:{m:2},children:v}):(0,l.jsx)(tn.Ln,{children:(0,l.jsx)(tn.Gc,{nodes:z,edges:A,onNodesChange:j,onEdgesChange:C,nodeTypes:nI,edgeTypes:nE,fitView:!0,attributionPosition:"bottom-right",nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!1})})})]})};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),nD=n(63650);let nM=(0,eJ.h)("frontend/services/chat/index");class nP extends Error{constructor(e,t,n){super(e),this.name="ChatApiError",this.status=t,this.body=n}}let nO="/v1/chat/conversations";async function nW(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 nP(t&&"object"==typeof t&&(t.error||t.message)||"Request failed with status ".concat(e.status),e.status,t);return t}class nF{async listConversations(){return nM.debug("listConversations: Entering method"),nW(await fetch(nO))}async getConversation(e){return nM.debug("getConversation: Entering method",{conversationId:e}),nW(await fetch("".concat(nO,"/").concat(encodeURIComponent(e))))}async createConversation(e){return nM.debug("createConversation: Entering method",{conversationId:e.id}),nW(await fetch(nO,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}))}async updateConversationFlow(e,t){return nM.debug("updateConversationFlow: Entering method",{conversationId:e,flowId:t}),nW(await fetch("".concat(nO,"/").concat(encodeURIComponent(e)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({flowId:t})}))}async updateConversationTitle(e,t){return nM.debug("updateConversationTitle: Entering method",{conversationId:e}),nW(await fetch("".concat(nO,"/").concat(encodeURIComponent(e)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:t})}))}async updateConversationApproval(e,t){return nM.debug("updateConversationApproval: Entering method",{conversationId:e,requireApproval:t}),nW(await fetch("".concat(nO,"/").concat(encodeURIComponent(e)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApproval:t})}))}async deleteConversation(e){nM.debug("deleteConversation: Entering method",{conversationId:e});let t=await fetch("".concat(nO,"/").concat(encodeURIComponent(e)),{method:"DELETE"});await nW(t)}async deleteConversations(e){return nM.debug("deleteConversations: Entering method",{count:e.length}),nW(await fetch(nO,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:e})}))}async respondToToolCall(e,t,n,l,r){return nM.debug("respondToToolCall: Entering method",{conversationId:e,action:t,toolCallId:n,always:l}),nW(await fetch("".concat(nO,"/").concat(encodeURIComponent(e),"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:t,toolCallId:n,...l?{always:!0}:{},...r?{feedback:r}:{}})}))}async debugStep(e){return nM.debug("debugStep: Entering method",{conversationId:e}),nW(await fetch("".concat(nO,"/").concat(encodeURIComponent(e),"/debug/step"),{method:"POST"}))}async debugContinue(e){return nM.debug("debugContinue: Entering method",{conversationId:e}),nW(await fetch("".concat(nO,"/").concat(encodeURIComponent(e),"/debug/continue"),{method:"POST"}))}async setBreakpoints(e,t){nM.debug("setBreakpoints: Entering method",{conversationId:e,count:t.length});let n=await fetch("".concat(nO,"/").concat(encodeURIComponent(e),"/breakpoints"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({breakpoints:t})});await nW(n)}async synthesizeQuickChat(e){return nM.debug("synthesizeQuickChat: Entering method",{conversationId:e.conversationId}),nW(await fetch("/api/flow/quick-chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}))}async cancel(e){nM.debug("cancel: Entering method",{conversationId:e});let t=await fetch("".concat(nO,"/").concat(encodeURIComponent(e),"/cancel"),{method:"POST"});await nW(t)}async injectMessage(e,t,n){nM.debug("injectMessage: Entering method",{conversationId:e,messageId:n});try{let l=await fetch("".concat(nO,"/").concat(encodeURIComponent(e),"/inject"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:t,id:n})});if(l.ok)return{delivered:!0};if(409===l.status)return nM.debug("injectMessage: run is not live; caller should send normally",{conversationId:e}),{delivered:!1};return nM.warn("injectMessage: unexpected response; falling back to a normal send",{conversationId:e,status:l.status}),{delivered:!1}}catch(t){return nM.warn("injectMessage: request failed; falling back to a normal send",{conversationId:e,err:t}),{delivered:!1}}}subscribeToEvents(e,t,n){let l=new EventSource(void 0!==n?"".concat(nO,"/").concat(encodeURIComponent(e),"/events?fromSeq=").concat(n):"".concat(nO,"/").concat(encodeURIComponent(e),"/events"));return l.onopen=()=>{var n;nM.debug("Execution event stream open",{conversationId:e}),null==(n=t.onOpen)||n.call(t)},l.onmessage=e=>{try{t.onEvent(JSON.parse(e.data))}catch(e){nM.warn("Failed to parse SSE event",{err:e})}},l.onerror=e=>{var n;nM.debug("SSE stream error (browser will retry if still open)"),null==(n=t.onError)||n.call(t,e)},l}}let n_=new nF,nL=(0,eJ.h)("frontend/components/Chat/index");function nH(e){var t;if(Array.isArray(e.content))return e.content;let n="string"==typeof e.content?e.content:"",l=null!=(t=e.attachments)?t:[],r=l.filter(e=>"image"!==e.type),o=l.filter(e=>"image"===e.type);if(r.length>0&&(n+="\n\n"+r.map(e=>"[".concat(e.type.toUpperCase(),"]: ").concat(e.content)).join("\n\n")),0===o.length)return n;let a=[];for(let e of(n.trim()&&a.push({type:"text",text:n}),o))a.push({type:"image_url",image_url:{url:e.content}});return a}let nU=/cancelled by user|execution cancelled/i,nq=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&&nU.test(e))},nB=()=>{var e,t,n;let o=(0,a.useRouter)(),[M,P]=(0,r.useState)([]),[O,W]=(0,r.useState)(!0),[F,_]=(0,r.useState)(null),[L,H]=(0,r.useState)(null),[U,q]=(0,r.useState)(!1),[B,J]=(0,r.useState)(null),[G,K]=(0,D.Mj)(D.Zg.CURRENT_CONVERSATION_ID,null),[Q,Y]=(0,D.Mj)(D.Zg.LAST_PICKED_FLOW_ID,null),[X,V]=(0,r.useState)(!1),[Z,ee]=(0,r.useState)(new Set),et=(0,r.useCallback)((e,t)=>{e&&ee(n=>{if(t===n.has(e))return n;let l=new Set(n);return t?l.add(e):l.delete(e),l})},[]),[en,el]=(0,r.useState)({}),er=(0,r.useRef)(!1),[eo,ea]=(0,r.useState)(null),[ei,es]=(0,r.useState)([]),[ed,ec]=(0,r.useState)(!1),[ep,ef]=(0,r.useState)(!1),[eh,eg]=(0,r.useState)(""),[ex,em]=(0,r.useState)(!1),[ev,eb]=(0,r.useState)(null),[ey,ew]=(0,r.useState)(null),[ej,eA]=(0,r.useState)(null),[eS,eC]=(0,r.useState)(null),[ek,eI]=(0,r.useState)(null),[eE,ez]=(0,r.useState)(null),[eT,eN]=(0,r.useState)(!1),[eR,eD]=(0,r.useState)(null),[eM,eP]=(0,r.useState)(!1),[eO,eW]=(0,r.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-debugger-width"));return Number.isFinite(e)&&e>0?e:0}),[eF,e_]=(0,r.useState)(()=>"1"===window.localStorage.getItem("flujo-debugger-expanded"));(0,r.useEffect)(()=>{window.localStorage.setItem("flujo-debugger-expanded",eF?"1":"0")},[eF]);let[eL,eH]=(0,r.useState)(()=>"1"===window.localStorage.getItem("flujo-workflow-panel-visible"));(0,r.useEffect)(()=>{window.localStorage.setItem("flujo-workflow-panel-visible",eL?"1":"0")},[eL]);let[eU,eq]=(0,r.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-workflow-panel-width"));return Number.isFinite(e)&&e>0?e:320}),eB=(0,r.useCallback)(e=>{e.preventDefault();let t=e.clientX,n=0;eq(e=>(n=e,e));let l=document.body.style.userSelect,r=document.body.style.cursor;document.body.style.userSelect="none",document.body.style.cursor="col-resize";let o=e=>{eq(Math.min(Math.max(n+(t-e.clientX),240),Math.round(.7*window.innerWidth)))},a=()=>{window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",a),document.body.style.userSelect=l,document.body.style.cursor=r,eq(e=>(e>0&&window.localStorage.setItem("flujo-workflow-panel-width",String(Math.round(e))),e))};window.addEventListener("pointermove",o),window.addEventListener("pointerup",a)},[]),eJ=(0,r.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 l=e=>{eW(Math.min(Math.max(window.innerWidth-e.clientX,360),Math.round(.85*window.innerWidth)))},r=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",r),document.body.style.userSelect=t,document.body.style.cursor=n,eW(e=>(e>0&&window.localStorage.setItem("flujo-debugger-width",String(Math.round(e))),e))};window.addEventListener("pointermove",l),window.addEventListener("pointerup",r)},[]),[eG,eK]=(0,r.useState)(()=>{let e=Number(window.localStorage.getItem("flujo-chat-sidebar-width"));return Number.isFinite(e)&&e>0?e:300}),[eQ,eY]=(0,r.useState)(()=>"1"===window.localStorage.getItem("flujo-chat-sidebar-collapsed")),eX=(0,r.useCallback)(()=>{eY(e=>{let t=!e;return window.localStorage.setItem("flujo-chat-sidebar-collapsed",t?"1":"0"),t})},[]),eV=(0,r.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 l=e=>{eK(Math.min(Math.max(e.clientX,220),560))},r=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",r),document.body.style.userSelect=t,document.body.style.cursor=n,eK(e=>(e>0&&window.localStorage.setItem("flujo-chat-sidebar-width",String(Math.round(e))),e))};window.addEventListener("pointermove",l),window.addEventListener("pointerup",r)},[]),[eZ,e$]=(0,r.useState)(null),[e0,e1]=(0,r.useState)(t2),[e5,e6]=(0,r.useState)(tk),[e4,e8]=(0,r.useState)([]),[e3,e7]=(0,r.useState)(new Set),[e9,te]=(0,r.useState)([]),[tt,tn]=(0,r.useState)(null),tl=(0,r.useRef)(null),tr=(0,r.useRef)(null),to=(0,r.useRef)(null),ta=(0,r.useRef)(-1),ti=(0,r.useRef)(G);(0,r.useEffect)(()=>{ti.current=G},[G]);let ts=(0,r.useRef)(new Set),tc=(0,r.useRef)(new Set),tp=(0,r.useRef)(new Set),[tf,th]=(0,r.useState)(new Set),tg=(0,r.useCallback)((e,t)=>{e&&(t?tp.current.add(e):tp.current.delete(e),th(new Set(tp.current)))},[]),tj=(0,r.useRef)(null),tA=(0,r.useRef)(!0),[tS,tC]=(0,r.useState)(!1),tE=(0,r.useCallback)(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"auto",t=tj.current;t&&t.scrollTo({top:t.scrollHeight,behavior:e})},[]),tz=(0,r.useCallback)(()=>{let e=tj.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight<80;tA.current=t,tC(!t)},[]),tT=(0,r.useCallback)(()=>{tA.current=!0,tC(!1),tE("smooth")},[tE]);(0,r.useEffect)(()=>{tA.current=!0,tC(!1)},[G]),(0,r.useEffect)(()=>{tA.current&&tE("auto")},[null==L?void 0:L.messages,tE]);let tR=(0,r.useRef)(null);(0,r.useEffect)(()=>{tR.current=tt},[tt]),(0,r.useEffect)(()=>{let e=window.location.origin+"/v1";tl.current=new nR.Ay({baseURL:e,apiKey:"FLUJO",dangerouslyAllowBrowser:!0,maxRetries:0,timeout:18e6})},[]),(0,r.useEffect)(()=>{(async()=>{nL.debug("Loading flows");try{let e=await t$.g.loadFlows();es(e)}catch(e){nL.error("Error loading flows:",e)}})()},[]);let tD=(0,r.useCallback)(async(e,t)=>{var n;let l=null!=(n=null==t?void 0:t.silent)&&n;nL.debug("Fetching conversation list from backend",{silent:l}),l||(W(!0),_(null));let r=[],o=!1;try{for(let e of r=(await n_.listConversations()).filter(e=>!tc.current.has(e.id)).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}))ts.current.delete(e.id);P(e=>{let t=e.filter(e=>ts.current.has(e.id)),n=t.length>0?[...t,...r].sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}):r;return((e,t)=>e.length===t.length&&e.every((e,n)=>{let l=t[n];return e.id===l.id&&e.title===l.title&&e.flowId===l.flowId&&e.status===l.status&&e.plannedExecutionId===l.plannedExecutionId&&e.parentConversationId===l.parentConversationId&&e.rootConversationId===l.rootConversationId&&e.createdAt===l.createdAt&&e.updatedAt===l.updatedAt}))(e,n)?e:n}),nL.info("Fetched ".concat(r.length," conversations for the list"))}catch(e){o=!0,nL.error("Error fetching conversation list:",e),l||(_("Failed to load conversation history."),P([]))}finally{if(l||W(!1),l||o)return;let t=void 0!==e?e:ti.current,n=ti.current;if(t&&(e=>r.some(t=>t.id===e)||ts.current.has(e))(t))t!==n&&(nL.debug("Setting currentConversationId to ".concat(t," after fetch/operation.")),K(t));else if(r.length>0){let e=r[0].id;e!==n&&(nL.debug("Selecting most recent conversation ".concat(e," after fetch/operation.")),K(e))}else null===n||ts.current.has(n)||(nL.debug("No conversations available after fetch/operation, clearing selection."),K(null))}},[K]);(0,r.useEffect)(()=>{tD()},[]),(0,r.useEffect)(()=>{let e=()=>{("undefined"==typeof document||"visible"===document.visibilityState)&&tD(void 0,{silent:!0})},t=setInterval(e,5e3);return document.addEventListener("visibilitychange",e),()=>{clearInterval(t),document.removeEventListener("visibilitychange",e)}},[tD]);let tP=(0,r.useCallback)(async e=>{if(ts.current.has(e))return void nL.debug("Skipping detail fetch for client-only conversation",{conversationId:e});if(ti.current!==e){nL.debug("Detail fetch requested for non-viewed conversation; refreshing list instead",{conversationId:e}),tD(void 0,{silent:!0});return}nL.debug("Fetching detailed conversation",{conversationId:e}),q(!0),J(null);try{let t=await n_.getConversation(e);if(ti.current!==e)return void nL.debug("Discarding stale detailed conversation response",{fetchedId:e,currentId:ti.current});H(t),P(n=>n.map(n=>{var l;return n.id===e?{...n,title:t.title,flowId:t.flowId,updatedAt:t.updatedAt,status:null!=(l=t.status)?l:n.status}:n}).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),nL.info("Fetched detailed conversation successfully",{conversationId:e})}catch(t){if(nL.error("Error fetching detailed conversation:",{conversationId:e,err:t}),ti.current!==e)return;t instanceof nP&&404===t.status?(J("Conversation ".concat(e," not found.")),K(null),tD()):J("Failed to load details for conversation ".concat(e,".")),H(null)}finally{ti.current===e&&q(!1)}},[tD,K]);(0,r.useEffect)(()=>{eb(null),eI(null),G?tP(G):(H(null),q(!1),J(null))},[G,tP]),(0,r.useEffect)(()=>{if(L){var e;ec(null!=(e=L.requireApproval)&&e)}},[null==L?void 0:L.id]);let tO=(0,r.useCallback)(async e=>{if(ec(e),G)try{await n_.updateConversationApproval(G,e)}catch(e){nL.warn("Failed to persist requireApproval setting",{conversationId:G,err:e})}},[G]),tW=M.find(e=>e.id===G)||null,tF=(0,r.useMemo)(()=>{let e={};for(let t of ei)t.id&&(e[t.id]=t.name);return e},[ei]),t_=(0,r.useMemo)(()=>ei.find(e=>e.id===(null==L?void 0:L.flowId))||null,[ei,null==L?void 0:L.flowId]),tL=(0,r.useMemo)(()=>{var e;return(null==t_||null==(e=t_.nodes)?void 0:e.map(e=>({id:e.id,label:e.data.label||e.id})))||[]},[t_]),tH=(0,r.useMemo)(()=>{var e;return function(e){var t,n,l,r;let o=new Set;return null==(t=e.messages)||t.forEach(e=>{(null==e?void 0:e.processNodeId)&&o.add(e.processNodeId)}),null==(n=e.nodeExecutionTracker)||n.forEach(e=>{(null==e?void 0:e.nodeId)&&o.add(e.nodeId)}),null==(l=e.executionTrace)||l.forEach(e=>{(null==e?void 0:e.nodeId)&&o.add(e.nodeId)}),null==(r=e.sseVisitedIds)||r.forEach(e=>{e&&o.add(e)}),Array.from(o)}({messages:null==L?void 0:L.messages,nodeExecutionTracker:null==eR||null==(e=eR.trackingInfo)?void 0:e.nodeExecutionTracker,executionTrace:null==eR?void 0:eR.executionTrace,sseVisitedIds:e3})},[null==L?void 0:L.messages,eR,e3]);(0,r.useEffect)(()=>{e7(new Set)},[null==L?void 0:L.id]);let tU=(0,r.useMemo)(()=>{var e,t,n;let l=e=>!!e&&tL.some(t=>t.id===e);if(l(ek))return ek;if(l(null==L?void 0:L.currentNodeId))return L.currentNodeId;let r=null!=(t=null==L?void 0:L.messages)?t:[];for(let e=r.length-1;e>=0;e--){let t=r[e];if("assistant"===t.role&&l(t.processNodeId))return t.processNodeId}return null!=(n=null==(e=tL[0])?void 0:e.id)?n:null},[ek,L,tL]),tJ=async e=>{var t,n,l,r;nL.debug("Attempting to create new conversation"),ea(null);let o="string"!=typeof e||$(e)?void 0:ei.find(t=>t.id===e),a=Q&&!$(Q)?ei.find(e=>e.id===Q):void 0,i=(null==(t=null!=(l=null!=(n=null!=o?o:a)?n:ei.find(e=>e.favorite))?l:ei[0])?void 0:t.id)||null;if(!i){nL.error("Cannot create conversation: No flows available or first flow has no ID."),ea("Cannot create a new conversation: No flows available.");return}let s=(0,td.A)(),d=Date.now(),c={id:s,title:"New Conversation",flowId:i,createdAt:d,updatedAt:d};try{nL.info("Sending request to create conversation on backend",{payload:JSON.stringify(c)});let e=await n_.createConversation(c);nL.info("Successfully created conversation on backend",{conversationId:e.id}),P(t=>[e,...t].sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),K(e.id),H({id:e.id,title:e.title,flowId:e.flowId,createdAt:e.createdAt,updatedAt:e.updatedAt,messages:[]}),q(!1),J(null)}catch(t){nL.error("Error creating conversation on backend:",t);let e="Failed to create conversation on the server.";t instanceof nP?e+=" Error: ".concat((null==(r=t.body)?void 0:r.error)||t.message):t instanceof Error&&(e+=" Error: ".concat(t.message)),ea(e)}},tG=(0,r.useRef)(!1);(0,r.useEffect)(()=>{if(tG.current||0===ei.length)return;let e=new URLSearchParams(window.location.search).get("flow");if(!e){tG.current=!0;return}tG.current=!0,ei.some(t=>t.id===e)&&!$(e)&&tJ(e),o.replace("/chat")},[ei]);let[tK,tY]=(0,r.useState)(!1),tX=async e=>{ea(null);let t=(0,td.A)(),{flow:n}=await n_.synthesizeQuickChat({conversationId:t,modelId:e.modelId,servers:e.servers,systemPrompt:e.systemPrompt}),l=Date.now(),r=await n_.createConversation({id:t,title:"Quick Chat",flowId:n.id,flowSnapshot:n,createdAt:l,updatedAt:l});P(e=>[r,...e].sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),K(r.id),H({id:r.id,title:r.title,flowId:r.flowId,createdAt:r.createdAt,updatedAt:r.updatedAt,messages:[]}),q(!1),J(null),tY(!1)},tV=(0,r.useCallback)(e=>{nL.debug("Updating detailed conversation state locally",{conversationId:e.id});let t={...e,updatedAt:Date.now()};H(t),P(e=>e.map(e=>e.id===t.id?{...e,title:t.title,updatedAt:t.updatedAt}:e).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}))},[]),tZ=(0,r.useCallback)(()=>{to.current&&(nL.debug("Closing execution event stream"),to.current.close(),to.current=null)},[]),t0=(0,r.useCallback)((e,t)=>{P(n=>{let l=n.findIndex(t=>t.id===e);if(-1===l||n[l].status===t)return n;let r=[...n];return r[l]={...r[l],status:t},r})},[]),t1=(0,r.useCallback)(e=>{var t,n,l,r,o;if("number"==typeof e.seq){if(e.seq<=ta.current)return;ta.current=e.seq}let a=e=>e$(t=>{var n,l,r,o;return{totalTokens:null!=(l=null!=(n=e.totalTokens)?n:null==t?void 0:t.totalTokens)?l:0,activeNode:void 0!==e.activeNode?e.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()}}),i=e=>e1(t=>{let n=Date.now(),l={byNode:{...t.byNode},byResource:{...t.byResource},byResourceName:{...t.byResourceName},resourceVersion:t.resourceVersion};return e(l),function(e,t){let n=e=>{let n={};for(let[l,r]of Object.entries(e))t-r.ts<4e3&&(n[l]=r);return n};return{byNode:n(e.byNode),byResource:n(e.byResource),byResourceName:n(e.byResourceName),resourceVersion:e.resourceVersion}}(l,n)});if(null!=e.laneIndex)switch(e6(t=>(function(e,t){var n,l,r,o,a,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 o=null==(n=t.node)?void 0:n.nodeId,a=e.ownerNodeId&&o&&e.ownerNodeId!==o?{}:{...e.byIndex};return tI(a,c,s),a[d]={laneIndex:d,laneCount:c,label:t.laneTitle||function(e,t,n){let l=e.subflowName||e.subflowId;return l?"".concat(l," ").concat(t+1,"/").concat(n):"Lane ".concat(t+1,"/").concat(n)}(t,d,c),laneConversationId:null!=(r=t.laneConversationId)?r:null==(l=a[d])?void 0:l.laneConversationId,status:"running",lastEventAt:s},{ownerNodeId:null!=o?o:e.ownerNodeId,byIndex:a}}if(u&&"subflow:done"===t.type){let n={...e.byIndex};tI(n,c,s);let l=n[d];return n[d]={...l,label:l.label&&"pending"!==l.status?l.label:t.laneTitle||l.label,laneConversationId:null!=(a=l.laneConversationId)?a:t.laneConversationId,status:"capped"===t.status?"completed":t.status,activity:void 0,lastEventAt:s},{ownerNodeId:null!=(i=e.ownerNodeId)?i:null==(o=t.node)?void 0:o.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};tI(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;i(e=>{e.byNode[t]={kind:"active",ts:Date.now()}}),e7(e=>e.has(t)?e:new Set(e).add(t))}a({});return;case"tool:call":case"tool:progress":case"subflow:start":case"handoff":a({});return}switch(e.type){case"run:start":e$({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),e1(t2),e6(tk),e8([]),e.conversationId&&(t0(e.conversationId,"running"),tg(e.conversationId,!1));break;case"message":{let t=e.message;a({}),H(n=>{let l;if(!n||n.id!==e.conversationId)return n;let r=n.messages.findIndex(e=>e.id===t.id);return r>=0?(l=[...n.messages])[r]={...l[r],...t}:l=[...n.messages,t],{...n,messages:l}});break}case"usage":e$(t=>{var n,l,r;return{totalTokens:(null!=(n=null==t?void 0:t.totalTokens)?n:0)+(e.totalTokens||0),activeNode:null!=(l=null==t?void 0:t.activeNode)?l:null,startedAt:null!=(r=null==t?void 0:t.startedAt)?r:Date.now(),lastEventAt:Date.now()}});break;case"node:enter":if(a({activeNode:(null==(n=e.node)?void 0:n.nodeName)||(null==(l=e.node)?void 0:l.nodeId)||null}),null==(r=e.node)?void 0:r.nodeId){let t=e.node.nodeId;i(e=>{e.byNode[t]={kind:"active",ts:Date.now()}}),e7(e=>e.has(t)?e:new Set(e).add(t))}break;case"resource:read":case"resource:write":{let t="resource:read"===e.type?"read":"write";i(n=>{var l;let r=Date.now();(null==(l=e.node)?void 0:l.nodeId)&&(n.byNode[e.node.nodeId]={kind:"read"===t?"resource-read":"resource-write",ts:r}),e.server&&e.uri&&(n.byResource[t5(e.server,e.uri)]={kind:t,ts:r}),e.name&&(n.byResourceName[e.name]={kind:t,ts:r}),"write"===t&&(n.resourceVersion=n.resourceVersion+1)}),a({});break}case"todo:update":e8(null!=(o=e.todos)?o:[]),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===ti.current&&eb(e.pendingToolCalls||[]),e.conversationId&&t0(e.conversationId,"awaiting_tool_approval");break;case"run:awaiting_elicitation":e.conversationId&&e.conversationId===ti.current&&ew({elicitationId:e.elicitationId,message:e.message,requestedSchema:e.requestedSchema});break;case"run:awaiting_question":e.conversationId&&e.conversationId===ti.current&&eA({questionId:e.questionId,questions:e.questions});break;case"breakpoint:hit":case"run:paused":V(!1),e.conversationId&&(et(e.conversationId,!1),t0(e.conversationId,"paused_debug")),eN(!0);break;case"run:done":if(e.conversationId&&(et(e.conversationId,!1),t0(e.conversationId,e.status)),e.conversationId===ti.current&&(ew(null),eA(null)),e.conversationId&&tR.current&&e.conversationId!==tR.current)break;e$(null),e1(t2),e6(tk),V(!1),tn(null),tZ(),e.conversationId&&e.conversationId===ti.current?tP(e.conversationId):tD(void 0,{silent:!0});break;case"error":ea(e.message||"Execution error");break;default:a({})}},[tZ,tP,tD,et,t0,tg]),t6=(0,r.useCallback)((e,t)=>(tZ(),ta.current=void 0!==t?t-1:-1,e6(tk),new Promise(n=>{let l=!1,r=()=>{l||(l=!0,n())};try{to.current=n_.subscribeToEvents(e,{onEvent:t1,onOpen:r},t),setTimeout(r,1500)}catch(t){nL.error("Failed to open execution event stream",{conversationId:e,err:t}),r()}})),[t1,tZ]);(0,r.useEffect)(()=>{if(G&&(null==tW?void 0:tW.status)==="running"&&tR.current!==G){if(tp.current.has(G))return void nL.debug("Skipping re-attach to a conversation the user just stopped",{conversationId:G});nL.info("Re-attaching to in-progress run",{conversationId:G}),tR.current=G,V(!0),tn(G),et(G,!0),e$(e=>null!=e?e:{totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),t6(G,0)}},[G,null==tW?void 0:tW.status,t6]);let t4=async e=>{nL.debug("Attempting to delete conversation",{conversationId:e}),ea(null),tc.current.add(e);let t=ts.current.delete(e);tR.current===e&&(tZ(),V(!1),tn(null),e$(null),e6(tk)),et(e,!1),el(t=>ty(t,e));let n=M.filter(t=>t.id!==e);P(n);let l=G;G===e&&(n.length>0?(l=n[0].id,nL.debug("Deleted current conversation, selecting next most recent",{nextSelectionId:l})):(l=null,nL.debug("Deleted last conversation, clearing selection")),K(l));try{await n_.deleteConversation(e),nL.info("Successfully deleted conversation on backend",{conversationId:e})}catch(n){nL.error("Error deleting conversation:",{conversationId:e,err:n}),ea("Failed to delete conversation ".concat(e,". Please try again.")),tc.current.delete(e),t&&ts.current.add(e),P(M),K(G)}},t8=async e=>{if(!e.length)return;ea(null);let t=new Set(e);e.forEach(e=>tc.current.add(e));let n=ti.current;n&&t.has(n)&&tR.current===n&&(tZ(),V(!1),tn(null),e$(null),e6(tk)),e.forEach(e=>{et(e,!1),el(t=>ty(t,e))}),P(e=>e.filter(e=>!t.has(e.id))),n&&t.has(n)&&K(null);try{let t=await n_.deleteConversations(e);nL.info("Bulk delete succeeded",{requested:e.length,...t})}catch(t){nL.error("Bulk delete failed",{err:t}),ea("Failed to delete conversations. Please try again."),e.forEach(e=>tc.current.delete(e)),P(M),K(G)}},t3=async e=>{if(nL.debug("Flow selected, attempting to update",{flowId:e,currentConversationId:G}),ea(null),!G){nL.warn("Cannot update flow: No conversation selected."),ea("Please select a conversation first.");return}L&&L.id===G&&H({...L,flowId:e,updatedAt:Date.now()}),P(t=>t.map(t=>t.id===G?{...t,flowId:e,updatedAt:Date.now()}:t).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}));try{let t=await n_.updateConversationFlow(G,e);nL.info("Successfully updated flowId on backend",{conversationId:G,flowId:e}),H(e=>e&&e.id===G?(nL.debug("Confirming detailedConversation update from server response",{conversationId:G,flowId:t.flowId}),{...e,flowId:t.flowId,updatedAt:t.updatedAt}):(nL.debug("Skipping detailedConversation update, ID mismatch or null state",{currentDetailedId:null==e?void 0:e.id,targetId:G}),e)),P(e=>e.map(e=>e.id===G?t:e).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}))}catch(l){nL.error("Error updating flowId on backend:",{conversationId:G,flowId:e,err:l});let n="Failed to update the selected flow.";if(l instanceof nP){var t;n+=" Error: ".concat((null==(t=l.body)?void 0:t.error)||l.message)}else l instanceof Error&&(n+=" Error: ".concat(l.message));ea(n),H(L),P(M)}},t7=()=>{var e,t;eg(null!=(t=null!=(e=null==L?void 0:L.title)?e:null==tW?void 0:tW.title)?t:""),ef(!0)},t9=async()=>{var e,t;if(ef(!1),!G)return;let n=null!=(t=null!=(e=null==L?void 0:L.title)?e:null==tW?void 0:tW.title)?t:"",l=eh.trim().slice(0,200);if(l&&l!==n){H(e=>e&&e.id===G?{...e,title:l}:e),P(e=>e.map(e=>e.id===G?{...e,title:l}:e));try{let e=await n_.updateConversationTitle(G,l);H(t=>t&&t.id===G?{...t,title:e.title}:t),P(t=>t.map(t=>t.id===G?{...t,title:e.title}:t))}catch(e){nL.warn("Failed to rename conversation",{conversationId:G,err:e}),H(e=>e&&e.id===G?{...e,title:n}:e),P(e=>e.map(e=>e.id===G?{...e,title:n}:e)),ea("Failed to rename the conversation.")}}},ne=async function(e){var t;let n,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0;if(!e.trim()&&0===l.length)return;if(!L){nL.error("Cannot send message, detailed conversation not loaded."),ea("Cannot send message: conversation details not loaded.");return}if(!(null==r?void 0:r.fromQueue)&&Z.has(L.id)){let t=L.id;if(0!==l.length||ek){let n={id:(0,td.A)(),content:e,attachments:l,nodeOverride:null!=ek?ek:null,timestamp:Date.now()};el(e=>({...e,[t]:[...tb(e,t),n]})),eI(null),nL.debug("Run in progress — queued message (not steerable)",{conversationId:t,queuedId:n.id,reason:l.length>0?"attachments":"node-override"});return}{let n=(0,td.A)(),{delivered:l}=await n_.injectMessage(t,e,n);if(l){let l={id:n,role:"user",content:e,timestamp:Date.now()};tV({...L,messages:[...L.messages,l]}),nL.debug("Run in progress — injected steering message into the live run",{conversationId:t,messageId:n});return}nL.debug("Steering rejected (run no longer live) — sending as a normal turn",{conversationId:t})}}nL.debug("Sending message",{conversationId:L.id,contentLength:e.length,attachmentsCount:l.length});let o=L.messages,a=!o.some(e=>"user"===e.role),i=L.flowId,s=(null==r?void 0:r.fromQueue)?null!=(t=r.nodeOverride)?t:null:ek;if(s)n=s,(null==r?void 0:r.fromQueue)||eI(null),nL.debug("Assigning manually picked node ID to user message: ".concat(n));else if(a){let e=nT(ei.find(e=>e.id===i));e?(n=e.id,nL.debug("Assigning start node ID to first user message: ".concat(n))):nL.warn("Could not find start node for flow ".concat(i,". User message will not have a processNodeId."))}else if((null==tW?void 0:tW.status)==="error"){let e=nT(ei.find(e=>e.id===i));e?(n=e.id,nL.debug("Post-error message: re-driving turn from start node ID: ".concat(n))):nL.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=o.length-1;e>=0;e--){let t=o[e];if("assistant"===t.role&&t.processNodeId){n=t.processNodeId,nL.debug("Assigning last assistant node ID to user message: ".concat(n));break}}if(!n){let e=nT(ei.find(e=>e.id===i));e?(n=e.id,nL.debug("No prior assistant node ID found, falling back to start node ID: ".concat(n))):nL.warn("Could not find start node for fallback in flow ".concat(i,". User message will not have a processNodeId."))}}let d={id:(0,td.A)(),role:"user",content:e,timestamp:Date.now(),attachments:l.length>0?l:void 0,processNodeId:n},c={...L,messages:[...L.messages,d]};tV(c),c.flowId?await nl(c):(ea("Please select a flow for this conversation before sending messages"),H(L))},nt=(0,r.useCallback)((e,t)=>{nL.verbose("Handling API response data",JSON.stringify(e)),et(t,"running"===e.status);let n=tR.current===t,l=ti.current===t;if("paused_debug"===e.status&&e.debugState)return(nL.info("API Response: Paused for debugging",{conversationId:t}),l)?(eD(e.debugState),eN(!0),eP(!0),V(!1),tn(null),tZ(),nn(),H(n=>(null==n?void 0:n.id)===t&&e.debugState.messages&&JSON.stringify(n.messages)!==JSON.stringify(e.debugState.messages)?(nL.debug("Updating detailed conversation messages from debug state"),{...n,messages:e.debugState.messages,updatedAt:e.debugState.updatedAt}):n),P(n=>n.map(n=>{var l,r;return n.id===t?{...n,title:null!=(l=e.debugState.title)?l:n.title,flowId:null!=(r=e.debugState.flowId)?r:n.flowId,status:"paused_debug",updatedAt:e.debugState.updatedAt}:n}).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)}))):(t0(t,"paused_debug"),n&&(V(!1),tn(null),tZ(),nn())),!0;if(("completed"===e.status||"error"===e.status)&&l?(nL.info("API Response: Execution completed or errored (Status: ".concat(e.status,"). Hiding debugger panel."),{conversationId:t}),eN(!1),eD(null),eP(!1)):nL.debug("API Response: Status is '".concat(e.status,"'. Debugger panel visibility unchanged (currently ").concat(eT?"visible":"hidden",")."),{conversationId:t}),e.messages&&e.conversation_id===t){let n=e.messages.map((e,n)=>"number"!=typeof e.timestamp||isNaN(e.timestamp)?(nL.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);H(l=>{var r,o;let a=l;return(null==l?void 0:l.id)===t&&JSON.stringify(l.messages)!==JSON.stringify(n)&&(nL.info("API Response/Polling: Updating detailed conversation messages",{conversationId:t,newMessageCount:n.length}),a={...l,messages:n,updatedAt:e.updatedAt||l.updatedAt}),nL.debug("Polling: setDetailedConversation callback executed.",{conversationId:t,messagesChanged:a!==l,newMessageCount:null!=(o=null==a||null==(r=a.messages)?void 0:r.length)?o:"N/A"}),a})}if("awaiting_tool_approval"===e.status)nL.info("API Response/Polling: Pausing for tool approval",{conversationId:t}),l&&eb(e.pendingToolCalls||[]),n&&(V(!1),tn(null),tZ(),nn());else if("completed"===e.status||"error"===e.status){if(nL.info("API Response/Polling: Stopping due to final status",{conversationId:t,status:e.status}),n&&(nn(),V(!1),tn(null),tZ()),"error"===e.status){var r,o;let a=(null==(r=e.error)?void 0:r.message)||(null==(o=e.lastResponse)?void 0:o.error)||"Unknown error during execution";nU.test(a)||tp.current.has(t)?(tg(t,!0),(n||l)&&ea(null),nL.info("API Response/Polling: Execution cancelled by user",{conversationId:t})):(ea(a),nL.error("API Response/Polling: Execution resulted in error",{conversationId:t,error:e.error||e.lastResponse}))}tP(t)}else"running"!==e.status||eT?l&&eb(null):(l&&eb(null),n&&!tr.current&&V(!0));return e.conversation_id===t&&P(n=>n.map(n=>{var l,r,o;return n.id===t?{...n,title:null!=(l=e.title)?l:n.title,flowId:null!=(r=e.flowId)?r:n.flowId,status:null!=(o=e.status)?o:n.status,updatedAt:e.updatedAt||n.updatedAt}:n}).sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),!1},[H,eb,V,ea,eN,eD,P,tP,tZ,et,t0,tg]),nn=()=>{tr.current&&(nL.debug("Stopping polling interval"),clearInterval(tr.current),tr.current=null)};(0,r.useEffect)(()=>()=>{tZ()},[tZ]);let nl=async e=>{if(!(null==e?void 0:e.id)||!e.flowId||!tl.current)return nL.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}),ea("Cannot send message: Missing conversation ID or flow ID."),!1;eb(null),ea(null),V(!0),tn(e.id),et(e.id,!0),tg(e.id,!1);let t=ts.current.delete(e.id);e$({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),await t6(e.id);let n=!1;try{let t;if($(e.flowId))t="flow-Quick Chat",nL.debug("Sending quick chat to completions",{flowId:e.flowId,conversationId:e.id});else{let n=await t$.g.getFlow(e.flowId);if(!n)throw Error("Flow with ID ".concat(e.flowId," not found"));t="flow-".concat(n.name),nL.debug("Sending to chat completions",{flowId:e.flowId,flowName:n.name,conversationId:e.id})}let l=e.messages.filter(e=>{var t;return!e.disabled&&!((null!=(t=e.depth)?t:0)>0)}).map(e=>{let t=nH(e),n=e.processNodeId,l={id:e.id,timestamp:e.timestamp};return"user"===e.role?{role:"user",content:t,...l,processNodeId:n}:"assistant"===e.role?{role:"assistant",content:t,tool_calls:e.tool_calls,...l,processNodeId:n}:"system"===e.role?{role:"system",content:t,...l,processNodeId:n}:"tool"===e.role?e.tool_call_id?{role:"tool",content:t,tool_call_id:e.tool_call_id,...l,processNodeId:n}:{role:"user",content:"string"==typeof t?"Tool result: ".concat(t):t,...l,processNodeId:n}:{role:"user",content:t,...l,processNodeId:n}}),r=await tl.current.chat.completions.create({model:t,messages:l,stream:!1,metadata:(()=>{let t={flujo:"true",requireApproval:ed?"true":void 0,flujodebug:ex?"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})()});nL.debug("Chat completion initial response received",{completionId:r.id}),n=!0;let o={...r,status:r.status||"completed",conversation_id:e.id,messages:r.messages||e.messages,pendingToolCalls:r.pendingToolCalls,debugState:r.debugState,error:r.error,lastResponse:r.lastResponse,updatedAt:r.updatedAt||Date.now()},a=nt(o,e.id);a||tr.current?a&&nL.debug("Debug state handled, polling remains stopped."):nL.debug("Starting polling after initial non-debug response.")}catch(o){if(nq(o)||tp.current.has(e.id))return nL.info("Chat completion cancelled by user",{conversationId:e.id}),n=!1,et(e.id,!1),tg(e.id,!0),tR.current===e.id&&(nn(),V(!1),tn(null),tZ(),ea(null)),n;nL.error("Error calling chat completions API:",o),n=!1;let r="An error occurred while sending the message.";if(o instanceof nD.LG)r="API Error: ".concat(o.message," (Status: ").concat(o.status,")"),o.code&&(r+=" (Code: ".concat(o.code,")")),o.type&&(r+=" [Type: ".concat(o.type,"]")),nL.verbose("APIError details",JSON.stringify(o));else if(o instanceof nD.vc){r="OpenAI Error: ".concat(o.message);let e=o.error;e&&"object"==typeof e&&(e.code&&(r+=" (Code: ".concat(e.code,")")),e.type&&(r+=" [Type: ".concat(e.type,"]"))),nL.verbose("OpenAIError details",JSON.stringify(o))}else if(o instanceof nP){var l;r="Error: ".concat((null==(l=o.body)?void 0:l.error)||o.message),o.status&&(r+=" (Status: ".concat(o.status,")")),nL.verbose("ChatApiError details",JSON.stringify(o.body))}else o instanceof Error&&(r=o.message);ea(r),et(e.id,!1),tR.current===e.id&&(nn(),V(!1),tn(null),tZ()),t&&ts.current.add(e.id)}finally{}return n},nr=(0,r.useRef)(ne);nr.current=ne;let no=(0,r.useCallback)(e=>{nr.current(e)},[]),[na,ni]=(0,r.useState)(tm),ns=(0,r.useMemo)(()=>new Set(na.order),[na.order]),nd=(0,r.useCallback)(e=>{ni(t=>{let{state:n,evicted:l}=function(e,t){var n,l,r;let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:16,i=tv(t.serverName,t.uri),s=e.entries[i],d={key:i,serverName:t.serverName,uri:t.uri,toolName:null!=(n=t.toolName)?n:null==s?void 0:s.toolName,latestToolArgs:null!=(l=t.toolArgs)?l:null==s?void 0:s.latestToolArgs,latestResultContent:null!=(r=t.resultContent)?r:null==s?void 0:s.latestResultContent,unread:!1,lastActiveAt:o,updatedAt:o,consent:null==s?void 0:s.consent},c={...e.entries,[i]:d};return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:16,n=arguments.length>2?arguments[2]:void 0,l=Math.max(1,Math.floor(t));if(e.order.length<=l)return{state:e,evicted:[]};let r={...e.entries},o=[...e.order],a=[];for(;o.length>l;){let e=null,t=1/0;for(let l of o){var i,s;if(l===n)continue;let o=null!=(s=null==(i=r[l])?void 0:i.lastActiveAt)?s:0;o<t&&(t=o,e=l)}if(!e)break;delete r[e],o=o.filter(t=>t!==e),a.push(e)}let d=e.activeKey;return d&&!r[d]&&(d=o.length?o[o.length-1]:null),{state:{entries:r,order:o,activeKey:d},evicted:a}}({entries:c,order:s?e.order:[...e.order,i],activeKey:i},a,i)}(t,e);return l.length&&nL.info("Canvas tab cap reached — evicted (LRU): ".concat(l.join(", "))),n})},[]),nc=(0,r.useCallback)(e=>{ni(t=>(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),l=e.entries[t];if(!l)return e;let r={...l,unread:!1,lastActiveAt:n};return{...e,entries:{...e.entries,[t]:r},activeKey:t}})(t,e))},[]),nu=(0,r.useCallback)(e=>{ni(t=>(function(e,t){if(!e.entries[t])return e;let n={...e.entries};delete n[t];let l=e.order.filter(e=>e!==t),r=e.activeKey;if(r===t){r=null;let e=-1/0;for(let t of l){var o,a;let l=null!=(a=null==(o=n[t])?void 0:o.lastActiveAt)?a:0;l>=e&&(e=l,r=t)}}return{entries:n,order:l,activeKey:r}})(t,e))},[]);(0,r.useEffect)(()=>{ni(tm)},[G]);let np=na.order.join("|");(0,r.useEffect)(()=>{let e=null==L?void 0:L.messages;if(!e||0===na.order.length)return;let t=new Map;for(let n of e){let e=n.ui;"tool"===n.role&&(null==e?void 0:e.uri)&&(null==e?void 0:e.serverName)&&"string"==typeof n.content&&t.set("".concat(e.serverName,"::").concat(e.uri),n.content)}ni(e=>{let n=e;for(let l of e.order){let r=e.entries[l],o=t.get(l);r&&void 0!==o&&o!==r.latestResultContent&&(n=function(e,t){var n,l,r;let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),a=tv(t.serverName,t.uri),i=e.entries[a];if(!i)return e;let s=e.activeKey===a,d={...i,toolName:null!=(n=t.toolName)?n:i.toolName,latestToolArgs:null!=(l=t.toolArgs)?l:i.latestToolArgs,latestResultContent:null!=(r=t.resultContent)?r:i.latestResultContent,updatedAt:o,unread:!s,lastActiveAt:s?o:i.lastActiveAt};return{...e,entries:{...e.entries,[a]:d}}}(n,{serverName:r.serverName,uri:r.uri,resultContent:o}))}return n})},[null==L?void 0:L.messages,np]);let nf=async(e,t,n)=>{if(!L)return;nL.debug("Editing message",{messageId:e,contentLength:t.length,processNodeId:n});let l=L.messages.findIndex(t=>t.id===e);if(-1===l)return;let r={...L.messages[l],content:t,timestamp:Date.now(),processNodeId:n||void 0},o=[...L.messages.slice(0,l),r],a={...L,messages:o};if(tV(a),a.flowId){let e={flujo:"true",requireApproval:ed?"true":void 0,flujodebug:ex?"true":void 0,conversationId:a.id,processNodeId:n||void 0};if(!tl.current)return;ea(null),V(!0),tn(a.id),et(a.id,!0),tg(a.id,!1),e$({totalTokens:0,activeNode:null,startedAt:Date.now(),lastEventAt:Date.now()}),await t6(a.id);try{let t=await t$.g.getFlow(a.flowId);if(!t)throw Error("Flow with ID ".concat(a.flowId," not found"));let n=a.messages.filter(e=>{var t;return!e.disabled&&!((null!=(t=e.depth)?t:0)>0)}).map(e=>{let t=nH(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}}),l=await tl.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})()}),r={...l,status:l.status||"completed",conversation_id:a.id,messages:l.messages||a.messages,pendingToolCalls:l.pendingToolCalls,debugState:l.debugState,error:l.error,updatedAt:l.updatedAt||Date.now()};nt(r,a.id)}catch(e){nq(e)||tp.current.has(a.id)?(nL.info("Edited-message run cancelled by user",{conversationId:a.id}),tg(a.id,!0)):(nL.error("Error sending edited message:",e),ea(e instanceof Error?e.message:"Failed to send edited message")),et(a.id,!1),tR.current===a.id&&(V(!1),tn(null),tZ())}}},nh=(0,r.useCallback)(e=>{var t,n,l;let r=null==L?void 0:L.messages.find(t=>t.id===e);r&&"user"===r.role&&"string"==typeof r.content&&ez({messageId:e,content:r.content,nodeId:null!=(l=r.processNodeId)?l:null!=(n=null==(t=tL[0])?void 0:t.id)?n:null})},[L,tL]),ng=(0,r.useCallback)(e=>{ez(t=>t?{...t,content:e}:t)},[]),nx=(0,r.useCallback)(e=>{ez(t=>t?{...t,nodeId:e}:t)},[]),nm=(0,r.useCallback)(()=>ez(null),[]),nv=async(e,t,n,l)=>{if(G){nL.info("Handling tool response: ".concat(e),{conversationId:G,toolCallId:t,always:n}),eb(null),V(!0),tn(G),et(G,!0),ea(null),await t6(G);try{let r=await n_.respondToToolCall(G,e,t,n,l);nL.debug("Tool response successful",{conversationId:G,action:e,toolCallId:t}),nt(r,G)}catch(l){if(nq(l)||tp.current.has(G)){nL.info("Tool-response resume cancelled by user",{conversationId:G}),tg(G,!0),tR.current===G&&V(!1),et(G,!1);return}nL.error("Error sending tool response (".concat(e,")"),{conversationId:G,toolCallId:t,err:l});let n="Failed to ".concat(e," tool call.");if(l instanceof nP){var r;n+=" Error: ".concat((null==(r=l.body)?void 0:r.error)||l.message)}else l instanceof Error&&(n+=" Error: ".concat(l.message));ea(n),tR.current===G&&V(!1),et(G,!1)}}},nb=async(e,t)=>{if(G){nL.info("Submitting elicitation form",{conversationId:G,elicitationId:e}),ew(null);try{await fetch("/v1/chat/conversations/".concat(G,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"elicitation-submit",elicitationId:e,content:t})})}catch(t){nL.error("Failed to submit elicitation",{conversationId:G,elicitationId:e,err:t})}}},ny=async e=>{if(G){nL.info("Cancelling elicitation",{conversationId:G,elicitationId:e}),ew(null);try{await fetch("/v1/chat/conversations/".concat(G,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"elicitation-cancel",elicitationId:e})})}catch(t){nL.error("Failed to cancel elicitation",{conversationId:G,elicitationId:e,err:t})}}},nw=async(e,t)=>{if(G){nL.info("Answering question",{conversationId:G,questionId:e}),eA(null);try{await fetch("/v1/chat/conversations/".concat(G,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"question-answer",questionId:e,answers:t})})}catch(t){nL.error("Failed to answer question",{conversationId:G,questionId:e,err:t})}}},nj=async e=>{if(G){nL.info("Declining question",{conversationId:G,questionId:e}),eA(null);try{await fetch("/v1/chat/conversations/".concat(G,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"question-decline",questionId:e})})}catch(t){nL.error("Failed to decline question",{conversationId:G,questionId:e,err:t})}}},nA=async()=>{if(G&&eT){nL.info("Handling debug step request",{conversationId:G}),V(!0),tn(G),et(G,!0),ea(null),await t6(G);try{let e=await n_.debugStep(G);nt(e,G)}catch(e){nL.error("Error during debug step API call",{conversationId:G,err:e}),ea(e instanceof Error?e.message:"Failed to execute debug step."),V(!1),et(G,!1),eN(!1),eD(null)}finally{}}},nS=async()=>{if(G&&eT){nL.info("Handling debug continue request",{conversationId:G}),V(!0),tn(G),et(G,!0),ea(null),eN(!1),await t6(G);try{let e=await n_.debugContinue(G);nt(e,G)}catch(e){nL.error("Error during debug continue API call",{conversationId:G,err:e}),ea(e instanceof Error?e.message:"Failed to continue execution."),V(!1),et(G,!1)}finally{}}};(0,r.useEffect)(()=>{if(eR){var e;te(null!=(e=eR.breakpoints)?e:[])}},[eR]);let nk=(0,r.useCallback)(async e=>{if(!G)return;let t=e9.includes(e)?e9.filter(t=>t!==e):[...e9,e];te(t);try{await n_.setBreakpoints(G,t)}catch(e){nL.error("Failed to update breakpoints",{conversationId:G,err:e}),te(e9)}},[e9,G]),nI=(0,r.useCallback)(async()=>{if(G){nL.info("Attaching debugger to running conversation",{conversationId:G});try{await n_.setBreakpoints(G,["*"])}catch(e){nL.error("Failed to attach debugger",{conversationId:G,err:e}),ea(e instanceof Error?e.message:"Failed to attach debugger.")}}},[G]),nE=async()=>{if(!G||!eT)return;let e=null==eR?void 0:eR.currentNodeId;V(!0),tn(G),et(G,!0),ea(null),await t6(G);try{for(let r=0;r<50;r++){var t,n,l;let r=await n_.debugStep(G),o=null!=(l=null==r?void 0:r.status)?l:null==r||null==(t=r.debugState)?void 0:t.status,a=null==r||null==(n=r.debugState)?void 0:n.currentNodeId;if("paused_debug"!==o||a&&a!==e)return void nt(r,G)}nL.warn("Step Over hit iteration cap",{conversationId:G}),V(!1),et(G,!1)}catch(e){nL.error("Error during step over",{conversationId:G,err:e}),ea(e instanceof Error?e.message:"Failed to step over."),V(!1),et(G,!1)}},nM=async()=>{if(G){nL.info("Cancelling request",{conversationId:G}),nn(),V(!1),tn(null),et(G,!1),tg(G,!0),eP(!1),tZ(),eb(null),ea(null);try{await n_.cancel(G),nL.debug("Cancel request sent successfully",{conversationId:G}),await tP(G)}catch(e){nL.error("Error sending cancel request",{conversationId:G,err:e}),ea("Failed to send cancel request to the server.")}}},nO=async e=>{if(e===G)return void await nM();nL.info("Stopping background conversation",{conversationId:e}),tg(e,!0);try{await n_.cancel(e),et(e,!1),await tD(void 0,{silent:!0})}catch(t){nL.error("Error stopping background conversation",{conversationId:e,err:t}),ea("Failed to send cancel request to the server.")}},nW=async()=>{nL.info("Closing debugger panel",{conversationId:G}),eN(!1),eD(null),eP(!1),await nM()};nL.debug("Rendering Chat component",{currentConversationId:G,isHandleEditMessageDefined:!0});let nF=(eM||eT)&&!!eR&&!!G,nB=(null==tW?void 0:tW.status)==="awaiting_tool_approval"||!!ev,nJ=!(nB||(null==tW?void 0:tW.status)==="paused_debug")&&(X&&tt===G||!!G&&Z.has(G)||(null==tW?void 0:tW.status)==="running"),nG=!nJ&&!!G&&tf.has(G);return(0,r.useEffect)(()=>{if(!G||er.current||!L||L.id!==G)return;let e=tb(en,G)[0];if(!e||!function(e){return!e.running&&!e.pendingApproval&&!e.debugPaused&&!e.hasError&&!e.stopped}({running:Z.has(G),pendingApproval:!!ev,debugPaused:eT,hasError:(null==tW?void 0:tW.status)==="error",stopped:nG}))return;er.current=!0;let t=setTimeout(async()=>{try{el(t=>tw(t,G,e.id)),await ne(e.content,e.attachments,{fromQueue:!0,nodeOverride:e.nodeOverride,queuedId:e.id})}catch(t){el(t=>(function(e,t,n){let l=tb(e,t).filter(e=>e.id!==n.id);return{...e,[t]:[n,...l]}})(t,G,e))}finally{er.current=!1}},0);return()=>clearTimeout(t)},[G,L,en,Z,ev,eT,null==tW?void 0:tW.status,nG]),(0,l.jsxs)(i.default,{sx:{display:"flex",height:"calc(100vh - 64px)"},children:[eQ&&(0,l.jsx)(i.default,{sx:{width:40,flexShrink:0,borderRight:1,borderColor:"divider",display:"flex",justifyContent:"center",pt:1},children:(0,l.jsx)(s.A,{title:"Show conversation sidebar",children:(0,l.jsx)(d.A,{size:"small",onClick:eX,"aria-label":"Show conversation sidebar",children:(0,l.jsx)(E.A,{fontSize:"small"})})})}),!eQ&&(0,l.jsx)(i.default,{sx:{width:eG,flexShrink:0,borderRight:1,borderColor:"divider",display:"flex",flexDirection:"column"},children:O?(0,l.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",p:2},children:(0,l.jsx)(nN.default,{size:"medium",color:"primary"})}):F?(0,l.jsx)(c.A,{severity:"error",sx:{m:2},children:F}):(0,l.jsx)(eu,{conversations:M,flowNames:tF,currentConversationId:G,onSelectConversation:K,onDeleteConversation:t4,onBulkDelete:t8,onStopConversation:nO,onNewConversation:tJ,onQuickChat:()=>tY(!0),onCollapse:eX})}),!eQ&&(0,l.jsx)(i.default,{onPointerDown:eV,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,l.jsxs)(i.default,{sx:{flex:1,height:"100%",display:"flex",minWidth:0,minHeight:0},children:[(0,l.jsxs)(i.default,{sx:{flex:1,minWidth:0,display:"flex",flexDirection:"column",height:"100%"},children:[G&&(0,l.jsx)(i.default,{sx:{px:2,pt:2,pb:1,display:"flex",alignItems:"center",gap:1,minWidth:0},children:ep?(0,l.jsx)(u.A,{value:eh,onChange:e=>eg(e.target.value),onBlur:t9,onKeyDown:e=>{"Enter"===e.key?(e.preventDefault(),t9()):"Escape"===e.key&&ef(!1)},size:"small",autoFocus:!0,fullWidth:!0,inputProps:{maxLength:200,"aria-label":"Conversation title"}}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(p.default,{variant:"h6",noWrap:!0,onClick:t7,title:(null==L?void 0:L.title)||(null==tW?void 0:tW.title)||"",sx:{flex:1,minWidth:0,cursor:"text"},children:(null==L?void 0:L.title)||(null==tW?void 0:tW.title)||"Untitled Conversation"}),(0,l.jsx)(s.A,{title:"Rename conversation",children:(0,l.jsx)(d.A,{size:"small",onClick:t7,"aria-label":"Rename conversation",children:(0,l.jsx)(z.A,{fontSize:"small"})})}),(0,l.jsx)(s.A,{title:eL?"Hide executed steps":"Show executed steps",children:(0,l.jsx)(d.A,{size:"small",color:eL?"primary":"default",onClick:()=>eH(e=>!e),"aria-label":"Toggle executed steps panel",children:(0,l.jsx)(N.A,{fontSize:"small"})})})]})}),G&&(0,l.jsxs)(i.default,{sx:{p:2,borderBottom:1,borderColor:"divider",display:"flex",alignItems:"center",gap:2},children:[(0,l.jsx)(i.default,{sx:{flex:1,minWidth:0},children:$((null==tW?void 0:tW.flowId)||(null==L?void 0:L.flowId))?(0,l.jsx)(f.A,{color:"primary",variant:"outlined",icon:(0,l.jsx)(A.A,{}),label:"Quick Chat"}):(0,l.jsx)(tB.A,{selectedFlowId:(null==tW?void 0:tW.flowId)||(null==L?void 0:L.flowId)||null,onSelectFlow:e=>{var t,n,l,r;if(!G){nL.warn("Cannot update flow: No conversation selected."),ea("Please select a conversation first.");return}$(e)||Y(e);let o=null!=(l=null!=(n=null==L?void 0:L.flowId)?n:null==tW?void 0:tW.flowId)?l:null;if((null!=(r=null==L||null==(t=L.messages)?void 0:t.length)?r:0)>0&&o&&e!==o){nL.debug("Flow switch on executed conversation — asking for confirmation",{flowId:e,currentFlowId:o}),eC(e);return}t3(e)},disabled:eT})}),(()=>{let e=(null==tW?void 0:tW.flowId)||(null==L?void 0:L.flowId)||null;return!e||$(e)?null:(0,l.jsx)(s.A,{title:"Open this flow in the FlowBuilder",children:(0,l.jsx)(d.A,{color:"primary",onClick:()=>o.push("/flows?flow=".concat(encodeURIComponent(e))),children:(0,l.jsx)(T.A,{})})})})(),(0,l.jsx)(tq,{usage:null==L?void 0:L.usage,contextInfo:null==L?void 0:L.contextInfo,availableNodes:tL})]}),(0,l.jsxs)(i.default,{sx:{flex:1,minHeight:0,position:"relative",display:"flex",flexDirection:"column"},children:[(0,l.jsx)(i.default,{ref:tj,onScroll:tz,sx:{flex:1,overflow:"auto",p:2},children:U?(0,l.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,l.jsx)(nN.default,{size:"medium",color:"primary"})}):B?(0,l.jsx)(c.A,{severity:"error",sx:{m:2},children:B}):L?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(e2,{messages:L.messages,pendingToolCalls:ev,pendingElicitation:ey,availableNodes:tL,conversationId:L.id,editingMessageId:null!=(t=null==eE?void 0:eE.messageId)?t:null,onToggleDisabled:e=>{if(!L)return;nL.debug("Toggling message disabled state",{messageId:e});let t=L.messages.map(t=>t.id===e?{...t,disabled:!t.disabled}:t);tV({...L,messages:t})},onSplitConversation:e=>{if(!L)return;nL.debug("Splitting conversation at message",{messageId:e});let t=L.messages.findIndex(t=>t.id===e);if(-1===t)return;let n=L.messages.slice(0,t+1),l=(0,td.A)(),r={id:l,title:"Split from ".concat(L.title),messages:n,flowId:L.flowId,createdAt:Date.now(),updatedAt:Date.now()},o={id:l,title:r.title,flowId:r.flowId,createdAt:r.createdAt,updatedAt:r.updatedAt};ts.current.add(l),P(e=>[o,...e].sort((e,t)=>{var n,l;return(null!=(n=t.lastUserMessageAt)?n:t.updatedAt)-(null!=(l=e.lastUserMessageAt)?l:e.updatedAt)})),K(l),H(r),q(!1),J(null)},onBeginEditMessage:nh,onApproveToolCall:(e,t)=>{nv("approve",e,t)},onRejectToolCall:(e,t,n)=>{nv("reject",e,t,n)},onSubmitElicitation:nb,onCancelElicitation:ny,pendingQuestion:ej,onAnswerQuestion:nw,onDeclineQuestion:nj,onAppMessage:no,onOpenInCanvas:nd,canvasKeys:ns,queuedMessages:tb(en,L.id),queueHoldReason:function(e){return e.stopped?"Held — you stopped this run. Send again to continue.":e.hasError?"Held — the last run failed. Retry or send again to continue.":e.pendingApproval?"Held — waiting for tool approval.":e.debugPaused?"Held — paused in the debugger.":null}({running:Z.has(L.id),pendingApproval:!!ev,debugPaused:eT,hasError:(null==tW?void 0:tW.status)==="error",stopped:nG})}),!X&&!eT&&L.messages.length>0&&(null==tW?void 0:tW.status)==="completed"&&(0,l.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,l.jsx)(c.A,{icon:(0,l.jsx)(C.A,{fontSize:"inherit"}),severity:"success",variant:"filled",sx:{borderRadius:2,py:.5},children:"Conversation completed"})}),!X&&!eT&&nG&&(0,l.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,l.jsx)(c.A,{icon:(0,l.jsx)(I.A,{fontSize:"inherit"}),severity:"info",variant:"outlined",sx:{borderRadius:2,py:.5,alignItems:"center"},action:(0,l.jsx)(h.A,{color:"inherit",size:"small",startIcon:(0,l.jsx)(S.A,{}),onClick:()=>nl(L),children:"Resume"}),children:"Conversation stopped"})}),!X&&!eT&&!eo&&!nG&&(null==tW?void 0:tW.status)==="error"&&(0,l.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",my:2},children:(0,l.jsx)(c.A,{icon:(0,l.jsx)(k.A,{fontSize:"inherit"}),severity:"error",variant:"filled",sx:{borderRadius:2,py:.5,alignItems:"center"},action:(0,l.jsx)(h.A,{color:"inherit",size:"small",startIcon:(0,l.jsx)(S.A,{}),onClick:()=>{nl(L)},children:"Retry"}),children:"Conversation ended with an error"})}),nJ&&e4.length>0&&(0,l.jsx)(tM,{todos:e4}),nJ&&!eT&&(0,l.jsx)(tN,{liveStats:eZ,lanes:e5,onOpenLane:K,onStop:nM,stopDisabled:!G,onAttachDebugger:X&&tt===G&&!eM?nI:void 0}),!nJ&&nB&&!eT&&(0,l.jsx)(tN,{liveStats:eZ,lanes:e5,onOpenLane:K,awaitingApproval:!0,onStop:nM,stopDisabled:!G}),eo&&(0,l.jsx)(c.A,{severity:"error",sx:{mt:2},action:(0,l.jsx)(h.A,{color:"inherit",size:"small",startIcon:(0,l.jsx)(S.A,{}),onClick:()=>{L&&nl(L)},children:"Retry"}),children:eo})]}):(0,l.jsx)(p.default,{variant:"body1",color:"textSecondary",align:"center",sx:{mt:4},children:M.length>0?"Select a conversation or create a new one.":"Create a new conversation to start chatting."})}),(0,l.jsx)(g.A,{in:tS,unmountOnExit:!0,children:(0,l.jsx)(x.A,{size:"small",color:"primary","aria-label":"Scroll to latest messages",onClick:tT,sx:{position:"absolute",bottom:16,right:24,zIndex:2},children:(0,l.jsx)(j.A,{})})})]}),(0,l.jsx)(tx,{entries:function(e){return e.order.map(t=>e.entries[t]).filter(e=>!!e)}(na),activeKey:na.activeKey,onSelectTab:nc,onCloseTab:nu,onAppMessage:no}),(0,l.jsxs)(i.default,{sx:{p:2,borderTop:1,borderColor:"divider"},children:[G&&tb(en,G).length>0&&(0,l.jsxs)(i.default,{"data-testid":"queued-messages",sx:{mb:1,display:"flex",flexWrap:"wrap",gap:1,alignItems:"center"},children:[(0,l.jsxs)(p.default,{variant:"caption",color:"text.secondary",sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,l.jsx)(R.A,{fontSize:"inherit"})," Queued:"]}),tb(en,G).map(e=>(0,l.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:()=>el(t=>tw(t,G,e.id))},e.id))]}),(0,l.jsx)(tu,{onSendMessage:ne,disabled:U||!((null==L?void 0:L.flowId)||(null==tW?void 0:tW.flowId))||!!ev||eT,requireApproval:ed,onRequireApprovalChange:tO,executeInDebugger:ex,onExecuteInDebuggerChange:em,availableNodes:tL,flow:t_,currentNodeId:tU,nodeOverrideActive:!!ek,onSelectNode:eI,editing:eE,onEditingContentChange:ng,onEditingNodeChange:nx,onSaveEdit:()=>{eE&&eE.content.trim()&&(nf(eE.messageId,eE.content,eE.nodeId||""),ez(null))},onCancelEdit:nm})]})]})," ",eL&&G&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.default,{onPointerDown:eB,sx:{width:"6px",flexShrink:0,cursor:"col-resize",bgcolor:"divider",transition:"background-color 120ms","&:hover":{bgcolor:"primary.main"},touchAction:"none"},"aria-label":"Resize executed steps panel"}),(0,l.jsx)(i.default,{sx:{width:"".concat(eU,"px"),minWidth:240,maxWidth:"70vw",flexShrink:0,display:"flex",flexDirection:"column",height:"100%"},children:(0,l.jsx)(nz,{flowId:(null==L?void 0:L.flowId)||(null==tW?void 0:tW.flowId)||null,flowSnapshot:null!=(n=null==eR?void 0:eR.flowSnapshot)?n:null,executedNodeIds:tH,liveActivity:e0,onClose:()=>eH(!1)})})]}),nF&&eR&&G&&!eF&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.default,{onPointerDown:eJ,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,l.jsx)(i.default,{sx:{width:eO?"".concat(eO,"px"):"50%",minWidth:360,maxWidth:"85vw",flexShrink:0,display:"flex",flexDirection:"column",height:"100%"},children:(0,l.jsx)(nC,{debugState:eR,conversationId:G,liveActivity:e0,onStep:nA,onStepOver:nE,onContinue:nS,onCancel:nM,isLoading:X,breakpoints:e9,onToggleBreakpoint:nk,onClose:nW,isExpanded:eF,onToggleExpand:()=>e_(e=>!e)})})]})]})," ",nF&&eR&&G&&eF&&(0,l.jsx)(m.A,{fullScreen:!0,open:!0,onClose:()=>e_(!1),children:(0,l.jsx)(i.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:(0,l.jsx)(nC,{debugState:eR,conversationId:G,liveActivity:e0,onStep:nA,onStepOver:nE,onContinue:nS,onCancel:nM,isLoading:X,breakpoints:e9,onToggleBreakpoint:nk,onClose:nW,isExpanded:eF,onToggleExpand:()=>e_(e=>!e)})})}),(0,l.jsxs)(m.A,{open:!!eS,onClose:()=>eC(null),children:[(0,l.jsx)(v.A,{children:"Switch flow?"}),(0,l.jsx)(b.A,{children:(0,l.jsxs)(y.A,{children:["This conversation has already been processed with its current flow."," ","If you switch to"," ",(0,l.jsx)("strong",{children:(null==(e=ei.find(e=>e.id===eS))?void 0:e.name)||"the selected flow"}),","," ","the conversation will continue processing from that flow's Start node again."]})}),(0,l.jsxs)(w.A,{children:[(0,l.jsx)(h.A,{onClick:()=>eC(null),children:"Cancel"}),(0,l.jsx)(h.A,{variant:"contained",onClick:()=>{eC(null),eS&&t3(eS)},children:"Switch Flow"})]})]}),(0,l.jsx)(tQ,{open:tK,onClose:()=>tY(!1),onStart:tX})]})},nJ=(0,eJ.h)("frontend/components/ClientOnly");function nG(e){let{children:t}=e,[n,o]=(0,r.useState)(!1);return((0,r.useEffect)(()=>(nJ.debug("ClientOnly component mounted"),o(!0),()=>{nJ.debug("ClientOnly component unmounted")}),[]),n)?(nJ.debug("ClientOnly component rendering children"),(0,l.jsx)(l.Fragment,{children:t})):(nJ.debug("ClientOnly component rendering null (not yet mounted)"),null)}let nK=(0,eJ.h)("app/chat/page");function nQ(){return nK.debug("Rendering ChatPage"),(0,l.jsx)(o.A,{maxWidth:!1,disableGutters:!0,children:(0,l.jsx)(nG,{children:(0,l.jsx)(nB,{})})})}}},e=>{e.O(0,[3862,2678,4754,9244,3392,1871,7111,2003,9562,488,3272,3077,8470,9581,3659,469,6404,5418,8401,3452,3189,4147,1572,9164,812,8404,1988,8441,1255,7358],()=>e(e.s=79415)),_N_E=e.O()}]);
|