flujo-ai 3.40.0 → 3.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +400 -384
- package/.next/app-path-routes-manifest.json +53 -53
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +33 -33
- package/.next/react-loadable-manifest.json +9 -9
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +3 -3
- package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/convert-process-to-subflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/assist/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/generator/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/flujo/authoring/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/flujo/automation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/flujo/flows/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/flujo/resources/read/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/flujo/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/flujo/servers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/flujo/state/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/flujo/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/feedback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/packages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/setup/ai-cli/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/statistics/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/telemetry/daily-active/route.js +1 -1
- package/.next/server/app/api/telemetry/daily-active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/automation/triggers/page.js +1 -1
- package/.next/server/app/automation/triggers/page.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 +4 -4
- 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 +4 -4
- package/.next/server/app/chat/page.js +2 -2
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +4 -4
- package/.next/server/app/docs/page.js +3 -3
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +4 -4
- package/.next/server/app/executions/page.js +1 -1
- package/.next/server/app/executions/page.js.nft.json +1 -1
- package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/executions.html +1 -1
- package/.next/server/app/executions.rsc +4 -4
- package/.next/server/app/flows/page.js +5 -3
- package/.next/server/app/flows/page.js.nft.json +1 -1
- package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
- package/.next/server/app/flows.html +1 -1
- package/.next/server/app/flows.rsc +4 -4
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- package/.next/server/app/mcp/page.js +73 -44
- package/.next/server/app/mcp/page.js.nft.json +1 -1
- package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-flows/route.js +1 -1
- package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp.html +1 -1
- package/.next/server/app/mcp.rsc +4 -4
- package/.next/server/app/models/page.js +7 -7
- package/.next/server/app/models/page_client-reference-manifest.js +1 -1
- package/.next/server/app/packages/page.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 +4 -4
- package/.next/server/app/page.js +2 -2
- 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 +4 -4
- package/.next/server/app/statistics/page.js +2 -2
- 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 +4 -4
- package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
- package/.next/server/app/waves.html +1 -1
- package/.next/server/app/waves.rsc +4 -4
- package/.next/server/app-paths-manifest.json +53 -53
- package/.next/server/chunks/1227.js +1 -1
- package/.next/server/chunks/1403.js +2 -2
- package/.next/server/chunks/1539.js +1 -1
- package/.next/server/chunks/2069.js +1 -1
- package/.next/server/chunks/2372.js +1 -1
- package/.next/server/chunks/2828.js +2 -2
- package/.next/server/chunks/3422.js +1 -0
- package/.next/server/chunks/3945.js +3 -3
- package/.next/server/chunks/519.js +2 -2
- package/.next/server/chunks/5444.js +2 -2
- package/.next/server/chunks/5750.js +1 -1
- package/.next/server/chunks/5918.js +10 -10
- package/.next/server/chunks/6226.js +2 -2
- package/.next/server/chunks/9088.js +2 -2
- package/.next/server/chunks/9490.js +5 -0
- package/.next/server/chunks/9543.js +3 -3
- package/.next/server/chunks/9624.js +8 -8
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{1161-19176c3e7c655121.js → 1161-563a8028f59f00de.js} +1 -1
- package/.next/static/chunks/1521-9ad145dcb8e3abfc.js +1 -0
- package/.next/static/chunks/1576.06797b29a19fa26c.js +1 -0
- package/.next/static/chunks/{4386-e9621d3c94969a68.js → 2005-f9d38c39f10c321f.js} +1 -1
- package/.next/static/chunks/2493-da85c47ef972c066.js +1 -0
- package/.next/static/chunks/361.c88d43436e974006.js +1 -0
- package/.next/static/chunks/3731-c18f48522b159d7f.js +1 -0
- package/.next/static/chunks/3781.5086bce03aa281f7.js +1 -0
- package/.next/static/chunks/3969-15a32253b112652c.js +1 -0
- package/.next/static/chunks/4167.2ce97ca450815df1.js +1 -0
- package/.next/static/chunks/4814-52b7254ab573a455.js +1 -0
- package/.next/static/chunks/4965.d401547984d71b7a.js +1 -0
- package/.next/static/chunks/5148-9174ba300221fd1b.js +1 -0
- package/.next/static/chunks/5417-fb7d3760cc288ab1.js +1 -0
- package/.next/static/chunks/5967-34735763d1b03ccc.js +1 -0
- package/.next/static/chunks/7260-743e4b0cc4211dcb.js +1 -0
- package/.next/static/chunks/7711-7323dabe7dc02311.js +1 -0
- package/.next/static/chunks/8124-f99060fe1dfc119e.js +1 -0
- package/.next/static/chunks/8135-7fe07a34a8c49967.js +1 -0
- package/.next/static/chunks/8529.6187e01de8e9a692.js +1 -0
- package/.next/static/chunks/9136-e9ee57cc581ddd50.js +1 -0
- package/.next/static/chunks/9140.9180b569c4b26168.js +1 -0
- package/.next/static/chunks/9195-6a18a5867bb76c64.js +1 -0
- package/.next/static/chunks/app/automation/triggers/{page-594a6294c58344bf.js → page-34b9a8a2e6f28c2f.js} +1 -1
- package/.next/static/chunks/app/automation/waves/{page-ce2fef4996cad8e6.js → page-fd4929ea308183b2.js} +1 -1
- package/.next/static/chunks/app/chat/page-fb8a33db7628ecd0.js +1 -0
- package/.next/static/chunks/app/docs/page-3e21583b1cd5d7ca.js +1 -0
- package/.next/static/chunks/app/executions/{page-fcc848de86714386.js → page-56ecca56c17c05d7.js} +1 -1
- package/.next/static/chunks/app/flows/page-8c1a656197b15894.js +1 -0
- package/.next/static/chunks/app/layout-6e2756704ddc9f39.js +1 -0
- package/.next/static/chunks/app/mcp/page-4c4390354fdd94c8.js +1 -0
- package/.next/static/chunks/app/models/error-ea477f0ad52f4dcb.js +1 -0
- package/.next/static/chunks/app/models/page-e237ac64a0f62c3d.js +1 -0
- package/.next/static/chunks/app/packages/page-8680e4bea6b7ea45.js +1 -0
- package/.next/static/chunks/app/page-6dca06b6b7667181.js +1 -0
- package/.next/static/chunks/app/settings/page-a5f7fedcbf9e3a7f.js +1 -0
- package/.next/static/chunks/app/statistics/page-f9f9627d1c1ff963.js +1 -0
- package/.next/static/chunks/app/waves/{page-5b53af3eb9409414.js → page-7529febc48eb473d.js} +1 -1
- package/.next/static/chunks/{webpack-9fbd3587b9ef4dca.js → webpack-f3df493faa0bd612.js} +1 -1
- package/.next/static/css/{400b1b927c3ffaf6.css → 9f9b7f1374ac2d01.css} +1 -1
- package/.next/trace +11 -11
- package/README.md +1 -1
- package/mcp-servers/bash/package.json +1 -1
- package/mcp-servers/browser/package.json +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/7508.js +0 -5
- package/.next/server/chunks/8598.js +0 -1
- package/.next/static/chunks/1521-1c98c9a56726e053.js +0 -1
- package/.next/static/chunks/1576.bc6ae6c9e6d939d8.js +0 -1
- package/.next/static/chunks/2005.300528b5119c2d38.js +0 -1
- package/.next/static/chunks/2499-92cd97ce4993999f.js +0 -1
- package/.next/static/chunks/361.51d642c530c84295.js +0 -1
- package/.next/static/chunks/3731-64070760ae44448f.js +0 -1
- package/.next/static/chunks/4814-31eb5f3b10c651c1.js +0 -1
- package/.next/static/chunks/4965.39e24b54c3c6ca58.js +0 -1
- package/.next/static/chunks/5967-59fde8c214c9ca9f.js +0 -1
- package/.next/static/chunks/6417.70056fe81ca21682.js +0 -1
- package/.next/static/chunks/7711-4b017720ec49c96d.js +0 -1
- package/.next/static/chunks/8124-94140ee1dd8ed87c.js +0 -1
- package/.next/static/chunks/8135-5b975b9014f8920b.js +0 -1
- package/.next/static/chunks/8529.b5a43e728bb5bb8a.js +0 -1
- package/.next/static/chunks/9001-4c27a608feddb878.js +0 -1
- package/.next/static/chunks/9136-9c415453ec02519c.js +0 -1
- package/.next/static/chunks/9140.6502327a2c098d33.js +0 -1
- package/.next/static/chunks/9195-3c9c4300e7505d9e.js +0 -1
- package/.next/static/chunks/9524-b9d2c7e4426edd07.js +0 -1
- package/.next/static/chunks/app/chat/page-203cb7bf21638ada.js +0 -1
- package/.next/static/chunks/app/docs/page-c466a58caf5e3336.js +0 -1
- package/.next/static/chunks/app/flows/page-172c759ca81ba02f.js +0 -1
- package/.next/static/chunks/app/layout-a6ca531683a518a7.js +0 -1
- package/.next/static/chunks/app/mcp/page-0a96e6b30e45b1e6.js +0 -1
- package/.next/static/chunks/app/models/error-1964203c5c6e7d0e.js +0 -1
- package/.next/static/chunks/app/models/page-ad1cbea6d3324966.js +0 -1
- package/.next/static/chunks/app/packages/page-dda48425be9fc137.js +0 -1
- package/.next/static/chunks/app/page-04189aa1b1318c2d.js +0 -1
- package/.next/static/chunks/app/settings/page-906c229c87011ead.js +0 -1
- package/.next/static/chunks/app/statistics/page-9b13a95549f438c0.js +0 -1
- /package/.next/static/{b1aMk0634gkkiunttd1SQ → utOrEUSzguWncIosxgCeR}/_buildManifest.js +0 -0
- /package/.next/static/{b1aMk0634gkkiunttd1SQ → utOrEUSzguWncIosxgCeR}/_ssgManifest.js +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
"use strict";exports.id=9543,exports.ids=[9543],exports.modules={4580:(a,b,c)=>{async function d(a,b){throw Error("Web Speech API is only available in browser environments")}function e(){return{supported:!1,message:"Not in browser environment"}}c.d(b,{G:()=>e,S:()=>d}),(0,c(42819).h)("frontend/services/transcription/webSpeech")},24856:(a,b,c)=>{c.d(b,{pX:()=>d});function d(a,b,c,d){let e=`${a.type}-bottom`,f=`${b.type}-top`;return{id:`${a.id}:${e}->${b.id}:${f}`,source:a.id,sourceHandle:e,target:b.id,targetHandle:f,type:"custom",data:{edgeType:"standard",...c?{bidirectional:!0}:{},...d?{condition:d}:{}},animated:!0}}},29237:(a,b,c)=>{c.d(b,{C:()=>f,L2:()=>e,P2:()=>h,w4:()=>d,wM:()=>g});let d=["contains","regex","equals","always"],e=["last-assistant","last-message"];function f(a){return"string"==typeof a&&d.includes(a)}function g(a){try{return new RegExp(a),!0}catch{return!1}}function h(a){if(!a||!f(a.kind))return"";let b=a.negate?"!":"";if("always"===a.kind)return`${b}always`;let c=a.ignoreCase?" i":"",d="string"==typeof a.value?a.value:"",e=d.length>8?`${d.slice(0,8)}…`:d,g="regex"===a.kind?`/${e}/`:`"${e}"`;return`${b}${a.kind}:${g}${c}`}},31164:(a,b,c)=>{c.d(b,{jY:()=>f,oY:()=>g,sZ:()=>h});var d=c(21124);c(38301);var e=c(97004);let f=a=>(0,d.jsx)(e.A,{...a,variant:"standard"}),g=a=>(0,d.jsx)(e.A,{...a,variant:"mcp"}),h=a=>(0,d.jsx)(e.A,{...a,variant:"resource"})},38259:(a,b,c)=>{c.d(b,{O:()=>i,b:()=>e});let d=(0,c(42819).h)("frontend/services/chat/index");class e extends Error{constructor(a,b,c){super(a),this.name="ChatApiError",this.status=b,this.body=c}}let f="/v1/chat/conversations";async function g(a){let b;if(204===a.status)return;let c=await a.text();if(c)try{b=JSON.parse(c)}catch{b=c}if(!a.ok)throw new e(b&&"object"==typeof b&&(b.error||b.message)||`Request failed with status ${a.status}`,a.status,b);return b}class h{async listConversations(){return d.debug("listConversations: Entering method"),g(await fetch(f))}async getConversation(a){return d.debug("getConversation: Entering method",{conversationId:a}),g(await fetch(`${f}/${encodeURIComponent(a)}`))}async createConversation(a){return d.debug("createConversation: Entering method",{conversationId:a.id}),g(await fetch(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}))}async updateConversationFlow(a,b){return d.debug("updateConversationFlow: Entering method",{conversationId:a,flowId:b}),g(await fetch(`${f}/${encodeURIComponent(a)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({flowId:b})}))}async updateConversationTitle(a,b){return d.debug("updateConversationTitle: Entering method",{conversationId:a}),g(await fetch(`${f}/${encodeURIComponent(a)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:b})}))}async updateConversationApproval(a,b){return d.debug("updateConversationApproval: Entering method",{conversationId:a,requireApproval:b}),g(await fetch(`${f}/${encodeURIComponent(a)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApproval:b})}))}async deleteConversation(a){d.debug("deleteConversation: Entering method",{conversationId:a});let b=await fetch(`${f}/${encodeURIComponent(a)}`,{method:"DELETE"});await g(b)}async deleteConversations(a){return d.debug("deleteConversations: Entering method",{count:a.length}),g(await fetch(f,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:a})}))}async respondToToolCall(a,b,c,e,h){return d.debug("respondToToolCall: Entering method",{conversationId:a,action:b,toolCallId:c,always:e}),g(await fetch(`${f}/${encodeURIComponent(a)}/respond`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:b,toolCallId:c,...e?{always:!0}:{},...h?{feedback:h}:{}})}))}async debugStep(a){return d.debug("debugStep: Entering method",{conversationId:a}),g(await fetch(`${f}/${encodeURIComponent(a)}/debug/step`,{method:"POST"}))}async debugContinue(a){return d.debug("debugContinue: Entering method",{conversationId:a}),g(await fetch(`${f}/${encodeURIComponent(a)}/debug/continue`,{method:"POST"}))}async setBreakpoints(a,b){d.debug("setBreakpoints: Entering method",{conversationId:a,count:b.length});let c=await fetch(`${f}/${encodeURIComponent(a)}/breakpoints`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({breakpoints:b})});await g(c)}async synthesizeQuickChat(a){return d.debug("synthesizeQuickChat: Entering method",{conversationId:a.conversationId}),g(await fetch("/api/flow/quick-chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}))}async synthesizeFlowGenerator(a){return g(await fetch("/api/flow/generator",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}))}async completeFlowGeneratorTurn(a){return g(await fetch("/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:"flow-Flow Generator Session",messages:a.messages,stream:!1,metadata:{flujo:"true",conversationId:a.conversationId}})}))}async restoreFlowGenerator(){return g(await fetch("/api/flow/generator",{method:"PUT"}))}async cancel(a){d.debug("cancel: Entering method",{conversationId:a});let b=await fetch(`${f}/${encodeURIComponent(a)}/cancel`,{method:"POST"});await g(b)}async injectMessage(a,b,c){d.debug("injectMessage: Entering method",{conversationId:a,messageId:c});try{let e=await fetch(`${f}/${encodeURIComponent(a)}/inject`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:b,id:c})});if(e.ok)return{delivered:!0};if(409===e.status)return d.debug("injectMessage: run is not live; caller should send normally",{conversationId:a}),{delivered:!1};return d.warn("injectMessage: unexpected response; falling back to a normal send",{conversationId:a,status:e.status}),{delivered:!1}}catch(b){return d.warn("injectMessage: request failed; falling back to a normal send",{conversationId:a,err:b}),{delivered:!1}}}async previewRevert(a,b){return g(await fetch(`${f}/${encodeURIComponent(a)}/revert?messageId=${encodeURIComponent(b)}`))}async revertToMessage(a,b,c){return g(await fetch(`${f}/${encodeURIComponent(a)}/revert`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messageId:b,previewId:c})}))}async undoRevert(a,b){let c=await fetch(`${f}/${encodeURIComponent(a)}/revert`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({operationId:b,action:"undo"})});await g(c)}subscribeToEvents(a,b,c){let e=new EventSource(void 0!==c?`${f}/${encodeURIComponent(a)}/events?fromSeq=${c}`:`${f}/${encodeURIComponent(a)}/events`);return e.onopen=()=>{d.debug("Execution event stream open",{conversationId:a}),b.onOpen?.()},e.onmessage=a=>{try{b.onEvent(JSON.parse(a.data))}catch(a){d.warn("Failed to parse SSE event",{err:a})}},e.onerror=a=>{d.debug("SSE stream error (browser will retry if still open)"),b.onError?.(a)},e}subscribeToSidebarEvents(a){let b=new EventSource("/v1/chat/events?scope=sidebar");return b.onopen=()=>{d.debug("Sidebar lifecycle event stream open"),a.onOpen?.()},b.onmessage=b=>{try{a.onEvent(JSON.parse(b.data))}catch(a){d.warn("Failed to parse sidebar lifecycle event",{err:a})}},b.onerror=b=>{d.debug("Sidebar lifecycle stream error (browser will retry if still open)"),a.onError?.(b)},b}}let i=new h},61220:(a,b,c)=>{c.d(b,{A:()=>T});var d=c(21124),e=c(38301),f=c(42819);async function g(a,b={}){return{text:"Speech recognition is only available in browser environments",success:!1,error:"Server-side transcription is not supported"}}c(4580),(0,f.h)("frontend/services/transcription");var h=c(49938),i=c(60839),j=c(54573),k=c(37489),l=c(81637),m=c(79515),n=c(44079),o=c(41893),p=c(43312),q=c(95587),r=c(77028),s=c(40512),t=c(83899),u=c(52327),v=c(8521),w=c(37674),x=c(19925),y=c(68730),z=c(70011),A=c(9258),B=c(73245),C=c(30137),D=c(88970),E=c(36698),F=c(12033),G=c(73821),H=c(46973),I=c(95791),J=c(63787);let K=new Set(["start","process","subflow"]),L=a=>a.type??a.data?.type,M=({flow:a,selectedNodeId:b,onSelect:c,onClose:f})=>{let g=(0,i.A)(),h=(0,e.useMemo)(()=>(a?.nodes||[]).map(a=>{let c=K.has(L(a)||""),d=a.id===b;return{...a,draggable:!1,selectable:!1,style:{...a.style||{},opacity:c?1:.35,cursor:c?"pointer":"default",borderRadius:8,boxShadow:d?`0 0 0 3px ${g.palette.primary.main}`:void 0,transition:"box-shadow 120ms ease"}}}),[a?.nodes,b,g.palette.primary.main]),j=(0,e.useMemo)(()=>(a?.edges||[]).filter(a=>a.source&&a.target&&a.sourceHandle&&a.targetHandle),[a?.edges]),k=(0,e.useMemo)(()=>({type:"custom",animated:!1,style:{stroke:g.palette.text.secondary,strokeWidth:2},markerEnd:{type:H.TG.ArrowClosed,width:20,height:20,color:g.palette.text.secondary}}),[g.palette.text.secondary]);return(0,d.jsx)(I.Gc,{nodes:h,edges:j,nodeTypes:J.c_,edgeTypes:J.nd,defaultEdgeOptions:k,connectionLineType:H.Do.SmoothStep,fitView:!0,minZoom:.1,maxZoom:2,onNodeClick:(a,b)=>{K.has(L(b)||"")&&(c(b.id),f())},nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,deleteKeyCode:null,proOptions:{hideAttribution:!0},children:(0,d.jsx)(I.VS,{})})},N=({open:a,flow:b,selectedNodeId:c,allowAutomatic:e,onSelect:f,onClose:g})=>{let h=!!(b&&(b.nodes?.length??0)>0);return(0,d.jsxs)(s.A,{open:a,onClose:g,maxWidth:"lg",fullWidth:!0,children:[(0,d.jsx)(t.A,{children:"Pick a node to run on"}),(0,d.jsxs)(u.A,{dividers:!0,sx:{p:0},children:[(0,d.jsx)(l.default,{sx:{px:2,pt:1.5},children:(0,d.jsxs)(m.A,{variant:"caption",color:"text.secondary",children:["Click a ",(0,d.jsx)("strong",{children:"Start"}),", ",(0,d.jsx)("strong",{children:"Process"}),", or"," ",(0,d.jsx)("strong",{children:"Subflow"})," node. Other nodes and edges can't be picked."]})}),(0,d.jsx)(l.default,{sx:{height:"62vh",width:"100%"},children:h?(0,d.jsx)(I.Ln,{children:(0,d.jsx)(M,{flow:b,selectedNodeId:c,onSelect:f,onClose:g})}):(0,d.jsx)(l.default,{sx:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center"},children:(0,d.jsx)(m.A,{variant:"body2",color:"text.secondary",children:"No agent to display."})})})]}),(0,d.jsxs)(x.A,{children:[e&&(0,d.jsx)(y.A,{startIcon:(0,d.jsx)(G.A,{}),onClick:()=>{f(null),g()},children:"Automatic"}),(0,d.jsx)(l.default,{sx:{flex:1}}),(0,d.jsx)(y.A,{onClick:g,children:"Cancel"})]})]})};var O=c(2117),P=c(50551),Q=c(28055),R=c(80518);let S=(0,f.h)("frontend/components/Chat/ChatInput"),T=({onSendMessage:a,disabled:b=!1,placeholder:c="Type a message...",requireApproval:f=!1,onRequireApprovalChange:G,executeInDebugger:H=!1,onExecuteInDebuggerChange:I,availableNodes:J=[],flow:K=null,currentNodeId:L=null,nodeOverrideActive:M=!1,onSelectNode:T,editing:U=null,onEditingContentChange:V,onEditingNodeChange:W,onSaveEdit:X,onCancelEdit:Y})=>{let Z=(0,i.A)(),{settings:$,globalEnvVars:_}=(0,h.rX)(),aa=(0,e.useMemo)(()=>Object.entries(_).filter(([,a])=>!a.metadata?.isSecret).map(([a])=>a).sort((a,b)=>a.localeCompare(b)),[_]),[ab,ac]=(0,e.useState)(""),[ad,ae]=(0,e.useState)([]),[af,ag]=(0,e.useState)(!1),[ah,ai]=(0,e.useState)(0),[aj,ak]=(0,e.useState)(null),al=(0,e.useRef)(null),am=(0,e.useRef)(null),an=(0,e.useRef)([]),[ao,ap]=(0,e.useState)(!1),aq=!!U,ar=aq?U?.nodeId??null:L,as=(a=>J.find(b=>b.id===a)?.label||(a?`${a.substring(0,6)}...`:"Start"))(ar),[at,au]=(0,e.useState)([]);(0,e.useEffect)(()=>{let a=!1;if(!K)return au([]),()=>{a=!0};let b=K.nodes.find(a=>(a.data?.type??a.type)==="start"),c=b?K.edges.find(a=>a.source===b.id&&a.data?.edgeType!=="mcp")?.target:void 0,d=ar??c??K.nodes.find(a=>(a.data?.type??a.type)==="process")?.id;if(!d)return au([]),()=>{a=!0};let e=new Set(K.edges.filter(a=>a.data?.edgeType==="mcp"&&(a.source===d||a.target===d)).map(a=>a.source===d?a.target:a.source)),f=K.nodes.filter(a=>(a.data?.type??a.type)==="mcp"&&e.has(a.id)).map(a=>({server:a.data.properties?.boundServer,enabledTools:new Set(a.data.properties?.enabledTools??[]),enabledResources:a.data.properties?.enabledResources})).filter(a=>!!a.server);return 0===f.length?(au([]),()=>{a=!0}):(Promise.all(f.map(async({server:a,enabledTools:b,enabledResources:c})=>{let d=[];try{for(let c of(await Q.S.listServerTools(a)).tools??[])c?.name&&b.has(c.name)&&d.push((0,R.Ub)({kind:"tool",server:a,name:c.name},c.name,c.description||a))}catch(b){S.warn(`Failed to load chat @ tool suggestions for ${a}`,b)}try{let b=await Q.S.listServerResources(a),e=a=>void 0===c||"all"===c||c.includes(a);for(let c of b.resources??[])e(c.uri)&&d.push((0,R.Ub)({kind:"resource",server:a,name:c.uri},c.name||c.uri,c.description||`${a} \xb7 ${c.uri}`));for(let c of b.resourceTemplates??[])e(c.uriTemplate)&&d.push((0,R.Ub)({kind:"resource",server:a,name:c.uriTemplate},c.name||c.uriTemplate,c.description||`${a} \xb7 ${c.uriTemplate}`))}catch(b){S.warn(`Failed to load chat @ resource suggestions for ${a}`,b)}return d})).then(b=>{a||au(b.flat())}),()=>{a=!0})},[K,ar]);let[av,aw]=(0,e.useState)(!1),[ax,ay]=(0,e.useState)(""),[az,aA]=(0,e.useState)(""),[aB,aC]=(0,e.useState)("document"),[aD,aE]=(0,e.useState)(null),[aF,aG]=(0,e.useState)(),[aH,aI]=(0,e.useState)(!1),[aJ,aK]=(0,e.useState)(0),[aL,aM]=(0,e.useState)(""),aN=()=>{U&&U.content.trim()&&X?.()},aO=()=>{(ab.trim()||ad.length>0)&&(S.debug("Sending message",{messageLength:ab.length,attachmentsCount:ad.length}),a(ab,ad),ac(""),ae([]))},aP=async a=>{let b=a.target.files;if(!b||0===b.length)return;let c=b[0];S.debug("File selected",{fileName:c.name,fileSize:c.size,fileType:c.type});try{let a=c.type||"application/octet-stream";if(a.startsWith("text/")||/\.(txt|md|json|csv|html?|xml|js|ts|jsx|tsx|css|scss)$/i.test(c.name)){aA(`Processing ${c.name}`),aC("document"),ay(""),aI(!0),aw(!0);let a=await aQ(c);S.debug("File read successfully",{contentLength:a.length}),ay(a),aI(!1)}else{let b=await aR(c),d=a.startsWith("image/")?"image":a.startsWith("audio/")?"audio":a.startsWith("video/")?"video":"document";ae(e=>[...e,{id:(0,O.A)(),type:d,content:b,originalName:c.name,mimeType:a}])}}catch(a){S.error("Error reading file:",a),ay("Error reading file. Please try again."),aI(!1)}al.current&&(al.current.value="")},aQ=a=>new Promise((b,c)=>{let d=new FileReader;d.onload=a=>{a.target?.result?b(a.target.result):c(Error("Failed to read file"))},d.onerror=()=>{c(Error("Error reading file"))},d.readAsText(a)}),aR=a=>new Promise((b,c)=>{let d=new FileReader;d.onload=()=>"string"==typeof d.result?b(d.result):c(Error("Failed to encode file")),d.onerror=()=>c(Error("Error reading file")),d.readAsDataURL(a)}),aS=async()=>{S.debug("Starting audio recording");try{let a=await navigator.mediaDevices.getUserMedia({audio:!0});S.debug("Audio stream obtained successfully"),an.current=[];let b=new MediaRecorder(a);am.current=b,b.ondataavailable=a=>{a.data.size>0&&an.current.push(a.data)},b.onstop=async()=>{let c=b.mimeType||an.current[0]?.type||"audio/webm",d=new Blob(an.current,{type:c});aA("Audio Recording"),aC("audio"),aE(await aR(d)),aG(c),ay(""),aI(!0),aw(!0);try{if(($?.speech||{enabled:!0,modelSize:"base",autoDownload:!1}).enabled){aM("Initializing transcription..."),aK(0);let a=await g(d,{onProgress:aK,onStatusChange:aM,language:navigator.language});if(a.success){let b=a.text;ay(b),S.debug("Transcription successful",{textLength:a.text.length,engine:a.engine})}else ay(`Error transcribing audio: ${a.error}.`),S.error("Transcription failed",{error:a.error})}else ay("Speech recognition is disabled in settings. Enable it to get automatic transcriptions.")}catch(a){S.error("Error handling audio recording",{error:a}),ay(`Failed to process audio: ${a}`)}finally{aI(!1),a.getTracks().forEach(a=>a.stop())}},b.start(),ag(!0);let c=setInterval(()=>{ai(a=>a+1)},1e3);ak(c)}catch(a){S.error("Error starting recording:",a),alert("Could not access microphone. Please check permissions.")}};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(j.A,{elevation:0,sx:{width:"100%",maxWidth:"none",mx:0,p:{xs:1,sm:1.25},display:"flex",flexDirection:"column",border:`1px solid ${(0,k.X4)(Z.palette.primary.main,.24)}`,borderRadius:0,bgcolor:(0,k.X4)(Z.palette.background.paper,"dark"===Z.palette.mode?.82:.92),boxShadow:`0 22px 70px ${(0,k.X4)(Z.palette.common.black,"dark"===Z.palette.mode?.34:.12)}, 0 0 0 1px ${(0,k.X4)(Z.palette.common.white,.03)} inset`,backdropFilter:"blur(24px) saturate(145%)"},children:[ad.length>0&&(0,d.jsx)(l.default,{sx:{mb:2,display:"flex",flexWrap:"wrap",gap:1},children:ad.map(a=>(0,d.jsxs)(j.A,{variant:"outlined",sx:{p:1,display:"flex",alignItems:"center",borderRadius:1,bgcolor:"background.default"},children:["image"===a.type?(0,d.jsx)(l.default,{component:"img",src:a.content,alt:a.originalName||"pasted image",sx:{width:40,height:40,objectFit:"cover",borderRadius:1,mr:1}}):"video"===a.type?(0,d.jsx)(l.default,{component:"video",src:a.content,sx:{width:40,height:40,objectFit:"cover",borderRadius:1,mr:1}}):"document"===a.type?(0,d.jsx)(A.A,{fontSize:"small",sx:{mr:1}}):(0,d.jsx)(B.A,{fontSize:"small",sx:{mr:1}}),(0,d.jsx)(m.A,{variant:"body2",noWrap:!0,sx:{maxWidth:150},children:a.originalName||`${a.type} attachment`}),(0,d.jsx)(n.A,{size:"small",onClick:()=>(a=>{S.debug("Removing attachment",{id:a}),ae(ad.filter(b=>b.id!==a))})(a.id),sx:{ml:1},children:(0,d.jsx)(C.A,{fontSize:"small"})})]},a.id))}),aq&&(0,d.jsxs)(l.default,{sx:{mb:1,display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(o.A,{icon:(0,d.jsx)(F.A,{}),label:"Editing message",size:"small",color:"warning",variant:"outlined"}),(0,d.jsx)(m.A,{variant:"caption",color:"text.secondary",children:"Enter to save \xb7 Esc to cancel"})]}),(0,d.jsxs)(l.default,{sx:{display:"flex",alignItems:"flex-end",gap:.35},children:[(0,d.jsx)(P.Ay,{value:aq?U?.content??"":ab,onChange:a=>{aq?V?.(a):ac(a)},globalNames:aa,suggestions:at,multiline:!0,minRows:1,maxRows:aq?12:4,dataTour:"chat-input",ariaLabel:aq?"Edit message":"Message",placeholder:aq?"Edit message...":c,onKeyDown:a=>{"Enter"!==a.key||a.shiftKey?"Escape"===a.key&&aq&&(a.preventDefault(),Y?.()):(a.preventDefault(),aq?aN():(S.debug("Enter key pressed, sending message"),aO()))},onPaste:a=>{let b=a.clipboardData?.items;if(!b)return;let c=[];for(let a=0;a<b.length;a++){let d=b[a];if("file"===d.kind&&d.type.startsWith("image/")){let a=d.getAsFile();a&&c.push(a)}}0!==c.length&&(a.preventDefault(),S.debug("Pasting image attachment(s)",{count:c.length}),c.forEach(a=>{let b=new FileReader;b.onload=b=>{let c=b.target?.result;if("string"!=typeof c)return;let d=(a.type.split("/")[1]||"png").split("+")[0];ae(b=>[...b,{id:(0,O.A)(),type:"image",content:c,originalName:a.name&&!/^image\.\w+$/i.test(a.name)?a.name:`Pasted image.${d}`}])},b.onerror=()=>S.error("Failed to read pasted image"),b.readAsDataURL(a)}))},disabled:!aq&&b,autoFocus:aq,containerSx:{flex:1}}),!aq&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(p.A,{title:"Attach document",children:(0,d.jsx)(n.A,{color:"primary",onClick:()=>{S.debug("File selection triggered"),al.current?.click()},disabled:b||af,children:(0,d.jsx)(A.A,{})})}),(0,d.jsx)("input",{type:"file",ref:al,onChange:aP,style:{display:"none"},accept:"image/*,audio/*,video/*,.pdf,.txt,.md,.json,.csv,.html,.xml,.js,.ts,.jsx,.tsx,.css,.scss"}),(0,d.jsx)(p.A,{title:af?"Stop recording":"Record audio",children:(0,d.jsxs)(n.A,{color:af?"error":"primary",onClick:af?()=>{S.debug("Stopping audio recording"),am.current&&"inactive"!==am.current.state&&(am.current.stop(),ag(!1),aj&&(clearInterval(aj),ak(null)),ai(0))}:aS,disabled:b,children:[(0,d.jsx)(B.A,{}),af&&(0,d.jsx)(m.A,{variant:"caption",sx:{position:"absolute",bottom:-15,fontSize:"0.7rem",color:"error.main"},children:(a=>{let b=Math.floor(a/60);return`${b.toString().padStart(2,"0")}:${(a%60).toString().padStart(2,"0")}`})(ah)})]})})]}),aq?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(p.A,{title:"Save edit",children:(0,d.jsx)("span",{children:(0,d.jsx)(n.A,{color:"primary","aria-label":"Save edit",onClick:aN,disabled:!U?.content.trim(),children:(0,d.jsx)(E.A,{})})})}),(0,d.jsx)(p.A,{title:"Cancel edit",children:(0,d.jsx)(n.A,{color:"default","aria-label":"Cancel edit",onClick:()=>Y?.(),children:(0,d.jsx)(C.A,{})})})]}):(0,d.jsx)(p.A,{title:"Send message",children:(0,d.jsx)("span",{children:(0,d.jsx)(n.A,{color:"primary",onClick:aO,disabled:b||!ab.trim()&&0===ad.length,"aria-label":"Send message",sx:{width:44,height:44,color:"#fff",background:`linear-gradient(135deg, ${Z.palette.primary.light}, ${Z.palette.primary.main} 58%, ${Z.palette.secondary.main})`,boxShadow:`0 10px 24px ${(0,k.X4)(Z.palette.primary.main,.28)}`,"&:hover":{background:`linear-gradient(135deg, ${Z.palette.primary.light}, ${Z.palette.primary.main} 48%, ${Z.palette.secondary.main})`,boxShadow:`0 14px 30px ${(0,k.X4)(Z.palette.primary.main,.38)}`},"&.Mui-disabled":{color:"text.disabled",background:(0,k.X4)(Z.palette.text.disabled,.12),boxShadow:"none"}},children:(0,d.jsx)(z.A,{})})})})]})," ",(G||(T||aq)&&J.length>0)&&(0,d.jsxs)(l.default,{sx:{mt:1,pt:1,display:"flex",justifyContent:"flex-start",alignItems:"center",flexWrap:"wrap",gap:1,borderTop:1,borderColor:"divider"},children:[(T||aq)&&J.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(p.A,{title:aq?"Node this message runs on — click to pick from the agent":M?"Next message will run on this manually picked node — click to change":"Node the next message will run on — click to pick from the agent",children:(0,d.jsx)(o.A,{icon:(0,d.jsx)(D.A,{}),label:as,size:"small",color:aq||M?"primary":"default",variant:aq||M?"filled":"outlined",onClick:()=>ap(!0),disabled:!aq&&b})}),(0,d.jsx)(N,{open:ao,flow:K,selectedNodeId:ar,allowAutomatic:!aq,onSelect:a=>{aq?W?.(a):T?.(a)},onClose:()=>ap(!1)})]}),G&&(0,d.jsx)(q.A,{control:(0,d.jsx)(r.A,{checked:f,onChange:a=>G(a.target.checked),size:"small",disabled:b}),label:(0,d.jsx)(m.A,{variant:"caption",children:"Require Tool Approvals"}),sx:{mr:"auto"}}),I&&(0,d.jsx)(q.A,{control:(0,d.jsx)(r.A,{checked:H,onChange:a=>I(a.target.checked),size:"small",disabled:b}),label:(0,d.jsx)(m.A,{variant:"caption",children:"Execute in Debugger"}),sx:{ml:2}})]})," "]})," ",(0,d.jsxs)(s.A,{open:av,onClose:()=>!aH&&aw(!1),maxWidth:"md",fullWidth:!0,children:[(0,d.jsxs)(t.A,{children:[az,!aH&&(0,d.jsx)(n.A,{"aria-label":"close",onClick:()=>aw(!1),sx:{position:"absolute",right:8,top:8},children:(0,d.jsx)(C.A,{})})]}),(0,d.jsx)(u.A,{dividers:!0,children:aH?(0,d.jsxs)(l.default,{sx:{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",p:4},children:[(0,d.jsx)(v.default,{value:"audio"===aB&&aJ?aJ:void 0,variant:"audio"===aB&&aJ>0?"determinate":"indeterminate"}),"audio"===aB&&(0,d.jsxs)(l.default,{sx:{mt:2,textAlign:"center"},children:[(0,d.jsx)(m.A,{variant:"body2",children:aL||"Processing audio..."}),aJ>0&&(0,d.jsxs)(m.A,{variant:"body2",color:"text.secondary",sx:{mt:1},children:[Math.round(aJ),"%"]})]})]}):(0,d.jsx)(w.A,{multiline:!0,fullWidth:!0,minRows:10,maxRows:20,value:ax,onChange:a=>ay(a.target.value),variant:"outlined",placeholder:"document"===aB?"Document content":"Audio transcription"})}),(0,d.jsxs)(x.A,{children:[(0,d.jsx)(y.A,{onClick:()=>aw(!1),disabled:aH,children:"Cancel"}),(0,d.jsx)(y.A,{onClick:()=>{S.debug("Adding attachment",{type:aB,titleLength:az.length}),ae([...ad,{id:(0,O.A)(),type:aB,content:"audio"===aB&&aD?aD:ax,originalName:az,..."audio"===aB&&aF?{mimeType:aF,transcript:ax}:{}}]),aE(null),aG(void 0),aw(!1)},variant:"contained",disabled:aH||!ax.trim(),children:"Add to Message"})]})]})]})}},62815:(a,b,c)=>{c.d(b,{A:()=>ay});var d=c(21124),e=c(38301),f=c.n(e),g=c(79515),h=c(81637),i=c(68730),j=c(8521),k=c(43312),l=c(41893),m=c(99561),n=c(95587),o=c(67191),p=c(44079),q=c(54573),r=c(61628),s=c(19787),t=c(95803),u=c(77028),v=c(82605),w=c(50062),x=c(7675),y=c(94367),z=c(38233),A=c(37674),B=c(29231),C=c(86374),D=c(74419),E=c(7118),F=c(50553),G=c(84233),H=c(45798),I=c(18954),J=c(96955),K=c(16348),L=c(13665),M=c(9258),N=c(73245),O=c(17332),P=c(84049),Q=c(56685),R=c(82543),S=c(22797),T=c(12033),U=c(24276),V=c(885),W=c(91353),X=c(11939),Y=c(49066),Z=c(40512),$=c(83899),_=c(52327),aa=c(42387),ab=c(88745),ac=c(89490),ad=c(71439),ae=c(19925),af=c(38259);function ag({open:a,conversationId:b,messageId:c,onClose:f,onReverted:j}){let[k,l]=(0,e.useState)(null),[m,n]=(0,e.useState)(null),[o,p]=(0,e.useState)(!1),[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(null),u=async()=>{if(c&&k){r(!0),n(null);try{let a=await af.O.revertToMessage(b,c,k.previewId);t(a.operationId),j?.(c)}catch(a){n(a instanceof Error?a.message:"Unable to revert changes")}finally{r(!1)}}},v=async()=>{if(s){r(!0),n(null);try{await af.O.undoRevert(b,s),t(null),f()}catch(a){n(a instanceof Error?a.message:"Unable to undo revert")}finally{r(!1)}}};return(0,d.jsxs)(Z.A,{open:a,onClose:q?void 0:f,fullWidth:!0,maxWidth:"md",children:[(0,d.jsx)($.A,{children:"Revert to here"}),(0,d.jsxs)(_.A,{children:[(o||q)&&(0,d.jsx)(aa.A,{sx:{mb:2}}),m&&(0,d.jsx)(ab.A,{severity:"error",sx:{mb:2},children:m}),s?(0,d.jsx)(ab.A,{severity:"success",children:"Changes were reverted. You can undo this operation now."}):k&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g.A,{variant:"body2",children:"Review the affected files before changing the worktree."}),(0,d.jsx)(ac.A,{dense:!0,children:k.files.map(a=>(0,d.jsx)(ad.Ay,{disableGutters:!0,children:(0,d.jsx)(G.A,{primary:a.path,secondary:a.status})},`${a.status}:${a.path}`))}),(0,d.jsx)(h.default,{component:"pre",sx:{maxHeight:360,overflow:"auto",p:1.5,bgcolor:"action.hover",borderRadius:1,fontFamily:"monospace",fontSize:12,whiteSpace:"pre-wrap"},children:k.diff||"No textual diff available."}),k.truncated&&(0,d.jsx)(g.A,{variant:"caption",children:"Preview truncated for safety."})]})]}),(0,d.jsxs)(ae.A,{children:[(0,d.jsx)(i.A,{onClick:f,disabled:q,children:"Cancel"}),s?(0,d.jsx)(i.A,{onClick:v,disabled:q,children:"Undo revert"}):(0,d.jsx)(i.A,{color:"error",variant:"contained",onClick:u,disabled:!k||o||q,children:"Confirm Revert"})]})]})}var ah=c(65690),ai=c(82571),aj=c(98502);function ak(a){return!!a&&(a.startsWith(aj.n9)||"handoff"===a)}var al=c(34641);function am(a){return a.url?a.url:a.data?`data:${a.mimeType??"application/octet-stream"};base64,${a.data}`:void 0}let an=(0,c(42819).h)("frontend/components/Chat/ChatMessages");function ao(a){return"assistant"===a.role&&"tool_calls"in a&&Array.isArray(a.tool_calls)}function ap(a){if("tool"!==a.role||"string"!=typeof a.content)return!1;try{return JSON.parse(a.content)?.handoff===!0}catch{return!1}}let aq={p:a=>(0,d.jsx)(g.A,{variant:"body1",sx:{mb:.5,whiteSpace:"pre-line"},children:a.children}),h1:a=>(0,d.jsx)(g.A,{variant:"h5",sx:{mt:2,mb:.5},children:a.children}),h2:a=>(0,d.jsx)(g.A,{variant:"h6",sx:{mt:2,mb:.5},children:a.children}),h3:a=>(0,d.jsx)(g.A,{variant:"subtitle1",sx:{mt:1.5,mb:.5},children:a.children}),h4:a=>(0,d.jsx)(g.A,{variant:"subtitle2",sx:{mt:1.5,mb:.5},children:a.children}),h5:a=>(0,d.jsx)(g.A,{variant:"body1",sx:{mt:1,mb:.5,fontWeight:"bold"},children:a.children}),h6:a=>(0,d.jsx)(g.A,{variant:"body2",sx:{mt:1,mb:.5,fontWeight:"bold"},children:a.children}),ul:a=>(0,d.jsx)(h.default,{component:"ul",sx:{pl:2,mb:1},children:a.children}),ol:a=>(0,d.jsx)(h.default,{component:"ol",sx:{pl:2,mb:1},children:a.children}),li:a=>(0,d.jsx)(h.default,{component:"li",sx:{mb:.5,whiteSpace:"pre-line"},children:a.children}),a:a=>(0,d.jsx)(g.A,{component:"a",sx:{color:"primary.main"},href:a.href,children:a.children}),blockquote:a=>(0,d.jsx)(h.default,{component:"blockquote",sx:{borderLeft:"4px solid",borderColor:"divider",pl:2,py:.5,my:1,bgcolor:"action.hover",borderRadius:"4px"},children:a.children}),code:({node:a,className:b,children:c,...e})=>/language-(\w+)/.exec(b||"")||b?(0,d.jsx)(h.default,{component:"pre",sx:{bgcolor:"action.hover",p:1.5,borderRadius:"4px",overflowX:"auto",fontFamily:"monospace",fontSize:"0.875rem",my:1,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:c}):(0,d.jsx)(g.A,{component:"code",sx:{bgcolor:"action.hover",px:.5,py:.25,borderRadius:"4px",fontFamily:"monospace",wordBreak:"break-all"},children:c})},ar=({media:a})=>(0,d.jsx)(h.default,{sx:{display:"flex",flexDirection:"column",gap:1,mt:1},children:a.map((a,b)=>{let c=am(a),e=a.resourceUri??a.url??`${a.type}-${b}`;return c?"image"===a.type?(0,d.jsx)(h.default,{component:"img",src:c,alt:a.name??`Generated image ${b+1}`,sx:{maxWidth:"100%",height:"auto",borderRadius:1}},e):"audio"===a.type?(0,d.jsxs)(h.default,{children:[(0,d.jsx)(h.default,{component:"audio",controls:!0,src:c,sx:{width:"100%"}}),a.transcript&&(0,d.jsx)(g.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:.5},children:a.transcript})]},e):"video"===a.type?(0,d.jsx)(h.default,{component:"video",controls:!0,src:c,sx:{maxWidth:"100%",maxHeight:560,borderRadius:1}},e):(0,d.jsx)(i.A,{component:"a",href:c,download:a.name||!0,target:"_blank",rel:"noopener noreferrer",variant:"outlined",size:"small",startIcon:(0,d.jsx)(M.A,{}),sx:{alignSelf:"flex-start"},children:a.name??"Download generated file"},e):null})}),as=({content:a,showRaw:b})=>b?(0,d.jsx)(h.default,{component:"pre",sx:{whiteSpace:"pre-wrap",wordBreak:"break-all",fontSize:"0.8rem",p:1,borderRadius:1,border:1,borderColor:a=>a.palette.divider,bgcolor:"action.hover",color:a=>a.palette.text.primary,overflow:"auto",maxHeight:"300px"},children:"string"==typeof a?a:"[Invalid tool content]"}):"string"!=typeof a?(0,d.jsx)(g.A,{variant:"body2",fontStyle:"italic",color:"text.secondary",children:"[Invalid tool content]"}):(0,d.jsx)(h.default,{sx:{width:"100%",minWidth:0},children:(()=>{try{let b=JSON.parse(a);if(b&&Array.isArray(b.content))return(0,d.jsx)(h.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:b.content.map((a,b)=>"text"===a.type?(0,d.jsx)(H.oz,{remarkPlugins:[I.A],children:a.text},b):"image"===a.type&&a.data&&a.mimeType?(0,d.jsx)("img",{src:`data:${a.mimeType};base64,${a.data}`,alt:`Tool Result Image ${b+1}`,style:{maxWidth:"100%",height:"auto",borderRadius:"4px",marginTop:"8px"}},b):"audio"===a.type&&a.data&&a.mimeType?(0,d.jsx)("audio",{controls:!0,src:`data:${a.mimeType};base64,${a.data}`,style:{width:"100%",marginTop:"8px"},children:"Your browser does not support the audio element."},b):"video"===a.type&&a.data&&a.mimeType?(0,d.jsx)("video",{controls:!0,src:`data:${a.mimeType};base64,${a.data}`,style:{maxWidth:"100%",maxHeight:"560px",marginTop:"8px"},children:"Your browser does not support the video element."},b):(0,d.jsx)(h.default,{component:"pre",sx:{whiteSpace:"pre-wrap",wordBreak:"break-all",fontSize:"0.8rem",p:1,borderRadius:1,border:1,borderColor:a=>a.palette.divider,bgcolor:"action.hover",color:a=>a.palette.text.primary,overflow:"auto",mt:1},children:`Unsupported content type: ${a.type}
|
|
1
|
+
"use strict";exports.id=9543,exports.ids=[9543],exports.modules={4580:(a,b,c)=>{async function d(a,b){throw Error("Web Speech API is only available in browser environments")}function e(){return{supported:!1,message:"Not in browser environment"}}c.d(b,{G:()=>e,S:()=>d}),(0,c(42819).h)("frontend/services/transcription/webSpeech")},24856:(a,b,c)=>{c.d(b,{pX:()=>d});function d(a,b,c,d){let e=`${a.type}-bottom`,f=`${b.type}-top`;return{id:`${a.id}:${e}->${b.id}:${f}`,source:a.id,sourceHandle:e,target:b.id,targetHandle:f,type:"custom",data:{edgeType:"standard",...c?{bidirectional:!0}:{},...d?{condition:d}:{}},animated:!0}}},29237:(a,b,c)=>{c.d(b,{C:()=>f,L2:()=>e,P2:()=>h,w4:()=>d,wM:()=>g});let d=["contains","regex","equals","always"],e=["last-assistant","last-message"];function f(a){return"string"==typeof a&&d.includes(a)}function g(a){try{return new RegExp(a),!0}catch{return!1}}function h(a,b){if(!a||!f(a.kind))return"";let c=a.negate?"!":"",d=b?.[a.kind]??a.kind;if("always"===a.kind)return`${c}${d}`;let e=a.ignoreCase?" i":"",g="string"==typeof a.value?a.value:"",h=g.length>8?`${g.slice(0,8)}…`:g,i="regex"===a.kind?`/${h}/`:`"${h}"`;return`${c}${d}:${i}${e}`}},31164:(a,b,c)=>{c.d(b,{jY:()=>f,oY:()=>g,sZ:()=>h});var d=c(21124);c(38301);var e=c(97004);let f=a=>(0,d.jsx)(e.A,{...a,variant:"standard"}),g=a=>(0,d.jsx)(e.A,{...a,variant:"mcp"}),h=a=>(0,d.jsx)(e.A,{...a,variant:"resource"})},38259:(a,b,c)=>{c.d(b,{O:()=>i,b:()=>e});let d=(0,c(42819).h)("frontend/services/chat/index");class e extends Error{constructor(a,b,c){super(a),this.name="ChatApiError",this.status=b,this.body=c}}let f="/v1/chat/conversations";async function g(a){let b;if(204===a.status)return;let c=await a.text();if(c)try{b=JSON.parse(c)}catch{b=c}if(!a.ok)throw new e(b&&"object"==typeof b&&(b.error||b.message)||`Request failed with status ${a.status}`,a.status,b);return b}class h{async listConversations(){return d.debug("listConversations: Entering method"),g(await fetch(f))}async getConversation(a){return d.debug("getConversation: Entering method",{conversationId:a}),g(await fetch(`${f}/${encodeURIComponent(a)}`))}async createConversation(a){return d.debug("createConversation: Entering method",{conversationId:a.id}),g(await fetch(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}))}async updateConversationFlow(a,b){return d.debug("updateConversationFlow: Entering method",{conversationId:a,flowId:b}),g(await fetch(`${f}/${encodeURIComponent(a)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({flowId:b})}))}async updateConversationTitle(a,b){return d.debug("updateConversationTitle: Entering method",{conversationId:a}),g(await fetch(`${f}/${encodeURIComponent(a)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:b})}))}async updateConversationApproval(a,b){return d.debug("updateConversationApproval: Entering method",{conversationId:a,requireApproval:b}),g(await fetch(`${f}/${encodeURIComponent(a)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApproval:b})}))}async deleteConversation(a){d.debug("deleteConversation: Entering method",{conversationId:a});let b=await fetch(`${f}/${encodeURIComponent(a)}`,{method:"DELETE"});await g(b)}async deleteConversations(a){return d.debug("deleteConversations: Entering method",{count:a.length}),g(await fetch(f,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:a})}))}async respondToToolCall(a,b,c,e,h){return d.debug("respondToToolCall: Entering method",{conversationId:a,action:b,toolCallId:c,always:e}),g(await fetch(`${f}/${encodeURIComponent(a)}/respond`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:b,toolCallId:c,...e?{always:!0}:{},...h?{feedback:h}:{}})}))}async debugStep(a){return d.debug("debugStep: Entering method",{conversationId:a}),g(await fetch(`${f}/${encodeURIComponent(a)}/debug/step`,{method:"POST"}))}async debugContinue(a){return d.debug("debugContinue: Entering method",{conversationId:a}),g(await fetch(`${f}/${encodeURIComponent(a)}/debug/continue`,{method:"POST"}))}async setBreakpoints(a,b){d.debug("setBreakpoints: Entering method",{conversationId:a,count:b.length});let c=await fetch(`${f}/${encodeURIComponent(a)}/breakpoints`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({breakpoints:b})});await g(c)}async synthesizeQuickChat(a){return d.debug("synthesizeQuickChat: Entering method",{conversationId:a.conversationId}),g(await fetch("/api/flow/quick-chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}))}async synthesizeFlowGenerator(a){return g(await fetch("/api/flow/generator",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}))}async completeFlowGeneratorTurn(a){return g(await fetch("/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:"flow-Flow Generator Session",messages:a.messages,stream:!1,metadata:{flujo:"true",conversationId:a.conversationId}})}))}async restoreFlowGenerator(){return g(await fetch("/api/flow/generator",{method:"PUT"}))}async cancel(a){d.debug("cancel: Entering method",{conversationId:a});let b=await fetch(`${f}/${encodeURIComponent(a)}/cancel`,{method:"POST"});await g(b)}async injectMessage(a,b,c){d.debug("injectMessage: Entering method",{conversationId:a,messageId:c});try{let e=await fetch(`${f}/${encodeURIComponent(a)}/inject`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:b,id:c})});if(e.ok)return{delivered:!0};if(409===e.status)return d.debug("injectMessage: run is not live; caller should send normally",{conversationId:a}),{delivered:!1};return d.warn("injectMessage: unexpected response; falling back to a normal send",{conversationId:a,status:e.status}),{delivered:!1}}catch(b){return d.warn("injectMessage: request failed; falling back to a normal send",{conversationId:a,err:b}),{delivered:!1}}}async previewRevert(a,b){return g(await fetch(`${f}/${encodeURIComponent(a)}/revert?messageId=${encodeURIComponent(b)}`))}async revertToMessage(a,b,c){return g(await fetch(`${f}/${encodeURIComponent(a)}/revert`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messageId:b,previewId:c})}))}async undoRevert(a,b){let c=await fetch(`${f}/${encodeURIComponent(a)}/revert`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({operationId:b,action:"undo"})});await g(c)}subscribeToEvents(a,b,c){let e=new EventSource(void 0!==c?`${f}/${encodeURIComponent(a)}/events?fromSeq=${c}`:`${f}/${encodeURIComponent(a)}/events`);return e.onopen=()=>{d.debug("Execution event stream open",{conversationId:a}),b.onOpen?.()},e.onmessage=a=>{try{b.onEvent(JSON.parse(a.data))}catch(a){d.warn("Failed to parse SSE event",{err:a})}},e.onerror=a=>{d.debug("SSE stream error (browser will retry if still open)"),b.onError?.(a)},e}subscribeToSidebarEvents(a){let b=new EventSource("/v1/chat/events?scope=sidebar");return b.onopen=()=>{d.debug("Sidebar lifecycle event stream open"),a.onOpen?.()},b.onmessage=b=>{try{a.onEvent(JSON.parse(b.data))}catch(a){d.warn("Failed to parse sidebar lifecycle event",{err:a})}},b.onerror=b=>{d.debug("Sidebar lifecycle stream error (browser will retry if still open)"),a.onError?.(b)},b}}let i=new h},61220:(a,b,c)=>{c.d(b,{A:()=>U});var d=c(21124),e=c(38301),f=c(42819);async function g(a,b={}){return{text:"Speech recognition is only available in browser environments",success:!1,error:"Server-side transcription is not supported"}}c(4580),(0,f.h)("frontend/services/transcription");var h=c(49938),i=c(60839),j=c(54573),k=c(37489),l=c(81637),m=c(79515),n=c(44079),o=c(41893),p=c(43312),q=c(95587),r=c(77028),s=c(40512),t=c(83899),u=c(52327),v=c(8521),w=c(37674),x=c(19925),y=c(68730),z=c(70011),A=c(9258),B=c(73245),C=c(30137),D=c(88970),E=c(36698),F=c(12033),G=c(73821),H=c(46973),I=c(95791),J=c(63787),K=c(18305);let L=new Set(["start","process","subflow"]),M=a=>a.type??a.data?.type,N=({flow:a,selectedNodeId:b,onSelect:c,onClose:f})=>{let g=(0,i.A)(),h=(0,e.useMemo)(()=>(a?.nodes||[]).map(a=>{let c=L.has(M(a)||""),d=a.id===b;return{...a,draggable:!1,selectable:!1,style:{...a.style||{},opacity:c?1:.35,cursor:c?"pointer":"default",borderRadius:8,boxShadow:d?`0 0 0 3px ${g.palette.primary.main}`:void 0,transition:"box-shadow 120ms ease"}}}),[a?.nodes,b,g.palette.primary.main]),j=(0,e.useMemo)(()=>(a?.edges||[]).filter(a=>a.source&&a.target&&a.sourceHandle&&a.targetHandle),[a?.edges]),k=(0,e.useMemo)(()=>({type:"custom",animated:!1,style:{stroke:g.palette.text.secondary,strokeWidth:2},markerEnd:{type:H.TG.ArrowClosed,width:20,height:20,color:g.palette.text.secondary}}),[g.palette.text.secondary]);return(0,d.jsx)(I.Gc,{nodes:h,edges:j,nodeTypes:J.c_,edgeTypes:J.nd,defaultEdgeOptions:k,connectionLineType:H.Do.SmoothStep,fitView:!0,minZoom:.1,maxZoom:2,onNodeClick:(a,b)=>{L.has(M(b)||"")&&(c(b.id),f())},nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,deleteKeyCode:null,proOptions:{hideAttribution:!0},children:(0,d.jsx)(I.VS,{})})},O=({open:a,flow:b,selectedNodeId:c,allowAutomatic:e,onSelect:f,onClose:g})=>{let{t:h}=(0,K.s9)(),i=!!(b&&(b.nodes?.length??0)>0);return(0,d.jsxs)(s.A,{open:a,onClose:g,maxWidth:"lg",fullWidth:!0,children:[(0,d.jsx)(t.A,{children:h("chat.nodePicker.title")}),(0,d.jsxs)(u.A,{dividers:!0,sx:{p:0},children:[(0,d.jsx)(l.default,{sx:{px:2,pt:1.5},children:(0,d.jsx)(m.A,{variant:"caption",color:"text.secondary",children:h("chat.nodePicker.help")})}),(0,d.jsx)(l.default,{sx:{height:"62vh",width:"100%"},children:i?(0,d.jsx)(I.Ln,{children:(0,d.jsx)(N,{flow:b,selectedNodeId:c,onSelect:f,onClose:g})}):(0,d.jsx)(l.default,{sx:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center"},children:(0,d.jsx)(m.A,{variant:"body2",color:"text.secondary",children:h("chat.nodePicker.empty")})})})]}),(0,d.jsxs)(x.A,{children:[e&&(0,d.jsx)(y.A,{startIcon:(0,d.jsx)(G.A,{}),onClick:()=>{f(null),g()},children:h("chat.nodePicker.automatic")}),(0,d.jsx)(l.default,{sx:{flex:1}}),(0,d.jsx)(y.A,{onClick:g,children:h("common.cancel")})]})]})};var P=c(2117),Q=c(50551),R=c(28055),S=c(80518);let T=(0,f.h)("frontend/components/Chat/ChatInput"),U=({onSendMessage:a,disabled:b=!1,placeholder:c,requireApproval:f=!1,onRequireApprovalChange:G,executeInDebugger:H=!1,onExecuteInDebuggerChange:I,availableNodes:J=[],flow:L=null,currentNodeId:M=null,nodeOverrideActive:N=!1,onSelectNode:U,editing:V=null,onEditingContentChange:W,onEditingNodeChange:X,onSaveEdit:Y,onCancelEdit:Z})=>{let{t:$}=(0,K.s9)(),_=(0,i.A)(),{settings:aa,globalEnvVars:ab}=(0,h.rX)(),ac=(0,e.useMemo)(()=>Object.entries(ab).filter(([,a])=>!a.metadata?.isSecret).map(([a])=>a).sort((a,b)=>a.localeCompare(b)),[ab]),[ad,ae]=(0,e.useState)(""),[af,ag]=(0,e.useState)([]),[ah,ai]=(0,e.useState)(!1),[aj,ak]=(0,e.useState)(0),[al,am]=(0,e.useState)(null),an=(0,e.useRef)(null),ao=(0,e.useRef)(null),ap=(0,e.useRef)([]),[aq,ar]=(0,e.useState)(!1),as=!!V,at=as?V?.nodeId??null:M,au=(a=>J.find(b=>b.id===a)?.label||(a?`${a.substring(0,6)}...`:$("chat.input.startNode")))(at),[av,aw]=(0,e.useState)([]);(0,e.useEffect)(()=>{let a=!1;if(!L)return aw([]),()=>{a=!0};let b=L.nodes.find(a=>(a.data?.type??a.type)==="start"),c=b?L.edges.find(a=>a.source===b.id&&a.data?.edgeType!=="mcp")?.target:void 0,d=at??c??L.nodes.find(a=>(a.data?.type??a.type)==="process")?.id;if(!d)return aw([]),()=>{a=!0};let e=new Set(L.edges.filter(a=>a.data?.edgeType==="mcp"&&(a.source===d||a.target===d)).map(a=>a.source===d?a.target:a.source)),f=L.nodes.filter(a=>(a.data?.type??a.type)==="mcp"&&e.has(a.id)).map(a=>({server:a.data.properties?.boundServer,enabledTools:new Set(a.data.properties?.enabledTools??[]),enabledResources:a.data.properties?.enabledResources})).filter(a=>!!a.server);return 0===f.length?(aw([]),()=>{a=!0}):(Promise.all(f.map(async({server:a,enabledTools:b,enabledResources:c})=>{let d=[];try{for(let c of(await R.S.listServerTools(a)).tools??[])c?.name&&b.has(c.name)&&d.push((0,S.Ub)({kind:"tool",server:a,name:c.name},c.name,c.description||a))}catch(b){T.warn(`Failed to load chat @ tool suggestions for ${a}`,b)}try{let b=await R.S.listServerResources(a),e=a=>void 0===c||"all"===c||c.includes(a);for(let c of b.resources??[])e(c.uri)&&d.push((0,S.Ub)({kind:"resource",server:a,name:c.uri},c.name||c.uri,c.description||`${a} \xb7 ${c.uri}`));for(let c of b.resourceTemplates??[])e(c.uriTemplate)&&d.push((0,S.Ub)({kind:"resource",server:a,name:c.uriTemplate},c.name||c.uriTemplate,c.description||`${a} \xb7 ${c.uriTemplate}`))}catch(b){T.warn(`Failed to load chat @ resource suggestions for ${a}`,b)}return d})).then(b=>{a||aw(b.flat())}),()=>{a=!0})},[L,at]);let[ax,ay]=(0,e.useState)(!1),[az,aA]=(0,e.useState)(""),[aB,aC]=(0,e.useState)(""),[aD,aE]=(0,e.useState)("document"),[aF,aG]=(0,e.useState)(null),[aH,aI]=(0,e.useState)(),[aJ,aK]=(0,e.useState)(!1),[aL,aM]=(0,e.useState)(0),[aN,aO]=(0,e.useState)(""),aP=()=>{V&&V.content.trim()&&Y?.()},aQ=()=>{(ad.trim()||af.length>0)&&(T.debug("Sending message",{messageLength:ad.length,attachmentsCount:af.length}),a(ad,af),ae(""),ag([]))},aR=async a=>{let b=a.target.files;if(!b||0===b.length)return;let c=b[0];T.debug("File selected",{fileName:c.name,fileSize:c.size,fileType:c.type});try{let a=c.type||"application/octet-stream";if(a.startsWith("text/")||/\.(txt|md|json|csv|html?|xml|js|ts|jsx|tsx|css|scss)$/i.test(c.name)){aC($("chat.input.processingFile",{file:c.name})),aE("document"),aA(""),aK(!0),ay(!0);let a=await aS(c);T.debug("File read successfully",{contentLength:a.length}),aA(a),aK(!1)}else{let b=await aT(c),d=a.startsWith("image/")?"image":a.startsWith("audio/")?"audio":a.startsWith("video/")?"video":"document";ag(e=>[...e,{id:(0,P.A)(),type:d,content:b,originalName:c.name,mimeType:a}])}}catch(a){T.error("Error reading file:",a),aA($("chat.input.readFailed")),aK(!1)}an.current&&(an.current.value="")},aS=a=>new Promise((b,c)=>{let d=new FileReader;d.onload=a=>{a.target?.result?b(a.target.result):c(Error("Failed to read file"))},d.onerror=()=>{c(Error("Error reading file"))},d.readAsText(a)}),aT=a=>new Promise((b,c)=>{let d=new FileReader;d.onload=()=>"string"==typeof d.result?b(d.result):c(Error("Failed to encode file")),d.onerror=()=>c(Error("Error reading file")),d.readAsDataURL(a)}),aU=async()=>{T.debug("Starting audio recording");try{let a=await navigator.mediaDevices.getUserMedia({audio:!0});T.debug("Audio stream obtained successfully"),ap.current=[];let b=new MediaRecorder(a);ao.current=b,b.ondataavailable=a=>{a.data.size>0&&ap.current.push(a.data)},b.onstop=async()=>{let c=b.mimeType||ap.current[0]?.type||"audio/webm",d=new Blob(ap.current,{type:c});aC($("chat.input.audioRecording")),aE("audio"),aG(await aT(d)),aI(c),aA(""),aK(!0),ay(!0);try{if((aa?.speech||{enabled:!0,modelSize:"base",autoDownload:!1}).enabled){aO($("chat.input.initializingTranscription")),aM(0);let a=await g(d,{onProgress:aM,onStatusChange:aO,language:navigator.language});if(a.success){let b=a.text;aA(b),T.debug("Transcription successful",{textLength:a.text.length,engine:a.engine})}else aA($("chat.input.transcriptionFailed",{error:a.error||$("common.unknownError")})),T.error("Transcription failed",{error:a.error})}else aA($("chat.input.speechDisabled"))}catch(a){T.error("Error handling audio recording",{error:a}),aA($("chat.input.audioFailed",{error:String(a)}))}finally{aK(!1),a.getTracks().forEach(a=>a.stop())}},b.start(),ai(!0);let c=setInterval(()=>{ak(a=>a+1)},1e3);am(c)}catch(a){T.error("Error starting recording:",a),alert($("chat.input.microphoneFailed"))}};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(j.A,{elevation:0,sx:{width:"100%",maxWidth:"none",mx:0,p:{xs:1,sm:1.25},display:"flex",flexDirection:"column",border:`1px solid ${(0,k.X4)(_.palette.primary.main,.24)}`,borderRadius:0,bgcolor:(0,k.X4)(_.palette.background.paper,"dark"===_.palette.mode?.82:.92),boxShadow:`0 22px 70px ${(0,k.X4)(_.palette.common.black,"dark"===_.palette.mode?.34:.12)}, 0 0 0 1px ${(0,k.X4)(_.palette.common.white,.03)} inset`,backdropFilter:"blur(24px) saturate(145%)"},children:[af.length>0&&(0,d.jsx)(l.default,{sx:{mb:2,display:"flex",flexWrap:"wrap",gap:1},children:af.map(a=>(0,d.jsxs)(j.A,{variant:"outlined",sx:{p:1,display:"flex",alignItems:"center",borderRadius:1,bgcolor:"background.default"},children:["image"===a.type?(0,d.jsx)(l.default,{component:"img",src:a.content,alt:a.originalName||$("chat.input.pastedImage"),sx:{width:40,height:40,objectFit:"cover",borderRadius:1,mr:1}}):"video"===a.type?(0,d.jsx)(l.default,{component:"video",src:a.content,sx:{width:40,height:40,objectFit:"cover",borderRadius:1,mr:1}}):"document"===a.type?(0,d.jsx)(A.A,{fontSize:"small",sx:{mr:1}}):(0,d.jsx)(B.A,{fontSize:"small",sx:{mr:1}}),(0,d.jsx)(m.A,{variant:"body2",noWrap:!0,sx:{maxWidth:150},children:a.originalName||$("chat.input.attachment",{type:a.type})}),(0,d.jsx)(n.A,{size:"small",onClick:()=>(a=>{T.debug("Removing attachment",{id:a}),ag(af.filter(b=>b.id!==a))})(a.id),sx:{ml:1},children:(0,d.jsx)(C.A,{fontSize:"small"})})]},a.id))}),as&&(0,d.jsxs)(l.default,{sx:{mb:1,display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(o.A,{icon:(0,d.jsx)(F.A,{}),label:$("chat.input.editing"),size:"small",color:"warning",variant:"outlined"}),(0,d.jsx)(m.A,{variant:"caption",color:"text.secondary",children:$("chat.input.editKeys")})]}),(0,d.jsxs)(l.default,{sx:{display:"flex",alignItems:"flex-end",gap:.35},children:[(0,d.jsx)(Q.Ay,{value:as?V?.content??"":ad,onChange:a=>{as?W?.(a):ae(a)},globalNames:ac,suggestions:av,multiline:!0,minRows:1,maxRows:as?12:4,dataTour:"chat-input",ariaLabel:as?$("chat.input.editMessage"):$("chat.input.message"),placeholder:as?$("chat.input.editPlaceholder"):c||$("chat.input.placeholder"),onKeyDown:a=>{"Enter"!==a.key||a.shiftKey?"Escape"===a.key&&as&&(a.preventDefault(),Z?.()):(a.preventDefault(),as?aP():(T.debug("Enter key pressed, sending message"),aQ()))},onPaste:a=>{let b=a.clipboardData?.items;if(!b)return;let c=[];for(let a=0;a<b.length;a++){let d=b[a];if("file"===d.kind&&d.type.startsWith("image/")){let a=d.getAsFile();a&&c.push(a)}}0!==c.length&&(a.preventDefault(),T.debug("Pasting image attachment(s)",{count:c.length}),c.forEach(a=>{let b=new FileReader;b.onload=b=>{let c=b.target?.result;if("string"!=typeof c)return;let d=(a.type.split("/")[1]||"png").split("+")[0];ag(b=>[...b,{id:(0,P.A)(),type:"image",content:c,originalName:a.name&&!/^image\.\w+$/i.test(a.name)?a.name:`Pasted image.${d}`}])},b.onerror=()=>T.error("Failed to read pasted image"),b.readAsDataURL(a)}))},disabled:!as&&b,autoFocus:as,containerSx:{flex:1}}),!as&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(p.A,{title:$("chat.input.attach"),children:(0,d.jsx)(n.A,{color:"primary",onClick:()=>{T.debug("File selection triggered"),an.current?.click()},disabled:b||ah,children:(0,d.jsx)(A.A,{})})}),(0,d.jsx)("input",{type:"file",ref:an,onChange:aR,style:{display:"none"},accept:"image/*,audio/*,video/*,.pdf,.txt,.md,.json,.csv,.html,.xml,.js,.ts,.jsx,.tsx,.css,.scss"}),(0,d.jsx)(p.A,{title:ah?$("chat.input.stopRecording"):$("chat.input.recordAudio"),children:(0,d.jsxs)(n.A,{color:ah?"error":"primary",onClick:ah?()=>{T.debug("Stopping audio recording"),ao.current&&"inactive"!==ao.current.state&&(ao.current.stop(),ai(!1),al&&(clearInterval(al),am(null)),ak(0))}:aU,disabled:b,children:[(0,d.jsx)(B.A,{}),ah&&(0,d.jsx)(m.A,{variant:"caption",sx:{position:"absolute",bottom:-15,fontSize:"0.7rem",color:"error.main"},children:(a=>{let b=Math.floor(a/60);return`${b.toString().padStart(2,"0")}:${(a%60).toString().padStart(2,"0")}`})(aj)})]})})]}),as?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(p.A,{title:$("chat.input.saveEdit"),children:(0,d.jsx)("span",{children:(0,d.jsx)(n.A,{color:"primary","aria-label":$("chat.input.saveEdit"),onClick:aP,disabled:!V?.content.trim(),children:(0,d.jsx)(E.A,{})})})}),(0,d.jsx)(p.A,{title:$("chat.input.cancelEdit"),children:(0,d.jsx)(n.A,{color:"default","aria-label":$("chat.input.cancelEdit"),onClick:()=>Z?.(),children:(0,d.jsx)(C.A,{})})})]}):(0,d.jsx)(p.A,{title:$("chat.input.send"),children:(0,d.jsx)("span",{children:(0,d.jsx)(n.A,{color:"primary",onClick:aQ,disabled:b||!ad.trim()&&0===af.length,"aria-label":$("chat.input.send"),sx:{width:44,height:44,color:"#fff",background:`linear-gradient(135deg, ${_.palette.primary.light}, ${_.palette.primary.main} 58%, ${_.palette.secondary.main})`,boxShadow:`0 10px 24px ${(0,k.X4)(_.palette.primary.main,.28)}`,"&:hover":{background:`linear-gradient(135deg, ${_.palette.primary.light}, ${_.palette.primary.main} 48%, ${_.palette.secondary.main})`,boxShadow:`0 14px 30px ${(0,k.X4)(_.palette.primary.main,.38)}`},"&.Mui-disabled":{color:"text.disabled",background:(0,k.X4)(_.palette.text.disabled,.12),boxShadow:"none"}},children:(0,d.jsx)(z.A,{})})})})]})," ",(G||(U||as)&&J.length>0)&&(0,d.jsxs)(l.default,{sx:{mt:1,pt:1,display:"flex",justifyContent:"flex-start",alignItems:"center",flexWrap:"wrap",gap:1,borderTop:1,borderColor:"divider"},children:[(U||as)&&J.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(p.A,{title:as?$("chat.input.nodeEditing"):N?$("chat.input.nodeOverride"):$("chat.input.nodeAutomatic"),children:(0,d.jsx)(o.A,{icon:(0,d.jsx)(D.A,{}),label:au,size:"small",color:as||N?"primary":"default",variant:as||N?"filled":"outlined",onClick:()=>ar(!0),disabled:!as&&b})}),(0,d.jsx)(O,{open:aq,flow:L,selectedNodeId:at,allowAutomatic:!as,onSelect:a=>{as?X?.(a):U?.(a)},onClose:()=>ar(!1)})]}),G&&(0,d.jsx)(q.A,{control:(0,d.jsx)(r.A,{checked:f,onChange:a=>G(a.target.checked),size:"small",disabled:b}),label:(0,d.jsx)(m.A,{variant:"caption",children:$("chat.input.requireApprovals")}),sx:{mr:"auto"}}),I&&(0,d.jsx)(q.A,{control:(0,d.jsx)(r.A,{checked:H,onChange:a=>I(a.target.checked),size:"small",disabled:b}),label:(0,d.jsx)(m.A,{variant:"caption",children:$("chat.input.debugger")}),sx:{ml:2}})]})," "]})," ",(0,d.jsxs)(s.A,{open:ax,onClose:()=>!aJ&&ay(!1),maxWidth:"md",fullWidth:!0,children:[(0,d.jsxs)(t.A,{children:[aB,!aJ&&(0,d.jsx)(n.A,{"aria-label":$("common.close"),onClick:()=>ay(!1),sx:{position:"absolute",right:8,top:8},children:(0,d.jsx)(C.A,{})})]}),(0,d.jsx)(u.A,{dividers:!0,children:aJ?(0,d.jsxs)(l.default,{sx:{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",p:4},children:[(0,d.jsx)(v.default,{value:"audio"===aD&&aL?aL:void 0,variant:"audio"===aD&&aL>0?"determinate":"indeterminate"}),"audio"===aD&&(0,d.jsxs)(l.default,{sx:{mt:2,textAlign:"center"},children:[(0,d.jsx)(m.A,{variant:"body2",children:aN||$("chat.input.processingAudio")}),aL>0&&(0,d.jsxs)(m.A,{variant:"body2",color:"text.secondary",sx:{mt:1},children:[Math.round(aL),"%"]})]})]}):(0,d.jsx)(w.A,{multiline:!0,fullWidth:!0,minRows:10,maxRows:20,value:az,onChange:a=>aA(a.target.value),variant:"outlined",placeholder:"document"===aD?$("chat.input.documentContent"):$("chat.input.audioTranscription")})}),(0,d.jsxs)(x.A,{children:[(0,d.jsx)(y.A,{onClick:()=>ay(!1),disabled:aJ,children:$("common.cancel")}),(0,d.jsx)(y.A,{onClick:()=>{T.debug("Adding attachment",{type:aD,titleLength:aB.length}),ag([...af,{id:(0,P.A)(),type:aD,content:"audio"===aD&&aF?aF:az,originalName:aB,..."audio"===aD&&aH?{mimeType:aH,transcript:az}:{}}]),aG(null),aI(void 0),ay(!1)},variant:"contained",disabled:aJ||!az.trim(),children:$("chat.input.addToMessage")})]})]})]})}},62815:(a,b,c)=>{c.d(b,{A:()=>az});var d=c(21124),e=c(38301),f=c.n(e),g=c(79515),h=c(81637),i=c(68730),j=c(8521),k=c(43312),l=c(41893),m=c(99561),n=c(95587),o=c(67191),p=c(44079),q=c(54573),r=c(61628),s=c(19787),t=c(95803),u=c(77028),v=c(82605),w=c(50062),x=c(7675),y=c(94367),z=c(38233),A=c(37674),B=c(29231),C=c(86374),D=c(74419),E=c(7118),F=c(50553),G=c(84233),H=c(45798),I=c(18954),J=c(96955),K=c(16348),L=c(13665),M=c(9258),N=c(73245),O=c(17332),P=c(84049),Q=c(56685),R=c(82543),S=c(22797),T=c(12033),U=c(24276),V=c(885),W=c(91353),X=c(11939),Y=c(49066),Z=c(40512),$=c(83899),_=c(52327),aa=c(42387),ab=c(88745),ac=c(89490),ad=c(71439),ae=c(19925),af=c(38259),ag=c(18305);function ah({open:a,conversationId:b,messageId:c,onClose:f,onReverted:j}){let{t:k}=(0,ag.s9)(),[l,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(null),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(null),v=async()=>{if(c&&l){s(!0),o(null);try{let a=await af.O.revertToMessage(b,c,l.previewId);u(a.operationId),j?.(c)}catch(a){o(a instanceof Error?a.message:k("chat.revert.failed"))}finally{s(!1)}}},w=async()=>{if(t){s(!0),o(null);try{await af.O.undoRevert(b,t),u(null),f()}catch(a){o(a instanceof Error?a.message:k("chat.revert.undoFailed"))}finally{s(!1)}}};return(0,d.jsxs)(Z.A,{open:a,onClose:r?void 0:f,fullWidth:!0,maxWidth:"md",children:[(0,d.jsx)($.A,{children:k("chat.revert.title")}),(0,d.jsxs)(_.A,{children:[(p||r)&&(0,d.jsx)(aa.A,{sx:{mb:2}}),n&&(0,d.jsx)(ab.A,{severity:"error",sx:{mb:2},children:n}),t?(0,d.jsx)(ab.A,{severity:"success",children:k("chat.revert.success")}):l&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g.A,{variant:"body2",children:k("chat.revert.review")}),(0,d.jsx)(ac.A,{dense:!0,children:l.files.map(a=>(0,d.jsx)(ad.Ay,{disableGutters:!0,children:(0,d.jsx)(G.A,{primary:a.path,secondary:a.status})},`${a.status}:${a.path}`))}),(0,d.jsx)(h.default,{component:"pre",sx:{maxHeight:360,overflow:"auto",p:1.5,bgcolor:"action.hover",borderRadius:1,fontFamily:"monospace",fontSize:12,whiteSpace:"pre-wrap"},children:l.diff||k("chat.revert.noDiff")}),l.truncated&&(0,d.jsx)(g.A,{variant:"caption",children:k("chat.revert.truncated")})]})]}),(0,d.jsxs)(ae.A,{children:[(0,d.jsx)(i.A,{onClick:f,disabled:r,children:k("common.cancel")}),t?(0,d.jsx)(i.A,{onClick:w,disabled:r,children:k("chat.revert.undo")}):(0,d.jsx)(i.A,{color:"error",variant:"contained",onClick:v,disabled:!l||p||r,children:k("chat.revert.confirm")})]})]})}var ai=c(65690),aj=c(82571),ak=c(98502);function al(a){return!!a&&(a.startsWith(ak.n9)||"handoff"===a)}var am=c(34641);function an(a){return a.url?a.url:a.data?`data:${a.mimeType??"application/octet-stream"};base64,${a.data}`:void 0}let ao=(0,c(42819).h)("frontend/components/Chat/ChatMessages");function ap(a){return"assistant"===a.role&&"tool_calls"in a&&Array.isArray(a.tool_calls)}function aq(a){if("tool"!==a.role||"string"!=typeof a.content)return!1;try{return JSON.parse(a.content)?.handoff===!0}catch{return!1}}let ar={p:a=>(0,d.jsx)(g.A,{variant:"body1",sx:{mb:.5,whiteSpace:"pre-line"},children:a.children}),h1:a=>(0,d.jsx)(g.A,{variant:"h5",sx:{mt:2,mb:.5},children:a.children}),h2:a=>(0,d.jsx)(g.A,{variant:"h6",sx:{mt:2,mb:.5},children:a.children}),h3:a=>(0,d.jsx)(g.A,{variant:"subtitle1",sx:{mt:1.5,mb:.5},children:a.children}),h4:a=>(0,d.jsx)(g.A,{variant:"subtitle2",sx:{mt:1.5,mb:.5},children:a.children}),h5:a=>(0,d.jsx)(g.A,{variant:"body1",sx:{mt:1,mb:.5,fontWeight:"bold"},children:a.children}),h6:a=>(0,d.jsx)(g.A,{variant:"body2",sx:{mt:1,mb:.5,fontWeight:"bold"},children:a.children}),ul:a=>(0,d.jsx)(h.default,{component:"ul",sx:{pl:2,mb:1},children:a.children}),ol:a=>(0,d.jsx)(h.default,{component:"ol",sx:{pl:2,mb:1},children:a.children}),li:a=>(0,d.jsx)(h.default,{component:"li",sx:{mb:.5,whiteSpace:"pre-line"},children:a.children}),a:a=>(0,d.jsx)(g.A,{component:"a",sx:{color:"primary.main"},href:a.href,children:a.children}),blockquote:a=>(0,d.jsx)(h.default,{component:"blockquote",sx:{borderLeft:"4px solid",borderColor:"divider",pl:2,py:.5,my:1,bgcolor:"action.hover",borderRadius:"4px"},children:a.children}),code:({node:a,className:b,children:c,...e})=>/language-(\w+)/.exec(b||"")||b?(0,d.jsx)(h.default,{component:"pre",sx:{bgcolor:"action.hover",p:1.5,borderRadius:"4px",overflowX:"auto",fontFamily:"monospace",fontSize:"0.875rem",my:1,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:c}):(0,d.jsx)(g.A,{component:"code",sx:{bgcolor:"action.hover",px:.5,py:.25,borderRadius:"4px",fontFamily:"monospace",wordBreak:"break-all"},children:c})},as=({media:a})=>{let{t:b}=(0,ag.s9)();return(0,d.jsx)(h.default,{sx:{display:"flex",flexDirection:"column",gap:1,mt:1},children:a.map((a,c)=>{let e=an(a),f=a.resourceUri??a.url??`${a.type}-${c}`;return e?"image"===a.type?(0,d.jsx)(h.default,{component:"img",src:e,alt:a.name??b("chat.messages.generatedImage",{number:c+1}),sx:{maxWidth:"100%",height:"auto",borderRadius:1}},f):"audio"===a.type?(0,d.jsxs)(h.default,{children:[(0,d.jsx)(h.default,{component:"audio",controls:!0,src:e,sx:{width:"100%"}}),a.transcript&&(0,d.jsx)(g.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:.5},children:a.transcript})]},f):"video"===a.type?(0,d.jsx)(h.default,{component:"video",controls:!0,src:e,sx:{maxWidth:"100%",maxHeight:560,borderRadius:1}},f):(0,d.jsx)(i.A,{component:"a",href:e,download:a.name||!0,target:"_blank",rel:"noopener noreferrer",variant:"outlined",size:"small",startIcon:(0,d.jsx)(M.A,{}),sx:{alignSelf:"flex-start"},children:a.name??b("chat.messages.downloadFile")},f):null})})},at=({content:a,showRaw:b})=>b?(0,d.jsx)(h.default,{component:"pre",sx:{whiteSpace:"pre-wrap",wordBreak:"break-all",fontSize:"0.8rem",p:1,borderRadius:1,border:1,borderColor:a=>a.palette.divider,bgcolor:"action.hover",color:a=>a.palette.text.primary,overflow:"auto",maxHeight:"300px"},children:"string"==typeof a?a:"[Invalid tool content]"}):"string"!=typeof a?(0,d.jsx)(g.A,{variant:"body2",fontStyle:"italic",color:"text.secondary",children:"[Invalid tool content]"}):(0,d.jsx)(h.default,{sx:{width:"100%",minWidth:0},children:(()=>{try{let b=JSON.parse(a);if(b&&Array.isArray(b.content))return(0,d.jsx)(h.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:b.content.map((a,b)=>"text"===a.type?(0,d.jsx)(H.oz,{remarkPlugins:[I.A],children:a.text},b):"image"===a.type&&a.data&&a.mimeType?(0,d.jsx)("img",{src:`data:${a.mimeType};base64,${a.data}`,alt:`Tool Result Image ${b+1}`,style:{maxWidth:"100%",height:"auto",borderRadius:"4px",marginTop:"8px"}},b):"audio"===a.type&&a.data&&a.mimeType?(0,d.jsx)("audio",{controls:!0,src:`data:${a.mimeType};base64,${a.data}`,style:{width:"100%",marginTop:"8px"},children:"Your browser does not support the audio element."},b):"video"===a.type&&a.data&&a.mimeType?(0,d.jsx)("video",{controls:!0,src:`data:${a.mimeType};base64,${a.data}`,style:{maxWidth:"100%",maxHeight:"560px",marginTop:"8px"},children:"Your browser does not support the video element."},b):(0,d.jsx)(h.default,{component:"pre",sx:{whiteSpace:"pre-wrap",wordBreak:"break-all",fontSize:"0.8rem",p:1,borderRadius:1,border:1,borderColor:a=>a.palette.divider,bgcolor:"action.hover",color:a=>a.palette.text.primary,overflow:"auto",mt:1},children:`Unsupported content type: ${a.type}
|
|
2
2
|
${JSON.stringify(a,null,2)}`},b))});return(0,d.jsx)(H.oz,{remarkPlugins:[I.A],children:`\`\`\`json
|
|
3
3
|
${JSON.stringify(b,null,2)}
|
|
4
|
-
\`\`\``})}catch(b){return(0,d.jsx)(H.oz,{remarkPlugins:[I.A],children:a})}})()}),at=({pairs:a,messageId:b,conversationId:c,onAppMessage:p,onUpdateModelContext:q,onRegisterAppTeardown:r,onOpenInCanvas:s})=>{let[t,u]=(0,e.useState)(null),[v,w]=(0,e.useState)({}),x=(a,c)=>a.toolCall.id||`tc-${b}-${c}`;return(0,d.jsxs)(h.default,{sx:{mt:1,pt:1,borderTop:"1px solid",borderColor:"divider"},children:[(0,d.jsxs)(h.default,{sx:{display:"flex",alignItems:"center",color:"primary.main",mb:1},children:[(0,d.jsx)(P.A,{fontSize:"small",sx:{mr:1}}),(0,d.jsx)(g.A,{variant:"body2",children:1===a.length?"The agent used a tool":`The agent used ${a.length} tools`})]}),(0,d.jsx)(h.default,{sx:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:.5},children:a.map((a,b)=>{let c=x(a,b),e=function(a){if(!a)return"pending";if("string"==typeof a.content)try{let b=JSON.parse(a.content);if(b&&(!0===b.isError||null!=b.error))return"error"}catch{}return"done"}(a.result),g=t===c;return(0,d.jsxs)(f().Fragment,{children:[b>0&&(0,d.jsx)(h.default,{sx:{width:14,height:"2px",bgcolor:"divider",flexShrink:0}}),(0,d.jsx)(k.A,{title:g?"Hide call & result":"Show call & result",children:(0,d.jsx)(l.A,{icon:function(a){return"pending"===a?(0,d.jsx)(j.default,{size:14,thickness:6}):"error"===a?(0,d.jsx)(S.A,{fontSize:"small"}):(0,d.jsx)(R.A,{fontSize:"small"})}(e),label:(0,ai.yo)(a.toolCall.function.name),size:"small",clickable:!0,variant:g?"filled":"outlined",color:"error"===e?"error":"pending"===e?"default":"primary",onClick:()=>u(g?null:c),sx:{maxWidth:"100%"}})})]},c)})}),a.map((a,b)=>{let e=x(a,b),f=a.toolCall.function.arguments;try{f=JSON.stringify(JSON.parse(a.toolCall.function.arguments),null,2)}catch(a){}let k=!!v[e],u=a.mcpDestination?()=>{let b={};try{let c=JSON.parse(a.toolCall.function.arguments);c&&"object"==typeof c&&!Array.isArray(c)&&(b=c)}catch{}let c=new URLSearchParams({server:a.mcpDestination.serverName,tool:a.mcpDestination.toolName,args:JSON.stringify(b)});window.location.assign(`/mcp?${c.toString()}`)}:void 0;return(0,d.jsx)(m.A,{in:t===e,children:(0,d.jsxs)(h.default,{sx:{mt:1,p:1,borderRadius:1,bgcolor:"rgba(0, 0, 0, 0.03)"},children:[(0,d.jsxs)(h.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,d.jsx)(P.A,{fontSize:"small",sx:{mr:.5,color:"primary.main"}}),(0,d.jsx)(g.A,{variant:"caption",sx:{fontWeight:"bold"},children:"Parameters"}),(0,d.jsx)(l.A,{label:`ID: ${a.toolCall.id?a.toolCall.id.substring(0,8):"N/A"}...`,size:"small",color:"default",variant:"outlined",sx:{ml:1,height:20,fontSize:"0.7rem"}})]}),(0,d.jsx)(h.default,{component:"pre",sx:{bgcolor:"action.hover",p:1,borderRadius:"4px",overflowX:"auto",fontFamily:"monospace",fontSize:"0.75rem",my:.5,maxHeight:"150px",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:f}),u&&(0,d.jsx)(i.A,{size:"small",variant:"outlined",startIcon:(0,d.jsx)(Y.A,{}),onClick:u,sx:{mt:.5},children:"Execute in Tool Tester"}),(0,d.jsxs)(h.default,{sx:{display:"flex",alignItems:"center",mt:1,mb:.5},children:[(0,d.jsx)(Q.A,{fontSize:"small",sx:{mr:.5,color:"text.secondary"}}),(0,d.jsx)(g.A,{variant:"caption",sx:{fontWeight:"bold"},children:"Result"}),a.result&&(0,d.jsx)(n.A,{control:(0,d.jsx)(o.A,{size:"small",checked:k,onChange:a=>w(b=>({...b,[e]:a.target.checked}))}),label:"Raw",sx:{ml:"auto",mr:0,"& .MuiTypography-root":{fontSize:"0.75rem"}}})]}),a.result?(0,d.jsx)(as,{content:a.result.content,showRaw:k}):(0,d.jsxs)(g.A,{variant:"body2",fontStyle:"italic",color:"text.secondary",sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(j.default,{size:14,thickness:6})," Waiting for the tool to respond…"]}),a.result?.ui?.uri&&a.result.ui.serverName&&(0,d.jsx)(al.Ay,{conversationId:c,serverName:a.result.ui.serverName,uri:a.result.ui.uri,toolName:a.result.ui.toolName??a.toolCall.function.name,toolArgs:a.toolCall.function.arguments,toolResultContent:"string"==typeof a.result.content?a.result.content:void 0,toolCancelledReason:a.result.ui.cancelledReason,toolIsError:a.result.ui.isError,onAppMessage:p,onUpdateModelContext:q,onRegisterTeardown:r,teardownRegistrationKey:`${a.result.ui.serverName}::${a.result.ui.uri}::${e}`,onRequestDock:s?()=>s({serverName:a.result.ui.serverName,uri:a.result.ui.uri,toolName:a.result.ui.toolName??a.toolCall.function.name,toolArgs:a.toolCall.function.arguments,resultContent:"string"==typeof a.result.content?a.result.content:void 0,cancelledReason:a.result.ui.cancelledReason,isError:a.result.ui.isError}):void 0})]})},e)})]})},au=f().memo(function({message:a,conversationId:b,nodeLabel:c,availableNodes:e,showRaw:f,toolCallPairs:i,onAppMessage:j,onUpdateModelContext:m,onRegisterAppTeardown:u,onOpenInCanvas:v,hoistedHandoffs:w,isBeingEdited:x,onMenuOpen:y,onToggleRaw:z}){var A;let B,C=a.depth??0;return(0,d.jsxs)(h.default,{sx:{display:"flex",flexDirection:"column",alignItems:"user"===a.role?"flex-end":"flex-start",opacity:a.disabled?.5:1,...C>0&&{pl:3*C,borderLeft:"2px solid",borderColor:"divider",ml:1}},children:[(0,d.jsxs)(h.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,d.jsxs)(g.A,{variant:"caption",color:"text.secondary",sx:{mr:1},children:["user"===a.role?"You":"assistant"===a.role?"Agent":"tool"===a.role?"Tool":"System"," • ","number"!=typeof(A=a.timestamp)||isNaN(A)?(an.warn("formatTime received invalid timestamp:",A),"Invalid Date"):new Date(A).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"})]}),a.processNodeId&&(0,d.jsx)(k.A,{title:`${c?`${c} — `:""}Process Node ID: ${a.processNodeId}`,children:(0,d.jsx)(l.A,{label:`Node: ${c||`${a.processNodeId.substring(0,6)}...`}`,size:"small",color:"primary",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),C>0&&(0,d.jsx)(k.A,{title:`Nested subflow step (depth ${C})`,children:(0,d.jsx)(l.A,{label:"Subflow step",size:"small",color:"secondary",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),a.disabled&&(0,d.jsx)(l.A,{label:"Disabled",size:"small",color:"default",variant:"outlined",sx:{height:20,fontSize:"0.7rem"}}),a.usage&&(0,d.jsx)(k.A,{title:`${a.usage.promptTokens.toLocaleString()} prompt + ${a.usage.completionTokens.toLocaleString()} completion tokens (provider-reported)`,children:(0,d.jsx)(l.A,{label:`${(B=a.usage.totalTokens)>=1e3?`${(B/1e3).toFixed(B>=1e5?0:1)}k`:`${B}`} tok`,size:"small",color:"default",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),(0,d.jsx)(p.A,{size:"small",onClick:b=>y(b,a.id),sx:{ml:1},children:(0,d.jsx)(J.A,{fontSize:"small"})})]}),(0,d.jsxs)(q.A,{elevation:1,sx:{p:2,maxWidth:"75vw",borderRadius:2,bgcolor:"user"===a.role?"primary.light":"assistant"===a.role||"tool"===a.role?"background.paper":"info.light",color:"user"===a.role?"primary.contrastText":"assistant"===a.role||"tool"===a.role?"text.primary":"info.contrastText",position:"relative",borderLeft:"tool"===a.role?"4px solid":"none",borderColor:"tool"===a.role?"grey.400":"transparent",opacity:x?.55:1,outline:x?"2px dashed":"none",outlineColor:"warning.main",overflowWrap:"break-word",wordBreak:"break-word",overflow:"hidden"},children:[(0,d.jsxs)(d.Fragment,{children:["tool"!==a.role&&"string"==typeof a.content&&(0,d.jsx)(H.oz,{remarkPlugins:[I.A],components:aq,children:a.content}),"tool"!==a.role&&Array.isArray(a.content)&&(0,d.jsx)(h.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:a.content.map((a,b)=>a?.type==="text"?(0,d.jsx)(H.oz,{remarkPlugins:[I.A],children:a.text},b):a?.type==="image_url"&&a.image_url?.url?(0,d.jsx)("img",{src:a.image_url.url,alt:`Image ${b+1}`,style:{maxWidth:"100%",height:"auto",borderRadius:"4px"}},b):null)}),"tool"!==a.role&&a.media&&a.media.length>0&&(0,d.jsx)(ar,{media:a.media.filter(b=>"image"!==b.type||!Array.isArray(a.content)||!a.content.some(a=>a?.type==="image_url"&&a.image_url?.url===am(b)))}),"tool"!==a.role&&"string"!=typeof a.content&&!Array.isArray(a.content)&&!ao(a)&&!a.media?.length&&(0,d.jsx)(g.A,{variant:"body2",fontStyle:"italic",color:"text.secondary",children:"[No text content]"})]}),(()=>{let b=[...ao(a)?a.tool_calls.filter(a=>{var b;return!!(b=a.function.name)&&(b.startsWith(aj.n9)||"handoff"===b)}):[],...w??[]];return(0,d.jsx)(h.default,{sx:{mt:1,display:"flex",flexWrap:"wrap",gap:.5},children:b.map((b,c)=>(0,d.jsx)(l.A,{size:"small",variant:"outlined",color:"secondary",icon:(0,d.jsx)(W.A,{fontSize:"small"}),label:`Handoff → ${function(a,b){let c=a.startsWith(aj.n9)?a.slice(aj.n9.length):a,d=c.replace(/_\d+$/,""),e=b.find(a=>{let b=(0,aj.RN)(a.label);return b===c||b===d});return e?.label?e.label:d.split("_").filter(Boolean).map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(" ")||"target node"}(b.function.name,e)}`,sx:{maxWidth:"100%",fontWeight:500}},b.id||`handoff-${a.id}-${c}`))})})(),i&&i.length>0&&(0,d.jsx)(at,{pairs:i,messageId:a.id,conversationId:b,onAppMessage:j,onUpdateModelContext:m,onRegisterAppTeardown:u,onOpenInCanvas:v}),"tool"===a.role&&a.tool_call_id&&!ap(a)&&(0,d.jsxs)(h.default,{children:[(0,d.jsxs)(g.A,{variant:"body2",sx:{display:"flex",alignItems:"center",color:"text.secondary",mb:1},children:[(0,d.jsx)(Q.A,{fontSize:"small",sx:{mr:1}}),"The tool responded to the agent"]}),(0,d.jsxs)(r.A,{defaultExpanded:!1,sx:{mb:.5,"&:before":{display:"none"},boxShadow:"none",bgcolor:"rgba(0, 0, 0, 0.02)"},children:[(0,d.jsx)(s.A,{expandIcon:(0,d.jsx)(O.A,{}),children:(0,d.jsxs)(h.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(Q.A,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,d.jsx)(g.A,{variant:"subtitle2",children:"Tool Result"}),(0,d.jsx)(l.A,{label:`ID: ${a.tool_call_id.substring(0,8)}...`,size:"small",color:"default",variant:"outlined",sx:{ml:1,height:20,fontSize:"0.7rem"}}),(0,d.jsx)(n.A,{control:(0,d.jsx)(o.A,{size:"small",checked:f,onChange:b=>z(a.id,b.target.checked),onClick:a=>a.stopPropagation()}),label:"Raw",sx:{mr:1,ml:"auto","& .MuiTypography-root":{fontSize:"0.75rem"}},onClick:a=>a.stopPropagation()})]})}),(0,d.jsx)(t.A,{sx:{pt:0,pb:1,overflow:"hidden"},children:(0,d.jsx)(as,{content:a.content,showRaw:f})})]})]}),a.attachments&&a.attachments.length>0&&(0,d.jsxs)(h.default,{sx:{mt:1,pt:1,borderTop:"1px solid",borderColor:"divider"},children:[(0,d.jsx)(g.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:.5},children:"Attachments:"}),a.attachments.map(a=>"image"===a.type?(0,d.jsx)(h.default,{sx:{mb:.5},children:(0,d.jsx)("img",{src:a.content,alt:a.originalName||"image attachment",style:{maxWidth:"100%",height:"auto",borderRadius:"4px"}})},a.id):(0,d.jsxs)(h.default,{sx:{display:"flex",alignItems:"center",p:1,borderRadius:1,bgcolor:"rgba(0, 0, 0, 0.04)",mb:.5},children:["document"===a.type?(0,d.jsx)(M.A,{fontSize:"small",sx:{mr:1}}):(0,d.jsx)(N.A,{fontSize:"small",sx:{mr:1}}),(0,d.jsx)(g.A,{variant:"caption",sx:{wordBreak:"break-all"},children:a.originalName||`${a.type} attachment`})]},a.id))]})]})]})}),av=({elicitation:a,onSubmit:b,onCancel:c})=>{let{elicitationId:f,message:j,requestedSchema:k}=a,l=k?.properties??{},m=Object.keys(l),[o,p]=(0,e.useState)(()=>{let a={};for(let b of m){let c=l[b];void 0!==c.default?a[b]=c.default:"boolean"===c.type?a[b]=!1:"number"===c.type||"integer"===c.type?a[b]=0:a[b]=""}return a}),r=(a,b)=>{p(c=>({...c,[a]:b}))};return(0,d.jsxs)(q.A,{elevation:2,sx:{p:2,mt:2,bgcolor:"info.light",border:"1px solid",borderColor:"info.main",borderRadius:2},children:[(0,d.jsx)(g.A,{variant:"h6",sx:{mb:1},children:"Server needs more information"}),(0,d.jsx)(g.A,{variant:"body2",sx:{mb:2},children:j}),(0,d.jsx)(h.default,{sx:{display:"flex",flexDirection:"column",gap:1.5},children:m.map(a=>{let b=l[a],c=b.title||a,e=o[a];if("boolean"===b.type)return(0,d.jsx)(n.A,{control:(0,d.jsx)(u.A,{checked:!!e,onChange:b=>r(a,b.target.checked),size:"small"}),label:c},a);if(b.enum&&b.enum.length>0)return(0,d.jsxs)(v.A,{size:"small",sx:{minWidth:200},children:[(0,d.jsx)(w.A,{children:c}),(0,d.jsx)(x.A,{label:c,value:String(e??""),onChange:b=>r(a,b.target.value),children:b.enum.map((a,c)=>(0,d.jsx)(y.A,{value:a,children:b.enumNames?.[c]||a},a))}),b.description&&(0,d.jsx)(z.A,{children:b.description})]},a);let f="number"===b.type||"integer"===b.type;return(0,d.jsx)(A.A,{size:"small",label:c,type:f?"number":"text",value:String(e??""),helperText:b.description,inputProps:{minLength:b.minLength,maxLength:b.maxLength,min:b.minimum,max:b.maximum},onChange:b=>{if(f){let c=parseFloat(b.target.value);r(a,isNaN(c)?0:c)}else r(a,b.target.value)}},a)})}),(0,d.jsxs)(h.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:2},children:[(0,d.jsx)(i.A,{variant:"outlined",color:"inherit",size:"small",onClick:()=>{c&&c(f)},disabled:!c,children:"Cancel"}),(0,d.jsx)(i.A,{variant:"contained",color:"primary",size:"small",onClick:()=>{b&&b(f,o)},disabled:!b,children:"Submit"})]})]})},aw="Type your own answer",ax=({question:a,onAnswer:b,onDecline:c})=>{let{questionId:f,questions:j}=a,[k,l]=(0,e.useState)(()=>j.map(()=>[])),[m,o]=(0,e.useState)(()=>j.map(()=>"")),p=()=>j.map((a,b)=>(k[b]??[]).map(a=>a===aw?m[b].trim():a).filter(a=>a.length>0)),r=j.every((a,b)=>(p()[b]??[]).length>0);return(0,d.jsxs)(q.A,{elevation:2,sx:{p:2,mt:2,bgcolor:"info.light",border:"1px solid",borderColor:"info.main",borderRadius:2},children:[(0,d.jsx)(g.A,{variant:"h6",sx:{mb:1},children:"The agent is asking"}),(0,d.jsx)(h.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:j.map((a,b)=>(0,d.jsxs)(v.A,{component:"fieldset",sx:{display:"flex"},children:[(0,d.jsx)(B.A,{sx:{mb:.5},children:a.prompt}),a.multiple?(0,d.jsx)(h.default,{sx:{display:"flex",flexDirection:"column"},children:a.options.map(a=>(0,d.jsx)(n.A,{control:(0,d.jsx)(u.A,{size:"small",checked:(k[b]??[]).includes(a),onChange:()=>((a,b)=>{l(c=>{let d=c.map(a=>[...a]),e=d[a],f=e.indexOf(b);return f>=0?e.splice(f,1):e.push(b),d})})(b,a)}),label:a},a))}):(0,d.jsx)(C.A,{value:(k[b]??[])[0]??"",onChange:a=>{var c;return c=a.target.value,void l(a=>{let d=a.map(a=>[...a]);return d[b]=[c],d})},children:a.options.map(a=>(0,d.jsx)(n.A,{value:a,control:(0,d.jsx)(D.A,{size:"small"}),label:a},a))}),(k[b]??[]).includes(aw)&&(0,d.jsx)(A.A,{size:"small",sx:{mt:1},placeholder:"Your answer…",value:m[b],onChange:a=>o(c=>{let d=[...c];return d[b]=a.target.value,d})})]},b))}),(0,d.jsxs)(h.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:2},children:[(0,d.jsx)(i.A,{variant:"outlined",color:"inherit",size:"small",onClick:()=>{c&&c(f)},disabled:!c,children:"Decline"}),(0,d.jsx)(i.A,{variant:"contained",color:"primary",size:"small",onClick:()=>{b&&b(f,p())},disabled:!b||!r,children:"Answer"})]})]})},ay=({messages:a,pendingToolCalls:b,pendingElicitation:c,availableNodes:k=[],conversationId:m,editingMessageId:n,onToggleDisabled:o,onSplitConversation:p,onRevertToHere:u,onBeginEditMessage:v,onApproveToolCall:w,onRejectToolCall:x,onSubmitElicitation:z,onCancelElicitation:B,pendingQuestion:C,onAnswerQuestion:D,onDeclineQuestion:H,onAppMessage:I,onUpdateModelContext:J,onRegisterAppTeardown:M,onOpenInCanvas:N,queuedMessages:Q=[],queueHoldReason:R=null})=>{let[S,W]=(0,e.useState)({}),[Y,Z]=(0,e.useState)(50);(0,e.useEffect)(()=>{Z(50)},[m]);let $=Math.max(0,(Array.isArray(a)?a.length:0)-Y),_=(0,e.useMemo)(()=>Array.isArray(a)?$>0?a.slice($):a:[],[a,$]),{pairsByAnchorId:aa,handoffsByAnchorId:ab,consumedToolCallIds:ac,groups:ad}=(0,e.useMemo)(()=>(function(a){let b=new Map,c=new Map,d=new Set,e=new Set,f=new Map,g=[];if(!Array.isArray(a))return{pairsByAnchorId:b,handoffsByAnchorId:c,hoistedAssistantIds:d,consumedToolCallIds:e,groups:g};let h=new Map;for(let b of a)"tool"===b.role&&"string"==typeof b.tool_call_id&&b.tool_call_id&&!h.has(b.tool_call_id)&&h.set(b.tool_call_id,b);let i=a=>{let d=f.get(a);return d||(d={anchorId:a,memberIds:[a],hoistedIds:[]},f.set(a,d),g.push(d),b.set(a,[]),c.set(a,[])),d},j=null;for(let f of a){if("user"===f.role||"system"===f.role){j=null;continue}if("assistant"!==f.role)continue;let a=Array.isArray(f.tool_calls)?f.tool_calls:[],g=[],k=[];for(let b of a){if("function"!==b.type)continue;if(ak(b.function?.name)){k.push(b);continue}let a=b.id,c=a?h.get(a):void 0;a&&e.add(a),g.push({toolCall:b,result:c,mcpDestination:a?f.mcpToolCalls?.[a]:void 0})}let l=function(a){let b=a.content;return"string"==typeof b?b.trim().length>0:!!Array.isArray(b)&&b.some(a=>!!a&&"object"==typeof a&&("text"===a.type?"string"==typeof a.text&&a.text.trim().length>0:"image_url"===a.type?!!a.image_url?.url:"input_audio"===a.type&&!!a.input_audio?.data))}(f),m=g.length>0||k.length>0;if(l){j=f.id,m&&(i(f.id),b.get(f.id).push(...g),c.get(f.id).push(...k));continue}if(m)if(j){let a=i(j);b.get(j).push(...g),c.get(j).push(...k),a.memberIds.push(f.id),a.hoistedIds.push(f.id),d.add(f.id)}else j=f.id,i(f.id),b.get(f.id).push(...g),c.get(f.id).push(...k)}return{pairsByAnchorId:b,handoffsByAnchorId:c,hoistedAssistantIds:d,consumedToolCallIds:e,groups:g}})(a),[a]),ae=(0,e.useMemo)(()=>(function(a){let b=new Set;if(!Array.isArray(a))return b;for(let c of a){if("assistant"!==c.role)continue;let a=c.tool_calls;if(Array.isArray(a))for(let c of a)"function"===c.type&&ak(c.function?.name)&&"string"==typeof c.id&&c.id&&b.add(c.id)}return b})(a),[a]),af=(0,e.useMemo)(()=>new Set(_.map(a=>a.id)),[_]),{renderPairsById:aj,renderHandoffsById:al,suppressedIds:am}=(0,e.useMemo)(()=>{let a=new Map,b=new Map,c=new Set;for(let d of ad){let e=aa.get(d.anchorId)??[],f=ab.get(d.anchorId)??[],g=d.memberIds.find(a=>af.has(a))??d.anchorId;for(let h of(e.length>0&&a.set(g,e),f.length>0&&b.set(g,f),d.hoistedIds))h!==g&&c.add(h)}return{renderPairsById:a,renderHandoffsById:b,suppressedIds:c}},[ad,aa,ab,af]),[ao,aq]=f().useState(null),[ar,as]=f().useState(null),[at,aw]=f().useState(null),[ay,az]=f().useState({}),aA=(0,e.useCallback)((a,b)=>{an.debug(`handleMenuOpen called with messageId: ${b}`),aq(a.currentTarget),as(b)},[]),aB=(0,e.useCallback)((a,b)=>{az(c=>({...c,[a]:b}))},[]),aC=()=>{aq(null),as(null)},aD=()=>{ar&&(v?.(ar),aC())},aE=(0,e.useMemo)(()=>{let a=new Map;for(let b of k)a.set(b.id,b.label);return a},[k]),aF=(0,e.useMemo)(()=>ar&&a.find(a=>a.id===ar)||null,[ar,a]);return(0,d.jsxs)(h.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:[$>0&&(0,d.jsx)(h.default,{sx:{display:"flex",justifyContent:"center"},children:(0,d.jsxs)(i.A,{size:"small",variant:"outlined",onClick:()=>Z(a=>a+200),children:["Show earlier messages (",$," more)"]})}),_.map((a,b)=>ap(a)||"tool"===a.role&&"string"==typeof a.tool_call_id&&ae.has(a.tool_call_id)||"tool"===a.role&&"string"==typeof a.tool_call_id&&ac.has(a.tool_call_id)||am.has(a.id)?null:(0,d.jsx)(au,{message:a,conversationId:m,nodeLabel:a.processNodeId?aE.get(a.processNodeId):void 0,availableNodes:k,showRaw:!!ay[a.id],toolCallPairs:aj.get(a.id),onAppMessage:I,onUpdateModelContext:J,onRegisterAppTeardown:M,onOpenInCanvas:N,hoistedHandoffs:al.get(a.id),isBeingEdited:!!n&&a.id===n,onMenuOpen:aA,onToggleRaw:aB},a.id||`msg-${$+b}`)),Q.map(a=>(0,d.jsx)(h.default,{"data-testid":"queued-bubble",sx:{display:"flex",justifyContent:"flex-end",opacity:.6},children:(0,d.jsxs)(h.default,{sx:{maxWidth:"70%",bgcolor:"primary.light",color:"primary.contrastText",borderRadius:2,px:2,py:1,display:"flex",flexDirection:"column",gap:.5},children:[(0,d.jsx)(g.A,{variant:"body2",sx:{whiteSpace:"pre-wrap",wordBreak:"break-word"},children:a.content||(a.attachments.length>0?`${a.attachments.length} attachment(s)`:"")}),(0,d.jsxs)(h.default,{sx:{display:"flex",alignItems:"center",gap:.5,justifyContent:"flex-end"},children:[!R&&(0,d.jsx)(j.default,{size:10,color:"inherit"}),(0,d.jsx)(g.A,{variant:"caption",sx:{opacity:.85},children:R??"Queued"})]})]})},a.id)),(0,d.jsxs)(E.A,{anchorEl:ao,open:!!ao,onClose:aC,children:[aF&&(()=>{an.debug("Entering menu item rendering logic",{activeMessageId:ar}),an.debug("Active message object for menu:",aF),an.debug("Active message role for menu:",aF?.role);try{if("user"===aF.role&&"string"==typeof aF.content&&v)return(0,d.jsxs)(y.A,{onClick:aD,children:[(0,d.jsx)(F.A,{children:(0,d.jsx)(T.A,{fontSize:"small"})}),(0,d.jsx)(G.A,{children:"Edit Message"})]});return null}catch(a){return an.error("Error rendering Edit Message menu item",{error:a}),null}})(),(0,d.jsxs)(y.A,{onClick:()=>{ar&&(o(ar),aC())},children:[(0,d.jsx)(F.A,{children:(0,d.jsx)(K.A,{fontSize:"small"})}),(0,d.jsx)(G.A,{children:aF?.disabled?"Enable Message":"Disable Message"})]}),(0,d.jsxs)(y.A,{onClick:()=>{ar&&(p(ar),aC())},children:[(0,d.jsx)(F.A,{children:(0,d.jsx)(L.A,{fontSize:"small"})}),(0,d.jsx)(G.A,{children:"Split Conversation Here"})]}),ah.G.ENABLE_REVERT_TO_HERE&&aF?.changedFiles?.length?(0,d.jsxs)(y.A,{onClick:()=>{ar&&(aw(ar),aC())},children:[(0,d.jsx)(F.A,{children:(0,d.jsx)(X.A,{fontSize:"small"})}),(0,d.jsx)(G.A,{children:"Revert to here"})]}):null]}),ah.G.ENABLE_REVERT_TO_HERE&&m&&(0,d.jsx)(ag,{open:!!at,conversationId:m,messageId:at,onClose:()=>aw(null),onReverted:u}),c&&(0,d.jsx)(av,{elicitation:c,onSubmit:z,onCancel:B}),C&&(0,d.jsx)(ax,{question:C,onAnswer:D,onDecline:H}),b&&b.length>0&&(0,d.jsxs)(q.A,{elevation:2,sx:{p:2,mt:2,bgcolor:"warning.light",border:"1px solid",borderColor:"warning.main",borderRadius:2},children:[(0,d.jsxs)(g.A,{variant:"h6",sx:{mb:1,display:"flex",alignItems:"center"},children:[(0,d.jsx)(P.A,{sx:{mr:1}})," Tool Approval Required"]}),(0,d.jsx)(g.A,{variant:"body2",sx:{mb:2},children:"The agent wants to use the following tool(s). Please approve or reject each request."}),b.map((a,b)=>{let c=(0,ai.yo)(a.function.name),e=a.function.arguments;try{let b=JSON.parse(a.function.arguments);e=JSON.stringify(b,null,2)}catch(a){}return(0,d.jsxs)(r.A,{defaultExpanded:!0,sx:{mb:1,"&:before":{display:"none"},boxShadow:1},children:[(0,d.jsx)(s.A,{expandIcon:(0,d.jsx)(O.A,{}),children:(0,d.jsxs)(h.default,{sx:{display:"flex",alignItems:"center",width:"100%"},children:[(0,d.jsx)(P.A,{fontSize:"small",sx:{mr:1,color:"primary.main"}}),(0,d.jsx)(g.A,{variant:"subtitle2",sx:{fontWeight:"bold",flexGrow:1},children:c}),(0,d.jsx)(l.A,{label:`ID: ${a.id?a.id.substring(0,8):"N/A"}...`,size:"small",variant:"outlined",sx:{ml:1,height:20,fontSize:"0.7rem"}})]})}),(0,d.jsxs)(t.A,{sx:{pt:0},children:[(0,d.jsx)(h.default,{component:"pre",sx:{bgcolor:"action.hover",p:1,borderRadius:"4px",overflowX:"auto",fontFamily:"monospace",fontSize:"0.75rem",my:.5,maxHeight:"150px",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:e}),(0,d.jsx)(A.A,{label:"Rejection reason (optional)",placeholder:"e.g. write to dist/ instead",value:S[a.id]??"",onChange:b=>W(c=>({...c,[a.id]:b.target.value})),multiline:!0,minRows:1,maxRows:4,fullWidth:!0,size:"small",sx:{mt:1,mb:1}}),(0,d.jsxs)(h.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:1,flexWrap:"wrap"},children:[(0,d.jsx)(i.A,{variant:"outlined",color:"error",size:"small",startIcon:(0,d.jsx)(V.A,{}),onClick:()=>x&&x(a.id,!1,S[a.id]?.trim()||void 0),disabled:!x,children:"Reject"}),(0,d.jsx)(i.A,{variant:"outlined",color:"error",size:"small",onClick:()=>x&&x(a.id,!0),disabled:!x,title:"Always deny this tool — saves a rule so future calls are auto-denied",children:"Always Deny"}),(0,d.jsx)(i.A,{variant:"outlined",color:"success",size:"small",startIcon:(0,d.jsx)(U.A,{}),onClick:()=>w&&w(a.id,!0),disabled:!w,title:"Always allow this tool — saves a rule so future calls are auto-approved",children:"Always Allow"}),(0,d.jsx)(i.A,{variant:"contained",color:"success",size:"small",startIcon:(0,d.jsx)(U.A,{}),onClick:()=>w&&w(a.id),disabled:!w,children:"Approve"})]})]})]},a.id||`ptc-${b}`)})]})]})}},63787:(a,b,c)=>{c.d(b,{Ay:()=>$,nd:()=>W,c_:()=>V});var d=c(21124),e=c(38301),f=c(1509),g=c(21903),h=c(54573),i=c(79515),j=c(37674),k=c(67101),l=c(81637),m=c(24077),n=c(95791),o=c(46973),p=c(60839),q=c(37489),r=c(18168),s=c(2117),t=c(63281),u=c(63654),v=c(11361),w=c(94367),x=c(50553),y=c(84233),z=c(91059),A=c(7118),B=c(91034),C=c(38941),D=c(95345),E=c(12033),F=c(1010),G=c(88970);let H=({open:a,position:b,onClose:c,onDelete:e,onEditProperties:f,onConvertToSubflow:g,onToggleBidirectional:h,onCopy:i,onPaste:j,canPaste:k,canCopy:l,nodeId:m,selection:n,edgeId:o})=>{let p=()=>{f&&f(),c()},q=[];return m&&!n&&(q.push((0,d.jsxs)(w.A,{onClick:p,children:[(0,d.jsx)(x.A,{children:(0,d.jsx)(E.A,{fontSize:"small"})}),(0,d.jsx)(y.A,{children:"Edit Properties"})]},"edit")),g&&q.push((0,d.jsxs)(w.A,{onClick:()=>{g&&g(),c()},children:[(0,d.jsx)(x.A,{children:(0,d.jsx)(G.A,{fontSize:"small"})}),(0,d.jsx)(y.A,{children:"Convert to subflow"})]},"convert-to-subflow"))),o&&!m&&!n&&(f&&q.push((0,d.jsxs)(w.A,{onClick:p,children:[(0,d.jsx)(x.A,{children:(0,d.jsx)(E.A,{fontSize:"small"})}),(0,d.jsx)(y.A,{children:"Edit Properties"})]},"edge-edit")),h&&q.push((0,d.jsxs)(w.A,{onClick:()=>{h&&h(),c()},children:[(0,d.jsx)(x.A,{children:(0,d.jsx)(F.A,{fontSize:"small"})}),(0,d.jsx)(y.A,{children:"Toggle Bidirectional"})]},"edge-bidirectional"))),i&&(m||n)&&q.push((0,d.jsxs)(w.A,{onClick:()=>{i&&i(),c()},disabled:!l,children:[(0,d.jsx)(x.A,{children:(0,d.jsx)(C.A,{fontSize:"small"})}),(0,d.jsx)(y.A,{children:"Copy"})]},"copy")),j&&q.push((0,d.jsxs)(w.A,{onClick:()=>{j&&j(),c()},disabled:!k,children:[(0,d.jsx)(x.A,{children:(0,d.jsx)(D.A,{fontSize:"small"})}),(0,d.jsx)(y.A,{children:"Paste"})]},"paste")),(m||o||n)&&q.push((0,d.jsx)(z.A,{},"delete-divider"),(0,d.jsxs)(w.A,{onClick:()=>{e(),c()},sx:{color:"error.main"},children:[(0,d.jsx)(x.A,{sx:{color:"error.main"},children:(0,d.jsx)(B.A,{fontSize:"small"})}),(0,d.jsx)(y.A,{children:"Delete"})]},"delete")),(0,d.jsx)(A.A,{open:a,onClose:c,anchorReference:"anchorPosition",anchorPosition:null!==b.y&&null!==b.x?{top:b.y,left:b.x}:void 0,children:q})};var I=c(31164),J=c(97004);function K(a,b){return b.find(b=>b.id===a)}var L=c(42819);let M=(0,L.h)("components/flow/FlowBuilder/Canvas/hooks/useCanvasEvents.ts");var N=c(90430),O=c(36627);let P=({showMiniMap:a=!0,showControls:b=!0,showBackground:c=!0})=>{let e=(0,p.A)(),f="dark"===e.palette.mode;return(0,d.jsxs)(d.Fragment,{children:[c&&(0,d.jsx)(n.VS,{color:f?e.palette.text.disabled:e.palette.divider,gap:20,size:1}),b&&(0,d.jsx)(n.H2,{}),a&&(0,d.jsx)(n.of,{nodeColor:f?e.palette.primary.dark:e.palette.primary.light,maskColor:f?"rgba(0, 0, 0, 0.4)":"rgba(255, 255, 255, 0.6)"})]})};var Q=c(5240);let R=(0,L.h)("components/flow/FlowBuilder/Canvas/Canvas.tsx"),S="flujo:flowClipboard",T=null;function U(a){T=a;try{localStorage.setItem(S,JSON.stringify(a))}catch(a){R.warn("Could not persist flow clipboard to localStorage",a)}}let V={start:v.vm,process:v.Uw,finish:v.IK,mcp:v.v2,subflow:v.lA,resource:v.z9,signal:v.z3,trigger:v.pF},W={custom:I.jY,mcpEdge:I.oY,resourceEdge:I.sZ},X=({open:a,position:b,anchorPosition:c,onClose:m,onSelectNodeType:n,sourceNodeType:o,sourceHandleId:r})=>{let s=(0,p.A)(),[t,u]=(0,e.useState)("");(0,e.useEffect)(()=>{a&&u("")},[a]);let w=(0,O._w)(o,r);R.debug(`NodeSelectionModal: Source node type: ${o}, Source handle ID: ${r}`),R.debug(`NodeSelectionModal: Valid node types: ${w.join(", ")}`);let x=[{type:"process",label:"Process Node",description:"Let a LLM do your work"},{type:"finish",label:"Finish Node",description:"End your flow here"},{type:"mcp",label:"MCP Node",description:"Add functionality"},{type:"subflow",label:"Subflow Node",description:"Run another flow"},{type:"resource",label:"Resource Node",description:"A data artifact steps read or write"},{type:"signal",label:"Signal Node",description:"Emit an event to trigger another flow"},{type:"trigger",label:"Trigger Node",description:"Schedule or event-trigger for this flow"}].filter(a=>w.includes(a.type)).filter(a=>{let b=t.trim().toLowerCase();return!b||`${a.label} ${a.description}`.toLowerCase().includes(b)});return a&&b?(0,d.jsx)(f.A,{children:(0,d.jsx)(g.x,{onClickAway:m,children:(0,d.jsxs)(h.A,{role:"dialog","aria-modal":"false","aria-labelledby":"node-selection-title",elevation:16,onKeyDown:a=>{"Escape"===a.key&&(a.preventDefault(),m())},sx:{position:"fixed",top:{xs:"auto",sm:c?`clamp(12px, ${c.y+10}px, calc(100dvh - 460px))`:"50%"},bottom:{xs:12,sm:"auto"},left:{xs:12,sm:c?`clamp(12px, ${c.x+10}px, calc(100vw - 392px))`:"50%"},right:{xs:12,sm:"auto"},transform:{xs:"none",sm:c?"none":"translate(-50%, -50%)"},zIndex:a=>a.zIndex.modal+1,width:{xs:"auto",sm:380},maxHeight:"min(70dvh, 520px)",overflow:"hidden",border:1,borderColor:"divider",borderRadius:3.5,bgcolor:"background.paper",boxShadow:"dark"===s.palette.mode?"0 28px 80px rgba(0,0,0,.55)":"0 28px 80px rgba(31,27,74,.22)",p:1.5},children:[(0,d.jsx)(i.A,{id:"node-selection-title",variant:"subtitle1",fontWeight:800,children:"Add the next step"}),(0,d.jsx)(i.A,{variant:"caption",color:"text.secondary",children:"It will be connected and selected automatically."}),(0,d.jsx)(j.A,{autoFocus:!0,fullWidth:!0,size:"small",value:t,onChange:a=>u(a.target.value),placeholder:"Search legal node types",inputProps:{"aria-label":"Search legal node types"},sx:{my:1.25},InputProps:{startAdornment:(0,d.jsx)(k.A,{position:"start",children:(0,d.jsx)(Q.A,{fontSize:"small"})})}}),(0,d.jsxs)(l.default,{display:"flex",flexDirection:"column",gap:.75,sx:{overflowY:"auto",maxHeight:360},children:[x.map(a=>(0,d.jsx)(h.A,{component:"button",type:"button",onClick:()=>n(a.type,b),sx:{appearance:"none",width:"100%",p:1.1,textAlign:"left",color:"text.primary",bgcolor:"transparent",borderRadius:2.5,border:1,borderColor:"divider",cursor:"pointer",transition:"border-color 160ms ease, background-color 160ms ease, transform 160ms ease","&:hover, &:focus-visible":{outline:"none",borderColor:"finish"===a.type?s.palette.success.main:"subflow"===a.type?s.palette.warning.main:"resource"===a.type?v.nH:s.palette.primary.main,bgcolor:(0,q.X4)(s.palette.primary.main,.06),transform:"translateX(2px)"}},children:(0,d.jsxs)(l.default,{display:"flex",alignItems:"center",gap:1.25,children:[(a=>{switch(a){case"process":default:return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:s.palette.primary.main,borderRadius:"50%"}});case"finish":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:s.palette.success.main,borderRadius:"50%"}});case"mcp":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:s.palette.info.main,borderRadius:"50%"}});case"subflow":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:s.palette.warning.main,borderRadius:"50%"}});case"resource":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:v.nH,borderRadius:"50%"}});case"signal":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:v.vp,borderRadius:"50%"}});case"trigger":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:v.$Q,borderRadius:"50%"}})}})(a.type),(0,d.jsxs)(l.default,{children:[(0,d.jsx)(i.A,{variant:"subtitle2",fontWeight:800,children:a.label}),(0,d.jsx)(i.A,{variant:"caption",color:"text.secondary",children:a.description})]})]})},a.type)),0===x.length&&(0,d.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{p:1},children:"No matching node types are valid for this connection."})]})]})})}):null},Y=(0,r.Ay)("div")(({theme:a})=>({flex:"1 1 0",height:"100%",minHeight:0,width:"100%",border:`1px solid ${a.palette.divider}`,borderRadius:"18px",overflow:"hidden",backgroundColor:a.palette.background.paper,backgroundImage:`
|
|
4
|
+
\`\`\``})}catch(b){return(0,d.jsx)(H.oz,{remarkPlugins:[I.A],children:a})}})()}),au=({pairs:a,messageId:b,conversationId:c,onAppMessage:p,onUpdateModelContext:q,onRegisterAppTeardown:r,onOpenInCanvas:s})=>{let{t,tp:u}=(0,ag.s9)(),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)({}),z=(a,c)=>a.toolCall.id||`tc-${b}-${c}`;return(0,d.jsxs)(h.default,{sx:{mt:1,pt:1,borderTop:"1px solid",borderColor:"divider"},children:[(0,d.jsxs)(h.default,{sx:{display:"flex",alignItems:"center",color:"primary.main",mb:1},children:[(0,d.jsx)(P.A,{fontSize:"small",sx:{mr:1}}),(0,d.jsx)(g.A,{variant:"body2",children:u("chat.messages.toolUsed",a.length)})]}),(0,d.jsx)(h.default,{sx:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:.5},children:a.map((a,b)=>{let c=z(a,b),e=function(a){if(!a)return"pending";if("string"==typeof a.content)try{let b=JSON.parse(a.content);if(b&&(!0===b.isError||null!=b.error))return"error"}catch{}return"done"}(a.result),g=v===c;return(0,d.jsxs)(f().Fragment,{children:[b>0&&(0,d.jsx)(h.default,{sx:{width:14,height:"2px",bgcolor:"divider",flexShrink:0}}),(0,d.jsx)(k.A,{title:g?t("chat.messages.hideTool"):t("chat.messages.showTool"),children:(0,d.jsx)(l.A,{icon:function(a){return"pending"===a?(0,d.jsx)(j.default,{size:14,thickness:6}):"error"===a?(0,d.jsx)(S.A,{fontSize:"small"}):(0,d.jsx)(R.A,{fontSize:"small"})}(e),label:(0,aj.yo)(a.toolCall.function.name),size:"small",clickable:!0,variant:g?"filled":"outlined",color:"error"===e?"error":"pending"===e?"default":"primary",onClick:()=>w(g?null:c),sx:{maxWidth:"100%"}})})]},c)})}),a.map((a,b)=>{let e=z(a,b),f=a.toolCall.function.arguments;try{f=JSON.stringify(JSON.parse(a.toolCall.function.arguments),null,2)}catch(a){}let k=!!x[e],u=a.mcpDestination?()=>{let b={};try{let c=JSON.parse(a.toolCall.function.arguments);c&&"object"==typeof c&&!Array.isArray(c)&&(b=c)}catch{}let c=new URLSearchParams({server:a.mcpDestination.serverName,tool:a.mcpDestination.toolName,args:JSON.stringify(b)});window.location.assign(`/mcp?${c.toString()}`)}:void 0;return(0,d.jsx)(m.A,{in:v===e,children:(0,d.jsxs)(h.default,{sx:{mt:1,p:1,borderRadius:1,bgcolor:"rgba(0, 0, 0, 0.03)"},children:[(0,d.jsxs)(h.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,d.jsx)(P.A,{fontSize:"small",sx:{mr:.5,color:"primary.main"}}),(0,d.jsx)(g.A,{variant:"caption",sx:{fontWeight:"bold"},children:t("chat.messages.parameters")}),(0,d.jsx)(l.A,{label:`ID: ${a.toolCall.id?a.toolCall.id.substring(0,8):"N/A"}...`,size:"small",color:"default",variant:"outlined",sx:{ml:1,height:20,fontSize:"0.7rem"}})]}),(0,d.jsx)(h.default,{component:"pre",sx:{bgcolor:"action.hover",p:1,borderRadius:"4px",overflowX:"auto",fontFamily:"monospace",fontSize:"0.75rem",my:.5,maxHeight:"150px",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:f}),u&&(0,d.jsx)(i.A,{size:"small",variant:"outlined",startIcon:(0,d.jsx)(Y.A,{}),onClick:u,sx:{mt:.5},children:t("chat.messages.toolTester")}),(0,d.jsxs)(h.default,{sx:{display:"flex",alignItems:"center",mt:1,mb:.5},children:[(0,d.jsx)(Q.A,{fontSize:"small",sx:{mr:.5,color:"text.secondary"}}),(0,d.jsx)(g.A,{variant:"caption",sx:{fontWeight:"bold"},children:t("chat.messages.result")}),a.result&&(0,d.jsx)(n.A,{control:(0,d.jsx)(o.A,{size:"small",checked:k,onChange:a=>y(b=>({...b,[e]:a.target.checked}))}),label:t("chat.messages.raw"),sx:{ml:"auto",mr:0,"& .MuiTypography-root":{fontSize:"0.75rem"}}})]}),a.result?(0,d.jsx)(at,{content:a.result.content,showRaw:k}):(0,d.jsxs)(g.A,{variant:"body2",fontStyle:"italic",color:"text.secondary",sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(j.default,{size:14,thickness:6})," ",t("chat.messages.waitingTool")]}),a.result?.ui?.uri&&a.result.ui.serverName&&(0,d.jsx)(am.Ay,{conversationId:c,serverName:a.result.ui.serverName,uri:a.result.ui.uri,toolName:a.result.ui.toolName??a.toolCall.function.name,toolArgs:a.toolCall.function.arguments,toolResultContent:"string"==typeof a.result.content?a.result.content:void 0,toolCancelledReason:a.result.ui.cancelledReason,toolIsError:a.result.ui.isError,onAppMessage:p,onUpdateModelContext:q,onRegisterTeardown:r,teardownRegistrationKey:`${a.result.ui.serverName}::${a.result.ui.uri}::${e}`,onRequestDock:s?()=>s({serverName:a.result.ui.serverName,uri:a.result.ui.uri,toolName:a.result.ui.toolName??a.toolCall.function.name,toolArgs:a.toolCall.function.arguments,resultContent:"string"==typeof a.result.content?a.result.content:void 0,cancelledReason:a.result.ui.cancelledReason,isError:a.result.ui.isError}):void 0})]})},e)})]})},av=f().memo(function({message:a,conversationId:b,nodeLabel:c,availableNodes:e,showRaw:f,toolCallPairs:i,onAppMessage:j,onUpdateModelContext:m,onRegisterAppTeardown:u,onOpenInCanvas:v,hoistedHandoffs:w,isBeingEdited:x,onMenuOpen:y,onToggleRaw:z}){let A,{t:B,formatDate:C,formatNumber:D}=(0,ag.s9)(),E=a.depth??0;return(0,d.jsxs)(h.default,{sx:{display:"flex",flexDirection:"column",alignItems:"user"===a.role?"flex-end":"flex-start",opacity:a.disabled?.5:1,...E>0&&{pl:3*E,borderLeft:"2px solid",borderColor:"divider",ml:1}},children:[(0,d.jsxs)(h.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,d.jsxs)(g.A,{variant:"caption",color:"text.secondary",sx:{mr:1},children:["user"===a.role?B("chat.messages.you"):"assistant"===a.role?B("chat.messages.agent"):"tool"===a.role?B("chat.messages.tool"):B("chat.messages.system")," • ","number"!=typeof a.timestamp||Number.isNaN(a.timestamp)?B("chat.messages.invalidDate"):C(a.timestamp,{hour:"2-digit",minute:"2-digit"})]}),a.processNodeId&&(0,d.jsx)(k.A,{title:`${c?`${c} — `:""}${B("chat.messages.processId",{id:a.processNodeId})}`,children:(0,d.jsx)(l.A,{label:B("chat.messages.node",{node:c||`${a.processNodeId.substring(0,6)}...`}),size:"small",color:"primary",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),E>0&&(0,d.jsx)(k.A,{title:B("chat.messages.nested",{depth:E}),children:(0,d.jsx)(l.A,{label:B("chat.messages.subflowStep"),size:"small",color:"secondary",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),a.disabled&&(0,d.jsx)(l.A,{label:B("chat.messages.disabled"),size:"small",color:"default",variant:"outlined",sx:{height:20,fontSize:"0.7rem"}}),a.usage&&(0,d.jsx)(k.A,{title:B("chat.messages.tokenUsage",{prompt:D(a.usage.promptTokens),completion:D(a.usage.completionTokens)}),children:(0,d.jsx)(l.A,{label:`${(A=a.usage.totalTokens)>=1e3?`${(A/1e3).toFixed(A>=1e5?0:1)}k`:`${A}`} tok`,size:"small",color:"default",variant:"outlined",sx:{height:20,fontSize:"0.7rem",mr:1}})}),(0,d.jsx)(p.A,{size:"small",onClick:b=>y(b,a.id),sx:{ml:1},children:(0,d.jsx)(J.A,{fontSize:"small"})})]}),(0,d.jsxs)(q.A,{elevation:1,sx:{p:2,maxWidth:"75vw",borderRadius:2,bgcolor:"user"===a.role?"primary.light":"assistant"===a.role||"tool"===a.role?"background.paper":"info.light",color:"user"===a.role?"primary.contrastText":"assistant"===a.role||"tool"===a.role?"text.primary":"info.contrastText",position:"relative",borderLeft:"tool"===a.role?"4px solid":"none",borderColor:"tool"===a.role?"grey.400":"transparent",opacity:x?.55:1,outline:x?"2px dashed":"none",outlineColor:"warning.main",overflowWrap:"break-word",wordBreak:"break-word",overflow:"hidden"},children:[(0,d.jsxs)(d.Fragment,{children:["tool"!==a.role&&"string"==typeof a.content&&(0,d.jsx)(H.oz,{remarkPlugins:[I.A],components:ar,children:a.content}),"tool"!==a.role&&Array.isArray(a.content)&&(0,d.jsx)(h.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:a.content.map((a,b)=>a?.type==="text"?(0,d.jsx)(H.oz,{remarkPlugins:[I.A],children:a.text},b):a?.type==="image_url"&&a.image_url?.url?(0,d.jsx)("img",{src:a.image_url.url,alt:B("chat.messages.generatedImage",{number:b+1}),style:{maxWidth:"100%",height:"auto",borderRadius:"4px"}},b):null)}),"tool"!==a.role&&a.media&&a.media.length>0&&(0,d.jsx)(as,{media:a.media.filter(b=>"image"!==b.type||!Array.isArray(a.content)||!a.content.some(a=>a?.type==="image_url"&&a.image_url?.url===an(b)))}),"tool"!==a.role&&"string"!=typeof a.content&&!Array.isArray(a.content)&&!ap(a)&&!a.media?.length&&(0,d.jsx)(g.A,{variant:"body2",fontStyle:"italic",color:"text.secondary",children:B("chat.messages.noText")})]}),(()=>{let b=[...ap(a)?a.tool_calls.filter(a=>{var b;return!!(b=a.function.name)&&(b.startsWith(ak.n9)||"handoff"===b)}):[],...w??[]];return(0,d.jsx)(h.default,{sx:{mt:1,display:"flex",flexWrap:"wrap",gap:.5},children:b.map((b,c)=>(0,d.jsx)(l.A,{size:"small",variant:"outlined",color:"secondary",icon:(0,d.jsx)(W.A,{fontSize:"small"}),label:B("chat.messages.handoff",{target:function(a,b){let c=a.startsWith(ak.n9)?a.slice(ak.n9.length):a,d=c.replace(/_\d+$/,""),e=b.find(a=>{let b=(0,ak.RN)(a.label);return b===c||b===d});return e?.label?e.label:d.split("_").filter(Boolean).map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join(" ")||"target node"}(b.function.name,e)}),sx:{maxWidth:"100%",fontWeight:500}},b.id||`handoff-${a.id}-${c}`))})})(),i&&i.length>0&&(0,d.jsx)(au,{pairs:i,messageId:a.id,conversationId:b,onAppMessage:j,onUpdateModelContext:m,onRegisterAppTeardown:u,onOpenInCanvas:v}),"tool"===a.role&&a.tool_call_id&&!aq(a)&&(0,d.jsxs)(h.default,{children:[(0,d.jsxs)(g.A,{variant:"body2",sx:{display:"flex",alignItems:"center",color:"text.secondary",mb:1},children:[(0,d.jsx)(Q.A,{fontSize:"small",sx:{mr:1}}),B("chat.messages.toolResponded")]}),(0,d.jsxs)(r.A,{defaultExpanded:!1,sx:{mb:.5,"&:before":{display:"none"},boxShadow:"none",bgcolor:"rgba(0, 0, 0, 0.02)"},children:[(0,d.jsx)(s.A,{expandIcon:(0,d.jsx)(O.A,{}),children:(0,d.jsxs)(h.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(Q.A,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,d.jsx)(g.A,{variant:"subtitle2",children:B("chat.messages.toolResult")}),(0,d.jsx)(l.A,{label:`ID: ${a.tool_call_id.substring(0,8)}...`,size:"small",color:"default",variant:"outlined",sx:{ml:1,height:20,fontSize:"0.7rem"}}),(0,d.jsx)(n.A,{control:(0,d.jsx)(o.A,{size:"small",checked:f,onChange:b=>z(a.id,b.target.checked),onClick:a=>a.stopPropagation()}),label:B("chat.messages.raw"),sx:{mr:1,ml:"auto","& .MuiTypography-root":{fontSize:"0.75rem"}},onClick:a=>a.stopPropagation()})]})}),(0,d.jsx)(t.A,{sx:{pt:0,pb:1,overflow:"hidden"},children:(0,d.jsx)(at,{content:a.content,showRaw:f})})]})]}),a.attachments&&a.attachments.length>0&&(0,d.jsxs)(h.default,{sx:{mt:1,pt:1,borderTop:"1px solid",borderColor:"divider"},children:[(0,d.jsx)(g.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:.5},children:B("chat.messages.attachments")}),a.attachments.map(a=>"image"===a.type?(0,d.jsx)(h.default,{sx:{mb:.5},children:(0,d.jsx)("img",{src:a.content,alt:a.originalName||B("chat.messages.imageAttachment"),style:{maxWidth:"100%",height:"auto",borderRadius:"4px"}})},a.id):(0,d.jsxs)(h.default,{sx:{display:"flex",alignItems:"center",p:1,borderRadius:1,bgcolor:"rgba(0, 0, 0, 0.04)",mb:.5},children:["document"===a.type?(0,d.jsx)(M.A,{fontSize:"small",sx:{mr:1}}):(0,d.jsx)(N.A,{fontSize:"small",sx:{mr:1}}),(0,d.jsx)(g.A,{variant:"caption",sx:{wordBreak:"break-all"},children:a.originalName||B("chat.input.attachment",{type:a.type})})]},a.id))]})]})]})}),aw=({elicitation:a,onSubmit:b,onCancel:c})=>{let{t:f}=(0,ag.s9)(),{elicitationId:j,message:k,requestedSchema:l}=a,m=l?.properties??{},o=Object.keys(m),[p,r]=(0,e.useState)(()=>{let a={};for(let b of o){let c=m[b];void 0!==c.default?a[b]=c.default:"boolean"===c.type?a[b]=!1:"number"===c.type||"integer"===c.type?a[b]=0:a[b]=""}return a}),s=(a,b)=>{r(c=>({...c,[a]:b}))};return(0,d.jsxs)(q.A,{elevation:2,sx:{p:2,mt:2,bgcolor:"info.light",border:"1px solid",borderColor:"info.main",borderRadius:2},children:[(0,d.jsx)(g.A,{variant:"h6",sx:{mb:1},children:f("chat.elicitation.title")}),(0,d.jsx)(g.A,{variant:"body2",sx:{mb:2},children:k}),(0,d.jsx)(h.default,{sx:{display:"flex",flexDirection:"column",gap:1.5},children:o.map(a=>{let b=m[a],c=b.title||a,e=p[a];if("boolean"===b.type)return(0,d.jsx)(n.A,{control:(0,d.jsx)(u.A,{checked:!!e,onChange:b=>s(a,b.target.checked),size:"small"}),label:c},a);if(b.enum&&b.enum.length>0)return(0,d.jsxs)(v.A,{size:"small",sx:{minWidth:200},children:[(0,d.jsx)(w.A,{children:c}),(0,d.jsx)(x.A,{label:c,value:String(e??""),onChange:b=>s(a,b.target.value),children:b.enum.map((a,c)=>(0,d.jsx)(y.A,{value:a,children:b.enumNames?.[c]||a},a))}),b.description&&(0,d.jsx)(z.A,{children:b.description})]},a);let f="number"===b.type||"integer"===b.type;return(0,d.jsx)(A.A,{size:"small",label:c,type:f?"number":"text",value:String(e??""),helperText:b.description,inputProps:{minLength:b.minLength,maxLength:b.maxLength,min:b.minimum,max:b.maximum},onChange:b=>{if(f){let c=parseFloat(b.target.value);s(a,isNaN(c)?0:c)}else s(a,b.target.value)}},a)})}),(0,d.jsxs)(h.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:2},children:[(0,d.jsx)(i.A,{variant:"outlined",color:"inherit",size:"small",onClick:()=>{c&&c(j)},disabled:!c,children:f("common.cancel")}),(0,d.jsx)(i.A,{variant:"contained",color:"primary",size:"small",onClick:()=>{b&&b(j,p)},disabled:!b,children:f("chat.elicitation.submit")})]})]})},ax="Type your own answer",ay=({question:a,onAnswer:b,onDecline:c})=>{let{t:f}=(0,ag.s9)(),{questionId:j,questions:k}=a,[l,m]=(0,e.useState)(()=>k.map(()=>[])),[o,p]=(0,e.useState)(()=>k.map(()=>"")),r=()=>k.map((a,b)=>(l[b]??[]).map(a=>a===ax?o[b].trim():a).filter(a=>a.length>0)),s=k.every((a,b)=>(r()[b]??[]).length>0);return(0,d.jsxs)(q.A,{elevation:2,sx:{p:2,mt:2,bgcolor:"info.light",border:"1px solid",borderColor:"info.main",borderRadius:2},children:[(0,d.jsx)(g.A,{variant:"h6",sx:{mb:1},children:f("chat.question.title")}),(0,d.jsx)(h.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:k.map((a,b)=>(0,d.jsxs)(v.A,{component:"fieldset",sx:{display:"flex"},children:[(0,d.jsx)(B.A,{sx:{mb:.5},children:a.prompt}),a.multiple?(0,d.jsx)(h.default,{sx:{display:"flex",flexDirection:"column"},children:a.options.map(a=>(0,d.jsx)(n.A,{control:(0,d.jsx)(u.A,{size:"small",checked:(l[b]??[]).includes(a),onChange:()=>((a,b)=>{m(c=>{let d=c.map(a=>[...a]),e=d[a],f=e.indexOf(b);return f>=0?e.splice(f,1):e.push(b),d})})(b,a)}),label:a===ax?f("chat.question.custom"):a},a))}):(0,d.jsx)(C.A,{value:(l[b]??[])[0]??"",onChange:a=>{var c;return c=a.target.value,void m(a=>{let d=a.map(a=>[...a]);return d[b]=[c],d})},children:a.options.map(a=>(0,d.jsx)(n.A,{value:a,control:(0,d.jsx)(D.A,{size:"small"}),label:a===ax?f("chat.question.custom"):a},a))}),(l[b]??[]).includes(ax)&&(0,d.jsx)(A.A,{size:"small",sx:{mt:1},placeholder:f("chat.question.placeholder"),value:o[b],onChange:a=>p(c=>{let d=[...c];return d[b]=a.target.value,d})})]},b))}),(0,d.jsxs)(h.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:2},children:[(0,d.jsx)(i.A,{variant:"outlined",color:"inherit",size:"small",onClick:()=>{c&&c(j)},disabled:!c,children:f("chat.question.decline")}),(0,d.jsx)(i.A,{variant:"contained",color:"primary",size:"small",onClick:()=>{b&&b(j,r())},disabled:!b||!s,children:f("chat.question.answer")})]})]})},az=({messages:a,pendingToolCalls:b,pendingElicitation:c,availableNodes:k=[],conversationId:m,editingMessageId:n,onToggleDisabled:o,onSplitConversation:p,onRevertToHere:u,onBeginEditMessage:v,onApproveToolCall:w,onRejectToolCall:x,onSubmitElicitation:z,onCancelElicitation:B,pendingQuestion:C,onAnswerQuestion:D,onDeclineQuestion:H,onAppMessage:I,onUpdateModelContext:J,onRegisterAppTeardown:M,onOpenInCanvas:N,queuedMessages:Q=[],queueHoldReason:R=null})=>{let{t:S,tp:W}=(0,ag.s9)(),[Y,Z]=(0,e.useState)({}),[$,_]=(0,e.useState)(50);(0,e.useEffect)(()=>{_(50)},[m]);let aa=Math.max(0,(Array.isArray(a)?a.length:0)-$),ab=(0,e.useMemo)(()=>Array.isArray(a)?aa>0?a.slice(aa):a:[],[a,aa]),{pairsByAnchorId:ac,handoffsByAnchorId:ad,consumedToolCallIds:ae,groups:af}=(0,e.useMemo)(()=>(function(a){let b=new Map,c=new Map,d=new Set,e=new Set,f=new Map,g=[];if(!Array.isArray(a))return{pairsByAnchorId:b,handoffsByAnchorId:c,hoistedAssistantIds:d,consumedToolCallIds:e,groups:g};let h=new Map;for(let b of a)"tool"===b.role&&"string"==typeof b.tool_call_id&&b.tool_call_id&&!h.has(b.tool_call_id)&&h.set(b.tool_call_id,b);let i=a=>{let d=f.get(a);return d||(d={anchorId:a,memberIds:[a],hoistedIds:[]},f.set(a,d),g.push(d),b.set(a,[]),c.set(a,[])),d},j=null;for(let f of a){if("user"===f.role||"system"===f.role){j=null;continue}if("assistant"!==f.role)continue;let a=Array.isArray(f.tool_calls)?f.tool_calls:[],g=[],k=[];for(let b of a){if("function"!==b.type)continue;if(al(b.function?.name)){k.push(b);continue}let a=b.id,c=a?h.get(a):void 0;a&&e.add(a),g.push({toolCall:b,result:c,mcpDestination:a?f.mcpToolCalls?.[a]:void 0})}let l=function(a){let b=a.content;return"string"==typeof b?b.trim().length>0:!!Array.isArray(b)&&b.some(a=>!!a&&"object"==typeof a&&("text"===a.type?"string"==typeof a.text&&a.text.trim().length>0:"image_url"===a.type?!!a.image_url?.url:"input_audio"===a.type&&!!a.input_audio?.data))}(f),m=g.length>0||k.length>0;if(l){j=f.id,m&&(i(f.id),b.get(f.id).push(...g),c.get(f.id).push(...k));continue}if(m)if(j){let a=i(j);b.get(j).push(...g),c.get(j).push(...k),a.memberIds.push(f.id),a.hoistedIds.push(f.id),d.add(f.id)}else j=f.id,i(f.id),b.get(f.id).push(...g),c.get(f.id).push(...k)}return{pairsByAnchorId:b,handoffsByAnchorId:c,hoistedAssistantIds:d,consumedToolCallIds:e,groups:g}})(a),[a]),ak=(0,e.useMemo)(()=>(function(a){let b=new Set;if(!Array.isArray(a))return b;for(let c of a){if("assistant"!==c.role)continue;let a=c.tool_calls;if(Array.isArray(a))for(let c of a)"function"===c.type&&al(c.function?.name)&&"string"==typeof c.id&&c.id&&b.add(c.id)}return b})(a),[a]),am=(0,e.useMemo)(()=>new Set(ab.map(a=>a.id)),[ab]),{renderPairsById:an,renderHandoffsById:ap,suppressedIds:ar}=(0,e.useMemo)(()=>{let a=new Map,b=new Map,c=new Set;for(let d of af){let e=ac.get(d.anchorId)??[],f=ad.get(d.anchorId)??[],g=d.memberIds.find(a=>am.has(a))??d.anchorId;for(let h of(e.length>0&&a.set(g,e),f.length>0&&b.set(g,f),d.hoistedIds))h!==g&&c.add(h)}return{renderPairsById:a,renderHandoffsById:b,suppressedIds:c}},[af,ac,ad,am]),[as,at]=f().useState(null),[au,ax]=f().useState(null),[az,aA]=f().useState(null),[aB,aC]=f().useState({}),aD=(0,e.useCallback)((a,b)=>{ao.debug(`handleMenuOpen called with messageId: ${b}`),at(a.currentTarget),ax(b)},[]),aE=(0,e.useCallback)((a,b)=>{aC(c=>({...c,[a]:b}))},[]),aF=()=>{at(null),ax(null)},aG=()=>{au&&(v?.(au),aF())},aH=(0,e.useMemo)(()=>{let a=new Map;for(let b of k)a.set(b.id,b.label);return a},[k]),aI=(0,e.useMemo)(()=>au&&a.find(a=>a.id===au)||null,[au,a]);return(0,d.jsxs)(h.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:[aa>0&&(0,d.jsx)(h.default,{sx:{display:"flex",justifyContent:"center"},children:(0,d.jsx)(i.A,{size:"small",variant:"outlined",onClick:()=>_(a=>a+200),children:S("chat.messages.earlier",{count:aa})})}),ab.map((a,b)=>aq(a)||"tool"===a.role&&"string"==typeof a.tool_call_id&&ak.has(a.tool_call_id)||"tool"===a.role&&"string"==typeof a.tool_call_id&&ae.has(a.tool_call_id)||ar.has(a.id)?null:(0,d.jsx)(av,{message:a,conversationId:m,nodeLabel:a.processNodeId?aH.get(a.processNodeId):void 0,availableNodes:k,showRaw:!!aB[a.id],toolCallPairs:an.get(a.id),onAppMessage:I,onUpdateModelContext:J,onRegisterAppTeardown:M,onOpenInCanvas:N,hoistedHandoffs:ap.get(a.id),isBeingEdited:!!n&&a.id===n,onMenuOpen:aD,onToggleRaw:aE},a.id||`msg-${aa+b}`)),Q.map(a=>(0,d.jsx)(h.default,{"data-testid":"queued-bubble",sx:{display:"flex",justifyContent:"flex-end",opacity:.6},children:(0,d.jsxs)(h.default,{sx:{maxWidth:"70%",bgcolor:"primary.light",color:"primary.contrastText",borderRadius:2,px:2,py:1,display:"flex",flexDirection:"column",gap:.5},children:[(0,d.jsx)(g.A,{variant:"body2",sx:{whiteSpace:"pre-wrap",wordBreak:"break-word"},children:a.content||(a.attachments.length>0?W("chat.messages.attachment",a.attachments.length):"")}),(0,d.jsxs)(h.default,{sx:{display:"flex",alignItems:"center",gap:.5,justifyContent:"flex-end"},children:[!R&&(0,d.jsx)(j.default,{size:10,color:"inherit"}),(0,d.jsx)(g.A,{variant:"caption",sx:{opacity:.85},children:R??S("chat.messages.queued")})]})]})},a.id)),(0,d.jsxs)(E.A,{anchorEl:as,open:!!as,onClose:aF,children:[aI&&(()=>{ao.debug("Entering menu item rendering logic",{activeMessageId:au}),ao.debug("Active message object for menu:",aI),ao.debug("Active message role for menu:",aI?.role);try{if("user"===aI.role&&"string"==typeof aI.content&&v)return(0,d.jsxs)(y.A,{onClick:aG,children:[(0,d.jsx)(F.A,{children:(0,d.jsx)(T.A,{fontSize:"small"})}),(0,d.jsx)(G.A,{children:S("chat.actions.edit")})]});return null}catch(a){return ao.error("Error rendering Edit Message menu item",{error:a}),null}})(),(0,d.jsxs)(y.A,{onClick:()=>{au&&(o(au),aF())},children:[(0,d.jsx)(F.A,{children:(0,d.jsx)(K.A,{fontSize:"small"})}),(0,d.jsx)(G.A,{children:aI?.disabled?S("chat.actions.enable"):S("chat.actions.disable")})]}),(0,d.jsxs)(y.A,{onClick:()=>{au&&(p(au),aF())},children:[(0,d.jsx)(F.A,{children:(0,d.jsx)(L.A,{fontSize:"small"})}),(0,d.jsx)(G.A,{children:S("chat.actions.split")})]}),ai.G.ENABLE_REVERT_TO_HERE&&aI?.changedFiles?.length?(0,d.jsxs)(y.A,{onClick:()=>{au&&(aA(au),aF())},children:[(0,d.jsx)(F.A,{children:(0,d.jsx)(X.A,{fontSize:"small"})}),(0,d.jsx)(G.A,{children:S("chat.actions.revert")})]}):null]}),ai.G.ENABLE_REVERT_TO_HERE&&m&&(0,d.jsx)(ah,{open:!!az,conversationId:m,messageId:az,onClose:()=>aA(null),onReverted:u}),c&&(0,d.jsx)(aw,{elicitation:c,onSubmit:z,onCancel:B}),C&&(0,d.jsx)(ay,{question:C,onAnswer:D,onDecline:H}),b&&b.length>0&&(0,d.jsxs)(q.A,{elevation:2,sx:{p:2,mt:2,bgcolor:"warning.light",border:"1px solid",borderColor:"warning.main",borderRadius:2},children:[(0,d.jsxs)(g.A,{variant:"h6",sx:{mb:1,display:"flex",alignItems:"center"},children:[(0,d.jsx)(P.A,{sx:{mr:1}})," ",S("chat.approval.title")]}),(0,d.jsx)(g.A,{variant:"body2",sx:{mb:2},children:S("chat.approval.help")}),b.map((a,b)=>{let c=(0,aj.yo)(a.function.name),e=a.function.arguments;try{let b=JSON.parse(a.function.arguments);e=JSON.stringify(b,null,2)}catch(a){}return(0,d.jsxs)(r.A,{defaultExpanded:!0,sx:{mb:1,"&:before":{display:"none"},boxShadow:1},children:[(0,d.jsx)(s.A,{expandIcon:(0,d.jsx)(O.A,{}),children:(0,d.jsxs)(h.default,{sx:{display:"flex",alignItems:"center",width:"100%"},children:[(0,d.jsx)(P.A,{fontSize:"small",sx:{mr:1,color:"primary.main"}}),(0,d.jsx)(g.A,{variant:"subtitle2",sx:{fontWeight:"bold",flexGrow:1},children:c}),(0,d.jsx)(l.A,{label:`ID: ${a.id?a.id.substring(0,8):"N/A"}...`,size:"small",variant:"outlined",sx:{ml:1,height:20,fontSize:"0.7rem"}})]})}),(0,d.jsxs)(t.A,{sx:{pt:0},children:[(0,d.jsx)(h.default,{component:"pre",sx:{bgcolor:"action.hover",p:1,borderRadius:"4px",overflowX:"auto",fontFamily:"monospace",fontSize:"0.75rem",my:.5,maxHeight:"150px",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:e}),(0,d.jsx)(A.A,{label:S("chat.approval.reason"),placeholder:S("chat.approval.reasonPlaceholder"),value:Y[a.id]??"",onChange:b=>Z(c=>({...c,[a.id]:b.target.value})),multiline:!0,minRows:1,maxRows:4,fullWidth:!0,size:"small",sx:{mt:1,mb:1}}),(0,d.jsxs)(h.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:1,flexWrap:"wrap"},children:[(0,d.jsx)(i.A,{variant:"outlined",color:"error",size:"small",startIcon:(0,d.jsx)(V.A,{}),onClick:()=>x&&x(a.id,!1,Y[a.id]?.trim()||void 0),disabled:!x,children:S("chat.approval.reject")}),(0,d.jsx)(i.A,{variant:"outlined",color:"error",size:"small",onClick:()=>x&&x(a.id,!0),disabled:!x,title:S("chat.approval.denyHelp"),children:S("chat.approval.alwaysDeny")}),(0,d.jsx)(i.A,{variant:"outlined",color:"success",size:"small",startIcon:(0,d.jsx)(U.A,{}),onClick:()=>w&&w(a.id,!0),disabled:!w,title:S("chat.approval.allowHelp"),children:S("chat.approval.alwaysAllow")}),(0,d.jsx)(i.A,{variant:"contained",color:"success",size:"small",startIcon:(0,d.jsx)(U.A,{}),onClick:()=>w&&w(a.id),disabled:!w,children:S("chat.approval.approve")})]})]})]},a.id||`ptc-${b}`)})]})]})}},63787:(a,b,c)=>{c.d(b,{Ay:()=>_,nd:()=>X,c_:()=>W});var d=c(21124),e=c(38301),f=c(1509),g=c(21903),h=c(54573),i=c(79515),j=c(37674),k=c(67101),l=c(81637),m=c(24077),n=c(95791),o=c(46973),p=c(60839),q=c(37489),r=c(18168),s=c(2117),t=c(63281),u=c(63654),v=c(11361),w=c(94367),x=c(50553),y=c(84233),z=c(91059),A=c(7118),B=c(91034),C=c(38941),D=c(95345),E=c(12033),F=c(1010),G=c(88970),H=c(18305);let I=({open:a,position:b,onClose:c,onDelete:e,onEditProperties:f,onConvertToSubflow:g,onToggleBidirectional:h,onCopy:i,onPaste:j,canPaste:k,canCopy:l,nodeId:m,selection:n,edgeId:o})=>{let{t:p}=(0,H.s9)(),q=()=>{f&&f(),c()},r=[];return m&&!n&&(r.push((0,d.jsxs)(w.A,{onClick:q,children:[(0,d.jsx)(x.A,{children:(0,d.jsx)(E.A,{fontSize:"small"})}),(0,d.jsx)(y.A,{children:p("flows.context.editProperties")})]},"edit")),g&&r.push((0,d.jsxs)(w.A,{onClick:()=>{g&&g(),c()},children:[(0,d.jsx)(x.A,{children:(0,d.jsx)(G.A,{fontSize:"small"})}),(0,d.jsx)(y.A,{children:p("flows.context.convertSubflow")})]},"convert-to-subflow"))),o&&!m&&!n&&(f&&r.push((0,d.jsxs)(w.A,{onClick:q,children:[(0,d.jsx)(x.A,{children:(0,d.jsx)(E.A,{fontSize:"small"})}),(0,d.jsx)(y.A,{children:p("flows.context.editProperties")})]},"edge-edit")),h&&r.push((0,d.jsxs)(w.A,{onClick:()=>{h&&h(),c()},children:[(0,d.jsx)(x.A,{children:(0,d.jsx)(F.A,{fontSize:"small"})}),(0,d.jsx)(y.A,{children:p("flows.context.toggleBidirectional")})]},"edge-bidirectional"))),i&&(m||n)&&r.push((0,d.jsxs)(w.A,{onClick:()=>{i&&i(),c()},disabled:!l,children:[(0,d.jsx)(x.A,{children:(0,d.jsx)(C.A,{fontSize:"small"})}),(0,d.jsx)(y.A,{children:p("flows.context.copy")})]},"copy")),j&&r.push((0,d.jsxs)(w.A,{onClick:()=>{j&&j(),c()},disabled:!k,children:[(0,d.jsx)(x.A,{children:(0,d.jsx)(D.A,{fontSize:"small"})}),(0,d.jsx)(y.A,{children:p("flows.context.paste")})]},"paste")),(m||o||n)&&r.push((0,d.jsx)(z.A,{},"delete-divider"),(0,d.jsxs)(w.A,{onClick:()=>{e(),c()},sx:{color:"error.main"},children:[(0,d.jsx)(x.A,{sx:{color:"error.main"},children:(0,d.jsx)(B.A,{fontSize:"small"})}),(0,d.jsx)(y.A,{children:p("flows.context.delete")})]},"delete")),(0,d.jsx)(A.A,{open:a,onClose:c,anchorReference:"anchorPosition",anchorPosition:null!==b.y&&null!==b.x?{top:b.y,left:b.x}:void 0,children:r})};var J=c(31164),K=c(97004);function L(a,b){return b.find(b=>b.id===a)}var M=c(42819);let N=(0,M.h)("components/flow/FlowBuilder/Canvas/hooks/useCanvasEvents.ts");var O=c(90430),P=c(36627);let Q=({showMiniMap:a=!0,showControls:b=!0,showBackground:c=!0})=>{let e=(0,p.A)(),f="dark"===e.palette.mode;return(0,d.jsxs)(d.Fragment,{children:[c&&(0,d.jsx)(n.VS,{color:f?e.palette.text.disabled:e.palette.divider,gap:20,size:1}),b&&(0,d.jsx)(n.H2,{}),a&&(0,d.jsx)(n.of,{nodeColor:f?e.palette.primary.dark:e.palette.primary.light,maskColor:f?"rgba(0, 0, 0, 0.4)":"rgba(255, 255, 255, 0.6)"})]})};var R=c(5240);let S=(0,M.h)("components/flow/FlowBuilder/Canvas/Canvas.tsx"),T="flujo:flowClipboard",U=null;function V(a){U=a;try{localStorage.setItem(T,JSON.stringify(a))}catch(a){S.warn("Could not persist flow clipboard to localStorage",a)}}let W={start:v.vm,process:v.Uw,finish:v.IK,mcp:v.v2,subflow:v.lA,resource:v.z9,signal:v.z3,trigger:v.pF},X={custom:J.jY,mcpEdge:J.oY,resourceEdge:J.sZ},Y=({open:a,position:b,anchorPosition:c,onClose:m,onSelectNodeType:n,sourceNodeType:o,sourceHandleId:r})=>{let s=(0,p.A)(),{t}=(0,H.s9)(),[u,w]=(0,e.useState)("");(0,e.useEffect)(()=>{a&&w("")},[a]);let x=(0,P._w)(o,r);S.debug(`NodeSelectionModal: Source node type: ${o}, Source handle ID: ${r}`),S.debug(`NodeSelectionModal: Valid node types: ${x.join(", ")}`);let y=[{type:"process",label:t("flows.canvas.processNode"),description:t("flows.canvas.processDescription")},{type:"finish",label:t("flows.canvas.finishNode"),description:t("flows.canvas.finishDescription")},{type:"mcp",label:t("flows.canvas.mcpNode"),description:t("flows.canvas.mcpDescription")},{type:"subflow",label:t("flows.canvas.subflowNode"),description:t("flows.canvas.subflowDescription")},{type:"resource",label:t("flows.canvas.resourceNode"),description:t("flows.canvas.resourceDescription")},{type:"signal",label:t("flows.canvas.signalNode"),description:t("flows.canvas.signalDescription")},{type:"trigger",label:t("flows.canvas.triggerNode"),description:t("flows.canvas.triggerDescription")}].filter(a=>x.includes(a.type)).filter(a=>{let b=u.trim().toLowerCase();return!b||`${a.label} ${a.description}`.toLowerCase().includes(b)});return a&&b?(0,d.jsx)(f.A,{children:(0,d.jsx)(g.x,{onClickAway:m,children:(0,d.jsxs)(h.A,{role:"dialog","aria-modal":"false","aria-labelledby":"node-selection-title",elevation:16,onKeyDown:a=>{"Escape"===a.key&&(a.preventDefault(),m())},sx:{position:"fixed",top:{xs:"auto",sm:c?`clamp(12px, ${c.y+10}px, calc(100dvh - 460px))`:"50%"},bottom:{xs:12,sm:"auto"},left:{xs:12,sm:c?`clamp(12px, ${c.x+10}px, calc(100vw - 392px))`:"50%"},right:{xs:12,sm:"auto"},transform:{xs:"none",sm:c?"none":"translate(-50%, -50%)"},zIndex:a=>a.zIndex.modal+1,width:{xs:"auto",sm:380},maxHeight:"min(70dvh, 520px)",overflow:"hidden",border:1,borderColor:"divider",borderRadius:3.5,bgcolor:"background.paper",boxShadow:"dark"===s.palette.mode?"0 28px 80px rgba(0,0,0,.55)":"0 28px 80px rgba(31,27,74,.22)",p:1.5},children:[(0,d.jsx)(i.A,{id:"node-selection-title",variant:"subtitle1",fontWeight:800,children:t("flows.canvas.addNext")}),(0,d.jsx)(i.A,{variant:"caption",color:"text.secondary",children:t("flows.canvas.autoConnect")}),(0,d.jsx)(j.A,{autoFocus:!0,fullWidth:!0,size:"small",value:u,onChange:a=>w(a.target.value),placeholder:t("flows.canvas.searchTypes"),inputProps:{"aria-label":t("flows.canvas.searchTypes")},sx:{my:1.25},InputProps:{startAdornment:(0,d.jsx)(k.A,{position:"start",children:(0,d.jsx)(R.A,{fontSize:"small"})})}}),(0,d.jsxs)(l.default,{display:"flex",flexDirection:"column",gap:.75,sx:{overflowY:"auto",maxHeight:360},children:[y.map(a=>(0,d.jsx)(h.A,{component:"button",type:"button",onClick:()=>n(a.type,b),sx:{appearance:"none",width:"100%",p:1.1,textAlign:"left",color:"text.primary",bgcolor:"transparent",borderRadius:2.5,border:1,borderColor:"divider",cursor:"pointer",transition:"border-color 160ms ease, background-color 160ms ease, transform 160ms ease","&:hover, &:focus-visible":{outline:"none",borderColor:"finish"===a.type?s.palette.success.main:"subflow"===a.type?s.palette.warning.main:"resource"===a.type?v.nH:s.palette.primary.main,bgcolor:(0,q.X4)(s.palette.primary.main,.06),transform:"translateX(2px)"}},children:(0,d.jsxs)(l.default,{display:"flex",alignItems:"center",gap:1.25,children:[(a=>{switch(a){case"process":default:return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:s.palette.primary.main,borderRadius:"50%"}});case"finish":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:s.palette.success.main,borderRadius:"50%"}});case"mcp":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:s.palette.info.main,borderRadius:"50%"}});case"subflow":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:s.palette.warning.main,borderRadius:"50%"}});case"resource":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:v.nH,borderRadius:"50%"}});case"signal":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:v.vp,borderRadius:"50%"}});case"trigger":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:v.$Q,borderRadius:"50%"}})}})(a.type),(0,d.jsxs)(l.default,{children:[(0,d.jsx)(i.A,{variant:"subtitle2",fontWeight:800,children:a.label}),(0,d.jsx)(i.A,{variant:"caption",color:"text.secondary",children:a.description})]})]})},a.type)),0===y.length&&(0,d.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{p:1},children:t("flows.canvas.noTypes")})]})]})})}):null},Z=(0,r.Ay)("div")(({theme:a})=>({flex:"1 1 0",height:"100%",minHeight:0,width:"100%",border:`1px solid ${a.palette.divider}`,borderRadius:"18px",overflow:"hidden",backgroundColor:a.palette.background.paper,backgroundImage:`
|
|
5
5
|
linear-gradient(${a.palette.divider} 1px, transparent 1px),
|
|
6
6
|
linear-gradient(90deg, ${a.palette.divider} 1px, transparent 1px),
|
|
7
7
|
radial-gradient(circle at 22% 0%, ${(0,q.X4)(a.palette.primary.main,.1)}, transparent 38%)
|
|
8
|
-
`,backgroundSize:"28px 28px, 28px 28px, auto",boxShadow:"dark"===a.palette.mode?"inset 0 1px 0 rgba(255,255,255,.035), 0 22px 65px rgba(0,0,0,.24)":"inset 0 1px 0 rgba(255,255,255,.7), 0 22px 65px rgba(53,48,105,.1)",position:"relative",[a.breakpoints.down("sm")]:{flex:"none",height:440,minHeight:440,maxWidth:"100%"}})),Z=(0,e.forwardRef)((a,b)=>{let c=(0,p.A)(),f=(0,m.A)(c.breakpoints.down("sm"),{noSsr:!0}),{nodes:g,edges:h,onNodesChange:i,onEdgesChange:j,onDrop:k,onDragOver:l,onInit:q,reactFlowWrapper:r,onEditNode:v,onCreateNode:w,onSelectNode:x,onConvertProcessToSubflow:y,onEditEdge:z}=a,{contextMenu:A,selectedElements:B,closeContextMenu:C,handleDelete:D,onNodeContextMenu:E,onEdgeContextMenu:F,onPaneContextMenu:G,onSelectionContextMenu:I}=function(a){let{deleteElements:b}=(0,n.VH)(),[c,d]=(0,e.useState)({open:!1,position:{x:0,y:0}}),[f,g]=(0,e.useState)({nodes:[],edges:[]});(0,n.p4)({onChange:({nodes:a,edges:b})=>{let c=a.map(a=>a.id),d=b.map(a=>a.id);M.debug(`Selection changed: ${c.length} nodes, ${d.length} edges selected`),g({nodes:c,edges:d})}});let h=(0,e.useCallback)((a,b,c,e)=>{a.preventDefault(),b?M.debug(`Context menu opened for node: ${b}`):c?M.debug(`Context menu opened for edge: ${c}`):e?M.debug("Context menu opened for the current selection"):M.debug(`Context menu opened on canvas at (${a.clientX}, ${a.clientY})`),d({open:!0,position:{x:a.clientX,y:a.clientY},nodeId:b,edgeId:c,selection:e})},[]),i=(0,e.useCallback)(()=>{M.debug("Context menu closed"),d(a=>({...a,open:!1}))},[]),j=(0,e.useCallback)(()=>{if(c.selection)M.debug("handleDelete: Deleting the current selection"),b({nodes:f.nodes.map(a=>({id:a})),edges:f.edges.map(a=>({id:a}))});else if(c.nodeId){if(M.debug(`handleDelete: Attempting to delete node ${c.nodeId}`),!function(a,b){let c=K(a,b);return!!c&&"start"!==c.type}(c.nodeId,a)){M.warn(`Cannot delete Start node: ${c.nodeId}`),alert("Start nodes cannot be deleted");return}b({nodes:[{id:c.nodeId}]})}else c.edgeId&&(M.debug(`handleDelete: Deleting edge ${c.edgeId}`),b({edges:[{id:c.edgeId}]}))},[c,b,a,f]),k=(0,e.useCallback)((a,b)=>{h(a,b.id)},[h]),l=(0,e.useCallback)((a,b)=>{h(a,void 0,b.id)},[h]),m=(0,e.useCallback)(a=>{h(a)},[h]),o=(0,e.useCallback)(a=>{h(a,void 0,void 0,!0)},[h]);return{contextMenu:c,selectedElements:f,onContextMenu:h,closeContextMenu:i,handleDelete:j,onNodeContextMenu:k,onEdgeContextMenu:l,onPaneContextMenu:m,onSelectionContextMenu:o}}(g),{deleteElements:L}=(0,n.VH)(),Q=(0,n.PI)(),Z=(0,e.useRef)(null),[$,_]=(0,e.useState)(null),[aa,ab]=(0,e.useState)({open:!1,position:null}),ac=(0,e.useCallback)(a=>[...g.filter(a=>a.selected).map(a=>({type:"select",id:a.id,selected:!1})),{type:"add",item:{...a,selected:!0}}],[g]);(0,e.useEffect)(()=>{if(!v)return;let a=a=>{if(a.detail&&a.detail.nodeId){let b=K(a.detail.nodeId,g);b&&v(b)}};return document.addEventListener("editNode",a),()=>{document.removeEventListener("editNode",a)}},[g,v]),(0,e.useEffect)(()=>{let a=a=>{let b=a.detail?.nodeId;if(!b)return;let c=K(b,g);c&&(i([...g.filter(a=>a.selected&&a.id!==b).map(a=>({type:"select",id:a.id,selected:!1})),{type:"select",id:b,selected:!0}]),x?.(c))};return document.addEventListener("selectNode",a),()=>document.removeEventListener("selectNode",a)},[g,i,x]);let ad=(0,e.useCallback)(a=>{if(!a.sourceHandle||!a.targetHandle)return void R.error("Invalid connection: Missing source or target handle",a);let b=Q.getState().connection.fromHandle?.type==="target";if(!(0,N.JL)(a,g,h))return;let d=(0,N.wn)(a,g);if(d.data?.edgeType==="standard"){let d=a=>a.data?.edgeType!=="mcp",e=a=>!!a.data?.bidirectional,f=h.find(b=>d(b)&&b.source===a.source&&b.target===a.target),i=h.find(b=>d(b)&&b.source===a.target&&b.target===a.source),k=a=>{R.info(`Merging reverse connection into bidirectional edge ${a.id}`),j([{type:"replace",id:a.id,item:{...a,data:{...a.data,bidirectional:!0},markerStart:{type:o.TG.ArrowClosed,width:20,height:20,color:c.palette.text.secondary}}}])};if(b){let a=f??i;return a?void(!e(a)&&(0,N.y2)(a,g,h)&&k(a)):void R.info("Connection drawn from a top handle is only allowed to convert an existing edge to bidirectional")}if(f&&e(f))return;if(i){!e(i)&&(0,N.y2)(i,g,h)&&k(i);return}}j([...(0,N.Cm)(d,h).map(a=>({type:"remove",id:a})),{type:"add",item:d}])},[g,h,j,Q,c.palette.text.secondary]),ae=(0,e.useCallback)(a=>(0,N.p9)(a,g,h),[g,h]);(0,e.useEffect)(()=>{let a=a=>{let{edgeId:b,waypoints:c}=a.detail,d=h.find(a=>a.id===b);if(!d)return;let{waypoint:e,...f}=d.data??{};j([{type:"replace",id:b,item:{...d,data:{...f,waypoints:c??void 0}}}])};return document.addEventListener(J.R,a),()=>document.removeEventListener(J.R,a)},[h,j]);let af=(0,e.useCallback)(async({nodes:a,edges:b})=>{let c=a.filter(a=>"start"!==a.type),d=new Set(c.map(a=>a.id)),e=new Set(a.map(a=>a.id)),f=b.filter(a=>!!(a.selected||d.has(a.source)||d.has(a.target))||!(e.has(a.source)||e.has(a.target))),g=c.filter(a=>"trigger"===a.type);return g.length>0&&await Promise.all(g.map(async a=>{let b=a.data?.properties?.executionId;if("string"==typeof b&&b)try{await u.P.update(b,{enabled:!1})}catch(a){console.warn("TriggerNode: failed to disarm PlannedExecution",b,a)}})),(0!==c.length||0!==f.length)&&{nodes:c,edges:f}},[]),ag=(0,e.useCallback)(a=>{_(a),q&&q(a)},[q]),ah=(0,e.useCallback)(()=>{if(A.nodeId&&v){let a=K(A.nodeId,g);a&&v(a)}else if(A.edgeId&&z){let a=h.find(a=>a.id===A.edgeId);a&&z(a)}},[A.nodeId,A.edgeId,g,h,v,z]),ai=(0,e.useCallback)(()=>{if(!A.nodeId||!y)return;let a=K(A.nodeId,g);(a?.type==="process"||a?.data?.type==="process")&&y(a)},[A.nodeId,g,y]),aj=(0,e.useCallback)(()=>{let a;if(!A.edgeId)return;let b=h.find(a=>a.id===A.edgeId);if(!b)return;if(b.data?.edgeType!=="standard")return void R.debug(`Toggle bidirectional ignored for non-standard edge ${b.id}`);let d=!!b.data?.bidirectional;if(!d&&!(0,N.y2)(b,g,h))return void R.info(`Edge ${b.id} cannot be made bidirectional (reverse direction is not a legal connection)`);let e={...b.data??{},bidirectional:!d};if(d){let{markerStart:c,...d}=b;a={...d,data:e}}else a={...b,data:e,markerStart:{type:o.TG.ArrowClosed,width:20,height:20,color:c.palette.text.secondary}};j([{type:"replace",id:b.id,item:a}])},[A.edgeId,h,g,j,c.palette.text.secondary]),ak=(0,e.useCallback)((a,b)=>{a.preventDefault(),v&&v(b)},[v]),al=(0,e.useCallback)((a,b)=>{let{fromNode:c,fromHandle:d,toHandle:e}=b;if(!c||!d?.id||!$)return void R.debug("onConnectEnd: No valid connection start data");R.debug(`onConnectEnd: Connection ended from node ${c.id}, handle ${d.id}`);let f="subflow"===c.type&&h.some(a=>{let b=a.data;return b?.edgeType!=="mcp"&&b?.edgeType!=="resource"&&(a.source===c.id||a.target===c.id&&!!b?.bidirectional)}),g=!!a.target?.closest?.(".react-flow__pane");if(!function(a){let{fromNodeType:b,fromHandleType:c,fromHandleId:d,landedOnHandle:e,droppedOnPane:f,subflowHasOutgoing:g}=a;return!e&&!!f&&!!d&&("target"!==c||!!(0,O.z5)(d))&&("subflow"!==b||"source"!==c||!g)}({fromNodeType:c.type,fromHandleType:d.type,fromHandleId:d.id,landedOnHandle:!!e,droppedOnPane:g,subflowHasOutgoing:f}))return;let i=a instanceof MouseEvent?a:a.changedTouches[0],j=$.screenToFlowPosition({x:i.clientX,y:i.clientY});R.debug(`onConnectEnd: Connection dropped on pane at position (${j.x}, ${j.y})`),ab({open:!0,position:j,screenPosition:{x:i.clientX,y:i.clientY},sourceNodeId:c.id,sourceNodeType:c.type,sourceHandleId:d.id})},[$,h]),am=(0,e.useCallback)((a,b)=>{if(R.debug(`handleNodeTypeSelection: Selected node type ${a} at position (${b.x}, ${b.y})`),"trigger"===a&&g.some(a=>"trigger"===a.type))return void ab({open:!1,position:null});let c=t.g.createNode(a,b),{sourceNodeId:d,sourceHandleId:e}=aa,f=d?K(d,g):void 0,k=null;if(f&&e&&(k={source:f.id,sourceHandle:e,target:c.id,targetHandle:(0,O.CW)(a,e)},!(0,N.JL)(k,[...g,c],h)))return void ab({open:!1,position:null});let l=w?w(a,b,c):c;if(!l)return void ab({open:!1,position:null});if(w||i(ac(l)),k){R.debug(`handleNodeTypeSelection: Creating connection from ${k.source} to ${k.target}`);let a=(0,N.wn)(k,[...g,l]);j([...(0,N.Cm)(a,h).map(a=>({type:"remove",id:a})),{type:"add",item:a}]),R.debug(`handleNodeTypeSelection: Edge created with id ${a.id}`)}ab({open:!1,position:null}),x?.(l)},[aa,g,h,ac,i,j,w,x]),an=(0,e.useCallback)(()=>{R.debug("handleCloseNodeSelectionModal: Closing node selection modal"),ab({open:!1,position:null})},[]),ao=(0,e.useCallback)(()=>{let a=new Set(B.nodes),b=g.filter(b=>a.has(b.id)&&"start"!==b.type);if(0===b.length)return!1;let c=new Set(b.map(a=>a.id)),d=h.filter(a=>c.has(a.source)&&c.has(a.target));return U({nodes:JSON.parse(JSON.stringify(b)),edges:JSON.parse(JSON.stringify(d))}),R.debug(`Copied ${b.length} node(s) and ${d.length} edge(s)`),!0},[B,g,h]),ap=(0,e.useCallback)(()=>{let a=T;if(!a)try{let b=localStorage.getItem(S);b&&(a=JSON.parse(b))}catch(a){R.warn("Could not read flow clipboard from localStorage",a)}if(!a||!a.nodes||0===a.nodes.length)return void R.debug("Paste requested but clipboard is empty");let b=new Map;a.nodes.forEach(a=>b.set(a.id,(0,s.A)()));let c=a.nodes.map(a=>({...a,id:b.get(a.id),position:{x:(a.position?.x??0)+40,y:(a.position?.y??0)+40},selected:!0,data:{...a.data}})),d=(a.edges||[]).filter(a=>b.has(a.source)&&b.has(a.target)).map(a=>({...a,id:(0,s.A)(),source:b.get(a.source),target:b.get(a.target),selected:!1}));i([...g.filter(a=>a.selected).map(a=>({type:"select",id:a.id,selected:!1})),...c.map(a=>({type:"add",item:a}))]),d.length>0&&j(d.map(a=>({type:"add",item:a}))),R.info(`Pasted ${c.length} node(s) and ${d.length} edge(s)`)},[g,i,j]),aq=(0,e.useCallback)(a=>{let b=a.ctrlKey||a.metaKey,c=a.key.toLowerCase();if(b&&"c"===c){ao()&&a.preventDefault();return}if(b&&"x"===c){ao()&&(a.preventDefault(),L({nodes:B.nodes.map(a=>({id:a})),edges:B.edges.map(a=>({id:a}))}));return}if(b&&"v"===c){a.preventDefault(),ap();return}},[ao,ap,L,B]),ar=(0,e.useCallback)(()=>{if(A.nodeId&&!B.nodes.includes(A.nodeId)){let a=g.find(a=>a.id===A.nodeId);a&&"start"!==a.type&&(U({nodes:JSON.parse(JSON.stringify([a])),edges:[]}),R.debug("Copied right-clicked node to clipboard"));return}ao()},[A.nodeId,B,g,ao]),as=(0,e.useMemo)(()=>{if(T)return!0;try{return!!localStorage.getItem(S)}catch{return!1}},[A.open]),at=(0,e.useMemo)(()=>{if(A.selection){let a=new Set(B.nodes);return g.some(b=>a.has(b.id)&&"start"!==b.type)}if(A.nodeId){let a=g.find(a=>a.id===A.nodeId);return!!a&&"start"!==a.type}return!1},[A.selection,A.nodeId,B,g]);return(0,d.jsxs)(Y,{style:f?{flex:"none",width:"100%",maxWidth:"100%",height:440,minHeight:440}:void 0,ref:a=>{b&&("function"==typeof b?b(a):b.current=a),r&&(r.current=a),Z.current=a},children:[(0,d.jsx)(n.Gc,{nodes:g,edges:h,nodeTypes:V,edgeTypes:W,defaultEdgeOptions:(0,e.useMemo)(()=>({type:"custom",animated:!1,style:{stroke:c.palette.text.secondary,strokeWidth:2},markerEnd:{type:o.TG.ArrowClosed,width:20,height:20,color:c.palette.text.secondary}}),[c.palette.text.secondary]),connectionLineType:o.Do.SmoothStep,connectionMode:o.WZ.Loose,isValidConnection:ae,onNodesChange:i,onEdgesChange:j,onConnect:ad,onBeforeDelete:af,deleteKeyCode:["Backspace","Delete"],onDrop:k,onDragOver:l,onInit:ag,onNodeContextMenu:E,onEdgeContextMenu:F,onPaneContextMenu:G,onSelectionContextMenu:I,onKeyDown:aq,onNodeDoubleClick:ak,onNodeClick:(a,b)=>x?.(b),onConnectEnd:al,tabIndex:0,fitView:!0,attributionPosition:"bottom-right",minZoom:.1,maxZoom:2,snapToGrid:!0,snapGrid:[15,15],connectOnClick:!1,children:(0,d.jsx)(P,{})}),(0,d.jsx)(H,{open:A.open,position:A.position,onClose:C,onDelete:D,onEditProperties:ah,onConvertToSubflow:y&&A.nodeId&&g.find(a=>a.id===A.nodeId)?.type==="process"?ai:void 0,onToggleBidirectional:aj,onCopy:ar,onPaste:ap,canPaste:as,canCopy:at,nodeId:A.nodeId,selection:A.selection,edgeId:A.edgeId}),(0,d.jsx)(X,{open:aa.open,position:aa.position,anchorPosition:aa.screenPosition,onClose:an,onSelectNodeType:am,sourceNodeType:aa.sourceNodeType,sourceHandleId:aa.sourceHandleId})]})});Z.displayName="Canvas";let $=Z},74855:(a,b,c)=>{c.d(b,{MG:()=>e,Ud:()=>f});var d=c(46973);d.TG.ArrowClosed;let e={type:"resourceEdge",animated:!1,style:{stroke:"#009688",strokeWidth:2},markerEnd:{type:d.TG.ArrowClosed,width:20,height:20,color:"#009688"}},f={type:"mcpEdge",animated:!1,style:{stroke:"#1976d2",strokeWidth:2},markerEnd:{type:d.TG.ArrowClosed,width:20,height:20,color:"#1976d2"},markerStart:{type:d.TG.ArrowClosed,width:20,height:20,color:"#1976d2"}}},90430:(a,b,c)=>{c.d(b,{Cm:()=>l,JL:()=>i,p9:()=>h,wn:()=>j,y2:()=>k});var d=c(74855),e=c(36627);function f(a,b,c){return b.filter(b=>!(0,e.BY)(b)&&(b.source===a?b.target!==c:!!(b.target===a&&b.data?.bidirectional)&&b.source!==c))}function g(a,b,c=[]){if(!a.source||!a.target||!a.sourceHandle||!a.targetHandle)return"Missing source, target, or handles";let d=b.find(b=>b.id===a.source),h=b.find(b=>b.id===a.target);if(!d||!h)return"Source or target node not found";let i=(0,e.vC)(d.type,a.sourceHandle,h.type,a.targetHandle);return i||("subflow"===d.type&&f(d.id,c,a.target).length>0?"Subflow nodes can only have one outgoing connection":null)}function h(a,b,c=[]){return null===g(a,b,c)}function i(a,b,c=[]){let d=g(a,b,c);return!d||(console.error(`Invalid connection: ${d}`,a),!1)}function j(a,b,c){let f=b.find(b=>b.id===a.source),g=b.find(b=>b.id===a.target),h=a.sourceHandle,i=a.targetHandle,j=f?.type==="mcp"||g?.type==="mcp"||(0,e.z5)(h)||(0,e.z5)(i),k=!j&&(f?.type==="resource"||g?.type==="resource"||(0,e.vM)(h)||(0,e.vM)(i)),l=`${a.source}:${h}->${a.target}:${i}`;return j?{id:l,...a,type:"mcpEdge",data:{edgeType:"mcp"},animated:!1,markerEnd:d.Ud.markerEnd,markerStart:d.Ud.markerStart,style:d.Ud.style}:k?{id:l,...a,type:"resourceEdge",data:{edgeType:"resource"},animated:!1,markerEnd:d.MG.markerEnd,style:d.MG.style}:{id:l,...a,type:"custom",data:{edgeType:"standard",...c?{condition:c}:{}},animated:!0}}function k(a,b,c=[]){let d=b.find(b=>b.id===a.source),g=b.find(b=>b.id===a.target);return!!d&&!!g&&("subflow"!==g.type||!(f(g.id,c,a.source).length>0))&&null===(0,e.vC)(g.type,null,d.type,null)}function l(a,b){let c=a=>a.data?.edgeType,d=a=>"mcp"===c(a),e=a=>"resource"===c(a);return b.filter(b=>b.id===a.id||(d(a)?d(b)&&(b.source===a.source&&b.target===a.target||b.source===a.target&&b.target===a.source):e(a)?e(b)&&b.source===a.source&&b.target===a.target:!d(b)&&!e(b)&&b.source===a.source&&b.target===a.target)).map(a=>a.id)}},97004:(a,b,c)=>{c.d(b,{R:()=>l,A:()=>r});var d=c(21124),e=c(38301),f=c(95791),g=c(46973),h=c(18168),i=c(60839);function j(a){return a===g.yX.Left||a===g.yX.Right?"h":"v"}var k=c(29237);let l="flowEdgeWaypoint",m={x:16,y:-16},n=(0,h.Ay)("button")(({theme:a})=>({background:a.palette.background.paper,border:`1px solid ${a.palette.divider}`,cursor:"pointer",borderRadius:"50%",fontSize:"10px",width:"20px",height:"20px",display:"flex",justifyContent:"center",alignItems:"center",color:a.palette.text.secondary,boxShadow:"dark"===a.palette.mode?"0 2px 4px rgba(0,0,0,0.3)":"0 2px 4px rgba(0,0,0,0.1)","&:hover":{background:a.palette.error.main,borderColor:a.palette.error.main,color:a.palette.error.contrastText}})),o=(0,h.Ay)(f.tE)({"&&.animated":{strokeDasharray:5,animation:"flowPathAnimation 500ms infinite linear"},"&&.animated-both":{strokeDasharray:5,animation:"flowPathAnimation 750ms infinite linear alternate"},"@keyframes flowPathAnimation":{"0%":{strokeDashoffset:10},"100%":{strokeDashoffset:0}}}),p="#009688",q="#4DB6AC",r=({variant:a,id:b,source:c,target:h,sourceHandleId:r,targetHandleId:s,sourceX:t,sourceY:u,targetX:v,targetY:w,sourcePosition:x,targetPosition:y,style:z={},markerEnd:A,markerStart:B,data:C,selected:D})=>{let E,F,G=(0,i.A)(),{deleteElements:H,screenToFlowPosition:I,getNode:J}=(0,f.VH)(),[K,L]=(0,e.useState)(!1),[M,N]=(0,e.useState)(null),O=(0,e.useRef)(null),P=(0,e.useRef)(!1),Q="standard"===a&&C?.condition?(0,k.P2)(C.condition):"",R=a=>!!a&&a.includes("process")&&a.includes("resource"),S="";if("resource"===a){let a=J(c)?.type,b=J(h)?.type;"resource"===a&&"process"===b?S="consume":"process"===a&&"resource"===b||R(r)?S="produce":R(s)&&(S="consume")}let T=C?.waypoints??(C?.waypoint?[C.waypoint]:[]),U=M??T,V="standard"===a&&!!C?.bidirectional,W="mcp"===a||"resource"===a,X=x||(W?g.yX.Left:g.yX.Bottom),Y=y||(W?g.yX.Right:g.yX.Top),Z=null;if(U.length>0)E=(Z=function(a,b,c,d,e,f=8){let g=[a,...e,c],h=[a],i=[],j=b,k=(a,b)=>{let c;c=h[h.length-1],.01>Math.abs(c.x-a.x)&&.01>Math.abs(c.y-a.y)||(h.push(a),i.push(b))};for(let a=1;a<g.length;a++){let b=h[h.length-1],c=g[a],e=a-1;if(a===g.length-1){if("v"===d)if("h"===j)k({x:c.x,y:b.y},e);else{let a=(b.y+c.y)/2;k({x:b.x,y:a},e),k({x:c.x,y:a},e)}else if("v"===j)k({x:b.x,y:c.y},e);else{let a=(b.x+c.x)/2;k({x:a,y:b.y},e),k({x:a,y:c.y},e)}k(c,e)}else k("v"===j?{x:b.x,y:c.y}:{x:c.x,y:b.y},e),k(c,e),j="v"===j?"h":"v"}!function(a,b){for(let c=1;c<a.length-1;c++){let d=a[c-1],e=a[c],f=a[c+1],g=.01>Math.abs(d.x-e.x)&&.01>Math.abs(f.x-e.x)&&(e.y-d.y)*(f.y-e.y)<0,h=.01>Math.abs(d.y-e.y)&&.01>Math.abs(f.y-e.y)&&(e.x-d.x)*(f.x-e.x)<0;if(g||h){if(g){let g=(a[c-2]?.x??e.x-1)<=e.x,h=g?e.x-12:e.x+12,i=g?e.x+12:e.x-12,j=b[c-1];a.splice(c-1,3,{x:h,y:d.y},{x:h,y:e.y},{x:i,y:e.y},{x:i,y:f.y}),b.splice(c-1,2,j,j,j)}else{let g=(a[c-2]?.y??e.y-1)<=e.y,h=g?e.y-12:e.y+12,i=g?e.y+12:e.y-12,j=b[c-1];a.splice(c-1,3,{x:d.x,y:h},{x:e.x,y:h},{x:e.x,y:i},{x:f.x,y:i}),b.splice(c-1,2,j,j,j)}c++}}}(h,i);let l=[];for(let a=0;a<h.length-1;a++)l.push({a:h[a],b:h[a+1],gap:i[a]});return{d:function(a,b){if(0===a.length)return"";let c=`M ${a[0].x},${a[0].y}`;for(let d=1;d<a.length-1;d++){let e=a[d-1],f=a[d],g=a[d+1],h=Math.hypot(f.x-e.x,f.y-e.y),i=Math.hypot(g.x-f.x,g.y-f.y),j=Math.min(b,h/2,i/2);if(j<.5){c+=` L ${f.x},${f.y}`;continue}let k={x:f.x-(f.x-e.x)/h*j,y:f.y-(f.y-e.y)/h*j},l={x:f.x+(g.x-f.x)/i*j,y:f.y+(g.y-f.y)/i*j};c+=` L ${k.x},${k.y} Q ${f.x},${f.y} ${l.x},${l.y}`}let d=a[a.length-1];return c+` L ${d.x},${d.y}`}(h,f),points:h,segments:l,midpoint:function(a,b){let c=0;for(let b=0;b<a.length-1;b++)c+=Math.hypot(a[b+1].x-a[b].x,a[b+1].y-a[b].y);if(0===c)return a[0];let d=.5*c;for(let b=0;b<a.length-1;b++){let c=Math.hypot(a[b+1].x-a[b].x,a[b+1].y-a[b].y);if(d<=c){let e=0===c?0:d/c;return{x:a[b].x+(a[b+1].x-a[b].x)*e,y:a[b].y+(a[b+1].y-a[b].y)*e}}d-=c}return a[a.length-1]}(h,.5)}}({x:t,y:u},j(X),{x:v,y:w},j(Y),U,16)).d,F=Z.midpoint;else{let[a,b,c]=(0,g.oN)({sourceX:t,sourceY:u,sourcePosition:X,targetX:v,targetY:w,targetPosition:Y,borderRadius:16});E=a,F={x:b,y:c}}let $=W?"":V?"animated-both":C?.animated!==!1?"animated":"",_={...z,strokeWidth:D?3:2,stroke:"mcp"===a?D?G.palette.info.light:G.palette.info.main:"resource"===a?D?q:p:D?G.palette.primary.main:G.palette.text.secondary,..."resource"===a?{strokeDasharray:"6 4"}:{},...$?{animationDuration:`${Math.round((V?750:500)*(a=>{let b=0;for(let c=0;c<a.length;c++)b=31*b+a.charCodeAt(c)|0;return .9+Math.abs(b)%1e3/1e3*.2})(b))}ms`}:{}},aa=a=>{document.dispatchEvent(new CustomEvent(l,{detail:{edgeId:b,waypoints:a&&a.length>0?a:null}}))},ab=a=>{if(0!==a.button)return;let b=I({x:a.clientX,y:a.clientY}),c=Z?function(a,b){let c=0,d=1/0;for(let e of b){let b=function(a,b,c){let d=c.x-b.x,e=c.y-b.y,f=d*d+e*e,g=0===f?0:Math.max(0,Math.min(1,((a.x-b.x)*d+(a.y-b.y)*e)/f));return Math.hypot(a.x-(b.x+d*g),a.y-(b.y+e*g))}(a,e.a,e.b);b<d&&(d=b,c=e.gap)}return c}(b,Z.segments):0,d=[...U];d.splice(c,0,b),O.current={index:c,pointerId:a.pointerId,startClient:{x:a.clientX,y:a.clientY},base:d,active:!1,fromPath:!0},a.target.setPointerCapture(a.pointerId)},ac=a=>{let b=O.current;if(!b||a.pointerId!==b.pointerId)return;if(!b.active){if(4>Math.hypot(a.clientX-b.startClient.x,a.clientY-b.startClient.y))return;b.active=!0}let c=[...b.base];c[b.index]=I({x:a.clientX,y:a.clientY}),N(c)},ad=a=>{let b=O.current;if(!b||a.pointerId!==b.pointerId||(O.current=null,a.target.releasePointerCapture(a.pointerId),P.current=b.active,!b.active))return;let c=[...b.base];c[b.index]=I({x:a.clientX,y:a.clientY}),aa(c),N(null)},ae=null!==M,af=D||K||ae;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(o,{path:E,markerEnd:A,markerStart:B,style:_,id:b,className:$}),(0,d.jsx)("path",{d:E,fill:"none",stroke:"transparent",strokeWidth:20,style:{cursor:ae?"grabbing":"grab"},onMouseEnter:()=>L(!0),onMouseLeave:()=>L(!1),onPointerDown:ab,onPointerMove:ac,onPointerUp:ad}),(0,d.jsxs)(f.rV,{children:[Q&&(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${F.x}px,${F.y-18}px)`,pointerEvents:"none",background:G.palette.info.main,color:G.palette.info.contrastText,borderRadius:4,padding:"1px 6px",fontSize:10,fontWeight:600,whiteSpace:"nowrap",boxShadow:G.shadows[1],zIndex:1002},className:"nodrag nopan",title:`Routing condition: ${Q}`,children:Q}),S&&(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${F.x}px,${F.y-18}px)`,pointerEvents:"none",background:D?q:p,color:"#ffffff",borderRadius:4,padding:"1px 6px",fontSize:10,fontWeight:600,whiteSpace:"nowrap",boxShadow:G.shadows[1],zIndex:1002},className:"nodrag nopan",title:"consume"===S?"This step consumes (reads) the resource":"This step produces (writes) the resource",children:S}),af&&U.map((a,b)=>(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${a.x}px,${a.y}px)`,width:12,height:12,borderRadius:"50%",background:G.palette.primary.main,border:`2px solid ${G.palette.background.paper}`,boxShadow:G.shadows[1],cursor:"move",pointerEvents:"all",touchAction:"none",zIndex:1001},className:"nodrag nopan",title:"Drag to move; double-click to remove this bend",onMouseEnter:()=>L(!0),onMouseLeave:()=>L(!1),onPointerDown:a=>{0===a.button&&(a.stopPropagation(),O.current={index:b,pointerId:a.pointerId,startClient:{x:a.clientX,y:a.clientY},base:[...U],active:!1,fromPath:!1},a.target.setPointerCapture(a.pointerId))},onPointerMove:ac,onPointerUp:ad,onDoubleClick:a=>{a.stopPropagation(),(a=>{let b=U.filter((b,c)=>c!==a);N(null),aa(b)})(b)}},b)),(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${F.x+m.x}px,${F.y+m.y}px)`,pointerEvents:af&&!ae?"all":"none",opacity:af&&!ae?1:0,transition:"opacity 120ms ease",zIndex:1e3},className:"nodrag nopan",onMouseEnter:()=>L(!0),onMouseLeave:()=>L(!1),children:(0,d.jsx)(n,{title:"Delete connection (drag to re-route)",style:{touchAction:"none"},onPointerDown:ab,onPointerMove:ac,onPointerUp:ad,onClick:a=>{if(a.stopPropagation(),P.current){P.current=!1;return}H({edges:[{id:b}]})},children:"\xd7"})})]})]})}},98502:(a,b,c)=>{c.d(b,{E9:()=>f,RN:()=>e,n9:()=>d});let d="handoff_to_";function e(a,b){let c=(a&&a.trim()||b&&b.trim()||"node").toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"");return c.length>48&&(c=c.slice(0,48).replace(/_+$/g,"")),c||(c=b&&b.trim().toLowerCase().replace(/[^a-z0-9]+/g,"_")||"node"),c||"node"}function f(a){let b=new Set,c=new Map;for(let f of a){if(c.has(f.id))continue;let a=e(f.label,f.type),g=`${d}${a}`;if(b.has(g)){let c=2;for(;b.has(`${d}${a}_${c}`);)c++;g=`${d}${a}_${c}`}b.add(g),c.set(f.id,g)}return c}}};
|
|
8
|
+
`,backgroundSize:"28px 28px, 28px 28px, auto",boxShadow:"dark"===a.palette.mode?"inset 0 1px 0 rgba(255,255,255,.035), 0 22px 65px rgba(0,0,0,.24)":"inset 0 1px 0 rgba(255,255,255,.7), 0 22px 65px rgba(53,48,105,.1)",position:"relative",[a.breakpoints.down("sm")]:{flex:"none",height:440,minHeight:440,maxWidth:"100%"}})),$=(0,e.forwardRef)((a,b)=>{let c=(0,p.A)(),f=(0,m.A)(c.breakpoints.down("sm"),{noSsr:!0}),{nodes:g,edges:h,onNodesChange:i,onEdgesChange:j,onDrop:k,onDragOver:l,onInit:q,reactFlowWrapper:r,onEditNode:v,onCreateNode:w,onSelectNode:x,onConvertProcessToSubflow:y,onEditEdge:z}=a,{contextMenu:A,selectedElements:B,closeContextMenu:C,handleDelete:D,onNodeContextMenu:E,onEdgeContextMenu:F,onPaneContextMenu:G,onSelectionContextMenu:J}=function(a){let{deleteElements:b}=(0,n.VH)(),{t:c}=(0,H.s9)(),[d,f]=(0,e.useState)({open:!1,position:{x:0,y:0}}),[g,h]=(0,e.useState)({nodes:[],edges:[]});(0,n.p4)({onChange:({nodes:a,edges:b})=>{let c=a.map(a=>a.id),d=b.map(a=>a.id);N.debug(`Selection changed: ${c.length} nodes, ${d.length} edges selected`),h({nodes:c,edges:d})}});let i=(0,e.useCallback)((a,b,c,d)=>{a.preventDefault(),b?N.debug(`Context menu opened for node: ${b}`):c?N.debug(`Context menu opened for edge: ${c}`):d?N.debug("Context menu opened for the current selection"):N.debug(`Context menu opened on canvas at (${a.clientX}, ${a.clientY})`),f({open:!0,position:{x:a.clientX,y:a.clientY},nodeId:b,edgeId:c,selection:d})},[]),j=(0,e.useCallback)(()=>{N.debug("Context menu closed"),f(a=>({...a,open:!1}))},[]),k=(0,e.useCallback)(()=>{if(d.selection)N.debug("handleDelete: Deleting the current selection"),b({nodes:g.nodes.map(a=>({id:a})),edges:g.edges.map(a=>({id:a}))});else if(d.nodeId){if(N.debug(`handleDelete: Attempting to delete node ${d.nodeId}`),!function(a,b){let c=L(a,b);return!!c&&"start"!==c.type}(d.nodeId,a)){N.warn(`Cannot delete Start node: ${d.nodeId}`),alert(c("flows.canvas.startProtected"));return}b({nodes:[{id:d.nodeId}]})}else d.edgeId&&(N.debug(`handleDelete: Deleting edge ${d.edgeId}`),b({edges:[{id:d.edgeId}]}))},[d,b,a,g,c]),l=(0,e.useCallback)((a,b)=>{i(a,b.id)},[i]),m=(0,e.useCallback)((a,b)=>{i(a,void 0,b.id)},[i]),o=(0,e.useCallback)(a=>{i(a)},[i]),p=(0,e.useCallback)(a=>{i(a,void 0,void 0,!0)},[i]);return{contextMenu:d,selectedElements:g,onContextMenu:i,closeContextMenu:j,handleDelete:k,onNodeContextMenu:l,onEdgeContextMenu:m,onPaneContextMenu:o,onSelectionContextMenu:p}}(g),{deleteElements:M}=(0,n.VH)(),R=(0,n.PI)(),$=(0,e.useRef)(null),[_,aa]=(0,e.useState)(null),[ab,ac]=(0,e.useState)({open:!1,position:null}),ad=(0,e.useCallback)(a=>[...g.filter(a=>a.selected).map(a=>({type:"select",id:a.id,selected:!1})),{type:"add",item:{...a,selected:!0}}],[g]);(0,e.useEffect)(()=>{if(!v)return;let a=a=>{if(a.detail&&a.detail.nodeId){let b=L(a.detail.nodeId,g);b&&v(b)}};return document.addEventListener("editNode",a),()=>{document.removeEventListener("editNode",a)}},[g,v]),(0,e.useEffect)(()=>{let a=a=>{let b=a.detail?.nodeId;if(!b)return;let c=L(b,g);c&&(i([...g.filter(a=>a.selected&&a.id!==b).map(a=>({type:"select",id:a.id,selected:!1})),{type:"select",id:b,selected:!0}]),x?.(c))};return document.addEventListener("selectNode",a),()=>document.removeEventListener("selectNode",a)},[g,i,x]);let ae=(0,e.useCallback)(a=>{if(!a.sourceHandle||!a.targetHandle)return void S.error("Invalid connection: Missing source or target handle",a);let b=R.getState().connection.fromHandle?.type==="target";if(!(0,O.JL)(a,g,h))return;let d=(0,O.wn)(a,g);if(d.data?.edgeType==="standard"){let d=a=>a.data?.edgeType!=="mcp",e=a=>!!a.data?.bidirectional,f=h.find(b=>d(b)&&b.source===a.source&&b.target===a.target),i=h.find(b=>d(b)&&b.source===a.target&&b.target===a.source),k=a=>{S.info(`Merging reverse connection into bidirectional edge ${a.id}`),j([{type:"replace",id:a.id,item:{...a,data:{...a.data,bidirectional:!0},markerStart:{type:o.TG.ArrowClosed,width:20,height:20,color:c.palette.text.secondary}}}])};if(b){let a=f??i;return a?void(!e(a)&&(0,O.y2)(a,g,h)&&k(a)):void S.info("Connection drawn from a top handle is only allowed to convert an existing edge to bidirectional")}if(f&&e(f))return;if(i){!e(i)&&(0,O.y2)(i,g,h)&&k(i);return}}j([...(0,O.Cm)(d,h).map(a=>({type:"remove",id:a})),{type:"add",item:d}])},[g,h,j,R,c.palette.text.secondary]),af=(0,e.useCallback)(a=>(0,O.p9)(a,g,h),[g,h]);(0,e.useEffect)(()=>{let a=a=>{let{edgeId:b,waypoints:c}=a.detail,d=h.find(a=>a.id===b);if(!d)return;let{waypoint:e,...f}=d.data??{};j([{type:"replace",id:b,item:{...d,data:{...f,waypoints:c??void 0}}}])};return document.addEventListener(K.R,a),()=>document.removeEventListener(K.R,a)},[h,j]);let ag=(0,e.useCallback)(async({nodes:a,edges:b})=>{let c=a.filter(a=>"start"!==a.type),d=new Set(c.map(a=>a.id)),e=new Set(a.map(a=>a.id)),f=b.filter(a=>!!(a.selected||d.has(a.source)||d.has(a.target))||!(e.has(a.source)||e.has(a.target))),g=c.filter(a=>"trigger"===a.type);return g.length>0&&await Promise.all(g.map(async a=>{let b=a.data?.properties?.executionId;if("string"==typeof b&&b)try{await u.P.update(b,{enabled:!1})}catch(a){console.warn("TriggerNode: failed to disarm PlannedExecution",b,a)}})),(0!==c.length||0!==f.length)&&{nodes:c,edges:f}},[]),ah=(0,e.useCallback)(a=>{aa(a),q&&q(a)},[q]),ai=(0,e.useCallback)(()=>{if(A.nodeId&&v){let a=L(A.nodeId,g);a&&v(a)}else if(A.edgeId&&z){let a=h.find(a=>a.id===A.edgeId);a&&z(a)}},[A.nodeId,A.edgeId,g,h,v,z]),aj=(0,e.useCallback)(()=>{if(!A.nodeId||!y)return;let a=L(A.nodeId,g);(a?.type==="process"||a?.data?.type==="process")&&y(a)},[A.nodeId,g,y]),ak=(0,e.useCallback)(()=>{let a;if(!A.edgeId)return;let b=h.find(a=>a.id===A.edgeId);if(!b)return;if(b.data?.edgeType!=="standard")return void S.debug(`Toggle bidirectional ignored for non-standard edge ${b.id}`);let d=!!b.data?.bidirectional;if(!d&&!(0,O.y2)(b,g,h))return void S.info(`Edge ${b.id} cannot be made bidirectional (reverse direction is not a legal connection)`);let e={...b.data??{},bidirectional:!d};if(d){let{markerStart:c,...d}=b;a={...d,data:e}}else a={...b,data:e,markerStart:{type:o.TG.ArrowClosed,width:20,height:20,color:c.palette.text.secondary}};j([{type:"replace",id:b.id,item:a}])},[A.edgeId,h,g,j,c.palette.text.secondary]),al=(0,e.useCallback)((a,b)=>{a.preventDefault(),v&&v(b)},[v]),am=(0,e.useCallback)((a,b)=>{let{fromNode:c,fromHandle:d,toHandle:e}=b;if(!c||!d?.id||!_)return void S.debug("onConnectEnd: No valid connection start data");S.debug(`onConnectEnd: Connection ended from node ${c.id}, handle ${d.id}`);let f="subflow"===c.type&&h.some(a=>{let b=a.data;return b?.edgeType!=="mcp"&&b?.edgeType!=="resource"&&(a.source===c.id||a.target===c.id&&!!b?.bidirectional)}),g=!!a.target?.closest?.(".react-flow__pane");if(!function(a){let{fromNodeType:b,fromHandleType:c,fromHandleId:d,landedOnHandle:e,droppedOnPane:f,subflowHasOutgoing:g}=a;return!e&&!!f&&!!d&&("target"!==c||!!(0,P.z5)(d))&&("subflow"!==b||"source"!==c||!g)}({fromNodeType:c.type,fromHandleType:d.type,fromHandleId:d.id,landedOnHandle:!!e,droppedOnPane:g,subflowHasOutgoing:f}))return;let i=a instanceof MouseEvent?a:a.changedTouches[0],j=_.screenToFlowPosition({x:i.clientX,y:i.clientY});S.debug(`onConnectEnd: Connection dropped on pane at position (${j.x}, ${j.y})`),ac({open:!0,position:j,screenPosition:{x:i.clientX,y:i.clientY},sourceNodeId:c.id,sourceNodeType:c.type,sourceHandleId:d.id})},[_,h]),an=(0,e.useCallback)((a,b)=>{if(S.debug(`handleNodeTypeSelection: Selected node type ${a} at position (${b.x}, ${b.y})`),"trigger"===a&&g.some(a=>"trigger"===a.type))return void ac({open:!1,position:null});let c=t.g.createNode(a,b),{sourceNodeId:d,sourceHandleId:e}=ab,f=d?L(d,g):void 0,k=null;if(f&&e&&(k={source:f.id,sourceHandle:e,target:c.id,targetHandle:(0,P.CW)(a,e)},!(0,O.JL)(k,[...g,c],h)))return void ac({open:!1,position:null});let l=w?w(a,b,c):c;if(!l)return void ac({open:!1,position:null});if(w||i(ad(l)),k){S.debug(`handleNodeTypeSelection: Creating connection from ${k.source} to ${k.target}`);let a=(0,O.wn)(k,[...g,l]);j([...(0,O.Cm)(a,h).map(a=>({type:"remove",id:a})),{type:"add",item:a}]),S.debug(`handleNodeTypeSelection: Edge created with id ${a.id}`)}ac({open:!1,position:null}),x?.(l)},[ab,g,h,ad,i,j,w,x]),ao=(0,e.useCallback)(()=>{S.debug("handleCloseNodeSelectionModal: Closing node selection modal"),ac({open:!1,position:null})},[]),ap=(0,e.useCallback)(()=>{let a=new Set(B.nodes),b=g.filter(b=>a.has(b.id)&&"start"!==b.type);if(0===b.length)return!1;let c=new Set(b.map(a=>a.id)),d=h.filter(a=>c.has(a.source)&&c.has(a.target));return V({nodes:JSON.parse(JSON.stringify(b)),edges:JSON.parse(JSON.stringify(d))}),S.debug(`Copied ${b.length} node(s) and ${d.length} edge(s)`),!0},[B,g,h]),aq=(0,e.useCallback)(()=>{let a=U;if(!a)try{let b=localStorage.getItem(T);b&&(a=JSON.parse(b))}catch(a){S.warn("Could not read flow clipboard from localStorage",a)}if(!a||!a.nodes||0===a.nodes.length)return void S.debug("Paste requested but clipboard is empty");let b=new Map;a.nodes.forEach(a=>b.set(a.id,(0,s.A)()));let c=a.nodes.map(a=>({...a,id:b.get(a.id),position:{x:(a.position?.x??0)+40,y:(a.position?.y??0)+40},selected:!0,data:{...a.data}})),d=(a.edges||[]).filter(a=>b.has(a.source)&&b.has(a.target)).map(a=>({...a,id:(0,s.A)(),source:b.get(a.source),target:b.get(a.target),selected:!1}));i([...g.filter(a=>a.selected).map(a=>({type:"select",id:a.id,selected:!1})),...c.map(a=>({type:"add",item:a}))]),d.length>0&&j(d.map(a=>({type:"add",item:a}))),S.info(`Pasted ${c.length} node(s) and ${d.length} edge(s)`)},[g,i,j]),ar=(0,e.useCallback)(a=>{let b=a.ctrlKey||a.metaKey,c=a.key.toLowerCase();if(b&&"c"===c){ap()&&a.preventDefault();return}if(b&&"x"===c){ap()&&(a.preventDefault(),M({nodes:B.nodes.map(a=>({id:a})),edges:B.edges.map(a=>({id:a}))}));return}if(b&&"v"===c){a.preventDefault(),aq();return}},[ap,aq,M,B]),as=(0,e.useCallback)(()=>{if(A.nodeId&&!B.nodes.includes(A.nodeId)){let a=g.find(a=>a.id===A.nodeId);a&&"start"!==a.type&&(V({nodes:JSON.parse(JSON.stringify([a])),edges:[]}),S.debug("Copied right-clicked node to clipboard"));return}ap()},[A.nodeId,B,g,ap]),at=(0,e.useMemo)(()=>{if(U)return!0;try{return!!localStorage.getItem(T)}catch{return!1}},[A.open]),au=(0,e.useMemo)(()=>{if(A.selection){let a=new Set(B.nodes);return g.some(b=>a.has(b.id)&&"start"!==b.type)}if(A.nodeId){let a=g.find(a=>a.id===A.nodeId);return!!a&&"start"!==a.type}return!1},[A.selection,A.nodeId,B,g]);return(0,d.jsxs)(Z,{style:f?{flex:"none",width:"100%",maxWidth:"100%",height:440,minHeight:440}:void 0,ref:a=>{b&&("function"==typeof b?b(a):b.current=a),r&&(r.current=a),$.current=a},children:[(0,d.jsx)(n.Gc,{nodes:g,edges:h,nodeTypes:W,edgeTypes:X,defaultEdgeOptions:(0,e.useMemo)(()=>({type:"custom",animated:!1,style:{stroke:c.palette.text.secondary,strokeWidth:2},markerEnd:{type:o.TG.ArrowClosed,width:20,height:20,color:c.palette.text.secondary}}),[c.palette.text.secondary]),connectionLineType:o.Do.SmoothStep,connectionMode:o.WZ.Loose,isValidConnection:af,onNodesChange:i,onEdgesChange:j,onConnect:ae,onBeforeDelete:ag,deleteKeyCode:["Backspace","Delete"],onDrop:k,onDragOver:l,onInit:ah,onNodeContextMenu:E,onEdgeContextMenu:F,onPaneContextMenu:G,onSelectionContextMenu:J,onKeyDown:ar,onNodeDoubleClick:al,onNodeClick:(a,b)=>x?.(b),onConnectEnd:am,tabIndex:0,fitView:!0,attributionPosition:"bottom-right",minZoom:.1,maxZoom:2,snapToGrid:!0,snapGrid:[15,15],connectOnClick:!1,children:(0,d.jsx)(Q,{})}),(0,d.jsx)(I,{open:A.open,position:A.position,onClose:C,onDelete:D,onEditProperties:ai,onConvertToSubflow:y&&A.nodeId&&g.find(a=>a.id===A.nodeId)?.type==="process"?aj:void 0,onToggleBidirectional:ak,onCopy:as,onPaste:aq,canPaste:at,canCopy:au,nodeId:A.nodeId,selection:A.selection,edgeId:A.edgeId}),(0,d.jsx)(Y,{open:ab.open,position:ab.position,anchorPosition:ab.screenPosition,onClose:ao,onSelectNodeType:an,sourceNodeType:ab.sourceNodeType,sourceHandleId:ab.sourceHandleId})]})});$.displayName="Canvas";let _=$},74855:(a,b,c)=>{c.d(b,{MG:()=>e,Ud:()=>f});var d=c(46973);d.TG.ArrowClosed;let e={type:"resourceEdge",animated:!1,style:{stroke:"#009688",strokeWidth:2},markerEnd:{type:d.TG.ArrowClosed,width:20,height:20,color:"#009688"}},f={type:"mcpEdge",animated:!1,style:{stroke:"#1976d2",strokeWidth:2},markerEnd:{type:d.TG.ArrowClosed,width:20,height:20,color:"#1976d2"},markerStart:{type:d.TG.ArrowClosed,width:20,height:20,color:"#1976d2"}}},90430:(a,b,c)=>{c.d(b,{Cm:()=>l,JL:()=>i,p9:()=>h,wn:()=>j,y2:()=>k});var d=c(74855),e=c(36627);function f(a,b,c){return b.filter(b=>!(0,e.BY)(b)&&(b.source===a?b.target!==c:!!(b.target===a&&b.data?.bidirectional)&&b.source!==c))}function g(a,b,c=[]){if(!a.source||!a.target||!a.sourceHandle||!a.targetHandle)return"Missing source, target, or handles";let d=b.find(b=>b.id===a.source),h=b.find(b=>b.id===a.target);if(!d||!h)return"Source or target node not found";let i=(0,e.vC)(d.type,a.sourceHandle,h.type,a.targetHandle);return i||("subflow"===d.type&&f(d.id,c,a.target).length>0?"Subflow nodes can only have one outgoing connection":null)}function h(a,b,c=[]){return null===g(a,b,c)}function i(a,b,c=[]){let d=g(a,b,c);return!d||(console.error(`Invalid connection: ${d}`,a),!1)}function j(a,b,c){let f=b.find(b=>b.id===a.source),g=b.find(b=>b.id===a.target),h=a.sourceHandle,i=a.targetHandle,j=f?.type==="mcp"||g?.type==="mcp"||(0,e.z5)(h)||(0,e.z5)(i),k=!j&&(f?.type==="resource"||g?.type==="resource"||(0,e.vM)(h)||(0,e.vM)(i)),l=`${a.source}:${h}->${a.target}:${i}`;return j?{id:l,...a,type:"mcpEdge",data:{edgeType:"mcp"},animated:!1,markerEnd:d.Ud.markerEnd,markerStart:d.Ud.markerStart,style:d.Ud.style}:k?{id:l,...a,type:"resourceEdge",data:{edgeType:"resource"},animated:!1,markerEnd:d.MG.markerEnd,style:d.MG.style}:{id:l,...a,type:"custom",data:{edgeType:"standard",...c?{condition:c}:{}},animated:!0}}function k(a,b,c=[]){let d=b.find(b=>b.id===a.source),g=b.find(b=>b.id===a.target);return!!d&&!!g&&("subflow"!==g.type||!(f(g.id,c,a.source).length>0))&&null===(0,e.vC)(g.type,null,d.type,null)}function l(a,b){let c=a=>a.data?.edgeType,d=a=>"mcp"===c(a),e=a=>"resource"===c(a);return b.filter(b=>b.id===a.id||(d(a)?d(b)&&(b.source===a.source&&b.target===a.target||b.source===a.target&&b.target===a.source):e(a)?e(b)&&b.source===a.source&&b.target===a.target:!d(b)&&!e(b)&&b.source===a.source&&b.target===a.target)).map(a=>a.id)}},97004:(a,b,c)=>{c.d(b,{R:()=>m,A:()=>s});var d=c(21124),e=c(38301),f=c(95791),g=c(46973),h=c(18168),i=c(60839);function j(a){return a===g.yX.Left||a===g.yX.Right?"h":"v"}var k=c(29237),l=c(18305);let m="flowEdgeWaypoint",n={x:16,y:-16},o=(0,h.Ay)("button")(({theme:a})=>({background:a.palette.background.paper,border:`1px solid ${a.palette.divider}`,cursor:"pointer",borderRadius:"50%",fontSize:"10px",width:"20px",height:"20px",display:"flex",justifyContent:"center",alignItems:"center",color:a.palette.text.secondary,boxShadow:"dark"===a.palette.mode?"0 2px 4px rgba(0,0,0,0.3)":"0 2px 4px rgba(0,0,0,0.1)","&:hover":{background:a.palette.error.main,borderColor:a.palette.error.main,color:a.palette.error.contrastText}})),p=(0,h.Ay)(f.tE)({"&&.animated":{strokeDasharray:5,animation:"flowPathAnimation 500ms infinite linear"},"&&.animated-both":{strokeDasharray:5,animation:"flowPathAnimation 750ms infinite linear alternate"},"@keyframes flowPathAnimation":{"0%":{strokeDashoffset:10},"100%":{strokeDashoffset:0}}}),q="#009688",r="#4DB6AC",s=({variant:a,id:b,source:c,target:h,sourceHandleId:s,targetHandleId:t,sourceX:u,sourceY:v,targetX:w,targetY:x,sourcePosition:y,targetPosition:z,style:A={},markerEnd:B,markerStart:C,data:D,selected:E})=>{let F,G,H=(0,i.A)(),{t:I}=(0,l.s9)(),{deleteElements:J,screenToFlowPosition:K,getNode:L}=(0,f.VH)(),[M,N]=(0,e.useState)(!1),[O,P]=(0,e.useState)(null),Q=(0,e.useRef)(null),R=(0,e.useRef)(!1),S="standard"===a&&D?.condition?(0,k.P2)(D.condition,{contains:I("flows.edge.condition.contains"),regex:I("flows.edge.condition.regex"),equals:I("flows.edge.condition.equals"),always:I("flows.edge.condition.always")}):"",T=a=>!!a&&a.includes("process")&&a.includes("resource"),U="";if("resource"===a){let a=L(c)?.type,b=L(h)?.type;"resource"===a&&"process"===b?U="consume":"process"===a&&"resource"===b||T(s)?U="produce":T(t)&&(U="consume")}let V=D?.waypoints??(D?.waypoint?[D.waypoint]:[]),W=O??V,X="standard"===a&&!!D?.bidirectional,Y="mcp"===a||"resource"===a,Z=y||(Y?g.yX.Left:g.yX.Bottom),$=z||(Y?g.yX.Right:g.yX.Top),_=null;if(W.length>0)F=(_=function(a,b,c,d,e,f=8){let g=[a,...e,c],h=[a],i=[],j=b,k=(a,b)=>{let c;c=h[h.length-1],.01>Math.abs(c.x-a.x)&&.01>Math.abs(c.y-a.y)||(h.push(a),i.push(b))};for(let a=1;a<g.length;a++){let b=h[h.length-1],c=g[a],e=a-1;if(a===g.length-1){if("v"===d)if("h"===j)k({x:c.x,y:b.y},e);else{let a=(b.y+c.y)/2;k({x:b.x,y:a},e),k({x:c.x,y:a},e)}else if("v"===j)k({x:b.x,y:c.y},e);else{let a=(b.x+c.x)/2;k({x:a,y:b.y},e),k({x:a,y:c.y},e)}k(c,e)}else k("v"===j?{x:b.x,y:c.y}:{x:c.x,y:b.y},e),k(c,e),j="v"===j?"h":"v"}!function(a,b){for(let c=1;c<a.length-1;c++){let d=a[c-1],e=a[c],f=a[c+1],g=.01>Math.abs(d.x-e.x)&&.01>Math.abs(f.x-e.x)&&(e.y-d.y)*(f.y-e.y)<0,h=.01>Math.abs(d.y-e.y)&&.01>Math.abs(f.y-e.y)&&(e.x-d.x)*(f.x-e.x)<0;if(g||h){if(g){let g=(a[c-2]?.x??e.x-1)<=e.x,h=g?e.x-12:e.x+12,i=g?e.x+12:e.x-12,j=b[c-1];a.splice(c-1,3,{x:h,y:d.y},{x:h,y:e.y},{x:i,y:e.y},{x:i,y:f.y}),b.splice(c-1,2,j,j,j)}else{let g=(a[c-2]?.y??e.y-1)<=e.y,h=g?e.y-12:e.y+12,i=g?e.y+12:e.y-12,j=b[c-1];a.splice(c-1,3,{x:d.x,y:h},{x:e.x,y:h},{x:e.x,y:i},{x:f.x,y:i}),b.splice(c-1,2,j,j,j)}c++}}}(h,i);let l=[];for(let a=0;a<h.length-1;a++)l.push({a:h[a],b:h[a+1],gap:i[a]});return{d:function(a,b){if(0===a.length)return"";let c=`M ${a[0].x},${a[0].y}`;for(let d=1;d<a.length-1;d++){let e=a[d-1],f=a[d],g=a[d+1],h=Math.hypot(f.x-e.x,f.y-e.y),i=Math.hypot(g.x-f.x,g.y-f.y),j=Math.min(b,h/2,i/2);if(j<.5){c+=` L ${f.x},${f.y}`;continue}let k={x:f.x-(f.x-e.x)/h*j,y:f.y-(f.y-e.y)/h*j},l={x:f.x+(g.x-f.x)/i*j,y:f.y+(g.y-f.y)/i*j};c+=` L ${k.x},${k.y} Q ${f.x},${f.y} ${l.x},${l.y}`}let d=a[a.length-1];return c+` L ${d.x},${d.y}`}(h,f),points:h,segments:l,midpoint:function(a,b){let c=0;for(let b=0;b<a.length-1;b++)c+=Math.hypot(a[b+1].x-a[b].x,a[b+1].y-a[b].y);if(0===c)return a[0];let d=.5*c;for(let b=0;b<a.length-1;b++){let c=Math.hypot(a[b+1].x-a[b].x,a[b+1].y-a[b].y);if(d<=c){let e=0===c?0:d/c;return{x:a[b].x+(a[b+1].x-a[b].x)*e,y:a[b].y+(a[b+1].y-a[b].y)*e}}d-=c}return a[a.length-1]}(h,.5)}}({x:u,y:v},j(Z),{x:w,y:x},j($),W,16)).d,G=_.midpoint;else{let[a,b,c]=(0,g.oN)({sourceX:u,sourceY:v,sourcePosition:Z,targetX:w,targetY:x,targetPosition:$,borderRadius:16});F=a,G={x:b,y:c}}let aa=Y?"":X?"animated-both":D?.animated!==!1?"animated":"",ab={...A,strokeWidth:E?3:2,stroke:"mcp"===a?E?H.palette.info.light:H.palette.info.main:"resource"===a?E?r:q:E?H.palette.primary.main:H.palette.text.secondary,..."resource"===a?{strokeDasharray:"6 4"}:{},...aa?{animationDuration:`${Math.round((X?750:500)*(a=>{let b=0;for(let c=0;c<a.length;c++)b=31*b+a.charCodeAt(c)|0;return .9+Math.abs(b)%1e3/1e3*.2})(b))}ms`}:{}},ac=a=>{document.dispatchEvent(new CustomEvent(m,{detail:{edgeId:b,waypoints:a&&a.length>0?a:null}}))},ad=a=>{if(0!==a.button)return;let b=K({x:a.clientX,y:a.clientY}),c=_?function(a,b){let c=0,d=1/0;for(let e of b){let b=function(a,b,c){let d=c.x-b.x,e=c.y-b.y,f=d*d+e*e,g=0===f?0:Math.max(0,Math.min(1,((a.x-b.x)*d+(a.y-b.y)*e)/f));return Math.hypot(a.x-(b.x+d*g),a.y-(b.y+e*g))}(a,e.a,e.b);b<d&&(d=b,c=e.gap)}return c}(b,_.segments):0,d=[...W];d.splice(c,0,b),Q.current={index:c,pointerId:a.pointerId,startClient:{x:a.clientX,y:a.clientY},base:d,active:!1,fromPath:!0},a.target.setPointerCapture(a.pointerId)},ae=a=>{let b=Q.current;if(!b||a.pointerId!==b.pointerId)return;if(!b.active){if(4>Math.hypot(a.clientX-b.startClient.x,a.clientY-b.startClient.y))return;b.active=!0}let c=[...b.base];c[b.index]=K({x:a.clientX,y:a.clientY}),P(c)},af=a=>{let b=Q.current;if(!b||a.pointerId!==b.pointerId||(Q.current=null,a.target.releasePointerCapture(a.pointerId),R.current=b.active,!b.active))return;let c=[...b.base];c[b.index]=K({x:a.clientX,y:a.clientY}),ac(c),P(null)},ag=null!==O,ah=E||M||ag;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(p,{path:F,markerEnd:B,markerStart:C,style:ab,id:b,className:aa}),(0,d.jsx)("path",{d:F,fill:"none",stroke:"transparent",strokeWidth:20,style:{cursor:ag?"grabbing":"grab"},onMouseEnter:()=>N(!0),onMouseLeave:()=>N(!1),onPointerDown:ad,onPointerMove:ae,onPointerUp:af}),(0,d.jsxs)(f.rV,{children:[S&&(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${G.x}px,${G.y-18}px)`,pointerEvents:"none",background:H.palette.info.main,color:H.palette.info.contrastText,borderRadius:4,padding:"1px 6px",fontSize:10,fontWeight:600,whiteSpace:"nowrap",boxShadow:H.shadows[1],zIndex:1002},className:"nodrag nopan",title:I("flows.edge.routingCondition",{condition:S}),children:S}),U&&(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${G.x}px,${G.y-18}px)`,pointerEvents:"none",background:E?r:q,color:"#ffffff",borderRadius:4,padding:"1px 6px",fontSize:10,fontWeight:600,whiteSpace:"nowrap",boxShadow:H.shadows[1],zIndex:1002},className:"nodrag nopan",title:"consume"===U?I("flows.edge.consumeHelp"):I("flows.edge.produceHelp"),children:"consume"===U?I("flows.edge.consume"):I("flows.edge.produce")}),ah&&W.map((a,b)=>(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${a.x}px,${a.y}px)`,width:12,height:12,borderRadius:"50%",background:H.palette.primary.main,border:`2px solid ${H.palette.background.paper}`,boxShadow:H.shadows[1],cursor:"move",pointerEvents:"all",touchAction:"none",zIndex:1001},className:"nodrag nopan",title:I("flows.edge.bendHelp"),onMouseEnter:()=>N(!0),onMouseLeave:()=>N(!1),onPointerDown:a=>{0===a.button&&(a.stopPropagation(),Q.current={index:b,pointerId:a.pointerId,startClient:{x:a.clientX,y:a.clientY},base:[...W],active:!1,fromPath:!1},a.target.setPointerCapture(a.pointerId))},onPointerMove:ae,onPointerUp:af,onDoubleClick:a=>{a.stopPropagation(),(a=>{let b=W.filter((b,c)=>c!==a);P(null),ac(b)})(b)}},b)),(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${G.x+n.x}px,${G.y+n.y}px)`,pointerEvents:ah&&!ag?"all":"none",opacity:ah&&!ag?1:0,transition:"opacity 120ms ease",zIndex:1e3},className:"nodrag nopan",onMouseEnter:()=>N(!0),onMouseLeave:()=>N(!1),children:(0,d.jsx)(o,{title:I("flows.edge.deleteHelp"),style:{touchAction:"none"},onPointerDown:ad,onPointerMove:ae,onPointerUp:af,onClick:a=>{if(a.stopPropagation(),R.current){R.current=!1;return}J({edges:[{id:b}]})},children:"\xd7"})})]})]})}},98502:(a,b,c)=>{c.d(b,{E9:()=>f,RN:()=>e,n9:()=>d});let d="handoff_to_";function e(a,b){let c=(a&&a.trim()||b&&b.trim()||"node").toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"");return c.length>48&&(c=c.slice(0,48).replace(/_+$/g,"")),c||(c=b&&b.trim().toLowerCase().replace(/[^a-z0-9]+/g,"_")||"node"),c||"node"}function f(a){let b=new Set,c=new Map;for(let f of a){if(c.has(f.id))continue;let a=e(f.label,f.type),g=`${d}${a}`;if(b.has(g)){let c=2;for(;b.has(`${d}${a}_${c}`);)c++;g=`${d}${a}_${c}`}b.add(g),c.set(f.id,g)}return c}}};
|