flujo-ai 3.44.0 → 3.45.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-path-routes-manifest.json +7 -7
- package/.next/build-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +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 +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- 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/route.js +1 -1
- package/.next/server/app/api/approvals/route.js.nft.json +1 -1
- package/.next/server/app/api/backup/route.js.nft.json +1 -1
- package/.next/server/app/api/bugs/enhance/route.js +1 -1
- package/.next/server/app/api/bugs/enhance/route.js.nft.json +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/flow/[id]/convert-process-to-subflow/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/route.js.nft.json +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/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/assist/route.js +1 -1
- package/.next/server/app/api/flow/assist/route.js.nft.json +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/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/visual/route.js +2 -2
- package/.next/server/app/api/flow/generate/visual/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/generator/route.js +1 -1
- package/.next/server/app/api/flow/generator/route.js.nft.json +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/prompt-renderer/route.js +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/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/repair/route.js +1 -1
- package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/route.js.nft.json +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/mcp/app-consent/route.js +1 -1
- package/.next/server/app/api/mcp/app-consent/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/app-sandbox/route.js +2 -2
- package/.next/server/app/api/mcp/app-sandbox/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/assistant/route.js +1 -1
- package/.next/server/app/api/mcp/assistant/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/cancel/route.js +1 -1
- package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/flujo/authoring/route.js +1 -1
- package/.next/server/app/api/mcp/flujo/authoring/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/flujo/automation/route.js +1 -1
- package/.next/server/app/api/mcp/flujo/automation/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/flujo/flows/route.js +1 -1
- package/.next/server/app/api/mcp/flujo/flows/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/flujo/resources/read/route.js +1 -1
- package/.next/server/app/api/mcp/flujo/resources/read/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/flujo/resources/route.js +1 -1
- package/.next/server/app/api/mcp/flujo/resources/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/flujo/servers/route.js +1 -1
- package/.next/server/app/api/mcp/flujo/servers/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/flujo/state/route.js +1 -1
- package/.next/server/app/api/mcp/flujo/state/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/flujo/tools/route.js +1 -1
- package/.next/server/app/api/mcp/flujo/tools/route.js.nft.json +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/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/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]/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/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]/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]/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]/stdio-oauth/confirm/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/stdio-oauth/confirm/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/stdio-oauth/start/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/stdio-oauth/start/route.js.nft.json +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/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/route.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js.nft.json +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/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-registry/route.js +1 -1
- package/.next/server/app/api/mcp-registry/route.js.nft.json +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/provider/route.js +1 -1
- package/.next/server/app/api/model/provider/route.js.nft.json +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/test/route.js +1 -1
- package/.next/server/app/api/model/test/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/reset/route.js +1 -1
- package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +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/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/installed/route.js +1 -1
- package/.next/server/app/api/packages/installed/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -1
- 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/planned-executions/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +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/route.js +1 -1
- package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
- package/.next/server/app/api/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/runs/active/route.js +1 -1
- package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
- package/.next/server/app/api/telemetry/daily-active/route.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/webhooks/[id]/route.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
- package/.next/server/app/automation/triggers/page_client-reference-manifest.js +1 -1
- package/.next/server/app/automation/triggers.html +1 -1
- package/.next/server/app/automation/triggers.rsc +3 -3
- package/.next/server/app/automation/triggers.segments/_full.segment.rsc +3 -3
- package/.next/server/app/automation/triggers.segments/_head.segment.rsc +1 -1
- package/.next/server/app/automation/triggers.segments/_index.segment.rsc +2 -2
- package/.next/server/app/automation/triggers.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/automation/triggers.segments/automation/triggers/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/automation/triggers.segments/automation/triggers.segment.rsc +1 -1
- package/.next/server/app/automation/triggers.segments/automation.segment.rsc +1 -1
- package/.next/server/app/automation/waves/page_client-reference-manifest.js +1 -1
- package/.next/server/app/automation/waves.html +1 -1
- package/.next/server/app/automation/waves.rsc +3 -3
- package/.next/server/app/automation/waves.segments/_full.segment.rsc +3 -3
- package/.next/server/app/automation/waves.segments/_head.segment.rsc +1 -1
- package/.next/server/app/automation/waves.segments/_index.segment.rsc +2 -2
- package/.next/server/app/automation/waves.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/automation/waves.segments/automation/waves/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/automation/waves.segments/automation/waves.segment.rsc +1 -1
- package/.next/server/app/automation/waves.segments/automation.segment.rsc +1 -1
- package/.next/server/app/chain-chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chain-chat.html +1 -1
- package/.next/server/app/chain-chat.rsc +3 -3
- package/.next/server/app/chain-chat.segments/_full.segment.rsc +3 -3
- package/.next/server/app/chain-chat.segments/_head.segment.rsc +1 -1
- package/.next/server/app/chain-chat.segments/_index.segment.rsc +2 -2
- package/.next/server/app/chain-chat.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/chain-chat.segments/chain-chat/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/chain-chat.segments/chain-chat.segment.rsc +1 -1
- package/.next/server/app/chat/page.js +4 -4
- 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 +3 -3
- package/.next/server/app/chat.segments/_full.segment.rsc +3 -3
- package/.next/server/app/chat.segments/_head.segment.rsc +1 -1
- package/.next/server/app/chat.segments/_index.segment.rsc +2 -2
- package/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/chat.segments/chat.segment.rsc +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 +3 -3
- package/.next/server/app/docs.segments/_full.segment.rsc +3 -3
- package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/docs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/docs.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/docs.segments/docs.segment.rsc +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 +3 -3
- package/.next/server/app/executions.segments/_full.segment.rsc +3 -3
- package/.next/server/app/executions.segments/_head.segment.rsc +1 -1
- package/.next/server/app/executions.segments/_index.segment.rsc +2 -2
- package/.next/server/app/executions.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/executions.segments/executions/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/executions.segments/executions.segment.rsc +1 -1
- package/.next/server/app/flows/page.js +5 -5
- 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 +3 -3
- package/.next/server/app/flows.segments/_full.segment.rsc +3 -3
- package/.next/server/app/flows.segments/_head.segment.rsc +1 -1
- package/.next/server/app/flows.segments/_index.segment.rsc +2 -2
- package/.next/server/app/flows.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/flows.segments/flows/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/flows.segments/flows.segment.rsc +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/mcp/page.js +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-proxy/[server]/route.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
- package/.next/server/app/mcp.html +1 -1
- package/.next/server/app/mcp.rsc +3 -3
- package/.next/server/app/mcp.segments/_full.segment.rsc +3 -3
- package/.next/server/app/mcp.segments/_head.segment.rsc +1 -1
- package/.next/server/app/mcp.segments/_index.segment.rsc +2 -2
- package/.next/server/app/mcp.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/mcp.segments/mcp/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/mcp.segments/mcp.segment.rsc +1 -1
- package/.next/server/app/meetings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/meetings.html +1 -1
- package/.next/server/app/meetings.rsc +3 -3
- package/.next/server/app/meetings.segments/_full.segment.rsc +3 -3
- package/.next/server/app/meetings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/meetings.segments/_index.segment.rsc +2 -2
- package/.next/server/app/meetings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/meetings.segments/meetings/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/meetings.segments/meetings.segment.rsc +1 -1
- package/.next/server/app/models/page.js +3 -3
- package/.next/server/app/models/page_client-reference-manifest.js +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 +3 -3
- package/.next/server/app/packages.segments/_full.segment.rsc +3 -3
- package/.next/server/app/packages.segments/_head.segment.rsc +1 -1
- package/.next/server/app/packages.segments/_index.segment.rsc +2 -2
- package/.next/server/app/packages.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/packages.segments/packages/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/packages.segments/packages.segment.rsc +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_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +3 -3
- package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/server/app/statistics/page_client-reference-manifest.js +1 -1
- package/.next/server/app/statistics.html +1 -1
- package/.next/server/app/statistics.rsc +3 -3
- package/.next/server/app/statistics.segments/_full.segment.rsc +3 -3
- package/.next/server/app/statistics.segments/_head.segment.rsc +1 -1
- package/.next/server/app/statistics.segments/_index.segment.rsc +2 -2
- package/.next/server/app/statistics.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/statistics.segments/statistics/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/statistics.segments/statistics.segment.rsc +1 -1
- 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/conversation-chains/route.js +1 -1
- package/.next/server/app/v1/chat/conversation-chains/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/attach/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/attach/route.js.nft.json +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/state/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/state/route.js.nft.json +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]/edit-state/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/recovery/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/recovery/route.js.nft.json +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]/revert/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/revert/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/events/route.js +1 -1
- package/.next/server/app/v1/chat/events/route.js.nft.json +1 -1
- package/.next/server/app/v1/meetings/[meetingId]/cancel/route.js +1 -1
- package/.next/server/app/v1/meetings/[meetingId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/v1/meetings/[meetingId]/route.js +1 -1
- package/.next/server/app/v1/meetings/[meetingId]/route.js.nft.json +1 -1
- package/.next/server/app/v1/meetings/[meetingId]/start/route.js +1 -1
- package/.next/server/app/v1/meetings/[meetingId]/start/route.js.nft.json +1 -1
- package/.next/server/app/v1/meetings/route.js +1 -1
- package/.next/server/app/v1/meetings/route.js.nft.json +1 -1
- package/.next/server/app/v1/models/route.js +1 -1
- package/.next/server/app/v1/models/route.js.nft.json +1 -1
- package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
- package/.next/server/app/waves.html +1 -1
- package/.next/server/app/waves.rsc +3 -3
- package/.next/server/app/waves.segments/_full.segment.rsc +3 -3
- package/.next/server/app/waves.segments/_head.segment.rsc +1 -1
- package/.next/server/app/waves.segments/_index.segment.rsc +2 -2
- package/.next/server/app/waves.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/waves.segments/waves/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/waves.segments/waves.segment.rsc +1 -1
- package/.next/server/app-paths-manifest.json +7 -7
- package/.next/server/chunks/1114.js +1 -1
- package/.next/server/chunks/{4271.js → 2126.js} +13 -13
- package/.next/server/chunks/2425.js +1 -1
- package/.next/server/chunks/244.js +1 -1
- package/.next/server/chunks/2728.js +1 -1
- package/.next/server/chunks/2970.js +1 -1
- package/.next/server/chunks/3133.js +2 -2
- package/.next/server/chunks/4558.js +1 -1
- package/.next/server/chunks/4779.js +1 -0
- package/.next/server/chunks/531.js +1 -1
- package/.next/server/chunks/5354.js +1 -1
- package/.next/server/chunks/5831.js +1 -1
- package/.next/server/chunks/609.js +1 -1
- package/.next/server/chunks/75.js +1 -1
- package/.next/server/chunks/7513.js +1 -1
- package/.next/server/chunks/7754.js +60 -60
- package/.next/server/chunks/811.js +1 -1
- package/.next/server/chunks/8542.js +1 -1
- package/.next/server/chunks/87.js +1 -1
- package/.next/server/chunks/8767.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{8851-1ea4bbf9945c7b34.js → 2375-af6ebf80d9cb9975.js} +2 -2
- package/.next/static/chunks/{4742-e151939b0ae7ba74.js → 3841-0e4a10c621cac0e6.js} +1 -1
- package/.next/static/chunks/{5147-d239d0147237bb58.js → 5147-ec07dd70c20ec0b5.js} +1 -1
- package/.next/static/chunks/5212-898f308c44a32c22.js +2 -0
- package/.next/static/chunks/7401-cffc7c5fa1f5f06e.js +10 -0
- package/.next/static/chunks/app/chat/page-5b6d507b576cea9c.js +7 -0
- package/.next/static/chunks/app/flows/page-9b16d049d43ac817.js +9 -0
- package/.next/static/chunks/app/mcp/{page-70535f4bce57edbe.js → page-e4c284466c17fe32.js} +1 -1
- package/.next/static/chunks/app/models/page-2891efa80c126790.js +11 -0
- package/.next/static/chunks/{webpack-7efb2620f630c7d5.js → webpack-d9f1e56ee69d988f.js} +1 -1
- package/.next/trace +104 -104
- package/.next/trace-build +1 -1
- package/README.md +6 -3
- package/mcp-servers/bash/package.json +1 -1
- package/mcp-servers/browser/dist/resources.js +29 -3
- package/mcp-servers/browser/dist/resources.js.map +1 -1
- package/mcp-servers/browser/package.json +1 -1
- package/mcp-servers/filesystem/dist/resources.js +1 -1
- package/mcp-servers/filesystem/package.json +1 -1
- package/mcp-servers/flujo/package.json +1 -1
- package/package.json +5 -5
- package/.next/server/chunks/387.js +0 -1
- package/.next/static/chunks/5212-fa397222d5251b43.js +0 -2
- package/.next/static/chunks/7401-b0f0d4a7b2597302.js +0 -10
- package/.next/static/chunks/app/chat/page-3db891cc7ba29084.js +0 -7
- package/.next/static/chunks/app/flows/page-6b6748bc74604103.js +0 -9
- package/.next/static/chunks/app/models/page-e3430501cd05ff1f.js +0 -11
- /package/.next/static/{yjYCceqlIl4V9blcEb5AK → 4x_Vc1-WtJtqgqFZnCq3D}/_buildManifest.js +0 -0
- /package/.next/static/{yjYCceqlIl4V9blcEb5AK → 4x_Vc1-WtJtqgqFZnCq3D}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3080],{558:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"}),"Visibility")},666:(e,t,r)=>{"use strict";r.d(t,{A:()=>v});var s=r(95155),o=r(12115),l=r(76010),n=r(64924),a=r(12289),i=r(91216),d=r(40323),c=r(32782),u=r(89852),p=r(82325),f=r(72133),h=r(29158),m=r(47214),g=r(11755),x=r(6310),w=r(14837);let v=({roots:e,onChange:t})=>{let{t:r}=(0,x.s9)(),v=Array.isArray(e)?e:[],[b,y]=(0,o.useState)(null),j=(e,r)=>{t(v.map((t,s)=>s===e?r:t))};return(0,s.jsxs)(l.default,{children:[(0,s.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,s.jsx)(h.A,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,s.jsx)(n.A,{variant:"subtitle1",children:r("mcp.local.roots.title")})]}),(0,s.jsx)(n.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1.5},children:(0,s.jsx)(w.A,{message:"mcp.local.roots.help",values:{binding:(0,s.jsx)("code",{children:"${global:VAR}"})}})}),(0,s.jsx)(a.A,{spacing:1,children:v.map((e,o)=>(0,s.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,s.jsx)(i.A,{size:"small",fullWidth:!0,placeholder:"/path/to/folder or file:///path",value:e,onChange:e=>j(o,e.target.value)}),(0,s.jsx)(d.A,{title:r("mcp.local.roots.browse"),children:(0,s.jsx)(c.A,{size:"small",onClick:()=>y(o),"aria-label":r("mcp.local.roots.browse"),children:(0,s.jsx)(m.A,{fontSize:"small"})})}),(0,s.jsx)(d.A,{title:r("mcp.local.roots.remove"),children:(0,s.jsx)(c.A,{size:"small",onClick:()=>t(v.filter((e,t)=>t!==o)),"aria-label":r("mcp.local.roots.remove"),children:(0,s.jsx)(f.A,{fontSize:"small"})})})]},o))}),(0,s.jsx)(u.A,{size:"small",startIcon:(0,s.jsx)(p.A,{}),onClick:()=>t([...v,""]),sx:{mt:1},children:r("mcp.local.roots.add")}),(0,s.jsx)(g.A,{open:null!==b,title:r("mcp.local.roots.choose"),initialPath:null!==b&&v[b]||void 0,onClose:()=>y(null),onSelect:e=>{null!==b&&j(b,e)}})]})}},2255:(e,t,r)=>{"use strict";r.d(t,{d:()=>o});var s=r(30417);async function o(e,t){if(!e.body||"function"!=typeof e.body.getReader)throw Error("Response has no readable body to stream");let r=e.body.getReader(),o=new TextDecoder,l=(0,s.c)();try{for(;;){let{value:e,done:s}=await r.read();if(s)break;for(let r of l.push(o.decode(e,{stream:!0})))await t(r)}let e=o.decode();if(e)for(let r of l.push(e))await t(r);for(let e of l.flush())await t(e)}finally{try{r.releaseLock()}catch{}}}},6791:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M20 9V7c0-1.1-.9-2-2-2h-3c0-1.66-1.34-3-3-3S9 3.34 9 5H6c-1.1 0-2 .9-2 2v2c-1.66 0-3 1.34-3 3s1.34 3 3 3v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c1.66 0 3-1.34 3-3s-1.34-3-3-3m-2 10H6V7h12zm-9-6c-.83 0-1.5-.67-1.5-1.5S8.17 10 9 10s1.5.67 1.5 1.5S9.83 13 9 13m7.5-1.5c0 .83-.67 1.5-1.5 1.5s-1.5-.67-1.5-1.5.67-1.5 1.5-1.5 1.5.67 1.5 1.5M8 15h8v2H8z"}),"SmartToyOutlined")},6888:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"m18.04 7.99-.63-1.4-1.4-.63c-.39-.18-.39-.73 0-.91l1.4-.63.63-1.4c.18-.39.73-.39.91 0l.63 1.4 1.4.63c.39.18.39.73 0 .91l-1.4.63-.63 1.4c-.17.39-.73.39-.91 0m3.24 4.73-.32-.72c-.18-.39-.73-.39-.91 0l-.32.72-.73.32c-.39.18-.39.73 0 .91l.72.32.32.73c.18.39.73.39.91 0l.32-.72.73-.32c.39-.18.39-.73 0-.91zm-5.04 1.65 1.23.93c.4.3.51.86.26 1.3l-1.62 2.8c-.25.44-.79.62-1.25.42l-1.43-.6c-.2.13-.42.26-.64.37l-.19 1.54c-.06.5-.49.88-.99.88H8.38c-.5 0-.93-.38-.99-.88l-.19-1.54c-.22-.11-.43-.23-.64-.37l-1.43.6c-.46.2-1 .02-1.25-.42l-1.62-2.8c-.25-.44-.14-.99.26-1.3l1.23-.93V14c0-.12 0-.25.01-.37l-1.23-.93c-.4-.3-.51-.86-.26-1.3l1.62-2.8c.25-.44.79-.62 1.25-.42l1.43.6c.2-.13.42-.26.64-.37l.19-1.54c.05-.49.48-.87.98-.87h3.23c.5 0 .93.38.99.88l.19 1.54c.22.11.43.23.64.37l1.43-.6c.46-.2 1-.02 1.25.42l1.62 2.8c.25.44.14.99-.26 1.3l-1.23.93c.01.12.01.24.01.37s0 .24-.01.36M13 14c0-1.66-1.34-3-3-3s-3 1.34-3 3 1.34 3 3 3 3-1.34 3-3"}),"SettingsSuggestRounded")},7722:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)([(0,o.jsx)("circle",{cx:"20",cy:"12",r:"2"},"0"),(0,o.jsx)("circle",{cx:"4",cy:"12",r:"2"},"1"),(0,o.jsx)("circle",{cx:"12",cy:"20",r:"2"},"2"),(0,o.jsx)("path",{d:"M10.05 8.59 6.03 4.55h-.01l-.31-.32-1.42 1.41 4.02 4.05.01-.01.31.32zm3.893.027 4.405-4.392L19.76 5.64l-4.405 4.393zM10.01 15.36l-1.42-1.41-4.03 4.01-.32.33 1.41 1.41 4.03-4.02zm9.75 2.94-3.99-4.01-.36-.35L14 15.35l3.99 4.01.35.35z"},"3"),(0,o.jsx)("circle",{cx:"12",cy:"4",r:"2"},"4")],"Stream")},10685:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"m20.45 6 .49-1.06L22 4.45c.39-.18.39-.73 0-.91l-1.06-.49L20.45 2c-.18-.39-.73-.39-.91 0l-.49 1.06-1.05.49c-.39.18-.39.73 0 .91l1.06.49.49 1.05c.17.39.73.39.9 0M8.95 6l.49-1.06 1.06-.49c.39-.18.39-.73 0-.91l-1.06-.48L8.95 2c-.17-.39-.73-.39-.9 0l-.49 1.06-1.06.49c-.39.18-.39.73 0 .91l1.06.49L8.05 6c.17.39.73.39.9 0m10.6 7.5-.49 1.06-1.06.49c-.39.18-.39.73 0 .91l1.06.49.49 1.06c.18.39.73.39.91 0l.49-1.06 1.05-.5c.39-.18.39-.73 0-.91l-1.06-.49-.49-1.06c-.17-.38-.73-.38-.9.01m-1.84-4.38-2.83-2.83a.996.996 0 0 0-1.41 0L2.29 17.46c-.39.39-.39 1.02 0 1.41l2.83 2.83c.39.39 1.02.39 1.41 0L17.7 10.53c.4-.38.4-1.02.01-1.41m-3.5 2.09L12.8 9.8l1.38-1.38 1.41 1.41z"}),"AutoFixHighRounded")},12431:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39"}),"Public")},14118:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M16.91 14.09 17 14l2 2 4-4.04L21 10h-8.17zM3.98 6.81C2.2 7.85 1 9.79 1 12c0 3.31 2.69 6 6 6 2.21 0 4.15-1.2 5.18-2.99l7.59 7.59 1.41-1.41L2.81 2.81 1.39 4.22zm5.93 5.93C9.58 14.03 8.4 15 7 15c-1.65 0-3-1.35-3-3 0-1.4.97-2.58 2.26-2.91z"}),"KeyOff")},16675:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6z"}),"Code")},18785:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M3 18c0 .55.45 1 1 1h5v-2H4c-.55 0-1 .45-1 1M3 6c0 .55.45 1 1 1h9V5H4c-.55 0-1 .45-1 1m10 14v-1h7c.55 0 1-.45 1-1s-.45-1-1-1h-7v-1c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1s1-.45 1-1M7 10v1H4c-.55 0-1 .45-1 1s.45 1 1 1h3v1c0 .55.45 1 1 1s1-.45 1-1v-4c0-.55-.45-1-1-1s-1 .45-1 1m14 2c0-.55-.45-1-1-1h-9v2h9c.55 0 1-.45 1-1m-5-3c.55 0 1-.45 1-1V7h3c.55 0 1-.45 1-1s-.45-1-1-1h-3V4c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1"}),"TuneRounded")},18799:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M15 9H9v6h6zm-2 4h-2v-2h2zm8-2V9h-2V7c0-1.1-.9-2-2-2h-2V3h-2v2h-2V3H9v2H7c-1.1 0-2 .9-2 2v2H3v2h2v2H3v2h2v2c0 1.1.9 2 2 2h2v2h2v-2h2v2h2v-2h2c1.1 0 2-.9 2-2v-2h2v-2h-2v-2zm-4 6H7V7h10z"}),"MemoryOutlined")},20387:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)([(0,o.jsx)("path",{d:"M13 8.57c-.79 0-1.43.64-1.43 1.43s.64 1.43 1.43 1.43 1.43-.64 1.43-1.43-.64-1.43-1.43-1.43"},"0"),(0,o.jsx)("path",{d:"M13 3C9.25 3 6.2 5.94 6.02 9.64L4.1 12.2c-.25.33-.01.8.4.8H6v3c0 1.1.9 2 2 2h1v3h7v-4.68c2.36-1.12 4-3.53 4-6.32 0-3.87-3.13-7-7-7m3 7c0 .13-.01.26-.02.39l.83.66c.08.06.1.16.05.25l-.8 1.39c-.05.09-.16.12-.24.09l-.99-.4c-.21.16-.43.29-.67.39L14 13.83c-.01.1-.1.17-.2.17h-1.6c-.1 0-.18-.07-.2-.17l-.15-1.06c-.25-.1-.47-.23-.68-.39l-.99.4c-.09.03-.2 0-.25-.09l-.8-1.39c-.05-.08-.03-.19.05-.25l.84-.66c-.01-.13-.02-.26-.02-.39s.02-.27.04-.39l-.85-.66c-.08-.06-.1-.16-.05-.26l.8-1.38c.05-.09.15-.12.24-.09l1 .4c.2-.15.43-.29.67-.39L12 6.17c.02-.1.1-.17.2-.17h1.6c.1 0 .18.07.2.17l.15 1.06c.24.1.46.23.67.39l1-.4c.09-.03.2 0 .24.09l.8 1.38c.05.09.03.2-.05.26l-.85.66c.03.12.04.25.04.39"},"1")],"Psychology")},22439:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M10 15h5.88c.27-.31.67-.5 1.12-.5.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5c-.44 0-.84-.19-1.12-.5H11.9c-.46 2.28-2.48 4-4.9 4-2.76 0-5-2.24-5-5 0-2.42 1.72-4.44 4-4.9v2.07c-1.16.41-2 1.53-2 2.83 0 1.65 1.35 3 3 3s3-1.35 3-3zm2.5-11c1.65 0 3 1.35 3 3h2c0-2.76-2.24-5-5-5s-5 2.24-5 5c0 1.43.6 2.71 1.55 3.62l-2.35 3.9c-.68.14-1.2.75-1.2 1.48 0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5c0-.16-.02-.31-.07-.45l3.38-5.63C10.49 9.61 9.5 8.42 9.5 7c0-1.65 1.35-3 3-3m4.5 9c-.64 0-1.23.2-1.72.54l-3.05-5.07C11.53 8.35 11 7.74 11 7c0-.83.67-1.5 1.5-1.5S14 6.17 14 7c0 .15-.02.29-.06.43l2.19 3.65c.28-.05.57-.08.87-.08 2.76 0 5 2.24 5 5s-2.24 5-5 5c-1.85 0-3.47-1.01-4.33-2.5h2.67c.48.32 1.05.5 1.66.5 1.65 0 3-1.35 3-3s-1.35-3-3-3"}),"Webhook")},22507:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M11 7 9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8z"}),"Login")},23609:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM8 9h8v10H8zm7.5-5-1-1h-5l-1 1H5v2h14V4z"}),"DeleteOutline")},26595:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"m1 9 2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9m8 8 3 3 3-3c-1.65-1.66-4.34-1.66-6 0m-4-4 2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 9.14 8.87 9.14 5 13"}),"Wifi")},28512:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2m6.93 6h-2.95c-.32-1.25-.78-2.45-1.38-3.56 1.84.63 3.37 1.91 4.33 3.56M12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96M4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2s.06 1.34.14 2zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56-1.84-.63-3.37-1.9-4.33-3.56m2.95-8H5.08c.96-1.66 2.49-2.93 4.33-3.56C8.81 5.55 8.35 6.75 8.03 8M12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96M14.34 14H9.66c-.09-.66-.16-1.32-.16-2s.07-1.35.16-2h4.68c.09.65.16 1.32.16 2s-.07 1.34-.16 2m.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95c-.96 1.65-2.49 2.93-4.33 3.56M16.36 14c.08-.66.14-1.32.14-2s-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2z"}),"Language")},29158:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8z"}),"Folder")},34529:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zM6 20V4h7v5h5v11z"}),"InsertDriveFileOutlined")},34766:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2zM9 9h6c.55 0 1 .45 1 1v8c0 .55-.45 1-1 1H9c-.55 0-1-.45-1-1v-8c0-.55.45-1 1-1m6.5-5-.71-.71c-.18-.18-.44-.29-.7-.29H9.91c-.26 0-.52.11-.7.29L8.5 4H6c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1z"}),"DeleteOutlineRounded")},34926:(e,t,r)=>{"use strict";r.d(t,{O:()=>n});var s=r(12115),o=r(60756);let l=(0,r(49103).h)("frontend/hooks/useServerTools");function n(e){let[t,r]=(0,s.useState)([]),[n,a]=(0,s.useState)(!1),[i,d]=(0,s.useState)(null),[c,u]=(0,s.useState)(null),[p,f]=(0,s.useState)(null),[h,m]=(0,s.useState)(null),[g,x]=(0,s.useState)(0),[w,v]=(0,s.useState)(!1),b=(0,s.useRef)(null);(0,s.useEffect)(()=>()=>{b.current&&clearTimeout(b.current)},[]);let y=(0,s.useCallback)(async(s=!1)=>{if(!e){r([]),m(null),d(null);return}if(f(e),!s&&c&&new Date().getTime()-c.getTime()<200&&t.length>0&&e===p)return void l.debug(`Rate limiting tool refresh for server: ${e}`);l.debug(`Loading tools for server: ${e}`),a(!0),r([]),m(null),d(null);try{let t=await o.S.listServerTools(e);if(e!==p)return void l.debug(`Server changed during tool loading from ${e} to ${p}`);if(t.error)l.warn(`Error loading tools for ${e}:`,t.error),d(t.error),r([]);else{let s=(t.tools||[]).map(e=>({...e,description:e.description||""}));l.debug(`Loaded ${s.length} tools for ${e}`),r(s),m(e),u(new Date),x(0)}}catch(t){if(e!==p)return void l.debug(`Server changed during tool loading from ${e} to ${p}`);l.warn(`Failed to load tools for server ${e}:`,t),d(`Failed to load tools: ${t instanceof Error?t.message:"Unknown error"}`),r([]),m(null)}finally{e===p&&a(!1)}},[e,c,t.length,p]),j=(0,s.useCallback)(()=>{if(!e)return;b.current&&(clearTimeout(b.current),b.current=null),v(!0);let t=Math.min(1e3*Math.pow(2,g),1e4);return l.debug(`Retrying tool load for ${e} in ${t}ms (attempt ${g+1})`),b.current=setTimeout(()=>{x(e=>e+1),y(!0),v(!1)},t),()=>{b.current&&clearTimeout(b.current)}},[e,g,y]),A=(0,s.useCallback)(async(t,r,s)=>{if(!e)return{success:!1,output:"",error:"No server selected"};l.debug(`Testing tool ${t} on server ${e} with params:`,r);try{let n=await o.S.callTool(e,t,r,s);if(n.error)return l.warn(`Error calling tool ${t}:`,n.error),{success:!1,output:"",error:n.error};return l.debug(`Tool ${t} executed successfully:`,n),{success:!0,output:JSON.stringify(n,null,2)}}catch(e){return l.error(`Exception calling tool ${t}:`,e),{success:!1,output:"",error:e instanceof Error?e.message:"Unknown error occurred"}}},[e]);return(0,s.useEffect)(()=>{l.debug(`Server name changed to: ${e||"null"}`),b.current&&(clearTimeout(b.current),b.current=null),x(0),v(!1),e?(f(e),y()):(l.debug("Clearing tools as no server is selected"),r([]),m(null),d(null),f(null))},[e,y]),{tools:t,toolsServerName:h,isLoading:n||w,error:i,loadTools:y,retryLoadTools:j,isRetrying:w,retryCount:g,testTool:A}}},38729:(e,t,r)=>{"use strict";r.d(t,{v:()=>a});var s=r(12115),o=r(60756);let l=(0,r(49103).h)("frontend/hooks/useServerStatus");function n(e){return"stdio"===e.transport?e.args&&e.args.length>0?e.args[0]:"Unknown path":"websocket"===e.transport?e.websocketUrl||"Unknown URL":e.serverUrl||"Unknown URL"}function a(){let[e,t]=(0,s.useState)([]),[r,a]=(0,s.useState)(!0),[i,d]=(0,s.useState)(null),[c,u]=(0,s.useState)(new Set),p=(0,s.useCallback)(async()=>{l.debug("Loading servers"),a(!0),d(null);try{let e=await o.S.loadServerConfigs();if(!e||"error"in e){l.warn("Failed to load server configurations:",e?.error),d(e?.error||"Failed to load server configurations"),a(!1);return}let r=await Promise.all(e.map(async e=>{l.debug(`Getting status for server: ${e.name}`);let t=await o.S.getServerStatus(e.name),r="string"==typeof t?t:t.status,s="object"==typeof t&&t.message?t.message:void 0,a="object"==typeof t&&t.stderrOutput?t.stderrOutput:void 0,i="object"==typeof t?t.stdioOAuth:void 0,d=n(e);return{...e,path:d,status:r,error:s,stderrOutput:a,stdioOAuth:i}}));l.debug("Final server states:",r),t(r),a(!1)}catch(e){l.warn("Failed to load servers:",e),d("Failed to load servers"),a(!1)}},[]),f=(0,s.useCallback)(async(r,s)=>{l.debug(`Toggling server ${r} to ${s?"enabled":"disabled"}`);try{let n=e.find(e=>e.name===r);if(!n)return l.warn(`Server not found: ${r}`),!1;l.debug(`Found server ${r}, current disabled state: ${n.disabled}`);let a=await o.S.updateServerConfig(r,{disabled:!s});if(a.error)return l.warn("Failed to update server config:",[a.error,r]),!1;l.debug(`Updating server ${r} state in UI, new disabled state: ${!s}`),t(e=>e.map(e=>e.name===r?{...e,disabled:!s}:e)),l.info(`Successfully toggled server ${r} to ${s?"enabled":"disabled"}`);try{let e=await o.S.getServerStatus(r),s="string"==typeof e?e:e.status,l="object"==typeof e&&e.message?e.message:void 0,n="object"==typeof e&&e.stderrOutput?e.stderrOutput:void 0,a="object"==typeof e?e.stdioOAuth:void 0;t(e=>e.map(e=>e.name===r?{...e,status:s,error:l,stderrOutput:n,stdioOAuth:a}:e))}catch(e){l.warn(`Failed to get status for server ${r} after toggle:`,e)}return!0}catch(e){return l.warn("Failed to toggle server:",e),!1}},[e]),h=(0,s.useCallback)(async r=>{l.debug(`Deleting server: ${r}`);try{if(!e.find(e=>e.name===r))return l.warn("Server not found:",r),!1;let s=await o.S.deleteServerConfig(r);if(s.error)return l.warn("Failed to delete server config:",s.error),!1;return t(e=>e.filter(e=>e.name!==r)),!0}catch(e){return l.warn("Failed to delete server:",e),!1}},[e]),m=(0,s.useCallback)(async e=>{l.debug("Adding server:",e);try{let r=n(e),s={...e,path:r,status:"connecting",tools:[],env:e.env||{}};t(e=>[...e,s]),u(t=>new Set(t).add(e.name));let a=await o.S.updateServerConfig(e.name,e);if(a.error)return l.warn("Failed to update server config:",a.error),t(t=>t.map(t=>t.name===e.name?{...t,status:"error",error:a.error}:t)),u(t=>{let r=new Set(t);return r.delete(e.name),r}),!1;l.info(`Successfully added server ${e.name}`);try{let r=await o.S.getServerStatus(e.name),s="string"==typeof r?r:r.status,l="object"==typeof r&&r.message?r.message:void 0,n="object"==typeof r&&r.stderrOutput?r.stderrOutput:void 0,a="object"==typeof r?r.stdioOAuth:void 0;t(t=>t.map(t=>t.name===e.name?{...t,status:s,error:l,stderrOutput:n,stdioOAuth:a}:t))}catch(t){l.warn(`Failed to get status for server ${e.name} after adding:`,t)}return u(t=>{let r=new Set(t);return r.delete(e.name),r}),!0}catch(r){return l.warn("Failed to add server:",r),t(t=>t.map(t=>t.name===e.name?{...t,status:"error",error:r instanceof Error?r.message:"Unknown error during server addition"}:t)),u(t=>{let r=new Set(t);return r.delete(e.name),r}),!1}},[]),g=(0,s.useCallback)(async(e,r)=>{let s=r??e.name,a=s!==e.name;l.debug("Updating server:",e);try{t(t=>t.map(t=>t.name===s?{...e,path:n(e),status:t.status,error:t.error,stderrOutput:t.stderrOutput}:t));let r=await o.S.updateServerConfig(s,e);if(r.error){if(l.warn("Failed to update server config:",r.error),a)return await p(),!1;return t(t=>t.map(t=>t.name===e.name?{...t,status:"error",error:r.error}:t)),!1}l.info(`Successfully updated config for server ${e.name}`);try{let r=await o.S.getServerStatus(e.name),s="string"==typeof r?r:r.status,l="object"==typeof r&&r.message?r.message:void 0,n="object"==typeof r&&r.stderrOutput?r.stderrOutput:void 0,a="object"==typeof r?r.stdioOAuth:void 0;t(t=>t.map(t=>t.name===e.name?{...t,status:s,error:l,stderrOutput:n,stdioOAuth:a}:t))}catch(t){l.warn(`Failed to get status for server ${e.name} after config update:`,t)}return!0}catch(s){if(l.warn("Failed to update server:",s),a)return await p(),!1;let r=s instanceof Error?s.message:"Unknown error during update";return t(t=>t.map(t=>t.name===e.name?{...t,status:"error",error:r}:t)),!1}},[p]),x=(0,s.useCallback)(async(e,r)=>{let s=r&&r.trim()?r.trim():"";l.debug(`Setting folder for server ${e} to ${s||"(none)"}`);try{let r=await o.S.updateServerConfig(e,{folder:s});if("error"in r&&r.error)return l.warn("Failed to update server folder:",r.error),!1;return t(t=>t.map(t=>t.name===e?{...t,folder:s||void 0}:t)),!0}catch(e){return l.warn("Failed to set server folder:",e),!1}},[]),w=(0,s.useCallback)(async(e,r)=>{l.debug(`Setting favorite for server ${e} to ${r}`);try{let s=await o.S.updateServerConfig(e,{favorite:r});if("error"in s&&s.error)return l.warn("Failed to update server favorite:",s.error),!1;return t(t=>t.map(t=>t.name===e?{...t,favorite:r}:t)),!0}catch(e){return l.warn("Failed to set server favorite:",e),!1}},[]),v=(0,s.useCallback)(async(r,s)=>{l.debug(`Saving environment variables for server: ${r}`,s);try{if(!e.find(e=>e.name===r))return l.warn(`Server not found: ${r}`),!1;let n=await o.S.updateServerConfig(r,{env:s});if(n.error)return l.warn("Failed to update server config:",n.error),!1;return l.debug(`Updating environment variables in UI for server: ${r}`),t(e=>e.map(e=>e.name===r?{...e,env:s}:e)),l.info(`Successfully saved environment variables for server: ${r}`),!0}catch(e){return l.warn("Failed to save environment variables:",e),!1}},[e]);return(0,s.useEffect)(()=>{p()},[p]),{servers:e,isLoading:r,loadError:i,connectingServers:c,loadServers:p,toggleServer:f,retryServer:(0,s.useCallback)(async e=>{l.debug(`Retrying server status for: ${e}`);try{let r=await o.S.getServerStatus(e),s="string"==typeof r?r:r.status,l="object"==typeof r&&r.message?r.message:void 0,n="object"==typeof r&&r.stderrOutput?r.stderrOutput:void 0,a="object"==typeof r?r.stdioOAuth:void 0;return t(t=>t.map(t=>t.name===e?{...t,status:s,error:l,stderrOutput:n,stdioOAuth:a}:t)),!0}catch(e){return l.warn("Failed to retry server status:",e),!1}},[]),deleteServer:h,addServer:m,updateServer:g,setServerFolder:x,setServerFavorite:w,saveEnv:v}}},38845:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M19.3 16.9c.4-.7.7-1.5.7-2.4 0-2.5-2-4.5-4.5-4.5S11 12 11 14.5s2 4.5 4.5 4.5c.9 0 1.7-.3 2.4-.7l3.2 3.2 1.4-1.4zm-3.8.1c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5M12 20v2C6.48 22 2 17.52 2 12S6.48 2 12 2c4.84 0 8.87 3.44 9.8 8h-2.07c-.64-2.46-2.4-4.47-4.73-5.41V5c0 1.1-.9 2-2 2h-2v2c0 .55-.45 1-1 1H8v2h2v3H9l-4.79-4.79C4.08 10.79 4 11.38 4 12c0 4.41 3.59 8 8 8"}),"TravelExplore")},42905:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M4 7v2c0 .55-.45 1-1 1H2v4h1c.55 0 1 .45 1 1v2c0 1.65 1.35 3 3 3h3v-2H7c-.55 0-1-.45-1-1v-2c0-1.3-.84-2.42-2-2.83v-.34C5.16 11.42 6 10.3 6 9V7c0-.55.45-1 1-1h3V4H7C5.35 4 4 5.35 4 7m17 3c-.55 0-1-.45-1-1V7c0-1.65-1.35-3-3-3h-3v2h3c.55 0 1 .45 1 1v2c0 1.3.84 2.42 2 2.83v.34c-1.16.41-2 1.52-2 2.83v2c0 .55-.45 1-1 1h-3v2h3c1.65 0 3-1.35 3-3v-2c0-.55.45-1 1-1h1v-4z"}),"DataObject")},43109:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M18 23H4c-1.1 0-2-.9-2-2V7h2v14h14zM15 1H8c-1.1 0-1.99.9-1.99 2L6 17c0 1.1.89 2 1.99 2H19c1.1 0 2-.9 2-2V7zm1.5 14h-6v-2h6zm0-6h-2v2h-2V9h-2V7h2V5h2v2h2z"}),"Difference")},45282:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M4.5 11h-2V9H1v6h1.5v-2.5h2V15H6V9H4.5zm2.5-.5h1.5V15H10v-4.5h1.5V9H7zm5.5 0H14V15h1.5v-4.5H17V9h-4.5zm9-1.5H18v6h1.5v-2h2c.8 0 1.5-.7 1.5-1.5v-1c0-.8-.7-1.5-1.5-1.5m0 2.5h-2v-1h2z"}),"Http")},47214:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m0 12H4V8h16z"}),"FolderOpen")},55281:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"}),"Home")},56374:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M8.4 18.2c.38.5.6 1.12.6 1.8 0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3c.44 0 .85.09 1.23.26l1.41-1.77c-.92-1.03-1.29-2.39-1.09-3.69l-2.03-.68c-.54.83-1.46 1.38-2.52 1.38-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3c0 .07 0 .14-.01.21l2.03.68c.64-1.21 1.82-2.09 3.22-2.32V5.91C9.96 5.57 9 4.4 9 3c0-1.66 1.34-3 3-3s3 1.34 3 3c0 1.4-.96 2.57-2.25 2.91v2.16c1.4.23 2.58 1.11 3.22 2.32L18 9.71V9.5c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3c-1.06 0-1.98-.55-2.52-1.37l-2.03.68c.2 1.29-.16 2.65-1.09 3.69l1.41 1.77Q17.34 17 18 17c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3c0-.68.22-1.3.6-1.8l-1.41-1.77c-1.35.75-3.01.76-4.37 0z"}),"HubRounded")},56394:(e,t,r)=>{"use strict";r.d(t,{default:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M14 9h-4c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1m-1 4h-2v-2h2zm8-3c0-.55-.45-1-1-1h-1V7c0-1.1-.9-2-2-2h-2V4c0-.55-.45-1-1-1s-1 .45-1 1v1h-2V4c0-.55-.45-1-1-1s-1 .45-1 1v1H7c-1.1 0-2 .9-2 2v2H4c-.55 0-1 .45-1 1s.45 1 1 1h1v2H4c-.55 0-1 .45-1 1s.45 1 1 1h1v2c0 1.1.9 2 2 2h2v1c0 .55.45 1 1 1s1-.45 1-1v-1h2v1c0 .55.45 1 1 1s1-.45 1-1v-1h2c1.1 0 2-.9 2-2v-2h1c.55 0 1-.45 1-1s-.45-1-1-1h-1v-2h1c.55 0 1-.45 1-1m-5 7H8c-.55 0-1-.45-1-1V8c0-.55.45-1 1-1h8c.55 0 1 .45 1 1v8c0 .55-.45 1-1 1"}),"MemoryRounded")},56405:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"m12 16.5 4-4h-3v-9h-2v9H8zm9-13h-6v1.99h6v14.03H3V5.49h6V3.5H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2"}),"SystemUpdateAlt")},64032:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M19.8 18.4 14 10.67V6.5l1.35-1.69c.26-.33.03-.81-.39-.81H9.04c-.42 0-.65.48-.39.81L10 6.5v4.17L4.2 18.4c-.49.66-.02 1.6.8 1.6h14c.82 0 1.29-.94.8-1.6"}),"Science")},65938:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M20 9V7c0-1.1-.9-2-2-2h-3c0-1.66-1.34-3-3-3S9 3.34 9 5H6c-1.1 0-2 .9-2 2v2c-1.66 0-3 1.34-3 3s1.34 3 3 3v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c1.66 0 3-1.34 3-3s-1.34-3-3-3M7.5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S9.83 13 9 13s-1.5-.67-1.5-1.5M15 17H9c-.55 0-1-.45-1-1s.45-1 1-1h6c.55 0 1 .45 1 1s-.45 1-1 1m0-4c-.83 0-1.5-.67-1.5-1.5S14.17 10 15 10s1.5.67 1.5 1.5S15.83 13 15 13"}),"SmartToyRounded")},73546:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"m9.78 11.16-1.42 1.42c-.68-.69-1.34-1.58-1.79-2.94l1.94-.49c.32.89.77 1.5 1.27 2.01M11 6 7 2 3 6h3.02c.02.81.08 1.54.19 2.17l1.94-.49C8.08 7.2 8.03 6.63 8.02 6zm10 0-4-4-4 4h2.99c-.1 3.68-1.28 4.75-2.54 5.88-.5.44-1.01.92-1.45 1.55-.34-.49-.73-.88-1.13-1.24L9.46 13.6c.93.85 1.54 1.54 1.54 3.4v5h2v-5c0-2.02.71-2.66 1.79-3.63 1.38-1.24 3.08-2.78 3.2-7.37z"}),"AltRoute")},76901:(e,t,r)=>{"use strict";r.d(t,{L_:()=>n,QO:()=>o,bH:()=>l});let s=null;function o(e){s=e}function l(e){s===e&&(s=null)}function n(e){return!!s&&(s(e),!0)}},77839:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M21 10.12h-6.78l2.74-2.82c-2.73-2.7-7.15-2.8-9.88-.1-2.73 2.71-2.73 7.08 0 9.79s7.15 2.71 9.88 0C18.32 15.65 19 14.08 19 12.1h2c0 1.98-.88 4.55-2.64 6.29-3.51 3.48-9.21 3.48-12.72 0-3.5-3.47-3.53-9.11-.02-12.58s9.14-3.47 12.65 0L21 3zM12.5 8v4.25l3.5 2.08-.72 1.21L11 13V8z"}),"Update")},78972:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M12 5V2L8 6l4 4V7c3.31 0 6 2.69 6 6 0 2.97-2.17 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93 0-4.42-3.58-8-8-8m-6 8c0-1.65.67-3.15 1.76-4.24L6.34 7.34C4.9 8.79 4 10.79 4 13c0 4.08 3.05 7.44 7 7.93v-2.02c-2.83-.48-5-2.94-5-5.91"}),"RestartAlt")},84848:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M8.7 15.9 4.8 12l3.9-3.9c.39-.39.39-1.01 0-1.4a.984.984 0 0 0-1.4 0l-4.59 4.59c-.39.39-.39 1.02 0 1.41l4.59 4.6c.39.39 1.01.39 1.4 0s.39-1.01 0-1.4m6.6 0 3.9-3.9-3.9-3.9a.984.984 0 0 1 0-1.4c.39-.39 1.01-.39 1.4 0l4.59 4.59c.39.39.39 1.02 0 1.41l-4.59 4.6c-.39.39-1.01.39-1.4 0a.984.984 0 0 1 0-1.4"}),"CodeRounded")},87695:(e,t,r)=>{Promise.resolve().then(r.bind(r,92924))},92924:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o4});var s=r(95155),o=r(12115),l=r(73321),n=r(37156),a=r(76010),i=r(64924),d=r(89852),c=r(50290),u=r(32782),p=r(40323),f=r(61775),h=r(72636),m=r(66808),g=r(25404),x=r(83793),w=r(69288),v=r(91216),b=r(85930),y=r(40570);let j=(0,y.A)((0,s.jsx)("path",{d:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z"}),"ArrowBack");var A=r(82325);let S=(0,y.A)((0,s.jsx)("path",{d:"m19 9 1.25-2.75L23 5l-2.75-1.25L19 1l-1.25 2.75L15 5l2.75 1.25zm-7.5.5L9 4 6.5 9.5 1 12l5.5 2.5L9 20l2.5-5.5L17 12zM19 15l-1.25 2.75L15 19l2.75 1.25L19 23l1.25-2.75L23 19l-2.75-1.25z"}),"AutoAwesome");var C=r(63514),k=r(18785),M=r(42131),I=r(95877),$=r(44469),T=r(95473),N=r(93385),F=r(25422),z=r(62195),H=r(10550),R=r(61281),P=r(85876),W=r(49103),E=r(81750),L=r(19260),D=r(65614),O=r(60756),V=r(32897),B=r(18677),U=r(81680);let q={start:{width:210,height:84},process:{width:210,height:104},finish:{width:210,height:84},mcp:{width:210,height:148},subflow:{width:210,height:104},resource:{width:210,height:120},signal:{width:210,height:92},trigger:{width:210,height:84},static:{width:210,height:104}},K={width:210,height:104};function G(e){let t=e.measured,r=q[e.type??""]??K;return{width:t?.width??e.width??r.width,height:t?.height??e.height??r.height}}function _(e,t){return e.x<t.x+t.w&&e.x+e.w>t.x&&e.y<t.y+t.h&&e.y+e.h>t.y}function X(e){return e.data?.edgeType}function J(e){return"mcp"===X(e)}function Y(e){return"resource"===X(e)}function Q(e,t,r){let s=new Set(e.map(e=>e.id)),o=new Map;for(let e of t){let t,l;if(!r(e))continue;let n=s.has(e.source),a=s.has(e.target);n&&!a?(t=e.source,l=e.target):a&&!n&&(t=e.target,l=e.source),t&&l&&!o.has(t)&&o.set(t,l)}return o}function Z(e){return 8*Math.round(e/8)}function ee(e,t,r={}){let{padding:s=24,maxPasses:o=60,maxStepPerPass:l=200,snapToGrid:n=!0,preserveCentroid:a=!0}=r;if(e.length<=1)return e;let i=e.filter(e=>"mcp"===e.type),d=e.filter(e=>"resource"===e.type),c=new Map([...Q(i,t,J),...Q(d,t,Y)]),u=e.filter(e=>!c.has(e.id)).map(e=>e.id),p=new Map;for(let[e,t]of c){let r=p.get(t);r?r.push(e):p.set(t,[e])}let f=new Map,h=new Map;for(let t of e)f.set(t.id,t.position.x),h.set(t.id,t.position.y);let m=new Map;for(let t of e)m.set(t.id,{x:t.position.x,y:t.position.y});let g=new Map;for(let t of e)g.set(t.id,G(t));let x=e=>{let t=m.get(e),{width:r,height:o}=g.get(e);return{x:t.x-s,y:t.y-s,w:r+2*s,h:o+2*s}};for(let[e,t]of p)!function(e,t,r,s,o){if(0===t.length)return;let l=[e,...t],n=e=>{let t=r.get(e),{width:l,height:n}=s.get(e);return{x:t.x-o,y:t.y-o,w:l+2*o,h:n+2*o}};if(!(()=>{for(let e=0;e<l.length;e++)for(let t=e+1;t<l.length;t++)if(_(n(l[e]),n(l[t])))return!0;return!1})())return;let a=r.get(e),i=s.get(e),d={left:[],right:[]};for(let e of t)(r.get(e).x-a.x<0?d.left:d.right).push(e);for(let e of["left","right"]){let t=d[e];if(0===t.length)continue;t.sort((e,t)=>{let s=r.get(e),o=r.get(t);return s.y-o.y||s.x-o.x||e.localeCompare(t)});let l="right"===e?1:-1,n=a.y;for(let e of t){let{width:t,height:d}=s.get(e),c=i.width/2+t/2+2*o+16;r.set(e,{x:a.x+l*c,y:n}),n+=d+2*o+16}}}(e,t,m,g,s);let w=new Map;for(let[e,t]of c){let r=m.get(t),s=m.get(e);w.set(e,{x:s.x-r.x,y:s.y-r.y})}let v=e=>{let t=x(e);for(let r of p.get(e)??[])t=function(e,t){let r=Math.min(e.x,t.x),s=Math.min(e.y,t.y);return{x:r,y:s,w:Math.max(e.x+e.w,t.x+t.w)-r,h:Math.max(e.y+e.h,t.y+t.h)-s}}(t,x(r));return t},b=new Set,y=(e,t,r)=>{if(0===t&&0===r)return;let s=m.get(e);for(let o of(m.set(e,{x:s.x+t,y:s.y+r}),b.add(e),p.get(e)??[])){let e=m.get(o);m.set(o,{x:e.x+t,y:e.y+r})}},j=[...u].sort((e,t)=>{let r=m.get(e),s=m.get(t);return r.y-s.y||r.x-s.x||e.localeCompare(t)});for(let e=0;e<o;e++){let e=!1;for(let t=0;t<j.length;t++)for(let r=t+1;r<j.length;r++){let s=j[t],o=j[r],n=function(e,t,r){if(!_(e,t))return null;let s=Math.min(e.x+e.w,t.x+t.w)-Math.max(e.x,t.x),o=Math.min(e.y+e.h,t.y+t.h)-Math.max(e.y,t.y),l=e.x+e.w/2,n=t.x+t.w/2,a=e.y+e.h/2,i=t.y+t.h/2,d=0,c=0;return s<=o?d=(l<=n?-1:1)*Math.min(s/2+1,r):c=(a<=i?-1:1)*Math.min(o/2+1,r),{dx:d,dy:c}}(v(s),v(o),l);n&&(y(s,n.dx,n.dy),y(o,-n.dx,-n.dy),e=!0)}if(!e)break}if(a){let t=0,r=0;for(let s of e){let e=m.get(s.id);t+=e.x-f.get(s.id),r+=e.y-h.get(s.id)}let s=t/e.length,o=r/e.length;if(0!==s||0!==o)for(let t of e){let e=m.get(t.id);m.set(t.id,{x:e.x-s,y:e.y-o})}}if(n)for(let e of b){if(c.has(e))continue;let t=m.get(e);m.set(e,{x:Z(t.x),y:Z(t.y)})}for(let[e,t]of c){let r=m.get(t),s=w.get(e);m.set(e,{x:r.x+s.x,y:r.y+s.y})}return e.map(e=>{let t=m.get(e.id);return t.x===e.position.x&&t.y===e.position.y?e:{...e,position:t}})}function et(e,t,r={}){let{direction:s="TB",rankSep:o=120,nodeSep:l=80,mcpOffsetX:n=350,mcpStackY:a=120}=r,i=e.filter(e=>"mcp"===e.type),d=e.filter(e=>"resource"===e.type),c=e.filter(e=>"mcp"!==e.type&&"resource"!==e.type);if(c.length<=1)return e;let u=new Set(c.map(e=>e.id)),p=new Map;for(let e of(c.forEach(e=>p.set(e.id,new Set)),t))!(J(e)||Y(e))&&e.source!==e.target&&u.has(e.source)&&u.has(e.target)&&p.get(e.source).add(e.target);let f=new Map;c.forEach(e=>f.set(e.id,0));let h=c.length;for(let e=0;e<h;e++){let e=!1;for(let[t,r]of p){let s=f.get(t)+1;for(let t of r)f.get(t)<s&&(f.set(t,s),e=!0)}if(!e)break}let m=(e,r)=>{let s=Q(e,t,r);for(let[e,t]of[...s])u.has(t)||s.delete(e);return s},g=m(i,J),x=m(d,Y),w=(e,t)=>{let r=new Map;for(let s of e){let e=t.get(s.id);if(!e)continue;let o=r.get(e);o?o.push(s):r.set(e,[s])}return r},v=w(i,g),b=w(d,x),y=e=>{let t=v.get(e.id)??[],r=b.get(e.id)??[],s=e=>0===e.length?0:e.reduce((e,t)=>e+G(t).height,0)+(e.length-1)*a;return{rightReach:0===t.length?0:n+(0===t.length?0:Math.max(...t.map(e=>G(e).width))),leftReach:0===r.length?0:n,stackHeight:Math.max(s(t),s(r))}},j=new Map;for(let e of c){let t=f.get(e.id),r=j.get(t);r?r.push(e):j.set(t,[e])}let A=[...j.keys()].sort((e,t)=>e-t),S=new Map,C=0;for(let e of A){let t=[...j.get(e)].sort((e,t)=>e.position.x-t.position.x||e.position.y-t.position.y||e.id.localeCompare(t.id)),r=0,n=0;for(let e of t){let{width:t,height:o}=G(e),a=y(e);"TB"===s?(r+=a.leftReach,S.set(e.id,{x:r,y:C}),r+=Math.max(t,a.rightReach)+l,n=Math.max(n,o,a.stackHeight)):(r+=a.leftReach,S.set(e.id,{x:C,y:r}),r+=Math.max(o,a.rightReach)+l,n=Math.max(n,t,a.stackHeight))}C+=n+o}let k=(e,t)=>{for(let[r,s]of e){let e=S.get(r);if(!e)continue;let o=e.y;for(let r of s)S.set(r.id,{x:e.x+t*n,y:o}),o+=G(r).height+a}};k(v,1),k(b,-1);let M=[...S.values()].map(e=>e.x),I=M.length?Math.max(...M)+n:0,$=0,T=e=>{for(let t of e)S.has(t.id)||(S.set(t.id,{x:I,y:$}),$+=G(t).height+l)};return T(i),T(d),ee(e.map(e=>{let t=S.get(e.id);return t?{...e,position:t}:e}),t,{preserveCentroid:!1,snapToGrid:!1})}var er=r(98197),es=r(23640);function eo(e){return{id:e.id,label:e.data.label,type:e.type||e.data.type}}var el=r(44866);r(81456);var en=r(5704),ea=r(45483),ei=r(32939),ed=r(14811),ec=r(97533),eu=r(83216),ep=r(54412),ef=r(2501),eh=r(10600),em=r(56394),eg=r(14499),ex=r(49441),ew=r(21129),ev=r(6310);let eb=e=>[{type:"process",label:e("flows.palette.process"),shortLabel:e("flows.palette.processShort"),description:e("flows.palette.processHelp")},{type:"finish",label:e("flows.palette.finish"),shortLabel:e("flows.palette.finishShort"),description:e("flows.palette.finishHelp")},{type:"mcp",label:e("flows.palette.mcp"),shortLabel:e("flows.palette.mcpShort"),description:e("flows.palette.mcpHelp")},{type:"subflow",label:e("flows.palette.subflow"),shortLabel:e("flows.palette.subflowShort"),description:e("flows.palette.subflowHelp")},{type:"resource",label:e("flows.palette.resource"),shortLabel:e("flows.palette.resourceShort"),description:e("flows.palette.resourceHelp")},{type:"signal",label:e("flows.palette.signal"),shortLabel:e("flows.palette.signalShort"),description:e("flows.palette.signalHelp")},{type:"static",label:e("flows.palette.static"),shortLabel:e("flows.palette.staticShort"),description:e("flows.palette.staticHelp")},{type:"trigger",label:e("flows.palette.trigger"),shortLabel:e("flows.palette.triggerShort"),description:e("flows.palette.triggerHelp")}],ey=(0,W.h)("components/flow/FlowBuilder/NodePalette.tsx"),ej="NodePalette",eA=(0,M.Ay)(I.A)(({theme:e})=>({padding:e.spacing(1.4),width:"218px",height:"100%",minHeight:0,flexShrink:0,display:"flex",flexDirection:"column",gap:e.spacing(1.2),overflowY:"auto",border:`1px solid ${e.palette.divider}`,borderRadius:16,backgroundColor:"dark"===e.palette.mode?"rgba(17, 22, 41, 0.86)":"rgba(255, 255, 255, 0.9)",boxShadow:"dark"===e.palette.mode?"0 16px 45px rgba(0,0,0,.22)":"0 16px 45px rgba(49,45,99,.09)",backdropFilter:"blur(18px)",[e.breakpoints.down("md")]:{width:"100%",height:"68px",padding:e.spacing(.65),gap:e.spacing(.6),alignItems:"flex-start",overflowX:"auto",overflowY:"hidden"}})),eS=(0,M.Ay)(I.A,{shouldForwardProp:e=>"nodeType"!==e})(({theme:e,nodeType:t})=>({padding:e.spacing(1.25),width:"100%",minWidth:0,borderRadius:"12px",backgroundColor:(0,en.X4)(e.palette.background.paper,.72),border:`1px solid ${e.palette.divider}`,borderLeft:`3px solid ${"process"===t?e.palette.primary.main:"finish"===t?e.palette.success.main:"subflow"===t?e.palette.warning.main:"resource"===t?ew.nH:"signal"===t?ew.vp:"trigger"===t?ew.$Q:"static"===t?ew.H0:e.palette.info.main}`,boxShadow:"none",transition:"transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease",cursor:"grab","&:hover":{transform:"translateY(-2px)",borderColor:(0,en.X4)("process"===t?e.palette.primary.main:"finish"===t?e.palette.success.main:"subflow"===t?e.palette.warning.main:"resource"===t?ew.nH:"signal"===t?ew.vp:"trigger"===t?ew.$Q:"static"===t?ew.H0:e.palette.info.main,.55),boxShadow:`0 0 0 1px ${"process"===t?e.palette.primary.main:"finish"===t?e.palette.success.main:"subflow"===t?e.palette.warning.main:"resource"===t?ew.nH:"signal"===t?ew.vp:"trigger"===t?ew.$Q:"static"===t?ew.H0:e.palette.info.main}, 0 14px 30px rgba(0,0,0,0.12)`},"&:active":{cursor:"grabbing"},[e.breakpoints.down("md")]:{width:64,minWidth:64,minHeight:54,padding:e.spacing(.55),flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",borderLeftWidth:2}})),eC=(0,M.Ay)(a.default,{shouldForwardProp:e=>"nodeType"!==e})(({theme:e,nodeType:t})=>({display:"flex",alignItems:"center",justifyContent:"space-between",borderBottom:`1px solid ${"process"===t?e.palette.primary.light:"finish"===t?e.palette.success.light:"subflow"===t?e.palette.warning.light:"resource"===t?"#4DB6AC":"signal"===t?"#B39DDB":"trigger"===t?ew.C2:"static"===t?ew.IP:e.palette.info.light}`,marginBottom:e.spacing(1),paddingBottom:e.spacing(.5),[e.breakpoints.down("md")]:{width:"100%",marginBottom:0,paddingBottom:0,borderBottom:0,justifyContent:"center"}})),ek=(0,M.Ay)(a.default)(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",[e.breakpoints.down("md")]:{flexDirection:"column",justifyContent:"center",gap:2}})),eM=({authoringMode:e="guided",onAddNode:t})=>{ey.debug(`${ej}: Entering component`);let{t:r}=(0,ev.s9)(),l=(0,o.useMemo)(()=>eb(r),[r]),[n,d]=(0,o.useState)(""),c=(0,o.useRef)(null);(0,o.useEffect)(()=>{let e=()=>{c.current?.focus(),c.current?.select()};return document.addEventListener("openFlowQuickAdd",e),()=>document.removeEventListener("openFlowQuickAdd",e)},[]);let u=(0,o.useCallback)(e=>{ey.debug(`${ej}.addNodeFromPalette: Adding ${e} node`),t?.(e),ey.info(`${ej}.addNodeFromPalette: Requested ${e} node`)},[t]),p=(0,o.useMemo)(()=>{let t=n.trim().toLowerCase();return l.filter(t=>"advanced"===e||"process"===t.type).filter(e=>!t||`${e.label} ${e.description} ${e.shortLabel}`.toLowerCase().includes(t))},[e,l,n]);return ey.debug(`${ej}: Rendering component`),(0,s.jsxs)(eA,{elevation:2,children:[(0,s.jsxs)(a.default,{sx:{display:{xs:"none",md:"flex"},alignItems:"baseline",justifyContent:"space-between"},children:[(0,s.jsx)(i.A,{className:"node-palette-title",variant:"subtitle1",fontWeight:800,children:r("flows.palette.title")}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:"A"})]}),(0,s.jsx)(v.A,{inputRef:c,value:n,onChange:e=>d(e.target.value),size:"small",placeholder:r("flows.palette.search"),inputProps:{"aria-label":r("flows.palette.searchAria")},sx:{display:{xs:"none",md:"flex"}},InputProps:{startAdornment:(0,s.jsx)(ea.A,{position:"start",children:(0,s.jsx)(eg.A,{fontSize:"small"})})}}),(0,s.jsxs)(a.default,{display:"flex",flexDirection:{xs:"row",md:"column"},gap:{xs:.75,md:1},width:{xs:"max-content",md:"100%"},children:[p.map(e=>(0,s.jsxs)(eS,{nodeType:e.type,elevation:1,draggable:!0,role:"button",tabIndex:0,"aria-label":`${e.label}: ${e.description}`,title:`${e.label} \xe2€” ${e.description}`,onDragStart:t=>((e,t)=>{ey.debug(`${ej}.onDragStart: Entering method with nodeType=${t}`),e.dataTransfer.setData("application/reactflow",t),e.dataTransfer.effectAllowed="move";let s=document.createElement("div"),o=l.find(e=>e.type===t);s.textContent=o?.label??r("flows.palette.step"),Object.assign(s.style,{padding:"10px",background:"white",border:"1px solid #ccc",borderRadius:"8px"}),document.body.appendChild(s),ey.debug(`${ej}.onDragStart: Created drag preview element`);try{e.dataTransfer.setDragImage(s,75,25),ey.debug(`${ej}.onDragStart: Set drag image with offset (75, 25)`)}catch(e){ey.error(`${ej}.onDragStart: Error setting drag image:`,e)}setTimeout(()=>{document.body.removeChild(s),ey.debug(`${ej}.onDragStart: Removed drag preview element`)},0),ey.debug(`${ej}.onDragStart: Drag operation initialized`)})(t,e.type),onDragEnd:t=>{var r;return r=e.type,void ey.debug(`${ej}.onDragEnd: Drag operation ended for nodeType=${r}`)},onClick:()=>u(e.type),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),u(e.type))},children:[(0,s.jsx)(eC,{nodeType:e.type,children:(0,s.jsxs)(ek,{children:[(e=>{switch(e){case"process":return(0,s.jsx)(em.default,{color:"primary"});case"finish":return(0,s.jsx)(ed.A,{color:"success"});case"mcp":return(0,s.jsx)(eh.A,{color:"info"});case"subflow":return(0,s.jsx)(ec.A,{color:"warning"});case"resource":return(0,s.jsx)(eu.A,{sx:{color:ew.nH}});case"signal":return(0,s.jsx)(ep.A,{sx:{color:ew.vp}});case"trigger":return(0,s.jsx)(ef.A,{sx:{color:ew.$Q}});case"static":return(0,s.jsx)(ex.A,{sx:{color:ew.H0}});default:return(0,s.jsx)(ei.A,{color:"primary"})}})(e.type),(0,s.jsx)(i.A,{variant:"caption",fontWeight:"bold",sx:{display:{xs:"-webkit-box",md:"none"},maxWidth:"100%",overflow:"hidden",WebkitBoxOrient:"vertical",WebkitLineClamp:2,overflowWrap:"anywhere",textAlign:"center",fontSize:"0.6rem",lineHeight:1},children:e.shortLabel}),(0,s.jsx)(i.A,{variant:"subtitle2",fontWeight:"bold",sx:{display:{xs:"none",md:"block"}},children:e.label})]})}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",sx:{display:{xs:"none",md:"block"}},children:e.description})]},e.type)),0===p.length&&(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",sx:{px:.5,py:1},children:r("flows.palette.noMatches")})]})]})};var eI=r(60108),e$=r(58232),eT=r(78674),eN=r(10286),eF=r(6438),ez=r(7880),eH=r(82150);let eR=(0,y.A)((0,s.jsx)("path",{fillRule:"evenodd",d:"M20 3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2M10 17H5v-2h5zm0-4H5v-2h5zm0-4H5V7h5zm4.82 6L12 12.16l1.41-1.41 1.41 1.42L17.99 9l1.42 1.42z"}),"FactCheck");var eP=r(19418),eW=r(8349),eE=r(56358),eL=r(16850);let eD=/\$\{var:([^}]+)\}/g,eO=/^[A-Za-z_][\w-]*$/;function eV(e){return"string"==typeof e&&eO.test(e)}let eB=/\$\{kv:([^}]+)\}/g,eU=["global","flow","folder"];function eq(e){let t=(e??"").trim(),r=t.indexOf("/");if(r>0){let e=t.slice(0,r);if(eU.includes(e))return{scope:e,key:t.slice(r+1).trim()}}return{scope:"folder",key:t}}function eK(e,t){let r=(t??"").trim();return r?"folder"===e?r:`${e}/${r}`:""}let eG=/^[A-Za-z_][\w-]*$/;function e_(e){return"string"==typeof e&&eG.test(e)}function eX(e){return e.data?.type??e.type??"unknown"}function eJ(e){return e.data?.label||e.id}function eY(e){return e.data?.edgeType==="mcp"}function eQ(e){return e.data?.edgeType==="resource"}function eZ(e){return eY(e)||eQ(e)}function e0(e,t,r){let s=new Map(t.map(e=>[e.id,e])),o=new Set;for(let t of r){if(!eY(t))continue;let r=null;if(t.source===e?r=t.target:t.target===e&&(r=t.source),!r)continue;let l=s.get(r);if(!l||"mcp"!==eX(l))continue;let n=l.data?.properties?.boundServer;"string"==typeof n&&n&&o.add(n)}return o}function e1(e,t,r){let s=new Map(t.map(e=>[e.id,e])),o=[],l=new Set;for(let t of r){if(eZ(t))continue;let r=null;t.source===e?r=t.target:t.target===e&&t.data?.bidirectional&&(r=t.source),!r||l.has(r)||(l.add(r),o.push(r))}let n=o.map(e=>s.get(e)).filter(e=>!!e).map(e=>({id:e.id,label:e.data?.label,type:eX(e)}));return new Set((0,er.E9)(n).values())}function e2(e){let t=new Map,r=(e,r)=>{t.has(e)||t.set(e,[]),t.get(e).push(r)};for(let t of e)!eZ(t)&&(r(t.source,t.target),t.data?.bidirectional&&r(t.target,t.source));return t}let e5=/\$\{(?:var|res):[^}]*\}/;function e4(e){let t=e.replace(/\S*\$\{[^}]*\}\S*/g," ");return/(?:^|[\s("'`])file:\/\/(?:\/|[^/\s]+\/)[^\s<>"'`]+/i.test(t)||/(?:^|[\s("'`])(?:[A-Za-z]:[\\/][^\s<>"'`]*|\\\\[^\\\s<>"'`]+\\[^\\\s<>"'`]+(?:\\[^\s<>"'`]*)?)/.test(t)||/(?:^|[\s("'`])\/(?!\/)[^\s<>"'`]+/.test(t)}function e3(e){if("string"!=typeof e)return!1;let t=e.trim();if(!t)return!1;if(/^\$\{global:[^{}]+\}$/.test(t))return!0;if(t.includes("${"))return!1;if(/^file:/i.test(t))try{let e=new URL(t);if("file:"!==e.protocol)return!1;let r=""!==e.pathname.replace(/\/+$/,"");return!!e.hostname||r}catch{return!1}return!t.includes("\0")}function e9(e,t={}){let r=[],s=Array.isArray(e?.nodes)?e.nodes:[],o=Array.isArray(e?.edges)?e.edges:[],l=(e,t,s,o)=>r.push({severity:e,code:t,message:s,nodeId:o?.id,nodeLabel:o?eJ(o):void 0}),n=new Map((t.models??[]).map(e=>[e.id,e])),a=new Map((t.servers??[]).map(e=>[e.name,e])),i=!!t.models,d=!!t.servers,c=s.filter(e=>"start"===eX(e)),u=s.filter(e=>"finish"===eX(e)),p=s.filter(e=>"process"===eX(e)),f=s.filter(e=>"mcp"===eX(e));if(0===c.length)l("error","no-start-node","The flow has no Start node, so it has no entry point.");else if(c.length>1)for(let e of c.slice(1))l("error","multiple-start-nodes","The flow has more than one Start node; only one is allowed.",e);for(let e of(0===u.length&&l("warning","no-finish-node","The flow has no Finish node; it will run but never reaches a defined end."),p)){let t=e.data?.properties??{},r=t.boundModel;if(r){if(i&&!n.has(r)){let r="string"==typeof t.modelName&&t.modelName?` (was "${t.modelName}")`:"";l("error","process-model-missing",`Process node "${eJ(e)}" is bound to a model that no longer exists${r}.`,e)}}else l("error","process-missing-model",`Process node "${eJ(e)}" has no model bound.`,e)}for(let e of f){let t=(e.data?.properties??{}).boundServer;if(t){if(d&&!a.has(t))l("warning","mcp-server-missing",`MCP node "${eJ(e)}" is bound to server "${t}", which isn't in your current MCP server list. It may be offline (e.g. not connected), renamed, or removed — if it was renamed or removed, rebind this node.`,e);else if(d){let r=a.get(t);if(r.status&&"connected"!==r.status){let s="disabled"===r.status?"disabled":`not connected (${r.status})`;l("warning","mcp-server-disconnected",`MCP node "${eJ(e)}" is bound to server "${t}", which is currently ${s}. It will provide tools again once it reconnects.`,e)}}}else l("warning","mcp-missing-server",`MCP node "${eJ(e)}" is not bound to a server.`,e);o.some(t=>eY(t)&&(t.source===e.id||t.target===e.id))||l("warning","mcp-node-unconnected",`MCP node "${eJ(e)}" is not connected to any Process node.`,e)}if(t.fileAccessMcp){let e=t.fileAccessMcp,r=Object.entries(e).filter(([,e])=>e.configured&&!e.disabled&&"usable"===e.usability).map(([e])=>e),s=Object.values(e).some(e=>e.configured&&!e.disabled&&"unknown"===e.usability);for(let t of p)if((function(e){let t=e.data?.properties??{},r=[];return"string"==typeof t.promptTemplate&&t.promptTemplate&&r.push(t.promptTemplate),"isolated"===t.inputMode&&"string"==typeof t.isolatedPrompt&&t.isolatedPrompt&&r.push(t.isolatedPrompt),r})(t).some(e4)){if(0===r.length){s||l("warning","process-filepath-mcp-unavailable",`Process node "${eJ(t)}" contains a literal filepath, but no configured file-access MCP server is currently available. Enable or reconnect one so this flow can access the path.`,t);continue}!s&&r.every(t=>!function(e,t,r){return!![...Array.isArray(t.roots)?t.roots:[],...r.filter(t=>t.data?.properties?.boundServer===e).flatMap(e=>{let t=e.data?.properties?.roots;return Array.isArray(t)?t:[]})].some(e3)||e3(t.rootPath)}(t,e[t],f))&&l("warning","process-filepath-mcp-roots-missing",`Process node "${eJ(t)}" contains a literal filepath, but the available file-access MCP servers have no effective roots configured. Add roots globally or on the corresponding MCP node in this flow.`,t)}}for(let e of s.filter(e=>"resource"===eX(e))){let t=e.data?.properties??{},r="run"===t.scope?"run":"mcp",s="string"==typeof t.boundServer?t.boundServer:"",n="string"==typeof t.uri?t.uri:"",i="string"==typeof t.runName?t.runName.trim():"";"mcp"!==r||s&&n||l("warning","resource-missing-binding",`Resource node "${eJ(e)}" has no ${!s?"server":"resource URI"} bound; connected steps will receive nothing.`,e),"run"!==r||i||l("warning","resource-missing-binding",`Resource node "${eJ(e)}" is a run artifact with no name; give it a name so steps can produce/consume it.`,e),"run"===r&&i&&!eV(i)&&l("warning","resource-run-name",`Resource node "${eJ(e)}" is named "${i}", which is not a valid artifact name (letters, digits, _ and - only, not starting with a digit); it will be awkward to reference with \${res:...}.`,e),"mcp"===r&&s&&d&&!a.has(s)&&l("warning","resource-server-missing",`Resource node "${eJ(e)}" is bound to server "${s}", which isn't in your current MCP server list.`,e);let c=o.filter(t=>eQ(t)&&(t.source===e.id||t.target===e.id));0===c.length&&l("warning","resource-node-unconnected",`Resource node "${eJ(e)}" is not connected to any Process node.`,e);let u=c.filter(t=>t.target===e.id);"mcp"===r&&u.length>0&&l("error","resource-produce-static",`Resource node "${eJ(e)}" is a static MCP resource, but a step writes INTO it. Only run artifacts (scope "run") can be produced by a step — flip the edge or make this a run artifact.`,e),"run"===r&&u.length>1&&l("warning","resource-multiple-producers",`Resource node "${eJ(e)}" is produced by ${u.length} steps; the last writer wins. Consider one producer per artifact.`,e),"run"===r&&0===u.length&&c.length>0&&l("warning","resource-consumed-never-produced",`Resource node "${eJ(e)}" is consumed but no step in this flow produces it; it resolves to nothing unless an earlier run captured it.`,e)}for(let e of s.filter(e=>"signal"===eX(e))){let t=e.data?.properties??{};("string"==typeof t.topic?t.topic.trim():"")||l("warning","signal-missing-topic",`Signal node "${eJ(e)}" has no topic; it emits nothing. Give it a topic that a flow-event trigger can listen for.`,e)}let h=s.filter(e=>"static"===eX(e)),m=null;for(let e of h){let t=e.data?.properties??{},r=Array.isArray(t.entries)?t.entries:[];if(!0===t.injectOnce&&(m=m??e2(o),!function(e,t){let r=new Set,s=[...t.get(e)??[]];for(;s.length;){let o=s.shift();if(o===e)return!0;r.has(o)||(r.add(o),s.push(...t.get(o)??[]))}return!1}(e.id,m)&&l("warning","static-injectonce-without-loop",`Static node "${eJ(e)}" has "inject once" enabled but is never re-entered (it is not on a loop), so the setting has no effect.`,e)),0===r.length){l("warning","static-no-entries",`Static node "${eJ(e)}" has no entries; it injects nothing into the conversation.`,e);continue}r.forEach((t,r)=>{if(!t||"toolCall"!==t.kind)return;("string"==typeof t.toolName?t.toolName.trim():"")||l("error","static-toolcall-missing-name",`Static node "${eJ(e)}": tool-call entry #${r+1} has no tool name.`,e);let s="string"==typeof t.argumentsJson?t.argumentsJson.trim():"";if(s&&e5.test(s))l("warning","static-toolcall-unverifiable-json",`Static node "${eJ(e)}": tool-call entry #${r+1} contains runtime placeholders, so its JSON arguments can only be validated when the flow runs.`,e);else if(s)try{JSON.parse(s)}catch{l("error","static-toolcall-invalid-json",`Static node "${eJ(e)}": tool-call entry #${r+1} has invalid JSON arguments.`,e)}})}if(c.length>0){let e=e2(o);for(let t of c)e.get(t.id)?.length||l("error","start-no-outgoing","The Start node is not connected to anything; the flow cannot run.",t);let t=function(e,t){let r=new Set(e),s=[...e];for(;s.length;){let e=s.shift();for(let o of t.get(e)??[])r.has(o)||(r.add(o),s.push(o))}return r}(c.map(e=>e.id),e);for(let e of[...p,...u])t.has(e.id)||l("warning","unreachable-node",`${"finish"===eX(e)?"Finish":"Process"} node "${eJ(e)}" is not reachable from the Start node.`,e)}for(let e of s.filter(e=>"subflow"===eX(e))){let t=o.filter(t=>!eZ(t)&&(t.source===e.id||t.target===e.id&&!!t.data?.bidirectional));t.length>1&&l("error","subflow-multiple-outgoing",`Subflow node "${eJ(e)}" has ${t.length} outgoing connections; a subflow can only have one (either A > B > C or a bidirectional A <> B).`,e);let r=e.data?.properties??{},n="string"==typeof r.subflowId&&r.subflowId?r.subflowId:void 0,a=Array.isArray(r.parallelSubflowIds)?r.parallelSubflowIds.filter(e=>"string"==typeof e&&!!e):[];n&&a.length>0&&l("error","subflow-both-targets",`Subflow node "${eJ(e)}" sets both a single "subflowId" and "parallelSubflowIds"; use one or the other.`,e);let i=!0===r.mapOverList;i&&a.length>0&&l("error","subflow-map-and-parallel",`Subflow node "${eJ(e)}" combines "mapOverList" with "parallelSubflowIds"; map-over-list runs a single child once per item and cannot be combined with parallel fan-out.`,e),i&&!n&&0===a.length&&l("error","subflow-map-no-child",`Subflow node "${eJ(e)}" has "mapOverList" but no child flow ("subflowId"); select a flow to run once per item.`,e);let d=Array.isArray(r.spawnBriefs)?r.spawnBriefs.filter(e=>"string"==typeof e&&""!==e.trim()):[];d.length>0&&!n&&l("error","subflow-spawn-no-child",`Subflow node "${eJ(e)}" has spawn briefs but no sub-agent flow ("subflowId"); select the flow to spawn once per brief.`,e),d.length>0&&a.length>0&&l("error","subflow-spawn-and-parallel",`Subflow node "${eJ(e)}" combines "spawnBriefs" with "parallelSubflowIds"; spawn briefs run one sub-agent per brief and cannot be combined with a multi-flow fan-out list.`,e),d.length>0&&i&&l("error","subflow-spawn-and-map",`Subflow node "${eJ(e)}" combines "spawnBriefs" with "mapOverList"; use one lane source or the other.`,e);let c="string"==typeof r.parallelSubflowIdsVar?r.parallelSubflowIdsVar.trim():"";c&&(eV(c)||l("warning","subflow-parallel-var-name",`Subflow node "${eJ(e)}" reads dynamic fan-out targets from "${c}", which is not a valid variable name (letters, digits, _ and - only, not starting with a digit); it will be awkward to capture with \${var:...}.`,e),i&&l("error","subflow-map-and-parallel-var",`Subflow node "${eJ(e)}" combines "mapOverList" with dynamic fan-out ("parallelSubflowIdsVar"); map-over-list runs a single child once per item and cannot be combined with fan-out.`,e),s.some(e=>{let t=e.data?.properties?.captureVariable;return"string"==typeof t&&t.trim()===c})||l("warning","subflow-parallel-var-uncaptured",`Subflow node "${eJ(e)}" reads dynamic fan-out targets from variable "${c}", but no node captures it (captureVariable). It may be seeded by the caller; otherwise it resolves to no targets and the node falls back to its static parallel list.`,e)),!0===r.allowCallerFanout&&i&&l("error","subflow-map-and-caller-fanout",`Subflow node "${eJ(e)}" combines "mapOverList" with agentic fan-out ("allowCallerFanout"); map-over-list runs a single child once per item and cannot be combined with fan-out.`,e);let u=r.concurrencyLimit;"number"==typeof u&&u<1&&l("warning","subflow-concurrency-limit",`Subflow node "${eJ(e)}" has a concurrencyLimit of ${u}; it must be at least 1 (the runtime default will be used).`,e)}{let e=new Map(s.map(e=>[e.id,e])),t=new Set;for(let r of o){if(eZ(r))continue;let s=r.data?.condition;if(!s||"object"!=typeof s)continue;let o=e.get(r.source),n=o?eX(o):"unknown";if("process"!==n){l("error","edge-condition-non-process",`An edge leaving ${"unknown"===n?"an unknown":`the ${n}`} node "${o?eJ(o):r.source}" has a routing condition, but only process nodes can route on a condition.`,o??void 0);continue}t.add(r.source),(0,eL.C)(s.kind)?"always"===s.kind||("string"!=typeof s.value||0===s.value.length?l("warning","edge-condition-value",`Process node "${eJ(o)}" has an outgoing edge condition with no "value"; it will never match.`,o):"regex"!==s.kind||(0,eL.wM)(s.value)||l("warning","edge-condition-regex",`Process node "${eJ(o)}" has an outgoing edge with a regex condition that does not compile; it will never match.`,o)):l("warning","edge-condition-kind",`Process node "${eJ(o)}" has an outgoing edge whose condition kind "${String(s.kind)}" is unknown; it will never match.`,o)}for(let r of t){let t=e.get(r);t&&(o.some(e=>!eZ(e)&&(e.source===r?!e.data?.condition||"always"===e.data.condition.kind&&!e.data.condition.negate:!!(e.target===r&&e.data?.bidirectional)))||l("warning","edge-condition-no-fallback",`Process node "${eJ(t)}" has conditioned outgoing edges but no bare fallback edge; if no condition matches, the flow ends here.`,t))}}{let e=new Set;for(let t of s){let r=t.data?.properties?.captureVariable;if("string"==typeof r&&r.trim()){let s=r.trim();e.add(s),eV(s)||l("warning","capture-var-name",`${"subflow"===eX(t)?"Subflow":"Process"} node "${eJ(t)}" captures into "${s}", which is not a valid variable name (letters, digits, _ and - only, not starting with a digit); it will be awkward to reference with \${var:...}.`,t)}}let t=["promptTemplate","isolatedPrompt"],r=new Set;for(let o of s){let s=o.data?.properties??{};for(let n of t){let t=s[n];if("string"==typeof t&&t)for(let s of function(e){let t;if("string"!=typeof e||0===e.length)return[];let r=new Set;for(eD.lastIndex=0;null!==(t=eD.exec(e));){let e=t[1].trim();e&&r.add(e)}return[...r]}(t)){if(e.has(s))continue;let t=`${o.id}:${s}`;r.has(t)||(r.add(t),l("warning","var-ref-uncaptured",`${eJ(o)} references \${var:${s}} but no step in this flow captures "${s}" (via captureVariable). It resolves to empty unless supplied as a run input — check for a typo or a step ordered after this one.`,o))}}}}{for(let e of s){let t=e.data?.properties?.captureKv;if("string"==typeof t&&t.trim()){let{key:r}=eq(t.trim());e_(r)||l("warning","capture-kv-name",`${"subflow"===eX(e)?"Subflow":"Process"} node "${eJ(e)}" captures into kv "${t.trim()}", whose key is not a valid name (letters, digits, _ and - only, not starting with a digit); it will be awkward to reference with \${kv:...}.`,e)}}let e=["promptTemplate","isolatedPrompt"],t=new Set;for(let r of s){let s=r.data?.properties??{};for(let o of e){let e=s[o];if("string"==typeof e&&e)for(let s of function(e){let t;if("string"!=typeof e||0===e.length)return[];let r=new Set;for(eB.lastIndex=0;null!==(t=eB.exec(e));){let e=t[1].trim();e&&r.add(e)}return[...r]}(e)){let{key:e}=eq(s);if(e_(e))continue;let o=`${r.id}:${s}`;t.has(o)||(t.add(o),l("warning","kv-ref-name",`${eJ(r)} references \${kv:${s}}, whose key is not a valid name (letters, digits, _ and - only, not starting with a digit); it resolves to empty.`,r))}}}}for(let e of p){let r=e.data?.properties?.promptTemplate;if("string"!=typeof r||!r)continue;let n=e0(e.id,s,o),a=null,i=new Set,d=new Set;for(let c of(0,es.A$)(r)){if("handoff"===c.server){let t=`handoff:${c.name}`;if(d.has(t))continue;d.add(t),i.add(c.name),a||(a=e1(e.id,s,o)),a.has(c.name)||l("warning","handoff-pill-obsolete",`Process node "${eJ(e)}" references handoff tool "${c.name}", which no longer exists (the target node was removed, or renamed so the tool name changed). Update or remove the pill.`,e);continue}let r=`${c.kind}:${c.server}:${c.name}`;!d.has(r)&&(d.add(r),n.has(c.server)?"tool"===c.kind&&t.serverTools&&t.serverTools[c.server]&&!t.serverTools[c.server].includes(c.name)&&l("warning","tool-unavailable",`Process node "${eJ(e)}" references tool "${c.name}" which server "${c.server}" does not currently expose.`,e):l("error","tool-pill-disconnected",`Process node "${eJ(e)}" references ${c.kind} "${c.name}" from server "${c.server}", but it is not connected to that server (the MCP node was removed or the server was renamed).`,e))}if(i.size>0)for(let t of a??e1(e.id,s,o))i.has(t)||l("warning","handoff-target-unreferenced",`Process node "${eJ(e)}" can hand off to "${t}" but its prompt never references \${tool:handoff__${t}}, so the model may never route there.`,e)}if(t.serverTools)for(let e of p){let r=e0(e.id,s,o),n=new Set;for(let s of r){let r=t.serverTools[s];if(Array.isArray(r)&&0===r.length&&l("warning","mcp-server-no-tools",`Process node "${eJ(e)}" is connected to MCP server "${s}", which currently exposes 0 tools. The connection has no effect until the server provides tools.`,e),Array.isArray(r))for(let t of Array.isArray(e.data?.properties?.enabledTools)?e.data.properties.enabledTools:[]){let o=`enabledTool:${s}:${t}`;!n.has(o)&&(r.includes(t)||(n.add(o),l("warning","tool-unavailable",`Process node "${eJ(e)}" has enabledTool "${t}" which server "${s}" does not currently expose.`,e)))}}}let g=r.filter(e=>"error"===e.severity).length,x=r.length-g;return{issues:r,errorCount:g,warningCount:x,isRunnable:0===g}}var e6=r(90186);let e8=(0,W.h)("components/flow/FlowBuilder/FlowValidationButton"),e7=({nodes:e,edges:t})=>{let{t:r,tp:l}=(0,ev.s9)(),[n,c]=(0,o.useState)(!1),[u,p]=(0,o.useState)(null),[f,h]=(0,o.useState)(!1),[m,g]=(0,o.useState)(null),[x,w]=(0,o.useState)(null),v=(0,o.useRef)(null),b=(0,o.useRef)(null),y=(0,o.useId)(),j=(0,o.useId)(),A=(0,o.useId)();(0,o.useEffect)(()=>{if(!n)return;let e=window.requestAnimationFrame(()=>{b.current?.focus()});return()=>window.cancelAnimationFrame(e)},[n]);let S=(0,o.useCallback)(()=>{c(!1),window.requestAnimationFrame(()=>{v.current?.focus()})},[]),C=(0,o.useCallback)(()=>{let e=b.current?.contains(document.activeElement);c(!1),e&&window.requestAnimationFrame(()=>{v.current?.focus()})},[]),k=(0,o.useCallback)(async()=>{h(!0),w(null);try{let r=await V.N.tryLoadModels()??void 0,s=await O.S.loadServerConfigs(),o=Array.isArray(s)?s:void 0,l=o?.map(e=>({name:e.name,status:e.disabled?"disabled":void 0})),n={},a=new Map,i=o?.filter(e=>!!e.hostPathAccess)??[],d=new Set(i.map(e=>e.name));if(o){let t=new Map(o.map(e=>[e.name,!!e.disabled])),r=new Set;for(let t of e){let e=t?.data?.type??t?.type,s=t?.data?.properties?.boundServer;"mcp"===e&&"string"==typeof s&&s&&r.add(s)}for(let{name:e,disabled:t}of i)t||r.add(e);await Promise.all([...r].map(async e=>{if(!t.get(e))try{let t=await O.S.listServerTools(e);!t.error&&Array.isArray(t.tools)?(n[e]=t.tools.map(e=>e?.name).filter(e=>"string"==typeof e),a.set(e,"usable")):d.has(e)&&a.set(e,"unknown")}catch(t){d.has(e)&&a.set(e,"unknown"),e8.debug(`Could not gather MCP tool list for "${e}" during the flow check`,t)}}))}let c=o?Object.fromEntries(i.map(e=>[e.name,function(e,t,r){let s=t.find(t=>t.name===e);if(!s)return{configured:!1,disabled:!1,usability:"unavailable"};let o=!!s.disabled;return{configured:!0,disabled:o,usability:o?"unavailable":r.get(e)??"unknown",roots:s.roots,rootPath:s.rootPath}}(e.name,o,a)])):void 0,u=e9({nodes:e,edges:t},{models:r,servers:l,serverTools:n,fileAccessMcp:c});g(u.issues)}catch(e){e8.warn("Flow validation failed to run",e),g(null),w(r("flows.validation.failed"))}finally{h(!1)}},[e,t,r]),M=(0,o.useCallback)(e=>{p(e.currentTarget),c(!0),g(null),w(null),k()},[k]),$=(0,o.useCallback)(e=>{e&&(S(),document.dispatchEvent(new CustomEvent("selectNode",{detail:{nodeId:e}})))},[S]),F=m?.filter(e=>"error"===e.severity).length??0,z=(m?.length??0)-F;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(d.A,{ref:v,id:y,variant:"outlined",color:"primary",onClick:M,startIcon:(0,s.jsx)(eR,{}),"aria-haspopup":"dialog","aria-expanded":n,"aria-controls":j,sx:{textTransform:"none"},children:[r("flows.validation.check"),m&&m.length>0&&(0,s.jsx)(T.A,{size:"small",color:F>0?"error":"warning",label:m.length,sx:{ml:1,height:20}})]}),(0,s.jsx)(eI.A,{open:n,anchorEl:u,placement:"bottom-end",sx:{zIndex:e=>e.zIndex.modal+1},modifiers:[{name:"offset",options:{offset:[0,10]}}],children:(0,s.jsx)(e$.x,{onClickAway:C,children:(0,s.jsxs)(I.A,{ref:b,id:j,role:"dialog","aria-modal":"false","aria-labelledby":A,"aria-busy":f,tabIndex:-1,onKeyDown:e=>{"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),S())},elevation:18,sx:{width:"min(92vw, 440px)",maxHeight:"min(68dvh, 560px)",overflow:"hidden",border:1,borderColor:"divider",borderRadius:3},children:[(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,px:2,py:1.5},children:[(0,s.jsx)(i.A,{id:A,variant:"subtitle1",fontWeight:800,children:r("flows.validation.title")}),m&&(0,s.jsxs)(a.default,{sx:{display:"flex",gap:.75,ml:.5},children:[F>0&&(0,s.jsx)(T.A,{size:"small",color:"error",label:l("flows.validation.error",F)}),z>0&&(0,s.jsx)(T.A,{size:"small",color:"warning",label:l("flows.validation.warning",z)})]})]}),(0,s.jsx)(P.A,{}),(0,s.jsx)(a.default,{sx:{maxHeight:"min(52dvh, 420px)",overflowY:"auto",p:1},children:f?(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:2,py:3,justifyContent:"center"},children:[(0,s.jsx)(N.default,{size:22}),(0,s.jsx)(i.A,{color:"text.secondary",children:r("flows.validation.checking")})]}):x?(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"flex-start",gap:1.5,py:2,px:1},children:[(0,s.jsx)(eP.A,{color:"error"}),(0,s.jsxs)(a.default,{children:[(0,s.jsx)(i.A,{fontWeight:700,children:r("flows.validation.unavailable")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:x})]})]}):m&&0===m.length?(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1.5,py:3,px:1,justifyContent:"center"},children:[(0,s.jsx)(eE.A,{color:"success"}),(0,s.jsx)(i.A,{children:r("flows.validation.healthy")})]}):(0,s.jsx)(eT.A,{dense:!0,disablePadding:!0,children:(m??[]).map((e,t)=>{let o=!!e.nodeId,l=(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(eN.A,{sx:{minWidth:36},children:"error"===e.severity?(0,s.jsx)(eP.A,{color:"error",fontSize:"small"}):(0,s.jsx)(eW.A,{color:"warning",fontSize:"small"})}),(0,s.jsx)(eF.A,{primary:(0,e6.z)(e,r),secondary:o?r("flows.validation.revealNode",{node:e.nodeLabel??e.nodeId??""}):void 0})]});return o?(0,s.jsx)(ez.A,{onClick:()=>$(e.nodeId),alignItems:"flex-start",children:l},t):(0,s.jsx)(eH.Ay,{alignItems:"flex-start",children:l},t)})})}),(0,s.jsx)(P.A,{}),(0,s.jsxs)(a.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,p:1},children:[(0,s.jsx)(d.A,{onClick:k,disabled:f,children:r("flows.validation.recheck")}),(0,s.jsx)(d.A,{onClick:S,variant:"contained",children:r("flows.validation.done")})]})]})})})]})};var te=r(12289),tt=r(80647),tr=r(95122),ts=r(21603),to=r(96606),tl=r(6888),tn=r(33801),ta=r(10685),ti=r(79935),td=r(84848),tc=r(39995),tu=r(32482),tp=r(34766),tf=r(56374);let th=(0,y.A)((0,s.jsx)("path",{d:"m6.14 11.86-2.78 2.79c-.19.2-.19.51 0 .71l2.78 2.79c.31.32.85.09.85-.35V16H13c.55 0 1-.45 1-1s-.45-1-1-1H6.99v-1.79c0-.45-.54-.67-.85-.35m14.51-3.21-2.78-2.79c-.31-.32-.85-.09-.85.35V8H11c-.55 0-1 .45-1 1s.45 1 1 1h6.01v1.79c0 .45.54.67.85.35l2.78-2.79c.2-.19.2-.51.01-.7"}),"SwapHorizRounded");var tm=r(16909),tg=r(38506),tx=r(19800);let tw=({processNodeId:e,connections:t,beginnerMode:r=!1,heading:l,actionLabel:n,emptyMessage:d,pickerAriaLabel:c,singleSelection:f=!1,onConnect:h,onRemove:m,loadServers:g})=>{let{t:x}=(0,ev.s9)(),[w,v]=(0,o.useState)(!1),[b,y]=(0,o.useState)([]),[j,A]=(0,o.useState)(!1),[S,C]=(0,o.useState)(null),k=(0,o.useMemo)(()=>new Set(t.map(e=>e.serverName)),[t]),M=(0,o.useMemo)(()=>b.filter(e=>!k.has(e.name)),[b,k]),I=(0,tx.E)("mcp",M),$=async()=>{v(!0),A(!0),C(null);try{y(await g())}catch(e){C(e instanceof Error?e.message:x("flows.inspector.mcpLoadError"))}finally{A(!1)}},T=async t=>{v(!1),await h(e,t)},N=e=>{var t,o;return{key:e.name,content:r?(0,s.jsxs)(tc.A,{onClick:()=>{T(e.name)},sx:e=>({width:"100%",minHeight:74,px:1.5,py:1.25,justifyContent:"flex-start",textAlign:"left",border:`1px solid ${e.palette.divider}`,borderRadius:2.5,transition:e.transitions.create(["border-color","background-color"]),"&:hover":{borderColor:"primary.main",backgroundColor:"action.hover"}}),children:[(0,s.jsx)(tf.A,{color:"primary",sx:{mr:1.25}}),(0,s.jsxs)(a.default,{sx:{minWidth:0},children:[(0,s.jsx)(i.A,{variant:"body2",fontWeight:800,noWrap:!0,children:e.name}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:x("flows.inspector.allAppToolsIncluded")})]})]}):(0,s.jsx)(tg.A,{name:e.name,status:"connected"===(t=e.status)||"disconnected"===t||"error"===t||"connecting"===t||"initialization"===t||"requires_authentication"===t?t:"starting"===t?"connecting":"disconnected",path:e.rootPath||e.serverUrl||e.websocketUrl||"",enabled:!e.disabled,transport:"websocket"===(o=e.transport)||"sse"===o||"streamable"===o?o:"stdio",pickerMode:!0,onClick:()=>{T(e.name)}})}},F=I.items.map(N),z=I.groups?I.groups.map(e=>({...e,items:e.items.map(N)})):null,H=l??(r?x("flows.inspector.stepApps"):x("flows.inspector.connectedMcpServers")),R=n??(r?x("flows.inspector.addApp"):x("flows.inspector.addMcpServer")),P=d??(r?x("flows.inspector.noApps"):x("flows.inspector.noMcpServers"));return(0,s.jsxs)(a.default,{sx:e=>({border:`1px solid ${e.palette.divider}`,borderRadius:2.5,overflow:"hidden"}),children:[(0,s.jsxs)(te.A,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{px:1.25,py:.75},children:[(0,s.jsx)(i.A,{variant:"caption",fontWeight:800,children:H}),(0,s.jsx)(p.A,{title:R,children:(0,s.jsx)(u.A,{size:"small","aria-label":R,onClick:()=>{$()},children:f?(0,s.jsx)(th,{fontSize:"small"}):(0,s.jsx)(tu.A,{fontSize:"small"})})})]}),0===t.length?(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",display:"block",sx:{px:1.25,pb:1.25},children:P}):(0,s.jsx)(te.A,{sx:{borderTop:1,borderColor:"divider"},children:t.map((t,o)=>(0,s.jsxs)(te.A,{direction:"row",alignItems:"center",gap:.75,sx:{minHeight:42,px:1,borderTop:+(0!==o),borderColor:"divider"},children:[(0,s.jsx)(tf.A,{color:"primary",sx:{fontSize:17}}),(0,s.jsx)(i.A,{variant:"body2",noWrap:!0,sx:{flex:1,minWidth:0},children:t.serverName}),!f&&m&&(0,s.jsx)(p.A,{title:x(r?"flows.inspector.removeApp":"flows.inspector.removeMcpServer",{server:t.serverName}),children:(0,s.jsx)(u.A,{size:"small",color:"error","aria-label":x(r?"flows.inspector.removeApp":"flows.inspector.removeMcpServer",{server:t.serverName}),onClick:()=>m(e,t.nodeId),children:(0,s.jsx)(tp.A,{fontSize:"small"})})})]},t.nodeId))}),(0,s.jsx)(tm.A,{open:w,onClose:()=>v(!1),ariaLabel:c??(r?x("flows.inspector.chooseApp"):x("flows.serverTools.connectTitle")),isLoading:j,error:S,emptyMessage:r?x("flows.inspector.noAppsToAdd"):x("flows.serverTools.noneToConnect"),searchable:!0,searchPlaceholder:r?x("flows.inspector.searchApps"):x("flows.serverTools.searchServers"),searchTerm:I.searchTerm,onSearchChange:I.setSearchTerm,columns:{xs:12,sm:6},items:F,groups:z,collapsedKeys:I.collapsedKeys,onToggleGroup:I.toggleGroup})]})};var tv=r(65938),tb=r(99308);let ty=({models:e,selectedModelId:t,beginnerMode:r=!1,onSelect:l,onRemove:n})=>{let{t:d}=(0,ev.s9)(),[c,f]=(0,o.useState)(!1),h=(0,tx.E)("models",e),m=(0,o.useMemo)(()=>e.find(e=>e.id===t),[e,t]),g=m?.displayName||m?.name||t,x=e=>{l(e),f(!1)},w=e=>({key:e.id,content:r?(0,s.jsxs)(tc.A,{onClick:()=>x(e.id),sx:e=>({width:"100%",minHeight:74,px:1.5,py:1.25,justifyContent:"flex-start",textAlign:"left",border:`1px solid ${e.palette.divider}`,borderRadius:2.5,transition:e.transitions.create(["border-color","background-color"]),"&:hover":{borderColor:"primary.main",backgroundColor:"action.hover"}}),children:[(0,s.jsx)(tv.A,{color:"primary",sx:{mr:1.25}}),(0,s.jsxs)(a.default,{sx:{minWidth:0},children:[(0,s.jsx)(i.A,{variant:"body2",fontWeight:800,noWrap:!0,children:e.displayName||e.name}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:d("flows.inspector.simpleModelHelp")})]})]}):(0,s.jsx)(tb.A,{model:e,selectable:!0,selected:t===e.id,onSelect:x})}),v=h.items.map(w),b=h.groups?h.groups.map(e=>({...e,items:e.items.map(w)})):null,y=r?d("flows.inspector.stepAi"):d("flows.inspector.boundModel"),j=r?d("flows.inspector.chooseAi"):d("flows.inspector.chooseModel");return(0,s.jsxs)(a.default,{sx:e=>({border:`1px solid ${t?e.palette.divider:e.palette.error.main}`,borderRadius:2.5,overflow:"hidden",backgroundColor:t?"transparent":(0,en.X4)(e.palette.error.main,.07)}),children:[(0,s.jsxs)(te.A,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{px:1.25,py:.75},children:[(0,s.jsx)(i.A,{variant:"caption",fontWeight:800,children:y}),(0,s.jsx)(p.A,{title:j,children:(0,s.jsx)(u.A,{size:"small","aria-label":j,color:t?"default":"error",onClick:()=>f(!0),children:(0,s.jsx)(th,{fontSize:"small"})})})]}),t?(0,s.jsxs)(te.A,{direction:"row",alignItems:"center",gap:.75,sx:{minHeight:42,px:1,borderTop:1,borderColor:"divider"},children:[(0,s.jsx)(tv.A,{color:"primary",sx:{fontSize:17}}),(0,s.jsx)(i.A,{variant:"body2",noWrap:!0,sx:{flex:1,minWidth:0},children:g}),(0,s.jsx)(p.A,{title:d("flows.inspector.removeModel",{model:g??t}),children:(0,s.jsx)(u.A,{size:"small",color:"error","aria-label":d("flows.inspector.removeModel",{model:g??t}),onClick:n,children:(0,s.jsx)(tp.A,{fontSize:"small"})})})]}):(0,s.jsx)(i.A,{variant:"caption",color:"error.main",fontWeight:700,display:"block",sx:{px:1.25,pb:1.25},children:r?d("flows.inspector.noStepAi"):d("flows.inspector.noBoundModel")}),(0,s.jsx)(tm.A,{open:c,onClose:()=>f(!1),ariaLabel:r?d("flows.inspector.aiPickerAria"):d("flows.inspector.modelPickerAria"),isLoading:!1,emptyMessage:d("flows.process.noModels"),searchable:!0,searchPlaceholder:d("flows.process.searchModels"),searchTerm:h.searchTerm,onSearchChange:h.setSearchTerm,columns:{xs:12,sm:6},items:v,groups:b,collapsedKeys:h.collapsedKeys,onToggleGroup:h.toggleGroup})]})};var tj=r(67471);let tA=({processNodeId:e,currentFlowId:t,flows:r,connections:l,onConnect:n,onRemove:d})=>{let{t:c}=(0,ev.s9)(),[f,h]=(0,o.useState)(!1),m=(0,o.useMemo)(()=>new Set(l.map(e=>e.flowId)),[l]),g=(0,o.useMemo)(()=>r.filter(e=>e.id!==t&&!m.has(e.id)),[m,t,r]),x=(0,tx.E)("flows",g),w=t=>{h(!1),n(e,t)},v=e=>({key:e.id,content:(0,s.jsx)(tj.A,{flow:e,selected:!1,onSelect:w,pickerMode:!0})});return(0,s.jsxs)(a.default,{sx:e=>({border:`1px solid ${e.palette.divider}`,borderRadius:2.5,overflow:"hidden"}),children:[(0,s.jsxs)(te.A,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{px:1.25,py:.75},children:[(0,s.jsx)(i.A,{variant:"caption",fontWeight:800,children:c("flows.guided.talksToAgents")}),(0,s.jsx)(p.A,{title:c("flows.guided.addAgent"),children:(0,s.jsx)(u.A,{size:"small","aria-label":c("flows.guided.addAgent"),onClick:()=>h(!0),children:(0,s.jsx)(tu.A,{fontSize:"small"})})})]}),0===l.length?(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",display:"block",sx:{px:1.25,pb:1.25},children:c("flows.guided.noAgents")}):(0,s.jsx)(te.A,{sx:{borderTop:1,borderColor:"divider"},children:l.map((t,r)=>(0,s.jsxs)(te.A,{direction:"row",alignItems:"center",gap:.75,sx:{minHeight:42,px:1,borderTop:+(0!==r),borderColor:"divider"},children:[(0,s.jsx)(ti.A,{color:"primary",sx:{fontSize:17}}),(0,s.jsxs)(a.default,{sx:{flex:1,minWidth:0},children:[(0,s.jsx)(i.A,{variant:"body2",noWrap:!0,children:t.flowName}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",noWrap:!0,display:"block",children:c("flows.guided.agentIo")})]}),(0,s.jsx)(p.A,{title:c("flows.guided.removeAgent",{agent:t.flowName}),children:(0,s.jsx)(u.A,{size:"small",color:"error","aria-label":c("flows.guided.removeAgent",{agent:t.flowName}),onClick:()=>d(e,t.nodeId),children:(0,s.jsx)(tp.A,{fontSize:"small"})})})]},t.nodeId))}),(0,s.jsx)(tm.A,{open:f,onClose:()=>h(!1),ariaLabel:c("flows.guided.chooseAgent"),emptyMessage:c("flows.guided.noAgentsToAdd"),searchable:!0,searchPlaceholder:c("flows.guided.searchAgents"),searchTerm:x.searchTerm,onSearchChange:x.setSearchTerm,items:x.items.map(v),groups:x.groups?x.groups.map(e=>({...e,items:e.items.map(v)})):null,collapsedKeys:x.collapsedKeys,onToggleGroup:x.toggleGroup})]})},tS=(0,M.Ay)(I.A)(({theme:e})=>({width:320,minWidth:320,height:"100%",minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden",border:`1px solid ${e.palette.divider}`,borderRadius:16,backgroundColor:"dark"===e.palette.mode?"rgba(17, 22, 41, 0.9)":"rgba(255, 255, 255, 0.92)",boxShadow:"dark"===e.palette.mode?"0 18px 55px rgba(0,0,0,.24)":"0 18px 55px rgba(49,45,99,.1)",backdropFilter:"blur(20px) saturate(140%)",[e.breakpoints.down("lg")]:{width:286,minWidth:286},[e.breakpoints.down("md")]:{width:"100%",minWidth:0,height:"auto",maxHeight:"none"}})),tC=({selectedNode:e,onClearSelection:t,onCommitNode:r,onOpenAdvanced:l,onOpenTechnicalDetails:n,flowName:c,flowNameError:f,onFlowNameChange:h,flowDescription:m,onFlowDescriptionChange:g,authoringMode:x,onAuthoringModeChange:w,permissionRuleCount:b,onOpenPermissionRules:y,beginnerMode:j=!1,onSuggestTools:A,onSuggestAgents:S,onImprovePrompt:C,onCheckPlausibility:M,connectedMcpServers:I=[],onConnectMcpServer:$,onRemoveMcpServer:H,loadMcpServers:R,onSelectMcpNodeServer:W,currentFlowId:E,availableAgents:L=[],connectedAgents:D=[],onConnectAgent:O,onRemoveAgent:V,models:B=[],onNavigateToFlow:U})=>{let q,{t:K,tp:G}=(0,ev.s9)(),[_,X]=(0,o.useState)(e?"node":"flow"),[J,Y]=(0,o.useState)(e?.data.label??""),[Q,Z]=(0,o.useState)(String(e?.data.properties?.promptTemplate??"")),[ee,et]=(0,o.useState)(!1),[er,es]=(0,o.useState)(null);(0,o.useEffect)(()=>{e?X("node"):X("flow")},[e?.id]),(0,o.useEffect)(()=>{Y(e?.data.label??""),Z(String(e?.data.properties?.promptTemplate??"")),es(null)},[e?.id,e?.data]);let eo=(0,o.useMemo)(()=>{if(!e)return[];let t=e.data.properties??{},r=[],s="mcp"===e.data.type&&!!R&&!!W;return"string"==typeof t.boundServer&&t.boundServer&&!s&&r.push({label:j?K("flows.inspector.summary.app"):K("flows.inspector.summary.server"),value:t.boundServer}),"string"==typeof t.signalName&&t.signalName&&r.push({label:j?K("flows.inspector.summary.notification"):K("flows.inspector.summary.signal"),value:t.signalName}),r},[e,j,K,R,W]),el=(0,o.useMemo)(()=>{if(!e)return null;let t=e.data.properties?.subflowId;if("string"!=typeof t||!t)return null;let r=L.find(e=>e.id===t);return{id:t,name:r?.name||t}},[e,L]),ea=()=>{if(!e)return null;let t={...e.data.properties??{}};("process"===e.data.type||"start"===e.data.type)&&(t.promptTemplate=Q);let s={...e.data,label:J.trim()||e.data.label,properties:t};return JSON.stringify(s)!==JSON.stringify(e.data)&&r(e.id,s),{...e,data:s}},ei=async(e,t)=>{if(!W)return;let r=ea();r&&await W(r,t)},ed=async()=>{if(!C)return;let e=ea();if(e){et(!0),es(null);try{let t=await C(e);Z(t),r(e.id,{...e.data,properties:{...e.data.properties??{},promptTemplate:t}})}catch(e){es(e instanceof Error?e.message:K("flows.inspector.improvePromptFailed"))}finally{et(!1)}}};return(0,s.jsxs)(tS,{elevation:0,"aria-label":j&&e?K("flows.inspector.stepSettings"):j?K("flows.inspector.agentSettings"):K("flows.inspector.flowInspector"),children:[(0,s.jsxs)(a.default,{sx:{px:1.5,pt:1.25},children:[(0,s.jsxs)(te.A,{direction:"row",alignItems:"center",justifyContent:"space-between",gap:1,children:[(0,s.jsxs)(a.default,{sx:{minWidth:0},children:[(0,s.jsx)(i.A,{variant:"overline",color:"text.secondary",sx:{letterSpacing:".12em"},children:j?e?K("flows.inspector.editStep"):K("flows.inspector.agentSettings"):K("flows.inspector.inspector")}),(0,s.jsx)(i.A,{variant:"subtitle1",fontWeight:800,noWrap:!0,children:e?e.data.label:c})]}),e&&(0,s.jsx)(p.A,{title:j?K("flows.inspector.closeStep"):K("flows.inspector.clearSelection"),children:(0,s.jsx)(u.A,{size:"small","aria-label":j?K("flows.inspector.closeStep"):K("flows.inspector.closeNode"),onClick:t,children:(0,s.jsx)(ts.A,{fontSize:"small"})})})]}),!j&&(0,s.jsxs)(tt.A,{value:_,onChange:(e,t)=>X(t),variant:"fullWidth",sx:{mt:.5,minHeight:38,"& .MuiTab-root":{minHeight:38}},children:[(0,s.jsx)(tr.A,{value:"node",label:K("flows.inspector.node"),disabled:!e}),(0,s.jsx)(tr.A,{value:"flow",label:K("flows.inspector.flow")})]})]}),(0,s.jsx)(P.A,{}),(0,s.jsx)(a.default,{sx:{p:1.5,overflowY:"auto",flex:1},children:"node"===_&&e?(0,s.jsxs)(te.A,{spacing:1.5,children:[(0,s.jsxs)(te.A,{direction:"row",alignItems:"center",gap:1,sx:{minWidth:0},children:[(0,s.jsx)(T.A,{size:"small",sx:{flexShrink:0},label:(q=String(e.data.type||e.type||"node"),j?({start:K("flows.inspector.type.start"),process:K("flows.inspector.type.process"),finish:K("flows.inspector.type.finish"),mcp:K("flows.inspector.type.mcp"),subflow:K("flows.inspector.type.subflow"),resource:K("flows.inspector.type.resource"),signal:K("flows.inspector.type.signal"),trigger:K("flows.inspector.type.trigger")})[q]??K("flows.inspector.type.step"):"mcp"===q?"MCP":`${q.charAt(0).toUpperCase()}${q.slice(1)}`),color:"finish"===e.data.type?"success":"primary",variant:"outlined"}),el&&(0,s.jsx)(p.A,{title:U?`${K("flows.subflow.openTarget")}: ${el.name}`:el.name,children:(0,s.jsx)(T.A,{size:"small",variant:"outlined",icon:(0,s.jsx)(ti.A,{}),label:el.name,clickable:!!U,onClick:U?()=>{ea(),U(el.id)}:void 0,sx:{minWidth:0,flexShrink:1,maxWidth:"100%"}})})]}),(0,s.jsx)(d.A,{variant:j?"outlined":"contained",startIcon:(0,s.jsx)(k.A,{}),endIcon:(0,s.jsx)(to.A,{}),onClick:()=>{let e=ea();e&&l(e)},children:j?K("flows.inspector.moreOptions"):K("flows.inspector.fullSettings")}),(0,s.jsx)(v.A,{label:j?K("flows.inspector.stepName"):K("flows.inspector.nodeName"),size:"small",fullWidth:!0,value:J,onChange:e=>Y(e.target.value),onBlur:ea,onKeyDown:e=>{"Enter"===e.key&&e.currentTarget.blur()}}),("process"===e.data.type||"start"===e.data.type)&&(0,s.jsxs)(te.A,{spacing:.75,children:[(0,s.jsx)(v.A,{label:j?"start"===e.data.type?K("flows.inspector.helpfulBackground"):K("flows.inspector.aiTask"):"start"===e.data.type?K("flows.inspector.startingContext"):K("flows.inspector.taskPrompt"),size:"small",fullWidth:!0,multiline:!0,minRows:5,maxRows:12,value:Q,onChange:e=>Z(e.target.value),onBlur:ea,onKeyDown:e=>{(e.ctrlKey||e.metaKey)&&"Enter"===e.key&&(e.preventDefault(),ea())},placeholder:"start"===e.data.type?j?K("flows.inspector.startBeginnerPlaceholder"):K("flows.inspector.startPlaceholder"):j?K("flows.inspector.taskBeginnerPlaceholder"):K("flows.inspector.taskPlaceholder"),helperText:j?K("flows.inspector.blurHelp"):K("flows.inspector.keyboardHelp")}),"process"===e.data.type&&C&&(0,s.jsx)(d.A,{variant:"outlined",size:"small",startIcon:ee?(0,s.jsx)(N.default,{size:16}):(0,s.jsx)(ta.A,{}),disabled:ee,onClick:()=>{ed()},children:ee?K("flows.inspector.improvingPrompt"):K("flows.inspector.improvePrompt")}),er&&(0,s.jsx)(i.A,{variant:"caption",color:"error",children:er})]}),!j&&eo.length>0&&(0,s.jsx)(a.default,{sx:e=>({p:1.25,borderRadius:2.5,border:`1px solid ${e.palette.divider}`,bgcolor:(0,en.X4)(e.palette.primary.main,.05)}),children:eo.map(e=>(0,s.jsxs)(te.A,{direction:"row",justifyContent:"space-between",gap:1,mb:.5,children:[(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:e.label}),(0,s.jsx)(i.A,{variant:"caption",fontWeight:700,noWrap:!0,children:e.value})]},e.label))}),"mcp"===e.data.type&&R&&W&&(0,s.jsx)(tw,{processNodeId:e.id,connections:"string"==typeof e.data.properties?.boundServer&&e.data.properties.boundServer?[{nodeId:e.id,serverName:e.data.properties.boundServer}]:[],heading:K("flows.inspector.summary.server"),actionLabel:K("flows.inspector.chooseMcpServer"),emptyMessage:K("flows.mcpNode.select"),pickerAriaLabel:K("flows.inspector.chooseMcpServer"),singleSelection:!0,onConnect:ei,loadServers:R}),"process"===e.data.type&&(0,s.jsx)(ty,{models:B,selectedModelId:"string"==typeof e.data.properties?.boundModel?e.data.properties.boundModel:void 0,beginnerMode:j,onSelect:e=>{let t=ea();if(!t)return;let s=B.find(t=>t.id===e);r(t.id,{...t.data,properties:{...t.data.properties??{},boundModel:e,...s?{modelName:s.name}:{}}})},onRemove:()=>{let e=ea();if(!e)return;let{boundModel:t,modelName:s,...o}=e.data.properties??{};r(e.id,{...e.data,properties:o})}}),"process"===e.data.type&&$&&H&&R&&(0,s.jsx)(tw,{processNodeId:e.id,connections:I,beginnerMode:j,onConnect:$,onRemove:H,loadServers:R}),"process"===e.data.type&&E&&O&&V&&(0,s.jsx)(tA,{processNodeId:e.id,currentFlowId:E,flows:L,connections:D,onConnect:O,onRemove:V}),"process"===e.data.type&&A&&(0,s.jsx)(d.A,{variant:"contained",startIcon:(0,s.jsx)(tn.A,{}),onClick:()=>{let e=ea();e&&A(e)},children:K("flows.inspector.suggestTools")}),"process"===e.data.type&&S&&(0,s.jsx)(d.A,{variant:"contained",startIcon:(0,s.jsx)(tn.A,{}),onClick:()=>{let e=ea();e&&S(e)},children:K("flows.inspector.suggestAgents")}),(0,s.jsx)(d.A,{variant:"text",size:"small",startIcon:(0,s.jsx)(td.A,{}),onClick:()=>{let e=ea();e&&n?.(e)},children:K("flows.inspector.technicalDetails")}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:j?K("flows.inspector.beginnerTip"):K("flows.inspector.expertTip")})]}):(0,s.jsxs)(te.A,{spacing:1.5,children:[(0,s.jsxs)(te.A,{direction:"row",gap:1,alignItems:"center",children:[(0,s.jsx)(tl.A,{color:"primary",fontSize:"small"}),(0,s.jsxs)(a.default,{children:[(0,s.jsx)(i.A,{variant:"subtitle2",fontWeight:800,children:j?K("flows.inspector.aboutAgent"):K("flows.inspector.flowDetails")}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:j?K("flows.inspector.aboutHelp"):K("flows.inspector.flowHelp")})]})]}),(0,s.jsx)(v.A,{size:"small",label:j?K("flows.inspector.agentName"):K("flows.inspector.flowName"),value:c,onChange:e=>h(e.target.value),error:!!f,helperText:f??(j?K("flows.inspector.agentNameHelp"):K("flows.inspector.renameHelp")),fullWidth:!0}),M&&(0,s.jsx)(d.A,{variant:"outlined",startIcon:(0,s.jsx)(tn.A,{}),onClick:M,children:K("flows.inspector.checkAgent")}),(0,s.jsx)(v.A,{size:"small",label:j?K("flows.inspector.helpQuestion"):K("flows.inspector.description"),value:m,onChange:e=>g(e.target.value),multiline:!0,minRows:3,maxRows:7,fullWidth:!0,placeholder:j?K("flows.inspector.agentDescriptionPlaceholder"):K("flows.inspector.flowDescriptionPlaceholder")}),!j&&(0,s.jsxs)(a.default,{sx:e=>({p:1.25,borderRadius:2.5,border:`1px solid ${e.palette.divider}`,bgcolor:(0,en.X4)(e.palette.primary.main,.04)}),children:[(0,s.jsx)(F.A,{control:(0,s.jsx)(z.A,{size:"small",checked:"advanced"===x,onChange:e=>w(e.target.checked?"advanced":"guided")}),label:"advanced"===x?K("flows.inspector.advanced"):K("flows.inspector.guided")}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",display:"block",children:"advanced"===x?K("flows.inspector.advancedHelp"):K("flows.inspector.guidedHelp")})]}),"advanced"===x&&(0,s.jsx)(d.A,{variant:"outlined",onClick:y,startIcon:(0,s.jsx)(tl.A,{}),children:b?G("flows.inspector.permissionRules",b):K("flows.inspector.permissionRules")}),!j&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(P.A,{}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:K("flows.inspector.shortcuts")})]})]})})]})};var tk=r(87696),tM=r(15344),tI=r(1507);let t$=(0,y.A)((0,s.jsx)("path",{d:"M11 5v11.17l-4.88-4.88c-.39-.39-1.03-.39-1.42 0s-.39 1.02 0 1.41l6.59 6.59c.39.39 1.02.39 1.41 0l6.59-6.59c.39-.39.39-1.02 0-1.41a.996.996 0 0 0-1.41 0L13 16.17V5c0-.55-.45-1-1-1s-1 .45-1 1"}),"ArrowDownwardRounded");var tT=r(1287),tN=r(65430);let tF=new Set(["Process Node","Subflow Node","Signal Node"]),tz=({children:e,complete:t=!1})=>(0,s.jsx)(a.default,{"aria-hidden":"true",sx:{display:"grid",width:34,height:34,flexShrink:0,placeItems:"center",borderRadius:"50%",color:t?"success.contrastText":"primary.contrastText",bgcolor:t?"success.main":"primary.main",fontWeight:850,boxShadow:e=>`0 8px 24px ${(0,en.X4)(t?e.palette.success.main:e.palette.primary.main,.28)}`},children:t?(0,s.jsx)(tT.A,{fontSize:"small"}):e}),tH=({nodes:e,orderedStepIds:t=[],subagentNodeIds:r,selectedNodeId:l,flowName:n,flowNameError:c,onFlowNameChange:u,onSelectNode:p,onAddTask:f,onTry:m,isSaving:g=!1,hasAdvancedFeatures:x=!1,readyToTry:w=!0,needsAIConnection:b=!1,onSwitchAdvanced:y,models:j=[],modelsLoading:A=!1,aiAssistance:S="manual",selectedModelId:C,onChooseAssistance:M,onModelChange:$,onCheckPlausibility:N,currentFlowId:F,availableAgents:z=[],mcpConnectionsByNode:H,agentConnectionsByNode:P,onConnectMcpServer:W,onRemoveMcpServer:E,loadMcpServers:L,onConnectAgent:D,onRemoveAgent:O})=>{let{t:V}=(0,ev.s9)(),[B,U]=(0,o.useState)(""),q=(0,o.useMemo)(()=>{let s=new Map(t.map((e,t)=>[e,t]));return e.filter(e=>["process","subflow","signal"].includes(e.data.type)&&!r?.has(e.id)).sort((e,t)=>(s.get(e.id)??Number.MAX_SAFE_INTEGER)-(s.get(t.id)??Number.MAX_SAFE_INTEGER)||(e.position?.y??0)-(t.position?.y??0))},[e,t,r]),K=/^(?:NewFlow\d*|Untitled (?:assistant|agent)(?: \d+)?)$/i.test(n.trim())||n.trim().toLocaleLowerCase()===V("flows.page.untitled").trim().toLocaleLowerCase(),G=!!n.trim()&&!K&&!c,_=!!B.trim()&&!x&&"unasked"!==S&&("assisted"!==S||!!C),X=G&&q.length>0&&w&&!g,J="unasked"!==S||!A&&0===j.length||!M,Y=()=>{let e=B.trim();e&&(f(e),U(""))};return(0,s.jsx)(a.default,{"aria-label":V("flows.guided.aria"),sx:{flex:1,minHeight:0,overflowY:"auto",px:{xs:.5,sm:1.5,lg:3},py:{xs:1,sm:1.5,lg:2.5}},children:(0,s.jsxs)(a.default,{sx:{width:"100%",maxWidth:780,mx:"auto"},children:[(0,s.jsxs)(te.A,{spacing:.8,sx:{mb:2.5},children:[(0,s.jsx)(T.A,{icon:(0,s.jsx)(tn.A,{}),label:V("flows.guided.simple"),color:"primary",variant:"outlined",sx:{alignSelf:"flex-start"}}),(0,s.jsx)(i.A,{variant:"h4",children:V("flows.guided.recipe")}),(0,s.jsx)(i.A,{color:"text.secondary",children:V("flows.guided.intro")})]}),(0,s.jsxs)(te.A,{spacing:1.5,children:[j.length>0&&M&&(0,s.jsx)(I.A,{elevation:0,sx:{p:{xs:2,sm:2.5},border:1,borderColor:"unasked"===S?"primary.main":"divider",borderRadius:4},children:(0,s.jsxs)(te.A,{spacing:1.5,children:[(0,s.jsxs)(a.default,{children:[(0,s.jsx)(i.A,{variant:"h6",children:V("flows.guided.aiQuestion")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:V("flows.guided.aiHelp")})]}),"unasked"===S?(0,s.jsxs)(te.A,{direction:{xs:"column",sm:"row"},spacing:1,children:[(0,s.jsx)(d.A,{variant:"contained",startIcon:(0,s.jsx)(tn.A,{}),onClick:()=>M("assisted"),children:V("flows.guided.yesHelp")}),(0,s.jsx)(d.A,{variant:"outlined",onClick:()=>M("manual"),children:V("flows.guided.manual")})]}):(0,s.jsxs)(te.A,{direction:{xs:"column",sm:"row"},spacing:1.5,alignItems:{sm:"center"},children:[(0,s.jsx)(T.A,{color:"assisted"===S?"primary":"default",label:"assisted"===S?V("flows.guided.aiOn"):V("flows.guided.manualSetup")}),"assisted"===S&&$&&(0,s.jsxs)(tk.A,{size:"small",sx:{minWidth:260},children:[(0,s.jsx)(tM.A,{id:"guided-helper-model-label",children:V("flows.guided.aiHelper")}),(0,s.jsx)(tI.A,{labelId:"guided-helper-model-label",label:V("flows.guided.aiHelper"),value:C??"",onChange:e=>$(String(e.target.value)),children:j.map(e=>(0,s.jsx)(R.A,{value:e.id,children:e.displayName||e.name},e.id))})]}),(0,s.jsx)(d.A,{size:"small",onClick:()=>M("assisted"===S?"manual":"assisted"),children:"assisted"===S?V("flows.guided.turnOff"):V("flows.guided.turnOn")})]})]})}),J&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(I.A,{elevation:0,sx:{p:{xs:2,sm:2.5},border:1,borderColor:q.length>0?"success.main":"divider",borderRadius:4,bgcolor:"background.paper"},children:(0,s.jsxs)(te.A,{direction:"row",spacing:1.5,alignItems:"flex-start",children:[(0,s.jsx)(tz,{complete:q.length>0,children:"1"}),(0,s.jsxs)(a.default,{sx:{flex:1,minWidth:0},children:[(0,s.jsx)(i.A,{variant:"h6",children:q.length?V("flows.guided.addAnother"):V("flows.guided.goalQuestion")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:q.length?V("flows.guided.nextHelp"):V("flows.guided.goalHelp")}),x&&(0,s.jsx)(h.A,{severity:"info",action:(0,s.jsx)(d.A,{color:"inherit",size:"small",onClick:y,children:V("flows.guided.openExpert")}),sx:{mt:1.5},children:V("flows.guided.advancedWarning")}),(0,s.jsxs)(te.A,{spacing:1,sx:{mt:2},children:[(0,s.jsxs)(a.default,{sx:{px:1.5,py:1,borderRadius:3,color:"text.secondary",bgcolor:e=>(0,en.X4)(e.palette.primary.main,.055),border:1,borderColor:"divider"},children:[(0,s.jsx)(i.A,{variant:"caption",fontWeight:800,color:"primary.main",children:V("flows.guided.when").toLocaleUpperCase()}),(0,s.jsx)(i.A,{variant:"body2",fontWeight:700,children:V("flows.guided.someoneAsks")})]}),q.map((e,t)=>{var r,n,d;let c,u;return(0,s.jsxs)(o.Fragment,{children:[(0,s.jsx)(t$,{"aria-hidden":"true",sx:{alignSelf:"center",color:"text.disabled",fontSize:20}}),(0,s.jsxs)(I.A,{elevation:0,sx:{width:"100%",border:1,borderColor:l===e.id?"primary.main":"divider",borderRadius:3,overflow:"hidden",bgcolor:l===e.id?e=>(0,en.X4)(e.palette.primary.main,.1):"background.default",boxShadow:l===e.id?e=>`0 0 0 3px ${(0,en.X4)(e.palette.primary.main,.12)}`:"none"},children:[(0,s.jsx)(tc.A,{onClick:()=>p(e.id),sx:{display:"block",width:"100%",p:1.5,textAlign:"left"},children:(0,s.jsxs)(te.A,{direction:"row",spacing:1.25,alignItems:"flex-start",children:[(0,s.jsx)(a.default,{sx:{display:"grid",width:30,height:30,flexShrink:0,placeItems:"center",borderRadius:2,color:"primary.contrastText",bgcolor:"primary.main",fontWeight:850},children:t+1}),(0,s.jsxs)(a.default,{sx:{minWidth:0,flex:1},children:[(0,s.jsx)(i.A,{variant:"overline",color:"primary.main",children:(r=e.data.type,"subflow"===r?V("flows.guided.type.subflow"):"signal"===r?V("flows.guided.type.signal"):V("flows.guided.type.process"))}),(0,s.jsx)(i.A,{variant:"subtitle1",fontWeight:800,children:(n=e,d=V,!(u=n.data.label?.trim())||tF.has(u)?d("process"===n.data.type?"flows.guided.default.process":"subflow"===n.data.type?"flows.guided.default.subflow":"signal"===n.data.type?"flows.guided.default.signal":"flows.guided.default.step"):u)}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mt:.35,display:"-webkit-box",overflow:"hidden",WebkitBoxOrient:"vertical",WebkitLineClamp:2},children:(c=String(e.data.properties?.promptTemplate??"").trim())||(e.data.description?.trim()?e.data.description.trim():"subflow"===e.data.type?V("flows.guided.summary.subflow"):"signal"===e.data.type?V("flows.guided.summary.signal"):V("flows.guided.summary.process"))})]}),(0,s.jsx)(k.A,{color:"action",fontSize:"small"})]})}),"process"===e.data.type&&(0,s.jsxs)(te.A,{spacing:1,sx:{px:1.5,pb:1.5},children:[W&&E&&L&&(0,s.jsx)(tw,{processNodeId:e.id,connections:H?.get(e.id)??[],beginnerMode:!0,heading:V("flows.guided.usesApps"),onConnect:W,onRemove:E,loadServers:L}),F&&D&&O&&(0,s.jsx)(tA,{processNodeId:e.id,currentFlowId:F,flows:z,connections:P?.get(e.id)??[],onConnect:D,onRemove:O})]})]})]},e.id)}),(0,s.jsxs)(te.A,{direction:{xs:"column",sm:"row"},spacing:1,alignItems:"stretch",children:[(0,s.jsx)(v.A,{fullWidth:!0,multiline:!0,minRows:2,maxRows:5,label:q.length?V("flows.guided.nextLabel"):V("flows.guided.goalLabel"),placeholder:V("flows.guided.goalPlaceholder"),value:B,disabled:x,onChange:e=>U(e.target.value),onKeyDown:e=>{(e.ctrlKey||e.metaKey)&&"Enter"===e.key&&_&&(e.preventDefault(),Y())}}),(0,s.jsx)(d.A,{variant:"contained",startIcon:(0,s.jsx)(tu.A,{}),disabled:!_,onClick:Y,sx:{minWidth:{sm:150}},children:q.length?V("flows.guided.addStep"):V("flows.guided.createGoal")})]}),(0,s.jsx)(t$,{"aria-hidden":"true",sx:{alignSelf:"center",color:"text.disabled",fontSize:20}}),(0,s.jsxs)(a.default,{sx:{px:1.5,py:1,borderRadius:3,color:"text.secondary",bgcolor:e=>(0,en.X4)(e.palette.success.main,.055),border:1,borderColor:"divider"},children:[(0,s.jsx)(i.A,{variant:"caption",fontWeight:800,color:"success.main",children:V("flows.guided.then").toLocaleUpperCase()}),(0,s.jsx)(i.A,{variant:"body2",fontWeight:700,children:V("flows.guided.sendAnswer")})]})]})]})]})}),(0,s.jsx)(I.A,{elevation:0,sx:{p:{xs:2,sm:2.5},border:1,borderColor:G?"success.main":"divider",borderRadius:4,bgcolor:"background.paper"},children:(0,s.jsxs)(te.A,{direction:"row",spacing:1.5,alignItems:"flex-start",children:[(0,s.jsx)(tz,{complete:G,children:"2"}),(0,s.jsxs)(a.default,{sx:{flex:1,minWidth:0},children:[(0,s.jsx)(i.A,{variant:"h6",children:V("flows.guided.nameTitle")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mb:1.5},children:V("flows.guided.nameHelp")}),(0,s.jsx)(v.A,{fullWidth:!0,size:"small",label:V("flows.guided.name"),value:n,error:!!c,helperText:c??(G?V("flows.guided.looksGood"):V("flows.guided.nameHint")),onChange:e=>u(e.target.value),onFocus:e=>{K&&e.currentTarget.select()}})]})]})})]}),q.length>0&&(0,s.jsx)(I.A,{elevation:0,sx:{p:{xs:2,sm:2.5},border:1,borderColor:X?"primary.main":"divider",borderRadius:4,bgcolor:e=>(0,en.X4)(e.palette.primary.main,X?.075:.025)},children:(0,s.jsxs)(te.A,{direction:{xs:"column",sm:"row"},spacing:1.5,alignItems:{sm:"center"},children:[(0,s.jsx)(tz,{children:"3"}),(0,s.jsxs)(a.default,{sx:{flex:1},children:[(0,s.jsx)(i.A,{variant:"h6",children:V("flows.guided.tryTitle")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:V("flows.guided.tryHelp")}),b&&q.some(e=>"process"===e.data.type)&&(0,s.jsx)(h.A,{severity:"warning",sx:{mt:1},children:V("flows.guided.needsAi")})]}),m&&(0,s.jsxs)(te.A,{spacing:1,children:[N&&"assisted"===S&&(0,s.jsx)(d.A,{variant:"outlined",startIcon:(0,s.jsx)(tn.A,{}),disabled:0===q.length,onClick:N,children:V("flows.guided.checkAi")}),(0,s.jsx)(d.A,{size:"large",variant:"contained",startIcon:(0,s.jsx)(tN.A,{}),disabled:!X,onClick:m,children:g?V("flows.guided.saving"):V("flows.guided.tryAgent")})]})]})})]})]})})};var tR=r(6302),tP=r(58655),tW=r(61041);let tE=(0,y.A)((0,s.jsx)("path",{fillRule:"evenodd",d:"M20 3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2M9 17H6c-.55 0-1-.45-1-1s.45-1 1-1h3c.55 0 1 .45 1 1s-.45 1-1 1m0-4H6c-.55 0-1-.45-1-1s.45-1 1-1h3c.55 0 1 .45 1 1s-.45 1-1 1m0-4H6c-.55 0-1-.45-1-1s.45-1 1-1h3c.55 0 1 .45 1 1s-.45 1-1 1m9.7 2.12-3.17 3.17c-.39.39-1.03.39-1.42 0l-1.41-1.42a.996.996 0 0 1 0-1.41c.39-.39 1.02-.39 1.41 0l.71.71 2.47-2.47c.39-.39 1.02-.39 1.41 0l.01.01c.38.39.38 1.03-.01 1.41"}),"FactCheckRounded");var tL=r(30502),tD=r(28834);function tO(e){return JSON.parse(JSON.stringify(e))}function tV({open:e,flow:t,relatedFlows:r=[],nodeId:l,initialFocus:n="apps",modelId:c,models:u=[],onApply:p,onApplyRelatedFlows:f,onClose:w}){let{t:y,tp:j}=(0,ev.s9)(),[A,S]=(0,o.useState)("suggesting"),[C,k]=(0,o.useState)(null),[M,$]=(0,o.useState)(new Set),[z,H]=(0,o.useState)(null),[P,W]=(0,o.useState)(new Set),[E,L]=(0,o.useState)(null),[O,V]=(0,o.useState)(new Set),[B,U]=(0,o.useState)(null),[q,K]=(0,o.useState)(t),[G,_]=(0,o.useState)(c??""),[X,J]=(0,o.useState)(!1),[Y,Q]=(0,o.useState)(""),[Z,ee]=(0,o.useState)([]),[et,er]=(0,o.useState)(null),es=async e=>{S("checking"),er(null);try{let t=await D.g.checkPlausibility({flow:e,relatedFlows:r,modelId:G||c||void 0,intendedContext:"chat"});U(t),V(new Set),S("plausibility")}catch(e){er(e instanceof Error?e.message:y("flows.assistance.checkFailed")),S("plausibility")}},eo=async(e,t)=>{if(!l)return;let r=t||G||c||"";if(!r)return void S("agents");S("suggesting-agents"),er(null);try{let t=await D.g.suggestAgentsForStep({flow:e,nodeId:l,modelId:r,goal:e.description});H(t),W(new Set(t.suggestions.map(e=>e.flowId))),S("agents")}catch(e){er(e instanceof Error?e.message:y("flows.assistance.agentSuggestFailed")),S("agents")}};(0,o.useEffect)(()=>{if(!e)return;let s=!0;return(K(t),k(null),H(null),U(null),$(new Set),W(new Set),L(null),V(new Set),_(c??""),J(!1),Q(""),ee([]),er(null),l&&"review"!==n)?c?"agents"===n?(S("suggesting-agents"),D.g.suggestAgentsForStep({flow:t,nodeId:l,modelId:c,goal:t.description}).then(e=>{s&&(H(e),W(new Set(e.suggestions.map(e=>e.flowId))),S("agents"))}).catch(e=>{s&&(er(e instanceof Error?e.message:y("flows.assistance.agentSuggestFailed")),S("agents"))}),()=>{s=!1}):(S("suggesting"),D.g.suggestToolsForStep({flow:t,relatedFlows:r,nodeId:l,modelId:c,goal:t.description}).then(e=>{s&&(k(e),$(new Set(e.suggestions.map(e=>`${e.server}\u0000${e.tool}`))),S("tools"))}).catch(e=>{s&&(er(e instanceof Error?e.message:y("flows.assistance.suggestFailed")),S("tools"))}),()=>{s=!1}):(S("agents"===n?"agents":"tools"),()=>{s=!1}):(es(t),()=>{s=!1})},[e,l,c,n]);let el=(0,o.useMemo)(()=>C?.suggestions.filter(e=>M.has(`${e.server}\u0000${e.tool}`))??[],[M,C]),en=(0,o.useMemo)(()=>z?.suggestions.filter(e=>P.has(e.flowId))??[],[z,P]),ea=(0,o.useMemo)(()=>{if(!B)return 0;let e=new Set([t.id,...r.map(e=>e.id)]);return B.patches.filter(t=>e.has(t.flowId)).length},[t.id,B,r]),ei=(0,o.useMemo)(()=>{if(!B)return[];let e=new Set([t.id,...r.map(e=>e.id)]),s=!!(G||c||u.length>0);return B.issues.map((r,o)=>{var l;let n=r.flowId??t.id,a=(l={...r,flowId:n},B.patches.filter(e=>e.flowId===l.flowId&&e.nodeId===l.nodeId&&e.reason===l.message));return{key:`issue-${o}`,issue:r,flowId:n,patches:a,selectable:e.has(n)&&(a.length>0||s)}})},[G,t.id,c,u.length,B,r]),ed=(0,o.useMemo)(()=>ei.filter(e=>e.selectable),[ei]),ec=(0,o.useMemo)(()=>ei.filter(e=>O.has(e.key)),[ei,O]),eu=ec.some(e=>0===e.patches.length),ep=G||c||"",ef=ed.length>0&&ed.every(e=>O.has(e.key)),eh=async()=>{if(l&&G){S("suggesting"),er(null);try{let e=await D.g.suggestToolsForStep({flow:q,relatedFlows:r,nodeId:l,modelId:G,goal:q.description});k(e),$(new Set(e.suggestions.map(e=>`${e.server}\u0000${e.tool}`))),S("tools")}catch(e){er(e instanceof Error?e.message:y("flows.assistance.suggestFailed")),S("tools")}}},em=async()=>{l&&G&&await eo(q,G)},eg=async()=>{let e=Y.trim(),t=G||c||"";if(!l||!C||!t||!e)return;let s=[...Z.map(e=>e.message),e];S("suggesting"),er(null);try{let o=await D.g.suggestToolsForStep({flow:q,relatedFlows:r,nodeId:l,modelId:t,goal:q.description,feedback:s,previousSuggestion:C});k(o),$(new Set(o.suggestions.map(e=>`${e.server}\u0000${e.tool}`))),ee(t=>[...t,{message:e,response:o.assistantMessage}]),Q(""),S("tools")}catch(e){er(e instanceof Error?e.message:y("flows.assistance.suggestFailed")),S("tools")}},ex=async()=>{if(l&&C){S("suggesting"),er(null);try{let e=await D.g.applyToolsToStep({flow:q,nodeId:l,selections:el});K(e),L(C.proposedPrompt),p(e),await eo(e)}catch(e){er(e instanceof Error?e.message:y("flows.assistance.connectFailed")),S("tools")}}},ew=async e=>{if(!l)return;let t=G||c||"";if(!t){er(y("flows.assistance.needModel")),S("agents");return}S("improving"),er(null);try{let s=await D.g.improvePromptForStep({flow:e,relatedFlows:r,nodeId:l,modelId:t,...E?{draftPrompt:E}:{}}),o={...e,nodes:e.nodes.map(e=>e.id===l?{...e,data:{...e.data,properties:{...e.data.properties??{},promptTemplate:s.prompt}}}:e)};K(o),p(o),await es(o)}catch(e){er(e instanceof Error?e.message:y("flows.assistance.improvePromptFailed")),S("agents")}},eb=async()=>{if(l&&z){S("suggesting-agents"),er(null);try{let e=await D.g.applyAgentsToStep({flow:q,nodeId:l,selections:en});K(e),p(e),await ew(e)}catch(e){er(e instanceof Error?e.message:y("flows.assistance.connectAgentsFailed")),S("agents")}}},ey=async()=>{if(B&&0!==ec.length){S("fixing"),er(null);try{let e=ec.flatMap(e=>e.patches),t=function(e,t){let r=e.map(tO),s=new Map(r.map(e=>[e.id,e]));for(let e of t){let t=s.get(e.flowId)?.nodes.find(t=>t.id===e.nodeId);if(!t)continue;let r={...t.data.properties??{}};for(let[t,s]of Object.entries(e.set))r[t]=s;for(let t of e.remove)delete r[t];t.data={...t.data,properties:r}}return r}([q,...r],e),s=new Map;for(let e of ec){if(e.patches.length>0)continue;let t=s.get(e.flowId)??[];t.push(e),s.set(e.flowId,t)}if(s.size>0){if(!ep)throw Error(y("flows.assistance.needFixModel"));let e=await Promise.all([...s].map(async([e,r])=>{let s=t.find(t=>t.id===e);if(!s)throw Error(y("flows.assistance.fixFailed"));let o=await D.g.improveFlow(s,"Fix only the selected plausibility findings below. Preserve all other behavior, prompts, and graph structure unless a selected finding requires a change. Do not add capabilities or install tools.\n\nSELECTED FINDINGS:\n"+r.map(({issue:e})=>`- [${e.severity}/${e.code}] ${e.message}${e.nodeId?` (node: ${e.nodeId})`:""}`).join("\n"),ep,{allowInstall:!1,relatedFlows:t.filter(t=>t.id!==e)});if(!o.success)throw Error(o.error);return o.flow})),r=new Map(e.map(e=>[e.id,e]));t=t.map(e=>r.get(e.id)??e)}let o=t.find(e=>e.id===q.id);if(!o)throw Error(y("flows.assistance.fixFailed"));K(o),p(o),f?.(r.map(e=>t.find(t=>t.id===e.id)??e)),w()}catch(e){er(e instanceof Error?e.message:y("flows.assistance.fixFailed")),S("plausibility")}}},ej="suggesting"===A||"suggesting-agents"===A||"improving"===A||"checking"===A||"fixing"===A;return(0,s.jsxs)(m.A,{open:e,onClose:ej?void 0:w,fullWidth:!0,maxWidth:"md",children:[(0,s.jsxs)(g.A,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,s.jsx)(tn.A,{color:"primary"}),(0,s.jsx)(a.default,{sx:{flex:1,minWidth:0},children:"plausibility"===A||"checking"===A||"fixing"===A?y("flows.assistance.plausibilityTitle"):"agents"===A||"suggesting-agents"===A?y("flows.assistance.agentsTitle"):"improving"===A?y("flows.assistance.improvePromptTitle"):y("flows.assistance.toolsTitle")}),(0,s.jsxs)(a.default,{display:"flex",alignItems:"center",gap:.5,flexShrink:0,children:[(0,s.jsx)(tL.A,{}),(0,s.jsx)(tD.A,{variant:"icon"})]})]}),(0,s.jsxs)(x.A,{dividers:!0,children:[ej&&(0,s.jsxs)(te.A,{alignItems:"center",spacing:1.5,sx:{py:5},children:[(0,s.jsx)(N.default,{}),(0,s.jsx)(i.A,{color:"text.secondary",children:"suggesting"===A?y("flows.assistance.finding"):"suggesting-agents"===A?y("flows.assistance.findingAgents"):"improving"===A?y("flows.assistance.improvingPrompt"):"fixing"===A?y("flows.assistance.fixing"):y("flows.assistance.checking")})]}),et&&!ej&&(0,s.jsx)(h.A,{severity:"error",sx:{mb:2},children:et}),("tools"===A&&!C||"agents"===A&&!z)&&(0,s.jsx)(te.A,{spacing:2,children:0===u.length?(0,s.jsx)(h.A,{severity:"warning",children:y("flows.assistance.needModel")}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(h.A,{severity:"info",children:y("flows.assistance.chooseModel")}),(0,s.jsxs)(tk.A,{fullWidth:!0,size:"small",children:[(0,s.jsx)(tM.A,{id:"assistance-model-label",children:y("flows.assistance.aiHelper")}),(0,s.jsx)(tI.A,{labelId:"assistance-model-label",label:y("flows.assistance.aiHelper"),value:G,onChange:e=>_(String(e.target.value)),children:u.map(e=>(0,s.jsx)(R.A,{value:e.id,children:e.displayName||e.name},e.id))})]})]})}),"tools"===A&&C&&(0,s.jsxs)(te.A,{spacing:1.5,children:[(0,s.jsx)(h.A,{severity:"info",children:y("flows.assistance.approvalHelp")}),0===C.suggestions.length?(0,s.jsx)(h.A,{severity:"success",children:y("flows.assistance.noTool")}):C.suggestions.map(e=>{let t=`${e.server}\u0000${e.tool}`;return(0,s.jsx)(I.A,{variant:"outlined",sx:{p:1.25},children:(0,s.jsx)(F.A,{control:(0,s.jsx)(tR.A,{checked:M.has(t),onChange:e=>{$(r=>{let s=new Set(r);return e.target.checked?s.add(t):s.delete(t),s})}}),label:(0,s.jsxs)(a.default,{children:[(0,s.jsxs)(te.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,s.jsx)(T.A,{size:"small",label:e.server}),(0,s.jsx)(i.A,{fontWeight:800,children:e.tool})]}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:e.reason})]})})},t)}),(0,s.jsxs)(a.default,{children:[(0,s.jsx)(i.A,{variant:"subtitle2",children:y("flows.assistance.promptPreview")}),(0,s.jsx)(I.A,{variant:"outlined",sx:{p:1.25,mt:.5,whiteSpace:"pre-wrap",maxHeight:220,overflow:"auto"},children:(0,s.jsx)(i.A,{variant:"body2",component:"pre",sx:{m:0,fontFamily:"inherit",whiteSpace:"pre-wrap"},children:C.proposedPrompt})})]}),X&&(0,s.jsx)(I.A,{variant:"outlined",sx:{p:1.5},children:(0,s.jsxs)(te.A,{spacing:1.25,children:[(0,s.jsxs)(a.default,{children:[(0,s.jsx)(i.A,{variant:"subtitle2",children:y("flows.assistance.talkTitle")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:y("flows.assistance.talkHelp")})]}),Z.map((e,t)=>(0,s.jsxs)(te.A,{spacing:.75,children:[(0,s.jsxs)(a.default,{sx:{alignSelf:"flex-end",maxWidth:"85%",px:1.25,py:.75,bgcolor:"action.selected",borderRadius:2},children:[(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:y("flows.assistance.you")}),(0,s.jsx)(i.A,{variant:"body2",children:e.message})]}),e.response&&(0,s.jsxs)(a.default,{sx:{alignSelf:"flex-start",maxWidth:"85%",px:1.25,py:.75,bgcolor:"action.hover",borderRadius:2},children:[(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:y("flows.assistance.aiHelper")}),(0,s.jsx)(i.A,{variant:"body2",children:e.response})]})]},`${t}-${e.message}`)),(0,s.jsx)(v.A,{autoFocus:!0,fullWidth:!0,multiline:!0,minRows:2,label:y("flows.assistance.talkLabel"),placeholder:y("flows.assistance.talkPlaceholder"),value:Y,slotProps:{htmlInput:{maxLength:2e3}},onChange:e=>Q(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),eg())}}),(0,s.jsx)(te.A,{direction:"row",justifyContent:"flex-end",children:(0,s.jsx)(d.A,{variant:"contained",startIcon:(0,s.jsx)(tn.A,{}),disabled:!Y.trim(),onClick:()=>void eg(),children:y("flows.assistance.reconsider")})})]})})]}),"agents"===A&&z&&(0,s.jsxs)(te.A,{spacing:1.5,children:[(0,s.jsx)(h.A,{severity:"info",children:y("flows.assistance.agentApprovalHelp")}),0===z.suggestions.length?(0,s.jsx)(h.A,{severity:"success",children:y("flows.assistance.noAgent")}):z.suggestions.map(e=>(0,s.jsx)(I.A,{variant:"outlined",sx:{p:1.25},children:(0,s.jsx)(F.A,{control:(0,s.jsx)(tR.A,{checked:P.has(e.flowId),onChange:t=>{W(r=>{let s=new Set(r);return t.target.checked?s.add(e.flowId):s.delete(e.flowId),s})}}),label:(0,s.jsxs)(a.default,{children:[(0,s.jsxs)(te.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,s.jsx)(ti.A,{color:"primary",fontSize:"small"}),(0,s.jsx)(i.A,{fontWeight:800,children:e.flowName})]}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:e.reason})]})})},e.flowId))]}),"plausibility"===A&&B&&(0,s.jsxs)(te.A,{spacing:1.5,children:[(0,s.jsx)(te.A,{direction:"row",gap:1,flexWrap:"wrap",children:B.contexts.map(e=>(0,s.jsx)(T.A,{label:e.label},`${e.kind}-${e.sourceId??""}`))}),0===B.issues.length?(0,s.jsx)(h.A,{severity:"success",children:y("flows.assistance.plausible")}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:y("flows.assistance.selectionHelp")}),ed.length>1&&(0,s.jsx)(F.A,{sx:{alignSelf:"flex-start",ml:0},control:(0,s.jsx)(tR.A,{checked:ef,indeterminate:O.size>0&&!ef,onChange:e=>{V(e.target.checked?new Set(ed.map(e=>e.key)):new Set)}}),label:y("flows.assistance.selectAll")}),ei.map(e=>{let{issue:r}=e,o=B.repairedFlows.find(t=>t.id===e.flowId),l=`${o&&o.id!==t.id?`${o.name}: `:""}${(0,e6.z)(r,y)}`;return(0,s.jsx)(h.A,{severity:r.severity,action:(0,s.jsx)(tR.A,{size:"small",checked:O.has(e.key),disabled:!e.selectable,title:e.selectable?void 0:y("flows.assistance.cannotFix"),inputProps:{"aria-label":y("flows.assistance.selectIssue",{issue:l})},onChange:t=>{V(r=>{let s=new Set(r);return t.target.checked?s.add(e.key):s.delete(e.key),s})}}),sx:{"& .MuiAlert-action":{alignItems:"center",py:0}},children:l},e.key)})]}),eu&&!ep&&(0===u.length?(0,s.jsx)(h.A,{severity:"warning",children:y("flows.assistance.needFixModel")}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(h.A,{severity:"info",children:y("flows.assistance.chooseFixModel")}),(0,s.jsxs)(tk.A,{fullWidth:!0,size:"small",children:[(0,s.jsx)(tM.A,{id:"assistance-fix-model-label",children:y("flows.assistance.aiHelper")}),(0,s.jsx)(tI.A,{labelId:"assistance-fix-model-label",label:y("flows.assistance.aiHelper"),value:G,onChange:e=>_(String(e.target.value)),children:u.map(e=>(0,s.jsx)(R.A,{value:e.id,children:e.displayName||e.name},e.id))})]})]})),ea>0&&(0,s.jsx)(h.A,{severity:"info",children:j("flows.assistance.patch",ea)}),B.patches.length>ea&&(0,s.jsx)(h.A,{severity:"warning",children:j("flows.assistance.savedPatch",B.patches.length-ea)})]})]}),(0,s.jsxs)(b.A,{sx:{flexWrap:"wrap"},children:[(0,s.jsx)(d.A,{onClick:w,disabled:ej,children:y("flows.assistance.close")}),"improving"===A&&(0,s.jsx)(d.A,{variant:"contained",disabled:!0,startIcon:(0,s.jsx)(N.default,{size:16,color:"inherit"}),children:y("flows.inspector.improvingPrompt")}),"tools"===A&&!C&&u.length>0&&(0,s.jsx)(d.A,{variant:"contained",disabled:!G,onClick:()=>void eh(),children:y("flows.assistance.suggest")}),"agents"===A&&!z&&u.length>0&&(0,s.jsx)(d.A,{variant:"contained",disabled:!G,onClick:()=>void em(),children:y("flows.assistance.suggestAgents")}),"tools"===A&&C&&0===C.suggestions.length&&(0,s.jsx)(d.A,{startIcon:(0,s.jsx)(ti.A,{}),onClick:()=>void eo(q),children:y("flows.assistance.continueAgents")}),"tools"===A&&C&&(0,s.jsx)(d.A,{startIcon:(0,s.jsx)(tW.A,{}),"aria-expanded":X,onClick:()=>J(e=>!e),children:y("flows.assistance.talk")}),"tools"===A&&C&&C.suggestions.length>0&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(d.A,{onClick:()=>void eo(q),children:y("flows.assistance.skip")}),(0,s.jsx)(d.A,{variant:"contained",startIcon:(0,s.jsx)(tP.A,{}),disabled:0===el.length,onClick:()=>void ex(),children:j("flows.assistance.connect",el.length)})]}),"agents"===A&&z&&0===z.suggestions.length&&(0,s.jsx)(d.A,{startIcon:(0,s.jsx)(tE,{}),onClick:()=>void ew(q),children:y("flows.assistance.improveAndCheck")}),"agents"===A&&z&&z.suggestions.length>0&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(d.A,{onClick:()=>void ew(q),children:y("flows.assistance.skipAgents")}),(0,s.jsx)(d.A,{variant:"contained",startIcon:(0,s.jsx)(ti.A,{}),disabled:0===en.length,onClick:()=>void eb(),children:j("flows.assistance.connectAgents",en.length)})]}),"plausibility"===A&&B&&ed.length>0?(0,s.jsx)(d.A,{variant:"contained",startIcon:(0,s.jsx)(ta.A,{}),disabled:0===ec.length||eu&&!ep,onClick:()=>void ey(),children:j("flows.assistance.fix",ec.length)}):null]})]})}var tB=r(71031),tU=r(87097);function tq({currentLabel:e,nameIsCustom:t,defaultLabel:r,previousAutoLabel:s,nextAutoLabel:o}){return!0===t?e&&e.length>0?e:o:!e||0===e.length||e===r||void 0!==s&&s.length>0&&e===s?o:e}let tK=(0,W.h)("components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/hooks/useModelManagement.ts");var tG=r(38729);let t_=(0,W.h)("frontend/components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/hooks/useServerConnection");function tX(e,t){let r=e.replace(/\s+/g," ").trim();if(r.length<=t)return r;let s=r.slice(0,t),o=s.lastIndexOf(" ");return`${(o>.6*t?s.slice(0,o):s).trimEnd()}…`}let tJ=(0,W.h)("frontend/components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/hooks/useHandoffTools"),tY=({nodeData:e,setNodeData:t})=>{let{t:r}=(0,ev.s9)();return e?(0,s.jsxs)(a.default,{sx:{display:"flex",flexDirection:"column",height:"100%",pr:2},children:[(0,s.jsx)(i.A,{variant:"h6",gutterBottom:!0,children:r("flows.process.configTitle")}),(0,s.jsx)(v.A,{fullWidth:!0,label:r("flows.mcpNode.label"),value:e.label||"",onChange:e=>t(t=>({...t,label:e.target.value,properties:{...t?.properties,nameIsCustom:!0}})),margin:"normal"}),(0,s.jsx)(v.A,{fullWidth:!0,label:r("flows.process.description"),value:e.description||"",onChange:r=>t({...e,description:r.target.value}),margin:"normal",multiline:!0,rows:2,helperText:r("flows.process.descriptionHelp")})]}):null};var tQ=r(69198),tZ=r(82360),t0=r(40245);let t1=({isLoadingModels:e,loadError:t,models:r,selectedModelId:o,handleModelSelect:l,isModelBound:n,handleUnbindModel:c})=>{let{t:u}=(0,ev.s9)(),p=(0,tx.E)("models",r),f=e=>({key:e.id,content:(0,s.jsx)(tb.A,{model:e,selectable:!0,selected:o===e.id,onSelect:l})}),h=p.items.map(f),m=p.groups?p.groups.map(e=>({...e,items:e.items.map(f)})):null;return(0,s.jsxs)(a.default,{sx:{mt:4},children:[(0,s.jsx)(i.A,{variant:"subtitle1",gutterBottom:!0,children:u("flows.process.bindModel")}),(0,s.jsx)(a.default,{role:"radiogroup","aria-label":u("flows.process.bindModelAria"),children:(0,s.jsx)(t0.A,{isLoading:e,error:t,loadingMessage:u("flows.process.loadingModels"),emptyMessage:u("flows.process.noModels"),searchable:!0,searchPlaceholder:u("flows.process.searchModels"),searchTerm:p.searchTerm,onSearchChange:p.setSearchTerm,columns:{xs:12,sm:6},items:h,groups:m,collapsedKeys:p.collapsedKeys,onToggleGroup:p.toggleGroup})}),!e&&!t&&r.length>0&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(tQ.A,{children:u(o?"flows.process.modelSelected":"flows.process.modelSelect")}),n&&(0,s.jsx)(a.default,{sx:{mt:2,display:"flex",justifyContent:"flex-end"},children:(0,s.jsx)(d.A,{startIcon:(0,s.jsx)(tZ.A,{}),onClick:c,color:"primary",variant:"outlined",size:"small",children:u("flows.process.unbindModel")})})]})]})};var t2=r(59959),t5=r(99084),t4=r(83063),t3=r(99637),t9=r(78972),t6=r(83550),t8=r(16675),t7=r(47863),re=r(78487);let rt=(0,W.h)("frontend/components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/ServerTools"),rr=({isLoadingServers:e,connectedMcpNodes:t,availableServers:r,onConnectMcpServer:l,serverToolsMap:n,serverStatuses:c,isLoadingTools:f,handleSelectToolServer:h,handleInsertToolBinding:m,selectedToolServerNodeId:g,selectedNodeId:x,isLoadingSelectedServerTools:w,promptBuilderRef:b,handleRetryServer:y,handleRestartServer:j})=>{let{t:S,tp:C}=(0,ev.s9)(),k=g??t[0]?.nodeId??null,[M,$]=(0,o.useState)({}),[T,F]=(0,o.useState)(!1),z=(r??[]).filter(e=>!t.some(t=>t.serverName===e.name)),H=!!l&&z.length>0,R=(0,tx.E)("mcp",z),P=e=>({key:e.name,content:(0,s.jsx)(tg.A,{name:e.name,status:e.status||"disconnected",path:e.rootPath||"",enabled:!e.disabled,transport:e.transport||"stdio",pickerMode:!0,onClick:()=>{var t;return t=e.name,void(F(!1),l?.(t))}})}),W=R.items.map(P),E=R.groups?R.groups.map(e=>({...e,items:e.items.map(P)})):null,L=(0,s.jsx)(tm.A,{open:T,onClose:()=>F(!1),title:S("flows.serverTools.connectTitle"),description:S("flows.serverTools.connectDescription"),emptyMessage:S("flows.serverTools.noneToConnect"),searchable:!0,searchPlaceholder:S("flows.serverTools.searchServers"),searchTerm:R.searchTerm,onSearchChange:R.setSearchTerm,columns:{xs:12,sm:6},items:W,groups:E,collapsedKeys:R.collapsedKeys,onToggleGroup:R.toggleGroup}),[D,O]=(0,o.useState)(""),[V,B]=(0,o.useState)({}),U=(e,t,r)=>{if(e!==k){rt.debug("Node tab not selected, selecting node first",{selectedNodeId:e,serverName:t,toolName:r}),G(e);return}t&&r?(rt.debug("Inserting tool binding",{serverName:t,toolName:r}),m(t,r)):rt.warn("Cannot insert tool binding, server or tool name is undefined",{serverName:t,toolName:r})},q=e=>{try{let r=t.find(t=>t.nodeId===e);if(!r)return rt.warn(`Could not find connected MCP node with ID ${e}`),[];let s=r.enabledTools||[];return rt.debug(`Enabled tools for node ${e}: ${JSON.stringify(s)}`),Array.isArray(s)?s:[]}catch(t){return rt.error(`Error getting enabled tools for node ${e}:`,t),[]}},K=(e,t,r)=>{try{if(!r||!Array.isArray(r))return rt.warn(`Tools array is not available or not an array for server ${t}`),[];let s=q(e),o=r;if(s.length>0?o=r.filter(e=>e&&e.name&&s.includes(e.name)):(rt.debug(`No tools explicitly enabled for node ${e}, showing none.`),o=[]),D.trim()){let e=D.toLowerCase().trim();o=o.filter(t=>t.name&&t.name.toLowerCase().includes(e)||t.description&&t.description.toLowerCase().includes(e)||t.inputSchema&&JSON.stringify(t.inputSchema).toLowerCase().includes(e))}return o}catch(s){return rt.error(`Error filtering tools for node ${e} (server ${t}):`,s),r||[]}},G=e=>{h(e)},_=async(e,t)=>{t.stopPropagation(),rt.debug(`Retry button clicked for server: ${e}`),$(t=>({...t,[e]:!0}));try{y&&await y(e)}finally{setTimeout(()=>{$(t=>({...t,[e]:!1}))},500)}},X=async(e,t)=>{t.stopPropagation(),rt.debug(`Restart button clicked for server: ${e}`),$(t=>({...t,[e]:!0}));try{j&&await j(e)}finally{setTimeout(()=>{$(t=>({...t,[e]:!1}))},500)}};(0,o.useEffect)(()=>{t.length>0&&!g&&h(t[0].nodeId)},[t,g,h]);let J=t.find(e=>e.nodeId===k),Y=J?.serverName;return(0,s.jsxs)(a.default,{sx:{mt:4,display:"flex",flexDirection:"column",height:"100%"},children:[(0,s.jsx)(i.A,{variant:"subtitle1",gutterBottom:!0,children:S("flows.serverTools.title")}),e?(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,s.jsx)(N.default,{size:20}),(0,s.jsx)(i.A,{color:"text.secondary",children:S("flows.serverTools.loadingNodes")})]}):0===t.length?(0,s.jsxs)(a.default,{sx:{p:2,border:"1px dashed rgba(0, 0, 0, 0.12)",borderRadius:1},children:[(0,s.jsx)(i.A,{color:"text.secondary",align:"center",children:S("flows.serverTools.noneConnected")}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",align:"center",display:"block",sx:{mt:1},children:H?S("flows.serverTools.pickHelp"):S("flows.serverTools.connectHelp")}),H&&(0,s.jsx)(a.default,{sx:{display:"flex",justifyContent:"center",mt:2},children:(0,s.jsx)(d.A,{variant:"contained",size:"small",startIcon:(0,s.jsx)(A.A,{}),onClick:()=>F(!0),children:S("flows.serverTools.connect")})}),L]}):(0,s.jsxs)(a.default,{sx:{display:"flex",flexDirection:"column",flexGrow:1,height:"calc(100% - 40px)"},children:[(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",mb:2,borderBottom:1,borderColor:"divider"},children:[(0,s.jsx)(tt.A,{value:k||t[0]?.nodeId||"",onChange:(e,t)=>G(t),variant:"scrollable",scrollButtons:"auto",sx:{flexGrow:1},children:t.map(e=>{if(!e||!e.nodeId||!e.serverName)return rt.warn("Skipping invalid MCP node in tabs:",e),null;let t=e.serverName,r=e.nodeId,o=e.status;M[t],f[t];let l=n[t]||[],d=q(r);return K(r,t,l).length,(0,s.jsx)(tr.A,{value:r,label:(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center"},children:[(0,s.jsx)(i.A,{variant:"body2",sx:{color:"connected"===o?"success.main":"error"===o?"error.main":"text.secondary"},children:t}),d.length>0&&(0,s.jsx)(t2.A,{badgeContent:d.length,color:"primary",sx:{ml:1}})]}),sx:{textTransform:"none",minHeight:"48px",opacity:"connected"!==o?.7:1}},r)})}),H&&(0,s.jsx)(p.A,{title:S("flows.serverTools.connectAnother"),children:(0,s.jsx)(u.A,{size:"small",onClick:()=>F(!0),sx:{ml:1},children:(0,s.jsx)(A.A,{fontSize:"small"})})}),L]}),J&&Y&&(0,s.jsxs)(a.default,{sx:{display:"flex",justifyContent:"flex-end",mb:2},children:[(0,s.jsx)(p.A,{title:S("flows.serverTools.retry",{server:Y}),children:(0,s.jsx)("span",{children:(0,s.jsx)(u.A,{size:"small",onClick:e=>_(Y,e),disabled:M[Y]||f[Y],children:M[Y]?(0,s.jsx)(N.default,{size:16}):(0,s.jsx)(t3.A,{fontSize:"small"})})})}),"connected"===J.status&&j&&(0,s.jsx)(p.A,{title:S("flows.serverTools.restart",{server:Y}),children:(0,s.jsx)("span",{children:(0,s.jsx)(u.A,{size:"small",onClick:e=>X(Y,e),disabled:M[Y],sx:{ml:1},children:(0,s.jsx)(t9.A,{fontSize:"small"})})})})]}),(0,s.jsx)(v.A,{placeholder:S("flows.serverTools.searchTools"),variant:"outlined",size:"small",fullWidth:!0,value:D,onChange:e=>O(e.target.value),sx:{mb:2},InputProps:{startAdornment:(0,s.jsx)(ea.A,{position:"start",children:(0,s.jsx)(t6.A,{fontSize:"small"})})}}),(0,s.jsx)(I.A,{variant:"outlined",sx:{flexGrow:1,overflow:"auto",p:0,height:"calc(100% - 140px)"},children:J&&Y&&(()=>{let e=J.nodeId,t=J.serverName;if("connected"!==J.status)return(0,s.jsx)(a.default,{sx:{p:2,textAlign:"center"},children:(0,s.jsx)(i.A,{color:"text.secondary",children:S("flows.serverTools.notConnectedTools",{server:t})})},e);if(f[t])return(0,s.jsx)(a.default,{sx:{display:"flex",justifyContent:"center",p:2},children:(0,s.jsx)(N.default,{size:24})},e);let r=n[t]||[],o=K(e,t,r);if(0===o.length){let t=q(e).length;return(0,s.jsx)(a.default,{sx:{p:2,textAlign:"center"},children:(0,s.jsx)(i.A,{color:"text.secondary",children:D.trim()?S("flows.serverTools.noMatch",{search:D}):0===t?S("flows.serverTools.noneEnabled"):S("flows.serverTools.noneAvailable")})},e)}return(0,s.jsx)(eT.A,{disablePadding:!0,children:o.map(r=>{var o;let l,n=(l=r.name,`${e}::${l}`),d=!!V[n],c=r.description||S("flows.agentTools.noDescription"),f=(e=>{let t=Object.keys(e?.properties??{}).length;if(0===t)return S("flows.serverTools.parameter.none");let r=Array.isArray(e?.required)?e.required.length:0,s=r>0?C("flows.serverTools.required",r):"";return C("flows.serverTools.parameter",t,{required:s})})(r.inputSchema);return(0,s.jsx)(t5.A,{variant:"outlined",role:"button",tabIndex:0,"aria-label":S("flows.serverTools.addTool",{tool:r.name,server:t}),onClick:()=>U(e,t,r.name),onKeyDown:s=>{s.target===s.currentTarget&&("Enter"===s.key||" "===s.key)&&(s.preventDefault(),U(e,t,r.name))},sx:{mb:1,mx:1,mt:1,cursor:"pointer","&:hover":{boxShadow:1,bgcolor:"action.hover"},"&:focus-visible":{outline:"2px solid",outlineColor:"primary.main",outlineOffset:1}},children:(0,s.jsxs)(t4.A,{sx:{p:1.25,"&:last-child":{pb:1.25}},children:[(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"flex-start",gap:1},children:[(0,s.jsxs)(a.default,{sx:{flexGrow:1,minWidth:0},children:[(0,s.jsxs)(i.A,{variant:"subtitle2",component:"div",sx:{display:"flex",alignItems:"center"},children:[(0,s.jsx)(t8.A,{fontSize:"small",sx:{mr:1,color:"primary.main",flexShrink:0}}),(0,s.jsx)(a.default,{component:"span",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.name})]}),(0,s.jsx)(p.A,{title:c,describeChild:!0,placement:"top-start",children:(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",tabIndex:0,sx:{mt:.5,display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:2,overflow:"hidden"},children:c})}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:.5},children:f})]}),(0,s.jsx)(p.A,{title:S(d?"flows.serverTools.collapse":"flows.serverTools.expand",{tool:r.name}),children:(0,s.jsx)(u.A,{size:"small","aria-label":S(d?"flows.serverTools.collapse":"flows.serverTools.expand",{tool:r.name}),"aria-expanded":d,"aria-controls":`${n}-details`,onClick:e=>{e.stopPropagation(),B(e=>({...e,[n]:!e[n]}))},children:d?(0,s.jsx)(re.A,{}):(0,s.jsx)(t7.A,{})})})]}),d&&(0,s.jsxs)(a.default,{id:`${n}-details`,sx:{mt:1,pt:1,borderTop:1,borderColor:"divider"},onClick:e=>e.stopPropagation(),children:[(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{whiteSpace:"pre-wrap"},children:c}),r.inputSchema&&((o=r.inputSchema)&&o.properties?(0,s.jsxs)(a.default,{sx:{mt:1},children:[(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",sx:{fontWeight:"medium"},children:S("flows.agentTools.parameters")}),(0,s.jsx)(a.default,{sx:{pl:1,mt:.5},children:Object.entries(o.properties).map(([e,t])=>(0,s.jsxs)(a.default,{sx:{mb:.5},children:[(0,s.jsxs)(i.A,{variant:"caption",component:"span",sx:{fontWeight:"medium"},children:[e,o.required?.includes(e)&&(0,s.jsx)(i.A,{variant:"caption",component:"span",color:"error.main",children:" *"}),": "]}),(0,s.jsx)(i.A,{variant:"caption",component:"span",color:"text.secondary",children:t.description||t.type||S("flows.agentTools.noDescription")})]},e))})]}):null)]})]})},r.name)})},e)})()})]})]})},rs=(0,W.h)("frontend/components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/ServerResources"),ro=({primary:e,secondary:t,chip:r,tooltip:o,onClick:l})=>(0,s.jsx)(t5.A,{variant:"outlined",onClick:l,title:o,sx:{mb:1,mx:1,mt:1,cursor:"pointer","&:hover":{boxShadow:1,bgcolor:"action.hover"}},children:(0,s.jsx)(t4.A,{sx:{p:2,"&:last-child":{pb:2}},children:(0,s.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:[(0,s.jsxs)(a.default,{sx:{width:"100%"},children:[(0,s.jsxs)(i.A,{variant:"subtitle2",component:"div",sx:{display:"flex",alignItems:"center"},children:[(0,s.jsx)(eu.A,{fontSize:"small",sx:{mr:1,color:"primary.main"}}),e]}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mt:.5,wordBreak:"break-all"},children:t})]}),r&&(0,s.jsx)(T.A,{size:"small",label:r,sx:{ml:1,flexShrink:0}})]})})}),rl=({connectedMcpNodes:e,handleInsertResourceBinding:t,promptBuilderRef:r})=>{let{t:l}=(0,ev.s9)(),[n,d]=(0,o.useState)(null),[c,u]=(0,o.useState)([]),[p,f]=(0,o.useState)([]),[m,g]=(0,o.useState)(!1),[x,w]=(0,o.useState)(),[b,y]=(0,o.useState)(""),j=e.find(e=>e.nodeId===n),A=j?.serverName;(0,o.useEffect)(()=>{e.length>0&&!n&&d(e[0].nodeId)},[e,n]);let S=(0,o.useCallback)(async e=>{g(!0),w(void 0);try{let t=await O.S.listServerResources(e);u(t.resources||[]),f(t.resourceTemplates||[]),w(t.error)}catch(t){rs.warn(`Failed to load resources for ${e}`,t),w(t instanceof Error?t.message:l("flows.serverResources.loadFailed"))}finally{g(!1)}},[l]);(0,o.useEffect)(()=>{A?S(A):(u([]),f([]))},[A,S]);let C=e=>e.toLowerCase().includes(b.toLowerCase().trim()),k=b.trim()?c.filter(e=>C(e.name||"")||C(e.uri)||C(e.description||"")):c,M=b.trim()?p.filter(e=>C(e.name||"")||C(e.uriTemplate)||C(e.description||"")):p,$=e=>{A&&e&&t(A,e)};return(0,s.jsxs)(a.default,{sx:{mt:4,display:"flex",flexDirection:"column",height:"100%"},children:[(0,s.jsx)(i.A,{variant:"subtitle1",gutterBottom:!0,children:l("flows.serverResources.title")}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",sx:{mb:1},children:l("flows.serverResources.help")}),0===e.length?(0,s.jsxs)(a.default,{sx:{p:2,border:"1px dashed rgba(0, 0, 0, 0.12)",borderRadius:1},children:[(0,s.jsx)(i.A,{color:"text.secondary",align:"center",children:l("flows.serverTools.noneConnected")}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",align:"center",display:"block",sx:{mt:1},children:l("flows.serverResources.connectHelp")})]}):(0,s.jsxs)(a.default,{sx:{display:"flex",flexDirection:"column",flexGrow:1,height:"calc(100% - 40px)"},children:[(0,s.jsx)(tt.A,{value:n||e[0]?.nodeId||"",onChange:(e,t)=>d(t),variant:"scrollable",scrollButtons:"auto",sx:{mb:2,borderBottom:1,borderColor:"divider"},children:e.map(e=>(0,s.jsx)(tr.A,{value:e.nodeId,label:(0,s.jsx)(i.A,{variant:"body2",sx:{color:"connected"===e.status?"success.main":"error"===e.status?"error.main":"text.secondary"},children:e.serverName}),sx:{textTransform:"none",minHeight:48,opacity:"connected"!==e.status?.7:1}},e.nodeId))}),(0,s.jsx)(v.A,{placeholder:l("flows.serverResources.search"),variant:"outlined",size:"small",fullWidth:!0,value:b,onChange:e=>y(e.target.value),sx:{mb:2},InputProps:{startAdornment:(0,s.jsx)(ea.A,{position:"start",children:(0,s.jsx)(t6.A,{fontSize:"small"})})}}),x&&(0,s.jsx)(h.A,{severity:"warning",sx:{mb:2},children:x}),(0,s.jsx)(I.A,{variant:"outlined",sx:{flexGrow:1,overflow:"auto",p:0,height:"calc(100% - 140px)"},children:j&&"connected"!==j.status?(0,s.jsx)(a.default,{sx:{p:2,textAlign:"center"},children:(0,s.jsx)(i.A,{color:"text.secondary",children:l("flows.serverResources.notConnected",{server:A||""})})}):m?(0,s.jsx)(a.default,{sx:{display:"flex",justifyContent:"center",p:2},children:(0,s.jsx)(N.default,{size:24})}):0===k.length&&0===M.length?(0,s.jsx)(a.default,{sx:{p:2,textAlign:"center"},children:(0,s.jsx)(i.A,{color:"text.secondary",children:b.trim()?l("flows.serverResources.noMatch",{search:b}):l("flows.serverResources.none")})}):(0,s.jsxs)(eT.A,{disablePadding:!0,children:[k.map(e=>(0,s.jsx)(ro,{primary:e.name||e.uri,secondary:e.description||e.uri,chip:e.mimeType,tooltip:l("flows.serverResources.add",{resource:e.name||e.uri}),onClick:()=>$(e.uri)},e.uri)),M.map(e=>(0,s.jsx)(ro,{primary:e.name||e.uriTemplate,secondary:e.description||e.uriTemplate,chip:"template",tooltip:l("flows.serverResources.addTemplate",{template:e.uriTemplate}),onClick:()=>$(e.uriTemplate)},e.uriTemplate))]})})]})]})},rn=(0,y.A)((0,s.jsx)("path",{d:"M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7zm-6 .67 2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2z"}),"SaveAlt"),ra=({wiredResources:e,promptBuilderRef:t})=>{let{t:r}=(0,ev.s9)();return 0===e.length?null:(0,s.jsxs)(a.default,{sx:{mb:3},children:[(0,s.jsx)(i.A,{variant:"subtitle1",gutterBottom:!0,children:r("flows.wired.title")}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",sx:{mb:1,display:"block"},children:r("flows.wired.help")}),(0,s.jsx)(eT.A,{disablePadding:!0,children:e.map(e=>(0,s.jsx)(t5.A,{variant:"outlined",sx:{mb:1,mt:1},children:(0,s.jsx)(t4.A,{sx:{p:2,"&:last-child":{pb:2}},children:(0,s.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:[(0,s.jsxs)(a.default,{sx:{width:"100%"},children:[(0,s.jsxs)(i.A,{variant:"subtitle2",component:"div",sx:{display:"flex",alignItems:"center"},children:[(0,s.jsx)(eu.A,{fontSize:"small",sx:{mr:1,color:"primary.main"}}),e.label]}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mt:.5,wordBreak:"break-all"},children:"run"===e.scope?e.runName?r("flows.wired.temporaryNamed",{name:e.runName}):r("flows.wired.temporaryUnnamed"):r("flows.wired.mcp",{uri:e.uri?` ${e.uri}`:"",server:e.boundServer?r("flows.wired.onServer",{server:e.boundServer}):""})})]}),(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",flexShrink:0,ml:1,gap:.5},children:["run"===e.scope&&e.runName&&(0,s.jsx)(p.A,{title:r("flows.wired.insert",{reference:`\${res:${e.runName}}`}),children:(0,s.jsx)(T.A,{size:"small",icon:(0,s.jsx)(rn,{}),label:`\${res:${e.runName}}`,onClick:()=>{var r;(r=e.runName)&&t.current&&t.current.insertText(`\${res:${r}}`)},clickable:!0,sx:{maxWidth:220}})}),(0,s.jsx)(T.A,{size:"small",color:"produce"===e.role?"secondary":"default",label:"produce"===e.role?r("flows.wired.produce"):r("flows.wired.consume")})]})]})})},`${e.role}-${e.id}`))})]})},ri=(0,W.h)("frontend/components/flow/FlowBuilder/Modals/ProcessNodePropertiesModal/ServerTools/AgentTools"),rd=({handoffTools:e,isLoadingHandoffTools:t,handleInsertToolBinding:r,promptBuilderRef:l})=>{let{t:n,formatList:d}=(0,ev.s9)(),[c,u]=(0,o.useState)(""),f=e.filter(e=>{if(!c.trim())return!0;let t=c.toLowerCase().trim();return e.name&&e.name.toLowerCase().includes(t)||e.description&&e.description.toLowerCase().includes(t)});return(0,s.jsxs)(a.default,{sx:{mt:4,display:"flex",flexDirection:"column",height:"100%"},children:[(0,s.jsx)(i.A,{variant:"subtitle1",gutterBottom:!0,children:n("flows.agentTools.title")}),t?(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,s.jsx)(N.default,{size:20}),(0,s.jsx)(i.A,{color:"text.secondary",children:n("flows.agentTools.loading")})]}):0===e.length?(0,s.jsxs)(a.default,{sx:{p:2,border:"1px dashed rgba(0, 0, 0, 0.12)",borderRadius:1},children:[(0,s.jsx)(i.A,{color:"text.secondary",align:"center",children:n("flows.agentTools.none")}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",align:"center",display:"block",sx:{mt:1},children:n("flows.agentTools.connectHelp")})]}):(0,s.jsxs)(a.default,{sx:{display:"flex",flexDirection:"column",flexGrow:1,height:"calc(100% - 40px)"},children:[(0,s.jsx)(v.A,{placeholder:n("flows.agentTools.search"),variant:"outlined",size:"small",fullWidth:!0,value:c,onChange:e=>u(e.target.value),sx:{mb:2},InputProps:{startAdornment:(0,s.jsx)(ea.A,{position:"start",children:(0,s.jsx)(t6.A,{fontSize:"small"})})}}),(0,s.jsx)(I.A,{variant:"outlined",sx:{flexGrow:1,overflow:"auto",p:0,height:"calc(100% - 56px)"},children:0===f.length?(0,s.jsx)(a.default,{sx:{p:2,textAlign:"center"},children:(0,s.jsx)(i.A,{color:"text.secondary",children:c.trim()?n("flows.agentTools.noMatch",{search:c}):n("flows.agentTools.none")})}):(0,s.jsx)(eT.A,{disablePadding:!0,children:f.map(e=>{var t;return(0,s.jsxs)(t5.A,{variant:"outlined",onClick:()=>{e.name?(ri.debug("Inserting handoff tool binding",{toolType:"handoff",toolName:e.name}),r("handoff",e.name)):ri.warn("Cannot insert handoff tool binding, tool name is undefined",{toolName:e.name})},sx:{mb:1,mx:1,mt:1,cursor:"pointer",position:"relative",bgcolor:"rgba(0, 0, 0, 0.04)","&:hover":{boxShadow:1,bgcolor:"rgba(0, 0, 0, 0.08)"}},children:[(0,s.jsx)(t4.A,{sx:{p:2,"&:last-child":{pb:2}},children:(0,s.jsx)(a.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:(0,s.jsxs)(a.default,{sx:{width:"100%"},children:[(0,s.jsxs)(i.A,{variant:"subtitle2",component:"div",sx:{display:"flex",alignItems:"center"},children:[(0,s.jsx)(t8.A,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),e.name]}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:e.description||n("flows.agentTools.noDescription")}),e.inputSchema&&((t=e.inputSchema)&&t.properties&&0!==Object.keys(t.properties).length?(0,s.jsxs)(a.default,{sx:{mt:1},children:[(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",sx:{fontWeight:"medium"},children:n("flows.agentTools.parameters")}),(0,s.jsx)(a.default,{sx:{pl:1,mt:.5},children:Object.entries(t.properties).map(([e,r])=>(0,s.jsxs)(a.default,{sx:{mb:.5},children:[(0,s.jsxs)(i.A,{variant:"caption",component:"span",sx:{fontWeight:"medium"},children:[e,t.required?.includes(e)&&(0,s.jsx)(i.A,{variant:"caption",component:"span",color:"error.main",children:" *"}),": "]}),(0,s.jsx)(i.A,{variant:"caption",component:"span",color:"text.secondary",children:r.description||r.type||n("flows.agentTools.noDescription")}),r.enum&&(0,s.jsx)(a.default,{sx:{pl:2,mt:.5},children:(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:n("flows.agentTools.options",{options:d(r.enum)})})})]},e))})]}):(0,s.jsx)(a.default,{sx:{mt:1},children:(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",sx:{fontStyle:"italic"},children:n("flows.agentTools.noParameters")})}))]})})}),(0,s.jsx)(p.A,{title:n("flows.agentTools.insert",{tool:e.name}),children:(0,s.jsx)(a.default,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0}})})]},e.name)})})})]})]})};var rc=r(71473);let ru=(0,W.h)("frontend/components/Flow/FlowManager/FlowBuilder/Modals/ProcessNodePropertiesModal/PromptTemplateEditor"),rp=(0,o.forwardRef)((e,t)=>{let{t:r}=(0,ev.s9)(),{promptTemplate:l,handlePromptChange:n,excludeModelPrompt:c,excludeStartNodePrompt:u,excludeSystemPrompt:p,nodeData:f,flowId:m,suggestions:g}=e,[x,w]=(0,o.useState)(""),[v,b]=(0,o.useState)(!1),[y,j]=(0,o.useState)(null),A=(0,o.useRef)(null);(0,o.useImperativeHandle)(t,()=>({insertText:e=>{A.current&&A.current.insertText(e)},getMode:()=>A.current?A.current.getMode():"raw"}));let S=async()=>{if(ru.debug("fetchRenderedPrompt called with:",{flowId:m,nodeId:f?.id}),!m||!f||!f.id)return void j(r("flows.promptPreview.missingIds"));b(!0),j(null);try{let e=await fetch("/api/flow/prompt-renderer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({flowId:m,nodeId:f.id,options:{renderMode:"rendered",includeConversationHistory:!1,excludeModelPrompt:c,excludeStartNodePrompt:u,excludeSystemPrompt:p}})}),t=await e.json();if(!e.ok)throw Error(t.error||r("flows.promptPreview.failed"));ru.debug("Rendered prompt received",{promptLength:t.prompt?.length}),w(`${t.prompt}
|
|
2
|
+
|
|
3
|
+
[${r("flows.promptPreview.userMessages")}]`)}catch(e){ru.error("Error fetching rendered prompt",e),j(e instanceof Error?e.message:r("flows.promptPreview.unknownError"))}finally{b(!1)}};return(0,o.useEffect)(()=>{A.current&&"preview"===A.current.getMode()&&S()},[l,c,u,p,m,f?.id]),(0,s.jsx)(a.default,{sx:{display:"flex",flexDirection:"column",height:"100%"},children:(0,s.jsx)(rc.A,{ref:A,value:l,onChange:n,label:"",height:"100%",onModeChange:e=>{"preview"===e&&S()},customPreviewRenderer:()=>v?(0,s.jsx)(a.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,s.jsx)(N.default,{size:40})}):y?(0,s.jsxs)(a.default,{sx:{display:"flex",flexDirection:"column",p:2},children:[(0,s.jsx)(h.A,{severity:"error",sx:{mb:2},action:(0,s.jsx)(d.A,{color:"inherit",size:"small",onClick:S,children:r("flows.promptPreview.retry")}),children:y}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mb:2,textAlign:"center"},children:m?r("flows.promptPreview.checkIds"):r("flows.promptPreview.unsaved")})]}):(0,s.jsxs)(a.default,{sx:{p:2},children:[(0,s.jsx)(i.A,{variant:"subtitle1",gutterBottom:!0,sx:{fontWeight:"medium"},children:r("flows.promptPreview.title")}),(0,s.jsx)(I.A,{elevation:0,sx:{p:2,overflow:"auto",bgcolor:"rgba(0, 0, 0, 0.02)",border:"1px solid rgba(0, 0, 0, 0.1)",borderRadius:1},children:(0,s.jsx)(a.default,{component:"pre",sx:{whiteSpace:"pre-wrap",wordBreak:"break-word",fontFamily:"monospace",fontSize:"0.875rem",m:0},children:x||r("flows.promptPreview.empty")})})]}),suggestions:g})})});rp.displayName="PromptTemplateEditor";let rf=(0,y.A)((0,s.jsx)("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9m-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8z"}),"History"),rh=(0,y.A)((0,s.jsx)("path",{d:"M4 9h16v2H4zm0 4h10v2H4z"}),"ShortText"),rm=(0,y.A)((0,s.jsx)("path",{d:"M3 10h11v2H3zm0-2h11V6H3zm0 8h7v-2H3zm15.01-3.13.71-.71c.39-.39 1.02-.39 1.41 0l.71.71c.39.39.39 1.02 0 1.41l-.71.71zm-.71.71-5.3 5.3V21h2.12l5.3-5.3z"}),"EditNote"),rg=(0,y.A)((0,s.jsx)("path",{d:"M15 4v7H5.17L4 12.17V4zm1-2H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1m5 4h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1"}),"ForumOutlined"),rx=(0,y.A)((0,s.jsx)("path",{d:"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m0 14H6l-2 2V4h16z"}),"ChatBubbleOutline"),rw=({selected:e,icon:t,title:r,description:o,onClick:l})=>(0,s.jsxs)(a.default,{role:"radio","aria-checked":e,tabIndex:0,onClick:l,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),l())},sx:{flex:1,minWidth:180,position:"relative",p:2,borderRadius:2,border:2,borderColor:e?"primary.main":"divider",bgcolor:e?"action.selected":"background.paper",cursor:"pointer",transition:"border-color 120ms, background-color 120ms","&:hover":{borderColor:e?"primary.main":"text.disabled"},outline:"none","&:focus-visible":{boxShadow:e=>`0 0 0 3px ${e.palette.primary.light}`}},children:[e&&(0,s.jsx)(eE.A,{color:"primary",fontSize:"small",sx:{position:"absolute",top:8,right:8}}),(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:.5,color:e?"primary.main":"text.secondary"},children:[t,(0,s.jsx)(i.A,{variant:"subtitle1",sx:{fontWeight:600,color:"text.primary"},children:r})]}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:o})]}),rv=({excludeModelPrompt:e,setExcludeModelPrompt:t,excludeStartNodePrompt:r,setExcludeStartNodePrompt:o,excludeSystemPrompt:l,setExcludeSystemPrompt:n,inputMode:d,setInputMode:c,isolatedPrompt:u,setIsolatedPrompt:p,allowCallerPrompt:f,setAllowCallerPrompt:h,outputMode:m,setOutputMode:g,isModelBound:x,models:w,nodeData:b})=>{let{t:y}=(0,ev.s9)();return(0,s.jsxs)(a.default,{sx:{display:"flex",flexDirection:"column"},children:[(0,s.jsxs)(a.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",mb:2},children:[(0,s.jsx)(F.A,{control:(0,s.jsx)(z.A,{checked:e,onChange:e=>t(e.target.checked),color:"primary",size:"small"}),label:y("flows.process.excludeModel")}),(0,s.jsx)(F.A,{control:(0,s.jsx)(z.A,{checked:r,onChange:e=>o(e.target.checked),color:"primary",size:"small"}),label:y("flows.process.excludeStart")}),(0,s.jsx)(F.A,{control:(0,s.jsx)(z.A,{checked:l,onChange:e=>n(e.target.checked),color:"primary",size:"small"}),label:y("flows.process.excludeSystem")})]}),(0,s.jsxs)(a.default,{sx:{mb:2,p:2,bgcolor:"rgba(0, 0, 0, 0.03)",borderRadius:1,fontSize:"0.85rem"},children:[(0,s.jsx)(i.A,{variant:"caption",sx:{display:"block",mb:1,fontWeight:"bold"},children:y("flows.process.renderOrder")}),(0,s.jsxs)(a.default,{sx:{display:"flex",flexDirection:"column",gap:.5},children:[!r&&(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center"},children:[(0,s.jsxs)(i.A,{variant:"caption",sx:{color:"primary.main",fontWeight:"medium"},children:["1. ",y("flows.process.startPrompt")]}),(0,s.jsx)(i.A,{variant:"caption",sx:{ml:1,color:"text.secondary"},children:y("flows.process.fromStart")})]}),!e&&x&&(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center"},children:[(0,s.jsxs)(i.A,{variant:"caption",sx:{color:"secondary.main",fontWeight:"medium"},children:[r?"1.":"2."," ",y("flows.process.modelPrompt")]}),(0,s.jsx)(i.A,{variant:"caption",sx:{ml:1,color:"text.secondary"},children:y("flows.process.fromModel",{model:(()=>{let e=b.properties?.boundModel;if(!e)return y("flows.process.none");let t=w.find(t=>t.id===e);return t?t.displayName||t.name:b.properties?.modelName||y("flows.process.none")})()})})]}),(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center"},children:[(0,s.jsxs)(i.A,{variant:"caption",sx:{fontWeight:"medium"},children:[r||e||!x?r&&(e||!x)?"1.":"2.":"3."," ",y("flows.process.nodePrompt")]}),(0,s.jsx)(i.A,{variant:"caption",sx:{ml:1,color:"text.secondary"},children:y("flows.process.fromTask")})]}),(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center"},children:[(0,s.jsxs)(i.A,{variant:"caption",sx:{fontWeight:"medium"},children:[r||e||!x?r&&(e||!x)?"2.":"3.":"4."," ","isolated"===d?y("flows.subflow.isolatedPrompt"):"latest-message"===d?y("flows.subflow.latest"):y("flows.process.history")]}),(0,s.jsx)(i.A,{variant:"caption",sx:{ml:1,color:"text.secondary"},children:"isolated"===d?y("flows.process.isolatedDetail"):"latest-message"===d?y("flows.process.latestDetail"):y("flows.process.historyDetail")})]})]})]}),(0,s.jsxs)(a.default,{sx:{mb:2},children:[(0,s.jsx)(i.A,{variant:"subtitle2",sx:{mb:1},children:y("flows.process.receiveTitle")}),(0,s.jsxs)(a.default,{role:"radiogroup","aria-label":y("flows.process.inputAria"),sx:{display:"flex",gap:1.5,flexWrap:"wrap"},children:[(0,s.jsx)(rw,{selected:"full-history"===d,onClick:()=>c("full-history"),icon:(0,s.jsx)(rf,{fontSize:"small"}),title:y("flows.subflow.fullHistory"),description:y("flows.process.fullInputHelp")}),(0,s.jsx)(rw,{selected:"latest-message"===d,onClick:()=>c("latest-message"),icon:(0,s.jsx)(rh,{fontSize:"small"}),title:y("flows.subflow.latest"),description:y("flows.process.latestInputHelp")}),(0,s.jsx)(rw,{selected:"isolated"===d,onClick:()=>c("isolated"),icon:(0,s.jsx)(rm,{fontSize:"small"}),title:y("flows.subflow.isolated"),description:y("flows.process.isolatedInputHelp")})]}),"isolated"===d&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(F.A,{sx:{mt:1,display:"block"},control:(0,s.jsx)(tR.A,{checked:f,onChange:e=>h(e.target.checked)}),label:y("flows.subflow.allowCallerPrompt")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{ml:4,mt:-.5},children:y("flows.process.callerPromptHelp")}),(0,s.jsx)(v.A,{fullWidth:!0,label:f?y("flows.subflow.defaultPrompt"):y("flows.subflow.isolatedPrompt"),value:u,onChange:e=>p(e.target.value),margin:"normal",multiline:!0,rows:2,helperText:f?y("flows.process.defaultUserHelp"):y("flows.process.isolatedUserHelp")})]})]}),(0,s.jsxs)(a.default,{sx:{mb:1},children:[(0,s.jsx)(i.A,{variant:"subtitle2",sx:{mb:1},children:y("flows.process.outputTitle")}),(0,s.jsxs)(a.default,{role:"radiogroup","aria-label":y("flows.process.outputAria"),sx:{display:"flex",gap:1.5,flexWrap:"wrap"},children:[(0,s.jsx)(rw,{selected:"full-conversation"===m,onClick:()=>g("full-conversation"),icon:(0,s.jsx)(rg,{fontSize:"small"}),title:y("flows.subflow.fullHistory"),description:y("flows.process.fullOutputHelp")}),(0,s.jsx)(rw,{selected:"latest-message"===m,onClick:()=>g("latest-message"),icon:(0,s.jsx)(rx,{fontSize:"small"}),title:y("flows.subflow.latest"),description:y("flows.process.latestOutputHelp")})]})]})]})},rb=({nodeData:e,handlePropertyChange:t,properties:r})=>{let{t:o}=(0,ev.s9)();return(0,s.jsx)(s.Fragment,{children:r.length>0&&(0,s.jsxs)(a.default,{sx:{mt:3},children:[(0,s.jsx)(i.A,{variant:"subtitle1",gutterBottom:!0,children:o("flows.nodeProperties.title")}),r.map(r=>(r=>{if(!e)return null;let o=e.properties?.[r.key]??"";switch(r.type){case"text":return(0,s.jsx)(v.A,{fullWidth:!0,label:r.label,multiline:r.multiline,rows:r.multiline?4:1,value:o,onChange:e=>t(r.key,e.target.value),margin:"normal",helperText:r.helperText},r.key);case"number":return(0,s.jsx)(v.A,{fullWidth:!0,type:"number",label:r.label,value:o,inputProps:{min:r.min,max:r.max,step:r.step},onChange:e=>{let s=e.target.value;t(r.key,""===s?void 0:Number(s))},margin:"normal",helperText:r.helperText},r.key);case"select":return(0,s.jsxs)(tk.A,{fullWidth:!0,margin:"normal",children:[(0,s.jsx)(tM.A,{children:r.label}),(0,s.jsx)(tI.A,{value:o||"",label:r.label,onChange:e=>t(r.key,e.target.value),children:r.options?.map(e=>(0,s.jsx)(R.A,{value:e,children:e},e))})]},r.key);case"boolean":return(0,s.jsx)(F.A,{control:(0,s.jsx)(z.A,{checked:o||!1,onChange:e=>t(r.key,e.target.checked)}),label:r.label,sx:{my:1}},r.key);default:return null}})(r))]})})},ry=({value:e,onChange:t,onInsertRef:r})=>{let{t:o}=(0,ev.s9)(),l=e.captureVariable.trim(),n=e.captureKvKey.trim(),c=e.captureResource.trim(),u=""===l||eV(l),p=""===n||e_(n);return(0,s.jsxs)(a.default,{children:[(0,s.jsx)(i.A,{variant:"subtitle2",sx:{mb:.5},children:o("flows.capture.title")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mb:2},children:o("flows.capture.help")}),(0,s.jsxs)(te.A,{direction:"row",spacing:1,alignItems:"flex-start",sx:{mb:2},children:[(0,s.jsx)(v.A,{fullWidth:!0,size:"small",label:o("flows.capture.variable"),value:e.captureVariable,onChange:e=>t({captureVariable:e.target.value}),error:!u,helperText:u?o("flows.capture.variableHelp"):o("flows.capture.invalidName")}),r&&(0,s.jsx)(d.A,{variant:"outlined",size:"small",sx:{mt:.5,whiteSpace:"nowrap",textTransform:"none"},disabled:!l||!u,onClick:()=>r(`\${var:${l}}`),children:o("flows.capture.insert",{token:"${var:NAME}"})})]}),(0,s.jsxs)(te.A,{direction:"row",spacing:1,alignItems:"flex-start",sx:{mb:2},children:[(0,s.jsx)(v.A,{fullWidth:!0,size:"small",label:o("flows.capture.resource"),value:e.captureResource,onChange:e=>t({captureResource:e.target.value}),helperText:o("flows.capture.resourceHelp")}),r&&(0,s.jsx)(d.A,{variant:"outlined",size:"small",sx:{mt:.5,whiteSpace:"nowrap",textTransform:"none"},disabled:!c,onClick:()=>r(`\${res:${c}}`),children:o("flows.capture.insert",{token:"${res:NAME}"})})]}),(0,s.jsxs)(te.A,{direction:"row",spacing:1,alignItems:"flex-start",children:[(0,s.jsx)(v.A,{select:!0,size:"small",label:o("flows.capture.scope"),sx:{width:130,flexShrink:0},value:e.captureKvScope,onChange:e=>t({captureKvScope:e.target.value}),children:eU.map(e=>(0,s.jsx)(R.A,{value:e,children:"folder"===e?o("flows.capture.scope.folder"):"flow"===e?o("flows.capture.scope.flow"):o("flows.capture.scope.global")},e))}),(0,s.jsx)(v.A,{fullWidth:!0,size:"small",label:o("flows.capture.kv"),value:e.captureKvKey,onChange:e=>t({captureKvKey:e.target.value}),error:!p,helperText:p?o("flows.capture.kvHelp"):o("flows.capture.invalidName")}),r&&(0,s.jsx)(d.A,{variant:"outlined",size:"small",sx:{mt:.5,whiteSpace:"nowrap",textTransform:"none"},disabled:!n||!p,onClick:()=>r(`\${kv:${n}}`),children:o("flows.capture.insert",{token:"${kv:NAME}"})})]})]})},rj=(0,W.h)("frontend/components/Flow/FlowManager/FlowBuilder/Modals/ProcessNodePropertiesModal"),rA=["basic","model","io","task","advanced"],rS="flujo.processNode.taskToolsPaneWidth",rC=(e,t=0)=>Math.min(Math.max(e,260),Math.min(640,t>0?Math.max(260,t-360-12):640)),rk=()=>{try{let e=Number(window.localStorage.getItem(rS));return Number.isFinite(e)&&e>0?rC(e):340}catch{return 340}},rM=({open:e,node:t,onClose:r,onSave:l,flowEdges:c=[],flowNodes:u=[],flowId:p,onConnectMcpServer:f,authoringMode:h="advanced",mode:g="edit"})=>{rj.debug("ProcessNodePropertiesModal rendered with:",{node:t,flowId:p});let{t:w}=(0,ev.s9)(),v=(0,n.A)(),y=(0,$.A)(v.breakpoints.down("md"),{noSsr:!0}),j={basic:w("flows.process.basic"),model:w("flows.process.model"),io:w("flows.process.io"),task:w("flows.process.task"),advanced:w("flows.process.advanced")},{nodeData:A,setNodeData:S,handlePropertyChange:C}=(e=>{let[t,r]=(0,o.useState)(null);(0,o.useEffect)(()=>{e&&r({id:e.id,...e.data,properties:{...e.data.properties}})},[e]);let s=(0,o.useCallback)((e,t)=>{r(r=>r?{...r,properties:{...r.properties,[e]:t}}:null)},[]);return{nodeData:t,setNodeData:r,handlePropertyChange:s}})(t),[k,M]=(0,o.useState)(""),[I,T]=(0,o.useState)(!1),[N,H]=(0,o.useState)(!1),[R,W]=(0,o.useState)(!1),[E,L]=(0,o.useState)(!1),[D,B]=(0,o.useState)("full-history"),[U,q]=(0,o.useState)(""),[K,G]=(0,o.useState)(!0),[_,X]=(0,o.useState)("full-conversation"),[J,Y]=(0,o.useState)(!1),[Q,Z]=(0,o.useState)(""),[ee,et]=(0,o.useState)(""),[eo,el]=(0,o.useState)("folder"),[en,ea]=(0,o.useState)(""),[ei,ed]=(0,o.useState)("server"),[ec,eu]=(0,o.useState)("basic"),[ep,ef]=(0,o.useState)(rk),[eh,em]=(0,o.useState)(!1),eg="advanced"===h?rA:rA.filter(e=>["basic","model","task"].includes(e)),ex=(0,o.useRef)(null),ew=(0,o.useRef)(null),eb=(0,o.useRef)(null),ey=(0,o.useRef)(null),ej=(0,o.useRef)(null),eA=(0,o.useRef)(null),eS=(0,o.useRef)(null),eC=(0,o.useRef)(ep),ek=(0,o.useRef)({pointerX:0,width:ep}),eM={basic:ew,model:eb,io:ey,task:ej,advanced:eA},eI=(0,o.useRef)(!1);(0,o.useEffect)(()=>{"guided"===h&&("io"===ec||"advanced"===ec)&&eu("basic"),"guided"===h&&"server"!==ei&&ed("server")},[ec,ei,h]),(0,o.useEffect)(()=>{eC.current=ep;try{window.localStorage.setItem(rS,String(ep))}catch{}},[ep]),(0,o.useEffect)(()=>{let e=()=>{let e=eS.current?.getBoundingClientRect().width??0;e>=632&&ef(t=>rC(t,e))};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[e]),(0,o.useEffect)(()=>{if(!eh)return;let e=e=>{if(!Number.isFinite(e.clientX))return;let t=eS.current?.getBoundingClientRect().width??0;ef(rC(ek.current.width+e.clientX-ek.current.pointerX,t))},t=()=>em(!1);return window.addEventListener("pointermove",e),window.addEventListener("pointerup",t),window.addEventListener("pointercancel",t),document.body.style.cursor="col-resize",document.body.style.userSelect="none",()=>{window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",t),window.removeEventListener("pointercancel",t),document.body.style.cursor="",document.body.style.userSelect=""}},[eh]);let{models:e$,isLoadingModels:eT,loadError:eN,handleModelSelect:eF,handleUnbindModel:ez}=((e,t,r,s,l)=>{let{t:n}=(0,ev.s9)();tK.debug("useModelManagement: Entering hook");let[a,i]=(0,o.useState)([]),[d,c]=(0,o.useState)(!1),[u,p]=(0,o.useState)(null);(0,o.useEffect)(()=>{tK.debug("useModelManagement useEffect: Checking if modal is open",{open:e}),e&&f()},[e]),(0,o.useEffect)(()=>{if(0===a.length)return;let e=t?.properties?.boundModel;if(!e)return;let s=a.find(t=>t.id===e);s&&s.name&&t?.properties?.modelName!==s.name&&r(e=>e&&e.properties?.modelName!==s.name?{...e,properties:{...e.properties,modelName:s.name}}:e)},[a,t?.properties?.boundModel,t?.properties?.modelName,r]);let f=async()=>{tK.debug("loadModels: Entering method"),c(!0),p(null);try{let e=await V.N.loadModels();i(e)}catch(e){tK.warn("loadModels: Failed to load models:",e),p(n("flows.process.loadModelsFailed"))}c(!1)},h=(0,o.useCallback)(e=>{tK.debug("handleModelSelect: Entering method",{modelId:e});let t=a.find(t=>t.id===e);t&&(r(r=>{if(!r)return null;let s=a.find(e=>e.id===r.properties?.boundModel),o=tq({currentLabel:r.label,nameIsCustom:r.properties?.nameIsCustom,defaultLabel:"Process Node",previousAutoLabel:s?s.displayName||s.name:void 0,nextAutoLabel:t.displayName||t.name});return{...r,label:o,properties:{...r.properties,boundModel:e,modelName:t.name}}}),l(!0))},[a,r,s,l]);return{models:a,isLoadingModels:d,loadError:u,handleModelSelect:h,handleUnbindModel:(0,o.useCallback)(()=>{tK.debug("handleUnbindModel: Entering method"),r(e=>{if(!e)return null;let{boundModel:t,modelName:r,...s}=e.properties;return{...e,properties:{...s,promptTemplate:s.promptTemplate||""}}}),l(!1)},[r,l])}})(e,A,S,M,T),{connectedMcpNodes:eH,allServers:eR,isLoadingServers:eP,selectedToolServerNodeId:eW,serverToolsMap:eE,serverStatuses:eL,isLoadingTools:eD,handleSelectToolServer:eO,isLoadingSelectedServerTools:eV,handleRetryServer:eB,handleRestartServer:eU}=((e,t,r,s)=>{let l=(0,tG.v)(),n=l.servers||[],a=l.isLoading||!1,[i,d]=(0,o.useState)({}),[c,u]=(0,o.useState)({}),[p,f]=(0,o.useState)({}),[h,m]=(0,o.useState)(null),[g,x]=(0,o.useState)(!1),w=(0,o.useMemo)(()=>{let e;return t?(e=t.id,[...new Set(r.filter(t=>t.source===e&&t.data?.edgeType==="mcp"||t.target===e&&t.data?.edgeType==="mcp").map(t=>t.source===e?t.target:t.source))]):[]},[t,r]),v=(0,o.useMemo)(()=>{if(!t||0===w.length)return[];if(!s||!Array.isArray(s))return t_.warn("flowNodes is not available or not an array when filtering connected servers"),[];try{let e=[],t=new Set;return w.forEach(r=>{if(t.has(r))return;let o=s.find(e=>e&&e.id===r);if(!o||!o.data||!o.data.properties)return void t_.warn(`Could not find valid MCP node data for ID ${r}`);let l=o.data.properties.boundServer;if(!l)return void t_.warn(`MCP node ${r} is not bound to any server.`);let a=n.find(e=>e.name===l),i=a?.status||"unknown",d=o.data.properties.enabledTools||[],c=o.data.properties.enabledResources;e.push({nodeId:r,serverName:l,status:i,enabledTools:Array.isArray(d)?d:[],enabledResources:c}),t.add(r)}),t_.debug("Generated connectedMcpNodes:",JSON.stringify(e)),e}catch(e){return t_.error("Error preparing connected MCP nodes:",e),[]}},[t,w,n,s]);(0,o.useEffect)(()=>{if(v&&v.length>0){let e={};v.forEach(t=>{let r=n.find(e=>e.name===t.serverName);e[t.serverName]=r?.status||t.status||"unknown"}),d(e)}},[v,n]),(0,o.useEffect)(()=>{if(e&&v.length>0){let e=Array.from(new Set(v.map(e=>e.serverName)));(async()=>{let t={},r={...c},s=e.filter(e=>{let t=n.find(t=>t.name===e);return t?.status==="connected"&&!c[e]&&!p[e]});0!==s.length&&(s.forEach(e=>{t[e]=!0}),f(e=>({...e,...t})),await Promise.all(s.map(async e=>{try{t_.debug(`Loading tools for server: ${e}`);let t=await O.S.listServerTools(e);if(t.error)t_.warn(`Error loading tools for ${e}:`,t.error),r[e]=[];else{let s=t.tools||[];t_.debug(`Loaded ${s.length} tools for ${e}`),r[e]=s}}catch(t){t_.warn(`Failed to load tools for server ${e}:`,t),r[e]=[]}finally{f(t=>({...t,[e]:!1}))}})),u(r))})()}},[e,v,n]);let b=(0,o.useRef)(c);(0,o.useEffect)(()=>{b.current=c},[c]);let y=(0,o.useCallback)(e=>{t_.debug(`Selected MCP Node ID: ${e}`),m(e);let t=v.find(t=>t.nodeId===e),r=t?.serverName;!r||b.current[r]||p[r]?x(p[r||""]||!1):(t_.debug(`Tools not loaded for server ${r}, loading now.`),x(!0),f(e=>({...e,[r]:!0})),O.S.listServerTools(r).then(e=>{let t=e.tools||[];e.error?t_.warn(`Error loading tools for ${r}:`,e.error):t_.debug(`Loaded ${t.length} tools for ${r}`),u(e=>({...e,[r]:t}))}).catch(e=>{t_.warn(`Failed to load tools for server ${r}:`,e),u(e=>({...e,[r]:[]}))}).finally(()=>{x(!1),f(e=>({...e,[r]:!1}))}))},[v,p]),j=(0,o.useRef)(l);return(0,o.useEffect)(()=>{j.current=l},[l]),{connectedMcpNodes:v,allServers:n,isLoadingServers:a,selectedToolServerNodeId:h,serverToolsMap:c,serverStatuses:i,isLoadingTools:p,handleSelectToolServer:y,isLoadingSelectedServerTools:g,handleRetryServer:(0,o.useCallback)(async e=>{t_.debug(`Retrying server: ${e}`),f(t=>({...t,[e]:!0}));try{await j.current.retryServer(e);let t=await O.S.listServerTools(e);if(t.error)return t_.warn(`Error loading tools for ${e} after retry:`,t.error),!1;{let r=t.tools||[];return t_.debug(`Loaded ${r.length} tools for ${e} after retry`),u(t=>({...t,[e]:r})),!0}}catch(t){return t_.warn(`Failed to retry or load tools for server ${e}:`,t),!1}finally{f(t=>({...t,[e]:!1}))}},[]),handleRestartServer:(0,o.useCallback)(async e=>{t_.debug(`Restarting server: ${e}`),f(t=>({...t,[e]:!0}));try{await O.S.restartServer(e),await new Promise(e=>setTimeout(e,1e3));let t=await O.S.listServerTools(e);if(t.error)return t_.warn(`Error loading tools for ${e} after restart:`,t.error),!1;{let r=t.tools||[];return t_.debug(`Loaded ${r.length} tools for ${e} after restart`),u(t=>({...t,[e]:r})),!0}}catch(t){return t_.warn(`Failed to restart or load tools for server ${e}:`,t),!1}finally{f(t=>({...t,[e]:!1}))}},[])}})(e,t,c,u),[eG,e_]=(0,o.useState)([]);(0,o.useEffect)(()=>{let t=!1,r=[...new Set(eH.filter(e=>"connected"===e.status).map(e=>e.serverName))];return e&&0!==r.length?(Promise.all(r.map(async e=>{try{let t=await O.S.listServerResources(e),r=eH.filter(t=>t.serverName===e),s=e=>r.some(t=>{let r=t.enabledResources;return void 0===r||"all"===r||r.includes(e)});return[...(t.resources??[]).filter(e=>s(e.uri)).map(t=>(0,tU.Ub)({kind:"resource",server:e,name:t.uri},t.name||t.uri,t.description||`${e} \xb7 ${t.uri}`)),...(t.resourceTemplates??[]).filter(e=>s(e.uriTemplate)).map(t=>(0,tU.Ub)({kind:"resource",server:e,name:t.uriTemplate},t.name||t.uriTemplate,t.description||`${e} \xb7 ${t.uriTemplate}`))]}catch(t){return rj.warn(`Failed to load @ resource suggestions for ${e}`,t),[]}})).then(e=>{t||e_(e.flat())}),()=>{t=!0}):(e_([]),()=>{t=!0})},[e,eH]);let eX=o.useMemo(()=>[...eH.flatMap(e=>{let t=new Set(e.enabledTools??[]);return(eE[e.serverName]??[]).filter(e=>e?.name&&t.has(e.name)).map(t=>(0,tU.Ub)({kind:"tool",server:e.serverName,name:t.name},t.name,t.description||e.serverName))}),...eG],[eH,eG,eE]),eJ=o.useMemo(()=>{if(!t)return[];let e=[];for(let r of c){let s,o;if(r.data?.edgeType!=="resource"||(r.target===t.id?(s=r.source,o="consume"):r.source===t.id&&(s=r.target,o="produce"),!s||!o))continue;let l=u.find(e=>e.id===s);if(!l||"resource"!==l.type)continue;let n=l.data?.properties??{};e.push({id:s,role:o,label:n.name||n.runName||n.uri||s,scope:n.scope,runName:n.runName,uri:n.uri,boundServer:n.boundServer})}return e},[t,c,u]),eY=((e,t,r,s)=>{let[l,n]=(0,o.useState)([]),[a,i]=(0,o.useState)(!1),d=(0,o.useMemo)(()=>t?function(e,t){let r=[];for(let s of t)!("string"==typeof s.data?.edgeType&&(s.data.edgeType.includes("mcp")||"resource"===s.data.edgeType))&&(s.source===e?r.push(s.target):s.target===e&&s.data?.bidirectional&&r.push(s.source));return[...new Set(r)]}(t.id,r):[],[t,r]);return(0,o.useEffect)(()=>{if(e&&t){i(!0);try{let e=d.map(e=>s.find(t=>t.id===e)).filter(e=>!!e),t=(0,er.E9)(e.map(e=>({id:e.id,label:e.data.label,type:e.type||e.data.type}))),r=e.map(e=>({name:t.get(e.id)||`handoff_to_${e.id}`,description:function(e){if(e.userDescription&&e.userDescription.trim())return tX(e.userDescription,1500);let t=`Hand off execution to ${e.label} (${e.type}).`,r=[];!function e(t,r,s){let o=" ".repeat(r);if(t.userDescription&&t.userDescription.trim())return void s.push(`${o}${tX(t.userDescription,200)}`);if("subflow"===t.type){if(t.subflowMissing)return void s.push(`${o}Runs a subflow (referenced flow not found).`);if(t.subflowDetailsUnavailable){let e=t.subflowName?` "${t.subflowName}"`:"";s.push(`${o}Runs a subflow${e} (contents summarised when the flow runs).`);return}if(s.push(`${o}Runs the subflow "${t.subflowName??"unknown"}", which contains:`),t.depthCapReached)return void s.push(`${o} (nested subflows omitted — recursion depth limit reached)`);let l=t.children??[];if(0===l.length)return void s.push(`${o} (no process or subflow steps)`);for(let t of l.slice(0,10))s.push(`${o} - ${t.label}:`),e(t,r+2,s);return void(l.length>10&&s.push(`${o} - …and ${l.length-10} more step(s)`))}if(t.modelName&&s.push(`${o}Model: ${t.modelName}`),t.promptSummary&&s.push(`${o}Role: ${tX(t.promptSummary,200)}`),t.servers&&t.servers.length>0)for(let e of t.servers)if(e.connected&&e.tools&&e.tools.length>0){let t=e.tools.slice(0,10),r=e.tools.length-t.length,l=r>0?`, +${r} more`:"";s.push(`${o}Tools (${e.name}): ${t.join(", ")}${l}`)}else s.push(`${o}Tools (${e.name}): server not connected`)}(e,0,r);let s=r.join("\n").trim(),o=s?`${t}
|
|
4
|
+
${s}`:t;if(o.length<=1500)return o;let l=1500-t.length-2;return l<=0?t:`${t}
|
|
5
|
+
${tX(s,l)}`}(function(e){let t=e.type||e.data.type||"unknown",r=e.data.label||"Unknown Node",s=e.data.description,o=e.data.properties||{},l={label:r,type:t,userDescription:s};if(s&&s.trim())return l;if("subflow"===t)return l.subflowDetailsUnavailable=!0,l;"string"==typeof o.boundModel&&o.boundModel&&(l.modelName=o.boundModel),"string"==typeof o.promptTemplate&&o.promptTemplate.trim()&&(l.promptSummary=o.promptTemplate);let n=Array.isArray(o.mcpNodes)?o.mcpNodes:[],a=[],i=new Set;for(let e of n){let t=e?.properties?.boundServer;if(!t||i.has(t))continue;i.add(t);let r=Array.isArray(e?.properties?.enabledTools)?e.properties.enabledTools:[];a.push({name:t,connected:!0,tools:r})}return a.length>0&&(l.servers=a),l}(e)),inputSchema:{type:"object",properties:{},required:[]}}));n(r),tJ.debug("Generated handoff tools",{toolsCount:r.length})}catch(e){tJ.error("Error generating handoff tools",e),n([])}finally{i(!1)}}else n([])},[e,t,d,r,s]),{handoffTools:l,isLoadingHandoffTools:a}})(e,t,c,u),eQ=eY?.handoffTools||[],eZ=eY?.isLoadingHandoffTools||!1;(0,o.useEffect)(()=>{e&&t&&rj.debug("Handoff tools:",{count:eQ.length,tools:eQ.map(e=>e.name)})},[e,t,eQ]),(0,o.useEffect)(()=>{var r;if(!e)return;if(t){M(t.data.properties?.promptTemplate||""),t.data.properties?.boundModel?T(!0):T(!1),H(t.data.properties?.excludeModelPrompt||!1),W(t.data.properties?.excludeStartNodePrompt||!1),L(t.data.properties?.excludeSystemPrompt||!1),B(t.data.properties?.inputMode||"full-history"),q(t.data.properties?.isolatedPrompt||""),G(t.data.properties?.allowCallerPrompt!==!1),X(t.data.properties?.outputMode||"full-conversation"),Y(t.data.properties?.enableTodoTool||!1),Z(t.data.properties?.captureVariable||""),et(t.data.properties?.captureResource||"");let e=eq(t.data.properties?.captureKv||"");el(e.scope),ea(e.key||"")}let s="create"===g?"basic":"guided"===h?(r=t?.data.properties?.promptTemplate,"guided"===h&&"string"==typeof r&&r.trim().length>0?"task":"basic"):"task";eu(s),ed("server"),eI.current=!0;let o=window.requestAnimationFrame(()=>{let e=eM[s].current;e&&"function"==typeof e.scrollIntoView?e.scrollIntoView({behavior:"auto",block:"start"}):ex.current&&(ex.current.scrollTop=e?.offsetTop??0),eI.current=!1});return()=>{window.cancelAnimationFrame(o),eI.current=!1}},[t,e,g,h]),(0,o.useEffect)(()=>{if(!e)return;let t=ex.current;if(!t)return;let r=new IntersectionObserver(e=>{if(eI.current)return;let t=e.filter(e=>e.isIntersecting).sort((e,t)=>t.intersectionRatio-e.intersectionRatio),r=t[0]?.target?.dataset.section;r&&eu(r)},{root:t,threshold:[.15,.4,.75],rootMargin:"0px 0px -45% 0px"});return Object.values(eM).forEach(e=>{e.current&&r.observe(e.current)}),()=>r.disconnect()},[e,t]);let e0=(0,o.useRef)(null),e1=(e,t,r="server")=>{if(rj.debug("handleInsertToolBinding called with:",JSON.stringify({serverName:e,toolName:t})),!e||!t)return void rj.warn("Invalid parameters for handleInsertToolBinding:",{serverName:e,toolName:t});let s=(eE[e]||[]).find(e=>e.name===t);s?.description;let o="handoff"===r?(0,es.X8)("tool","handoff",t):(0,es.X8)("tool",e,t),l=(!(k.length>0)||k.endsWith(" ")||k.endsWith("\n")?"":" ")+o;e0.current?(rj.debug("Inserting text into PromptBuilder:",JSON.stringify({textToInsert:l})),e0.current.insertText(l),rj.debug("Tool binding inserted successfully")):rj.warn("promptBuilderRef.current is null, cannot insert text")};if(!t||!A)return null;let e2=[{key:"maxTurns",label:w?w("flows.nodeProperties.maxTurns"):"Maximum turns (override)",type:"number",min:1,helperText:w?w("flows.nodeProperties.maxTurnsHelp"):"Optional. Replaces the bound model's maximum turns for this node. Leave empty to inherit the model setting (default: 255)."},{key:"maxTokens",label:w?w("flows.nodeProperties.maxTokens"):"Maximum output tokens (override)",type:"number",min:1,helperText:w?w("flows.nodeProperties.maxTokensHelp"):"Optional. Replaces the bound model's maximum output tokens for this node. Leave empty to inherit the adapter default. The Claude subscription adapter does not enforce this value."}],e5=A.properties?.boundModel||"",e4={minHeight:"100%",minWidth:0,width:"100%",boxSizing:"border-box",scrollSnapAlign:"start",scrollSnapStop:"always",display:"flex",flexDirection:"column",pb:4},e3=(0,s.jsxs)(a.default,{sx:{display:"flex",flexDirection:"column",height:"100%",minHeight:0},children:["advanced"===h&&(0,s.jsx)(a.default,{sx:{borderBottom:1,borderColor:"divider",flexShrink:0},children:(0,s.jsxs)(tt.A,{value:ei,onChange:(e,t)=>ed(t),variant:"scrollable",scrollButtons:"auto","aria-label":w("flows.process.toolsAria"),children:[(0,s.jsx)(tr.A,{id:"process-task-tab-server","aria-controls":"process-task-panel-server",label:w("flows.process.mcpTab"),value:"server"}),(0,s.jsx)(tr.A,{id:"process-task-tab-agent","aria-controls":"process-task-panel-agent",label:w("flows.process.nodesTab"),value:"agent"}),(0,s.jsx)(tr.A,{id:"process-task-tab-resources","aria-controls":"process-task-panel-resources",label:w("flows.process.resourcesTab"),value:"resources"})]})}),(0,s.jsxs)(a.default,{id:`process-task-panel-${ei}`,role:"tabpanel","aria-labelledby":`process-task-tab-${ei}`,"data-testid":"process-task-tools-scroll",sx:{flexGrow:1,minHeight:0,overflow:"auto",pr:.5},children:["server"===ei&&(0,s.jsx)(rr,{isLoadingServers:eP,connectedMcpNodes:eH,availableServers:eR,onConnectMcpServer:f,serverStatuses:eL,serverToolsMap:eE,isLoadingTools:eD,handleInsertToolBinding:e1,selectedToolServerNodeId:eW,selectedNodeId:t?.id||null,handleSelectToolServer:eO,isLoadingSelectedServerTools:eV,promptBuilderRef:e0,handleRetryServer:eB,handleRestartServer:eU}),"advanced"===h&&"resources"===ei&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(ra,{wiredResources:eJ,promptBuilderRef:e0}),(0,s.jsx)(rl,{connectedMcpNodes:eH,handleInsertResourceBinding:(e,t)=>{if(!e||!t)return void rj.warn("Invalid parameters for handleInsertResourceBinding:",{serverName:e,uri:t});let r=(0,es.X8)("resource",e,t),s=k.length>0&&!k.endsWith(" ")&&!k.endsWith("\n");e0.current?e0.current.insertText((s?" ":"")+r):rj.warn("promptBuilderRef.current is null, cannot insert resource binding")},promptBuilderRef:e0})]}),"advanced"===h&&"agent"===ei&&(0,s.jsx)(rd,{handoffTools:eQ,isLoadingHandoffTools:eZ,handleInsertToolBinding:(e,t)=>e1(e,t,"handoff"),promptBuilderRef:e0})]})]});return(0,s.jsxs)(m.A,{open:e,onClose:r,slotProps:{transition:{onEntered:()=>{"task"===ec&&(eI.current=!0,ej.current?.scrollIntoView({block:"start"}),window.setTimeout(()=>{eI.current=!1},0))}}},maxWidth:"xl",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"secondary.main",m:{xs:1,sm:4},width:{xs:"calc(100% - 16px)",sm:"95vw"},height:{xs:"calc(100dvh - 16px)",sm:"90vh"},maxWidth:{xs:"calc(100% - 16px)",sm:"95vw"},maxHeight:{xs:"calc(100dvh - 16px)",sm:"90vh"}}},children:[(0,s.jsx)(tB.A,{title:w("flows.modal.properties",{name:A.label||w("flows.process.title")}),onClose:r,titleProps:{sx:{minWidth:0,overflowWrap:"anywhere"}}}),(0,s.jsx)(P.A,{}),(0,s.jsxs)(x.A,{sx:{display:"flex",flexDirection:"column",p:0,overflow:"hidden",flexGrow:1,minHeight:0,minWidth:0},children:[(0,s.jsx)(a.default,{sx:{borderBottom:1,borderColor:"divider",px:{xs:0,sm:2},flexShrink:0,minWidth:0},children:(0,s.jsx)(tt.A,{value:ec,onChange:(e,t)=>{let r;return eu(t),eI.current=!0,void((r=eM[t].current)&&"function"==typeof r.scrollIntoView?r.scrollIntoView({behavior:"smooth",block:"start"}):ex.current&&(ex.current.scrollTop=r?.offsetTop??0),window.setTimeout(()=>{eI.current=!1},700))},variant:"scrollable",scrollButtons:"auto",children:eg.map(e=>(0,s.jsx)(tr.A,{label:j[e],value:e},e))})}),(0,s.jsxs)(a.default,{ref:ex,sx:{flexGrow:1,minWidth:0,overflowY:"auto",overflowX:"hidden",p:{xs:2,sm:3},scrollSnapType:"y mandatory",scrollPaddingTop:{xs:"16px",sm:"24px"}},children:[(0,s.jsxs)(a.default,{ref:ew,"data-section":"basic",sx:e4,children:[(0,s.jsx)(i.A,{variant:"h6",sx:{mb:2},children:w("flows.process.basic")}),(0,s.jsx)(tY,{nodeData:A,setNodeData:S})]}),(0,s.jsxs)(a.default,{ref:eb,"data-section":"model",sx:e4,children:[(0,s.jsx)(i.A,{variant:"h6",sx:{mb:2},children:w("flows.process.model")}),(0,s.jsx)(t1,{isLoadingModels:eT,loadError:eN,models:e$,selectedModelId:e5,handleModelSelect:eF,isModelBound:I,handleUnbindModel:ez})]}),"advanced"===h&&(0,s.jsxs)(a.default,{ref:ey,"data-section":"io",sx:e4,children:[(0,s.jsx)(i.A,{variant:"h6",sx:{mb:2},children:w("flows.process.io")}),(0,s.jsx)(rv,{excludeModelPrompt:N,setExcludeModelPrompt:H,excludeStartNodePrompt:R,setExcludeStartNodePrompt:W,excludeSystemPrompt:E,setExcludeSystemPrompt:L,inputMode:D,setInputMode:B,isolatedPrompt:U,setIsolatedPrompt:q,allowCallerPrompt:K,setAllowCallerPrompt:G,outputMode:_,setOutputMode:X,isModelBound:I,models:e$,nodeData:A}),(0,s.jsx)(F.A,{sx:{mt:1},control:(0,s.jsx)(z.A,{checked:J,onChange:e=>Y(e.target.checked)}),label:w("flows.process.todo")})]}),(0,s.jsxs)(a.default,{ref:ej,"data-section":"task",sx:e4,children:[(0,s.jsx)(i.A,{variant:"h6",sx:{mb:2},children:w("flows.process.task")}),(0,s.jsxs)(a.default,{ref:eS,"data-testid":"process-task-split-container",sx:{display:"flex",flexDirection:y?"column":"row",flexGrow:1,minWidth:0,minHeight:480,height:y?"auto":"clamp(480px, 62vh, 680px)",overflow:y?"visible":"hidden"},children:[(0,s.jsx)(a.default,{"data-testid":"process-task-tools-pane",sx:{order:2*!!y,flex:y?"0 0 auto":`0 0 ${ep}px`,width:y?"100%":`${ep}px`,minWidth:0,minHeight:360*!!y,height:y?420:"auto",mt:2*!!y,display:"flex",flexDirection:"column",overflow:"hidden"},children:e3}),(0,s.jsx)(a.default,{role:"separator","aria-label":"Resize Task tools and prompt editor panes","aria-orientation":"vertical","aria-valuemin":260,"aria-valuemax":640,"aria-valuenow":Math.round(ep),tabIndex:0,onPointerDown:e=>{Number.isFinite(e.clientX)&&(e.preventDefault(),ek.current={pointerX:e.clientX,width:eC.current},em(!0))},onKeyDown:e=>{let t=eS.current?.getBoundingClientRect().width??0,r=null;"ArrowLeft"===e.key&&(r=eC.current-24),"ArrowRight"===e.key&&(r=eC.current+24),"Home"===e.key&&(r=260),"End"===e.key&&(r=640),null!==r&&(e.preventDefault(),ef(rC(r,t)))},sx:{display:y?"none":"flex",flex:"0 0 12px",cursor:"col-resize",alignItems:"stretch",justifyContent:"center",touchAction:"none",bgcolor:eh?"action.selected":"transparent","&::after":{content:'""',width:2,borderRadius:1,bgcolor:"divider"},"&:hover, &:focus-visible":{bgcolor:"action.hover",outline:"none"}}}),(0,s.jsx)(a.default,{"data-testid":"process-task-editor-scroll",sx:{order:+!!y,flex:"1 1 auto",width:y?"100%":"auto",minWidth:0,minHeight:360*!!y,height:y?420:"auto",display:"flex",flexDirection:"column",overflow:"auto"},children:(0,s.jsx)(rp,{ref:e0,promptTemplate:k,handlePromptChange:e=>{M(e),S(t=>t?{...t,properties:{...t.properties,promptTemplate:e}}:null)},excludeModelPrompt:N,excludeStartNodePrompt:R,excludeSystemPrompt:E,nodeData:A,flowId:p,suggestions:eX})})]})]}),"advanced"===h&&(0,s.jsxs)(a.default,{ref:eA,"data-section":"advanced",sx:e4,children:[(0,s.jsx)(i.A,{variant:"h6",sx:{mb:2},children:w("flows.process.advanced")}),(0,s.jsx)(a.default,{sx:{mb:3},children:(0,s.jsx)(rb,{nodeData:A,handlePropertyChange:C,properties:e2})}),(0,s.jsx)(a.default,{children:(0,s.jsx)(ry,{value:{captureVariable:Q,captureResource:ee,captureKvScope:eo,captureKvKey:en},onChange:e=>{void 0!==e.captureVariable&&Z(e.captureVariable),void 0!==e.captureResource&&et(e.captureResource),void 0!==e.captureKvScope&&el(e.captureKvScope),void 0!==e.captureKvKey&&ea(e.captureKvKey)},onInsertRef:e=>{let t=k.length>0&&!k.endsWith(" ")&&!k.endsWith("\n");e0.current?e0.current.insertText((t?" ":"")+e):rj.warn("promptBuilderRef.current is null, cannot insert capture reference")}})})]})]})]}),(0,s.jsxs)(b.A,{sx:{px:{xs:1.5,sm:3},py:{xs:1,sm:1.5},flexShrink:0},children:[(0,s.jsx)(d.A,{onClick:r,children:w("flows.modal.cancel")}),(0,s.jsx)(d.A,{onClick:()=>{if(t&&A){let e={...A.properties,promptTemplate:k};if("advanced"===h){Object.assign(e,{excludeModelPrompt:N,excludeStartNodePrompt:R,excludeSystemPrompt:E,inputMode:D,isolatedPrompt:U,allowCallerPrompt:K,outputMode:_}),J?e.enableTodoTool=!0:delete e.enableTodoTool;let t=Q.trim();t?e.captureVariable=t:delete e.captureVariable;let r=ee.trim();r?e.captureResource=r:delete e.captureResource;let s=eK(eo,en);s?e.captureKv=s:delete e.captureKv}l(t.id,{...A,properties:e}),r()}},variant:"contained",color:"primary",children:w("flows.modal.saveChanges")})]})]})},rI=(0,y.A)((0,s.jsx)("path",{d:"M19 15v4H5v-4zm1-2H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1M7 18.5c-.82 0-1.5-.67-1.5-1.5s.68-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5M19 5v4H5V5zm1-2H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1M7 8.5c-.82 0-1.5-.67-1.5-1.5S6.18 5.5 7 5.5s1.5.68 1.5 1.5S7.83 8.5 7 8.5"}),"DnsOutlined");var r$=r(666),rT=r(34926),rN=r(16803);function rF(e){return e.title?.trim()||e.annotations?.title?.trim()||e.name}let rz={readOnly:"success",destructive:"error",otherChanges:"warning"},rH={readOnly:{title:"flows.mcpNode.readOnlyTools",help:"flows.mcpNode.readOnlyToolsHelp"},destructive:{title:"flows.mcpNode.destructiveTools",help:"flows.mcpNode.destructiveToolsHelp"},otherChanges:{title:"flows.mcpNode.otherChangeTools",help:"flows.mcpNode.otherChangeToolsHelp"}};function rR(e){return e&&"object"==typeof e?JSON.stringify(e,null,2):"{}"}let rP=({tools:e,enabledTools:t,onToggle:r,onActivateAll:l,onDeactivateAll:n})=>{let{t:c}=(0,ev.s9)(),[h,m]=(0,o.useState)(""),[g,x]=(0,o.useState)(null),w=(0,o.useMemo)(()=>new Set(t),[t]),b=(0,o.useMemo)(()=>e.reduce((e,t)=>e+ +!!w.has(t.name),0),[w,e]),y=(0,o.useMemo)(()=>{let t=h.trim().toLocaleLowerCase();return t?e.filter(e=>`${rF(e)} ${e.name} ${e.description||""}`.toLocaleLowerCase().includes(t)):e},[h,e]),j=(0,o.useMemo)(()=>(function(e){let t={readOnly:[],destructive:[],otherChanges:[]};for(let r of e)t[r.annotations?.readOnlyHint===!0?"readOnly":r.annotations?.destructiveHint===!1?"otherChanges":"destructive"].push(r);return["readOnly","destructive","otherChanges"].map(e=>({key:e,tools:t[e]})).filter(e=>e.tools.length>0)})(y),[y]);return(0,s.jsxs)(a.default,{children:[(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:2,flexWrap:"wrap"},children:[(0,s.jsxs)(a.default,{children:[(0,s.jsx)(i.A,{variant:"h6",children:c("flows.mcpNode.allowedTools")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:c("flows.mcpNode.toolsHelp")})]}),(0,s.jsxs)(te.A,{direction:"row",spacing:1,sx:{flexWrap:"wrap",rowGap:1},children:[(0,s.jsx)(d.A,{size:"small",variant:"outlined",onClick:l,disabled:0===e.length||b===e.length,children:c("flows.mcpNode.activateAll")}),(0,s.jsx)(d.A,{size:"small",variant:"outlined",onClick:n,disabled:0===w.size,children:c("flows.mcpNode.deactivateAll")})]})]}),(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,mt:2,mb:1.5},children:[(0,s.jsx)(T.A,{size:"small",color:b>0?"primary":"default",label:c("flows.mcpNode.enabledCount",{enabled:b,total:e.length})}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:c("flows.mcpNode.annotationNotice")})]}),(0,s.jsx)(v.A,{fullWidth:!0,size:"small",value:h,onChange:e=>m(e.target.value),placeholder:c("flows.mcpNode.searchTools"),inputProps:{"aria-label":c("flows.mcpNode.searchTools")},InputProps:{startAdornment:(0,s.jsx)(ea.A,{position:"start",children:(0,s.jsx)(t6.A,{fontSize:"small"})})},sx:{mb:2}}),0===y.length?(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{py:3,textAlign:"center"},children:c("flows.mcpNode.noMatchingTools")}):(0,s.jsx)(te.A,{spacing:3,children:j.map(e=>{let t=rH[e.key];return(0,s.jsxs)(a.default,{component:"section","aria-labelledby":`mcp-tools-${e.key}`,children:[(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:.5},children:[(0,s.jsx)(i.A,{id:`mcp-tools-${e.key}`,variant:"subtitle1",fontWeight:700,children:c(t.title)}),(0,s.jsx)(T.A,{size:"small",color:rz[e.key],variant:"outlined",label:e.tools.length})]}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mb:1},children:c(t.help)}),(0,s.jsx)(eT.A,{disablePadding:!0,sx:{display:"flex",flexDirection:"column",gap:1},children:e.tools.map(e=>{let t,o=rF(e),l=g===e.name,n=w.has(e.name),d=e.annotations?.readOnlyHint===!0,h=e.execution?.taskSupport,m=!!(0,rN.Gt)(e._meta);return(0,s.jsxs)(I.A,{component:"li",variant:"outlined",sx:{listStyle:"none",overflow:"hidden",borderColor:n?"primary.main":"divider"},children:[(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"flex-start",gap:1.25,p:1.5},children:[(0,s.jsx)(z.A,{size:"small",checked:n,onChange:()=>r(e.name),inputProps:{"aria-label":c("flows.mcpNode.toggleTool",{tool:o})},sx:{mt:-.25}}),(0,s.jsxs)(a.default,{sx:{flex:1,minWidth:0},children:[(0,s.jsx)(i.A,{variant:"subtitle2",sx:{overflowWrap:"anywhere"},children:o}),e.description&&(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mt:.25},children:e.description}),(0,s.jsxs)(te.A,{direction:"row",spacing:.75,sx:{flexWrap:"wrap",rowGap:.75,mt:1},children:[(t=e.annotations,(t?.readOnlyHint===void 0||!0!==t.readOnlyHint&&void 0===t.destructiveHint)&&(0,s.jsx)(T.A,{size:"small",variant:"outlined",label:c("flows.mcpNode.cautiousDefaults")})),!d&&e.annotations?.idempotentHint===!0&&(0,s.jsx)(T.A,{size:"small",variant:"outlined",color:"success",label:c("flows.mcpNode.safeToRepeat")}),e.annotations?.openWorldHint===!1&&(0,s.jsx)(T.A,{size:"small",variant:"outlined",label:c("flows.mcpNode.closedWorld")}),e.annotations?.openWorldHint===!0&&(0,s.jsx)(T.A,{size:"small",variant:"outlined",color:"warning",label:c("flows.mcpNode.externalAccess")}),h&&"forbidden"!==h&&(0,s.jsx)(T.A,{size:"small",variant:"outlined",color:"info",label:"required"===h?c("flows.mcpNode.backgroundRequired"):c("flows.mcpNode.backgroundOptional")}),e.outputSchema&&(0,s.jsx)(T.A,{size:"small",variant:"outlined",label:c("flows.mcpNode.structuredResult")}),m&&(0,s.jsx)(T.A,{size:"small",variant:"outlined",color:"info",label:c("flows.mcpNode.interactiveView")})]})]}),(0,s.jsx)(p.A,{title:c("flows.inspector.technicalDetails"),children:(0,s.jsx)(u.A,{size:"small",onClick:()=>x(l?null:e.name),"aria-expanded":l,"aria-label":c(l?"flows.mcpNode.hideTechnicalDetails":"flows.mcpNode.showTechnicalDetails",{tool:o}),children:l?(0,s.jsx)(re.A,{}):(0,s.jsx)(t7.A,{})})})]}),(0,s.jsxs)(f.A,{in:l,unmountOnExit:!0,children:[(0,s.jsx)(P.A,{}),(0,s.jsxs)(a.default,{sx:{p:1.5,bgcolor:"action.hover"},children:[(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:c("flows.mcpNode.programmaticName")}),(0,s.jsx)(i.A,{component:"code",variant:"body2",sx:{display:"block",overflowWrap:"anywhere",mb:1.5},children:e.name}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:c("flows.mcpNode.inputSchema")}),(0,s.jsx)(a.default,{component:"pre",sx:{m:0,mt:.5,p:1,borderRadius:1,bgcolor:"background.paper",overflow:"auto",fontSize:12},children:rR(e.inputSchema)}),e.outputSchema&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:1.5},children:c("flows.mcpNode.outputSchema")}),(0,s.jsx)(a.default,{component:"pre",sx:{m:0,mt:.5,p:1,borderRadius:1,bgcolor:"background.paper",overflow:"auto",fontSize:12},children:rR(e.outputSchema)})]}),(e.annotations||e.execution||e._meta)&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:1.5},children:c("flows.mcpNode.protocolMetadata")}),(0,s.jsx)(a.default,{component:"pre",sx:{m:0,mt:.5,p:1,borderRadius:1,bgcolor:"background.paper",overflow:"auto",fontSize:12},children:JSON.stringify({...e.annotations?{annotations:e.annotations}:{},...e.execution?{execution:e.execution}:{},...e._meta?{_meta:e._meta}:{}},null,2)})]})]})]})]},e.name)})})]},e.key)})})]})},rW=(0,W.h)("frontend/components/Flow/FlowManager/FlowBuilder/Modals/MCPNodePropertiesModal"),rE=({open:e,node:t,onClose:r,onSave:l,authoringMode:c="advanced"})=>{let{t:f}=(0,ev.s9)(),g=(0,n.A)(),w=(0,$.A)(g.breakpoints.down("md"),{noSsr:!0}),y=(0,$.A)(g.breakpoints.down("sm"),{noSsr:!0}),[j,A]=(0,o.useState)(null),[S,C]=(0,o.useState)({}),[k,M]=(0,o.useState)(!1),[I,H]=(0,o.useState)(!1),[R,W]=(0,o.useState)("server"),[E,L]=(0,o.useState)("tools"),[D,O]=(0,o.useState)(null),{servers:V,isLoading:B,loadError:U,retryServer:q}=(0,tG.v)(),K=(0,tx.E)("mcp",V),G=j?.properties?.boundServer||"",{tools:_,toolsServerName:X,isLoading:J,error:Y,loadTools:Q}=(0,rT.O)(G);(0,o.useEffect)(()=>{t&&(A({...t.data,properties:{...t.data.properties}}),W(t.data.properties?.boundServer?"tools":"server"),L("tools"),H(!1),O(null))},[t,e]),(0,o.useEffect)(()=>{!D||D!==G||X!==D||J||Y||(A(e=>e?{...e,properties:{...e.properties,enabledTools:_.map(e=>e.name)}}:null),O(null))},[D,J,_,G,Y,X]);let Z=(e,t)=>{A(r=>r?{...r,properties:{...r.properties,[e]:t}}:null)},ee=async()=>{M(!0);try{await Promise.all(V.map(e=>q(e.name)))}finally{M(!1)}},et=async(e,t)=>{t?.stopPropagation(),rW.debug(`Retrying server: ${e}`),C(t=>({...t,[e]:!0}));try{return await q(e),e===G&&Q(!0),!0}catch(t){return rW.warn(`Failed to retry server ${e}: ${t}`),!1}finally{C(t=>({...t,[e]:!1}))}},er=e=>{Z("enabledTools",e?_.map(e=>e.name):[])};if(!t||!j)return null;let es=j.properties?.boundServer||"",eo=Array.isArray(j.properties?.enabledTools)?j.properties.enabledTools:[],el=V.find(e=>e.name===es),en=j.properties?.toolTimeout,ea=-1===en,ei=e=>({key:e.name,content:(0,s.jsx)(tg.A,{name:e.name,status:e.status||"disconnected",path:e.path||e.rootPath||"",enabled:!e.disabled,transport:e.transport||"stdio",pickerMode:!0,selected:es===e.name,onClick:()=>{var t;return t=e.name,void(rW.debug(`Server selected: ${t}`),H(!1),A(e=>{if(!e||e.properties?.boundServer===t)return e;let r=tq({currentLabel:e.label,nameIsCustom:e.properties?.nameIsCustom,defaultLabel:"MCP Node",previousAutoLabel:e.properties?.boundServer||void 0,nextAutoLabel:t});return{...e,label:r,properties:{...e.properties,boundServer:t,enabledTools:[]}}}),t!==G&&O(t),W("tools"))}})}),ed=K.items.map(ei),ec=K.groups?K.groups.map(e=>({...e,items:e.items.map(ei)})):null,eu=(0,s.jsx)(t0.A,{isLoading:B,error:U,emptyMessage:f("flows.mcpNode.empty"),loadingMessage:f("flows.mcpNode.loadingServers"),searchable:!0,searchPlaceholder:f("flows.mcpNode.searchServers"),searchTerm:K.searchTerm,onSearchChange:K.setSearchTerm,columns:{xs:12},items:ed,groups:ec,collapsedKeys:K.collapsedKeys,onToggleGroup:K.toggleGroup,autoFocusSearch:!1}),ep=(0,s.jsxs)(a.default,{"data-testid":"mcp-server-pane",sx:{height:"100%",minHeight:0,overflowY:"auto",p:3},children:[(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:1,mb:1.5},children:[(0,s.jsxs)(a.default,{children:[(0,s.jsx)(i.A,{variant:"h6",children:f("flows.mcpNode.bind")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:f("flows.mcpNode.select")})]}),(0,s.jsx)(p.A,{title:f("flows.mcpNode.retryAll"),children:(0,s.jsx)("span",{children:(0,s.jsx)(u.A,{size:"small",onClick:ee,disabled:k||B,children:k?(0,s.jsx)(N.default,{size:18}):(0,s.jsx)(t3.A,{fontSize:"small"})})})})]}),eu,(0,s.jsx)(tQ.A,{sx:{mt:1},children:es?f("flows.mcpNode.bound",{server:es}):f("flows.mcpNode.select")})]}),ef=(0,s.jsxs)(a.default,{"data-testid":"mcp-compact-server-picker",sx:{maxWidth:680,mx:"auto"},children:[(0,s.jsx)(i.A,{variant:"h6",sx:{mb:.5},children:f("flows.mcpNode.bind")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mb:2},children:f("flows.mcpNode.select")}),(0,s.jsxs)(d.A,{fullWidth:!0,variant:"outlined",size:"large",startIcon:(0,s.jsx)(rI,{}),onClick:()=>H(!0),sx:{justifyContent:"flex-start",textTransform:"none",py:1.25},children:[(0,s.jsx)(a.default,{component:"span",sx:{flex:1,minWidth:0,textAlign:"left",overflow:"hidden",textOverflow:"ellipsis"},children:es||f("flows.mcpNode.chooseServer")}),el&&(0,s.jsx)(T.A,{size:"small",label:el.status||"disconnected",color:"connected"===el.status?"success":"default",sx:{ml:1}})]}),(0,s.jsx)(a.default,{sx:{display:"flex",justifyContent:"flex-end",mt:1},children:(0,s.jsx)(d.A,{size:"small",startIcon:k?(0,s.jsx)(N.default,{size:16}):(0,s.jsx)(t3.A,{}),onClick:ee,disabled:k||B,children:f("flows.mcpNode.retryAll")})}),(0,s.jsx)(tQ.A,{children:es?f("flows.mcpNode.bound",{server:es}):f("flows.mcpNode.select")})]}),eh=(0,s.jsx)(a.default,{"data-testid":"mcp-tools-pane",children:es?(0,s.jsxs)(s.Fragment,{children:[el?.status!=="connected"&&(0,s.jsx)(h.A,{severity:"warning",sx:{mb:2},action:(0,s.jsx)(d.A,{color:"inherit",size:"small",startIcon:S[es]?(0,s.jsx)(N.default,{size:16}):(0,s.jsx)(t3.A,{}),onClick:()=>et(es),disabled:S[es],children:f("flows.mcpNode.retry")}),children:f("flows.mcpNode.disconnected")}),J?(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",justifyContent:"center",gap:1,py:6},children:[(0,s.jsx)(N.default,{size:24}),(0,s.jsx)(i.A,{color:"text.secondary",children:f("flows.mcpNode.loadingTools")})]}):Y?(0,s.jsx)(h.A,{severity:"error",children:Y}):0===_.length?(0,s.jsx)(i.A,{color:"text.secondary",sx:{py:3},children:f(el?.status==="connected"?"flows.mcpNode.noTools":"flows.mcpNode.connectForTools")}):(0,s.jsx)(rP,{tools:_,enabledTools:eo,onToggle:e=>{A(t=>{if(!t)return null;let r=Array.isArray(t.properties.enabledTools)?t.properties.enabledTools:[],s=r.includes(e)?r.filter(t=>t!==e):[...r,e];return{...t,properties:{...t.properties,enabledTools:s}}})},onActivateAll:()=>er(!0),onDeactivateAll:()=>er(!1)})]}):(0,s.jsx)(h.A,{severity:"info",children:f("flows.mcpNode.connectForTools")})}),em=(0,s.jsxs)(a.default,{"data-testid":"mcp-settings-pane",sx:{maxWidth:820},children:[(0,s.jsx)(i.A,{variant:"h6",sx:{mb:2},children:f("common.settings")}),(0,s.jsx)(v.A,{fullWidth:!0,label:f("flows.mcpNode.label"),value:j.label||"",onChange:e=>{A(t=>t?{...t,label:e.target.value,properties:{...t.properties,nameIsCustom:!0}}:null)},helperText:f("flows.mcpNode.labelHelp"),sx:{mb:2}}),(0,s.jsx)(v.A,{fullWidth:!0,label:f("flows.mcpNode.description"),value:j.description||"",onChange:e=>A({...j,description:e.target.value}),multiline:!0,minRows:2,helperText:f("flows.mcpNode.descriptionHelp")}),es&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(P.A,{sx:{my:3}}),(0,s.jsx)(i.A,{variant:"subtitle1",children:f("flows.mcpNode.timeoutTitle")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mb:1.5},children:f("flows.mcpNode.timeoutHelp")}),(0,s.jsxs)(te.A,{direction:{xs:"column",sm:"row"},spacing:2,alignItems:{xs:"stretch",sm:"flex-start"},children:[(0,s.jsx)(v.A,{label:f("flows.mcpNode.timeoutSeconds"),type:"number",size:"small",sx:{width:{xs:"100%",sm:220}},value:ea?"":en??"",placeholder:String(300),disabled:ea,inputProps:{min:1},onChange:e=>{let t=e.target.value;if(""===t)return void Z("toolTimeout",void 0);let r=Number.parseInt(t,10);!Number.isNaN(r)&&r>0&&Z("toolTimeout",r)},helperText:ea?f("flows.mcpNode.noTimeoutHelp"):f("flows.mcpNode.defaultTimeout",{seconds:300})}),(0,s.jsx)(F.A,{control:(0,s.jsx)(z.A,{checked:ea,onChange:e=>Z("toolTimeout",e.target.checked?-1:void 0)}),label:f("flows.mcpNode.noTimeout")})]}),(0,s.jsx)(P.A,{sx:{my:3}}),(0,s.jsx)(r$.A,{roots:j.properties?.roots||[],onChange:e=>Z("roots",e)}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:1},children:f("flows.mcpNode.rootsHelp",{server:es})})]})]});return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(m.A,{open:e,onClose:r,maxWidth:"xl",fullWidth:!0,"data-authoring-mode":c,PaperProps:{sx:{borderTop:5,borderColor:"info.main",m:{xs:1,sm:4},width:{xs:"calc(100% - 16px)",sm:"95vw"},height:{xs:"calc(100dvh - 16px)",sm:"90vh"},maxWidth:{xs:"calc(100% - 16px)",sm:"95vw"},maxHeight:{xs:"calc(100dvh - 16px)",sm:"90vh"}}},children:[(0,s.jsx)(tB.A,{title:f("flows.modal.properties",{name:j.label||f("flows.mcpNode.title")}),onClose:r,titleProps:{sx:{minWidth:0,overflowWrap:"anywhere"}}}),(0,s.jsx)(P.A,{}),(0,s.jsx)(x.A,{sx:{display:"flex",flexDirection:"column",p:0,overflow:"hidden",flexGrow:1,minHeight:0},children:w?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(a.default,{sx:{borderBottom:1,borderColor:"divider",px:{xs:0,sm:2},flexShrink:0},children:(0,s.jsxs)(tt.A,{value:R,onChange:(e,t)=>W(t),variant:"scrollable",scrollButtons:"auto","aria-label":f("flows.mcpNode.title"),children:[(0,s.jsx)(tr.A,{label:f("flows.mcpNode.bind"),value:"server"}),(0,s.jsx)(tr.A,{label:f("flows.mcpNode.allowedTools"),value:"tools"}),(0,s.jsx)(tr.A,{label:f("common.settings"),value:"settings"})]})}),(0,s.jsxs)(a.default,{sx:{flexGrow:1,minHeight:0,overflowY:"auto",p:{xs:2,sm:3}},children:["server"===R&&ef,"tools"===R&&eh,"settings"===R&&em]})]}):(0,s.jsxs)(a.default,{"data-testid":"mcp-desktop-split",sx:{display:"grid",gridTemplateColumns:"minmax(320px, 38%) minmax(0, 1fr)",flexGrow:1,minHeight:0},children:[(0,s.jsx)(a.default,{sx:{minWidth:0,minHeight:0,borderRight:1,borderColor:"divider"},children:ep}),(0,s.jsxs)(a.default,{sx:{minWidth:0,minHeight:0,display:"flex",flexDirection:"column"},children:[(0,s.jsx)(a.default,{sx:{borderBottom:1,borderColor:"divider",px:2,flexShrink:0},children:(0,s.jsxs)(tt.A,{value:E,onChange:(e,t)=>L(t),variant:"scrollable",scrollButtons:"auto","aria-label":f("flows.mcpNode.allowedTools"),children:[(0,s.jsx)(tr.A,{label:f("flows.mcpNode.allowedTools"),value:"tools"}),(0,s.jsx)(tr.A,{label:f("common.settings"),value:"settings"})]})}),(0,s.jsx)(a.default,{sx:{flexGrow:1,minHeight:0,overflowY:"auto",p:3},children:"tools"===E?eh:em})]})]})}),(0,s.jsxs)(b.A,{sx:{px:{xs:1.5,sm:3},py:{xs:1,sm:1.5},flexShrink:0},children:[(0,s.jsx)(d.A,{onClick:r,children:f("flows.modal.cancel")}),(0,s.jsx)(d.A,{onClick:()=>{t&&j&&(l(t.id,j),r())},variant:"contained",color:"primary",children:f("flows.modal.saveChanges")})]})]}),(0,s.jsx)(tm.A,{open:I,onClose:()=>H(!1),fullScreen:y,maxWidth:"md",title:f("flows.mcpNode.bind"),description:f("flows.mcpNode.select"),isLoading:B,error:U,emptyMessage:f("flows.mcpNode.empty"),loadingMessage:f("flows.mcpNode.loadingServers"),searchable:!0,searchPlaceholder:f("flows.mcpNode.searchServers"),searchTerm:K.searchTerm,onSearchChange:K.setSearchTerm,columns:{xs:12,sm:6},items:ed,groups:ec,collapsedKeys:K.collapsedKeys,onToggleGroup:K.toggleGroup})]})},rL=({open:e,node:t,onClose:r,onSave:l})=>{let{t:n}=(0,ev.s9)(),[c,u]=(0,o.useState)(null),[p,f]=(0,o.useState)("");return((0,o.useEffect)(()=>{t&&(u({...t.data,properties:{...t.data.properties}}),f(t.data.properties?.promptTemplate||""))},[t,e]),t&&c)?(0,s.jsxs)(m.A,{open:e,onClose:r,maxWidth:"xl",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"primary.main",width:"95vw",height:"90vh",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,s.jsx)(tB.A,{title:n("flows.modal.properties",{name:c.label||n("flows.modal.startNode")}),onClose:r}),(0,s.jsx)(P.A,{}),(0,s.jsx)(x.A,{sx:{display:"flex",flexDirection:"column",p:3,overflow:"auto",height:"calc(90vh - 130px)"},children:(0,s.jsxs)(a.default,{sx:{display:"flex",flexDirection:"column",height:"100%"},children:[(0,s.jsx)(i.A,{variant:"h6",gutterBottom:!0,children:n("flows.modal.promptTemplate")}),(0,s.jsx)(a.default,{sx:{flexGrow:1,display:"flex",flexDirection:"column",height:"calc(100% - 40px)"},children:(0,s.jsx)(rc.A,{value:p,onChange:e=>{f(e),u(t=>t?{...t,properties:{...t.properties,promptTemplate:e}}:null)},label:"",height:"100%"})})]})}),(0,s.jsxs)(b.A,{children:[(0,s.jsx)(d.A,{onClick:r,children:n("flows.modal.cancel")}),(0,s.jsx)(d.A,{onClick:()=>{if(t&&c){let e={...c,properties:{...c.properties,promptTemplate:p}};l(t.id,e),r()}},variant:"contained",color:"primary",children:n("flows.modal.saveChanges")})]})]}):null},rD=({open:e,node:t,onClose:r,onSave:l})=>{let{t:n}=(0,ev.s9)(),[c,u]=(0,o.useState)(null);return((0,o.useEffect)(()=>{t&&u({...t.data,properties:{...t.data.properties}})},[t,e]),t&&c)?(0,s.jsxs)(m.A,{open:e,onClose:r,maxWidth:"md",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"success.main",width:"600px",height:"400px",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,s.jsx)(tB.A,{title:n("flows.modal.properties",{name:c.label||n("flows.modal.finishNode")}),onClose:r}),(0,s.jsx)(P.A,{}),(0,s.jsx)(x.A,{sx:{display:"flex",flexDirection:"column",p:3,overflow:"auto"},children:(0,s.jsx)(a.default,{sx:{display:"flex",flexDirection:"column",height:"100%",justifyContent:"center",alignItems:"center",py:4},children:(0,s.jsxs)(I.A,{elevation:0,sx:{p:4,textAlign:"center",backgroundColor:"rgba(76, 175, 80, 0.08)",borderRadius:2,width:"100%"},children:[(0,s.jsx)(i.A,{variant:"h6",color:"success.main",gutterBottom:!0,children:n("flows.modal.finishNode")}),(0,s.jsx)(i.A,{variant:"body1",color:"text.secondary",children:n("flows.modal.finishHelp")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mt:2,fontStyle:"italic"},children:n("flows.modal.finishFuture")})]})})}),(0,s.jsxs)(b.A,{children:[(0,s.jsx)(d.A,{onClick:r,children:n("flows.modal.cancel")}),(0,s.jsx)(d.A,{onClick:()=>{t&&c&&(l(t.id,c),r())},variant:"contained",color:"primary",children:n("flows.modal.save")})]})]}):null},rO=({open:e,edge:t,onClose:r,onSave:l})=>{let{t:n}=(0,ev.s9)(),c={contains:n("flows.edgeModal.contains"),regex:n("flows.edgeModal.regex"),equals:n("flows.edgeModal.equals"),always:n("flows.edgeModal.always")},u={"last-assistant":n("flows.edgeModal.lastAgent"),"last-message":n("flows.edgeModal.lastMessage")},[p,f]=(0,o.useState)(!1),[h,g]=(0,o.useState)("contains"),[w,y]=(0,o.useState)(""),[j,A]=(0,o.useState)("last-assistant"),[S,C]=(0,o.useState)(!1),[k,M]=(0,o.useState)(!1);if((0,o.useEffect)(()=>{let e=t?.data?.condition;e?(f(!0),g(e.kind),y("string"==typeof e.value?e.value:""),A(e.target??"last-assistant"),C(!!e.ignoreCase),M(!!e.negate)):(f(!1),g("contains"),y(""),A("last-assistant"),C(!1),M(!1))},[t,e]),!t)return null;let I="always"!==h,$=p&&"regex"===h&&w.length>0&&!(0,eL.wM)(w),T=p&&I&&0===w.length;return(0,s.jsxs)(m.A,{open:e,onClose:r,maxWidth:"sm",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"primary.main",width:"520px",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,s.jsx)(tB.A,{title:n("flows.edgeModal.title"),onClose:r}),(0,s.jsx)(P.A,{}),(0,s.jsxs)(x.A,{sx:{display:"flex",flexDirection:"column",gap:2,p:3},children:[(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:n("flows.edgeModal.help")}),(0,s.jsx)(F.A,{control:(0,s.jsx)(z.A,{checked:p,onChange:e=>f(e.target.checked)}),label:n("flows.edgeModal.conditional")}),p&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(tk.A,{fullWidth:!0,size:"small",children:[(0,s.jsx)(tM.A,{id:"edge-condition-kind-label",children:n("flows.edgeModal.kind")}),(0,s.jsx)(tI.A,{labelId:"edge-condition-kind-label",label:n("flows.edgeModal.kind"),value:h,onChange:e=>g(e.target.value),children:eL.w4.map(e=>(0,s.jsx)(R.A,{value:e,children:c[e]},e))})]}),I&&(0,s.jsx)(v.A,{fullWidth:!0,size:"small",label:n("regex"===h?"flows.edgeModal.pattern":"flows.edgeModal.value"),value:w,onChange:e=>y(e.target.value),error:$||T,helperText:$?n("flows.edgeModal.invalidRegex"):T?n("flows.edgeModal.valueRequired"):" "}),(0,s.jsxs)(tk.A,{fullWidth:!0,size:"small",children:[(0,s.jsx)(tM.A,{id:"edge-condition-target-label",children:n("flows.edgeModal.testAgainst")}),(0,s.jsx)(tI.A,{labelId:"edge-condition-target-label",label:n("flows.edgeModal.testAgainst"),value:j,onChange:e=>A(e.target.value),children:eL.L2.map(e=>(0,s.jsx)(R.A,{value:e,children:u[e]},e))})]}),(0,s.jsxs)(a.default,{display:"flex",gap:2,flexWrap:"wrap",children:[I&&(0,s.jsx)(F.A,{control:(0,s.jsx)(tR.A,{checked:S,onChange:e=>C(e.target.checked)}),label:n("flows.edgeModal.ignoreCase")}),(0,s.jsx)(F.A,{control:(0,s.jsx)(tR.A,{checked:k,onChange:e=>M(e.target.checked)}),label:n("flows.edgeModal.negate")})]}),(0,s.jsx)(tQ.A,{children:n("flows.edgeModal.runtimeSafety")})]})]}),(0,s.jsxs)(b.A,{children:[(0,s.jsx)(d.A,{onClick:r,children:n("flows.modal.cancel")}),(0,s.jsx)(d.A,{onClick:()=>{if(!p){l(t.id,void 0),r();return}let e={kind:h};I&&(e.value=w,S&&(e.ignoreCase=!0)),"last-assistant"!==j&&(e.target=j),k&&(e.negate=!0),l(t.id,e),r()},variant:"contained",color:"primary",disabled:$,children:n("flows.modal.save")})]})]})};var rV=r(95863);let rB=({information:e,id:t})=>{let{t:r}=(0,ev.s9)(),o=e.technicalText;return o.trim()?(0,s.jsx)(a.default,{id:t,component:"pre",tabIndex:0,sx:{m:0,p:1.5,maxHeight:{xs:"50vh",sm:"60vh"},overflow:"auto",whiteSpace:"pre-wrap",overflowWrap:"anywhere",fontSize:"0.75rem",lineHeight:1.45,backgroundColor:"action.hover",borderRadius:1},children:o}):(0,s.jsx)(i.A,{id:t,variant:"body2",color:"text.secondary",children:r("flows.nodeInfo.technicalEmpty")})},rU="node-technical-details-title",rq=({open:e,node:t,flowNames:r,onClose:l})=>{let{t:n,tp:a,formatList:i}=(0,ev.s9)(),c=(0,o.useMemo)(()=>{if(!t)return null;let e=t.data?.type??t.type??"process";return(0,rV.b)(t.data,e,{t:n,tp:a,formatList:i},r)},[t,r,n,a,i]);return(0,s.jsxs)(m.A,{open:e&&!!c,onClose:l,maxWidth:"sm",fullWidth:!0,"aria-labelledby":rU,PaperProps:{sx:{m:{xs:1,sm:4},width:{xs:"calc(100% - 16px)",sm:"100%"},maxWidth:{xs:"calc(100% - 16px)",sm:600},maxHeight:{xs:"calc(100dvh - 16px)",sm:"85vh"}}},children:[(0,s.jsx)(tB.A,{title:n("flows.nodeInfo.technicalTitle",{name:c?.label??""}),onClose:l,titleProps:{id:rU,sx:{minWidth:0,overflowWrap:"anywhere"}}}),(0,s.jsx)(P.A,{}),(0,s.jsx)(x.A,{sx:{px:{xs:2,sm:3},py:2},children:c&&(0,s.jsx)(rB,{information:c})}),(0,s.jsx)(b.A,{children:(0,s.jsx)(d.A,{onClick:l,children:n("common.close")})})]})},rK=(0,y.A)((0,s.jsx)("path",{d:"m12 4-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"}),"ArrowForward"),rG=(0,y.A)((0,s.jsx)("path",{d:"M19 13H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2m0 6H5v-4h14zm0-16H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m0 6H5V5h14z"}),"ViewAgendaOutlined"),r_=(0,y.A)((0,s.jsx)("path",{d:"M17 20.41 18.41 19 15 15.59 13.59 17zM7.5 8H11v5.59L5.59 19 7 20.41l6-6V8h3.5L12 3.5z"}),"MergeType"),rX=(0,W.h)("frontend/components/Flow/FlowManager/FlowBuilder/Modals/SubflowNodePropertiesModal"),rJ=({open:e,node:t,onClose:r,onSave:l,onNavigateToFlow:n,flowId:c,authoringMode:u="advanced"})=>{let{t:p}=(0,ev.s9)(),[f,g]=(0,o.useState)(null),[w,y]=(0,o.useState)([]),[j,A]=(0,o.useState)(!1),[S,C]=(0,o.useState)(!1),[k,M]=(0,o.useState)(""),[I,$]=(0,o.useState)(""),[T,N]=(0,o.useState)("folder"),[H,R]=(0,o.useState)("");(0,o.useEffect)(()=>{if(t){let e=t.data.properties||{};g({...t.data,properties:{...e}}),M(e.captureVariable||""),$(e.captureResource||"");let r=eq(e.captureKv||"");N(r.scope),R(r.key||"")}},[t,e]),(0,o.useEffect)(()=>{if(!e)return;let t=!1;return A(!0),D.g.loadFlows().then(e=>{t||y(e||[])}).catch(e=>{rX.warn("Failed to load flows for subflow picker",e),t||y([])}).finally(()=>{t||A(!1)}),()=>{t=!0}},[e]);let W=(e,t)=>{g(r=>r?{...r,properties:{...r.properties,[e]:t}}:null)},E=w.filter(e=>e.id!==c),L=(0,tx.E)("flows",E);if(!t||!f)return null;let O=f.properties?.subflowId||"",V=!!O&&!w.some(e=>e.id===O),B=V?"":w.find(e=>e.id===O)?.name||"",U=Array.isArray(f.properties?.parallelSubflowIds)&&f.properties.parallelSubflowIds.length>0||!!f.properties?.parallelSubflowIdsVar||f.properties?.mapOverList===!0||Array.isArray(f.properties?.spawnBriefs)&&f.properties.spawnBriefs.length>0,q=f.properties?.promptTemplate||"",K=f.properties?.inputMode||(q.trim()?"isolated":"full-history");return(0,s.jsxs)(m.A,{open:e,onClose:r,maxWidth:"md",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"warning.main",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,s.jsx)(tB.A,{title:p("flows.modal.properties",{name:f.label||p("flows.subflow.title")}),onClose:r}),(0,s.jsx)(P.A,{}),(0,s.jsxs)(x.A,{sx:{p:3},children:[(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mb:2},children:p("flows.subflow.intro")}),(0,s.jsx)(v.A,{fullWidth:!0,label:p("flows.subflow.nodeLabel"),value:f.label||"",onChange:e=>g({...f,label:e.target.value}),margin:"normal"}),(0,s.jsxs)(a.default,{sx:{mt:2},children:[(0,s.jsx)(i.A,{variant:"subtitle2",sx:{mb:1},children:p("flows.subflow.flowToRun")}),(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,flexWrap:"wrap"},children:[(0,s.jsx)(d.A,{variant:"outlined",startIcon:(0,s.jsx)(ti.A,{}),onClick:()=>C(!0),sx:{textTransform:"none",maxWidth:"100%"},children:(0,s.jsx)(a.default,{component:"span",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:B||p("flows.subflow.choose")})}),O&&!V&&n&&(0,s.jsx)(d.A,{size:"small",onClick:()=>n(O),startIcon:(0,s.jsx)(rK,{}),sx:{textTransform:"none"},children:p("flows.subflow.openTarget")})]})]}),V&&(0,s.jsx)(h.A,{severity:"warning",sx:{mt:1},children:p("flows.subflow.missing")}),U&&(0,s.jsx)(h.A,{severity:"info",sx:{mt:1},children:p("flows.subflow.legacyExecution")}),(0,s.jsx)(tm.A,{open:S,onClose:()=>C(!1),title:p("flows.subflow.pickerTitle"),description:p("flows.subflow.pickerHelp"),isLoading:j,skeleton:(0,s.jsx)(tj.o,{}),emptyMessage:p("flows.subflow.pickerEmpty"),searchable:!0,searchPlaceholder:p("flows.subflow.search"),searchTerm:L.searchTerm,onSearchChange:L.setSearchTerm,items:L.items.map(e=>({key:e.id,content:(0,s.jsx)(tj.A,{flow:e,selected:e.id===O,onSelect:e=>{W("subflowId",e),C(!1)},pickerMode:!0})})),groups:L.groups?L.groups.map(e=>({...e,items:e.items.map(e=>({key:e.id,content:(0,s.jsx)(tj.A,{flow:e,selected:e.id===O,onSelect:e=>{W("subflowId",e),C(!1)},pickerMode:!0})}))})):null,collapsedKeys:L.collapsedKeys,onToggleGroup:L.toggleGroup}),"guided"===u&&(0,s.jsx)(v.A,{fullWidth:!0,label:p("flows.subflow.helperTask"),value:f.description||"",onChange:e=>g({...f,description:e.target.value}),margin:"normal",multiline:!0,minRows:2,helperText:p("flows.subflow.helperTaskHelp")}),"advanced"===u&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:p("flows.subflow.inputTitle")}),(0,s.jsxs)(a.default,{role:"radiogroup","aria-label":p("flows.subflow.inputAria"),sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,s.jsx)(rw,{selected:"full-history"===K,onClick:()=>W("inputMode","full-history"),icon:(0,s.jsx)(rf,{}),title:p("flows.subflow.fullHistory"),description:p("flows.subflow.fullHistoryHelp")}),(0,s.jsx)(rw,{selected:"latest-message"===K,onClick:()=>W("inputMode","latest-message"),icon:(0,s.jsx)(rh,{}),title:p("flows.subflow.latest"),description:p("flows.subflow.latestHelp")}),(0,s.jsx)(rw,{selected:"isolated"===K,onClick:()=>W("inputMode","isolated"),icon:(0,s.jsx)(rm,{}),title:p("flows.subflow.isolated"),description:p("flows.subflow.isolatedHelp")})]}),"isolated"===K&&(0,s.jsx)(v.A,{fullWidth:!0,label:p("flows.subflow.defaultPrompt"),value:q,onChange:e=>W("promptTemplate",e.target.value),margin:"normal",multiline:!0,rows:3,helperText:p("flows.subflow.defaultPromptHelp")}),(0,s.jsx)(i.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:p("flows.subflow.workersTitle")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mb:1},children:p("flows.subflow.queueHelp")}),(0,s.jsx)(v.A,{label:p("flows.subflow.maxCopies"),type:"number",size:"small",sx:{width:240},inputProps:{min:1},value:"number"==typeof f.properties?.concurrencyLimit?f.properties.concurrencyLimit:"",onChange:e=>{let t=e.target.value;if(""===t)g(e=>{if(!e)return null;let t={...e.properties};return delete t.concurrencyLimit,{...e,properties:t}});else{let e=Math.max(1,Math.floor(Number(t)));Number.isNaN(e)||W("concurrencyLimit",e)}},helperText:p("flows.subflow.defaultFour")}),(0,s.jsx)(i.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:p("flows.subflow.outputTitle")}),(0,s.jsxs)(a.default,{role:"radiogroup","aria-label":p("flows.subflow.outputAria"),sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,s.jsx)(rw,{selected:"final-only"!==(f.properties?.outputMode||"steps"),onClick:()=>W("outputMode","steps"),icon:(0,s.jsx)(rg,{}),title:p("flows.subflow.fullOutput"),description:p("flows.subflow.fullOutputHelp")}),(0,s.jsx)(rw,{selected:f.properties?.outputMode==="final-only",onClick:()=>W("outputMode","final-only"),icon:(0,s.jsx)(rx,{}),title:p("flows.subflow.condensed"),description:p("flows.subflow.condensedHelp")})]}),(0,s.jsx)(i.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:p("flows.subflow.resultPresentationTitle")}),(0,s.jsxs)(a.default,{role:"radiogroup","aria-label":p("flows.subflow.resultPresentationAria"),sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,s.jsx)(rw,{selected:(f.properties?.resultPresentation??"joined")==="separate",onClick:()=>W("resultPresentation","separate"),icon:(0,s.jsx)(rG,{}),title:p("flows.subflow.resultSeparate"),description:p("flows.subflow.resultSeparateHelp")}),(0,s.jsx)(rw,{selected:(f.properties?.resultPresentation??"joined")!=="separate",onClick:()=>W("resultPresentation","joined"),icon:(0,s.jsx)(r_,{}),title:p("flows.subflow.resultJoined"),description:p("flows.subflow.resultJoinedHelp")})]}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:p("flows.subflow.resultPresentationHelp")}),(0,s.jsx)(i.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:p("flows.subflow.debugging")}),(0,s.jsx)(F.A,{sx:{display:"block"},control:(0,s.jsx)(z.A,{checked:f.properties?.saveConversation!==!1,onChange:e=>W("saveConversation",e.target.checked)}),label:p("flows.subflow.saveConversation")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{ml:4,mt:-.5},children:p("flows.subflow.saveConversationHelp")}),(0,s.jsx)(i.A,{variant:"subtitle2",sx:{mt:3,mb:1},children:p("flows.subflow.invocationTitle")}),(0,s.jsx)(F.A,{sx:{display:"block"},control:(0,s.jsx)(z.A,{checked:f.properties?.invocationMode==="tool",onChange:e=>W("invocationMode",e.target.checked?"tool":"handoff")}),label:p("flows.subflow.invocationTool")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{ml:4,mt:-.5},children:p("flows.subflow.invocationToolHelp")}),(0,s.jsx)(P.A,{sx:{my:3}}),(0,s.jsx)(ry,{value:{captureVariable:k,captureResource:I,captureKvScope:T,captureKvKey:H},onChange:e=>{void 0!==e.captureVariable&&M(e.captureVariable),void 0!==e.captureResource&&$(e.captureResource),void 0!==e.captureKvScope&&N(e.captureKvScope),void 0!==e.captureKvKey&&R(e.captureKvKey)}})]})]}),(0,s.jsxs)(b.A,{children:[(0,s.jsx)(d.A,{onClick:r,children:p("flows.modal.cancel")}),(0,s.jsx)(d.A,{onClick:()=>{if(t&&f){if("guided"===u){l(t.id,f),r();return}let e={...f.properties},s=k.trim();s?e.captureVariable=s:delete e.captureVariable;let o=I.trim();o?e.captureResource=o:delete e.captureResource;let n=eK(T,H);n?e.captureKv=n:delete e.captureKv,l(t.id,{...f,properties:e}),r()}},variant:"contained",color:"primary",children:p("flows.modal.save")})]})]})};var rY=r(82283),rQ=r(79359),rZ=r(78293),r0=r(62310);let r1=(0,W.h)("frontend/components/Flow/FlowManager/FlowBuilder/Modals/ResourceNodePropertiesModal"),r2=({open:e,node:t,onClose:r,onSave:l,flowNodes:n})=>{let{t:c}=(0,ev.s9)(),[u,p]=(0,o.useState)(null),{servers:h,isLoading:g}=(0,tG.v)(),[w,y]=(0,o.useState)([]),[j,A]=(0,o.useState)(!1),[S,C]=(0,o.useState)(null),[k,M]=(0,o.useState)(!1);(0,o.useEffect)(()=>{if(t){p({...t.data,properties:{scope:"run",...t.data.properties}});let e=!!t.data.label&&"Resource Node"!==t.data.label.trim(),r=!!t.data.description&&t.data.description.trim().length>0;M(e||r)}},[t,e]);let I=u?.properties?.scope==="mcp"?"mcp":"run",$=u?.properties?.boundServer||"",T=u?.properties?.uri||"",z=u?.properties?.runName||"",H=(0,o.useMemo)(()=>{let e=(n??[]).filter(e=>e.id!==t?.id).map(e=>{try{return JSON.stringify(e.data?.properties??{})}catch{return""}});return(0,tU.jX)(e)},[n,t?.id]),P=(0,o.useCallback)((e,t)=>{p(r=>r?{...r,properties:{...r.properties,[e]:t}}:r)},[]);(0,o.useEffect)(()=>{if(!e||"mcp"!==I||!$){y([]),C(null);return}let t=!1;return A(!0),C(null),O.S.listServerResources($).then(e=>{t||(e.error?(C(e.error),y([])):y([...(e.resources??[]).map(e=>({uri:e.uri,name:e.name,description:e.description,mimeType:e.mimeType})),...(e.resourceTemplates??[]).map(e=>({uri:e.uriTemplate,name:e.name?`${e.name} (${c("flows.resource.template")})`:`(${c("flows.resource.template")})`,description:e.description}))]))}).catch(e=>{t||(r1.warn(`Failed to browse resources of ${$}`,e),C(e instanceof Error?e.message:String(e)))}).finally(()=>{t||A(!1)}),()=>{t=!0}},[e,I,$,c]);let W="run"===I&&!!z.trim()&&!eV(z.trim());return u?(0,s.jsxs)(m.A,{open:e,onClose:r,maxWidth:"sm",fullWidth:!0,children:[(0,s.jsx)(tB.A,{title:c("flows.resource.title"),onClose:r}),(0,s.jsx)(x.A,{children:(0,s.jsxs)(a.default,{display:"flex",flexDirection:"column",gap:2,mt:1,children:[(0,s.jsxs)(tk.A,{children:[(0,s.jsxs)(rY.A,{row:!0,value:I,onChange:e=>P("scope","mcp"===e.target.value?"mcp":"run"),children:[(0,s.jsx)(F.A,{value:"run",control:(0,s.jsx)(rQ.A,{}),label:c("flows.resource.temporary")}),(0,s.jsx)(F.A,{value:"mcp",control:(0,s.jsx)(rQ.A,{}),label:c("flows.resource.mcp")})]}),(0,s.jsx)(tQ.A,{children:"mcp"===I?c("flows.resource.mcpHelp"):c("flows.resource.temporaryHelp")})]}),"mcp"===I?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(tk.A,{fullWidth:!0,children:[(0,s.jsx)(tM.A,{id:"resource-server-label",children:c("flows.resource.server")}),(0,s.jsxs)(tI.A,{labelId:"resource-server-label",label:c("flows.resource.server"),value:$,onChange:e=>{P("boundServer",e.target.value)},children:[g&&(0,s.jsx)(R.A,{value:"",disabled:!0,children:c("flows.resource.loadingServers")}),h.map(e=>(0,s.jsx)(R.A,{value:e.name,children:e.name},e.name))]})]}),(0,s.jsx)(v.A,{label:c("flows.resource.uri"),value:T,onChange:e=>P("uri",e.target.value),fullWidth:!0,placeholder:c("flows.resource.uriPlaceholder"),helperText:c("flows.resource.uriHelp")}),j&&(0,s.jsxs)(a.default,{display:"flex",alignItems:"center",gap:1,children:[(0,s.jsx)(N.default,{size:18}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:c("flows.resource.loading")})]}),S&&(0,s.jsx)(i.A,{variant:"body2",color:"warning.main",children:c("flows.resource.loadFailed",{error:S})}),!j&&!S&&$&&0===w.length&&(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:c("flows.resource.none")}),w.length>0&&(0,s.jsx)(eT.A,{dense:!0,sx:{maxHeight:240,overflow:"auto",border:1,borderColor:"divider",borderRadius:1},children:w.map(e=>(0,s.jsxs)(ez.A,{selected:e.uri===T,onClick:()=>P("uri",e.uri),children:[(0,s.jsx)(eN.A,{sx:{minWidth:34},children:(0,s.jsx)(eu.A,{fontSize:"small",sx:{color:"#009688"}})}),(0,s.jsx)(eF.A,{primary:e.name||e.uri,secondary:e.name?e.uri:e.description,secondaryTypographyProps:{sx:{wordBreak:"break-all"}}})]},e.uri))})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(rZ.A,{freeSolo:!0,options:H,inputValue:z,onInputChange:(e,t)=>P("runName",t),renderInput:e=>(0,s.jsx)(v.A,{...e,label:c("flows.resource.temporaryName"),fullWidth:!0,error:W,helperText:W?c("flows.resource.invalidName"):H.length>0?c("flows.resource.nameSuggestions"):c("flows.resource.nameHelp")})}),z.trim()&&!W&&(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:c("flows.resource.runtimeUri",{name:z.trim()})})]}),(0,s.jsx)(r0.A,{component:"button",type:"button",underline:"hover",onClick:()=>M(e=>!e),sx:{alignSelf:"flex-start"},children:k?c("flows.resource.hideAdvanced"):c("flows.resource.showAdvanced")}),(0,s.jsx)(f.A,{in:k,unmountOnExit:!0,children:(0,s.jsxs)(a.default,{display:"flex",flexDirection:"column",gap:2,children:[(0,s.jsx)(v.A,{label:c("flows.resource.label"),value:u.label,onChange:e=>p({...u,label:e.target.value}),fullWidth:!0,helperText:c("flows.resource.labelHelp")}),(0,s.jsx)(v.A,{label:c("flows.resource.description"),value:u.description??"",onChange:e=>p({...u,description:e.target.value}),fullWidth:!0,multiline:!0,minRows:2})]})})]})}),(0,s.jsxs)(b.A,{children:[(0,s.jsx)(d.A,{onClick:r,children:c("flows.modal.cancel")}),(0,s.jsx)(d.A,{onClick:()=>{if(!t||!u)return;let e={...u.properties};"run"===I?(delete e.boundServer,delete e.uri,delete e.mimeType,e.scope="run",e.runName=z.trim()):(delete e.runName,e.scope="mcp");let r=(u.label??"").trim()||("run"===I?z.trim()||c("flows.resource.temporary"):c("flows.resource.mcp"));l(t.id,{...u,label:r,properties:e})},variant:"contained",children:c("flows.modal.save")})]})]}):null},r5=({open:e,node:t,onClose:r,onSave:l})=>{let{t:n}=(0,ev.s9)(),[i,c]=(0,o.useState)(null),[u,p]=(0,o.useState)(!1);(0,o.useEffect)(()=>{t&&(c({...t.data,properties:{...t.data.properties}}),p(!!t.data.properties?.payloadTemplate))},[t,e]);let g=(e,t)=>{c(r=>r?{...r,properties:{...r.properties,[e]:t}}:r)};if(!i)return null;let w=i.properties?.topic??"",y=i.properties?.payloadTemplate??"";return(0,s.jsxs)(m.A,{open:e,onClose:r,maxWidth:"sm",fullWidth:!0,children:[(0,s.jsx)(tB.A,{title:n("flows.signal.title"),onClose:r}),(0,s.jsx)(x.A,{children:(0,s.jsxs)(a.default,{display:"flex",flexDirection:"column",gap:2,mt:1,children:[(0,s.jsx)(v.A,{label:n("flows.signal.name"),value:w,onChange:e=>g("topic",e.target.value),fullWidth:!0,required:!0,autoFocus:!0,error:!w.trim(),placeholder:n("flows.signal.placeholder"),helperText:w.trim()?n("flows.signal.nameHelp"):n("flows.signal.required")}),(0,s.jsx)(h.A,{severity:"info",children:n("flows.signal.behavior")}),(0,s.jsx)(r0.A,{component:"button",type:"button",underline:"hover",onClick:()=>p(e=>!e),sx:{alignSelf:"flex-start"},children:u?n("flows.signal.hideAdvanced"):n("flows.signal.showAdvanced")}),(0,s.jsx)(f.A,{in:u,unmountOnExit:!0,children:(0,s.jsx)(v.A,{label:n("flows.signal.payload"),value:y,onChange:e=>g("payloadTemplate",e.target.value),fullWidth:!0,multiline:!0,minRows:3,placeholder:n("flows.signal.payloadPlaceholder"),helperText:n("flows.signal.payloadHelp")})})]})}),(0,s.jsxs)(b.A,{children:[(0,s.jsx)(d.A,{onClick:r,children:n("flows.modal.cancel")}),(0,s.jsx)(d.A,{onClick:()=>{if(!t||!i)return;let e={...i.properties},r="string"==typeof e.topic?e.topic.trim():"";e.topic=r;let s=r||n("flows.signal.defaultName");l(t.id,{...i,label:s,properties:e})},variant:"contained",children:n("flows.modal.save")})]})]})};var r4=r(72133),r3=r(95156);let r9=(0,y.A)((0,s.jsx)("path",{d:"m20 12-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8z"}),"ArrowDownward"),r6=({open:e,node:t,onClose:r,onSave:l})=>{let{t:n}=(0,ev.s9)(),[c,p]=(0,o.useState)(null);(0,o.useEffect)(()=>{t&&p({...t.data,properties:{...t.data.properties,entries:Array.isArray(t.data.properties?.entries)?[...t.data.properties.entries]:[]}})},[t,e]);let f=c?.properties?.entries??[],g=e=>p(t=>t?{...t,properties:{...t.properties,entries:e}}:t),w=(e,t)=>g(f.map((r,s)=>s===e?{...r,...t}:r)),y=(e,t)=>{let r=e+t;if(r<0||r>=f.length)return;let s=[...f];[s[e],s[r]]=[s[r],s[e]],g(s)},j=f.reduce((e,t,r)=>{if("toolCall"!==t.kind)return e;let s=(t.argumentsJson??"").trim();if(!s||/\$\{(?:var|res):[^}]*\}/.test(s))return e;try{JSON.parse(s)}catch{e.push(r)}return e},[]);return c?(0,s.jsxs)(m.A,{open:e,onClose:r,maxWidth:"md",fullWidth:!0,children:[(0,s.jsx)(tB.A,{title:n("flows.static.title"),onClose:r}),(0,s.jsx)(x.A,{children:(0,s.jsxs)(a.default,{display:"flex",flexDirection:"column",gap:2,mt:1,children:[(0,s.jsxs)(h.A,{severity:"info",children:[n("flows.static.info")," ",n("flows.static.substitutionNote")," ",(0,s.jsx)("a",{href:"https://github.com/mario-andreschak/FLUJO/blob/main/docs/features/flows/static-node.md",target:"_blank",rel:"noreferrer",children:n("flows.static.docsLink")})]}),(0,s.jsx)(v.A,{label:n("flows.static.name"),value:c.properties?.name??c.label??"",onChange:e=>p(t=>t?{...t,label:e.target.value,properties:{...t.properties,name:e.target.value}}:t),fullWidth:!0}),(0,s.jsx)(F.A,{control:(0,s.jsx)(z.A,{checked:c.properties?.injectOnce===!0,onChange:e=>p(t=>t?{...t,properties:{...t.properties,injectOnce:e.target.checked}}:t)}),label:n("flows.static.injectOnce")}),(0,s.jsx)(tQ.A,{sx:{mt:-2},children:n("flows.static.injectOnce.help")}),0===f.length&&(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:n("flows.static.empty")}),f.map((e,t)=>(0,s.jsxs)(I.A,{variant:"outlined",sx:{p:2},children:[(0,s.jsxs)(a.default,{display:"flex",alignItems:"center",justifyContent:"space-between",mb:1,children:[(0,s.jsxs)(i.A,{variant:"subtitle2",children:[t+1,"."," ","toolCall"===e.kind?n("flows.static.toolCallEntry"):n("flows.static.messageEntry")]}),(0,s.jsxs)(a.default,{children:[(0,s.jsx)(u.A,{size:"small","aria-label":n("flows.static.moveUp"),onClick:()=>y(t,-1),disabled:0===t,children:(0,s.jsx)(r3.A,{fontSize:"small"})}),(0,s.jsx)(u.A,{size:"small","aria-label":n("flows.static.moveDown"),onClick:()=>y(t,1),disabled:t===f.length-1,children:(0,s.jsx)(r9,{fontSize:"small"})}),(0,s.jsx)(u.A,{size:"small","aria-label":n("flows.static.remove"),onClick:()=>g(f.filter((e,r)=>r!==t)),children:(0,s.jsx)(r4.A,{fontSize:"small"})})]})]}),"message"===e.kind?(0,s.jsxs)(a.default,{display:"flex",flexDirection:"column",gap:2,children:[(0,s.jsxs)(v.A,{select:!0,label:n("flows.static.role"),value:e.role,onChange:e=>w(t,{role:e.target.value}),sx:{maxWidth:220},children:[(0,s.jsx)(R.A,{value:"system",children:"system"}),(0,s.jsx)(R.A,{value:"user",children:"user"}),(0,s.jsx)(R.A,{value:"assistant",children:"assistant"})]}),(0,s.jsx)(v.A,{label:n("flows.static.content"),value:e.content,onChange:e=>w(t,{content:e.target.value}),fullWidth:!0,multiline:!0,rows:3})]}):(0,s.jsxs)(a.default,{display:"flex",flexDirection:"column",gap:2,children:[(0,s.jsx)(v.A,{label:n("flows.static.toolName"),value:e.toolName,onChange:e=>w(t,{toolName:e.target.value}),fullWidth:!0,error:!e.toolName?.trim()}),(0,s.jsx)(v.A,{label:n("flows.static.arguments"),value:e.argumentsJson,onChange:e=>w(t,{argumentsJson:e.target.value}),fullWidth:!0,multiline:!0,rows:3,error:j.includes(t),helperText:j.includes(t)?n("flows.static.invalidJson"):n("flows.static.argumentsHelp")}),(0,s.jsx)(v.A,{label:n("flows.static.result"),value:e.result,onChange:e=>w(t,{result:e.target.value}),fullWidth:!0,multiline:!0,rows:3})]})]},t)),(0,s.jsxs)(a.default,{display:"flex",gap:1,children:[(0,s.jsx)(d.A,{onClick:()=>g([...f,{kind:"message",role:"user",content:""}]),variant:"outlined",children:n("flows.static.addMessage")}),(0,s.jsx)(d.A,{onClick:()=>g([...f,{kind:"toolCall",toolName:"",argumentsJson:"{}",result:""}]),variant:"outlined",children:n("flows.static.addToolCall")})]})]})}),(0,s.jsxs)(b.A,{children:[(0,s.jsx)(d.A,{onClick:r,children:n("flows.modal.cancel")}),(0,s.jsx)(d.A,{onClick:()=>{t&&c&&l(t.id,{...c,properties:{...c.properties,entries:f}})},variant:"contained",disabled:j.length>0,children:n("flows.modal.save")})]})]}):null};var r8=r(81163),r7=r(22439),se=r(47214),st=r(38845),sr=r(28512),ss=r(73546),so=r(63561),sl=r(96058),sn=r(28942),sa=r(6404),si=r(58504),sd=r(99057),sc=r(52695),su=r(11060);let sp=(0,W.h)("frontend/components/FlowBuilder/Modals/TriggerNodePropertiesModal"),sf={type:"schedule",cron:"0 9 * * *"},sh={type:"file-watch",path:"",events:["add","change"]},sm={type:"mcp-poll",serverName:"",toolName:"",args:{},cron:"*/5 * * * *",evaluate:{mode:"on-change"}},sg={type:"url-watch",url:"",cron:"*/15 * * * *"},sx={type:"flow-event",source:{flowId:""},on:["completed"]},sw=({open:e,node:t,flowId:r,onClose:l,onSave:n})=>{let{t:c}=(0,ev.s9)(),[u,p]=(0,o.useState)(c("flows.trigger.defaultName")),[f,g]=(0,o.useState)(!0),[w,y]=(0,o.useState)(sf),[j,A]=(0,o.useState)("skip"),[S,C]=(0,o.useState)(""),[k,M]=(0,o.useState)(!1),[I,$]=(0,o.useState)(null),[T,H]=(0,o.useState)([]),[W,E]=(0,o.useState)(()=>crypto.randomUUID()),[L,O]=(0,o.useState)(!1);(0,o.useEffect)(()=>{if(!e||!t)return;$(null);let r=t.data.properties||{};p("string"==typeof r.name?r.name:c("flows.trigger.defaultName")),g(!1!==r.enabled),y(r.trigger||sf),A(r.overlapStrategy||"skip"),C("string"==typeof r.prompt?r.prompt:""),"string"==typeof r.executionId&&r.executionId?(E(r.executionId),O(!0)):(E(crypto.randomUUID()),O(!1))},[e,t,c]),(0,o.useEffect)(()=>{if(!e)return;let t=!1;return D.g.loadFlows().then(e=>{t||H(e||[])}).catch(()=>{t||H([])}),()=>{t=!0}},[e]);let V=(0,o.useCallback)(async()=>{if(!t)return;M(!0),$(null);let e={name:u.trim()||c("flows.trigger.defaultName"),flowId:r,prompt:S,overlapStrategy:j,trigger:w,enabled:f};try{let r;if(!(r=L?await so.P.update(W,e):await so.P.create({...e,id:W})).success){$(r.error||c("flows.trigger.saveFailed")),M(!1);return}O(!0);let s=u.trim()||c("flows.trigger.defaultNode");n(t.id,{...t.data,label:s,type:"trigger",properties:{executionId:W,name:u,enabled:f,trigger:w,overlapStrategy:j,prompt:S}})}catch(e){$(e instanceof Error?e.message:c("flows.trigger.saveFailed")),M(!1);return}M(!1),sp.info(`TriggerNodePropertiesModal: Saved trigger node for executionId=${W}`)},[t,W,u,f,w,j,S,r,L,n,c]);return t?(0,s.jsx)(s.Fragment,{children:(0,s.jsxs)(m.A,{open:e,onClose:l,maxWidth:"md",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"#E91E63",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,s.jsx)(tB.A,{title:c("flows.trigger.title"),onClose:l}),(0,s.jsx)(P.A,{}),(0,s.jsxs)(x.A,{sx:{p:3},children:[(0,s.jsxs)(h.A,{severity:"info",sx:{mb:2},children:[c("flows.trigger.info"),!L&&(0,s.jsxs)(s.Fragment,{children:[" ",c("flows.trigger.createdOnSave")]})]}),(0,s.jsx)(v.A,{fullWidth:!0,label:c("flows.trigger.name"),value:u,onChange:e=>p(e.target.value),margin:"normal",placeholder:c("flows.trigger.namePlaceholder")}),(0,s.jsx)(F.A,{control:(0,s.jsx)(z.A,{checked:f,onChange:e=>g(e.target.checked),color:"primary"}),label:c("flows.trigger.enabled"),sx:{mt:1,mb:1}}),(0,s.jsx)(i.A,{variant:"subtitle1",sx:{mt:2,mb:1,fontWeight:600},children:c("flows.trigger.when")}),(0,s.jsxs)(a.default,{role:"radiogroup","aria-label":c("flows.trigger.typeAria"),sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,s.jsx)(sl.A,{selected:"schedule"===w.type,onClick:()=>{"schedule"!==w.type&&y(sf)},icon:(0,s.jsx)(r8.A,{}),title:c("flows.trigger.schedule"),description:c("flows.trigger.scheduleHelp")}),(0,s.jsx)(sl.A,{selected:"webhook"===w.type,onClick:()=>{"webhook"!==w.type&&y({type:"webhook",token:crypto.randomUUID()})},icon:(0,s.jsx)(r7.A,{}),title:c("flows.trigger.webhook"),description:c("flows.trigger.webhookHelp")}),(0,s.jsx)(sl.A,{selected:"file-watch"===w.type,onClick:()=>{"file-watch"!==w.type&&y(sh)},icon:(0,s.jsx)(se.A,{}),title:c("flows.trigger.files"),description:c("flows.trigger.filesHelp")}),(0,s.jsx)(sl.A,{selected:"mcp-poll"===w.type,onClick:()=>{"mcp-poll"!==w.type&&y(sm)},icon:(0,s.jsx)(st.A,{}),title:c("flows.trigger.tool"),description:c("flows.trigger.toolHelp")}),(0,s.jsx)(sl.A,{selected:"url-watch"===w.type,onClick:()=>{"url-watch"!==w.type&&y(sg)},icon:(0,s.jsx)(sr.A,{}),title:c("flows.trigger.url"),description:c("flows.trigger.urlHelp")}),(0,s.jsx)(sl.A,{selected:"flow-event"===w.type,onClick:()=>{"flow-event"!==w.type&&y(sx)},icon:(0,s.jsx)(ss.A,{}),title:c("flows.trigger.flow"),description:c("flows.trigger.flowHelp")})]}),"schedule"===w.type&&(0,s.jsx)(sn.A,{cron:w.cron,timezone:w.timezone,onChange:({cron:e,timezone:t})=>y({...w,cron:e,timezone:t}),catchUp:!0===w.catchUp,onCatchUpChange:e=>y({...w,catchUp:e})}),"webhook"===w.type&&(0,s.jsx)(sa.A,{config:w,onChange:y,executionId:W,saved:L}),"file-watch"===w.type&&(0,s.jsx)(si.A,{config:w,onChange:y}),"mcp-poll"===w.type&&(0,s.jsx)(sd.A,{config:w,onChange:y}),"url-watch"===w.type&&(0,s.jsx)(sc.A,{config:w,onChange:y}),"flow-event"===w.type&&(0,s.jsx)(su.A,{config:w,onChange:y,flows:T,currentExecutionId:W}),(0,s.jsxs)(tk.A,{fullWidth:!0,margin:"normal",children:[(0,s.jsx)(tM.A,{id:"overlap-strategy-label",children:c("flows.trigger.overlap")}),(0,s.jsxs)(tI.A,{labelId:"overlap-strategy-label",label:c("flows.trigger.overlap"),value:j,onChange:e=>A(e.target.value),children:[(0,s.jsx)(R.A,{value:"skip",children:c("flows.trigger.overlapSkip")}),(0,s.jsx)(R.A,{value:"queue",children:c("flows.trigger.overlapQueue")}),(0,s.jsx)(R.A,{value:"parallel",children:c("flows.trigger.overlapParallel")}),(0,s.jsx)(R.A,{value:"error",children:c("flows.trigger.overlapError")})]})]}),(0,s.jsx)(v.A,{fullWidth:!0,label:c("flows.trigger.prompt"),value:S,onChange:e=>C(e.target.value),margin:"normal",multiline:!0,minRows:2,placeholder:c("flows.trigger.promptPlaceholder"),helperText:c("flows.trigger.promptHelp")}),I&&(0,s.jsx)(h.A,{severity:"error",sx:{mt:2},children:I})]}),(0,s.jsxs)(b.A,{children:[(0,s.jsx)(d.A,{onClick:l,disabled:k,children:c("flows.modal.cancel")}),(0,s.jsx)(d.A,{onClick:V,variant:"contained",disabled:k,startIcon:k?(0,s.jsx)(N.default,{size:16}):void 0,sx:{backgroundColor:"#E91E63","&:hover":{backgroundColor:"#C2185B"}},children:k?c("flows.builder.saving"):c("flows.modal.save")})]})]})}):null};var sv=r(57312),sb=r(61278);let sy=({flow:e,autoLayout:t=!1,fitViewOnChange:r=!1})=>{let l=(0,n.A)(),a=(0,o.useRef)(null),i=(0,o.useMemo)(()=>(e.edges||[]).filter(e=>e.source&&e.target&&e.sourceHandle&&e.targetHandle),[e.edges]),d=(0,o.useMemo)(()=>t?et(e.nodes||[],i):e.nodes||[],[t,i,e.nodes]);(0,o.useEffect)(()=>{if(!r||!a.current)return;let e=window.setTimeout(()=>{a.current?.fitView({padding:.18,duration:260})},40);return()=>window.clearTimeout(e)},[r,d]);let c=(0,o.useMemo)(()=>({type:"custom",animated:!1,style:{stroke:l.palette.text.secondary,strokeWidth:2},markerEnd:{type:sb.TG.ArrowClosed,width:20,height:20,color:l.palette.text.secondary}}),[l.palette.text.secondary]);return(0,s.jsx)(E.Gc,{nodes:d,edges:i,nodeTypes:el.c_,edgeTypes:el.nd,defaultEdgeOptions:c,connectionLineType:sb.Do.SmoothStep,onInit:e=>{a.current=e},fitView:!0,minZoom:.1,maxZoom:2,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,deleteKeyCode:null,proOptions:{hideAttribution:!0},children:(0,s.jsx)(E.VS,{})})},sj=e=>(0,s.jsx)(E.Ln,{children:(0,s.jsx)(sy,{...e})}),sA=(0,W.h)("components/flow/FlowBuilder/Modals/FlowVersionHistoryDialog"),sS=({open:e,flowId:t,onClose:r,onRestore:l})=>{let{t:n,tp:c,formatDate:u}=(0,ev.s9)(),[p,f]=(0,o.useState)(!1),[h,g]=(0,o.useState)([]),[w,v]=(0,o.useState)(null),[y,j]=(0,o.useState)(!1),[A,S]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!e||!t)return;let r=!1;return f(!0),g([]),v(null),S(null),D.g.listFlowVersions(t).then(e=>{r||g(e)}).finally(()=>{r||f(!1)}),()=>{r=!0}},[e,t]);let C=(0,o.useCallback)(e=>{t&&(v(e),j(!0),S(null),D.g.getFlowVersion(t,e).then(t=>{t?S(t.flow):sA.warn(`Version ${e} could not be loaded (pruned?)`)}).finally(()=>j(!1)))},[t]),k=(0,o.useCallback)(()=>{A&&l(A)},[A,l]);return(0,s.jsxs)(m.A,{open:e,onClose:r,maxWidth:"lg",fullWidth:!0,children:[(0,s.jsx)(tB.A,{title:n("flows.history.title"),onClose:r}),(0,s.jsx)(x.A,{dividers:!0,sx:{p:0},children:(0,s.jsxs)(a.default,{sx:{display:"flex",height:"65vh"},children:[(0,s.jsx)(a.default,{sx:{width:300,borderRight:1,borderColor:"divider",overflowY:"auto"},children:p?(0,s.jsx)(a.default,{sx:{display:"flex",justifyContent:"center",p:4},children:(0,s.jsx)(N.default,{size:28})}):0===h.length?(0,s.jsx)(a.default,{sx:{p:3},children:(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:n("flows.history.empty")})}):(0,s.jsx)(eT.A,{disablePadding:!0,children:h.map((e,t)=>(0,s.jsxs)(o.Fragment,{children:[(0,s.jsx)(ez.A,{selected:e.versionId===w,onClick:()=>C(e.versionId),children:(0,s.jsx)(eF.A,{primary:(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,s.jsx)(i.A,{variant:"body2",children:u(e.savedAt,{dateStyle:"medium",timeStyle:"short"})}),0===t&&(0,s.jsx)(T.A,{label:n("flows.history.mostRecent"),size:"small"})]}),secondary:`${c("flows.history.node",e.nodeCount)} \xb7 ${c("flows.history.edge",e.edgeCount)}`})}),(0,s.jsx)(P.A,{component:"li"})]},e.versionId))})}),(0,s.jsx)(a.default,{sx:{flex:1,position:"relative",minWidth:0},children:y?(0,s.jsx)(a.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,s.jsx)(N.default,{size:32})}):A?(0,s.jsx)(sj,{flow:A}):(0,s.jsx)(a.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",p:4},children:(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",align:"center",children:0===h.length?n("flows.history.afterSave"):n("flows.history.select")})})})]})}),(0,s.jsxs)(b.A,{children:[(0,s.jsx)(d.A,{onClick:r,children:n("common.close")}),(0,s.jsx)(d.A,{variant:"contained",color:"primary",startIcon:(0,s.jsx)(sv.A,{}),onClick:k,disabled:!A,children:n("flows.history.restore")})]})]})},sC=(e,t,r,s)=>e?e(t,s):r,sk=(e,t,r,s)=>e?e(t,r):s,sM=e=>e.data?.bidirectional===!0,sI=e=>!(0,U.BY)(e),s$=e=>String(e?.type??e?.data?.type??""),sT=e=>String(e?.data?.label??e?.id??"Unknown node");function sN(e,t,r,s,o,l){return l?{...l,id:e,source:t,target:r,sourceHandle:s,targetHandle:o,data:{...l.data??{},edgeType:"standard",bidirectional:!1},markerStart:void 0}:{id:e,source:t,target:r,sourceHandle:s,targetHandle:o,type:"custom",animated:!0,data:{edgeType:"standard"}}}function sF({open:e,processNodeId:t,parentFlow:r,existingFlowNames:l,onClose:n,onAccept:c}){let{t:u,tp:p,formatList:f}=(0,ev.s9)(),[g,y]=(0,o.useState)(""),[j,A]=(0,o.useState)(null),[S,C]=(0,o.useState)(!1),[k,M]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!e)return;let s=r.nodes.find(e=>e.id===t);y(`${String(s?.data?.label||u("flows.convert.processDefault")).replace(/[^\w-]+/g,"_")}_subflow`),A(null),C(!1),M(null)},[e,t,r.nodes,u]);let I=()=>{t&&(M(null),A(function({parentFlow:e,processNodeId:t,subflowName:r,existingFlowNames:s=[],createId:o=L.A,t:l,tp:n}){let a=[],i=[],d=e.nodes??[],c=e.edges??[],u=new Map(d.map(e=>[e.id,e])),p=u.get(t),f=r.trim();p&&"process"===s$(p)||a.push({code:"target-not-process",message:sC(l,"flows.convert.error.target","The selected node no longer exists or is not a Process node."),nodeId:t}),f?/^[\w-]+$/.test(f)?s.some(e=>e.toLowerCase()===f.toLowerCase())&&a.push({code:"duplicate-name",message:sC(l,"flows.convert.error.duplicateName",`A flow named "${f}" already exists.`,{name:f})}):a.push({code:"invalid-name",message:sC(l,"flows.convert.error.invalidName","The subflow name may contain only letters, numbers, underscores, and dashes.")}):a.push({code:"name-required",message:sC(l,"flows.convert.error.nameRequired","Enter a name for the new subflow.")});let h=new Set;p&&h.add(p.id);let m=p?[p.id]:[];for(;m.length>0;){let e=m.shift();for(let t of c){if(!sI(t))continue;let r=[];for(let s of(t.source===e&&r.push(t.target),sM(t)&&t.target===e&&r.push(t.source),r)){if(h.has(s))continue;let e=u.get(s);if(!e){a.push({code:"missing-edge-node",message:sC(l,"flows.convert.error.missingEdgeNode",`Edge "${t.id}" points to a missing node. Repair the flow before converting.`,{edge:t.id}),edgeId:t.id});continue}let r=s$(e);"signal"===r?(h.add(s),m.push(s)):("mcp"===r||"resource"===r)&&a.push({code:"attachment-on-control-edge",message:sC(l,"flows.convert.error.attachmentControl",`${sT(e)} is connected as control flow. Reconnect it with its ${r.toUpperCase()} attachment handles before converting.`,{node:sT(e),type:r.toUpperCase()}),nodeId:s,edgeId:t.id})}}}let g=!0;for(;g;)for(let e of(g=!1,c)){if(!(0,U.BY)(e))continue;let t=h.has(e.source);if(t===h.has(e.target))continue;let r=t?e.target:e.source,s=s$(u.get(r));"mcp"===s||"resource"===s?(h.add(r),g=!0):a.push({code:"unsupported-attachment",message:sC(l,"flows.convert.error.unsupportedAttachment",`Attachment edge "${e.id}" does not connect to an MCP or Resource node.`,{edge:e.id}),edgeId:e.id,nodeId:r})}let x=c.filter(e=>h.has(e.source)&&h.has(e.target)),w=[],v=[],b=new Set;for(let e of c){let t=h.has(e.source);if(t===h.has(e.target))continue;if((0,U.BY)(e)){a.push({code:"shared-attachment",message:sC(l,"flows.convert.error.sharedAttachment",`Attachment "${e.id}" is also used outside the converted region. Duplicate or disconnect that attachment first.`,{edge:e.id}),edgeId:e.id});continue}let r=t?e.source:e.target,s=t?e.target:e.source,o={edge:e,edgeId:e.id,insideNodeId:r,outsideNodeId:s,outsideLabel:sT(u.get(s))};b.add(s),t?v.push(o):w.push(o),sM(e)&&((t?w:v).push(o),a.push({code:"bidirectional-boundary",message:sC(l,"flows.convert.error.bidirectional",`Boundary edge "${e.id}" is bidirectional. Make it one-way before converting; internal bidirectional edges are preserved.`,{edge:e.id}),edgeId:e.id}))}let y=[...new Map(v.map(e=>[e.edgeId,e])).values()];y.length>1&&a.push({code:"multiple-outputs",message:sk(n,"flows.convert.error.outputs",y.length,`This region has ${y.length} distinct parent exits. A Subflow supports one outgoing control path; join the branches before converting.`)});let j=d.filter(e=>h.has(e.id)),A={includedNodes:j.map(e=>({id:e.id,label:sT(e),type:s$(e)})),attachmentCount:j.filter(e=>"mcp"===s$(e)||"resource"===s$(e)).length,signalCount:j.filter(e=>"signal"===s$(e)).length,internalEdgeCount:x.length,inputCount:new Set(w.map(e=>e.edgeId)).size,outputCount:y.length,excludedBoundaryNodes:[...b].map(e=>{let t=u.get(e);return{id:e,label:sT(t),type:s$(t)}}),rewires:[sk(n,"flows.convert.rewire.inputs",new Set(w.map(e=>e.edgeId)).size,`${new Set(w.map(e=>e.edgeId)).size} parent input edge(s) will target the new Subflow node.`),1===y.length?sC(l,"flows.convert.rewire.output",`The parent output to ${y[0].outsideLabel} will leave the new Subflow node.`,{node:y[0].outsideLabel}):sC(l,"flows.convert.rewire.noOutput","The new Subflow node will have no parent output."),sC(l,"flows.convert.rewire.childInput","The child Start node will provide an isolated input to the converted Process.")],warnings:i};0===y.length&&i.push(sC(l,"flows.convert.warning.noFollowup","No parent follow-up exists; the extracted fan-out will finish inside the child flow."));let S=w.map(({edge:e,...t})=>t),C=v.map(({edge:e,...t})=>t),k={valid:0===a.length,errors:a,selectedNodeIds:[...h],selectedEdgeIds:x.map(e=>e.id),boundaryInputs:S,boundaryOutputs:C,preview:A};if(a.length>0||!p)return k;let M=o(),I=o(),$=o(),T=()=>`conversion-${o()}`,N=j.filter(e=>{let t=s$(e);return"process"===t||"signal"===t}),F=Math.min(...j.map(e=>e.position.y),p.position.y),z=Math.max(...j.map(e=>e.position.y),p.position.y),H={id:I,type:"start",position:{x:p.position.x,y:F-180},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}},R={id:$,type:"finish",position:{x:p.position.x,y:z+180},data:{label:"Finish Node",type:"finish",properties:{}}},P=[...x.map(e=>({...e,data:e.data?{...e.data}:e.data})),sN(T(),I,p.id,"start-bottom","process-top")];if(1===y.length){let e=y[0];P.push(sN(T(),e.insideNodeId,$,"signal"===s$(u.get(e.insideNodeId))?"signal-bottom":"process-bottom","finish-top",e.edge))}else{let e=N.filter(e=>!c.some(t=>!!sI(t)&&(!!(t.source===e.id&&h.has(t.target))||sM(t)&&t.target===e.id&&h.has(t.source)))),t=e.length>0?e:[p];for(let e of(t.length>1&&i.push(sk(n,"flows.convert.warning.branches",t.length,`${t.length} internal branches will converge on the child Finish node.`)),t))P.push(sN(T(),e.id,$,"signal"===s$(e)?"signal-bottom":"process-bottom","finish-top"))}let W={id:M,name:f,description:`Converted from ${sT(p)} in ${e.name}`,nodes:[H,...j,R],edges:P},E={...p,type:"subflow",selected:!1,data:{label:f,type:"subflow",description:`Runs the ${f} subflow`,properties:{subflowId:M,inputMode:"isolated",outputMode:"final-only",allowCallerPrompt:!0}}},D=d.filter(e=>!h.has(e.id));D.push(E);let O=c.flatMap(e=>{let t=h.has(e.source),r=h.has(e.target);return t&&r?[]:t||r?(0,U.BY)(e)?[]:[{...e,source:t?E.id:e.source,target:r?E.id:e.target,sourceHandle:t?"subflow-bottom":e.sourceHandle,targetHandle:r?"subflow-top":e.targetHandle,data:e.data?{...e.data}:e.data}]:[e]}),V={...e,nodes:D,edges:O};return{...k,valid:!0,childFlow:W,parentFlow:V}}({parentFlow:r,processNodeId:t,subflowName:g,existingFlowNames:l,t:u,tp:p})))},$=async()=>{if(j?.valid&&j.childFlow&&j.parentFlow){C(!0),M(null);try{await c(j),n()}catch(e){M(e instanceof Error?e.message:u("flows.convert.saveFailed"))}finally{C(!1)}}};return(0,s.jsxs)(m.A,{open:e,onClose:S?void 0:n,fullWidth:!0,maxWidth:"md",children:[(0,s.jsx)(tB.A,{title:j?u("flows.convert.previewTitle"):u("flows.convert.title"),onClose:S?()=>{}:n}),(0,s.jsx)(x.A,{children:j?(0,s.jsxs)(te.A,{spacing:2,children:[j.errors.length>0&&(0,s.jsxs)(h.A,{severity:"error",children:[(0,s.jsx)(i.A,{fontWeight:600,children:u("flows.convert.invalid")}),(0,s.jsx)(eT.A,{dense:!0,disablePadding:!0,children:j.errors.map((e,t)=>(0,s.jsx)(eH.Ay,{disableGutters:!0,children:(0,s.jsx)(eF.A,{primary:e.message})},`${e.code}-${t}`))})]}),k&&(0,s.jsx)(h.A,{severity:"error",children:k}),j.preview.warnings.map((e,t)=>(0,s.jsx)(h.A,{severity:"warning",children:e},`${e}-${t}`)),(0,s.jsxs)(a.default,{children:[(0,s.jsx)(i.A,{variant:"subtitle1",fontWeight:600,children:u("flows.convert.included",{name:g.trim()})}),(0,s.jsx)(te.A,{direction:"row",gap:1,flexWrap:"wrap",sx:{mt:1},children:j.preview.includedNodes.map(e=>(0,s.jsx)(T.A,{label:`${e.label} \xb7 ${e.type}`,size:"small"},e.id))}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mt:1},children:u("flows.convert.summary",{attachments:p("flows.convert.attachment",j.preview.attachmentCount),signals:p("flows.convert.signal",j.preview.signalCount),edges:p("flows.convert.edge",j.preview.internalEdgeCount)})})]}),(0,s.jsx)(P.A,{}),(0,s.jsxs)(a.default,{children:[(0,s.jsx)(i.A,{variant:"subtitle1",fontWeight:600,children:u("flows.convert.boundary")}),(0,s.jsx)(eT.A,{dense:!0,children:j.preview.rewires.map(e=>(0,s.jsx)(eH.Ay,{disableGutters:!0,children:(0,s.jsx)(eF.A,{primary:e})},e))}),j.preview.excludedBoundaryNodes.length>0&&(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:u("flows.convert.keptParent",{nodes:f(j.preview.excludedBoundaryNodes.map(e=>`${e.label} (${e.type})`))})})]}),(0,s.jsx)(h.A,{severity:"info",children:u("flows.convert.atomic")})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(w.A,{sx:{mb:2},children:u("flows.convert.help")}),(0,s.jsx)(v.A,{autoFocus:!0,fullWidth:!0,label:u("flows.convert.name"),value:g,onChange:e=>y(e.target.value),onKeyDown:e=>{"Enter"===e.key&&I()}})]})}),(0,s.jsxs)(b.A,{children:[(0,s.jsx)(d.A,{onClick:n,disabled:S,children:j?u("flows.convert.reject"):u("flows.modal.cancel")}),j?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(d.A,{onClick:()=>{A(null),M(null)},disabled:S,children:u("flows.convert.back")}),(0,s.jsx)(d.A,{variant:"contained",onClick:$,disabled:!j.valid||S,children:S?u("flows.convert.converting"):u("flows.convert.accept")})]}):(0,s.jsx)(d.A,{variant:"contained",onClick:I,children:u("flows.convert.preview")})]})]})}let sz=(0,y.A)((0,s.jsx)("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3m3-10H5V5h10z"}),"Save"),sH=(0,y.A)((0,s.jsx)("path",{d:"M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8"}),"Undo"),sR=(0,y.A)((0,s.jsx)("path",{d:"M18.4 10.6C16.55 8.99 14.15 8 11.5 8c-4.65 0-8.58 3.03-9.96 7.22L3.9 16c1.05-3.19 4.05-5.5 7.6-5.5 1.95 0 3.73.72 5.12 1.88L13 16h9V7z"}),"Redo"),sP=(0,y.A)((0,s.jsx)("path",{d:"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"}),"MoreHoriz");var sW=r(23609),sE=r(18832);let sL=(0,W.h)("frontend/components/Flow/FlowManager/ImproveFlowDialog"),sD=({open:e,onClose:t,currentFlow:r,onImproved:l,initialDescription:n})=>{let{t:i}=(0,ev.s9)(),[c,u]=(0,o.useState)(""),[p,f]=(0,o.useState)([]),[g,y]=(0,o.useState)(""),[j,A]=(0,o.useState)(!1),[S,C]=(0,o.useState)(!1),[k,M]=(0,o.useState)(null);(0,o.useEffect)(()=>{e&&u(n??"")},[e,n]),(0,o.useEffect)(()=>{if(!e)return;let t=!1;return V.N.loadModels().then(e=>{t||(f(e),y(t=>e.some(e=>e.id===t)?t:e[0]?.id??""))}).catch(e=>{sL.warn("Failed to load models for the improve dialog",e),t||M(i("flows.generator.modelsFailed"))}),()=>{t=!0}},[e,i]);let I=(0,o.useCallback)(()=>{S||(M(null),t())},[S,t]),$=(0,o.useCallback)(async()=>{M(null),C(!0);try{let e={...r,nodes:[...r.nodes],edges:[...r.edges]},t=await D.g.improveFlow(e,c.trim(),g,{allowInstall:j});if(!t.success)return void M(t.error);sL.info("Flow improved",{flowId:t.flow.id,attempts:t.attempts,errors:t.validation.errorCount,warnings:t.validation.warningCount,installedServers:t.installedServers.length}),u(""),l({flow:t.flow,errorCount:t.validation.errorCount,warningCount:t.validation.warningCount,attempts:t.attempts,installedServers:t.installedServers})}finally{C(!1)}},[r,c,g,j,l]),T=!S&&c.trim().length>0&&!!g;return(0,s.jsxs)(m.A,{open:e,onClose:I,maxWidth:"sm",fullWidth:!0,children:[(0,s.jsx)(tB.A,{title:i("flows.improve.title"),onClose:I}),(0,s.jsxs)(x.A,{children:[(0,s.jsx)(w.A,{sx:{mb:2},children:i("flows.improve.description")}),k&&(0,s.jsx)(h.A,{severity:"error",sx:{mb:2},onClose:()=>M(null),children:k}),(0,s.jsx)(v.A,{autoFocus:!0,fullWidth:!0,multiline:!0,minRows:4,label:i("flows.improve.change"),placeholder:i("flows.improve.placeholder"),value:c,onChange:e=>u(e.target.value),disabled:S,sx:{mb:2}}),(0,s.jsxs)(tk.A,{fullWidth:!0,disabled:S||0===p.length,children:[(0,s.jsx)(tM.A,{id:"improve-flow-model-label",children:i("flows.improve.model")}),(0,s.jsx)(tI.A,{labelId:"improve-flow-model-label",label:i("flows.improve.model"),value:g,onChange:e=>y(e.target.value),children:p.map(e=>(0,s.jsx)(R.A,{value:e.id,children:e.displayName?.trim()||e.name},e.id))})]}),(0,s.jsx)(F.A,{sx:{mt:2},control:(0,s.jsx)(tR.A,{checked:j,onChange:e=>A(e.target.checked),disabled:S}),label:i("flows.improve.allowInstall")}),j&&(0,s.jsx)(h.A,{severity:"warning",sx:{mt:1},children:i("flows.improve.installWarning")}),S&&(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1.5,mt:2},children:[(0,s.jsx)(N.default,{size:20}),(0,s.jsx)(w.A,{children:j?i("flows.improve.workingInstall"):i("flows.improve.working")})]})]}),(0,s.jsxs)(b.A,{children:[(0,s.jsx)(d.A,{onClick:I,disabled:S,children:i("flows.improve.cancel")}),(0,s.jsx)(d.A,{onClick:$,variant:"contained",color:"primary",startIcon:(0,s.jsx)(sE.A,{}),disabled:!T,children:i("flows.improve.action")})]})]})};var sO=r(77483);let sV=e=>({source:`${e}-bottom`,target:`${e}-top`});function sB(e){return e.data?.type??e.type??"unknown"}let sU=(0,y.A)((0,s.jsx)("path",{d:"M13 2H4c-1.1 0-2 .9-2 2v9c0 .55.45 1 1 1s1-.45 1-1V4h9c.55 0 1-.45 1-1s-.45-1-1-1m4 4H8c-1.1 0-2 .9-2 2v9c0 .55.45 1 1 1s1-.45 1-1V8h9c.55 0 1-.45 1-1s-.45-1-1-1m3 4h-8c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2"}),"AutoAwesomeMotionRounded");var sq=r(63739);let sK=(0,y.A)((0,s.jsx)("path",{d:"M24 15c0-2.64-2.05-4.78-4.65-4.96C18.67 6.59 15.64 4 12 4c-1.33 0-2.57.36-3.65.97l1.49 1.49C10.51 6.17 11.23 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3 0 .99-.48 1.85-1.21 2.4l1.41 1.41c1.09-.92 1.8-2.27 1.8-3.81M3.71 4.56c-.39.39-.39 1.02 0 1.41l2.06 2.06h-.42c-3.28.35-5.76 3.34-5.29 6.79C.46 17.84 3.19 20 6.22 20h11.51l1.29 1.29c.39.39 1.02.39 1.41 0s.39-1.02 0-1.41L5.12 4.56a.996.996 0 0 0-1.41 0M6 18c-2.21 0-4-1.79-4-4s1.79-4 4-4h1.73l8 8z"}),"CloudOffRounded");var sG=r(90015);function s_(e,t){let r=new Map(e.map(e=>[e.id,e])),s=[];for(let e of t){if(e.data?.bidirectional!==!0)continue;let t=r.get(e.source),o=r.get(e.target);t&&o&&("process"===t.data.type&&"subflow"===o.data.type?s.push({processNodeId:t.id,subflowNodeId:o.id}):"subflow"===t.data.type&&"process"===o.data.type&&s.push({processNodeId:o.id,subflowNodeId:t.id}))}return s}let sX=new Set(["maxTurns","excludeModelPrompt","excludeStartNodePrompt","excludeSystemPrompt","allowedTools","isolatedPrompt","allowCallerPrompt","enableTodoTool","captureVariable","captureResource","captureKv","resourceNodes"]),sJ=new Set(["parallelSubflowIds","parallelSubflowIdsVar","mapOverList","itemSplit","sequential","allowCallerFanout","spawnBriefs","concurrencyLimit","joinSeparator","errorStrategy","resultPresentation","allowCallerPrompt","saveConversation","captureVariable","captureResource","captureKv"]);function sY(e){if(void 0!==e.permissionRules)return!0;let t=new Map((e.nodes??[]).map(e=>[e.id,e])),r=new Set(s_(e.nodes??[],e.edges??[]).filter(e=>{let r,s=t.get(e.subflowNodeId);return!!s&&(r=s.data.properties??{},"subflow"===s.data.type&&"isolated"===r.inputMode&&"final-only"===r.outputMode)}).map(e=>`${e.processNodeId}\u0000${e.subflowNodeId}`)),s=new Set([...r].map(e=>e.split("\0")[1]));for(let t of e.nodes??[]){if(!["start","process","finish","subflow","mcp"].includes(t.type??""))return!0;let e=t.data?.properties??{},r=Object.keys(e);if("process"===t.type&&r.some(e=>sX.has(e))||"subflow"===t.type&&r.some(e=>sJ.has(e))||"process"===t.type&&(void 0!==e.inputMode&&"full-history"!==e.inputMode||void 0!==e.outputMode&&"latest-message"!==e.outputMode)||"subflow"===t.type&&(void 0!==e.inputMode&&e.inputMode!==(s.has(t.id)?"isolated":"full-history")||void 0!==e.outputMode&&"final-only"!==e.outputMode))return!0}return(e.edges??[]).some(e=>{let t=e.data;if(t?.bidirectional===!0){let t=`${e.source}\u0000${e.target}`,s=`${e.target}\u0000${e.source}`;if(!r.has(t)&&!r.has(s))return!0}return!!t?.condition||t?.edgeType==="resource"})}var sQ=r(97436);let sZ=/(?:\r?\n){2,}(?:#{1,6}\s*)?handoff conditions\s*:/i;function s0(e,t){let r=new Map(e.nodes.map(e=>[e.id,e])),s=[],o=new Set;for(let l of e.edges){let e,n;if(function(e){let t=e.data?.edgeType;return"mcpEdge"===e.type||"mcp"===t||"resource"===t||!!t?.includes("mcp")}(l))continue;let a=l.data;l.source===t?(e=l.target,n=a?.condition):l.target===t&&a?.bidirectional===!0&&(e=l.source),!(!e||o.has(e))&&r.has(e)&&(o.add(e),s.push({id:e,edgeCondition:n}))}let l=(0,er.E9)(s.map(({id:e})=>{let t=r.get(e);return{id:e,label:t.data.label,type:t.type||t.data.type}}));return s.map(({id:e,edgeCondition:t})=>{let s=r.get(e);return{targetId:e,toolName:l.get(e)||`handoff_to_${e}`,targetLabel:s.data.label||s.data.type||"next step",targetType:s.data.type||s.type||"node",...t?{edgeCondition:t}:{}}})}function s1(e){var t;let r,s=s0(e.previous,e.nodeId),o=s0(e.next,e.nodeId),l=(t=e.prompt,(r=sZ.exec(t))?{base:t.slice(0,r.index).trim(),section:t.slice(r.index+r[0].length).trim(),found:!0}:{base:t.trim(),section:"",found:!1}),n=function(e,t){let r=new Map(t.map(e=>[e.toolName,e.targetId])),s=new Map;for(let t of e.split(/\r?\n/)){let e=(0,es.A$)(t).find(e=>"tool"===e.kind&&"handoff"===e.server);if(!e)continue;let o=r.get(e.name);if(!o)continue;let l=t.slice(0,e.index),n=/^\s*-\s*(.*?),\s*hand off to\s*$/i.exec(l);n?.[1]?.trim()&&s.set(o,n[1].trim())}return s}(l.section,s),a=new Map(s.map(e=>[e.targetId,e])),i=new Map(o.map(e=>[e.targetId,e])),d=s.filter(e=>!i.has(e.targetId)),c=o.filter(e=>!a.has(e.targetId)),u=1===d.length&&1===c.length?new Map([[c[0].targetId,d[0].targetId]]):new Map,p=new Map;for(let e of o){let t=a.get(e.targetId);t&&p.set(t.toolName,e.toolName)}1===d.length&&1===c.length&&p.set(d[0].toolName,c[0].toolName);let f=(function(e,t){let r=(0,es.A$)(e).filter(e=>"tool"===e.kind&&"handoff"===e.server).sort((e,t)=>t.index-e.index),s=e;for(let e of r){let r=t.get(e.name);r&&r!==e.name&&(s=`${s.slice(0,e.index)}${(0,es.X8)("tool","handoff",r)}${s.slice(e.index+e.fullMatch.length)}`)}return s})(l.base,p).trim();if(0===o.length)return f;let h=new Set((0,es.A$)(f).filter(e=>"tool"===e.kind&&"handoff"===e.server).map(e=>e.name)),m=o.filter(e=>l.found||!h.has(e.toolName)).map(e=>{let t=u.get(e.targetId),r=n.get(e.targetId)??(t?n.get(t):void 0)??function(e){let t=e.edgeCondition;if(!t||"always"===t.kind)return"finish"===e.targetType?"When this step is complete":`When the workflow should continue to ${e.targetLabel}`;let r="string"==typeof t.value?t.value:"",s="last-message"===t.target?"latest message":"result";return"contains"===t.kind?t.negate?`If the ${s} does not contain "${r}"`:`If the ${s} contains "${r}"`:"equals"===t.kind?t.negate?`If the ${s} does not equal "${r}"`:`If the ${s} equals "${r}"`:t.negate?`If the ${s} does not match /${r}/`:`If the ${s} matches /${r}/`}(e);return`- ${r}, hand off to ${(0,es.X8)("tool","handoff",e.toolName)}.`});return 0===m.length?f:`${f}${f?"\n\n":""}Handoff conditions:
|
|
6
|
+
${m.join("\n")}`}var s2=r(45355),s5=r(22766);let s4=(0,W.h)("components/flow/FlowBuilder/index.tsx"),s3=(0,M.Ay)(a.default)(({theme:e})=>({display:"flex",height:"100%",minHeight:0,gap:"12px",padding:"12px",overflow:"hidden",backgroundColor:"transparent",[e.breakpoints.down("md")]:{flexDirection:"column",gap:"8px",padding:"8px",height:"auto",overflow:"visible"}})),s9=(0,M.Ay)(I.A)(({theme:e})=>({padding:e.spacing(1.1),display:"flex",flexWrap:"wrap",gap:e.spacing(1),border:`1px solid ${e.palette.divider}`,borderRadius:14,alignItems:"center",marginBottom:e.spacing(1),backgroundColor:"dark"===e.palette.mode?"rgba(17, 22, 41, 0.86)":"rgba(255, 255, 255, 0.9)",boxShadow:"dark"===e.palette.mode?"0 16px 45px rgba(0,0,0,.25)":"0 16px 45px rgba(49,45,99,.1)",backdropFilter:"blur(20px) saturate(140%)"})),s6=(0,M.Ay)(a.default)(({theme:e})=>({flex:1,display:"flex",flexDirection:"column",position:"relative",overflow:"hidden",minWidth:0,minHeight:0,[e.breakpoints.down("md")]:{flex:"0 0 640px",height:640,overflow:"hidden"},[e.breakpoints.down("sm")]:{flexBasis:"auto",height:"auto",minHeight:0,overflow:"visible"}})),s8=new Set(["start","process","finish","subflow","signal"]),s7=(e,t)=>{let r=e.trim();return/^(?:NewFlow\d*|Untitled (?:assistant|agent)(?: \d+)?)$/i.test(r)||!!t&&r.toLocaleLowerCase()===t.trim().toLocaleLowerCase()},oe=e=>(e.find(e=>e.favorite)??e[0])?.id??null,ot=(e,t)=>{let r=new Set(s_(e,t).map(e=>e.subflowNodeId)),s=e.filter(e=>s8.has(e.data.type)&&!r.has(e.id)),o=new Set(s.map(e=>e.id)),l=t.filter(e=>o.has(e.source)&&o.has(e.target)&&e.data?.edgeType!=="resource"),n=new Map,a=new Map;l.forEach(e=>{n.set(e.source,[...n.get(e.source)??[],e]),a.set(e.target,[...a.get(e.target)??[],e])});let i=s.filter(e=>"start"===e.data.type),d=s.filter(e=>"finish"===e.data.type),c=1!==i.length||d.length>1;s.forEach(e=>{let t=a.get(e.id)?.length??0,r=n.get(e.id)?.length??0;"start"===e.data.type?c||=0!==t||r>1:"finish"===e.data.type?c||=1!==t||0!==r:c||=1!==t||r>1});let u=[],p=new Set,f=i[0]?.id;for(;f&&!p.has(f);){p.add(f),u.push(f);let e=n.get(f)??[];if(1!==e.length)break;f=e[0].target}return{unsafe:c||=0===s.length||p.size!==s.length,orderedNodeIds:u,subagentNodeIds:r}},or=o.forwardRef(({initialFlow:e,initialAuthoringMode:t,onSave:r,onDelete:l,onConversionCommitted:c,allFlows:y,relatedDraftFlows:j=[],onRelatedDraftFlowsChange:S,isDraft:C=!1,onTry:k,onNavigateToFlow:M},I)=>{s4.debug("FlowBuilder rendered with initialFlow:",e);let{t:W,tp:q,formatList:K}=(0,ev.s9)(),G=(0,n.A)(),_=(0,$.A)(G.breakpoints.down("md"),{noSsr:!0}),[X,J]=(0,o.useState)(e?.nodes||[]),[Y,Q]=(0,o.useState)((e?.edges||[]).filter(e=>e.source&&e.target&&e.sourceHandle&&e.targetHandle)),[Z,en]=(0,o.useState)(e?.name||W("flows.page.untitled")),ea=(0,o.useRef)(Z);ea.current=Z;let[ei,ed]=(0,o.useState)(null),[ec,eu]=(0,o.useState)(e?.description||""),ep=(0,o.useMemo)(()=>new Map(y.map(e=>[e.id,e.name])),[y]),ef=!!e&&(sY({nodes:e.nodes||[],edges:e.edges||[],permissionRules:e.permissionRules})||ot(e.nodes||[],e.edges||[]).unsafe),[eh,em]=(0,sG.Io)("flujo-ui:flow-builder:mode","guided"),[eg,ex]=(0,o.useState)(()=>t??(ef?"advanced":eh)),ew=(0,o.useCallback)(e=>{ex(e),em(e)},[em]),ey=(0,o.useRef)(0),ej=(0,o.useCallback)(e=>({...e,id:`permission-rule-${++ey.current}`}),[]),[eA,eS]=(0,o.useState)(()=>(e?.permissionRules||[]).map(ej)),[eC,ek]=(0,o.useState)(e?.permissionRules!==void 0),[eI,e$]=(0,o.useState)(!1),[eT,eN]=(0,o.useState)(null),eF=sY({nodes:X,edges:Y,permissionRules:e?.permissionRules}),ez=ot(X,Y),eH=eF||ez.unsafe,[eR,eP]=(0,o.useState)(!1),[eW,eE]=(0,o.useState)("none"),[eL,eD]=(0,o.useState)(""),[eO,eV]=(0,o.useState)(null),[eB,eU]=(0,o.useState)(!1),[eq,eK]=(0,o.useState)(!1),[eG,e_]=(0,o.useState)(!1),[eX,eJ]=(0,o.useState)(!1),[eY,eQ]=(0,o.useState)(!1),[eZ,e0]=(0,o.useState)(!1),[e1,e2]=(0,o.useState)(!1),[e5,e4]=(0,o.useState)(!1),[e3,e9]=(0,o.useState)(!1),[e6,e8]=(0,o.useState)(null),[te,tt]=(0,o.useState)(null),[tr,ts]=(0,o.useState)(null),[to,tl]=(0,o.useState)("edit"),[tn,ta]=(0,o.useState)(null),[ti,td]=(0,o.useState)(null),[tc,tu]=(0,o.useState)(!1),[tp,tf]=(0,o.useState)(null),[th,tm]=(0,o.useState)(null),[tg,tx]=(0,o.useState)(null),[tw,tv]=(0,o.useState)(""),[tb,ty]=(0,o.useState)(!1),[tj,tA]=(0,o.useState)([]),[tS,tk]=(0,o.useState)(-1),[tM,tI]=(0,o.useState)(!1),[t$,tT]=(0,o.useState)(!1),[tF,tz]=(0,o.useState)(C?"unsaved":"saved"),[tR,tP]=(0,o.useState)([]),[tW,tE]=(0,o.useState)(!1),[tL,tD]=(0,o.useState)(null),[tO,tB]=(0,o.useState)(()=>C&&!(e?.nodes??[]).some(e=>"process"===e.data.type)?"unasked":"manual"),[tU,tK]=(0,o.useState)(!1),[tG,t_]=(0,o.useState)(null),[tX,tJ]=(0,o.useState)("apps"),tY=(0,o.useRef)(e?.id??(0,L.A)()),tQ=(0,o.useRef)(0),tZ=(0,o.useRef)(null),t0=(0,o.useRef)(X.some(e=>"trigger"===e.type));t0.current=X.some(e=>"trigger"===e.type);let t1=(0,o.useRef)(null),t2=(0,o.useRef)(!1),t5=(0,o.useRef)(!0);(0,o.useEffect)(()=>{let e=!0;return V.N.loadModels().then(t=>{e&&(tP(t),tE(!0),tD(e=>e&&t.some(t=>t.id===e)?e:oe(t)),0===t.length&&tB(e=>"unasked"===e?"manual":e))}).catch(t=>{s4.warn("Could not load connected AIs for Guided mode",t),e&&(tP([]),tE(!0),tB(e=>"unasked"===e?"manual":e))}),()=>{e=!1}},[]);let t4=(0,o.useCallback)(e=>e.filter(e=>e.source&&e.target&&e.sourceHandle&&e.targetHandle).map(e=>e.data?.edgeType==="resource"&&"resourceEdge"!==e.type?{...e,type:"resourceEdge"}:e),[]);(0,o.useEffect)(()=>{if(t5.current=!0,tQ.current=0,tT(!1),tz(C?"unsaved":"saved"),e){let r=e.nodes||[],s=t4(e.edges||[]),o="function"==typeof window.matchMedia&&window.matchMedia("(max-width: 899.95px)").matches?et(r,s,{rankSep:90,nodeSep:48,mcpOffsetX:270,mcpStackY:100}):r,l=C?o.map(e=>({...e,selected:!1})):o;J(l),s.length!==e.edges.length&&console.warn(`Filtered out ${e.edges.length-s.length} invalid edges`),Q(s),en(e.name),eu(e.description||""),eS((e.permissionRules||[]).map(ej)),ek(void 0!==e.permissionRules),eN(null);let n=sY({nodes:r,edges:s,permissionRules:e.permissionRules})||ot(r,s).unsafe;t?ew(t):n&&ew("advanced"),tA([{nodes:l,edges:s}]),tk(0)}else{let e=D.g.createStartNode();J([e]),Q([]),en(W("flows.page.untitled")),eu(""),eS([]),ek(!1),eN(null),tA([{nodes:[e],edges:[]}]),tk(0)}},[e?.id,t,ej,ew]);let t3=e=>JSON.stringify(e,(e,t)=>"selected"===e||"dragging"===e||"measured"===e||"width"===e||"height"===e||"positionAbsolute"===e||"resizing"===e?void 0:t);(0,o.useEffect)(()=>{if(tM)return void tI(!1);if(t5.current){t5.current=!1;return}if(t2.current)return;let e={nodes:[...X],edges:[...Y]},t=tj.slice(0,tS+1);(tS<0||t3(e)!==t3(t[tS]))&&(tA([...t,e]),tk(tS+1),tT(!0),tQ.current+=1,tz("unsaved"))},[X,Y]),(0,o.useEffect)(()=>{let e=e=>{if(t$)return e.preventDefault(),e.returnValue="",""};return window.addEventListener("beforeunload",e),()=>{window.removeEventListener("beforeunload",e)}},[t$]);let t9=t=>t.trim()?/^[\p{L}\p{N}_ -]+$/u.test(t.trim())?(!e||e&&e.name!==t)&&y.some(r=>r.id!==(e?.id||"")&&r.name.trim().toLowerCase()===t.trim().toLowerCase())?W("flows.page.nameDuplicate"):null:W("flows.page.nameCharacters"):W("flows.page.nameEmpty"),t6=(0,o.useCallback)(()=>{tT(!0),tQ.current+=1,tz("unsaved")},[]),t8=(e,t)=>{eS(r=>r.map(r=>r.id===e?{...r,...t}:r)),ek(!0),eN(null),t6()},t7=(e,t)=>{let r=e+t;r<0||r>=eA.length||(eS(t=>{let s=[...t];return[s[e],s[r]]=[s[r],s[e]],s}),ek(!0),t6())},re=(0,o.useCallback)(()=>eC?eA.map(({id:e,...t})=>t):void 0,[eA,eC]),rt=(0,o.useCallback)(()=>!eA.find(e=>!e.action.trim()||!e.resource.trim())||(eN(W("flows.builder.permissionInvalid")),e$(!0),!1),[eA,W]),rr=(0,o.useCallback)(()=>{if(tZ.current)return tZ.current;let t=(async()=>{s4.debug(`handleSave: Attempting to save flow "${Z}"`);let t=t9(Z);if(t)return s4.warn(`handleSave: Invalid flow name - ${t}`),ed(t),"invalid-name";if(!rt())return"invalid-name";let s=[...X];0===s.length&&(s4.debug("handleSave: No nodes found, adding a default Start node"),J(s=[D.g.createStartNode()]));let o={id:e?.id||(0,L.A)(),name:Z.trim(),description:ec,nodes:s,edges:Y,folder:e?.folder,favorite:e?.favorite,permissionRules:re()};s4.info(`handleSave: Saving flow "${Z}" with ${s.length} nodes and ${Y.length} edges`);let l=tQ.current;tz("saving");try{let e=await r(o);if(!1===e)return tz("error"),"failed";return tQ.current===l?(tT(!1),tz("saved")):(tT(!0),tz("unsaved")),"saved"}catch(e){return s4.error("handleSave: Persistence failed",e),tz("error"),tT(!0),"failed"}})();return tZ.current=t,t.finally(()=>{tZ.current===t&&(tZ.current=null)}),t},[Z,ec,X,Y,e,r,re,rt]),rs=(0,o.useCallback)(async()=>{k&&((C||t$||"saved"!==tF)&&"saved"!==await rr()||k())},[k,C,t$,tF,rr]),ro=(0,o.useCallback)(e=>{t$?(t1.current=e,eE("unsaved"),eP(!0)):e()},[t$]);o.useImperativeHandle(I,()=>({requestNavigation:ro}),[ro]);let rl=(0,o.useCallback)(()=>{e?(s4.info(`handleDelete: Deleting flow "${e.name}" (ID: ${e.id})`),l(e.id)):s4.warn("handleDelete: Attempted to delete flow but no initialFlow is available")},[e,l]),rn=(0,o.useCallback)(e=>{s4.info("Applying AI-improved flow to the canvas",{flowId:e.flow.id,attempts:e.attempts,errors:e.errorCount,warnings:e.warningCount}),tu(!1),J(e.flow.nodes||[]),Q(t4(e.flow.edges||[])),en(e.flow.name),eu(e.flow.description||""),void 0!==e.flow.permissionRules&&(eS(e.flow.permissionRules.map(ej)),ek(!0)),ed(t9(e.flow.name)),tT(!0);let t=e.installedServers.filter(e=>!e.alreadyExisted),r=t.length>0?W("flows.builder.installNote",{servers:K(t.map(e=>e.name))}):"";e.errorCount>0?tf({severity:"warning",message:W("flows.builder.revisedIssues",{errors:q("flows.validation.error",e.errorCount),warnings:q("flows.validation.warning",e.warningCount),installNote:r})}):e.warningCount>0?tf({severity:"info",message:W("flows.builder.revisedWarnings",{warnings:q("flows.validation.warning",e.warningCount),installNote:r})}):tf({severity:"success",message:W("flows.builder.revisedClean",{installNote:r})})},[t4,K,W,q]),ra=(0,o.useCallback)(e=>{s4.info("Restoring an archived flow version to the canvas",{flowId:e.id,nodes:e.nodes?.length??0,edges:e.edges?.length??0}),ty(!1),J(e.nodes||[]),Q(t4(e.edges||[])),en(e.name),eu(e.description||""),eS((e.permissionRules||[]).map(ej)),ek(void 0!==e.permissionRules),ed(t9(e.name)),tT(!0),tf({severity:"info",message:W("flows.builder.restored")})},[t4,W]),ri=(0,o.useCallback)(()=>{tx(null);let{flow:t,changes:r}=function(e){var t,r;let s=(e?.nodes??[]).map(e=>({...e,position:{...e.position??{x:0,y:0}},data:{...e.data}})),o=[...e?.edges??[]],l={...e,nodes:s,edges:o},n=[],a=function(e,t){let r=e.filter(e=>"mcp"!==e.type&&"resource"!==e.type&&"string"==typeof e.id),s=new Map(r.map(e=>[e.id,e])),o=new Map,l=new Map,n=new Set;for(let e of r)o.set(e.id,0),l.set(e.id,0);let a=(e,t)=>{n.add(`${e}->${t}`),l.set(e,(l.get(e)??0)+1),o.set(t,(o.get(t)??0)+1)};for(let e of t)s.has(e.from)&&s.has(e.to)&&e.from!==e.to&&(a(e.from,e.to),e.bidirectional&&a(e.to,e.from));let i=[];for(let e of[...r].sort((e,t)=>e.y-t.y||e.x-t.x)){let t=i[i.length-1];t&&70>=Math.abs(e.y-t[0].y)?t.push(e):i.push([e])}let d=new Map;i.forEach((e,t)=>e.forEach(e=>d.set(e.id,t)));let c=new Map;for(let e=1;e<i.length;e++){let t=i[e],r=t.filter(e=>"subflow"===e.type);if(r.length>=2&&r.length===t.length){let t=i[e-1];if(1===t.length&&"process"===t[0].type)for(let e of r)c.set(e.id,t[0].id)}}let u=[],p=(e,t)=>{if(e===t||n.has(`${e}->${t}`))return!1;let r=s.get(e),o=s.get(t);return!(!r||!o||null!==(0,U.vC)(r.type,sV(r.type).source,o.type,sV(o.type).target)||"subflow"===r.type&&(l.get(e)??0)>=1)},f=(e,t,r,s)=>{u.push({from:e,to:t,bidirectional:r,reason:s}),a(e,t),r&&a(t,e)},h=e=>{let t=d.get(e.id)??0;for(let r=t-1;r>=0;r--){let t=i[r].filter(t=>t.id!==e.id&&"finish"!==t.type&&!c.has(t.id));if(0!==t.length){if(1===t.length)return t[0];return t.reduce((t,r)=>Math.abs(r.x-e.x)<Math.abs(t.x-e.x)?r:t)}}return null};for(let e of i)for(let t of e){if("start"===t.type||(o.get(t.id)??0)>0)continue;let e=c.get(t.id);if(e){p(e,t.id)&&f(e,t.id,!0,"auto-bidirectional-subflow");continue}let r=h(t);r&&p(r.id,t.id)&&f(r.id,t.id,!1,"auto-connected")}let m=r.filter(e=>"start"===e.type),g=()=>r.filter(e=>"start"!==e.type&&"finish"!==e.type&&!c.has(e.id)&&(o.get(e.id)??0)===0),x=null;if(0===m.length){let e=g();if(e.length>0)x={targets:e.map(e=>e.id)};else{let e=r.filter(e=>"finish"!==e.type).sort((e,t)=>e.y-t.y)[0];e&&(x={targets:[e.id]})}}else{let e=m[0];for(let t of g())p(e.id,t.id)&&f(e.id,t.id,!1,"auto-connected")}let w=r.filter(e=>"finish"===e.type),v=()=>r.filter(e=>"start"!==e.type&&"finish"!==e.type&&!c.has(e.id)&&(l.get(e.id)??0)===0),b=null;if(0===w.length){let e=v();e.length>0&&(b={sources:e.map(e=>e.id)})}else{let e=w[0];for(let t of v())p(t.id,e.id)&&f(t.id,e.id,!1,"auto-connected")}return{addEdges:u,addStart:x,addFinish:b}}(s.filter(e=>"mcp"!==sB(e)&&"resource"!==sB(e)).map(e=>({id:e.id,type:sB(e),x:e.position?.x??0,y:e.position?.y??0})),o.filter(e=>{let t;return"mcp"!==(t=e.data?.edgeType)&&"resource"!==t}).map(e=>({from:e.source,to:e.target,bidirectional:e.data?.bidirectional===!0}))),i=new Map(s.map(e=>[e.id,e])),d=(e,t,r)=>{let s=i.get(e),l=i.get(t);s&&l&&o.push((0,sO.pX)(s,l,r))};for(let e of a.addEdges)d(e.from,e.to,e.bidirectional),n.push({code:e.reason,message:function(e){switch(e){case"auto-connected":return"Connected a disconnected step into the flow.";case"auto-bidirectional-subflow":return"Wired a parallel subflow with a two-way handoff to its orchestrator.";case"auto-added-start":return"Added a Start node.";case"auto-added-finish":return"Added a Finish node."}}(e.reason),nodeId:e.to});if(a.addStart){let e=a.addStart.targets.map(e=>i.get(e)).filter(Boolean).reduce((e,t)=>!e||t.position.y<e.position.y?t:e,null),r=(t={x:e?.position.x??250,y:(e?.position.y??150)-150},{id:(0,L.A)(),type:"start",position:t,data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}});for(let e of(s.unshift(r),i.set(r.id,r),a.addStart.targets))d(r.id,e,!1);n.push({code:"auto-added-start",message:`Added a Start node connected to ${a.addStart.targets.length} entry step(s).`,nodeId:r.id})}if(a.addFinish){let e=a.addFinish.sources.map(e=>i.get(e)).filter(Boolean).reduce((e,t)=>!e||t.position.y>e.position.y?t:e,null),t=(r={x:e?.position.x??250,y:(e?.position.y??0)+150},{id:(0,L.A)(),type:"finish",position:r,data:{label:"Finish Node",type:"finish",properties:{}}});for(let e of(s.push(t),i.set(t.id,t),a.addFinish.sources))d(e,t.id,!1);n.push({code:"auto-added-finish",message:`Added a Finish node connected from ${a.addFinish.sources.length} final step(s).`,nodeId:t.id})}return{flow:l,changes:n}}({id:e?.id||"",name:Z,description:ec,nodes:X,edges:Y,folder:e?.folder,favorite:e?.favorite,permissionRules:re()});if(0===r.length)return void tf({severity:"info",message:W("flows.builder.nothingRepair")});s4.info(`Applying static auto-repair to the canvas (${r.length} change(s))`),J(t.nodes||[]),Q(t4(t.edges||[])),tT(!0);let s=r.filter(e=>"auto-added-start"===e.code||"auto-added-finish"===e.code).length,o=r.length-s,l=[];r.some(e=>"auto-added-start"===e.code)&&l.push(W("flows.builder.repairAddedStart")),r.some(e=>"auto-added-finish"===e.code)&&l.push(W("flows.builder.repairAddedFinish")),o>0&&l.push(q("flows.builder.repairConnected",o)),tf({severity:"success",message:W("flows.builder.repaired",{changes:K(l)})})},[e,Z,ec,X,Y,t4,re,K,W,q]),rd=(0,o.useCallback)(()=>{tx(null),tv(W("flows.builder.aiRepairPrompt")),tu(!0)},[W]),rc=(0,o.useCallback)(async(e,t)=>{s4.debug(`handleCopyFlow: Copying flow "${e.name}" to "${t}"`);let s={id:(0,L.A)(),name:t,description:e.description,nodes:e.nodes,edges:e.edges,folder:e.folder,favorite:e.favorite,permissionRules:e.permissionRules};return s4.info(`handleCopyFlow: Created copy of flow "${e.name}" with new name "${t}" (${e.nodes.length} nodes, ${e.edges.length} edges)`),await r(s)!==!1},[r]),ru=()=>{let e=t1.current;t1.current=null,e&&e()},rp=()=>{t1.current=null,eP(!1),eE("none"),eD(""),eV(null)},rf=async()=>{let t=t9(eL);if(t)return void eV(t);if("duplicate"===eW){if(e&&!await rc(e,eL))return}else if("rename"===eW){let t={id:e?.id||(0,L.A)(),name:eL,description:ec,nodes:X,edges:Y,folder:e?.folder,favorite:e?.favorite,permissionRules:re()};if(await r(t)===!1)return void tz("error");tT(!1),tz("saved"),ru()}rp()},rh=async()=>{let e=await rr();"saved"===e?(ru(),rp()):"invalid-name"===e&&rp()},rm=tS>0,rg=tS<tj.length-1,rx=(0,o.useCallback)(()=>{if(rm){s4.debug(`handleUndo: Performing undo operation, moving from history index ${tS} to ${tS-1}`),tI(!0);let e=tS-1,t=tj[e];J(t.nodes),Q(t.edges),tk(e),t6(),s4.info(`handleUndo: Restored flow state to previous version (${t.nodes.length} nodes, ${t.edges.length} edges)`)}},[tj,tS,rm,t6]),rw=(0,o.useCallback)(()=>{if(rg){s4.debug(`handleRedo: Performing redo operation, moving from history index ${tS} to ${tS+1}`),tI(!0);let e=tS+1,t=tj[e];J(t.nodes),Q(t.edges),tk(e),t6(),s4.info(`handleRedo: Restored flow state to next version (${t.nodes.length} nodes, ${t.edges.length} edges)`)}},[tj,tS,rg,t6]);(0,o.useEffect)(()=>{let e=e=>{let t=e.target,r=t?.tagName==="INPUT"||t?.tagName==="TEXTAREA"||t?.isContentEditable,s=e.ctrlKey||e.metaKey,o=e.key.toLowerCase();if(s&&"s"===o){e.preventDefault(),rr();return}if(!r&&s&&"z"===o){e.preventDefault(),e.shiftKey?rw():rx();return}if(!r&&s&&"y"===o){e.preventDefault(),rw();return}r||(!s||"k"!==o)&&(s||"a"!==o&&"/"!==e.key)||(e.preventDefault(),document.dispatchEvent(new CustomEvent("openFlowQuickAdd")))};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[rr,rx,rw]);let rv=(0,o.useCallback)(async t=>{if(!e||!ti||!t.parentFlow||!t.childFlow)throw Error("Save the parent flow before converting a Process node.");let r=await D.g.convertProcessToSubflow(t.parentFlow,t.childFlow,ti,e.updatedAt);if(!r.success)throw Error(r.error);let s={nodes:r.parentFlow.nodes,edges:r.parentFlow.edges},o=[...tj.slice(0,tS+1),s];tI(!0),tA(o),tk(o.length-1),J(r.parentFlow.nodes),Q(r.parentFlow.edges),tT(!1),tz("saved"),td(null),c?.(r.parentFlow,r.childFlow)},[e,ti,tj,tS,c]),rb=(0,o.useCallback)(e=>{for(let t of e)"position"===t.type&&(t2.current=!0===t.dragging);J(t=>(0,E._0)(e,t))},[]),ry=(0,o.useCallback)((e,t)=>{Q(r=>r.map(r=>{if(r.id!==e)return r;let s={...r.data??{}};return t?s.condition=t:delete s.condition,{...r,data:s}})),s4.info(`handleSaveEdgeCondition: ${t?"set":"cleared"} condition on edge ${e}`)},[]),rj=(0,o.useCallback)(e=>{s4.debug(`onEdgesChange: Processing ${e.length} edge changes`),e.forEach(e=>{"remove"===e.type?s4.info(`onEdgesChange: Edge ${e.id} removed`):"select"===e.type&&s4.debug(`onEdgesChange: Edge ${e.id} selection changed to ${e.selected}`)}),Q(t=>(0,E.zW)(e,t))},[]),rA=(0,o.useRef)(null),[rS,rC]=(0,o.useState)(null),rk=(0,o.useCallback)(e=>{tt(e),setTimeout(()=>tt(t=>t===e?null:t),5e3)},[]),rI=(0,o.useCallback)((e,t,r)=>{if("trigger"===e&&t0.current)return rk(W("flows.builder.triggerExists")),null;"trigger"===e&&(t0.current=!0);let s=r??D.g.createNode(e,t);return J(e=>[...e.map(e=>({...e,selected:!1})),{...s,selected:!0}]),s},[rk,W]),r$=(0,o.useCallback)(e=>{let t=X.find(e=>e.selected)??(1===X.length&&"start"===X[0].data.type?X[0]:void 0),r=rA.current?.getBoundingClientRect(),s=r&&rS?rS.screenToFlowPosition({x:r.left+r.width/2,y:r.top+r.height/2}):{x:250,y:180},o=t&&!["mcp","resource","trigger"].includes(e)?{x:t.position.x,y:t.position.y+180}:s;for(let e=0;e<12&&X.some(e=>90>Math.abs(e.position.x-o.x)&&70>Math.abs(e.position.y-o.y));e+=1)o={x:o.x+36,y:o.y+36};let l=!!t&&["process","finish","subflow","signal"].includes(e),n=D.g.createNode(e,o);if(t&&l){let r={start:"start-bottom",process:"process-bottom",subflow:"subflow-bottom",signal:"signal-bottom"}[t.type];if(!r)return rk(W("flows.builder.selectedCannotLead",{node:t.data.label||W("flows.builder.selectedNode")})),null;let s={source:t.id,sourceHandle:r,target:n.id,targetHandle:(0,U.CW)(e,r)},l=[...X,n];if(!(0,B.JL)(s,l,Y))return rk(W("flows.builder.cannotAppend")),null;let a=rI(e,o,n);if(!a)return null;let i=(0,B.wn)(s,l);return Q(e=>[...e,i]),a}return rI(e,o,n)},[X,Y,rS,rI,rk,W]),rT=(0,o.useCallback)(t=>{if(eH)return void rk(W("flows.builder.customWiring"));let r=X.find(e=>"start"===e.data.type),s=X.find(e=>"finish"===e.data.type),o=[...ez.orderedNodeIds.map(e=>X.find(t=>t.id===e)).filter(e=>!!e)].reverse().find(e=>["start","process","subflow","signal"].includes(e.data.type))??r;if(!o)return void rk(W("flows.builder.missingStart"));let l={start:"start-bottom",process:"process-bottom",subflow:"subflow-bottom",signal:"signal-bottom"}[o.data.type];if(!l)return void rk(W("flows.builder.addExpert"));let n=!X.some(e=>"process"===e.data.type),a=D.g.createNode("process",{x:o.position.x,y:o.position.y+180});a.data={...a.data,label:W("flows.builder.aiTask"),properties:{...a.data.properties??{},promptTemplate:t,inputMode:"full-history",outputMode:"latest-message",..."assisted"===tO&&tL?{boundModel:tL}:{}}};let i=s??D.g.createNode("finish",{x:o.position.x,y:o.position.y+360}),d=[...X.filter(e=>e.id!==i.id).map(e=>({...e,selected:!1})),{...a,selected:!0},{...i,position:{x:o.position.x,y:o.position.y+360},selected:!1}],c=Y.filter(e=>!(s&&e.source===o.id&&e.target===s.id)),u={source:o.id,sourceHandle:l,target:a.id,targetHandle:(0,U.CW)("process",l)},p={source:a.id,sourceHandle:"process-bottom",target:i.id,targetHandle:(0,U.CW)("finish","process-bottom")},f=[...c,(0,B.wn)(u,d),(0,B.wn)(p,d)],h="process"===o.data.type?d.map(e=>e.id===o.id?{...e,data:{...e.data,properties:{...e.data.properties??{},promptTemplate:s1({prompt:String(o.data.properties?.promptTemplate??""),nodeId:o.id,previous:{nodes:X,edges:Y},next:{nodes:d,edges:f}})}}}:e):d;if(J(h),Q(f),n&&!ec.trim()&&eu(t),"assisted"===tO&&tL){if(n&&s7(Z,W("flows.page.untitled"))){let r={...e??{id:tY.current,name:Z,nodes:[],edges:[]},id:e?.id??tY.current,name:Z,description:t,nodes:h,edges:f};D.g.generateNameForFlow({flow:r,modelId:tL,existingNames:y.filter(e=>e.id!==r.id).map(e=>e.name)}).then(({name:e})=>{ea.current!==Z||!s7(ea.current,W("flows.page.untitled"))||t9(e)||(ea.current=e,en(e),ed(null),t6())}).catch(e=>{s4.warn("Could not auto-generate a Guided flow name",e)})}t_(a.id),tJ("apps"),tK(!0)}else tL||rk(W("flows.builder.connectModel"))},[X,Y,tO,tL,ez.orderedNodeIds,eH,rk,ec,Z,e,y,t6,W]),rN=X.find(e=>e.selected)??null,rF=(0,o.useMemo)(()=>e6?X.find(e=>e.id===e6)??null:null,[X,e6]);(0,o.useEffect)(()=>{if(e6){if(!rN)return void e8(null);rN.id!==e6&&e8(rN.id)}},[rN,e6]);let rz=(0,o.useMemo)(()=>eb(W),[W]),rH=(0,o.useMemo)(()=>{let e=new Map,t=new Map(X.map(e=>[e.id,e]));return Y.forEach(r=>{if(r.data?.edgeType!=="mcp")return;let s=t.get(r.source),o=t.get(r.target),l=s?.data.type==="process"?s:o?.data.type==="process"?o:null,n=s?.data.type==="mcp"?s:o?.data.type==="mcp"?o:null,a=n?.data.properties?.boundServer;l&&n&&"string"==typeof a&&a&&e.set(l.id,[...e.get(l.id)??[],{nodeId:n.id,serverName:a}])}),e},[Y,X]),rR=rN?.data.type==="process"?rH.get(rN.id)??[]:[],rP=(0,o.useMemo)(()=>{let e=new Map,t=new Map(X.map(e=>[e.id,e])),r=new Map(y.map(e=>[e.id,e.name]));return s_(X,Y).forEach(s=>{let o=t.get(s.subflowNodeId),l=o?.data.properties?.subflowId;"string"==typeof l&&l&&e.set(s.processNodeId,[...e.get(s.processNodeId)??[],{nodeId:s.subflowNodeId,flowId:l,flowName:r.get(l)??o?.data.label??l}])}),e},[y,Y,X]),rW=X.some(e=>["process","subflow"].includes(e.data.type)),rV=X.filter(e=>"process"===e.data.type).every(e=>"string"==typeof e.data.properties?.boundModel&&!!e.data.properties.boundModel),rB=!!Z.trim()&&!/^(?:NewFlow\d*|Untitled (?:assistant|agent)(?: \d+)?)$/i.test(Z.trim())&&!ei,rU=rW&&rV&&rB&&!eH&&"saving"!==tF,rK=(0,o.useCallback)(e=>{J(t=>t.map(t=>({...t,selected:t.id===e})))},[]),rG=(0,o.useMemo)(()=>({...e??{id:tY.current,name:Z,nodes:[],edges:[]},id:e?.id??tY.current,name:Z,...ec.trim()?{description:ec}:{},nodes:X,edges:Y,permissionRules:eC?eA.map(({id:e,...t})=>t):void 0}),[Y,ec,Z,e,X,eA,eC]),r_=(0,o.useCallback)(e=>{let t=X.find(t=>t.id===e);return!!t&&(J(t=>t.map(t=>({...t,selected:t.id===e}))),rS?.setCenter(t.position.x,t.position.y,{zoom:1.2,duration:450}),window.requestAnimationFrame(()=>{let t=[...document.querySelectorAll(".react-flow__node")].find(t=>t.getAttribute("data-id")===e)??null;(0,s5.g_)(t)}),!0)},[X,rS]),rX=(0,o.useCallback)(e=>{if("flow-node"===e.target.kind&&e.target.id&&"highlight"===e.type){let t=r_(e.target.id);return{success:t,message:t?"Highlighted the matching flow step.":"That flow step is no longer on screen."}}if("flow-field"===e.target.kind&&e.target.field){let t=e.target.field;if("name"!==t&&"description"!==t)return{success:!1,message:`The flow field "${t}" is not editable here.`};if("highlight"===e.type){let e=document.querySelector(`[data-ask-flujo-flow-field="${t}"]`),r=(0,s5.g_)(e);return{success:r,message:r?`Highlighted flow ${t}.`:`Could not find flow ${t}.`}}return"string"!=typeof e.value?{success:!1,message:`Flow ${t} must be text.`}:("name"===t?(ea.current=e.value,en(e.value),ed(t9(e.value))):eu(e.value),t6(),{success:!0,message:`Updated flow ${t} in the unsaved editor.`})}if("flow-node-field"===e.target.kind&&e.target.id){let t,r=e.target.id;if("highlight"===e.type){let e=r_(r);return{success:e,message:e?"Highlighted the matching flow step.":"That flow step is no longer on screen."}}let s=e.target.path;if(!s||!s.startsWith("data.")&&!s.startsWith("/data/"))return{success:!1,message:"Only advertised node data fields are editable."};let o=X.find(e=>e.id===r);if(!o)return{success:!1,message:"That flow step is no longer on screen."};try{t=(0,s5.Pz)(o,s,e.value)}catch(e){return{success:!1,message:e instanceof Error?e.message:"The node field could not be changed."}}return J(e=>e.map(e=>e.id===r?t:e)),t6(),window.requestAnimationFrame(()=>r_(r)),{success:!0,message:"Updated the step in the unsaved flow. Review it, then Save."}}return{success:!1,message:"That flow UI target is not supported."}},[r_,t6,X,t9]);(0,s2.qz)({scopeId:`flow:${rG.id}`,pageType:"flow",route:"/flows",title:rG.name,identifiers:{flowId:rG.id},data:{flow:rG,selectedNodeId:rN?.id??null,authoringMode:eg,isDraft:C,hasUnsavedChanges:t$},capabilities:{highlightTargets:rG.nodes.map(e=>({kind:"flow-node",id:e.id,label:e.data.label,nodeType:e.data.type})),editableTargets:[{kind:"flow-field",field:"name"},{kind:"flow-field",field:"description"},...rG.nodes.flatMap(e=>["data.label",...Object.keys(e.data.properties??{}).map(e=>`data.properties.${e}`)].map(t=>({kind:"flow-node-field",id:e.id,path:t})))],notes:["This is the live Flow Builder state, including unsaved edits and full node prompts/configuration.","Screen changes remain unsaved until the user presses the normal Save button."]}},rX,100);let rY=(0,o.useMemo)(()=>{if(tG){let e=X.find(e=>e.id===tG),t=e?.data.properties?.boundModel;if("string"==typeof t&&t)return t}if(tL)return tL;let e=X.find(e=>"process"===e.data.type&&"string"==typeof e.data.properties?.boundModel&&!!e.data.properties.boundModel)?.data.properties?.boundModel;return"string"==typeof e?e:null},[tG,tL,X]),rQ=(0,o.useCallback)(e=>{J(e.nodes),Q(e.edges),void 0!==e.description&&eu(e.description),t6()},[t6]),rZ=(0,o.useCallback)(()=>{let e=X.filter(e=>e.selected).map(e=>({type:"select",id:e.id,selected:!1}));e.length>0&&rb(e)},[X,rb]),r0=(0,o.useCallback)(()=>{s4.debug("handleTidyLayout: resolving node overlaps in place"),J(e=>ee(e,Y))},[Y]),r1=(0,o.useCallback)(()=>{s4.debug("handleRelayout: re-arranging flow nodes top-to-bottom"),J(e=>et(e,Y)),requestAnimationFrame(()=>rS?.fitView({padding:.2}))},[Y,rS]),r4=(0,o.useCallback)((e,t)=>{s4.debug(`handleNodeUpdate: Updating node ${e} properties`),J(r=>{let s=r.map(r=>r.id===e?(s4.info(`handleNodeUpdate: Node ${e} properties updated`),{...r,data:t}):r),o=new Map(r.map(e=>[e.id,e])),l=new Map(s.map(e=>[e.id,e])),n=!1;for(let[e,t]of l){let r=o.get(e);if(r&&r.data.label!==t.data.label){n=!0;break}}return n?s.map(e=>{let t=e.data.properties?.promptTemplate;if("string"!=typeof t||!t)return e;let r=function(e,t){let r=[];for(let s of t)!("string"==typeof s.data?.edgeType&&(s.data.edgeType.includes("mcp")||"resource"===s.data.edgeType))&&(s.source===e?r.push(s.target):s.target===e&&s.data?.bidirectional&&r.push(s.source));return[...new Set(r)]}(e.id,Y);if(0===r.length)return e;let s=[],n=[];for(let e of r){let t=l.get(e);if(!t)continue;let r=o.get(e)||t;s.push(eo(r)),n.push(eo(t))}if(0===n.length)return e;let a=(0,er.E9)(s),i=(0,er.E9)(n),d=new Map;for(let e of r){let t=a.get(e),r=i.get(e);t&&r&&t!==r&&d.set(t,r)}if(0===d.size)return e;let c=function(e,t){if(!e||0===t.size)return e;let r=(0,es.A$)(e);if(0===r.length)return e;let s="",o=0,l=!1;for(let n of r){s+=e.slice(o,n.index);let r="tool"===n.kind&&"handoff"===n.server?t.get(n.name):void 0;r?(s+=(0,es.X8)("tool","handoff",r),l=!0):s+=n.fullMatch,o=n.index+n.fullMatch.length}return s+=e.slice(o),l?s:e}(t,d);return c===t?e:{...e,data:{...e.data,properties:{...e.data.properties,promptTemplate:c}}}}):s})},[Y]),r8=(0,o.useCallback)((e,t)=>{r4(e,t),eU(!1),tl("edit"),eK(!1),e_(!1),eJ(!1),eQ(!1),e0(!1),e2(!1),e4(!1),e9(!1),ts(null),s4.debug("handleNodeUpdate: Closed property modals")},[r4]),r7=(0,o.useCallback)(async(e,t)=>{let r=X.find(t=>t.id===e);if(!r)return void s4.warn(`handleConnectMcpServer: process node ${e} not found`);let s=[];try{let e=await O.S.listServerTools(t);!e.error&&Array.isArray(e.tools)&&(s=e.tools.map(e=>e.name))}catch(e){s4.warn(`handleConnectMcpServer: could not load tools for ${t}`,e)}let o=Y.filter(t=>t.data?.edgeType==="mcp"&&(t.source===e||t.target===e)).length,l=D.g.createNode("mcp",{x:r.position.x+350,y:r.position.y+120*o});l.data.label=t,l.data.properties={...l.data.properties??{},boundServer:t,enabledTools:s};let n=(0,B.wn)({source:e,sourceHandle:"process-right-mcp",target:l.id,targetHandle:"mcp-left"},[...X,l]);J(e=>[...e,l]),Q(e=>[...e,n]),s4.info(`Connected MCP server "${t}" to process node ${e}`)},[X,Y]),se=(0,o.useCallback)(async(e,t)=>{if("mcp"!==e.data.type)return;let r=[];try{let e=await O.S.listServerTools(t);!e.error&&Array.isArray(e.tools)&&(r=e.tools.map(e=>e.name))}catch(e){s4.warn(`handleSelectMcpNodeServer: could not load tools for ${t}`,e)}let s=e.data.properties??{},{enabledResources:o,...l}=s;r4(e.id,{...e.data,label:tq({currentLabel:e.data.label,nameIsCustom:!0===s.nameIsCustom,defaultLabel:"MCP Node",previousAutoLabel:"string"==typeof s.boundServer?s.boundServer:void 0,nextAutoLabel:t}),properties:{...l,boundServer:t,enabledTools:r}})},[r4]),st=(0,o.useCallback)((e,t)=>{let r=r=>r.data?.edgeType==="mcp"&&(r.source===e&&r.target===t||r.source===t&&r.target===e);if(!Y.some(r))return;let s=Y.filter(e=>!r(e)),o=s.some(e=>e.source===t||e.target===t);Q(s),o||J(e=>e.filter(e=>e.id!==t)),s4.info(`Removed MCP node ${t} from process node ${e}`)},[Y]),sr=(0,o.useCallback)((t,r)=>{var s,o;let l=X.find(e=>e.id===t&&"process"===e.data.type),n=y.find(e=>e.id===r),a=e?.id??tY.current;if(!l||!n||n.id===a)return;let i=new Map(X.map(e=>[e.id,e])),d=s_(X,Y);if(d.some(e=>e.processNodeId===t&&i.get(e.subflowNodeId)?.data.properties?.subflowId===r))return;let c=d.filter(e=>e.processNodeId===t).length,u=(s=D.g.createNode("subflow",{x:l.position.x-350,y:l.position.y+150*c}),{...s,type:"subflow",data:{...s.data,type:"subflow",label:n.name,...n.description?{description:n.description}:{},properties:{...s.data.properties??{},subflowId:n.id,inputMode:"isolated",outputMode:"final-only"}}}),p={source:t,sourceHandle:"process-bottom",target:u.id,targetHandle:(0,U.CW)("subflow","process-bottom")};if(!(0,B.JL)(p,[...X,u],Y))return;let f={...o=(0,B.wn)(p,[...X,u]),data:{...o.data??{},edgeType:"standard",bidirectional:!0}},h=[...X,u],m=[...Y,f],g=s1({prompt:String(l.data.properties?.promptTemplate??""),nodeId:t,previous:{nodes:X,edges:Y},next:{nodes:h,edges:m}});J(h.map(e=>e.id===t?{...e,data:{...e.data,properties:{...e.data.properties??{},promptTemplate:g}}}:e)),Q(m),s4.info(`Connected agent "${n.name}" to process node ${t}`)},[y,Y,e?.id,X]),ss=(0,o.useCallback)((e,t)=>{let r=r=>r.data?.bidirectional===!0&&(r.source===e&&r.target===t||r.source===t&&r.target===e);if(!Y.some(r))return;let s=Y.filter(e=>!r(e)),o=s.some(e=>e.source===t||e.target===t)?X:X.filter(e=>e.id!==t),l=X.find(t=>t.id===e&&"process"===t.data.type),n=l?s1({prompt:String(l.data.properties?.promptTemplate??""),nodeId:e,previous:{nodes:X,edges:Y},next:{nodes:o,edges:s}}):null;Q(s),J(o.map(t=>t.id===e&&null!==n?{...t,data:{...t.data,properties:{...t.data.properties??{},promptTemplate:n}}}:t)),s4.info(`Removed agent node ${t} from process node ${e}`)},[Y,X]),so=(0,o.useCallback)(async()=>{let e=await O.S.loadServerConfigs();if(!Array.isArray(e))throw Error(e?.error||W("flows.inspector.mcpLoadError"));return Promise.all(e.map(async e=>{let t=await O.S.getServerStatus(e.name),r="string"==typeof t?t:t.status;return{...e,status:r}}))},[W]),sl=(0,o.useCallback)((e,t="edit")=>{s4.debug("Opening properties for node:",e),ts(e),"process"===e.data.type&&tl(t),"mcp"===e.data.type?eK(!0):"start"===e.data.type?e_(!0):"finish"===e.data.type?eJ(!0):"subflow"===e.data.type?eQ(!0):"resource"===e.data.type?e0(!0):"signal"===e.data.type?e2(!0):"static"===e.data.type?e4(!0):"trigger"===e.data.type?e9(!0):eU(!0)},[]),sn=(0,o.useCallback)(e=>{s4.debug("onDrop: Node dropped on canvas"),e.preventDefault();let t=e.dataTransfer.getData("application/reactflow");if(s4.debug(`onDrop: Node type from data transfer: ${t}`),!t||!rS)return void s4.debug(`onDrop: Missing required data - type: ${!!t}, reactFlowInstance: ${!!rS}`);let r=rS.screenToFlowPosition({x:e.clientX,y:e.clientY});s4.debug(`onDrop: Calculated position: (${r.x}, ${r.y})`);let s=rI(t,r);s&&(s4.info(`onDrop: Created new ${t} node with ID: ${s.id}`),s4.debug(`onDrop: Selected new node ${s.id} in the inspector`))},[rS,rI]),sa=(0,o.useCallback)(e=>{e.preventDefault(),e.dataTransfer.dropEffect="move"},[]),si=(0,o.useCallback)(e=>{s4.debug("onInit: ReactFlow instance initialized"),rC(e)},[]);return(0,s.jsxs)(s3,{children:["advanced"===eg&&!_&&(0,s.jsx)(a.default,{sx:{flex:"0 0 auto",height:"100%",minHeight:0},children:(0,s.jsx)(eM,{authoringMode:eg,onAddNode:r$})}),(0,s.jsx)(sQ.G.Provider,{value:ep,children:(0,s.jsx)(E.Ln,{children:(0,s.jsxs)(s6,{children:[(0,s.jsxs)(s9,{elevation:1,children:[(0,s.jsxs)(a.default,{sx:{minWidth:0,flex:"1 1 180px",display:{xs:"none",md:"block"}},children:[(0,s.jsx)(i.A,{"data-ask-flujo-flow-field":"name",variant:"subtitle2",fontWeight:850,noWrap:!0,children:Z}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:"guided"===eg?q("flows.builder.step",X.filter(e=>["process","subflow","signal"].includes(e.data.type)).length):`${q("flows.builder.node",X.length)} \xb7 ${q("flows.builder.connection",Y.length)}`})]}),(0,s.jsx)(T.A,{size:"small",variant:"outlined",color:"error"===tF?"error":"saved"===tF?"success":"default",icon:"saving"===tF?(0,s.jsx)(N.default,{size:14}):"error"===tF?(0,s.jsx)(sK,{}):"saved"===tF?(0,s.jsx)(sq.A,{}):void 0,label:"saving"===tF?W("flows.builder.saving"):"error"===tF?W("flows.builder.saveFailed"):"unsaved"===tF?C&&!t$?W("flows.builder.draft"):W("flows.builder.unsaved"):W("flows.builder.saved"),"aria-label":W("flows.builder.saveStatus",{status:"saving"===tF?W("flows.builder.saving"):"error"===tF?W("flows.builder.saveFailed"):t$?W("flows.builder.unsaved"):W("flows.builder.saved")})}),(0,s.jsx)(F.A,{sx:{m:0,whiteSpace:"nowrap"},control:(0,s.jsx)(z.A,{size:"small",checked:"advanced"===eg,onChange:e=>ew(e.target.checked?"advanced":"guided"),inputProps:{"aria-label":W("flows.builder.expertView")}}),label:"advanced"===eg?W("flows.builder.expert"):W("flows.builder.easy")}),"advanced"===eg&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(d.A,{variant:"outlined",size:"small",startIcon:(0,s.jsx)(A.A,{}),onClick:e=>tm(e.currentTarget),"aria-label":W("flows.builder.addNode"),"aria-controls":th?"add-node-menu":void 0,"aria-haspopup":"menu","aria-expanded":th?"true":void 0,title:W("flows.builder.addNodeHelp"),children:W("flows.builder.addNode")}),(0,s.jsx)(H.A,{id:"add-node-menu",anchorEl:th,open:!!th,onClose:()=>tm(null),MenuListProps:{"aria-label":W("flows.builder.addNode")},children:rz.map(e=>(0,s.jsx)(R.A,{onClick:()=>{tm(null),r$(e.type)},children:(0,s.jsxs)(a.default,{sx:{minWidth:0},children:[(0,s.jsx)(i.A,{variant:"subtitle2",fontWeight:750,children:e.label}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:e.description})]})},e.type))}),(0,s.jsx)(e7,{nodes:X,edges:Y}),(0,s.jsx)(p.A,{title:W("flows.builder.autoAlign"),children:(0,s.jsx)("span",{children:(0,s.jsx)(u.A,{"aria-label":W("flows.builder.autoAlign"),onClick:r0,disabled:X.length<=1,color:"primary",size:"small",children:(0,s.jsx)(sU,{})})})}),(0,s.jsx)(P.A,{orientation:"vertical",flexItem:!0}),(0,s.jsx)(p.A,{title:`${W("flows.builder.undo")} \xb7 Ctrl/⌘ Z`,children:(0,s.jsx)("span",{children:(0,s.jsx)(u.A,{"aria-label":W("flows.builder.undo"),onClick:rx,disabled:!rm,color:"primary",size:"small",children:(0,s.jsx)(sH,{})})})}),(0,s.jsx)(p.A,{title:`${W("flows.builder.redo")} \xb7 Ctrl/⌘ Shift Z`,children:(0,s.jsx)("span",{children:(0,s.jsx)(u.A,{"aria-label":W("flows.builder.redo"),onClick:rw,disabled:!rg,color:"primary",size:"small",children:(0,s.jsx)(sR,{})})})})]}),(0,s.jsx)(d.A,{variant:"guided"===eg?"outlined":"contained",color:"primary",onClick:()=>void rr(),startIcon:"saving"===tF?(0,s.jsx)(N.default,{size:16,color:"inherit"}):(0,s.jsx)(sz,{}),disabled:!!ei||"saving"===tF,"aria-label":W("flows.builder.saveFlow"),children:W("flows.builder.save")}),"guided"===eg&&k&&(0,s.jsx)(d.A,{variant:"contained",color:"primary",onClick:()=>void rs(),startIcon:(0,s.jsx)(tN.A,{}),disabled:!rU,children:W("flows.builder.try")}),("advanced"===eg||e&&!C)&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(p.A,{title:W("flows.builder.moreCommands"),children:(0,s.jsx)(u.A,{id:"more-actions-button","data-tour":"improve-flow","aria-label":W("flows.builder.moreActions"),"aria-controls":tg?"more-actions-menu":void 0,"aria-haspopup":"menu","aria-expanded":tg?"true":void 0,onClick:e=>tx(e.currentTarget),color:"primary",size:"small",children:(0,s.jsx)(sP,{})})}),(0,s.jsxs)(H.A,{id:"more-actions-menu",anchorEl:tg,open:!!tg,onClose:()=>tx(null),MenuListProps:{"aria-labelledby":"more-actions-button"},children:["advanced"===eg&&(0,s.jsx)(R.A,{disabled:X.length<=1,onClick:()=>{tx(null),r0()},children:W("flows.builder.autoAlign")}),"advanced"===eg&&(0,s.jsx)(R.A,{disabled:X.length<=1,onClick:()=>{tx(null),r1()},children:W("flows.builder.relayout")}),"advanced"===eg&&(0,s.jsx)(R.A,{disabled:0===X.length,onClick:ri,children:W("flows.builder.repairAutomatic")}),"advanced"===eg&&(0,s.jsx)(R.A,{disabled:0===X.length,onClick:rd,children:W("flows.builder.repairAi")}),e&&!C&&(0,s.jsx)(P.A,{}),e&&!C&&"advanced"===eg&&(0,s.jsx)(R.A,{onClick:()=>{tx(null),tv(""),tu(!0)},children:W("flows.builder.improveAi")}),e&&!C&&(0,s.jsx)(R.A,{onClick:()=>{tx(null),ty(!0)},children:"guided"===eg?W("flows.builder.previousVersions"):W("flows.builder.history")}),e&&!C&&(0,s.jsx)(R.A,{onClick:()=>{tx(null),eE("duplicate"),eD(W("flows.page.copyName",{name:e.name})),eP(!0)},children:"guided"===eg?W("flows.builder.duplicateAgent"):W("flows.builder.duplicateFlow")}),e&&!C&&(0,s.jsx)(R.A,{sx:{color:"error.main"},onClick:()=>{tx(null),rl()},children:"guided"===eg?W("flows.builder.deleteAgent"):W("flows.builder.deleteFlow")})]})]})]}),(0,s.jsx)(f.A,{in:!!te,unmountOnExit:!0,children:te&&(0,s.jsx)(h.A,{severity:"warning",onClose:()=>tt(null),sx:{mb:1},children:te})}),(0,s.jsx)(f.A,{in:!!tp,unmountOnExit:!0,children:tp&&(0,s.jsx)(h.A,{severity:tp.severity,onClose:()=>tf(null),sx:{mb:1},children:tp.message})}),"guided"===eg?(0,s.jsx)(tH,{nodes:X,orderedStepIds:ez.orderedNodeIds,subagentNodeIds:ez.subagentNodeIds,selectedNodeId:rN?.id,flowName:Z,flowNameError:ei,onFlowNameChange:e=>{ea.current=e,en(e),ed(t9(e)),t6()},onSelectNode:rK,onAddTask:rT,onTry:k?()=>{rs()}:void 0,isSaving:"saving"===tF,hasAdvancedFeatures:eH,readyToTry:rU,needsAIConnection:!rV,onSwitchAdvanced:()=>ew("advanced"),models:tR,modelsLoading:!tW,aiAssistance:tO,selectedModelId:tL,onChooseAssistance:e=>{tB(e),tD(t=>"manual"===e?null:t??oe(tR))},onModelChange:tD,onCheckPlausibility:()=>{t_(null),tJ("review"),tK(!0)},currentFlowId:e?.id??tY.current,availableAgents:y,mcpConnectionsByNode:rH,agentConnectionsByNode:rP,onConnectMcpServer:r7,onRemoveMcpServer:st,loadMcpServers:so,onConnectAgent:sr,onRemoveAgent:ss}):(0,s.jsxs)(a.default,{sx:{flex:1,width:"100%",minWidth:0,minHeight:0,position:"relative",display:"flex",flexDirection:"column"},children:[_&&(0,s.jsx)(a.default,{sx:{mb:1},children:(0,s.jsx)(eM,{authoringMode:eg,onAddNode:r$})}),(0,s.jsx)(el.Ay,{ref:rA,nodes:X,edges:Y,onNodesChange:rb,onEdgesChange:rj,onDrop:sn,onDragOver:sa,onInit:si,reactFlowWrapper:rA,onEditNode:sl,onCreateNode:rI,onConvertProcessToSubflow:e?e=>td(e.id):void 0,onEditEdge:e=>ta(e)})]})]})})}),("advanced"===eg||rN)&&(0,s.jsx)(tC,{selectedNode:rN,onClearSelection:rZ,onCommitNode:r4,onOpenAdvanced:sl,onOpenTechnicalDetails:e=>e8(e.id),flowName:Z,flowNameError:ei,onFlowNameChange:e=>{ea.current=e,en(e),ed(t9(e)),t6()},flowDescription:ec,onFlowDescriptionChange:e=>{eu(e),t6()},authoringMode:eg,beginnerMode:"guided"===eg,onAuthoringModeChange:ew,permissionRuleCount:eA.length,onOpenPermissionRules:()=>e$(!0),onSuggestTools:e=>{t_(e.id),tJ("apps"),tK(!0)},onSuggestAgents:e=>{t_(e.id),tJ("agents"),tK(!0)},onImprovePrompt:async e=>{let t=e.data.properties?.boundModel,r=e.data.properties?.modelId,s="string"==typeof t&&t?t:"string"==typeof r&&r?r:tL;if(!s)throw Error(W("flows.inspector.chooseAiToImprove"));let o={...rG,nodes:rG.nodes.map(t=>t.id===e.id?e:t)};return(await D.g.improvePromptForStep({flow:o,relatedFlows:j,nodeId:e.id,modelId:s})).prompt},onCheckPlausibility:()=>{t_(null),tJ("review"),tK(!0)},connectedMcpServers:rR,onConnectMcpServer:r7,onRemoveMcpServer:st,loadMcpServers:so,onSelectMcpNodeServer:se,currentFlowId:e?.id??tY.current,availableAgents:y,connectedAgents:rN?.data.type==="process"?rP.get(rN.id)??[]:[],onConnectAgent:sr,onRemoveAgent:ss,models:tR,onNavigateToFlow:M?e=>ro(()=>M(e)):void 0}),(0,s.jsx)(rM,{open:eB,node:tr,onClose:()=>{eU(!1),tl("edit")},onSave:r8,mode:to,flowEdges:Y,flowNodes:X,flowId:e?.id,onConnectMcpServer:e=>{tr&&r7(tr.id,e)},authoringMode:eg}),(0,s.jsx)(tV,{open:tU,flow:rG,relatedFlows:j,nodeId:tG,initialFocus:tX,modelId:rY,models:tR,onApply:rQ,onApplyRelatedFlows:S,onClose:()=>tK(!1)}),(0,s.jsx)(rE,{open:eq,node:tr,onClose:()=>eK(!1),onSave:r8,authoringMode:eg}),(0,s.jsx)(rL,{open:eG,node:tr,onClose:()=>e_(!1),onSave:r8}),(0,s.jsx)(rD,{open:eX,node:tr,onClose:()=>eJ(!1),onSave:r8}),(0,s.jsx)(rJ,{open:eY,node:tr,onClose:()=>eQ(!1),onSave:r8,onNavigateToFlow:M?e=>{eQ(!1),ro(()=>M(e))}:void 0,flowId:e?.id,authoringMode:eg}),(0,s.jsx)(r2,{open:eZ,node:tr,onClose:()=>e0(!1),onSave:r8,flowNodes:X}),(0,s.jsx)(r5,{open:e1,node:tr,onClose:()=>e2(!1),onSave:r8}),(0,s.jsx)(r6,{open:e5,node:tr,onClose:()=>e4(!1),onSave:r8}),(0,s.jsx)(sw,{open:e3,node:tr,flowId:e?.id||"",onClose:()=>{e9(!1),ts(null)},onSave:r8}),(0,s.jsx)(rq,{open:!!rF,node:rF,flowNames:ep,onClose:()=>e8(null)}),(0,s.jsx)(rO,{open:!!tn,edge:tn,onClose:()=>ta(null),onSave:ry}),(0,s.jsx)(sF,{open:!!ti,processNodeId:ti,parentFlow:{id:e?.id||"",name:Z,description:ec,folder:e?.folder,favorite:e?.favorite,permissionRules:re(),createdAt:e?.createdAt,updatedAt:e?.updatedAt,nodes:X,edges:Y},existingFlowNames:y.map(e=>e.name),onClose:()=>td(null),onAccept:rv}),(0,s.jsx)(sS,{open:tb,flowId:e?.id,onClose:()=>ty(!1),onRestore:ra}),(0,s.jsx)(sD,{open:tc,onClose:()=>tu(!1),currentFlow:{id:e?.id||"",name:Z,description:ec,permissionRules:re(),nodes:X,edges:Y},onImproved:rn,initialDescription:tw}),(0,s.jsxs)(m.A,{open:eI,onClose:()=>e$(!1),fullWidth:!0,maxWidth:"md","aria-labelledby":"permission-rules-dialog-title",children:[(0,s.jsx)(g.A,{id:"permission-rules-dialog-title",children:W("flows.builder.permissionsTitle")}),(0,s.jsxs)(x.A,{children:[(0,s.jsx)(w.A,{sx:{mb:2},children:W("flows.builder.permissionsHelp")}),eT&&(0,s.jsx)(h.A,{severity:"error",sx:{mb:2},children:eT}),0===eA.length?(0,s.jsx)(i.A,{color:"text.secondary",sx:{mb:2},children:W("flows.builder.noPermissions")}):eA.map((e,t)=>(0,s.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:1},children:[(0,s.jsxs)(i.A,{"aria-label":W("flows.builder.rule",{number:t+1}),sx:{minWidth:24},children:[t+1,"."]}),(0,s.jsx)(v.A,{label:W("flows.builder.action"),size:"small",value:e.action,onChange:t=>t8(e.id,{action:t.target.value}),inputProps:{"aria-label":`${W("flows.builder.rule",{number:t+1})}: ${W("flows.builder.action")}`},sx:{flex:1}}),(0,s.jsx)(v.A,{label:W("flows.builder.resource"),size:"small",value:e.resource,onChange:t=>t8(e.id,{resource:t.target.value}),inputProps:{"aria-label":`${W("flows.builder.rule",{number:t+1})}: ${W("flows.builder.resource")}`},sx:{flex:1}}),(0,s.jsxs)(v.A,{select:!0,label:W("flows.builder.effect"),size:"small",value:e.effect,onChange:t=>t8(e.id,{effect:t.target.value}),inputProps:{"aria-label":`${W("flows.builder.rule",{number:t+1})}: ${W("flows.builder.effect")}`},sx:{minWidth:100},children:[(0,s.jsx)(R.A,{value:"allow",children:W("flows.builder.allow")}),(0,s.jsx)(R.A,{value:"deny",children:W("flows.builder.deny")}),(0,s.jsx)(R.A,{value:"ask",children:W("flows.builder.ask")})]}),(0,s.jsx)(p.A,{title:W("flows.builder.moveRuleUp",{number:t+1}),children:(0,s.jsx)("span",{children:(0,s.jsx)(u.A,{"aria-label":W("flows.builder.moveRuleUp",{number:t+1}),onClick:()=>t7(t,-1),disabled:0===t,children:(0,s.jsx)(r3.A,{})})})}),(0,s.jsx)(p.A,{title:W("flows.builder.moveRuleDown",{number:t+1}),children:(0,s.jsx)("span",{children:(0,s.jsx)(u.A,{"aria-label":W("flows.builder.moveRuleDown",{number:t+1}),onClick:()=>t7(t,1),disabled:t===eA.length-1,children:(0,s.jsx)(r9,{})})})}),(0,s.jsx)(p.A,{title:W("flows.builder.deleteRule",{number:t+1}),children:(0,s.jsx)(u.A,{"aria-label":W("flows.builder.deleteRule",{number:t+1}),onClick:()=>{var t;return t=e.id,void(eS(e=>e.filter(e=>e.id!==t)),ek(!0),eN(null),t6())},children:(0,s.jsx)(sW.A,{})})})]},e.id)),(0,s.jsx)(d.A,{startIcon:(0,s.jsx)(A.A,{}),onClick:()=>{eS(e=>[...e,ej({action:"",resource:"",effect:"ask"})]),ek(!0),eN(null),t6()},children:W("flows.builder.addRule")})]}),(0,s.jsx)(b.A,{children:(0,s.jsx)(d.A,{onClick:()=>e$(!1),children:W("flows.builder.done")})})]}),(0,s.jsxs)(m.A,{open:eR,onClose:rp,children:[(0,s.jsx)(g.A,{children:"duplicate"===eW?"guided"===eg?W("flows.builder.copyAgent"):W("flows.builder.copyFlow"):"rename"===eW?"guided"===eg?W("flows.builder.renameAgent"):W("flows.builder.renameFlow"):W("flows.builder.unsavedChanges")}),(0,s.jsx)(x.A,{children:"unsaved"===eW?(0,s.jsx)(w.A,{children:W("flows.builder.unsavedQuestion")}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(w.A,{children:"duplicate"===eW?W("flows.builder.copyPrompt"):W("flows.builder.renameQuestion")}),(0,s.jsx)(v.A,{autoFocus:!0,margin:"dense",label:"guided"===eg?W("flows.builder.agentName"):W("flows.builder.flowName"),type:"text",fullWidth:!0,value:eL,onChange:e=>{let t=e.target.value;eD(t),eV(t9(t))},error:!!eO,helperText:eO,sx:{mt:2}})]})}),(0,s.jsxs)(b.A,{children:[(0,s.jsx)(d.A,{onClick:rp,children:W("flows.builder.cancel")}),"unsaved"===eW&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(d.A,{onClick:()=>{tT(!1),ru(),rp()},color:"error",children:W("flows.builder.discard")}),(0,s.jsx)(d.A,{onClick:rh,variant:"contained",color:"primary",children:W("flows.builder.saveChanges")})]}),"rename"===eW&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(d.A,{onClick:()=>{let t=t9(eL);t?eV(t):(e&&rc(e,eL),rp())},children:W("flows.builder.copy")}),(0,s.jsx)(d.A,{onClick:rf,variant:"contained",color:"primary",disabled:!!eO,children:W("flows.builder.rename")})]}),"duplicate"===eW&&(0,s.jsx)(d.A,{onClick:rf,variant:"contained",color:"primary",disabled:!!eO,children:W("flows.builder.copy")})]})]})]})});or.displayName="FlowBuilder";var os=r(59012),oo=r(55601),ol=r(46455),on=r(18540),oa=r(2255);async function oi(e,t,r){let s=await fetch("/api/flow/generate/visual",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),signal:r});if(!s.ok){let e=await s.json().catch(()=>null);throw Error(e?.error||"Could not start visual agent generation.")}let o=null,l=null;if(await (0,oa.d)(s,async e=>{await t(e),"complete"===e.type&&(o=e.result),"error"===e.type&&(l=e.error)}),l)throw Error(l);if(!o)throw Error("Visual generation ended without a completed draft.");return o}var od=r(39749),oc=r(23462);let ou=(0,y.A)((0,s.jsx)("path",{d:"M14 10.5v.5h-3v-.5c0-.83-.67-1.5-1.5-1.5h-1V7h1c.83 0 1.5-.67 1.5-1.5v-3c0-.83-.67-1.5-1.5-1.5h-4C4.67 1 4 1.67 4 2.5v3C4 6.33 4.67 7 5.5 7h1v2h-1C4.67 9 4 9.67 4 10.5v3c0 .83.67 1.5 1.5 1.5h1v2h-1c-.83 0-1.5.67-1.5 1.5v3c0 .83.67 1.5 1.5 1.5h4c.83 0 1.5-.67 1.5-1.5v-3c0-.83-.67-1.5-1.5-1.5h-1v-2h1c.83 0 1.5-.67 1.5-1.5V13h3v.5c0 .83.67 1.5 1.5 1.5h4c.83 0 1.5-.67 1.5-1.5v-3c0-.83-.67-1.5-1.5-1.5h-4c-.83 0-1.5.67-1.5 1.5"}),"SchemaRounded"),op={started:!1,sessionId:null,maxDepth:8,agents:{},agentOrder:[],focusedAgentId:null,suggestions:{},decisions:[],activities:[],routes:{},previews:{}};function of(e,t){return`${e}\u0000${t}`}function oh(e,t){if("reset"===t.type)return op;if("focus"===t.type)return{...e,focusedAgentId:t.agentId};if("session-started"===t.type)return{...op,started:!0,sessionId:t.sessionId,maxDepth:t.maxDepth,activities:[t.message]};if("activity"===t.type)return{...e,activities:[...e.activities.slice(-15),t.message]};if("agent-created"===t.type)return{...e,agents:{...e.agents,[t.agent.id]:t.agent},agentOrder:e.agentOrder.includes(t.agent.id)?e.agentOrder:[...e.agentOrder,t.agent.id],focusedAgentId:t.agent.id};if("agent-focused"===t.type)return{...e,focusedAgentId:t.agentId};if("step-added"===t.type||"step-updated"===t.type)return function(e,t,r){let s=e.agents[t];if(!s)return e;let o=s.steps.findIndex(e=>e.id===r.id),l=o>=0?s.steps.map((e,t)=>t===o?r:e):[...s.steps,r];return{...e,agents:{...e.agents,[t]:{...s,steps:l}}}}({...e,focusedAgentId:t.agentId},t.agentId,t.step);if("routes-updated"===t.type)return{...e,routes:{...e.routes,[t.agentId]:t.routes}};if("flow-preview"===t.type)return{...e,previews:{...e.previews,[t.agentId]:{flow:t.flow,revision:t.revision}}};if("suggestions"===t.type)return{...e,suggestions:{...e.suggestions,[of(t.agentId,t.stepId)]:{tools:t.tools,agents:t.agents}}};if("suggestion-decision"===t.type)return{...e,decisions:[...e.decisions,t.decision]};if("agent-status"===t.type){let r=e.agents[t.agentId];return r?{...e,agents:{...e.agents,[r.id]:{...r,status:t.status}}}:e}if("marketplace-results"===t.type)return{...e,activities:[...e.activities.slice(-15),`Marketplace search “${t.query}” found ${t.count} result(s).`]};if("connector-installed"===t.type)return{...e,activities:[...e.activities.slice(-15),`Connected ${t.name} with ${t.tools.length} tool(s).`]};if("complete"===t.type){let r=Math.max(0,...Object.values(e.previews).map(e=>e.revision))+1,s=Object.fromEntries(t.result.flows.map(e=>[e.id,{flow:e,revision:r}]));return{...e,activities:[],previews:{...e.previews,...s}}}return"error"===t.type?{...e,activities:[t.error]}:e}let om=(0,oc.i7)`
|
|
7
|
+
0%, 100% { transform: scale(1); opacity: .72; }
|
|
8
|
+
50% { transform: scale(1.06); opacity: 1; }
|
|
9
|
+
`;function og(e){return"ready"===e?"success":"needs-attention"===e?"warning":"checking"===e?"info":"primary"}let ox={building:"flows.generator.visualStatus.building",checking:"flows.generator.visualStatus.checking",ready:"flows.generator.visualStatus.ready","needs-attention":"flows.generator.visualStatus.needs-attention"};function ow({decision:e}){let{t}=(0,ev.s9)(),r="accepted"===e.decision;return(0,s.jsx)(T.A,{size:"small",color:r?"success":"default",variant:r?"filled":"outlined",icon:r?(0,s.jsx)(sq.A,{}):(0,s.jsx)(ts.A,{}),label:t(r?"flows.generator.visualUsing":"flows.generator.visualSkipped",{name:e.label}),title:e.reason,sx:{maxWidth:"100%","& .MuiChip-label":{overflow:"hidden",textOverflow:"ellipsis"}}})}function ov({state:e,onSelect:t}){let{t:r,tp:o}=(0,ev.s9)();return(0,s.jsxs)(te.A,{spacing:.75,children:[(0,s.jsxs)(te.A,{direction:"row",spacing:1,alignItems:"center",sx:{px:.5},children:[(0,s.jsx)(C.A,{color:"primary",fontSize:"small"}),(0,s.jsx)(i.A,{variant:"subtitle2",fontWeight:850,children:r("flows.generator.visualTree")}),(0,s.jsx)(T.A,{size:"small",label:`${e.agentOrder.length}`})]}),e.agentOrder.map(l=>{let n=e.agents[l];if(!n)return null;let d=e.focusedAgentId===n.id;return(0,s.jsx)(I.A,{component:"button",type:"button",onClick:()=>t(n.id),elevation:0,sx:{appearance:"none",width:`calc(100% - ${10*Math.min(n.depth,5)}px)`,ml:`${10*Math.min(n.depth,5)}px !important`,p:1,textAlign:"left",color:"text.primary",cursor:"pointer",border:1,borderColor:d?"primary.main":"divider",borderRadius:2.5,bgcolor:d?e=>(0,en.X4)(e.palette.primary.main,.11):"background.paper",transition:"all 180ms ease"},children:(0,s.jsxs)(te.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,s.jsx)(tv.A,{color:d?"primary":"action",fontSize:"small"}),(0,s.jsxs)(a.default,{minWidth:0,flex:1,children:[(0,s.jsx)(i.A,{variant:"body2",fontWeight:800,noWrap:!0,children:n.name}),(0,s.jsxs)(i.A,{variant:"caption",color:"text.secondary",children:[o("flows.card.step",n.steps.length)," \xb7 ",r("flows.generator.visualLevel",{count:n.depth})]})]}),(0,s.jsx)(a.default,{sx:{width:8,height:8,borderRadius:"50%",bgcolor:`${og(n.status)}.main`}})]})},n.id)})]})}function ob({preview:e,agentName:t}){let{t:r}=(0,ev.s9)();return(0,s.jsxs)(a.default,{"data-testid":"visual-expert-preview",sx:{minWidth:0,minHeight:{xs:360,lg:0},height:"100%",display:"flex",flexDirection:"column",borderLeft:{lg:1},borderTop:{xs:1,lg:0},borderColor:"divider",bgcolor:e=>(0,en.X4)(e.palette.background.default,.55)},children:[(0,s.jsxs)(te.A,{direction:"row",spacing:1,alignItems:"center",sx:{px:1.5,py:1.25,borderBottom:1,borderColor:"divider"},children:[(0,s.jsx)(ou,{color:"primary",fontSize:"small"}),(0,s.jsxs)(a.default,{minWidth:0,flex:1,children:[(0,s.jsx)(i.A,{variant:"subtitle2",fontWeight:850,children:r("flows.generator.visualExpertPreview")}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",noWrap:!0,children:t})]}),(0,s.jsx)(T.A,{size:"small",variant:"outlined",color:"primary",label:r("flows.generator.visualAutoAligned")})]}),(0,s.jsx)(a.default,{sx:{position:"relative",flex:1,minHeight:0},children:e?(0,s.jsx)(sj,{flow:e.flow,autoLayout:!0,fitViewOnChange:!0},e.flow.id):(0,s.jsx)(a.default,{sx:{position:"absolute",inset:0,display:"grid",placeItems:"center",p:4,textAlign:"center"},children:(0,s.jsxs)(te.A,{spacing:1.5,alignItems:"center",children:[(0,s.jsxs)(a.default,{sx:{position:"relative",display:"grid",placeItems:"center",width:64,height:64},children:[(0,s.jsx)(a.default,{sx:{position:"absolute",inset:0,borderRadius:"50%",bgcolor:"primary.main",opacity:.1,animation:`${om} 1.5s ease-in-out infinite`}}),(0,s.jsx)(ou,{color:"primary",sx:{fontSize:32}})]}),(0,s.jsx)(i.A,{variant:"body2",fontWeight:750,children:r("flows.generator.visualPreviewWaiting")}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:r("flows.generator.visualPreviewHelp")})]})})})]})}function oy({state:e,working:t,onSelectAgent:r}){let{t:l}=(0,ev.s9)(),n=e.focusedAgentId?e.agents[e.focusedAgentId]:void 0;if(!n)return(0,s.jsx)(a.default,{sx:{minHeight:360,display:"grid",placeItems:"center",textAlign:"center",p:4},children:(0,s.jsxs)(te.A,{alignItems:"center",spacing:2,children:[(0,s.jsxs)(a.default,{sx:{position:"relative",display:"grid",placeItems:"center",width:88,height:88},children:[(0,s.jsx)(a.default,{sx:{position:"absolute",inset:0,borderRadius:"50%",bgcolor:"primary.main",opacity:.12,animation:`${om} 1.5s ease-in-out infinite`}}),(0,s.jsx)(tn.A,{color:"primary",sx:{fontSize:42}})]}),(0,s.jsx)(i.A,{variant:"h6",children:l("flows.generator.visualDesigning")}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:l("flows.generator.visualFirstAgent")}),t&&(0,s.jsx)(N.default,{size:24})]})});let d=e.previews[n.id];return(0,s.jsxs)(a.default,{sx:{display:"grid",gridTemplateColumns:{xs:"minmax(0, 1fr)",md:"210px minmax(0, 1fr)",lg:"210px minmax(380px, 1.08fr) minmax(340px, 0.92fr)"},minHeight:460,height:{lg:"58vh"},maxHeight:{lg:"58vh"},width:"100%",maxWidth:"100%",minWidth:0,overflowX:"hidden"},children:[(0,s.jsx)(a.default,{sx:{minWidth:0,p:1.5,borderRight:{md:1},borderBottom:{xs:1,md:0},borderColor:"divider",overflowY:"auto"},children:(0,s.jsx)(ov,{state:e,onSelect:r})}),(0,s.jsx)(a.default,{sx:{minWidth:0,p:{xs:1.5,sm:2.5},overflowY:"auto"},children:(0,s.jsxs)(te.A,{spacing:2,children:[(0,s.jsx)(I.A,{elevation:0,sx:{p:2,border:1,borderColor:"divider",borderRadius:3,bgcolor:e=>(0,en.X4)(e.palette.primary.main,.045)},children:(0,s.jsxs)(te.A,{direction:{xs:"column",sm:"row"},spacing:1,alignItems:{sm:"center"},children:[(0,s.jsxs)(a.default,{flex:1,minWidth:0,children:[(0,s.jsx)(i.A,{variant:"overline",color:"primary.main",children:l("flows.generator.visualLevelAgent",{count:n.depth})}),(0,s.jsx)(i.A,{variant:"h5",fontWeight:850,children:n.name}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:n.goal})]}),(0,s.jsx)(T.A,{color:og(n.status),label:l(ox[n.status])})]})}),(0,s.jsxs)(a.default,{sx:{px:1.5,py:1,borderRadius:2.5,border:1,borderColor:"divider",bgcolor:"background.paper"},children:[(0,s.jsx)(i.A,{variant:"caption",fontWeight:850,color:"primary.main",sx:{textTransform:"uppercase"},children:l("flows.guided.when")}),(0,s.jsx)(i.A,{variant:"body2",fontWeight:700,children:l("flows.guided.someoneAsks")})]}),n.steps.map((t,d)=>{let c=e.suggestions[of(n.id,t.id)],u=e.decisions.filter(e=>e.agentId===n.id&&e.stepId===t.id),p=!!c&&u.length<c.tools.length+c.agents.length,f=t.connectedAgentIds.map(t=>e.agents[t]).filter(Boolean);return(0,s.jsxs)(o.Fragment,{children:[(0,s.jsx)(t$,{sx:{alignSelf:"center",color:"text.disabled"}}),(0,s.jsx)(I.A,{elevation:0,sx:{p:1.75,border:1,borderColor:p?"info.main":"divider",borderRadius:3,animation:p?`${om} 1.8s ease-in-out infinite`:void 0},children:(0,s.jsxs)(te.A,{spacing:1.25,children:[(0,s.jsxs)(te.A,{direction:"row",spacing:1.25,alignItems:"flex-start",children:[(0,s.jsx)(a.default,{sx:{display:"grid",placeItems:"center",width:32,height:32,flexShrink:0,borderRadius:2,bgcolor:"primary.main",color:"primary.contrastText",fontWeight:850},children:d+1}),(0,s.jsxs)(a.default,{minWidth:0,flex:1,children:[(0,s.jsx)(i.A,{variant:"subtitle1",fontWeight:850,children:t.label}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{whiteSpace:"pre-wrap"},children:t.task.replace(/\$\{tool:([^}_]+)__([^}]+)\}/g,(e,t,r)=>`${t} / ${r}`)})]}),p&&(0,s.jsx)(N.default,{size:18})]}),(c||u.length>0||f.length>0)&&(0,s.jsx)(P.A,{}),c&&c.tools.length+c.agents.length>0&&(0,s.jsxs)(te.A,{direction:"row",spacing:.75,alignItems:"center",children:[(0,s.jsx)(tn.A,{color:"info",fontSize:"small"}),(0,s.jsx)(i.A,{variant:"caption",fontWeight:800,children:l("flows.generator.visualSuggestionsReviewed")})]}),u.length>0&&(0,s.jsx)(te.A,{direction:"row",gap:.75,flexWrap:"wrap",children:u.map(e=>(0,s.jsx)(ow,{decision:e},e.id))}),f.length>0&&(0,s.jsxs)(te.A,{spacing:.75,children:[(0,s.jsx)(i.A,{variant:"caption",fontWeight:800,color:"text.secondary",sx:{textTransform:"uppercase"},children:l("flows.generator.visualNewHelpers")}),f.map(e=>(0,s.jsx)(T.A,{icon:(0,s.jsx)(tf.A,{}),color:"primary",variant:"outlined",label:`${e.name} \xb7 ${l("flows.generator.visualLevel",{count:e.depth})}`,onClick:()=>r(e.id)},e.id))]})]})})]},t.id)}),0===n.steps.length&&(0,s.jsxs)(I.A,{elevation:0,sx:{p:3,border:1,borderStyle:"dashed",borderColor:"divider",borderRadius:3,textAlign:"center"},children:[(0,s.jsx)(N.default,{size:22,sx:{mb:1}}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:l("flows.generator.visualChoosingStep")})]}),(0,s.jsx)(t$,{sx:{alignSelf:"center",color:"text.disabled"}}),(0,s.jsxs)(a.default,{sx:{px:1.5,py:1,borderRadius:2.5,border:1,borderColor:"divider",bgcolor:e=>(0,en.X4)(e.palette.success.main,.055)},children:[(0,s.jsx)(i.A,{variant:"caption",fontWeight:850,color:"success.main",sx:{textTransform:"uppercase"},children:l("flows.guided.then")}),(0,s.jsx)(i.A,{variant:"body2",fontWeight:700,children:l("flows.guided.sendAnswer")})]}),e.activities.length>0&&(0,s.jsx)(I.A,{elevation:0,sx:{p:1.5,borderRadius:3,bgcolor:"action.hover"},children:(0,s.jsxs)(te.A,{direction:"row",spacing:1,alignItems:"center",children:[t?(0,s.jsx)(N.default,{size:16}):(0,s.jsx)(sq.A,{color:"success",fontSize:"small"}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:e.activities[e.activities.length-1]})]})})]})}),(0,s.jsx)(a.default,{sx:{gridColumn:{xs:"1",md:"1 / -1",lg:"auto"},minWidth:0,minHeight:0,height:"100%",overflow:"hidden"},children:(0,s.jsx)(ob,{preview:d,agentName:n.name})})]})}let oj=(0,W.h)("frontend/components/Flow/FlowManager/GenerateFlowDialog");function oA(e,t){return{id:(0,L.A)(),role:e,content:t,timestamp:Date.now()}}function oS(e){if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return e}}function oC(e,t,r,s){let o=r(t?"flows.generator.updated":"flows.generator.readyNamed",{name:e.flow.name}),l=Math.max(0,e.flows.length-1),n=l?s("flows.generator.helper",l):"",a=e.errorCount+e.warningCount;return[o,n,a?s("flows.generator.review",a):r("flows.generator.readyReview")].filter(Boolean).join(" ")}let ok=({open:e,onClose:t,onGenerated:r})=>{let{settings:l,settingsHydrated:n}=(0,od.useStorage)(),{t:c,tp:f}=(0,ev.s9)(),w=n&&l?.experimental?.enabled===!0&&!0===l.experimental.flowBasedGenerator,[v,y]=(0,o.useState)([]),[j,A]=(0,o.useState)(""),[C,k]=(0,o.useState)(null),[M,I]=(0,o.useState)([]),[$,N]=(0,o.useState)(null),[z,H]=(0,o.useState)(!1),[P,W]=(0,o.useState)(8),[E,O]=(0,o.useState)(!1),[B,U]=(0,o.useState)(!1),[q,K]=(0,o.useState)(null),[G,_]=(0,o.useReducer)(oh,op),X=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(!e)return;let t=!1;return V.N.loadModels().then(e=>{t||(y(e),A(t=>e.some(e=>e.id===t)?t:e[0]?.id??""))}).catch(e=>{oj.warn("Failed to load generator models",e),t||K(c("flows.generator.modelsFailed"))}),()=>{t=!0}},[e,c]),(0,o.useEffect)(()=>{e&&(k(null),I([]),N(null),H(!1),W(8),_({type:"reset"}),K(null))},[w,e]);let J=(0,o.useMemo)(()=>M.filter(e=>("user"===e.role||"assistant"===e.role)&&"string"==typeof e.content&&e.content.trim()).map((e,t)=>({id:"string"==typeof e.id?e.id:`flow-generator-${t}`,role:e.role,content:e.content,timestamp:"number"==typeof e.timestamp?e.timestamp:Date.now()+t,processNodeId:e.processNodeId})),[M]),Y=(0,o.useCallback)(async()=>{if(C)return C;let e=(0,L.A)(),{flow:t}=await on.O.synthesizeFlowGenerator({conversationId:e,modelId:j,allowInstall:z}),r=Date.now();return await on.O.createConversation({id:e,title:c("flows.generator.conversationTitle"),flowId:t.id,flowSnapshot:t,createdAt:r,updatedAt:r}),k(e),e},[z,C,j,c]),Q=(0,o.useCallback)(async e=>{let t=e.trim();if(!t||E||!j)return;let r=[...M,oA("user",t)];I(r),K(null),O(!0);try{if(w){let e=await Y(),t=await on.O.completeFlowGeneratorTurn({conversationId:e,messages:r}),s=Array.isArray(t?.messages)?t.messages:r;I(s);let o=function(e){let t=(e,r=0)=>{if(r>6)return null;let s=oS(e);if(!s||"object"!=typeof s)return null;if(s.flow&&Array.isArray(s.flows)&&"string"==typeof s.rootFlowId)return s;if(Array.isArray(s.content))for(let e=s.content.length-1;e>=0;e--){let o=t(s.content[e],r+1);if(o)return o}for(let e of["text","data","result"])if(e in s){let o=t(s[e],r+1);if(o)return o}return null};for(let r=e.length-1;r>=0;r--){let s=t(e[r]?.content);if(s)return s}return null}(s);if(!o)return void K(c("flows.generator.experimentalNoDraft"));let l={flow:o.flow,flows:o.flows,rootFlowId:o.rootFlowId,errorCount:o.validation?.errorCount??0,warningCount:o.validation?.warningCount??0,attempts:s.filter(e=>"user"===e.role).length,installedServers:function(e){let t=new Map,r=(e,s=0)=>{if(s>6)return;let o=oS(e);if(o&&"object"==typeof o)for(let e of(!0===o.installed&&"string"==typeof o.serverName&&Array.isArray(o.tools)&&t.set(o.serverName,{name:o.serverName,tools:o.tools.map(e=>"string"==typeof e?e:e&&"object"==typeof e?String(e.name??""):"").filter(Boolean),alreadyExisted:!0===o.alreadyExisted,..."string"==typeof o.plan?.command?{command:o.plan.command}:{},...Array.isArray(o.plan?.args)?{args:o.plan.args.map(String)}:{},..."string"==typeof o.plan?.verificationStatus?{verificationStatus:o.plan.verificationStatus}:{}}),Object.values(o)))r(e,s+1)};for(let t of e)r(t.content);return[...t.values()]}(s)};N(l),oj.info("Experimental Generation Flow returned a draft",{flowId:l.rootFlowId,flowCount:l.flows.length,errors:l.errorCount,warnings:l.warningCount});return}if(!$){let e=new AbortController;X.current=e,_({type:"session-started",sessionId:"starting",maxDepth:P,message:c("flows.generator.visualStarting")});let s=await oi({description:t,modelId:j,maxDepth:P,allowInstall:z},async e=>{_(e),("agent-created"===e.type||"step-added"===e.type||"suggestion-decision"===e.type)&&await new Promise(e=>window.setTimeout(e,140))},e.signal),o={flow:s.flow,flows:s.flows,rootFlowId:s.rootFlowId,errorCount:s.validation.errorCount,warningCount:s.validation.warningCount,attempts:s.attempts,installedServers:s.installedServers};oj.info("Draft flow generated",{flowId:o.rootFlowId,flowCount:o.flows.length,attempts:o.attempts,errors:o.errorCount,warnings:o.warningCount,installedServers:o.installedServers.length}),N(o),I([...r,oA("assistant",oC(o,!1,c,f))]);return}let e=$.flows.filter(e=>e.id!==$.rootFlowId),s=await D.g.improveFlow($.flow,t,j,{allowInstall:z,relatedFlows:e});if(!s.success)return void K(s.error);let o={flow:s.flow,flows:s.flows.map(e=>e.flow),rootFlowId:s.rootFlowId,errorCount:s.validation.errorCount,warningCount:s.validation.warningCount,attempts:$.attempts+s.attempts,installedServers:[...$.installedServers,...s.installedServers]};oj.info("Draft flow improved",{flowId:o.rootFlowId,flowCount:o.flows.length,attempts:o.attempts,errors:o.errorCount,warnings:o.warningCount,installedServers:o.installedServers.length}),N(o),I([...r,oA("assistant",oC(o,!0,c,f))])}catch(e){e?.name==="AbortError"?K(c("flows.generator.cancelled")):K(e instanceof Error?e.message:String(e))}finally{X.current=null,O(!1)}},[z,$,w,E,P,j,Y,c,f,M]),Z=(0,o.useCallback)(()=>{$&&r($)},[$,r]),ee=(0,o.useCallback)(async()=>{if(!E&&!B){U(!0),K(null);try{await on.O.restoreFlowGenerator(),k(null),I([]),N(null),_({type:"reset"})}catch(e){K(e instanceof Error?e.message:String(e))}finally{U(!1)}}},[B,E]),et=(0,o.useCallback)(()=>{E||B||(k(null),I([]),N(null),H(!1),W(8),_({type:"reset"}),K(null),t())},[B,E,t]),er=(0,o.useCallback)(()=>{X.current?.abort()},[]);return(0,s.jsxs)(m.A,{open:e,onClose:et,maxWidth:!w&&G.started?"xl":"md",fullWidth:!0,slotProps:{paper:{sx:{overflow:"hidden",transition:"max-width 240ms ease, width 240ms ease"}}},children:[(0,s.jsxs)(g.A,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,s.jsx)(S,{color:"primary"}),(0,s.jsxs)(a.default,{sx:{flex:1},children:[c("flows.generator.title"),w&&(0,s.jsx)(T.A,{label:c("flows.generator.experimentalChip"),size:"small",color:"warning",variant:"outlined",sx:{ml:1}}),(0,s.jsx)(i.A,{variant:"body2",color:"text.secondary",children:w?c("flows.generator.experimentalDescription"):c("flows.generator.description")})]}),w&&(0,s.jsx)(p.A,{title:c("flows.generator.restore"),children:(0,s.jsx)("span",{children:(0,s.jsx)(u.A,{"aria-label":c("flows.generator.restore"),onClick:()=>{ee()},disabled:E||B,children:(0,s.jsx)(t9.A,{})})})}),(0,s.jsxs)(a.default,{display:"flex",alignItems:"center",gap:.5,flexShrink:0,children:[(0,s.jsx)(tL.A,{}),(0,s.jsx)(tD.A,{variant:"icon"})]})]}),(0,s.jsxs)(x.A,{dividers:!0,sx:{p:0,overflowX:"hidden"},children:[(0,s.jsxs)(a.default,{sx:{p:2,borderBottom:1,borderColor:"divider"},children:[q&&(0,s.jsx)(h.A,{severity:"error",sx:{mb:1.5},onClose:()=>K(null),children:q}),w&&(0,s.jsx)(h.A,{severity:"warning",sx:{mb:1.5},children:c("flows.generator.experimentalWarning")}),(0,s.jsxs)(a.default,{component:"details",sx:{mt:q||w?1.5:0,border:1,borderColor:"divider",borderRadius:2.5,"&[open]":{p:1.5},"&[open] > summary":{mb:1.5}},children:[(0,s.jsx)(a.default,{component:"summary",sx:{px:1.5,py:1.1,cursor:"pointer",color:"text.secondary",fontSize:"0.86rem",fontWeight:700},children:c("flows.generator.advanced")}),(0,s.jsxs)(tk.A,{size:"small",fullWidth:!0,disabled:E||w&&!!C,children:[(0,s.jsx)(tM.A,{id:"flow-generator-model-label",children:c("flows.generator.model")}),(0,s.jsx)(tI.A,{labelId:"flow-generator-model-label",label:c("flows.generator.model"),value:j,onChange:e=>A(e.target.value),children:v.map(e=>(0,s.jsx)(R.A,{value:e.id,children:e.displayName?.trim()||e.name},e.id))})]}),(0,s.jsx)(F.A,{sx:{mt:1},control:(0,s.jsx)(tR.A,{checked:z,onChange:e=>H(e.target.checked),disabled:E||w&&!!C}),label:c("flows.generator.allowTools")}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",display:"block",children:c("flows.generator.allowToolsHelp")}),!w&&(0,s.jsxs)(a.default,{sx:{mt:2,px:.5},children:[(0,s.jsxs)(te.A,{direction:"row",justifyContent:"space-between",alignItems:"center",children:[(0,s.jsx)(i.A,{variant:"body2",fontWeight:750,children:c("flows.generator.maxDepth")}),(0,s.jsx)(T.A,{size:"small",color:"primary",variant:"outlined",label:c("flows.generator.levelCount",{count:P})})]}),(0,s.jsx)(os.Ay,{"aria-label":c("flows.generator.maxDepth"),value:P,min:1,max:8,step:1,marks:!0,valueLabelDisplay:"auto",disabled:E,onChange:(e,t)=>W(Array.isArray(t)?t[0]:t),sx:{mt:.5}}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:c("flows.generator.maxDepthHelp")})]}),z&&(0,s.jsx)(h.A,{severity:"warning",sx:{mt:1},children:c("flows.generator.installWarning")})]})]}),!w&&G.started?(0,s.jsx)(oy,{state:G,working:E,onSelectAgent:e=>_({type:"focus",agentId:e})}):(0,s.jsx)(a.default,{sx:{minHeight:360,maxHeight:"55vh",overflowY:"auto",p:2},children:0===J.length?(0,s.jsxs)(a.default,{sx:{py:8,textAlign:"center",color:"text.secondary"},children:[(0,s.jsx)(i.A,{variant:"h6",children:c("flows.generator.question")}),(0,s.jsx)(i.A,{variant:"body2",children:c("flows.generator.example")})]}):(0,s.jsx)(ol.Ay,{messages:J,conversationId:"new-flow-generator",onToggleDisabled:()=>void 0,onSplitConversation:()=>void 0})}),$&&(0,s.jsx)(h.A,{severity:$.errorCount?"warning":"success",sx:{mx:2,mb:1},children:$.errorCount?f("flows.generator.draftAttention",$.errorCount):c("flows.generator.draftReady")}),(0,s.jsxs)(a.default,{sx:{p:1.5,borderTop:1,borderColor:"divider"},children:[(0,s.jsx)(oo.A,{onSendMessage:e=>{Q(e)},disabled:E||!j,placeholder:c("flows.generator.placeholder")}),E&&(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:$?c("flows.generator.applying"):w?c("flows.generator.runningExperimental"):c("flows.generator.building")})]})]}),(0,s.jsxs)(b.A,{children:[E&&!w&&(0,s.jsx)(d.A,{color:"warning",onClick:er,children:c("flows.generator.cancel")}),(0,s.jsx)(d.A,{onClick:et,disabled:E||B,children:c("flows.generator.close")}),(0,s.jsx)(d.A,{variant:"contained",onClick:Z,disabled:!$||E,startIcon:(0,s.jsx)(S,{}),children:c("flows.generator.continue")})]})]})};var oM=r(80919),oI=r(76901),o$=r(51893);let oT=(0,W.h)("frontend/hooks/useHistoryGuard");var oN=r(60317),oF=r(62510),oz=r(26576),oH=r(35558);let oR=(0,y.A)((0,s.jsx)("path",{d:"M10 18h4v-2h-4zM3 6v2h18V6zm3 7h12v-2H6z"}),"FilterList"),oP=(0,y.A)((0,s.jsx)("path",{d:"M3 14h4v-4H3zm0 5h4v-4H3zM3 9h4V5H3zm5 5h13v-4H8zm0 5h13v-4H8zM8 5v4h13V5z"}),"ViewList"),oW=(0,y.A)((0,s.jsx)("path",{d:"M14.67 5v6.5H9.33V5zm1 6.5H21V5h-5.33zm-1 7.5v-6.5H9.33V19zm1-6.5V19H21v-6.5zm-7.34 0H3V19h5.33zm0-1V5H3v6.5z"}),"ViewModule");var oE=r(82513),oL=r(77839),oD=r(2168),oO=r(36637),oV=r(76152),oB=r(56745),oU=r(6791);let oq=({open:e,flows:t,models:r,modelsLoading:l=!1,onClose:n,onApply:c})=>{let{t:u,tp:p,formatNumber:f}=(0,ev.s9)(),[w,y]=(0,o.useState)({}),[j,A]=(0,o.useState)(!1),[S,C]=(0,o.useState)(null),k=(0,o.useMemo)(()=>(function(e,t){let r=new Map(t.map(e=>[e.id,e])),s=new Map;for(let t of e){let e=t.id??t.name??String(s.size);for(let r of t.nodes??[]){let t=r.data?.properties,o=t?.boundModel;if("string"!=typeof o||0===o.length)continue;let l=s.get(o)??{flowIds:new Set,nodeCount:0};l.flowIds.add(e),l.nodeCount+=1,l.cachedName||"string"!=typeof t?.modelName||(l.cachedName=t.modelName),s.set(o,l)}}return Array.from(s,([e,t])=>{let s=r.get(e);return{modelId:e,label:s?.displayName||s?.name||t.cachedName||e,flowCount:t.flowIds.size,nodeCount:t.nodeCount,missing:!s}}).sort((e,t)=>e.label.localeCompare(t.label))})(t,r),[t,r]),M=(0,o.useMemo)(()=>new Map(r.map(e=>[e.id,e])),[r]);(0,o.useEffect)(()=>{e&&(y({}),A(!1),C(null))},[e]);let I=(0,o.useMemo)(()=>{let e={};for(let[t,r]of Object.entries(w)){if(!r||r===t)continue;let s=M.get(r);s&&(e[t]={id:s.id,name:s.name})}return e},[M,w]),$=Object.keys(I).length,F=async()=>{if(0!==$){A(!0),C(null);try{let e=await c(I);if(0===e.updatedFlowCount&&e.failedFlowCount>0)return void C(u("flows.quickModels.applyFailed"));n()}catch(e){C(e instanceof Error?e.message:u("flows.quickModels.applyFailed"))}finally{A(!1)}}};return(0,s.jsxs)(m.A,{open:e,onClose:j?void 0:n,fullWidth:!0,maxWidth:"md",children:[(0,s.jsx)(g.A,{children:u("flows.quickModels.title")}),(0,s.jsxs)(x.A,{dividers:!0,children:[(0,s.jsx)(i.A,{color:"text.secondary",sx:{mb:2},children:u("flows.quickModels.description",{count:f(t.length)})}),S&&(0,s.jsx)(h.A,{severity:"error",sx:{mb:2},children:S}),l?(0,s.jsxs)(te.A,{alignItems:"center",spacing:1.5,sx:{py:6},children:[(0,s.jsx)(N.default,{size:28}),(0,s.jsx)(i.A,{color:"text.secondary",children:u("flows.quickModels.loading")})]}):0===r.length?(0,s.jsx)(h.A,{severity:"warning",children:u("flows.quickModels.noModels")}):0===k.length?(0,s.jsx)(h.A,{severity:"info",children:u("flows.quickModels.noBindings")}):(0,s.jsxs)(te.A,{spacing:1.5,children:[(0,s.jsxs)(te.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,s.jsx)(i.A,{variant:"overline",color:"text.secondary",fontWeight:700,sx:{flex:1},children:u("flows.quickModels.currentModels")}),(0,s.jsx)(i.A,{variant:"overline",color:"text.secondary",fontWeight:700,sx:{flex:1},children:u("flows.quickModels.replacements")})]}),k.map((e,t)=>(0,s.jsxs)(o.Fragment,{children:[t>0&&(0,s.jsx)(P.A,{}),(0,s.jsxs)(a.default,{sx:{display:"grid",gridTemplateColumns:{xs:"minmax(0, 1fr)",sm:"minmax(0, 1fr) 44px minmax(0, 1fr)"},gap:1.5,alignItems:"center"},children:[(0,s.jsxs)(te.A,{direction:"row",spacing:1.25,alignItems:"center",sx:{minWidth:0},children:[(0,s.jsx)(a.default,{sx:{width:40,height:40,borderRadius:2,display:"grid",placeItems:"center",bgcolor:"action.hover",color:e.missing?"warning.main":"primary.main",flex:"0 0 auto"},children:(0,s.jsx)(oU.A,{})}),(0,s.jsxs)(a.default,{sx:{minWidth:0},children:[(0,s.jsxs)(te.A,{direction:"row",spacing:.75,alignItems:"center",children:[(0,s.jsx)(i.A,{fontWeight:700,noWrap:!0,children:e.label}),e.missing&&(0,s.jsx)(T.A,{size:"small",color:"warning",label:u("flows.quickModels.missing")})]}),(0,s.jsx)(i.A,{variant:"caption",color:"text.secondary",children:u("flows.quickModels.usage",{steps:p("flows.quickModels.stepCount",e.nodeCount),agents:p("flows.quickModels.agentCount",e.flowCount)})})]})]}),(0,s.jsx)(oB.A,{color:"action",sx:{justifySelf:"center",transform:{xs:"rotate(90deg)",sm:"none"}}}),(0,s.jsxs)(v.A,{select:!0,fullWidth:!0,size:"small",label:u("flows.quickModels.chooseReplacement"),value:w[e.modelId]??"",onChange:t=>{let r=t.target.value;y(t=>({...t,[e.modelId]:r}))},children:[(0,s.jsx)(R.A,{value:"",children:(0,s.jsx)("em",{children:u("flows.quickModels.leaveUnchanged")})}),r.filter(t=>t.id!==e.modelId).map(e=>(0,s.jsx)(R.A,{value:e.id,children:e.displayName||e.name},e.id))]})]})]},e.modelId)),(0,s.jsx)(h.A,{severity:$>0?"info":"warning",children:$>0?p("flows.quickModels.ready",$):u("flows.quickModels.chooseAtLeastOne")})]})]}),(0,s.jsxs)(b.A,{children:[(0,s.jsx)(d.A,{onClick:n,disabled:j,children:u("common.cancel")}),(0,s.jsx)(d.A,{variant:"contained",onClick:()=>void F(),disabled:j||l||0===$,startIcon:j?(0,s.jsx)(N.default,{size:16,color:"inherit"}):(0,s.jsx)(oU.A,{}),children:j?u("flows.quickModels.applying"):u("flows.quickModels.apply")})]})]})};var oK=r(17842),oG=r(29598),o_=r(72968),oX=r(43409),oJ=r(4061),oY=r(75769),oQ=r(14837);let oZ=(0,W.h)("components/Flow/FlowDashboard/FlowDashboard");function o0(e,t){return e+Math.round(255*t).toString(16).padStart(2,"0")}let o1=({flows:e,selectedFlow:t,onSelectFlow:r,onDeleteFlow:l,onCopyFlow:c,onEditFlow:p,onOpenInChat:f,onCreateFlow:h,onSetFolder:m,onToggleFavorite:g,onReplaceModels:x,isLoading:w=!1})=>{let{t:b,tp:y,formatNumber:j}=(0,ev.s9)(),[S,C]=(0,o.useState)(""),k=(0,oX.j)(),[M,T]=(0,sG.Io)("flujo-ui:flows:sort","name-asc"),[N,F]=(0,sG.Io)("flujo-ui:flows:view","grid"),[z,W]=(0,o.useState)(null),[E,L]=(0,sG.Io)("flujo-ui:flows:group",oG.FM),[D,O]=(0,o.useState)(null),[V,B]=(0,o.useState)(!1),[U,q]=(0,o.useState)(new Set),[K,G]=(0,o.useState)(!1),[_,X]=(0,sG.Io)("flujo-ui:flows:collapsed",[]),J=(0,o.useMemo)(()=>new Set(_),[_]),[Y,Q]=(0,o.useState)({}),[Z,ee]=(0,o.useState)(!0);(0,o.useEffect)(()=>{let e=!1;return(async()=>{let t={};try{let e=await fetch("/api/model");if(e.ok){let r=await e.json();Array.isArray(r)&&(t.models=r)}}catch(e){oZ.warn("Could not load models for flow badges",e)}try{let e=await fetch("/api/mcp/servers");if(e.ok){let r=await e.json();Array.isArray(r)&&(t.servers=r.map(e=>({name:e.name,status:e.disabled?"disabled":void 0})))}}catch(e){oZ.warn("Could not load servers for flow badges",e)}e||(Q(t),ee(!1))})(),()=>{e=!0}},[]),(0,o.useEffect)(()=>{let t=new Set(e.map(e=>e.id));q(e=>{let r=new Set(Array.from(e).filter(e=>t.has(e)));return r.size===e.size?e:r})},[e]);let et=(0,o.useMemo)(()=>{let t={};for(let r of e)try{t[r.id]=e9(r,Y)}catch(e){oZ.warn("Failed to validate flow for badge",{flowId:r.id,error:e})}return t},[e,Y]),er=(0,n.A)(),es=(0,$.A)(er.breakpoints.down("sm")),eo=(0,$.A)(er.breakpoints.down("md")),el=()=>{W(null)},en=e=>{T(e),el()},ei=e=>{L(e),O(null)},ed=e=>{q(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},ec=(0,o.useMemo)(()=>{oZ.debug("Filtering and sorting flows",{searchTerm:S,sortOption:M});let t=e;if(""!==S.trim()){let r=S.toLowerCase();t=e.filter(e=>e.name.toLowerCase().includes(r))}return(0,o_.NP)(t,M)},[e,S,M]),{ref:eu,clusterProps:ep}=(0,oY.QY)("flujo-ui:scroll:flows",{deps:[w,ec.length],groupsEnabled:"none"!==E}),ef=(0,o.useMemo)(()=>(0,oG.yF)(e,e=>e.folder),[e]),eh=(0,o.useMemo)(()=>"folder"===E?(0,oG.Je)(ec,e=>e.folder,b("flows.group.ungrouped")):"sort"===E?(0,oG.Az)(ec,e=>{let t=(0,o_.ts)(e,M),r={"recency:unknown":b("flows.group.noDate"),"recency:today":b("flows.group.today"),"recency:week":b("flows.group.week"),"recency:month":b("flows.group.month"),"recency:older":b("flows.group.older"),"nodes:0":b("flows.group.nodes0"),"nodes:1-2":b("flows.group.nodes12"),"nodes:3-5":b("flows.group.nodes35"),"nodes:6-10":b("flows.group.nodes610"),"nodes:11+":b("flows.group.nodes11"),all:b("flows.group.all")};return{...t,label:r[t.key]??t.label}}):[],[E,ec,M,b]),em="name-asc"===M?b("flows.sort.nameAsc"):"name-desc"===M?b("flows.sort.nameDesc"):"newest"===M?b("flows.sort.newest"):"oldest"===M?b("flows.sort.oldest"):"most-nodes"===M?b("flows.sort.mostSteps"):b("flows.sort.fewestSteps"),eg=e=>(0,s.jsx)(oz.Ay,{container:!0,spacing:2.5,children:e.map(e=>(0,s.jsx)(oz.Ay,{item:!0,xs:12,sm:"compact"===N?12:6,md:"compact"===N?12:3==("compact"===N||es?1:eo?2:3)?4:6,children:(0,s.jsx)(tj.A,{flow:e,selected:V?U.has(e.id):t===e.id,onSelect:V?ed:r,onDelete:l,onCopy:c,onEdit:p,onOpenInChat:f,onSetFolder:m,onToggleFavorite:g,folders:ef,validation:et[e.id],selectionMode:V})},e.id))});return(0,s.jsxs)(a.default,{sx:{height:"100%",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,s.jsx)(I.A,{elevation:1,sx:{mb:2,p:1},children:(0,s.jsxs)(a.default,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},gap:1,alignItems:{xs:"stretch",sm:"center"},justifyContent:"space-between"},children:[(0,s.jsx)(v.A,{placeholder:b("flows.dashboard.search"),variant:"outlined",size:"small",fullWidth:!0,value:S,onChange:e=>{C(e.target.value)},inputRef:k,InputProps:{startAdornment:(0,s.jsx)(ea.A,{position:"start",children:(0,s.jsx)(t6.A,{fontSize:"small"})})},sx:{maxWidth:{sm:300}}}),(0,s.jsxs)(a.default,{sx:{display:"flex",gap:1,alignItems:"center",flexWrap:"wrap"},children:[x&&(V?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(d.A,{size:"small",onClick:()=>q(new Set(ec.map(e=>e.id))),children:b("flows.quickModels.selectVisible")}),(0,s.jsx)(d.A,{size:"small",onClick:()=>q(new Set),disabled:0===U.size,children:b("flows.quickModels.clear")}),(0,s.jsx)(d.A,{size:"small",variant:"contained",startIcon:(0,s.jsx)(th,{}),disabled:0===U.size,onClick:()=>G(!0),children:b("flows.quickModels.changeSelected",{count:j(U.size)})}),(0,s.jsx)(u.A,{size:"small","aria-label":b("flows.quickModels.cancelSelection"),onClick:()=>{B(!1),q(new Set),G(!1)},children:(0,s.jsx)(ts.A,{fontSize:"small"})})]}):(0,s.jsx)(d.A,{size:"small",variant:"outlined",startIcon:(0,s.jsx)(th,{}),disabled:0===e.length||w,onClick:()=>B(!0),children:b("flows.quickModels.start")})),(0,s.jsxs)(a.default,{sx:{display:"flex",backgroundColor:er.palette.background.default,borderRadius:1,border:`1px solid ${er.palette.divider}`,overflow:"hidden"},children:[(0,s.jsx)(u.A,{"aria-label":b("flows.dashboard.cards"),size:"small",onClick:()=>F("grid"),color:"grid"===N?"primary":"default",sx:{borderRadius:0,backgroundColor:"grid"===N?o0(er.palette.primary.main,.1):"transparent"},children:(0,s.jsx)(oW,{fontSize:"small"})}),(0,s.jsx)(u.A,{"aria-label":b("flows.dashboard.compact"),size:"small",onClick:()=>F("compact"),color:"compact"===N?"primary":"default",sx:{borderRadius:0,backgroundColor:"compact"===N?o0(er.palette.primary.main,.1):"transparent"},children:(0,s.jsx)(oP,{fontSize:"small"})})]}),(0,s.jsx)(u.A,{size:"small",onClick:e=>O(e.currentTarget),color:"none"!==E?"primary":"default",sx:{border:`1px solid ${er.palette.divider}`,backgroundColor:er.palette.background.default},title:b("flows.dashboard.groupCards"),"aria-label":b("flows.dashboard.groupAgents"),children:(0,s.jsx)(oD.A,{fontSize:"small"})}),(0,s.jsx)(u.A,{"aria-label":b("flows.dashboard.sortAgents"),size:"small",onClick:e=>{W(e.currentTarget)},sx:{border:`1px solid ${er.palette.divider}`,backgroundColor:er.palette.background.default},children:(0,s.jsx)(oH.A,{fontSize:"small"})})]})]})}),(0,s.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",mb:2,px:1},children:[(0,s.jsxs)(i.A,{variant:"body2",color:"textSecondary",children:[y("flows.dashboard.count",e.length,{shown:j(ec.length),total:j(e.length)}),S&&b("flows.dashboard.matching",{search:S})]}),(0,s.jsx)(i.A,{variant:"body2",color:"textSecondary",children:b("flows.dashboard.showing",{sort:em})})]}),(0,s.jsx)(a.default,{ref:eu,sx:{flex:1,overflow:"auto",px:1,pb:2},children:w?(0,s.jsx)(oz.Ay,{container:!0,spacing:2.5,children:Array(6).fill(0).map((e,t)=>(0,s.jsx)(oz.Ay,{item:!0,xs:12,sm:"compact"===N?12:6,md:"compact"===N?12:4,children:(0,s.jsx)(tj.o,{})},`skeleton-${t}`))}):ec.length>0?"none"===E?eg(ec):eh.map(e=>(0,s.jsx)(oK.A,{groupKey:e.key,label:e.label,count:e.items.length,expanded:!J.has(e.key),onToggle:()=>{var t;return t=e.key,void X(e=>e.includes(t)?e.filter(e=>e!==t):[...e,t])},showFolderIcon:"folder"===E,children:eg(e.items)},e.key)):(0,s.jsxs)(a.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",p:4,backgroundColor:er.palette.background.paper,borderRadius:1,border:`1px dashed ${er.palette.divider}`,height:"100%",minHeight:200},children:[(0,s.jsx)(i.A,{variant:"h6",gutterBottom:!0,color:"textSecondary",children:S?b("flows.dashboard.noMatches"):b("flows.dashboard.empty")}),S?(0,s.jsxs)(i.A,{variant:"body2",color:"textSecondary",align:"center",children:[b("flows.dashboard.noMatchHelp"),(0,s.jsx)(a.default,{component:"span",display:"block",mt:1,children:(0,s.jsx)(oQ.A,{message:"flows.dashboard.trySearch",values:{clearAction:(0,s.jsx)(d.A,{size:"small",onClick:()=>C(""),children:b("flows.dashboard.clearSearch")})}})})]}):(0,s.jsxs)(i.A,{variant:"body2",color:"textSecondary",align:"center",children:[b("flows.dashboard.emptyHelp"),h&&(0,s.jsx)(a.default,{component:"span",display:"block",mt:2,children:(0,s.jsx)(d.A,{variant:"contained",color:"primary",startIcon:(0,s.jsx)(A.A,{}),onClick:h,children:b("flows.dashboard.createFirst")})})]})]})}),(0,s.jsxs)(H.A,{anchorEl:D,open:!!D,onClose:()=>O(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,s.jsxs)(R.A,{selected:"none"===E,onClick:()=>ei("none"),children:[(0,s.jsx)(eN.A,{children:(0,s.jsx)(oO.A,{fontSize:"small"})}),(0,s.jsx)(eF.A,{primary:b("flows.group.none")})]}),(0,s.jsxs)(R.A,{selected:"folder"===E,onClick:()=>ei("folder"),children:[(0,s.jsx)(eN.A,{children:(0,s.jsx)(oV.A,{fontSize:"small"})}),(0,s.jsx)(eF.A,{primary:b("flows.group.folder")})]}),(0,s.jsxs)(R.A,{selected:"sort"===E,onClick:()=>ei("sort"),children:[(0,s.jsx)(eN.A,{children:(0,s.jsx)(oD.A,{fontSize:"small"})}),(0,s.jsx)(eF.A,{primary:b("flows.group.sort")})]})]}),(0,s.jsxs)(H.A,{anchorEl:z,open:!!z,onClose:el,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,s.jsxs)(R.A,{onClick:()=>en("name-asc"),children:[(0,s.jsx)(eN.A,{children:(0,s.jsx)(oE.A,{fontSize:"small"})}),(0,s.jsx)(eF.A,{primary:b("flows.sort.nameAsc")})]}),(0,s.jsxs)(R.A,{onClick:()=>en("name-desc"),children:[(0,s.jsx)(eN.A,{children:(0,s.jsx)(oE.A,{fontSize:"small",sx:{transform:"scaleX(-1)"}})}),(0,s.jsx)(eF.A,{primary:b("flows.sort.nameDesc")})]}),(0,s.jsx)(P.A,{}),(0,s.jsxs)(R.A,{onClick:()=>en("newest"),children:[(0,s.jsx)(eN.A,{children:(0,s.jsx)(oL.A,{fontSize:"small"})}),(0,s.jsx)(eF.A,{primary:b("flows.sort.newest")})]}),(0,s.jsxs)(R.A,{onClick:()=>en("oldest"),children:[(0,s.jsx)(eN.A,{children:(0,s.jsx)(oL.A,{fontSize:"small",sx:{transform:"scaleX(-1)"}})}),(0,s.jsx)(eF.A,{primary:b("flows.sort.oldest")})]}),(0,s.jsx)(P.A,{}),(0,s.jsxs)(R.A,{onClick:()=>en("most-nodes"),children:[(0,s.jsx)(eN.A,{children:(0,s.jsx)(oR,{fontSize:"small"})}),(0,s.jsx)(eF.A,{primary:b("flows.sort.mostSteps")})]}),(0,s.jsxs)(R.A,{onClick:()=>en("least-nodes"),children:[(0,s.jsx)(eN.A,{children:(0,s.jsx)(oR,{fontSize:"small",sx:{transform:"scaleY(-1)"}})}),(0,s.jsx)(eF.A,{primary:b("flows.sort.fewestSteps")})]})]}),(0,s.jsx)(oJ.A,{...ep}),x&&(0,s.jsx)(oq,{open:K,flows:e.filter(e=>U.has(e.id)),models:Y.models??[],modelsLoading:Z,onClose:()=>G(!1),onApply:async e=>{let t=await x(Array.from(U),e);return(t.updatedFlowCount>0||0===t.failedFlowCount)&&(B(!1),q(new Set)),t}})]})},o2=(0,W.h)("app/flows/page"),o5=()=>{o2.debug("Rendering FlowsPage"),(0,n.A)();let e=(0,l.useRouter)(),t=(0,l.useSearchParams)(),{t:r,tp:y,formatList:M}=(0,ev.s9)(),[I,$]=(0,o.useState)([]),[T,N]=(0,o.useState)(null),[F,z]=(0,o.useState)(!0),H="edit"===t.get("mode")&&!!T,R=(0,o.useRef)(!1),P=(0,o.useRef)(null),W=(0,o.useCallback)(t=>{o2.debug("Entering flow editor",{flowId:t}),N(t),R.current=!0,e.push((0,oN.F)({kind:"flow-editor",id:t}))},[e]),[E,O]=(0,o.useState)(null),[V,B]=(0,o.useState)([]),[U,q]=(0,o.useState)(),[K,G]=(0,o.useState)(!1),_=(0,o.useRef)(!1),X=T?I.find(e=>e.id===T)??(E?.id===T?E:null):null;(0,s2.qz)({scopeId:X?`flow:${X.id}`:"flows:dashboard",pageType:X?"flow":"flows",route:"/flows",title:X?.name??r("flows.page.title"),identifiers:{flowId:X?.id??null},data:X?{flow:X}:{flows:I},capabilities:{notes:X?["The nested Flow Builder adapter replaces this saved snapshot with live unsaved state while the editor is mounted."]:["The dashboard context contains every flow currently shown on screen."]}});let[J,Y]=(0,o.useState)(!1),[Q,Z]=(0,o.useState)(null),[ee,et]=(0,o.useState)(""),[er,es]=(0,o.useState)(null),[eo,el]=(0,o.useState)({open:!1,message:"",severity:"info"});(0,o.useEffect)(()=>{o2.info("Loading flows"),(async()=>{z(!0);try{let t=await D.g.loadFlows();o2.debug("Flows loaded successfully",{count:t.length}),$(t),T&&(t.some(e=>e.id===T)||E?.id===T||(o2.warn("Previously selected flow no longer exists",{flowId:T}),N(null),e.replace("/flows"),ec(r("flows.page.previousMissing"),"warning")))}catch(e){o2.error("Error loading flows",e),ec(r("flows.page.loadFailed"),"error")}finally{z(!1)}})()},[T,E,r]);let en=(0,o.useCallback)(e=>{o2.debug("Flow selected",{flowId:e}),q(void 0),W(e)},[W]),ea=(0,o.useCallback)(t=>{o2.debug("Opening flow in chat",{flowId:t}),e.push(`/chat?flow=${encodeURIComponent(t)}`)},[e]),ei=(0,o.useCallback)(()=>{T&&e.push(`/chat?flow=${encodeURIComponent(T)}`)},[T,e]);(0,o$.R)({param:"flow",ready:!F,exists:e=>I.some(t=>t.id===e),onResolve:en}),(0,o.useEffect)(()=>{if(!(H&&T))return;let e=e=>{P.current?P.current.requestNavigation(e):e()};return(0,oI.QO)(e),()=>(0,oI.bH)(e)},[H,T]);let ed=function({active:e,currentUrl:t}){let r=(0,l.useRouter)(),s=(0,o.useRef)(!1);return(0,o.useEffect)(()=>{if(!e)return;let o=()=>{if(s.current){s.current=!1;return}(0,oI.L_)(()=>{s.current=!0,r.back()})&&(oT.debug("Cancelling popstate to let the navigation guard decide",{currentUrl:t}),window.history.pushState(window.history.state,"",t))};return window.addEventListener("popstate",o),()=>window.removeEventListener("popstate",o)},[e,t,r]),{suppressNext:(0,o.useCallback)(()=>{s.current=!0},[])}}({active:H&&!!T,currentUrl:T?(0,oN.F)({kind:"flow-editor",id:T}):"/flows"}),ec=(0,o.useCallback)((e,t="info")=>{o2.debug("Showing snackbar",{message:e,severity:t}),el({open:!0,message:e,severity:t})},[]),eu=(0,o.useCallback)(()=>{o2.debug("Returning to dashboard");let t=()=>{if(q(void 0),E&&E.id===T){let e=V.length>0;O(null),B([]),N(null),ec(e?r("flows.page.draftBundleDiscarded"):r("flows.page.draftDiscarded"),"info")}ed.suppressNext(),R.current?(R.current=!1,e.back()):e.replace("/flows")};P.current?P.current.requestNavigation(t):t()},[E,V,T,ec,r,ed,e]),ep=(0,o.useCallback)(()=>{el(e=>({...e,open:!1}))},[]);(0,o.useEffect)(()=>{if(!eo.open||"error"===eo.severity)return;let e=setTimeout(()=>{el(e=>({...e,open:!1}))},6e3);return()=>clearTimeout(e)},[eo.open,eo.message,eo.severity]);let ef=(0,o.useCallback)(e=>(o2.debug("Validating flow name",{name:e}),e.trim())?/^[\p{L}\p{N}_ -]+$/u.test(e.trim())?I.some(t=>t.name.trim().toLowerCase()===e.trim().toLowerCase())?(o2.debug("Flow name validation failed: duplicate name"),r("flows.page.nameDuplicate")):(o2.debug("Flow name validation passed"),null):(o2.debug("Flow name validation failed: invalid characters"),r("flows.page.nameCharacters")):(o2.debug("Flow name validation failed: empty name"),r("flows.page.nameEmpty")),[I,r]),eh=async e=>{o2.info("Saving flow",{flowId:e.id,flowName:e.name});try{if(E?.id===e.id&&V.length>0){for(let e of(o2.info("Persisting generated subflow descendants before the root",{count:V.length}),V)){let t=I.some(t=>t.id===e.id)?await D.g.updateFlow(e):await D.g.addFlow(e);if(!t.success)return o2.error("Failed to save a generated subflow",{error:t.error,childId:e.id}),ec(t.error||r("flows.page.saveSubflowFailed"),"error"),!1}$(e=>{let t=new Set(e.map(e=>e.id)),r=V.filter(e=>!t.has(e.id));return r.length?[...e,...r]:e}),B([])}let t=I.some(t=>t.id===e.id)?await D.g.updateFlow(e):await D.g.addFlow(e);if(!t.success)return o2.error("Failed to save flow",{error:t.error}),ec(t.error||r("flows.page.saveFailed"),"error"),!1;return o2.debug("Flow saved successfully"),$(t=>{let r=t.findIndex(t=>t.id===e.id);if(!(r>=0))return o2.debug("Adding new flow to state"),[...t,e];{o2.debug("Updating existing flow in state");let s=[...t];return s[r]=e,s}}),E?.id===e.id&&O(null),N(e.id),ec(r("flows.page.saved"),"success"),!0}catch(e){return o2.error("Error saving flow",e),ec(r("flows.page.saveFailed"),"error"),!1}},em=(0,o.useCallback)((e,t)=>{$(r=>[...r.filter(r=>r.id!==e.id&&r.id!==t.id),e,t]),N(e.id),ec(r("flows.page.subflowCreated",{name:t.name}),"success")},[ec,r]),eg=async t=>{o2.info("Deleting flow",{flowId:t});try{await D.g.deleteFlow(t),o2.debug("Flow deleted successfully"),$(e=>e.filter(e=>e.id!==t)),T===t&&(o2.debug("Clearing selected flow as it was deleted"),N(null),e.replace("/flows")),ec(r("flows.page.deleted"),"success")}catch(e){o2.error("Error deleting flow",e),ec(r("flows.page.deleteFailed"),"error")}},ex=(0,o.useCallback)(async(e,t)=>{o2.info("Setting flow folder",{flowId:e,folder:t});let s=I.find(t=>t.id===e);if(!s)return void o2.warn("Flow to move not found",{flowId:e});let o={...s,folder:t&&t.trim()?t.trim():void 0};try{let t=await D.g.updateFlow(o);if(!t.success)return void ec(t.error||r("flows.page.moveFailed"),"error");$(t=>t.map(t=>t.id===e?o:t)),ec(o.folder?r("flows.page.moved",{folder:o.folder}):r("flows.page.removedFolder"),"success")}catch(e){o2.error("Error setting flow folder",e),ec(r("flows.page.moveFailed"),"error")}},[I,ec,r]),ew=(0,o.useCallback)(async e=>{o2.info("Toggling flow favorite",{flowId:e});let t=I.find(t=>t.id===e);if(!t)return void o2.warn("Flow to favorite not found",{flowId:e});let s=!t.favorite,o={...t,favorite:s||void 0};try{let t=await D.g.updateFlow(o);if(!t.success)return void ec(t.error||r("flows.page.favoriteFailed"),"error");$(t=>t.map(t=>t.id===e?o:t)),ec(s?r("flows.page.favoriteAdded"):r("flows.page.favoriteRemoved"),"success")}catch(e){o2.error("Error toggling flow favorite",e),ec(r("flows.page.favoriteFailed"),"error")}},[I,ec,r]),eb=(0,o.useCallback)(async(e,t)=>{let s=new Set(e),o=I.filter(e=>s.has(e.id)).map(e=>{let r,s;return r=0,s=(e.nodes??[]).map(e=>{let s=e.data?.properties,o=s?.boundModel;if("string"!=typeof o)return e;let l=t[o];return l&&(l.id!==o||s?.modelName!==l.name)?(r+=1,{...e,data:{...e.data,properties:{...s,boundModel:l.id,modelName:l.name}}}):e}),0===r?{flow:e,replacedNodeCount:r}:{flow:{...e,nodes:s},replacedNodeCount:r}}).filter(e=>e.replacedNodeCount>0);if(0===o.length)return{updatedFlowCount:0,replacedNodeCount:0,failedFlowCount:0};let l=await Promise.all(o.map(async e=>({update:e,result:await D.g.updateFlow(e.flow)}))),n=l.filter(({result:e})=>e.success),a=l.filter(({result:e})=>!e.success),i=new Map(n.map(({update:e})=>[e.flow.id,e.flow])),d=n.reduce((e,{update:t})=>e+t.replacedNodeCount,0);return i.size>0&&$(e=>e.map(e=>i.get(e.id)??e)),0===a.length?ec(r("flows.page.modelsChanged",{agents:y("flows.quickModels.agentCount",n.length),steps:y("flows.quickModels.stepCount",d)}),"success"):n.length>0?ec(r("flows.page.modelsChangedPartial",{updated:y("flows.quickModels.agentCount",n.length),failed:y("flows.quickModels.agentCount",a.length)}),"warning"):ec(r("flows.page.modelsChangeFailed"),"error"),{updatedFlowCount:n.length,replacedNodeCount:d,failedFlowCount:a.length}},[I,ec,r,y]),ey=e=>{o2.info("Copying flow",{flowId:e});let t=I.find(t=>t.id===e);t?(o2.debug("Found flow to copy",{flowName:t.name}),Z(t),et(r("flows.page.copyName",{name:t.name})),Y(!0)):(o2.warn("Flow to copy not found",{flowId:e}),ec(r("flows.page.notFound"),"error"))},ej=()=>{o2.debug("Closing copy flow dialog"),Y(!1),Z(null),et(""),es(null)},eA=async()=>{if(o2.info("Confirming flow copy"),!Q){o2.warn("No flow to copy"),ec(r("flows.page.noCopySelection"),"error");return}let e=ef(ee);if(e){o2.debug("Flow name validation failed",{error:e}),es(e);return}let t=(0,L.A)();o2.debug("Creating new flow from copy",{newId:t,newName:ee});let s={id:t,name:ee,description:Q.description,nodes:Q.nodes,edges:Q.edges,folder:Q.folder,favorite:Q.favorite};await eh(s)&&(ej(),o2.debug("Selecting newly copied flow"),q(void 0),W(s.id),ec(r("flows.page.copyCreated",{name:ee}),"success"))},eS=(0,o.useCallback)(e=>{o2.info("Opening generated draft flow",{flowId:e.flow.id,attempts:e.attempts,errors:e.errorCount,warnings:e.warningCount}),G(!1);let t=(e.flows??[]).filter(t=>t.id!==e.rootFlowId);O(e.flow),B(t),q("guided"),W(e.flow.id);let s=e.installedServers?.filter(e=>!e.alreadyExisted)??[],o=s.length>0?r("flows.page.connectedServers",{servers:M(s.map(e=>e.name))}):"",l=[t.length>0?y("flows.page.helper",t.length):"",o].filter(Boolean).join(" ");e.errorCount>0?ec(`${y("flows.page.draftAttention",e.errorCount)}${l?` ${l}`:""}`,"warning"):e.warningCount>0?ec(`${r("flows.page.draftSuggestions")}${l?` ${l}`:""}`,"info"):ec(`${r("flows.page.draftReady")}${l?` ${l}`:""}`,"success")},[ec,r,y,M,W]),eC=(0,o.useCallback)((e="guided")=>{o2.info("Creating new flow");let t=r("flows.page.untitled"),s=t,o=2;for(;I.some(e=>e.name===s);)s=`${t} ${o}`,o++;let l=D.g.createNewFlow(s);(0,sG.WL)("flujo-ui:flow-builder:mode",e),q(e),O(l),B([]),W(l.id),ec("advanced"===e?r("flows.page.newExpert"):r("flows.page.newGuided"),"info")},[I,ec,r,W]);return(0,o.useEffect)(()=>{if(!_.current&&!F){if("assistant"!==new URLSearchParams(window.location.search).get("create")){_.current=!0;return}_.current=!0,eC("guided")}},[eC,F]),(0,s.jsxs)(a.default,{sx:{height:{xs:"auto",md:"calc(100dvh - var(--app-bar-height))"},minHeight:"calc(100dvh - var(--app-bar-height))",display:"flex",flexDirection:"column",overflow:{xs:"visible",md:"hidden"}},children:[(0,s.jsx)(oM.default,{eyebrow:H?r("flows.page.eyebrowMine"):r("flows.page.eyebrowCreate"),icon:C.A,compact:H,title:H&&T?E?.id===T?r("flows.page.draftSuffix",{name:E.name}):I.find(e=>e.id===T)?.name||r("flows.page.agent"):r("flows.page.title"),description:H?r("flows.page.editDescription"):r("flows.page.description"),leading:H&&T?(0,s.jsx)(u.A,{color:"primary",onClick:eu,"aria-label":r("flows.page.back"),sx:{border:1,borderColor:"divider"},children:(0,s.jsx)(j,{})}):void 0,actions:H?T&&E?.id!==T?(0,s.jsx)(oF.A,{target:{kind:"flow-editor",id:T}}):void 0:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(p.A,{title:r("flows.page.aiHelp"),describeChild:!0,children:(0,s.jsx)(d.A,{variant:"contained",color:"primary",startIcon:(0,s.jsx)(S,{}),onClick:()=>G(!0),"data-tour":"generate-flow",children:r("flows.page.createAi")})}),(0,s.jsx)(p.A,{title:r("flows.page.simpleHelp"),describeChild:!0,children:(0,s.jsx)(d.A,{variant:"outlined",color:"primary",startIcon:(0,s.jsx)(A.A,{}),onClick:()=>eC("guided"),"data-tour":"new-flow",children:r("flows.page.startSimple")})}),(0,s.jsx)(p.A,{title:r("flows.page.expertHelp"),describeChild:!0,children:(0,s.jsx)(d.A,{variant:"outlined",color:"primary",startIcon:(0,s.jsx)(k.A,{}),onClick:()=>eC("advanced"),"data-tour":"new-expert-flow",children:r("flows.page.startExpert")})})]})}),(0,s.jsx)(f.A,{in:eo.open,unmountOnExit:!0,children:(0,s.jsx)(h.A,{severity:eo.severity,onClose:ep,sx:{borderRadius:0},children:eo.message})}),(0,s.jsx)(a.default,{sx:{flex:1,minHeight:0,overflow:{xs:"visible",md:"hidden"}},children:(()=>{if(H&&T){let e=I.find(e=>e.id===T)??(E?.id===T?E:void 0);return e?(0,s.jsx)(c.A,{in:!0,timeout:300,children:(0,s.jsx)(a.default,{sx:{height:{xs:"auto",md:"100%"}},children:(0,s.jsx)(or,{ref:P,initialFlow:e,initialAuthoringMode:U,onSave:eh,onDelete:eg,onConversionCommitted:em,allFlows:[...I.filter(e=>!V.some(t=>t.id===e.id)),...V],relatedDraftFlows:V,onRelatedDraftFlowsChange:B,isDraft:E?.id===e.id,onTry:ei,onNavigateToFlow:en},T)})}):(0,s.jsxs)(a.default,{sx:{p:4,textAlign:"center"},children:[(0,s.jsx)(i.A,{variant:"h6",color:"error",children:r("flows.page.notFound")}),(0,s.jsx)(d.A,{variant:"contained",onClick:eu,sx:{mt:2},children:r("flows.page.back")})]})}return(0,s.jsx)(c.A,{in:!0,timeout:300,children:(0,s.jsx)(a.default,{sx:{height:{xs:"auto",md:"100%"}},children:(0,s.jsx)(o1,{flows:I,selectedFlow:T,onSelectFlow:en,onDeleteFlow:eg,onCopyFlow:ey,onCreateFlow:()=>eC("guided"),onSetFolder:ex,onToggleFavorite:ew,onReplaceModels:eb,onOpenInChat:ea,isLoading:F})})})})()}),(0,s.jsxs)(m.A,{open:J,onClose:ej,children:[(0,s.jsx)(g.A,{children:r("flows.page.copyTitle")}),(0,s.jsxs)(x.A,{children:[(0,s.jsx)(w.A,{children:r("flows.page.copyPrompt")}),(0,s.jsx)(v.A,{autoFocus:!0,margin:"dense",label:r("flows.page.nameLabel"),type:"text",fullWidth:!0,value:ee,onChange:e=>{let t=e.target.value;o2.debug("Flow name changed",{name:t}),et(t),es(ef(t))},error:!!er,helperText:er})]}),(0,s.jsxs)(b.A,{children:[(0,s.jsx)(d.A,{onClick:ej,children:r("common.cancel")}),(0,s.jsx)(d.A,{onClick:eA,variant:"contained",color:"primary",disabled:!!er,children:r("flows.page.copyAction")})]})]}),(0,s.jsx)(ok,{open:K,onClose:()=>G(!1),onGenerated:eS})]})},o4=()=>(0,s.jsx)(o.Suspense,{fallback:null,children:(0,s.jsx)(o5,{})})},95065:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2m3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1z"}),"Lock")},95156:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(40570),o=r(95155);let l=(0,s.A)((0,o.jsx)("path",{d:"m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z"}),"ArrowUpward")}},e=>{e.O(0,[6373,3862,7926,7564,2457,6714,8111,1627,2782,9852,1418,6686,1216,238,3420,8961,6268,6567,9086,2667,8002,191,7129,1190,2454,1566,373,9304,3664,3464,7641,3101,4477,2375,5212,9749,2352,1114,1978,1927,5147,7401,1980,9610,7540,8441,3794,7358],()=>e(e.s=87695)),_N_E=e.O()}]);
|