@igoruehara/canvas-flow 0.1.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/LICENSE +21 -0
- package/README.md +152 -0
- package/bin/canvas-flow.js +1132 -0
- package/package.json +68 -0
- package/public/assets/index-PCQkqMUe.css +1 -0
- package/public/assets/index-qV8twxcq.js +767 -0
- package/public/index.html +13 -0
- package/server/api-key/api-key-connect-provider.d.ts +104 -0
- package/server/api-key/api-key-connect-provider.js +14 -0
- package/server/api-key/api-key-connect-provider.js.map +1 -0
- package/server/api-key/api-key-constants-model.d.ts +2 -0
- package/server/api-key/api-key-constants-model.js +6 -0
- package/server/api-key/api-key-constants-model.js.map +1 -0
- package/server/api-key/api-key-controller.d.ts +12 -0
- package/server/api-key/api-key-controller.js +86 -0
- package/server/api-key/api-key-controller.js.map +1 -0
- package/server/api-key/api-key-module.d.ts +2 -0
- package/server/api-key/api-key-module.js +27 -0
- package/server/api-key/api-key-module.js.map +1 -0
- package/server/api-key/api-key-schema.d.ts +72 -0
- package/server/api-key/api-key-schema.js +98 -0
- package/server/api-key/api-key-schema.js.map +1 -0
- package/server/api-key/api-key-service.d.ts +45 -0
- package/server/api-key/api-key-service.js +151 -0
- package/server/api-key/api-key-service.js.map +1 -0
- package/server/api-key/dto/create-api-key.dto.d.ts +8 -0
- package/server/api-key/dto/create-api-key.dto.js +7 -0
- package/server/api-key/dto/create-api-key.dto.js.map +1 -0
- package/server/app.module.d.ts +2 -0
- package/server/app.module.js +53 -0
- package/server/app.module.js.map +1 -0
- package/server/auth/auth-connect-provider.d.ts +140 -0
- package/server/auth/auth-connect-provider.js +20 -0
- package/server/auth/auth-connect-provider.js.map +1 -0
- package/server/auth/auth-constants-model.d.ts +4 -0
- package/server/auth/auth-constants-model.js +8 -0
- package/server/auth/auth-constants-model.js.map +1 -0
- package/server/auth/auth-controller.d.ts +25 -0
- package/server/auth/auth-controller.js +96 -0
- package/server/auth/auth-controller.js.map +1 -0
- package/server/auth/auth-module.d.ts +2 -0
- package/server/auth/auth-module.js +26 -0
- package/server/auth/auth-module.js.map +1 -0
- package/server/auth/auth-organization-schema.d.ts +44 -0
- package/server/auth/auth-organization-schema.js +62 -0
- package/server/auth/auth-organization-schema.js.map +1 -0
- package/server/auth/auth-schema.d.ts +56 -0
- package/server/auth/auth-schema.js +77 -0
- package/server/auth/auth-schema.js.map +1 -0
- package/server/auth/auth-service.d.ts +64 -0
- package/server/auth/auth-service.js +343 -0
- package/server/auth/auth-service.js.map +1 -0
- package/server/canvas-flow/canvas-flow-connect-provider.d.ts +278 -0
- package/server/canvas-flow/canvas-flow-connect-provider.js +24 -0
- package/server/canvas-flow/canvas-flow-connect-provider.js.map +1 -0
- package/server/canvas-flow/canvas-flow-constants-model.d.ts +6 -0
- package/server/canvas-flow/canvas-flow-constants-model.js +10 -0
- package/server/canvas-flow/canvas-flow-constants-model.js.map +1 -0
- package/server/canvas-flow/canvas-flow-controller.d.ts +98 -0
- package/server/canvas-flow/canvas-flow-controller.js +423 -0
- package/server/canvas-flow/canvas-flow-controller.js.map +1 -0
- package/server/canvas-flow/canvas-flow-module.d.ts +2 -0
- package/server/canvas-flow/canvas-flow-module.js +27 -0
- package/server/canvas-flow/canvas-flow-module.js.map +1 -0
- package/server/canvas-flow/canvas-flow-schema.d.ts +192 -0
- package/server/canvas-flow/canvas-flow-schema.js +239 -0
- package/server/canvas-flow/canvas-flow-schema.js.map +1 -0
- package/server/canvas-flow/canvas-flow-service.d.ts +250 -0
- package/server/canvas-flow/canvas-flow-service.js +1681 -0
- package/server/canvas-flow/canvas-flow-service.js.map +1 -0
- package/server/canvas-flow/dto/create-canvas-flow.dto.d.ts +11 -0
- package/server/canvas-flow/dto/create-canvas-flow.dto.js +61 -0
- package/server/canvas-flow/dto/create-canvas-flow.dto.js.map +1 -0
- package/server/canvas-flow/dto/update-canvas-flow.dto.d.ts +10 -0
- package/server/canvas-flow/dto/update-canvas-flow.dto.js +56 -0
- package/server/canvas-flow/dto/update-canvas-flow.dto.js.map +1 -0
- package/server/constants-global.d.ts +1 -0
- package/server/constants-global.js +5 -0
- package/server/constants-global.js.map +1 -0
- package/server/database/database.module.d.ts +2 -0
- package/server/database/database.module.js +23 -0
- package/server/database/database.module.js.map +1 -0
- package/server/database/database.providers.d.ts +7 -0
- package/server/database/database.providers.js +26 -0
- package/server/database/database.providers.js.map +1 -0
- package/server/documents/documents-connect-provider.d.ts +140 -0
- package/server/documents/documents-connect-provider.js +14 -0
- package/server/documents/documents-connect-provider.js.map +1 -0
- package/server/documents/documents-constants-model.d.ts +2 -0
- package/server/documents/documents-constants-model.js +6 -0
- package/server/documents/documents-constants-model.js.map +1 -0
- package/server/documents/documents-controller.d.ts +16 -0
- package/server/documents/documents-controller.js +117 -0
- package/server/documents/documents-controller.js.map +1 -0
- package/server/documents/documents-module.d.ts +2 -0
- package/server/documents/documents-module.js +27 -0
- package/server/documents/documents-module.js.map +1 -0
- package/server/documents/documents-schema.d.ts +96 -0
- package/server/documents/documents-schema.js +38 -0
- package/server/documents/documents-schema.js.map +1 -0
- package/server/documents/documents-service.d.ts +164 -0
- package/server/documents/documents-service.js +1417 -0
- package/server/documents/documents-service.js.map +1 -0
- package/server/flow-tag/flow-tag-connect-provider.d.ts +146 -0
- package/server/flow-tag/flow-tag-connect-provider.js +14 -0
- package/server/flow-tag/flow-tag-connect-provider.js.map +1 -0
- package/server/flow-tag/flow-tag-constants-model.d.ts +2 -0
- package/server/flow-tag/flow-tag-constants-model.js +6 -0
- package/server/flow-tag/flow-tag-constants-model.js.map +1 -0
- package/server/flow-tag/flow-tag-module.d.ts +2 -0
- package/server/flow-tag/flow-tag-module.js +24 -0
- package/server/flow-tag/flow-tag-module.js.map +1 -0
- package/server/flow-tag/flow-tag-schema.d.ts +100 -0
- package/server/flow-tag/flow-tag-schema.js +131 -0
- package/server/flow-tag/flow-tag-schema.js.map +1 -0
- package/server/flow-tag/flow-tag-service.d.ts +77 -0
- package/server/flow-tag/flow-tag-service.js +156 -0
- package/server/flow-tag/flow-tag-service.js.map +1 -0
- package/server/health.controller.d.ts +7 -0
- package/server/health.controller.js +33 -0
- package/server/health.controller.js.map +1 -0
- package/server/http-batch/http-batch-controller.d.ts +345 -0
- package/server/http-batch/http-batch-controller.js +40 -0
- package/server/http-batch/http-batch-controller.js.map +1 -0
- package/server/http-batch/http-batch-module.d.ts +2 -0
- package/server/http-batch/http-batch-module.js +25 -0
- package/server/http-batch/http-batch-module.js.map +1 -0
- package/server/http-batch/http-batch-service.d.ts +381 -0
- package/server/http-batch/http-batch-service.js +268 -0
- package/server/http-batch/http-batch-service.js.map +1 -0
- package/server/lambda.d.ts +2 -0
- package/server/lambda.js +115 -0
- package/server/lambda.js.map +1 -0
- package/server/llm/openai-provider.d.ts +8 -0
- package/server/llm/openai-provider.js +256 -0
- package/server/llm/openai-provider.js.map +1 -0
- package/server/main.d.ts +1 -0
- package/server/main.js +80 -0
- package/server/main.js.map +1 -0
- package/server/mcp-oauth/mcp-oauth-connect-provider.d.ts +164 -0
- package/server/mcp-oauth/mcp-oauth-connect-provider.js +14 -0
- package/server/mcp-oauth/mcp-oauth-connect-provider.js.map +1 -0
- package/server/mcp-oauth/mcp-oauth-constants-model.d.ts +2 -0
- package/server/mcp-oauth/mcp-oauth-constants-model.js +6 -0
- package/server/mcp-oauth/mcp-oauth-constants-model.js.map +1 -0
- package/server/mcp-oauth/mcp-oauth-controller.d.ts +66 -0
- package/server/mcp-oauth/mcp-oauth-controller.js +166 -0
- package/server/mcp-oauth/mcp-oauth-controller.js.map +1 -0
- package/server/mcp-oauth/mcp-oauth-module.d.ts +2 -0
- package/server/mcp-oauth/mcp-oauth-module.js +27 -0
- package/server/mcp-oauth/mcp-oauth-module.js.map +1 -0
- package/server/mcp-oauth/mcp-oauth-schema.d.ts +112 -0
- package/server/mcp-oauth/mcp-oauth-schema.js +148 -0
- package/server/mcp-oauth/mcp-oauth-schema.js.map +1 -0
- package/server/mcp-oauth/mcp-oauth-service.d.ts +189 -0
- package/server/mcp-oauth/mcp-oauth-service.js +545 -0
- package/server/mcp-oauth/mcp-oauth-service.js.map +1 -0
- package/server/memory/memory-connect-provider.d.ts +200 -0
- package/server/memory/memory-connect-provider.js +26 -0
- package/server/memory/memory-connect-provider.js.map +1 -0
- package/server/memory/memory-constants-model.d.ts +6 -0
- package/server/memory/memory-constants-model.js +10 -0
- package/server/memory/memory-constants-model.js.map +1 -0
- package/server/memory/memory-controller.d.ts +15 -0
- package/server/memory/memory-controller.js +53 -0
- package/server/memory/memory-controller.js.map +1 -0
- package/server/memory/memory-history-schema.d.ts +48 -0
- package/server/memory/memory-history-schema.js +62 -0
- package/server/memory/memory-history-schema.js.map +1 -0
- package/server/memory/memory-module.d.ts +2 -0
- package/server/memory/memory-module.js +26 -0
- package/server/memory/memory-module.js.map +1 -0
- package/server/memory/memory-schema.d.ts +48 -0
- package/server/memory/memory-schema.js +62 -0
- package/server/memory/memory-schema.js.map +1 -0
- package/server/memory/memory-service.d.ts +134 -0
- package/server/memory/memory-service.js +317 -0
- package/server/memory/memory-service.js.map +1 -0
- package/server/memory/memory-trace-history-schema.d.ts +48 -0
- package/server/memory/memory-trace-history-schema.js +62 -0
- package/server/memory/memory-trace-history-schema.js.map +1 -0
- package/server/observability/observability.d.ts +3 -0
- package/server/observability/observability.js +62 -0
- package/server/observability/observability.js.map +1 -0
- package/server/production-guard.d.ts +9 -0
- package/server/production-guard.js +105 -0
- package/server/production-guard.js.map +1 -0
- package/server/provider-config/provider-config-connect-provider.d.ts +44 -0
- package/server/provider-config/provider-config-connect-provider.js +14 -0
- package/server/provider-config/provider-config-connect-provider.js.map +1 -0
- package/server/provider-config/provider-config-constants-model.d.ts +3 -0
- package/server/provider-config/provider-config-constants-model.js +7 -0
- package/server/provider-config/provider-config-constants-model.js.map +1 -0
- package/server/provider-config/provider-config-controller.d.ts +23 -0
- package/server/provider-config/provider-config-controller.js +80 -0
- package/server/provider-config/provider-config-controller.js.map +1 -0
- package/server/provider-config/provider-config-module.d.ts +2 -0
- package/server/provider-config/provider-config-module.js +27 -0
- package/server/provider-config/provider-config-module.js.map +1 -0
- package/server/provider-config/provider-config-schema.d.ts +32 -0
- package/server/provider-config/provider-config-schema.js +46 -0
- package/server/provider-config/provider-config-schema.js.map +1 -0
- package/server/provider-config/provider-config-service.d.ts +178 -0
- package/server/provider-config/provider-config-service.js +689 -0
- package/server/provider-config/provider-config-service.js.map +1 -0
- package/server/queue/queue-job-connect-provider.d.ts +128 -0
- package/server/queue/queue-job-connect-provider.js +14 -0
- package/server/queue/queue-job-connect-provider.js.map +1 -0
- package/server/queue/queue-job-constants-model.d.ts +2 -0
- package/server/queue/queue-job-constants-model.js +6 -0
- package/server/queue/queue-job-constants-model.js.map +1 -0
- package/server/queue/queue-job-schema.d.ts +88 -0
- package/server/queue/queue-job-schema.js +119 -0
- package/server/queue/queue-job-schema.js.map +1 -0
- package/server/queue/queue-lock-connect-provider.d.ts +44 -0
- package/server/queue/queue-lock-connect-provider.js +14 -0
- package/server/queue/queue-lock-connect-provider.js.map +1 -0
- package/server/queue/queue-lock-constants-model.d.ts +2 -0
- package/server/queue/queue-lock-constants-model.js +6 -0
- package/server/queue/queue-lock-constants-model.js.map +1 -0
- package/server/queue/queue-lock-schema.d.ts +32 -0
- package/server/queue/queue-lock-schema.js +47 -0
- package/server/queue/queue-lock-schema.js.map +1 -0
- package/server/queue/queue-message-dedupe-connect-provider.d.ts +116 -0
- package/server/queue/queue-message-dedupe-connect-provider.js +14 -0
- package/server/queue/queue-message-dedupe-connect-provider.js.map +1 -0
- package/server/queue/queue-message-dedupe-constants-model.d.ts +2 -0
- package/server/queue/queue-message-dedupe-constants-model.js +6 -0
- package/server/queue/queue-message-dedupe-constants-model.js.map +1 -0
- package/server/queue/queue-message-dedupe-schema.d.ts +80 -0
- package/server/queue/queue-message-dedupe-schema.js +108 -0
- package/server/queue/queue-message-dedupe-schema.js.map +1 -0
- package/server/queue/queue-module.d.ts +2 -0
- package/server/queue/queue-module.js +33 -0
- package/server/queue/queue-module.js.map +1 -0
- package/server/queue/queue-rate-limit-connect-provider.d.ts +56 -0
- package/server/queue/queue-rate-limit-connect-provider.js +14 -0
- package/server/queue/queue-rate-limit-connect-provider.js.map +1 -0
- package/server/queue/queue-rate-limit-constants-model.d.ts +2 -0
- package/server/queue/queue-rate-limit-constants-model.js +6 -0
- package/server/queue/queue-rate-limit-constants-model.js.map +1 -0
- package/server/queue/queue-rate-limit-schema.d.ts +40 -0
- package/server/queue/queue-rate-limit-schema.js +57 -0
- package/server/queue/queue-rate-limit-schema.js.map +1 -0
- package/server/queue/sqs-transition-service.d.ts +123 -0
- package/server/queue/sqs-transition-service.js +442 -0
- package/server/queue/sqs-transition-service.js.map +1 -0
- package/server/rag/rag-controller.d.ts +167 -0
- package/server/rag/rag-controller.js +232 -0
- package/server/rag/rag-controller.js.map +1 -0
- package/server/rag/rag-module.d.ts +2 -0
- package/server/rag/rag-module.js +30 -0
- package/server/rag/rag-module.js.map +1 -0
- package/server/rag/rag-service.d.ts +361 -0
- package/server/rag/rag-service.js +2864 -0
- package/server/rag/rag-service.js.map +1 -0
- package/server/runner/flow-templates.d.ts +55 -0
- package/server/runner/flow-templates.js +388 -0
- package/server/runner/flow-templates.js.map +1 -0
- package/server/runner/langgraph-runtime.service.d.ts +77 -0
- package/server/runner/langgraph-runtime.service.js +221 -0
- package/server/runner/langgraph-runtime.service.js.map +1 -0
- package/server/runner/runner-controller.d.ts +1044 -0
- package/server/runner/runner-controller.js +751 -0
- package/server/runner/runner-controller.js.map +1 -0
- package/server/runner/runner-module.d.ts +2 -0
- package/server/runner/runner-module.js +37 -0
- package/server/runner/runner-module.js.map +1 -0
- package/server/runner/runner-queue-processor.d.ts +29 -0
- package/server/runner/runner-queue-processor.js +259 -0
- package/server/runner/runner-queue-processor.js.map +1 -0
- package/server/runner/runner-service.d.ts +1761 -0
- package/server/runner/runner-service.js +14256 -0
- package/server/runner/runner-service.js.map +1 -0
- package/server/scripts/migrate-canvas-flow-versions.d.ts +1 -0
- package/server/scripts/migrate-canvas-flow-versions.js +72 -0
- package/server/scripts/migrate-canvas-flow-versions.js.map +1 -0
- package/server/scripts/migrate-mcp-oauth-user-scope.d.ts +1 -0
- package/server/scripts/migrate-mcp-oauth-user-scope.js +95 -0
- package/server/scripts/migrate-mcp-oauth-user-scope.js.map +1 -0
- package/templates/config.example.json +204 -0
- package/templates/config.production.example.json +206 -0
- package/templates/docker-compose.yml +60 -0
|
@@ -0,0 +1,767 @@
|
|
|
1
|
+
(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))s(l);new MutationObserver(l=>{for(const p of l)if(p.type==="childList")for(const m of p.addedNodes)m.tagName==="LINK"&&m.rel==="modulepreload"&&s(m)}).observe(document,{childList:!0,subtree:!0});function r(l){const p={};return l.integrity&&(p.integrity=l.integrity),l.referrerPolicy&&(p.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?p.credentials="include":l.crossOrigin==="anonymous"?p.credentials="omit":p.credentials="same-origin",p}function s(l){if(l.ep)return;l.ep=!0;const p=r(l);fetch(l.href,p)}})();function ng(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Uh={exports:{}},up={},qh={exports:{}},bt={};/**
|
|
2
|
+
* @license React
|
|
3
|
+
* react.production.min.js
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/var Pg;function tb(){if(Pg)return bt;Pg=1;var t=Symbol.for("react.element"),n=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),l=Symbol.for("react.profiler"),p=Symbol.for("react.provider"),m=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),x=Symbol.for("react.memo"),j=Symbol.for("react.lazy"),w=Symbol.iterator;function N(P){return P===null||typeof P!="object"?null:(P=w&&P[w]||P["@@iterator"],typeof P=="function"?P:null)}var C={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E=Object.assign,T={};function R(P,O,ve){this.props=P,this.context=O,this.refs=T,this.updater=ve||C}R.prototype.isReactComponent={},R.prototype.setState=function(P,O){if(typeof P!="object"&&typeof P!="function"&&P!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,P,O,"setState")},R.prototype.forceUpdate=function(P){this.updater.enqueueForceUpdate(this,P,"forceUpdate")};function D(){}D.prototype=R.prototype;function q(P,O,ve){this.props=P,this.context=O,this.refs=T,this.updater=ve||C}var I=q.prototype=new D;I.constructor=q,E(I,R.prototype),I.isPureReactComponent=!0;var F=Array.isArray,Y=Object.prototype.hasOwnProperty,ne={current:null},ae={key:!0,ref:!0,__self:!0,__source:!0};function oe(P,O,ve){var ge,be={},Ce=null,$=null;if(O!=null)for(ge in O.ref!==void 0&&($=O.ref),O.key!==void 0&&(Ce=""+O.key),O)Y.call(O,ge)&&!ae.hasOwnProperty(ge)&&(be[ge]=O[ge]);var z=arguments.length-2;if(z===1)be.children=ve;else if(1<z){for(var Z=Array(z),he=0;he<z;he++)Z[he]=arguments[he+2];be.children=Z}if(P&&P.defaultProps)for(ge in z=P.defaultProps,z)be[ge]===void 0&&(be[ge]=z[ge]);return{$$typeof:t,type:P,key:Ce,ref:$,props:be,_owner:ne.current}}function Q(P,O){return{$$typeof:t,type:P.type,key:O,ref:P.ref,props:P.props,_owner:P._owner}}function fe(P){return typeof P=="object"&&P!==null&&P.$$typeof===t}function xe(P){var O={"=":"=0",":":"=2"};return"$"+P.replace(/[=:]/g,function(ve){return O[ve]})}var ye=/\/+/g;function le(P,O){return typeof P=="object"&&P!==null&&P.key!=null?xe(""+P.key):O.toString(36)}function M(P,O,ve,ge,be){var Ce=typeof P;(Ce==="undefined"||Ce==="boolean")&&(P=null);var $=!1;if(P===null)$=!0;else switch(Ce){case"string":case"number":$=!0;break;case"object":switch(P.$$typeof){case t:case n:$=!0}}if($)return $=P,be=be($),P=ge===""?"."+le($,0):ge,F(be)?(ve="",P!=null&&(ve=P.replace(ye,"$&/")+"/"),M(be,O,ve,"",function(he){return he})):be!=null&&(fe(be)&&(be=Q(be,ve+(!be.key||$&&$.key===be.key?"":(""+be.key).replace(ye,"$&/")+"/")+P)),O.push(be)),1;if($=0,ge=ge===""?".":ge+":",F(P))for(var z=0;z<P.length;z++){Ce=P[z];var Z=ge+le(Ce,z);$+=M(Ce,O,ve,Z,be)}else if(Z=N(P),typeof Z=="function")for(P=Z.call(P),z=0;!(Ce=P.next()).done;)Ce=Ce.value,Z=ge+le(Ce,z++),$+=M(Ce,O,ve,Z,be);else if(Ce==="object")throw O=String(P),Error("Objects are not valid as a React child (found: "+(O==="[object Object]"?"object with keys {"+Object.keys(P).join(", ")+"}":O)+"). If you meant to render a collection of children, use an array instead.");return $}function ee(P,O,ve){if(P==null)return P;var ge=[],be=0;return M(P,ge,"","",function(Ce){return O.call(ve,Ce,be++)}),ge}function H(P){if(P._status===-1){var O=P._result;O=O(),O.then(function(ve){(P._status===0||P._status===-1)&&(P._status=1,P._result=ve)},function(ve){(P._status===0||P._status===-1)&&(P._status=2,P._result=ve)}),P._status===-1&&(P._status=0,P._result=O)}if(P._status===1)return P._result.default;throw P._result}var se={current:null},G={transition:null},V={ReactCurrentDispatcher:se,ReactCurrentBatchConfig:G,ReactCurrentOwner:ne};function K(){throw Error("act(...) is not supported in production builds of React.")}return bt.Children={map:ee,forEach:function(P,O,ve){ee(P,function(){O.apply(this,arguments)},ve)},count:function(P){var O=0;return ee(P,function(){O++}),O},toArray:function(P){return ee(P,function(O){return O})||[]},only:function(P){if(!fe(P))throw Error("React.Children.only expected to receive a single React element child.");return P}},bt.Component=R,bt.Fragment=r,bt.Profiler=l,bt.PureComponent=q,bt.StrictMode=s,bt.Suspense=f,bt.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=V,bt.act=K,bt.cloneElement=function(P,O,ve){if(P==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+P+".");var ge=E({},P.props),be=P.key,Ce=P.ref,$=P._owner;if(O!=null){if(O.ref!==void 0&&(Ce=O.ref,$=ne.current),O.key!==void 0&&(be=""+O.key),P.type&&P.type.defaultProps)var z=P.type.defaultProps;for(Z in O)Y.call(O,Z)&&!ae.hasOwnProperty(Z)&&(ge[Z]=O[Z]===void 0&&z!==void 0?z[Z]:O[Z])}var Z=arguments.length-2;if(Z===1)ge.children=ve;else if(1<Z){z=Array(Z);for(var he=0;he<Z;he++)z[he]=arguments[he+2];ge.children=z}return{$$typeof:t,type:P.type,key:be,ref:Ce,props:ge,_owner:$}},bt.createContext=function(P){return P={$$typeof:m,_currentValue:P,_currentValue2:P,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},P.Provider={$$typeof:p,_context:P},P.Consumer=P},bt.createElement=oe,bt.createFactory=function(P){var O=oe.bind(null,P);return O.type=P,O},bt.createRef=function(){return{current:null}},bt.forwardRef=function(P){return{$$typeof:h,render:P}},bt.isValidElement=fe,bt.lazy=function(P){return{$$typeof:j,_payload:{_status:-1,_result:P},_init:H}},bt.memo=function(P,O){return{$$typeof:x,type:P,compare:O===void 0?null:O}},bt.startTransition=function(P){var O=G.transition;G.transition={};try{P()}finally{G.transition=O}},bt.unstable_act=K,bt.useCallback=function(P,O){return se.current.useCallback(P,O)},bt.useContext=function(P){return se.current.useContext(P)},bt.useDebugValue=function(){},bt.useDeferredValue=function(P){return se.current.useDeferredValue(P)},bt.useEffect=function(P,O){return se.current.useEffect(P,O)},bt.useId=function(){return se.current.useId()},bt.useImperativeHandle=function(P,O,ve){return se.current.useImperativeHandle(P,O,ve)},bt.useInsertionEffect=function(P,O){return se.current.useInsertionEffect(P,O)},bt.useLayoutEffect=function(P,O){return se.current.useLayoutEffect(P,O)},bt.useMemo=function(P,O){return se.current.useMemo(P,O)},bt.useReducer=function(P,O,ve){return se.current.useReducer(P,O,ve)},bt.useRef=function(P){return se.current.useRef(P)},bt.useState=function(P){return se.current.useState(P)},bt.useSyncExternalStore=function(P,O,ve){return se.current.useSyncExternalStore(P,O,ve)},bt.useTransition=function(){return se.current.useTransition()},bt.version="18.3.1",bt}var _g;function Hp(){return _g||(_g=1,qh.exports=tb()),qh.exports}/**
|
|
10
|
+
* @license React
|
|
11
|
+
* react-jsx-runtime.production.min.js
|
|
12
|
+
*
|
|
13
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
14
|
+
*
|
|
15
|
+
* This source code is licensed under the MIT license found in the
|
|
16
|
+
* LICENSE file in the root directory of this source tree.
|
|
17
|
+
*/var Og;function nb(){if(Og)return up;Og=1;var t=Hp(),n=Symbol.for("react.element"),r=Symbol.for("react.fragment"),s=Object.prototype.hasOwnProperty,l=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};function m(h,f,x){var j,w={},N=null,C=null;x!==void 0&&(N=""+x),f.key!==void 0&&(N=""+f.key),f.ref!==void 0&&(C=f.ref);for(j in f)s.call(f,j)&&!p.hasOwnProperty(j)&&(w[j]=f[j]);if(h&&h.defaultProps)for(j in f=h.defaultProps,f)w[j]===void 0&&(w[j]=f[j]);return{$$typeof:n,type:h,key:N,ref:C,props:w,_owner:l.current}}return up.Fragment=r,up.jsx=m,up.jsxs=m,up}var Rg;function ob(){return Rg||(Rg=1,Uh.exports=nb()),Uh.exports}var e=ob(),b=Hp();const me=ng(b);var Im={},Hh={exports:{}},mr={},Wh={exports:{}},Gh={};/**
|
|
18
|
+
* @license React
|
|
19
|
+
* scheduler.production.min.js
|
|
20
|
+
*
|
|
21
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
22
|
+
*
|
|
23
|
+
* This source code is licensed under the MIT license found in the
|
|
24
|
+
* LICENSE file in the root directory of this source tree.
|
|
25
|
+
*/var Fg;function ab(){return Fg||(Fg=1,(function(t){function n(G,V){var K=G.length;G.push(V);e:for(;0<K;){var P=K-1>>>1,O=G[P];if(0<l(O,V))G[P]=V,G[K]=O,K=P;else break e}}function r(G){return G.length===0?null:G[0]}function s(G){if(G.length===0)return null;var V=G[0],K=G.pop();if(K!==V){G[0]=K;e:for(var P=0,O=G.length,ve=O>>>1;P<ve;){var ge=2*(P+1)-1,be=G[ge],Ce=ge+1,$=G[Ce];if(0>l(be,K))Ce<O&&0>l($,be)?(G[P]=$,G[Ce]=K,P=Ce):(G[P]=be,G[ge]=K,P=ge);else if(Ce<O&&0>l($,K))G[P]=$,G[Ce]=K,P=Ce;else break e}}return V}function l(G,V){var K=G.sortIndex-V.sortIndex;return K!==0?K:G.id-V.id}if(typeof performance=="object"&&typeof performance.now=="function"){var p=performance;t.unstable_now=function(){return p.now()}}else{var m=Date,h=m.now();t.unstable_now=function(){return m.now()-h}}var f=[],x=[],j=1,w=null,N=3,C=!1,E=!1,T=!1,R=typeof setTimeout=="function"?setTimeout:null,D=typeof clearTimeout=="function"?clearTimeout:null,q=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function I(G){for(var V=r(x);V!==null;){if(V.callback===null)s(x);else if(V.startTime<=G)s(x),V.sortIndex=V.expirationTime,n(f,V);else break;V=r(x)}}function F(G){if(T=!1,I(G),!E)if(r(f)!==null)E=!0,H(Y);else{var V=r(x);V!==null&&se(F,V.startTime-G)}}function Y(G,V){E=!1,T&&(T=!1,D(oe),oe=-1),C=!0;var K=N;try{for(I(V),w=r(f);w!==null&&(!(w.expirationTime>V)||G&&!xe());){var P=w.callback;if(typeof P=="function"){w.callback=null,N=w.priorityLevel;var O=P(w.expirationTime<=V);V=t.unstable_now(),typeof O=="function"?w.callback=O:w===r(f)&&s(f),I(V)}else s(f);w=r(f)}if(w!==null)var ve=!0;else{var ge=r(x);ge!==null&&se(F,ge.startTime-V),ve=!1}return ve}finally{w=null,N=K,C=!1}}var ne=!1,ae=null,oe=-1,Q=5,fe=-1;function xe(){return!(t.unstable_now()-fe<Q)}function ye(){if(ae!==null){var G=t.unstable_now();fe=G;var V=!0;try{V=ae(!0,G)}finally{V?le():(ne=!1,ae=null)}}else ne=!1}var le;if(typeof q=="function")le=function(){q(ye)};else if(typeof MessageChannel<"u"){var M=new MessageChannel,ee=M.port2;M.port1.onmessage=ye,le=function(){ee.postMessage(null)}}else le=function(){R(ye,0)};function H(G){ae=G,ne||(ne=!0,le())}function se(G,V){oe=R(function(){G(t.unstable_now())},V)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(G){G.callback=null},t.unstable_continueExecution=function(){E||C||(E=!0,H(Y))},t.unstable_forceFrameRate=function(G){0>G||125<G?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):Q=0<G?Math.floor(1e3/G):5},t.unstable_getCurrentPriorityLevel=function(){return N},t.unstable_getFirstCallbackNode=function(){return r(f)},t.unstable_next=function(G){switch(N){case 1:case 2:case 3:var V=3;break;default:V=N}var K=N;N=V;try{return G()}finally{N=K}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(G,V){switch(G){case 1:case 2:case 3:case 4:case 5:break;default:G=3}var K=N;N=G;try{return V()}finally{N=K}},t.unstable_scheduleCallback=function(G,V,K){var P=t.unstable_now();switch(typeof K=="object"&&K!==null?(K=K.delay,K=typeof K=="number"&&0<K?P+K:P):K=P,G){case 1:var O=-1;break;case 2:O=250;break;case 5:O=1073741823;break;case 4:O=1e4;break;default:O=5e3}return O=K+O,G={id:j++,callback:V,priorityLevel:G,startTime:K,expirationTime:O,sortIndex:-1},K>P?(G.sortIndex=K,n(x,G),r(f)===null&&G===r(x)&&(T?(D(oe),oe=-1):T=!0,se(F,K-P))):(G.sortIndex=O,n(f,G),E||C||(E=!0,H(Y))),G},t.unstable_shouldYield=xe,t.unstable_wrapCallback=function(G){var V=N;return function(){var K=N;N=V;try{return G.apply(this,arguments)}finally{N=K}}}})(Gh)),Gh}var zg;function rb(){return zg||(zg=1,Wh.exports=ab()),Wh.exports}/**
|
|
26
|
+
* @license React
|
|
27
|
+
* react-dom.production.min.js
|
|
28
|
+
*
|
|
29
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
30
|
+
*
|
|
31
|
+
* This source code is licensed under the MIT license found in the
|
|
32
|
+
* LICENSE file in the root directory of this source tree.
|
|
33
|
+
*/var Lg;function sb(){if(Lg)return mr;Lg=1;var t=Hp(),n=rb();function r(o){for(var a="https://reactjs.org/docs/error-decoder.html?invariant="+o,i=1;i<arguments.length;i++)a+="&args[]="+encodeURIComponent(arguments[i]);return"Minified React error #"+o+"; visit "+a+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var s=new Set,l={};function p(o,a){m(o,a),m(o+"Capture",a)}function m(o,a){for(l[o]=a,o=0;o<a.length;o++)s.add(a[o])}var h=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),f=Object.prototype.hasOwnProperty,x=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,j={},w={};function N(o){return f.call(w,o)?!0:f.call(j,o)?!1:x.test(o)?w[o]=!0:(j[o]=!0,!1)}function C(o,a,i,d){if(i!==null&&i.type===0)return!1;switch(typeof a){case"function":case"symbol":return!0;case"boolean":return d?!1:i!==null?!i.acceptsBooleans:(o=o.toLowerCase().slice(0,5),o!=="data-"&&o!=="aria-");default:return!1}}function E(o,a,i,d){if(a===null||typeof a>"u"||C(o,a,i,d))return!0;if(d)return!1;if(i!==null)switch(i.type){case 3:return!a;case 4:return a===!1;case 5:return isNaN(a);case 6:return isNaN(a)||1>a}return!1}function T(o,a,i,d,g,v,A){this.acceptsBooleans=a===2||a===3||a===4,this.attributeName=d,this.attributeNamespace=g,this.mustUseProperty=i,this.propertyName=o,this.type=a,this.sanitizeURL=v,this.removeEmptyString=A}var R={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(o){R[o]=new T(o,0,!1,o,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(o){var a=o[0];R[a]=new T(a,1,!1,o[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(o){R[o]=new T(o,2,!1,o.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(o){R[o]=new T(o,2,!1,o,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(o){R[o]=new T(o,3,!1,o.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(o){R[o]=new T(o,3,!0,o,null,!1,!1)}),["capture","download"].forEach(function(o){R[o]=new T(o,4,!1,o,null,!1,!1)}),["cols","rows","size","span"].forEach(function(o){R[o]=new T(o,6,!1,o,null,!1,!1)}),["rowSpan","start"].forEach(function(o){R[o]=new T(o,5,!1,o.toLowerCase(),null,!1,!1)});var D=/[\-:]([a-z])/g;function q(o){return o[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(o){var a=o.replace(D,q);R[a]=new T(a,1,!1,o,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(o){var a=o.replace(D,q);R[a]=new T(a,1,!1,o,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(o){var a=o.replace(D,q);R[a]=new T(a,1,!1,o,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(o){R[o]=new T(o,1,!1,o.toLowerCase(),null,!1,!1)}),R.xlinkHref=new T("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(o){R[o]=new T(o,1,!1,o.toLowerCase(),null,!0,!0)});function I(o,a,i,d){var g=R.hasOwnProperty(a)?R[a]:null;(g!==null?g.type!==0:d||!(2<a.length)||a[0]!=="o"&&a[0]!=="O"||a[1]!=="n"&&a[1]!=="N")&&(E(a,i,g,d)&&(i=null),d||g===null?N(a)&&(i===null?o.removeAttribute(a):o.setAttribute(a,""+i)):g.mustUseProperty?o[g.propertyName]=i===null?g.type===3?!1:"":i:(a=g.attributeName,d=g.attributeNamespace,i===null?o.removeAttribute(a):(g=g.type,i=g===3||g===4&&i===!0?"":""+i,d?o.setAttributeNS(d,a,i):o.setAttribute(a,i))))}var F=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Y=Symbol.for("react.element"),ne=Symbol.for("react.portal"),ae=Symbol.for("react.fragment"),oe=Symbol.for("react.strict_mode"),Q=Symbol.for("react.profiler"),fe=Symbol.for("react.provider"),xe=Symbol.for("react.context"),ye=Symbol.for("react.forward_ref"),le=Symbol.for("react.suspense"),M=Symbol.for("react.suspense_list"),ee=Symbol.for("react.memo"),H=Symbol.for("react.lazy"),se=Symbol.for("react.offscreen"),G=Symbol.iterator;function V(o){return o===null||typeof o!="object"?null:(o=G&&o[G]||o["@@iterator"],typeof o=="function"?o:null)}var K=Object.assign,P;function O(o){if(P===void 0)try{throw Error()}catch(i){var a=i.stack.trim().match(/\n( *(at )?)/);P=a&&a[1]||""}return`
|
|
34
|
+
`+P+o}var ve=!1;function ge(o,a){if(!o||ve)return"";ve=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(a)if(a=function(){throw Error()},Object.defineProperty(a.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(a,[])}catch(de){var d=de}Reflect.construct(o,[],a)}else{try{a.call()}catch(de){d=de}o.call(a.prototype)}else{try{throw Error()}catch(de){d=de}o()}}catch(de){if(de&&d&&typeof de.stack=="string"){for(var g=de.stack.split(`
|
|
35
|
+
`),v=d.stack.split(`
|
|
36
|
+
`),A=g.length-1,U=v.length-1;1<=A&&0<=U&&g[A]!==v[U];)U--;for(;1<=A&&0<=U;A--,U--)if(g[A]!==v[U]){if(A!==1||U!==1)do if(A--,U--,0>U||g[A]!==v[U]){var J=`
|
|
37
|
+
`+g[A].replace(" at new "," at ");return o.displayName&&J.includes("<anonymous>")&&(J=J.replace("<anonymous>",o.displayName)),J}while(1<=A&&0<=U);break}}}finally{ve=!1,Error.prepareStackTrace=i}return(o=o?o.displayName||o.name:"")?O(o):""}function be(o){switch(o.tag){case 5:return O(o.type);case 16:return O("Lazy");case 13:return O("Suspense");case 19:return O("SuspenseList");case 0:case 2:case 15:return o=ge(o.type,!1),o;case 11:return o=ge(o.type.render,!1),o;case 1:return o=ge(o.type,!0),o;default:return""}}function Ce(o){if(o==null)return null;if(typeof o=="function")return o.displayName||o.name||null;if(typeof o=="string")return o;switch(o){case ae:return"Fragment";case ne:return"Portal";case Q:return"Profiler";case oe:return"StrictMode";case le:return"Suspense";case M:return"SuspenseList"}if(typeof o=="object")switch(o.$$typeof){case xe:return(o.displayName||"Context")+".Consumer";case fe:return(o._context.displayName||"Context")+".Provider";case ye:var a=o.render;return o=o.displayName,o||(o=a.displayName||a.name||"",o=o!==""?"ForwardRef("+o+")":"ForwardRef"),o;case ee:return a=o.displayName||null,a!==null?a:Ce(o.type)||"Memo";case H:a=o._payload,o=o._init;try{return Ce(o(a))}catch{}}return null}function $(o){var a=o.type;switch(o.tag){case 24:return"Cache";case 9:return(a.displayName||"Context")+".Consumer";case 10:return(a._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return o=a.render,o=o.displayName||o.name||"",a.displayName||(o!==""?"ForwardRef("+o+")":"ForwardRef");case 7:return"Fragment";case 5:return a;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Ce(a);case 8:return a===oe?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof a=="function")return a.displayName||a.name||null;if(typeof a=="string")return a}return null}function z(o){switch(typeof o){case"boolean":case"number":case"string":case"undefined":return o;case"object":return o;default:return""}}function Z(o){var a=o.type;return(o=o.nodeName)&&o.toLowerCase()==="input"&&(a==="checkbox"||a==="radio")}function he(o){var a=Z(o)?"checked":"value",i=Object.getOwnPropertyDescriptor(o.constructor.prototype,a),d=""+o[a];if(!o.hasOwnProperty(a)&&typeof i<"u"&&typeof i.get=="function"&&typeof i.set=="function"){var g=i.get,v=i.set;return Object.defineProperty(o,a,{configurable:!0,get:function(){return g.call(this)},set:function(A){d=""+A,v.call(this,A)}}),Object.defineProperty(o,a,{enumerable:i.enumerable}),{getValue:function(){return d},setValue:function(A){d=""+A},stopTracking:function(){o._valueTracker=null,delete o[a]}}}}function Be(o){o._valueTracker||(o._valueTracker=he(o))}function at(o){if(!o)return!1;var a=o._valueTracker;if(!a)return!0;var i=a.getValue(),d="";return o&&(d=Z(o)?o.checked?"true":"false":o.value),o=d,o!==i?(a.setValue(o),!0):!1}function gt(o){if(o=o||(typeof document<"u"?document:void 0),typeof o>"u")return null;try{return o.activeElement||o.body}catch{return o.body}}function ht(o,a){var i=a.checked;return K({},a,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:i??o._wrapperState.initialChecked})}function mt(o,a){var i=a.defaultValue==null?"":a.defaultValue,d=a.checked!=null?a.checked:a.defaultChecked;i=z(a.value!=null?a.value:i),o._wrapperState={initialChecked:d,initialValue:i,controlled:a.type==="checkbox"||a.type==="radio"?a.checked!=null:a.value!=null}}function Et(o,a){a=a.checked,a!=null&&I(o,"checked",a,!1)}function Ye(o,a){Et(o,a);var i=z(a.value),d=a.type;if(i!=null)d==="number"?(i===0&&o.value===""||o.value!=i)&&(o.value=""+i):o.value!==""+i&&(o.value=""+i);else if(d==="submit"||d==="reset"){o.removeAttribute("value");return}a.hasOwnProperty("value")?Ze(o,a.type,i):a.hasOwnProperty("defaultValue")&&Ze(o,a.type,z(a.defaultValue)),a.checked==null&&a.defaultChecked!=null&&(o.defaultChecked=!!a.defaultChecked)}function Pe(o,a,i){if(a.hasOwnProperty("value")||a.hasOwnProperty("defaultValue")){var d=a.type;if(!(d!=="submit"&&d!=="reset"||a.value!==void 0&&a.value!==null))return;a=""+o._wrapperState.initialValue,i||a===o.value||(o.value=a),o.defaultValue=a}i=o.name,i!==""&&(o.name=""),o.defaultChecked=!!o._wrapperState.initialChecked,i!==""&&(o.name=i)}function Ze(o,a,i){(a!=="number"||gt(o.ownerDocument)!==o)&&(i==null?o.defaultValue=""+o._wrapperState.initialValue:o.defaultValue!==""+i&&(o.defaultValue=""+i))}var Ct=Array.isArray;function re(o,a,i,d){if(o=o.options,a){a={};for(var g=0;g<i.length;g++)a["$"+i[g]]=!0;for(i=0;i<o.length;i++)g=a.hasOwnProperty("$"+o[i].value),o[i].selected!==g&&(o[i].selected=g),g&&d&&(o[i].defaultSelected=!0)}else{for(i=""+z(i),a=null,g=0;g<o.length;g++){if(o[g].value===i){o[g].selected=!0,d&&(o[g].defaultSelected=!0);return}a!==null||o[g].disabled||(a=o[g])}a!==null&&(a.selected=!0)}}function we(o,a){if(a.dangerouslySetInnerHTML!=null)throw Error(r(91));return K({},a,{value:void 0,defaultValue:void 0,children:""+o._wrapperState.initialValue})}function Me(o,a){var i=a.value;if(i==null){if(i=a.children,a=a.defaultValue,i!=null){if(a!=null)throw Error(r(92));if(Ct(i)){if(1<i.length)throw Error(r(93));i=i[0]}a=i}a==null&&(a=""),i=a}o._wrapperState={initialValue:z(i)}}function et(o,a){var i=z(a.value),d=z(a.defaultValue);i!=null&&(i=""+i,i!==o.value&&(o.value=i),a.defaultValue==null&&o.defaultValue!==i&&(o.defaultValue=i)),d!=null&&(o.defaultValue=""+d)}function it(o){var a=o.textContent;a===o._wrapperState.initialValue&&a!==""&&a!==null&&(o.value=a)}function qe(o){switch(o){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Re(o,a){return o==null||o==="http://www.w3.org/1999/xhtml"?qe(a):o==="http://www.w3.org/2000/svg"&&a==="foreignObject"?"http://www.w3.org/1999/xhtml":o}var ot,kt=(function(o){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(a,i,d,g){MSApp.execUnsafeLocalFunction(function(){return o(a,i,d,g)})}:o})(function(o,a){if(o.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in o)o.innerHTML=a;else{for(ot=ot||document.createElement("div"),ot.innerHTML="<svg>"+a.valueOf().toString()+"</svg>",a=ot.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;a.firstChild;)o.appendChild(a.firstChild)}});function Fe(o,a){if(a){var i=o.firstChild;if(i&&i===o.lastChild&&i.nodeType===3){i.nodeValue=a;return}}o.textContent=a}var Te={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rt=["Webkit","ms","Moz","O"];Object.keys(Te).forEach(function(o){rt.forEach(function(a){a=a+o.charAt(0).toUpperCase()+o.substring(1),Te[a]=Te[o]})});function pn(o,a,i){return a==null||typeof a=="boolean"||a===""?"":i||typeof a!="number"||a===0||Te.hasOwnProperty(o)&&Te[o]?(""+a).trim():a+"px"}function An(o,a){o=o.style;for(var i in a)if(a.hasOwnProperty(i)){var d=i.indexOf("--")===0,g=pn(i,a[i],d);i==="float"&&(i="cssFloat"),d?o.setProperty(i,g):o[i]=g}}var sa=K({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function mn(o,a){if(a){if(sa[o]&&(a.children!=null||a.dangerouslySetInnerHTML!=null))throw Error(r(137,o));if(a.dangerouslySetInnerHTML!=null){if(a.children!=null)throw Error(r(60));if(typeof a.dangerouslySetInnerHTML!="object"||!("__html"in a.dangerouslySetInnerHTML))throw Error(r(61))}if(a.style!=null&&typeof a.style!="object")throw Error(r(62))}}function Wn(o,a){if(o.indexOf("-")===-1)return typeof a.is=="string";switch(o){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Jo=null;function fr(o){return o=o.target||o.srcElement||window,o.correspondingUseElement&&(o=o.correspondingUseElement),o.nodeType===3?o.parentNode:o}var Ko=null,ia=null,Ao=null;function la(o){if(o=Oo(o)){if(typeof Ko!="function")throw Error(r(280));var a=o.stateNode;a&&(a=rr(a),Ko(o.stateNode,o.type,a))}}function gr(o){ia?Ao?Ao.push(o):Ao=[o]:ia=o}function xr(){if(ia){var o=ia,a=Ao;if(Ao=ia=null,la(o),a)for(o=0;o<a.length;o++)la(a[o])}}function vr(o,a){return o(a)}function Ba(){}var yr=!1;function Va(o,a,i){if(yr)return o(a,i);yr=!0;try{return vr(o,a,i)}finally{yr=!1,(ia!==null||Ao!==null)&&(Ba(),xr())}}function Ua(o,a){var i=o.stateNode;if(i===null)return null;var d=rr(i);if(d===null)return null;i=d[a];e:switch(a){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(d=!d.disabled)||(o=o.type,d=!(o==="button"||o==="input"||o==="select"||o==="textarea")),o=!d;break e;default:o=!1}if(o)return null;if(i&&typeof i!="function")throw Error(r(231,a,typeof i));return i}var ks=!1;if(h)try{var Qo={};Object.defineProperty(Qo,"passive",{get:function(){ks=!0}}),window.addEventListener("test",Qo,Qo),window.removeEventListener("test",Qo,Qo)}catch{ks=!1}function Gn(o,a,i,d,g,v,A,U,J){var de=Array.prototype.slice.call(arguments,3);try{a.apply(i,de)}catch(Se){this.onError(Se)}}var qa=!1,En=null,Xr=!1,Ha=null,el={onError:function(o){qa=!0,En=o}};function As(o,a,i,d,g,v,A,U,J){qa=!1,En=null,Gn.apply(el,arguments)}function Jn(o,a,i,d,g,v,A,U,J){if(As.apply(this,arguments),qa){if(qa){var de=En;qa=!1,En=null}else throw Error(r(198));Xr||(Xr=!0,Ha=de)}}function ft(o){var a=o,i=o;if(o.alternate)for(;a.return;)a=a.return;else{o=a;do a=o,(a.flags&4098)!==0&&(i=a.return),o=a.return;while(o)}return a.tag===3?i:null}function _n(o){if(o.tag===13){var a=o.memoizedState;if(a===null&&(o=o.alternate,o!==null&&(a=o.memoizedState)),a!==null)return a.dehydrated}return null}function Wa(o){if(ft(o)!==o)throw Error(r(188))}function ni(o){var a=o.alternate;if(!a){if(a=ft(o),a===null)throw Error(r(188));return a!==o?null:o}for(var i=o,d=a;;){var g=i.return;if(g===null)break;var v=g.alternate;if(v===null){if(d=g.return,d!==null){i=d;continue}break}if(g.child===v.child){for(v=g.child;v;){if(v===i)return Wa(g),o;if(v===d)return Wa(g),a;v=v.sibling}throw Error(r(188))}if(i.return!==d.return)i=g,d=v;else{for(var A=!1,U=g.child;U;){if(U===i){A=!0,i=g,d=v;break}if(U===d){A=!0,d=g,i=v;break}U=U.sibling}if(!A){for(U=v.child;U;){if(U===i){A=!0,i=v,d=g;break}if(U===d){A=!0,d=v,i=g;break}U=U.sibling}if(!A)throw Error(r(189))}}if(i.alternate!==d)throw Error(r(190))}if(i.tag!==3)throw Error(r(188));return i.stateNode.current===i?o:a}function tl(o){return o=ni(o),o!==null?jr(o):null}function jr(o){if(o.tag===5||o.tag===6)return o;for(o=o.child;o!==null;){var a=jr(o);if(a!==null)return a;o=o.sibling}return null}var Es=n.unstable_scheduleCallback,Ga=n.unstable_cancelCallback,oi=n.unstable_shouldYield,ca=n.unstable_requestPaint,We=n.unstable_now,Kn=n.unstable_getCurrentPriorityLevel,Qn=n.unstable_ImmediatePriority,Eo=n.unstable_UserBlockingPriority,Yr=n.unstable_NormalPriority,ai=n.unstable_LowPriority,Vl=n.unstable_IdlePriority,Zr=null,ua=null;function Ja(o){if(ua&&typeof ua.onCommitFiberRoot=="function")try{ua.onCommitFiberRoot(Zr,o,void 0,(o.current.flags&128)===128)}catch{}}var _e=Math.clz32?Math.clz32:mo,en=Math.log,Xn=Math.LN2;function mo(o){return o>>>=0,o===0?32:31-(en(o)/Xn|0)|0}var ho=64,Ka=4194304;function ri(o){switch(o&-o){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return o&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return o&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return o}}function Qa(o,a){var i=o.pendingLanes;if(i===0)return 0;var d=0,g=o.suspendedLanes,v=o.pingedLanes,A=i&268435455;if(A!==0){var U=A&~g;U!==0?d=ri(U):(v&=A,v!==0&&(d=ri(v)))}else A=i&~g,A!==0?d=ri(A):v!==0&&(d=ri(v));if(d===0)return 0;if(a!==0&&a!==d&&(a&g)===0&&(g=d&-d,v=a&-a,g>=v||g===16&&(v&4194240)!==0))return a;if((d&4)!==0&&(d|=i&16),a=o.entangledLanes,a!==0)for(o=o.entanglements,a&=d;0<a;)i=31-_e(a),g=1<<i,d|=o[i],a&=~g;return d}function Mn(o,a){switch(o){case 1:case 2:case 4:return a+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function si(o,a){for(var i=o.suspendedLanes,d=o.pingedLanes,g=o.expirationTimes,v=o.pendingLanes;0<v;){var A=31-_e(v),U=1<<A,J=g[A];J===-1?((U&i)===0||(U&d)!==0)&&(g[A]=Mn(U,a)):J<=a&&(o.expiredLanes|=U),v&=~U}}function nl(o){return o=o.pendingLanes&-1073741825,o!==0?o:o&1073741824?1073741824:0}function Ul(){var o=ho;return ho<<=1,(ho&4194240)===0&&(ho=64),o}function br(o){for(var a=[],i=0;31>i;i++)a.push(o);return a}function wr(o,a,i){o.pendingLanes|=a,a!==536870912&&(o.suspendedLanes=0,o.pingedLanes=0),o=o.eventTimes,a=31-_e(a),o[a]=i}function ql(o,a){var i=o.pendingLanes&~a;o.pendingLanes=a,o.suspendedLanes=0,o.pingedLanes=0,o.expiredLanes&=a,o.mutableReadLanes&=a,o.entangledLanes&=a,a=o.entanglements;var d=o.eventTimes;for(o=o.expirationTimes;0<i;){var g=31-_e(i),v=1<<g;a[g]=0,d[g]=-1,o[g]=-1,i&=~v}}function an(o,a){var i=o.entangledLanes|=a;for(o=o.entanglements;i;){var d=31-_e(i),g=1<<d;g&a|o[d]&a&&(o[d]|=a),i&=~g}}var xt=0;function zt(o){return o&=-o,1<o?4<o?(o&268435455)!==0?16:536870912:4:1}var $t,Cn,da,$c,Hl,ol=!1,Ms=[],pa=null,Xo=null,Nr=null,Mt=new Map,ii=new Map,tt=[],Bc="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function L(o,a){switch(o){case"focusin":case"focusout":pa=null;break;case"dragenter":case"dragleave":Xo=null;break;case"mouseover":case"mouseout":Nr=null;break;case"pointerover":case"pointerout":Mt.delete(a.pointerId);break;case"gotpointercapture":case"lostpointercapture":ii.delete(a.pointerId)}}function Yn(o,a,i,d,g,v){return o===null||o.nativeEvent!==v?(o={blockedOn:a,domEventName:i,eventSystemFlags:d,nativeEvent:v,targetContainers:[g]},a!==null&&(a=Oo(a),a!==null&&Cn(a)),o):(o.eventSystemFlags|=d,a=o.targetContainers,g!==null&&a.indexOf(g)===-1&&a.push(g),o)}function Na(o,a,i,d,g){switch(a){case"focusin":return pa=Yn(pa,o,a,i,d,g),!0;case"dragenter":return Xo=Yn(Xo,o,a,i,d,g),!0;case"mouseover":return Nr=Yn(Nr,o,a,i,d,g),!0;case"pointerover":var v=g.pointerId;return Mt.set(v,Yn(Mt.get(v)||null,o,a,i,d,g)),!0;case"gotpointercapture":return v=g.pointerId,ii.set(v,Yn(ii.get(v)||null,o,a,i,d,g)),!0}return!1}function li(o){var a=Ta(o.target);if(a!==null){var i=ft(a);if(i!==null){if(a=i.tag,a===13){if(a=_n(i),a!==null){o.blockedOn=a,Hl(o.priority,function(){da(i)});return}}else if(a===3&&i.stateNode.current.memoizedState.isDehydrated){o.blockedOn=i.tag===3?i.stateNode.containerInfo:null;return}}}o.blockedOn=null}function ci(o){if(o.blockedOn!==null)return!1;for(var a=o.targetContainers;0<a.length;){var i=es(o.domEventName,o.eventSystemFlags,a[0],o.nativeEvent);if(i===null){i=o.nativeEvent;var d=new i.constructor(i.type,i);Jo=d,i.target.dispatchEvent(d),Jo=null}else return a=Oo(i),a!==null&&Cn(a),o.blockedOn=i,!1;a.shift()}return!0}function Vu(o,a,i){ci(o)&&i.delete(a)}function Ht(){ol=!1,pa!==null&&ci(pa)&&(pa=null),Xo!==null&&ci(Xo)&&(Xo=null),Nr!==null&&ci(Nr)&&(Nr=null),Mt.forEach(Vu),ii.forEach(Vu)}function Cr(o,a){o.blockedOn===a&&(o.blockedOn=null,ol||(ol=!0,n.unstable_scheduleCallback(n.unstable_NormalPriority,Ht)))}function ui(o){function a(g){return Cr(g,o)}if(0<Ms.length){Cr(Ms[0],o);for(var i=1;i<Ms.length;i++){var d=Ms[i];d.blockedOn===o&&(d.blockedOn=null)}}for(pa!==null&&Cr(pa,o),Xo!==null&&Cr(Xo,o),Nr!==null&&Cr(Nr,o),Mt.forEach(a),ii.forEach(a),i=0;i<tt.length;i++)d=tt[i],d.blockedOn===o&&(d.blockedOn=null);for(;0<tt.length&&(i=tt[0],i.blockedOn===null);)li(i),i.blockedOn===null&&tt.shift()}var Pt=F.ReactCurrentBatchConfig,al=!0;function Zn(o,a,i,d){var g=xt,v=Pt.transition;Pt.transition=null;try{xt=1,ma(o,a,i,d)}finally{xt=g,Pt.transition=v}}function Wl(o,a,i,d){var g=xt,v=Pt.transition;Pt.transition=null;try{xt=4,ma(o,a,i,d)}finally{xt=g,Pt.transition=v}}function ma(o,a,i,d){if(al){var g=es(o,a,i,d);if(g===null)jn(o,a,d,eo,i),L(o,d);else if(Na(g,o,a,i,d))d.stopPropagation();else if(L(o,d),a&4&&-1<Bc.indexOf(o)){for(;g!==null;){var v=Oo(g);if(v!==null&&$t(v),v=es(o,a,i,d),v===null&&jn(o,a,d,eo,i),v===g)break;g=v}g!==null&&d.stopPropagation()}else jn(o,a,d,null,i)}}var eo=null;function es(o,a,i,d){if(eo=null,o=fr(d),o=Ta(o),o!==null)if(a=ft(o),a===null)o=null;else if(i=a.tag,i===13){if(o=_n(a),o!==null)return o;o=null}else if(i===3){if(a.stateNode.current.memoizedState.isDehydrated)return a.tag===3?a.stateNode.containerInfo:null;o=null}else a!==o&&(o=null);return eo=o,null}function Ca(o){switch(o){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Kn()){case Qn:return 1;case Eo:return 4;case Yr:case ai:return 16;case Vl:return 536870912;default:return 16}default:return 16}}var to=null,Xa=null,rl=null;function On(){if(rl)return rl;var o,a=Xa,i=a.length,d,g="value"in to?to.value:to.textContent,v=g.length;for(o=0;o<i&&a[o]===g[o];o++);var A=i-o;for(d=1;d<=A&&a[i-d]===g[v-d];d++);return rl=g.slice(o,1<d?1-d:void 0)}function Sr(o){var a=o.keyCode;return"charCode"in o?(o=o.charCode,o===0&&a===13&&(o=13)):o=a,o===10&&(o=13),32<=o||o===13?o:0}function ts(){return!0}function ha(){return!1}function no(o){function a(i,d,g,v,A){this._reactName=i,this._targetInst=g,this.type=d,this.nativeEvent=v,this.target=A,this.currentTarget=null;for(var U in o)o.hasOwnProperty(U)&&(i=o[U],this[U]=i?i(v):v[U]);return this.isDefaultPrevented=(v.defaultPrevented!=null?v.defaultPrevented:v.returnValue===!1)?ts:ha,this.isPropagationStopped=ha,this}return K(a.prototype,{preventDefault:function(){this.defaultPrevented=!0;var i=this.nativeEvent;i&&(i.preventDefault?i.preventDefault():typeof i.returnValue!="unknown"&&(i.returnValue=!1),this.isDefaultPrevented=ts)},stopPropagation:function(){var i=this.nativeEvent;i&&(i.stopPropagation?i.stopPropagation():typeof i.cancelBubble!="unknown"&&(i.cancelBubble=!0),this.isPropagationStopped=ts)},persist:function(){},isPersistent:ts}),a}var oo={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(o){return o.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Ya=no(oo),Sa=K({},oo,{view:0,detail:0}),ns=no(Sa),Za,Gl,Rn,di=K({},Sa,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Jl,button:0,buttons:0,relatedTarget:function(o){return o.relatedTarget===void 0?o.fromElement===o.srcElement?o.toElement:o.fromElement:o.relatedTarget},movementX:function(o){return"movementX"in o?o.movementX:(o!==Rn&&(Rn&&o.type==="mousemove"?(Za=o.screenX-Rn.screenX,Gl=o.screenY-Rn.screenY):Gl=Za=0,Rn=o),Za)},movementY:function(o){return"movementY"in o?o.movementY:Gl}}),ao=no(di),ka=K({},di,{dataTransfer:0}),Vc=no(ka),Vd=K({},Sa,{relatedTarget:0}),kr=no(Vd),Uu=K({},oo,{animationName:0,elapsedTime:0,pseudoElement:0}),os=no(Uu),pi=K({},oo,{clipboardData:function(o){return"clipboardData"in o?o.clipboardData:window.clipboardData}}),Uc=no(pi),Ud=K({},oo,{data:0}),sl=no(Ud),qd={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Mo={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Ts={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Ar(o){var a=this.nativeEvent;return a.getModifierState?a.getModifierState(o):(o=Ts[o])?!!a[o]:!1}function Jl(){return Ar}var qc=K({},Sa,{key:function(o){if(o.key){var a=qd[o.key]||o.key;if(a!=="Unidentified")return a}return o.type==="keypress"?(o=Sr(o),o===13?"Enter":String.fromCharCode(o)):o.type==="keydown"||o.type==="keyup"?Mo[o.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Jl,charCode:function(o){return o.type==="keypress"?Sr(o):0},keyCode:function(o){return o.type==="keydown"||o.type==="keyup"?o.keyCode:0},which:function(o){return o.type==="keypress"?Sr(o):o.type==="keydown"||o.type==="keyup"?o.keyCode:0}}),Wt=no(qc),qu=K({},di,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),fo=no(qu),mi=K({},Sa,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Jl}),as=no(mi),Kl=K({},oo,{propertyName:0,elapsedTime:0,pseudoElement:0}),hi=no(Kl),Ql=K({},di,{deltaX:function(o){return"deltaX"in o?o.deltaX:"wheelDeltaX"in o?-o.wheelDeltaX:0},deltaY:function(o){return"deltaY"in o?o.deltaY:"wheelDeltaY"in o?-o.wheelDeltaY:"wheelDelta"in o?-o.wheelDelta:0},deltaZ:0,deltaMode:0}),Hu=no(Ql),er=[9,13,27,32],rs=h&&"CompositionEvent"in window,il=null;h&&"documentMode"in document&&(il=document.documentMode);var Wu=h&&"TextEvent"in window&&!il,ll=h&&(!rs||il&&8<il&&11>=il),ss=" ",cl=!1;function Er(o,a){switch(o){case"keyup":return er.indexOf(a.keyCode)!==-1;case"keydown":return a.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Hc(o){return o=o.detail,typeof o=="object"&&"data"in o?o.data:null}var dt=!1;function fi(o,a){switch(o){case"compositionend":return Hc(a);case"keypress":return a.which!==32?null:(cl=!0,ss);case"textInput":return o=a.data,o===ss&&cl?null:o;default:return null}}function Aa(o,a){if(dt)return o==="compositionend"||!rs&&Er(o,a)?(o=On(),rl=Xa=to=null,dt=!1,o):null;switch(o){case"paste":return null;case"keypress":if(!(a.ctrlKey||a.altKey||a.metaKey)||a.ctrlKey&&a.altKey){if(a.char&&1<a.char.length)return a.char;if(a.which)return String.fromCharCode(a.which)}return null;case"compositionend":return ll&&a.locale!=="ko"?null:a.data;default:return null}}var Mr={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Gu(o){var a=o&&o.nodeName&&o.nodeName.toLowerCase();return a==="input"?!!Mr[o.type]:a==="textarea"}function Xl(o,a,i,d){gr(d),a=Po(a,"onChange"),0<a.length&&(i=new Ya("onChange","change",null,i,d),o.push({event:i,listeners:a}))}var tr=null,is=null;function Ju(o){Si(o,0)}function Fn(o){var a=Lr(o);if(at(a))return o}function go(o,a){if(o==="change")return a}var ro=!1;if(h){var Wc;if(h){var Is="oninput"in document;if(!Is){var Yl=document.createElement("div");Yl.setAttribute("oninput","return;"),Is=typeof Yl.oninput=="function"}Wc=Is}else Wc=!1;ro=Wc&&(!document.documentMode||9<document.documentMode)}function st(){tr&&(tr.detachEvent("onpropertychange",Tn),is=tr=null)}function Tn(o){if(o.propertyName==="value"&&Fn(is)){var a=[];Xl(a,is,o,fr(o)),Va(Ju,a)}}function ls(o,a,i){o==="focusin"?(st(),tr=a,is=i,tr.attachEvent("onpropertychange",Tn)):o==="focusout"&&st()}function ul(o){if(o==="selectionchange"||o==="keyup"||o==="keydown")return Fn(is)}function gi(o,a){if(o==="click")return Fn(a)}function Tr(o,a){if(o==="input"||o==="change")return Fn(a)}function Ps(o,a){return o===a&&(o!==0||1/o===1/a)||o!==o&&a!==a}var hn=typeof Object.is=="function"?Object.is:Ps;function To(o,a){if(hn(o,a))return!0;if(typeof o!="object"||o===null||typeof a!="object"||a===null)return!1;var i=Object.keys(o),d=Object.keys(a);if(i.length!==d.length)return!1;for(d=0;d<i.length;d++){var g=i[d];if(!f.call(a,g)||!hn(o[g],a[g]))return!1}return!0}function fa(o){for(;o&&o.firstChild;)o=o.firstChild;return o}function nr(o,a){var i=fa(o);o=0;for(var d;i;){if(i.nodeType===3){if(d=o+i.textContent.length,o<=a&&d>=a)return{node:i,offset:a-o};o=d}e:{for(;i;){if(i.nextSibling){i=i.nextSibling;break e}i=i.parentNode}i=void 0}i=fa(i)}}function xi(o,a){return o&&a?o===a?!0:o&&o.nodeType===3?!1:a&&a.nodeType===3?xi(o,a.parentNode):"contains"in o?o.contains(a):o.compareDocumentPosition?!!(o.compareDocumentPosition(a)&16):!1:!1}function dl(){for(var o=window,a=gt();a instanceof o.HTMLIFrameElement;){try{var i=typeof a.contentWindow.location.href=="string"}catch{i=!1}if(i)o=a.contentWindow;else break;a=gt(o.document)}return a}function Ir(o){var a=o&&o.nodeName&&o.nodeName.toLowerCase();return a&&(a==="input"&&(o.type==="text"||o.type==="search"||o.type==="tel"||o.type==="url"||o.type==="password")||a==="textarea"||o.contentEditable==="true")}function vi(o){var a=dl(),i=o.focusedElem,d=o.selectionRange;if(a!==i&&i&&i.ownerDocument&&xi(i.ownerDocument.documentElement,i)){if(d!==null&&Ir(i)){if(a=d.start,o=d.end,o===void 0&&(o=a),"selectionStart"in i)i.selectionStart=a,i.selectionEnd=Math.min(o,i.value.length);else if(o=(a=i.ownerDocument||document)&&a.defaultView||window,o.getSelection){o=o.getSelection();var g=i.textContent.length,v=Math.min(d.start,g);d=d.end===void 0?v:Math.min(d.end,g),!o.extend&&v>d&&(g=d,d=v,v=g),g=nr(i,v);var A=nr(i,d);g&&A&&(o.rangeCount!==1||o.anchorNode!==g.node||o.anchorOffset!==g.offset||o.focusNode!==A.node||o.focusOffset!==A.offset)&&(a=a.createRange(),a.setStart(g.node,g.offset),o.removeAllRanges(),v>d?(o.addRange(a),o.extend(A.node,A.offset)):(a.setEnd(A.node,A.offset),o.addRange(a)))}}for(a=[],o=i;o=o.parentNode;)o.nodeType===1&&a.push({element:o,left:o.scrollLeft,top:o.scrollTop});for(typeof i.focus=="function"&&i.focus(),i=0;i<a.length;i++)o=a[i],o.element.scrollLeft=o.left,o.element.scrollTop=o.top}}var yi=h&&"documentMode"in document&&11>=document.documentMode,Yo=null,_s=null,ga=null,Io=!1;function ji(o,a,i){var d=i.window===i?i.document:i.nodeType===9?i:i.ownerDocument;Io||Yo==null||Yo!==gt(d)||(d=Yo,"selectionStart"in d&&Ir(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),ga&&To(ga,d)||(ga=d,d=Po(_s,"onSelect"),0<d.length&&(a=new Ya("onSelect","select",null,a,i),o.push({event:a,listeners:d}),a.target=Yo)))}function bi(o,a){var i={};return i[o.toLowerCase()]=a.toLowerCase(),i["Webkit"+o]="webkit"+a,i["Moz"+o]="moz"+a,i}var zn={animationend:bi("Animation","AnimationEnd"),animationiteration:bi("Animation","AnimationIteration"),animationstart:bi("Animation","AnimationStart"),transitionend:bi("Transition","TransitionEnd")},wi={},Zl={};h&&(Zl=document.createElement("div").style,"AnimationEvent"in window||(delete zn.animationend.animation,delete zn.animationiteration.animation,delete zn.animationstart.animation),"TransitionEvent"in window||delete zn.transitionend.transition);function Ni(o){if(wi[o])return wi[o];if(!zn[o])return o;var a=zn[o],i;for(i in a)if(a.hasOwnProperty(i)&&i in Zl)return wi[o]=a[i];return o}var ec=Ni("animationend"),tc=Ni("animationiteration"),Gc=Ni("animationstart"),nc=Ni("transitionend"),St=new Map,Xt="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Gt(o,a){St.set(o,a),p(a,[o])}for(var Ci=0;Ci<Xt.length;Ci++){var pl=Xt[Ci],Pr=pl.toLowerCase(),_r=pl[0].toUpperCase()+pl.slice(1);Gt(Pr,"on"+_r)}Gt(ec,"onAnimationEnd"),Gt(tc,"onAnimationIteration"),Gt(Gc,"onAnimationStart"),Gt("dblclick","onDoubleClick"),Gt("focusin","onFocus"),Gt("focusout","onBlur"),Gt(nc,"onTransitionEnd"),m("onMouseEnter",["mouseout","mouseover"]),m("onMouseLeave",["mouseout","mouseover"]),m("onPointerEnter",["pointerout","pointerover"]),m("onPointerLeave",["pointerout","pointerover"]),p("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),p("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),p("onBeforeInput",["compositionend","keypress","textInput","paste"]),p("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),p("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),p("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Ea="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),ml=new Set("cancel close invalid load scroll toggle".split(" ").concat(Ea));function Ku(o,a,i){var d=o.type||"unknown-event";o.currentTarget=i,Jn(d,a,void 0,o),o.currentTarget=null}function Si(o,a){a=(a&4)!==0;for(var i=0;i<o.length;i++){var d=o[i],g=d.event;d=d.listeners;e:{var v=void 0;if(a)for(var A=d.length-1;0<=A;A--){var U=d[A],J=U.instance,de=U.currentTarget;if(U=U.listener,J!==v&&g.isPropagationStopped())break e;Ku(g,U,de),v=J}else for(A=0;A<d.length;A++){if(U=d[A],J=U.instance,de=U.currentTarget,U=U.listener,J!==v&&g.isPropagationStopped())break e;Ku(g,U,de),v=J}}}if(Xr)throw o=Ha,Xr=!1,Ha=null,o}function Tt(o,a){var i=a[oc];i===void 0&&(i=a[oc]=new Set);var d=o+"__bubble";i.has(d)||(Jc(a,o,2,!1),i.add(d))}function ki(o,a,i){var d=0;a&&(d|=4),Jc(i,o,d,a)}var or="_reactListening"+Math.random().toString(36).slice(2);function Os(o){if(!o[or]){o[or]=!0,s.forEach(function(i){i!=="selectionchange"&&(ml.has(i)||ki(i,!1,o),ki(i,!0,o))});var a=o.nodeType===9?o:o.ownerDocument;a===null||a[or]||(a[or]=!0,ki("selectionchange",!1,a))}}function Jc(o,a,i,d){switch(Ca(a)){case 1:var g=Zn;break;case 4:g=Wl;break;default:g=ma}i=g.bind(null,a,i,o),g=void 0,!ks||a!=="touchstart"&&a!=="touchmove"&&a!=="wheel"||(g=!0),d?g!==void 0?o.addEventListener(a,i,{capture:!0,passive:g}):o.addEventListener(a,i,!0):g!==void 0?o.addEventListener(a,i,{passive:g}):o.addEventListener(a,i,!1)}function jn(o,a,i,d,g){var v=d;if((a&1)===0&&(a&2)===0&&d!==null)e:for(;;){if(d===null)return;var A=d.tag;if(A===3||A===4){var U=d.stateNode.containerInfo;if(U===g||U.nodeType===8&&U.parentNode===g)break;if(A===4)for(A=d.return;A!==null;){var J=A.tag;if((J===3||J===4)&&(J=A.stateNode.containerInfo,J===g||J.nodeType===8&&J.parentNode===g))return;A=A.return}for(;U!==null;){if(A=Ta(U),A===null)return;if(J=A.tag,J===5||J===6){d=v=A;continue e}U=U.parentNode}}d=d.return}Va(function(){var de=v,Se=fr(i),Ae=[];e:{var Ne=St.get(o);if(Ne!==void 0){var Le=Ya,He=o;switch(o){case"keypress":if(Sr(i)===0)break e;case"keydown":case"keyup":Le=Wt;break;case"focusin":He="focus",Le=kr;break;case"focusout":He="blur",Le=kr;break;case"beforeblur":case"afterblur":Le=kr;break;case"click":if(i.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":Le=ao;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":Le=Vc;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":Le=as;break;case ec:case tc:case Gc:Le=os;break;case nc:Le=hi;break;case"scroll":Le=ns;break;case"wheel":Le=Hu;break;case"copy":case"cut":case"paste":Le=Uc;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":Le=fo}var Je=(a&4)!==0,Hn=!Je&&o==="scroll",ie=Je?Ne!==null?Ne+"Capture":null:Ne;Je=[];for(var X=de,ce;X!==null;){ce=X;var Ie=ce.stateNode;if(ce.tag===5&&Ie!==null&&(ce=Ie,ie!==null&&(Ie=Ua(X,ie),Ie!=null&&Je.push(vt(X,Ie,ce)))),Hn)break;X=X.return}0<Je.length&&(Ne=new Le(Ne,He,null,i,Se),Ae.push({event:Ne,listeners:Je}))}}if((a&7)===0){e:{if(Ne=o==="mouseover"||o==="pointerover",Le=o==="mouseout"||o==="pointerout",Ne&&i!==Jo&&(He=i.relatedTarget||i.fromElement)&&(Ta(He)||He[sn]))break e;if((Le||Ne)&&(Ne=Se.window===Se?Se:(Ne=Se.ownerDocument)?Ne.defaultView||Ne.parentWindow:window,Le?(He=i.relatedTarget||i.toElement,Le=de,He=He?Ta(He):null,He!==null&&(Hn=ft(He),He!==Hn||He.tag!==5&&He.tag!==6)&&(He=null)):(Le=null,He=de),Le!==He)){if(Je=ao,Ie="onMouseLeave",ie="onMouseEnter",X="mouse",(o==="pointerout"||o==="pointerover")&&(Je=fo,Ie="onPointerLeave",ie="onPointerEnter",X="pointer"),Hn=Le==null?Ne:Lr(Le),ce=He==null?Ne:Lr(He),Ne=new Je(Ie,X+"leave",Le,i,Se),Ne.target=Hn,Ne.relatedTarget=ce,Ie=null,Ta(Se)===de&&(Je=new Je(ie,X+"enter",He,i,Se),Je.target=ce,Je.relatedTarget=Hn,Ie=Je),Hn=Ie,Le&&He)t:{for(Je=Le,ie=He,X=0,ce=Je;ce;ce=xa(ce))X++;for(ce=0,Ie=ie;Ie;Ie=xa(Ie))ce++;for(;0<X-ce;)Je=xa(Je),X--;for(;0<ce-X;)ie=xa(ie),ce--;for(;X--;){if(Je===ie||ie!==null&&Je===ie.alternate)break t;Je=xa(Je),ie=xa(ie)}Je=null}else Je=null;Le!==null&&va(Ae,Ne,Le,Je,!1),He!==null&&Hn!==null&&va(Ae,Hn,He,Je,!0)}}e:{if(Ne=de?Lr(de):window,Le=Ne.nodeName&&Ne.nodeName.toLowerCase(),Le==="select"||Le==="input"&&Ne.type==="file")var Ke=go;else if(Gu(Ne))if(ro)Ke=Tr;else{Ke=ul;var lt=ls}else(Le=Ne.nodeName)&&Le.toLowerCase()==="input"&&(Ne.type==="checkbox"||Ne.type==="radio")&&(Ke=gi);if(Ke&&(Ke=Ke(o,de))){Xl(Ae,Ke,i,Se);break e}lt&<(o,Ne,de),o==="focusout"&&(lt=Ne._wrapperState)&<.controlled&&Ne.type==="number"&&Ze(Ne,"number",Ne.value)}switch(lt=de?Lr(de):window,o){case"focusin":(Gu(lt)||lt.contentEditable==="true")&&(Yo=lt,_s=de,ga=null);break;case"focusout":ga=_s=Yo=null;break;case"mousedown":Io=!0;break;case"contextmenu":case"mouseup":case"dragend":Io=!1,ji(Ae,i,Se);break;case"selectionchange":if(yi)break;case"keydown":case"keyup":ji(Ae,i,Se)}var ct;if(rs)e:{switch(o){case"compositionstart":var pt="onCompositionStart";break e;case"compositionend":pt="onCompositionEnd";break e;case"compositionupdate":pt="onCompositionUpdate";break e}pt=void 0}else dt?Er(o,i)&&(pt="onCompositionEnd"):o==="keydown"&&i.keyCode===229&&(pt="onCompositionStart");pt&&(ll&&i.locale!=="ko"&&(dt||pt!=="onCompositionStart"?pt==="onCompositionEnd"&&dt&&(ct=On()):(to=Se,Xa="value"in to?to.value:to.textContent,dt=!0)),lt=Po(de,pt),0<lt.length&&(pt=new sl(pt,o,null,i,Se),Ae.push({event:pt,listeners:lt}),ct?pt.data=ct:(ct=Hc(i),ct!==null&&(pt.data=ct)))),(ct=Wu?fi(o,i):Aa(o,i))&&(de=Po(de,"onBeforeInput"),0<de.length&&(Se=new sl("onBeforeInput","beforeinput",null,i,Se),Ae.push({event:Se,listeners:de}),Se.data=ct))}Si(Ae,a)})}function vt(o,a,i){return{instance:o,listener:a,currentTarget:i}}function Po(o,a){for(var i=a+"Capture",d=[];o!==null;){var g=o,v=g.stateNode;g.tag===5&&v!==null&&(g=v,v=Ua(o,i),v!=null&&d.unshift(vt(o,v,g)),v=Ua(o,a),v!=null&&d.push(vt(o,v,g))),o=o.return}return d}function xa(o){if(o===null)return null;do o=o.return;while(o&&o.tag!==5);return o||null}function va(o,a,i,d,g){for(var v=a._reactName,A=[];i!==null&&i!==d;){var U=i,J=U.alternate,de=U.stateNode;if(J!==null&&J===d)break;U.tag===5&&de!==null&&(U=de,g?(J=Ua(i,v),J!=null&&A.unshift(vt(i,J,U))):g||(J=Ua(i,v),J!=null&&A.push(vt(i,J,U)))),i=i.return}A.length!==0&&o.push({event:a,listeners:A})}var Or=/\r\n?/g,_o=/\u0000|\uFFFD/g;function Kc(o){return(typeof o=="string"?o:""+o).replace(Or,`
|
|
38
|
+
`).replace(_o,"")}function Rs(o,a,i){if(a=Kc(a),Kc(o)!==a&&i)throw Error(r(425))}function Jt(){}var Rr=null,hl=null;function Ln(o,a){return o==="textarea"||o==="noscript"||typeof a.children=="string"||typeof a.children=="number"||typeof a.dangerouslySetInnerHTML=="object"&&a.dangerouslySetInnerHTML!==null&&a.dangerouslySetInnerHTML.__html!=null}var Fr=typeof setTimeout=="function"?setTimeout:void 0,cs=typeof clearTimeout=="function"?clearTimeout:void 0,xo=typeof Promise=="function"?Promise:void 0,Ai=typeof queueMicrotask=="function"?queueMicrotask:typeof xo<"u"?function(o){return xo.resolve(null).then(o).catch(Qu)}:Fr;function Qu(o){setTimeout(function(){throw o})}function ya(o,a){var i=a,d=0;do{var g=i.nextSibling;if(o.removeChild(i),g&&g.nodeType===8)if(i=g.data,i==="/$"){if(d===0){o.removeChild(g),ui(a);return}d--}else i!=="$"&&i!=="$?"&&i!=="$!"||d++;i=g}while(i);ui(a)}function zr(o){for(;o!=null;o=o.nextSibling){var a=o.nodeType;if(a===1||a===3)break;if(a===8){if(a=o.data,a==="$"||a==="$!"||a==="$?")break;if(a==="/$")return null}}return o}function ar(o){o=o.previousSibling;for(var a=0;o;){if(o.nodeType===8){var i=o.data;if(i==="$"||i==="$!"||i==="$?"){if(a===0)return o;a--}else i==="/$"&&a++}o=o.previousSibling}return null}var Ei=Math.random().toString(36).slice(2),rn="__reactFiber$"+Ei,Fs="__reactProps$"+Ei,sn="__reactContainer$"+Ei,oc="__reactEvents$"+Ei,Ma="__reactListeners$"+Ei,ac="__reactHandles$"+Ei;function Ta(o){var a=o[rn];if(a)return a;for(var i=o.parentNode;i;){if(a=i[sn]||i[rn]){if(i=a.alternate,a.child!==null||i!==null&&i.child!==null)for(o=ar(o);o!==null;){if(i=o[rn])return i;o=ar(o)}return a}o=i,i=o.parentNode}return null}function Oo(o){return o=o[rn]||o[sn],!o||o.tag!==5&&o.tag!==6&&o.tag!==13&&o.tag!==3?null:o}function Lr(o){if(o.tag===5||o.tag===6)return o.stateNode;throw Error(r(33))}function rr(o){return o[Fs]||null}var fl=[],Ia=-1;function Pa(o){return{current:o}}function Ee(o){0>Ia||(o.current=fl[Ia],fl[Ia]=null,Ia--)}function It(o,a){Ia++,fl[Ia]=o.current,o.current=a}var ja={},Dn=Pa(ja),$n=Pa(!1),fn=ja;function Kt(o,a){var i=o.type.contextTypes;if(!i)return ja;var d=o.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===a)return d.__reactInternalMemoizedMaskedChildContext;var g={},v;for(v in i)g[v]=a[v];return d&&(o=o.stateNode,o.__reactInternalMemoizedUnmaskedChildContext=a,o.__reactInternalMemoizedMaskedChildContext=g),g}function In(o){return o=o.childContextTypes,o!=null}function Sn(){Ee($n),Ee(Dn)}function us(o,a,i){if(Dn.current!==ja)throw Error(r(168));It(Dn,a),It($n,i)}function Qc(o,a,i){var d=o.stateNode;if(a=a.childContextTypes,typeof d.getChildContext!="function")return i;d=d.getChildContext();for(var g in d)if(!(g in a))throw Error(r(108,$(o)||"Unknown",g));return K({},i,d)}function ds(o){return o=(o=o.stateNode)&&o.__reactInternalMemoizedMergedChildContext||ja,fn=Dn.current,It(Dn,o),It($n,$n.current),!0}function gl(o,a,i){var d=o.stateNode;if(!d)throw Error(r(169));i?(o=Qc(o,a,fn),d.__reactInternalMemoizedMergedChildContext=o,Ee($n),Ee(Dn),It(Dn,o)):Ee($n),It($n,i)}var _a=null,xl=!1,rc=!1;function sc(o){_a===null?_a=[o]:_a.push(o)}function Zo(o){xl=!0,sc(o)}function sr(){if(!rc&&_a!==null){rc=!0;var o=0,a=xt;try{var i=_a;for(xt=1;o<i.length;o++){var d=i[o];do d=d(!0);while(d!==null)}_a=null,xl=!1}catch(g){throw _a!==null&&(_a=_a.slice(o+1)),Es(Qn,sr),g}finally{xt=a,rc=!1}}return null}var ps=[],vo=0,Mi=null,zs=0,Ro=[],Lt=0,_t=null,ea=1,ir="";function Ot(o,a){ps[vo++]=zs,ps[vo++]=Mi,Mi=o,zs=a}function Qt(o,a,i){Ro[Lt++]=ea,Ro[Lt++]=ir,Ro[Lt++]=_t,_t=o;var d=ea;o=ir;var g=32-_e(d)-1;d&=~(1<<g),i+=1;var v=32-_e(a)+g;if(30<v){var A=g-g%5;v=(d&(1<<A)-1).toString(32),d>>=A,g-=A,ea=1<<32-_e(a)+g|i<<g|d,ir=v+o}else ea=1<<v|i<<g|d,ir=o}function Ls(o){o.return!==null&&(Ot(o,1),Qt(o,1,0))}function vl(o){for(;o===Mi;)Mi=ps[--vo],ps[vo]=null,zs=ps[--vo],ps[vo]=null;for(;o===_t;)_t=Ro[--Lt],Ro[Lt]=null,ir=Ro[--Lt],Ro[Lt]=null,ea=Ro[--Lt],Ro[Lt]=null}var bn=null,so=null,Rt=!1,yo=null;function ta(o,a){var i=ws(5,null,null,0);i.elementType="DELETED",i.stateNode=a,i.return=o,a=o.deletions,a===null?(o.deletions=[i],o.flags|=16):a.push(i)}function ic(o,a){switch(o.tag){case 5:var i=o.type;return a=a.nodeType!==1||i.toLowerCase()!==a.nodeName.toLowerCase()?null:a,a!==null?(o.stateNode=a,bn=o,so=zr(a.firstChild),!0):!1;case 6:return a=o.pendingProps===""||a.nodeType!==3?null:a,a!==null?(o.stateNode=a,bn=o,so=null,!0):!1;case 13:return a=a.nodeType!==8?null:a,a!==null?(i=_t!==null?{id:ea,overflow:ir}:null,o.memoizedState={dehydrated:a,treeContext:i,retryLane:1073741824},i=ws(18,null,null,0),i.stateNode=a,i.return=o,o.child=i,bn=o,so=null,!0):!1;default:return!1}}function yl(o){return(o.mode&1)!==0&&(o.flags&128)===0}function Dr(o){if(Rt){var a=so;if(a){var i=a;if(!ic(o,a)){if(yl(o))throw Error(r(418));a=zr(i.nextSibling);var d=bn;a&&ic(o,a)?ta(d,i):(o.flags=o.flags&-4097|2,Rt=!1,bn=o)}}else{if(yl(o))throw Error(r(418));o.flags=o.flags&-4097|2,Rt=!1,bn=o}}}function jo(o){for(o=o.return;o!==null&&o.tag!==5&&o.tag!==3&&o.tag!==13;)o=o.return;bn=o}function Ti(o){if(o!==bn)return!1;if(!Rt)return jo(o),Rt=!0,!1;var a;if((a=o.tag!==3)&&!(a=o.tag!==5)&&(a=o.type,a=a!=="head"&&a!=="body"&&!Ln(o.type,o.memoizedProps)),a&&(a=so)){if(yl(o))throw lc(),Error(r(418));for(;a;)ta(o,a),a=zr(a.nextSibling)}if(jo(o),o.tag===13){if(o=o.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(r(317));e:{for(o=o.nextSibling,a=0;o;){if(o.nodeType===8){var i=o.data;if(i==="/$"){if(a===0){so=zr(o.nextSibling);break e}a--}else i!=="$"&&i!=="$!"&&i!=="$?"||a++}o=o.nextSibling}so=null}}else so=bn?zr(o.stateNode.nextSibling):null;return!0}function lc(){for(var o=so;o;)o=zr(o.nextSibling)}function ms(){so=bn=null,Rt=!1}function jl(o){yo===null?yo=[o]:yo.push(o)}var cc=F.ReactCurrentBatchConfig;function hs(o,a,i){if(o=i.ref,o!==null&&typeof o!="function"&&typeof o!="object"){if(i._owner){if(i=i._owner,i){if(i.tag!==1)throw Error(r(309));var d=i.stateNode}if(!d)throw Error(r(147,o));var g=d,v=""+o;return a!==null&&a.ref!==null&&typeof a.ref=="function"&&a.ref._stringRef===v?a.ref:(a=function(A){var U=g.refs;A===null?delete U[v]:U[v]=A},a._stringRef=v,a)}if(typeof o!="string")throw Error(r(284));if(!i._owner)throw Error(r(290,o))}return o}function $r(o,a){throw o=Object.prototype.toString.call(a),Error(r(31,o==="[object Object]"?"object with keys {"+Object.keys(a).join(", ")+"}":o))}function Xc(o){var a=o._init;return a(o._payload)}function uc(o){function a(ie,X){if(o){var ce=ie.deletions;ce===null?(ie.deletions=[X],ie.flags|=16):ce.push(X)}}function i(ie,X){if(!o)return null;for(;X!==null;)a(ie,X),X=X.sibling;return null}function d(ie,X){for(ie=new Map;X!==null;)X.key!==null?ie.set(X.key,X):ie.set(X.index,X),X=X.sibling;return ie}function g(ie,X){return ie=Ac(ie,X),ie.index=0,ie.sibling=null,ie}function v(ie,X,ce){return ie.index=ce,o?(ce=ie.alternate,ce!==null?(ce=ce.index,ce<X?(ie.flags|=2,X):ce):(ie.flags|=2,X)):(ie.flags|=1048576,X)}function A(ie){return o&&ie.alternate===null&&(ie.flags|=2),ie}function U(ie,X,ce,Ie){return X===null||X.tag!==6?(X=zh(ce,ie.mode,Ie),X.return=ie,X):(X=g(X,ce),X.return=ie,X)}function J(ie,X,ce,Ie){var Ke=ce.type;return Ke===ae?Se(ie,X,ce.props.children,Ie,ce.key):X!==null&&(X.elementType===Ke||typeof Ke=="object"&&Ke!==null&&Ke.$$typeof===H&&Xc(Ke)===X.type)?(Ie=g(X,ce.props),Ie.ref=hs(ie,X,ce),Ie.return=ie,Ie):(Ie=Nm(ce.type,ce.key,ce.props,null,ie.mode,Ie),Ie.ref=hs(ie,X,ce),Ie.return=ie,Ie)}function de(ie,X,ce,Ie){return X===null||X.tag!==4||X.stateNode.containerInfo!==ce.containerInfo||X.stateNode.implementation!==ce.implementation?(X=Lh(ce,ie.mode,Ie),X.return=ie,X):(X=g(X,ce.children||[]),X.return=ie,X)}function Se(ie,X,ce,Ie,Ke){return X===null||X.tag!==7?(X=Mu(ce,ie.mode,Ie,Ke),X.return=ie,X):(X=g(X,ce),X.return=ie,X)}function Ae(ie,X,ce){if(typeof X=="string"&&X!==""||typeof X=="number")return X=zh(""+X,ie.mode,ce),X.return=ie,X;if(typeof X=="object"&&X!==null){switch(X.$$typeof){case Y:return ce=Nm(X.type,X.key,X.props,null,ie.mode,ce),ce.ref=hs(ie,null,X),ce.return=ie,ce;case ne:return X=Lh(X,ie.mode,ce),X.return=ie,X;case H:var Ie=X._init;return Ae(ie,Ie(X._payload),ce)}if(Ct(X)||V(X))return X=Mu(X,ie.mode,ce,null),X.return=ie,X;$r(ie,X)}return null}function Ne(ie,X,ce,Ie){var Ke=X!==null?X.key:null;if(typeof ce=="string"&&ce!==""||typeof ce=="number")return Ke!==null?null:U(ie,X,""+ce,Ie);if(typeof ce=="object"&&ce!==null){switch(ce.$$typeof){case Y:return ce.key===Ke?J(ie,X,ce,Ie):null;case ne:return ce.key===Ke?de(ie,X,ce,Ie):null;case H:return Ke=ce._init,Ne(ie,X,Ke(ce._payload),Ie)}if(Ct(ce)||V(ce))return Ke!==null?null:Se(ie,X,ce,Ie,null);$r(ie,ce)}return null}function Le(ie,X,ce,Ie,Ke){if(typeof Ie=="string"&&Ie!==""||typeof Ie=="number")return ie=ie.get(ce)||null,U(X,ie,""+Ie,Ke);if(typeof Ie=="object"&&Ie!==null){switch(Ie.$$typeof){case Y:return ie=ie.get(Ie.key===null?ce:Ie.key)||null,J(X,ie,Ie,Ke);case ne:return ie=ie.get(Ie.key===null?ce:Ie.key)||null,de(X,ie,Ie,Ke);case H:var lt=Ie._init;return Le(ie,X,ce,lt(Ie._payload),Ke)}if(Ct(Ie)||V(Ie))return ie=ie.get(ce)||null,Se(X,ie,Ie,Ke,null);$r(X,Ie)}return null}function He(ie,X,ce,Ie){for(var Ke=null,lt=null,ct=X,pt=X=0,Uo=null;ct!==null&&pt<ce.length;pt++){ct.index>pt?(Uo=ct,ct=null):Uo=ct.sibling;var Ft=Ne(ie,ct,ce[pt],Ie);if(Ft===null){ct===null&&(ct=Uo);break}o&&ct&&Ft.alternate===null&&a(ie,ct),X=v(Ft,X,pt),lt===null?Ke=Ft:lt.sibling=Ft,lt=Ft,ct=Uo}if(pt===ce.length)return i(ie,ct),Rt&&Ot(ie,pt),Ke;if(ct===null){for(;pt<ce.length;pt++)ct=Ae(ie,ce[pt],Ie),ct!==null&&(X=v(ct,X,pt),lt===null?Ke=ct:lt.sibling=ct,lt=ct);return Rt&&Ot(ie,pt),Ke}for(ct=d(ie,ct);pt<ce.length;pt++)Uo=Le(ct,ie,pt,ce[pt],Ie),Uo!==null&&(o&&Uo.alternate!==null&&ct.delete(Uo.key===null?pt:Uo.key),X=v(Uo,X,pt),lt===null?Ke=Uo:lt.sibling=Uo,lt=Uo);return o&&ct.forEach(function(Ec){return a(ie,Ec)}),Rt&&Ot(ie,pt),Ke}function Je(ie,X,ce,Ie){var Ke=V(ce);if(typeof Ke!="function")throw Error(r(150));if(ce=Ke.call(ce),ce==null)throw Error(r(151));for(var lt=Ke=null,ct=X,pt=X=0,Uo=null,Ft=ce.next();ct!==null&&!Ft.done;pt++,Ft=ce.next()){ct.index>pt?(Uo=ct,ct=null):Uo=ct.sibling;var Ec=Ne(ie,ct,Ft.value,Ie);if(Ec===null){ct===null&&(ct=Uo);break}o&&ct&&Ec.alternate===null&&a(ie,ct),X=v(Ec,X,pt),lt===null?Ke=Ec:lt.sibling=Ec,lt=Ec,ct=Uo}if(Ft.done)return i(ie,ct),Rt&&Ot(ie,pt),Ke;if(ct===null){for(;!Ft.done;pt++,Ft=ce.next())Ft=Ae(ie,Ft.value,Ie),Ft!==null&&(X=v(Ft,X,pt),lt===null?Ke=Ft:lt.sibling=Ft,lt=Ft);return Rt&&Ot(ie,pt),Ke}for(ct=d(ie,ct);!Ft.done;pt++,Ft=ce.next())Ft=Le(ct,ie,pt,Ft.value,Ie),Ft!==null&&(o&&Ft.alternate!==null&&ct.delete(Ft.key===null?pt:Ft.key),X=v(Ft,X,pt),lt===null?Ke=Ft:lt.sibling=Ft,lt=Ft);return o&&ct.forEach(function(eb){return a(ie,eb)}),Rt&&Ot(ie,pt),Ke}function Hn(ie,X,ce,Ie){if(typeof ce=="object"&&ce!==null&&ce.type===ae&&ce.key===null&&(ce=ce.props.children),typeof ce=="object"&&ce!==null){switch(ce.$$typeof){case Y:e:{for(var Ke=ce.key,lt=X;lt!==null;){if(lt.key===Ke){if(Ke=ce.type,Ke===ae){if(lt.tag===7){i(ie,lt.sibling),X=g(lt,ce.props.children),X.return=ie,ie=X;break e}}else if(lt.elementType===Ke||typeof Ke=="object"&&Ke!==null&&Ke.$$typeof===H&&Xc(Ke)===lt.type){i(ie,lt.sibling),X=g(lt,ce.props),X.ref=hs(ie,lt,ce),X.return=ie,ie=X;break e}i(ie,lt);break}else a(ie,lt);lt=lt.sibling}ce.type===ae?(X=Mu(ce.props.children,ie.mode,Ie,ce.key),X.return=ie,ie=X):(Ie=Nm(ce.type,ce.key,ce.props,null,ie.mode,Ie),Ie.ref=hs(ie,X,ce),Ie.return=ie,ie=Ie)}return A(ie);case ne:e:{for(lt=ce.key;X!==null;){if(X.key===lt)if(X.tag===4&&X.stateNode.containerInfo===ce.containerInfo&&X.stateNode.implementation===ce.implementation){i(ie,X.sibling),X=g(X,ce.children||[]),X.return=ie,ie=X;break e}else{i(ie,X);break}else a(ie,X);X=X.sibling}X=Lh(ce,ie.mode,Ie),X.return=ie,ie=X}return A(ie);case H:return lt=ce._init,Hn(ie,X,lt(ce._payload),Ie)}if(Ct(ce))return He(ie,X,ce,Ie);if(V(ce))return Je(ie,X,ce,Ie);$r(ie,ce)}return typeof ce=="string"&&ce!==""||typeof ce=="number"?(ce=""+ce,X!==null&&X.tag===6?(i(ie,X.sibling),X=g(X,ce),X.return=ie,ie=X):(i(ie,X),X=zh(ce,ie.mode,Ie),X.return=ie,ie=X),A(ie)):i(ie,X)}return Hn}var fs=uc(!0),Yc=uc(!1),Oa=Pa(null),Ds=null,$s=null,Ii=null;function dc(){Ii=$s=Ds=null}function bl(o){var a=Oa.current;Ee(Oa),o._currentValue=a}function pc(o,a,i){for(;o!==null;){var d=o.alternate;if((o.childLanes&a)!==a?(o.childLanes|=a,d!==null&&(d.childLanes|=a)):d!==null&&(d.childLanes&a)!==a&&(d.childLanes|=a),o===i)break;o=o.return}}function Bs(o,a){Ds=o,Ii=$s=null,o=o.dependencies,o!==null&&o.firstContext!==null&&((o.lanes&a)!==0&&(na=!0),o.firstContext=null)}function Fo(o){var a=o._currentValue;if(Ii!==o)if(o={context:o,memoizedValue:a,next:null},$s===null){if(Ds===null)throw Error(r(308));$s=o,Ds.dependencies={lanes:0,firstContext:o}}else $s=$s.next=o;return a}var Br=null;function gs(o){Br===null?Br=[o]:Br.push(o)}function wl(o,a,i,d){var g=a.interleaved;return g===null?(i.next=i,gs(a)):(i.next=g.next,g.next=i),a.interleaved=i,zo(o,d)}function zo(o,a){o.lanes|=a;var i=o.alternate;for(i!==null&&(i.lanes|=a),i=o,o=o.return;o!==null;)o.childLanes|=a,i=o.alternate,i!==null&&(i.childLanes|=a),i=o,o=o.return;return i.tag===3?i.stateNode:null}var Ra=!1;function Nl(o){o.updateQueue={baseState:o.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Cl(o,a){o=o.updateQueue,a.updateQueue===o&&(a.updateQueue={baseState:o.baseState,firstBaseUpdate:o.firstBaseUpdate,lastBaseUpdate:o.lastBaseUpdate,shared:o.shared,effects:o.effects})}function lr(o,a){return{eventTime:o,lane:a,tag:0,payload:null,callback:null,next:null}}function Vr(o,a,i){var d=o.updateQueue;if(d===null)return null;if(d=d.shared,(At&2)!==0){var g=d.pending;return g===null?a.next=a:(a.next=g.next,g.next=a),d.pending=a,zo(o,i)}return g=d.interleaved,g===null?(a.next=a,gs(d)):(a.next=g.next,g.next=a),d.interleaved=a,zo(o,i)}function Sl(o,a,i){if(a=a.updateQueue,a!==null&&(a=a.shared,(i&4194240)!==0)){var d=a.lanes;d&=o.pendingLanes,i|=d,a.lanes=i,an(o,i)}}function Zc(o,a){var i=o.updateQueue,d=o.alternate;if(d!==null&&(d=d.updateQueue,i===d)){var g=null,v=null;if(i=i.firstBaseUpdate,i!==null){do{var A={eventTime:i.eventTime,lane:i.lane,tag:i.tag,payload:i.payload,callback:i.callback,next:null};v===null?g=v=A:v=v.next=A,i=i.next}while(i!==null);v===null?g=v=a:v=v.next=a}else g=v=a;i={baseState:d.baseState,firstBaseUpdate:g,lastBaseUpdate:v,shared:d.shared,effects:d.effects},o.updateQueue=i;return}o=i.lastBaseUpdate,o===null?i.firstBaseUpdate=a:o.next=a,i.lastBaseUpdate=a}function Bn(o,a,i,d){var g=o.updateQueue;Ra=!1;var v=g.firstBaseUpdate,A=g.lastBaseUpdate,U=g.shared.pending;if(U!==null){g.shared.pending=null;var J=U,de=J.next;J.next=null,A===null?v=de:A.next=de,A=J;var Se=o.alternate;Se!==null&&(Se=Se.updateQueue,U=Se.lastBaseUpdate,U!==A&&(U===null?Se.firstBaseUpdate=de:U.next=de,Se.lastBaseUpdate=J))}if(v!==null){var Ae=g.baseState;A=0,Se=de=J=null,U=v;do{var Ne=U.lane,Le=U.eventTime;if((d&Ne)===Ne){Se!==null&&(Se=Se.next={eventTime:Le,lane:0,tag:U.tag,payload:U.payload,callback:U.callback,next:null});e:{var He=o,Je=U;switch(Ne=a,Le=i,Je.tag){case 1:if(He=Je.payload,typeof He=="function"){Ae=He.call(Le,Ae,Ne);break e}Ae=He;break e;case 3:He.flags=He.flags&-65537|128;case 0:if(He=Je.payload,Ne=typeof He=="function"?He.call(Le,Ae,Ne):He,Ne==null)break e;Ae=K({},Ae,Ne);break e;case 2:Ra=!0}}U.callback!==null&&U.lane!==0&&(o.flags|=64,Ne=g.effects,Ne===null?g.effects=[U]:Ne.push(U))}else Le={eventTime:Le,lane:Ne,tag:U.tag,payload:U.payload,callback:U.callback,next:null},Se===null?(de=Se=Le,J=Ae):Se=Se.next=Le,A|=Ne;if(U=U.next,U===null){if(U=g.shared.pending,U===null)break;Ne=U,U=Ne.next,Ne.next=null,g.lastBaseUpdate=Ne,g.shared.pending=null}}while(!0);if(Se===null&&(J=Ae),g.baseState=J,g.firstBaseUpdate=de,g.lastBaseUpdate=Se,a=g.shared.interleaved,a!==null){g=a;do A|=g.lane,g=g.next;while(g!==a)}else v===null&&(g.shared.lanes=0);Bi|=A,o.lanes=A,o.memoizedState=Ae}}function cr(o,a,i){if(o=a.effects,a.effects=null,o!==null)for(a=0;a<o.length;a++){var d=o[a],g=d.callback;if(g!==null){if(d.callback=null,d=i,typeof g!="function")throw Error(r(191,g));g.call(d)}}}var bo={},Lo=Pa(bo),Pi=Pa(bo),Vs=Pa(bo);function Ur(o){if(o===bo)throw Error(r(174));return o}function mc(o,a){switch(It(Vs,a),It(Pi,o),It(Lo,bo),o=a.nodeType,o){case 9:case 11:a=(a=a.documentElement)?a.namespaceURI:Re(null,"");break;default:o=o===8?a.parentNode:a,a=o.namespaceURI||null,o=o.tagName,a=Re(a,o)}Ee(Lo),It(Lo,a)}function xs(){Ee(Lo),Ee(Pi),Ee(Vs)}function hc(o){Ur(Vs.current);var a=Ur(Lo.current),i=Re(a,o.type);a!==i&&(It(Pi,o),It(Lo,i))}function kl(o){Pi.current===o&&(Ee(Lo),Ee(Pi))}var Yt=Pa(0);function Al(o){for(var a=o;a!==null;){if(a.tag===13){var i=a.memoizedState;if(i!==null&&(i=i.dehydrated,i===null||i.data==="$?"||i.data==="$!"))return a}else if(a.tag===19&&a.memoizedProps.revealOrder!==void 0){if((a.flags&128)!==0)return a}else if(a.child!==null){a.child.return=a,a=a.child;continue}if(a===o)break;for(;a.sibling===null;){if(a.return===null||a.return===o)return null;a=a.return}a.sibling.return=a.return,a=a.sibling}return null}var fc=[];function gc(){for(var o=0;o<fc.length;o++)fc[o]._workInProgressVersionPrimary=null;fc.length=0}var El=F.ReactCurrentDispatcher,xc=F.ReactCurrentBatchConfig,Do=0,Zt=null,gn=null,wn=null,vs=!1,Us=!1,_i=0,eu=0;function Vn(){throw Error(r(321))}function Ml(o,a){if(a===null)return!1;for(var i=0;i<a.length&&i<o.length;i++)if(!hn(o[i],a[i]))return!1;return!0}function Oi(o,a,i,d,g,v){if(Do=v,Zt=a,a.memoizedState=null,a.updateQueue=null,a.lanes=0,El.current=o===null||o.memoizedState===null?uu:du,o=i(d,g),Us){v=0;do{if(Us=!1,_i=0,25<=v)throw Error(r(301));v+=1,wn=gn=null,a.updateQueue=null,El.current=Xu,o=i(d,g)}while(Us)}if(El.current=wo,a=gn!==null&&gn.next!==null,Do=0,wn=gn=Zt=null,vs=!1,a)throw Error(r(300));return o}function Tl(){var o=_i!==0;return _i=0,o}function Fa(){var o={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return wn===null?Zt.memoizedState=wn=o:wn=wn.next=o,wn}function io(){if(gn===null){var o=Zt.alternate;o=o!==null?o.memoizedState:null}else o=gn.next;var a=wn===null?Zt.memoizedState:wn.next;if(a!==null)wn=a,gn=o;else{if(o===null)throw Error(r(310));gn=o,o={memoizedState:gn.memoizedState,baseState:gn.baseState,baseQueue:gn.baseQueue,queue:gn.queue,next:null},wn===null?Zt.memoizedState=wn=o:wn=wn.next=o}return wn}function Ri(o,a){return typeof a=="function"?a(o):a}function vc(o){var a=io(),i=a.queue;if(i===null)throw Error(r(311));i.lastRenderedReducer=o;var d=gn,g=d.baseQueue,v=i.pending;if(v!==null){if(g!==null){var A=g.next;g.next=v.next,v.next=A}d.baseQueue=g=v,i.pending=null}if(g!==null){v=g.next,d=d.baseState;var U=A=null,J=null,de=v;do{var Se=de.lane;if((Do&Se)===Se)J!==null&&(J=J.next={lane:0,action:de.action,hasEagerState:de.hasEagerState,eagerState:de.eagerState,next:null}),d=de.hasEagerState?de.eagerState:o(d,de.action);else{var Ae={lane:Se,action:de.action,hasEagerState:de.hasEagerState,eagerState:de.eagerState,next:null};J===null?(U=J=Ae,A=d):J=J.next=Ae,Zt.lanes|=Se,Bi|=Se}de=de.next}while(de!==null&&de!==v);J===null?A=d:J.next=U,hn(d,a.memoizedState)||(na=!0),a.memoizedState=d,a.baseState=A,a.baseQueue=J,i.lastRenderedState=d}if(o=i.interleaved,o!==null){g=o;do v=g.lane,Zt.lanes|=v,Bi|=v,g=g.next;while(g!==o)}else g===null&&(i.lanes=0);return[a.memoizedState,i.dispatch]}function yc(o){var a=io(),i=a.queue;if(i===null)throw Error(r(311));i.lastRenderedReducer=o;var d=i.dispatch,g=i.pending,v=a.memoizedState;if(g!==null){i.pending=null;var A=g=g.next;do v=o(v,A.action),A=A.next;while(A!==g);hn(v,a.memoizedState)||(na=!0),a.memoizedState=v,a.baseQueue===null&&(a.baseState=v),i.lastRenderedState=v}return[v,d]}function tu(){}function nu(o,a){var i=Zt,d=io(),g=a(),v=!hn(d.memoizedState,g);if(v&&(d.memoizedState=g,na=!0),d=d.queue,Pl(ru.bind(null,i,d,o),[o]),d.getSnapshot!==a||v||wn!==null&&wn.memoizedState.tag&1){if(i.flags|=2048,qr(9,au.bind(null,i,d,g,a),void 0,null),co===null)throw Error(r(349));(Do&30)!==0||ou(i,a,g)}return g}function ou(o,a,i){o.flags|=16384,o={getSnapshot:a,value:i},a=Zt.updateQueue,a===null?(a={lastEffect:null,stores:null},Zt.updateQueue=a,a.stores=[o]):(i=a.stores,i===null?a.stores=[o]:i.push(o))}function au(o,a,i,d){a.value=i,a.getSnapshot=d,su(a)&&xn(o)}function ru(o,a,i){return i(function(){su(a)&&xn(o)})}function su(o){var a=o.getSnapshot;o=o.value;try{var i=a();return!hn(o,i)}catch{return!0}}function xn(o){var a=zo(o,1);a!==null&&pr(a,o,1,-1)}function vn(o){var a=Fa();return typeof o=="function"&&(o=o()),a.memoizedState=a.baseState=o,o={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Ri,lastRenderedState:o},a.queue=o,o=o.dispatch=tn.bind(null,Zt,o),[a.memoizedState,o]}function qr(o,a,i,d){return o={tag:o,create:a,destroy:i,deps:d,next:null},a=Zt.updateQueue,a===null?(a={lastEffect:null,stores:null},Zt.updateQueue=a,a.lastEffect=o.next=o):(i=a.lastEffect,i===null?a.lastEffect=o.next=o:(d=i.next,i.next=o,o.next=d,a.lastEffect=o)),o}function iu(){return io().memoizedState}function Il(o,a,i,d){var g=Fa();Zt.flags|=o,g.memoizedState=qr(1|a,i,void 0,d===void 0?null:d)}function Fi(o,a,i,d){var g=io();d=d===void 0?null:d;var v=void 0;if(gn!==null){var A=gn.memoizedState;if(v=A.destroy,d!==null&&Ml(d,A.deps)){g.memoizedState=qr(a,i,v,d);return}}Zt.flags|=o,g.memoizedState=qr(1|a,i,v,d)}function lu(o,a){return Il(8390656,8,o,a)}function Pl(o,a){return Fi(2048,8,o,a)}function jc(o,a){return Fi(4,2,o,a)}function cu(o,a){return Fi(4,4,o,a)}function c(o,a){if(typeof a=="function")return o=o(),a(o),function(){a(null)};if(a!=null)return o=o(),a.current=o,function(){a.current=null}}function S(o,a,i){return i=i!=null?i.concat([o]):null,Fi(4,4,c.bind(null,a,o),i)}function _(){}function W(o,a){var i=io();a=a===void 0?null:a;var d=i.memoizedState;return d!==null&&a!==null&&Ml(a,d[1])?d[0]:(i.memoizedState=[o,a],o)}function je(o,a){var i=io();a=a===void 0?null:a;var d=i.memoizedState;return d!==null&&a!==null&&Ml(a,d[1])?d[0]:(o=o(),i.memoizedState=[o,a],o)}function ke(o,a,i){return(Do&21)===0?(o.baseState&&(o.baseState=!1,na=!0),o.memoizedState=i):(hn(i,a)||(i=Ul(),Zt.lanes|=i,Bi|=i,o.baseState=!0),a)}function Ge(o,a){var i=xt;xt=i!==0&&4>i?i:4,o(!0);var d=xc.transition;xc.transition={};try{o(!1),a()}finally{xt=i,xc.transition=d}}function ut(){return io().memoizedState}function yt(o,a,i){var d=Js(o);if(i={lane:d,action:i,hasEagerState:!1,eagerState:null,next:null},Un(o))Xe(a,i);else if(i=wl(o,a,i,d),i!==null){var g=Vo();pr(i,o,d,g),ln(i,a,d)}}function tn(o,a,i){var d=Js(o),g={lane:d,action:i,hasEagerState:!1,eagerState:null,next:null};if(Un(o))Xe(a,g);else{var v=o.alternate;if(o.lanes===0&&(v===null||v.lanes===0)&&(v=a.lastRenderedReducer,v!==null))try{var A=a.lastRenderedState,U=v(A,i);if(g.hasEagerState=!0,g.eagerState=U,hn(U,A)){var J=a.interleaved;J===null?(g.next=g,gs(a)):(g.next=J.next,J.next=g),a.interleaved=g;return}}catch{}finally{}i=wl(o,a,g,d),i!==null&&(g=Vo(),pr(i,o,d,g),ln(i,a,d))}}function Un(o){var a=o.alternate;return o===Zt||a!==null&&a===Zt}function Xe(o,a){Us=vs=!0;var i=o.pending;i===null?a.next=a:(a.next=i.next,i.next=a),o.pending=a}function ln(o,a,i){if((i&4194240)!==0){var d=a.lanes;d&=o.pendingLanes,i|=d,a.lanes=i,an(o,i)}}var wo={readContext:Fo,useCallback:Vn,useContext:Vn,useEffect:Vn,useImperativeHandle:Vn,useInsertionEffect:Vn,useLayoutEffect:Vn,useMemo:Vn,useReducer:Vn,useRef:Vn,useState:Vn,useDebugValue:Vn,useDeferredValue:Vn,useTransition:Vn,useMutableSource:Vn,useSyncExternalStore:Vn,useId:Vn,unstable_isNewReconciler:!1},uu={readContext:Fo,useCallback:function(o,a){return Fa().memoizedState=[o,a===void 0?null:a],o},useContext:Fo,useEffect:lu,useImperativeHandle:function(o,a,i){return i=i!=null?i.concat([o]):null,Il(4194308,4,c.bind(null,a,o),i)},useLayoutEffect:function(o,a){return Il(4194308,4,o,a)},useInsertionEffect:function(o,a){return Il(4,2,o,a)},useMemo:function(o,a){var i=Fa();return a=a===void 0?null:a,o=o(),i.memoizedState=[o,a],o},useReducer:function(o,a,i){var d=Fa();return a=i!==void 0?i(a):a,d.memoizedState=d.baseState=a,o={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:o,lastRenderedState:a},d.queue=o,o=o.dispatch=yt.bind(null,Zt,o),[d.memoizedState,o]},useRef:function(o){var a=Fa();return o={current:o},a.memoizedState=o},useState:vn,useDebugValue:_,useDeferredValue:function(o){return Fa().memoizedState=o},useTransition:function(){var o=vn(!1),a=o[0];return o=Ge.bind(null,o[1]),Fa().memoizedState=o,[a,o]},useMutableSource:function(){},useSyncExternalStore:function(o,a,i){var d=Zt,g=Fa();if(Rt){if(i===void 0)throw Error(r(407));i=i()}else{if(i=a(),co===null)throw Error(r(349));(Do&30)!==0||ou(d,a,i)}g.memoizedState=i;var v={value:i,getSnapshot:a};return g.queue=v,lu(ru.bind(null,d,v,o),[o]),d.flags|=2048,qr(9,au.bind(null,d,v,i,a),void 0,null),i},useId:function(){var o=Fa(),a=co.identifierPrefix;if(Rt){var i=ir,d=ea;i=(d&~(1<<32-_e(d)-1)).toString(32)+i,a=":"+a+"R"+i,i=_i++,0<i&&(a+="H"+i.toString(32)),a+=":"}else i=eu++,a=":"+a+"r"+i.toString(32)+":";return o.memoizedState=a},unstable_isNewReconciler:!1},du={readContext:Fo,useCallback:W,useContext:Fo,useEffect:Pl,useImperativeHandle:S,useInsertionEffect:jc,useLayoutEffect:cu,useMemo:je,useReducer:vc,useRef:iu,useState:function(){return vc(Ri)},useDebugValue:_,useDeferredValue:function(o){var a=io();return ke(a,gn.memoizedState,o)},useTransition:function(){var o=vc(Ri)[0],a=io().memoizedState;return[o,a]},useMutableSource:tu,useSyncExternalStore:nu,useId:ut,unstable_isNewReconciler:!1},Xu={readContext:Fo,useCallback:W,useContext:Fo,useEffect:Pl,useImperativeHandle:S,useInsertionEffect:jc,useLayoutEffect:cu,useMemo:je,useReducer:yc,useRef:iu,useState:function(){return yc(Ri)},useDebugValue:_,useDeferredValue:function(o){var a=io();return gn===null?a.memoizedState=o:ke(a,gn.memoizedState,o)},useTransition:function(){var o=yc(Ri)[0],a=io().memoizedState;return[o,a]},useMutableSource:tu,useSyncExternalStore:nu,useId:ut,unstable_isNewReconciler:!1};function ba(o,a){if(o&&o.defaultProps){a=K({},a),o=o.defaultProps;for(var i in o)a[i]===void 0&&(a[i]=o[i]);return a}return a}function bc(o,a,i,d){a=o.memoizedState,i=i(d,a),i=i==null?a:K({},a,i),o.memoizedState=i,o.lanes===0&&(o.updateQueue.baseState=i)}var ys={isMounted:function(o){return(o=o._reactInternals)?ft(o)===o:!1},enqueueSetState:function(o,a,i){o=o._reactInternals;var d=Vo(),g=Js(o),v=lr(d,g);v.payload=a,i!=null&&(v.callback=i),a=Vr(o,v,g),a!==null&&(pr(a,o,g,d),Sl(a,o,g))},enqueueReplaceState:function(o,a,i){o=o._reactInternals;var d=Vo(),g=Js(o),v=lr(d,g);v.tag=1,v.payload=a,i!=null&&(v.callback=i),a=Vr(o,v,g),a!==null&&(pr(a,o,g,d),Sl(a,o,g))},enqueueForceUpdate:function(o,a){o=o._reactInternals;var i=Vo(),d=Js(o),g=lr(i,d);g.tag=2,a!=null&&(g.callback=a),a=Vr(o,g,d),a!==null&&(pr(a,o,d,i),Sl(a,o,d))}};function Xp(o,a,i,d,g,v,A){return o=o.stateNode,typeof o.shouldComponentUpdate=="function"?o.shouldComponentUpdate(d,v,A):a.prototype&&a.prototype.isPureReactComponent?!To(i,d)||!To(g,v):!0}function Hd(o,a,i){var d=!1,g=ja,v=a.contextType;return typeof v=="object"&&v!==null?v=Fo(v):(g=In(a)?fn:Dn.current,d=a.contextTypes,v=(d=d!=null)?Kt(o,g):ja),a=new a(i,v),o.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,a.updater=ys,o.stateNode=a,a._reactInternals=o,d&&(o=o.stateNode,o.__reactInternalMemoizedUnmaskedChildContext=g,o.__reactInternalMemoizedMaskedChildContext=v),a}function Yp(o,a,i,d){o=a.state,typeof a.componentWillReceiveProps=="function"&&a.componentWillReceiveProps(i,d),typeof a.UNSAFE_componentWillReceiveProps=="function"&&a.UNSAFE_componentWillReceiveProps(i,d),a.state!==o&&ys.enqueueReplaceState(a,a.state,null)}function Wd(o,a,i,d){var g=o.stateNode;g.props=i,g.state=o.memoizedState,g.refs={},Nl(o);var v=a.contextType;typeof v=="object"&&v!==null?g.context=Fo(v):(v=In(a)?fn:Dn.current,g.context=Kt(o,v)),g.state=o.memoizedState,v=a.getDerivedStateFromProps,typeof v=="function"&&(bc(o,a,v,i),g.state=o.memoizedState),typeof a.getDerivedStateFromProps=="function"||typeof g.getSnapshotBeforeUpdate=="function"||typeof g.UNSAFE_componentWillMount!="function"&&typeof g.componentWillMount!="function"||(a=g.state,typeof g.componentWillMount=="function"&&g.componentWillMount(),typeof g.UNSAFE_componentWillMount=="function"&&g.UNSAFE_componentWillMount(),a!==g.state&&ys.enqueueReplaceState(g,g.state,null),Bn(o,i,g,d),g.state=o.memoizedState),typeof g.componentDidMount=="function"&&(o.flags|=4194308)}function wc(o,a){try{var i="",d=a;do i+=be(d),d=d.return;while(d);var g=i}catch(v){g=`
|
|
39
|
+
Error generating stack: `+v.message+`
|
|
40
|
+
`+v.stack}return{value:o,source:a,stack:g,digest:null}}function Gd(o,a,i){return{value:o,source:null,stack:i??null,digest:a??null}}function Yu(o,a){try{console.error(a.value)}catch(i){setTimeout(function(){throw i})}}var Zp=typeof WeakMap=="function"?WeakMap:Map;function em(o,a,i){i=lr(-1,i),i.tag=3,i.payload={element:null};var d=a.value;return i.callback=function(){Nu||(Nu=!0,ld=d),Yu(o,a)},i}function Jd(o,a,i){i=lr(-1,i),i.tag=3;var d=o.type.getDerivedStateFromError;if(typeof d=="function"){var g=a.value;i.payload=function(){return d(g)},i.callback=function(){Yu(o,a)}}var v=o.stateNode;return v!==null&&typeof v.componentDidCatch=="function"&&(i.callback=function(){Yu(o,a),typeof d!="function"&&(Ws===null?Ws=new Set([this]):Ws.add(this));var A=a.stack;this.componentDidCatch(a.value,{componentStack:A!==null?A:""})}),i}function tm(o,a,i){var d=o.pingCache;if(d===null){d=o.pingCache=new Zp;var g=new Set;d.set(a,g)}else g=d.get(a),g===void 0&&(g=new Set,d.set(a,g));g.has(i)||(g.add(i),o=yn.bind(null,o,a,i),a.then(o,o))}function nm(o){do{var a;if((a=o.tag===13)&&(a=o.memoizedState,a=a!==null?a.dehydrated!==null:!0),a)return o;o=o.return}while(o!==null);return null}function js(o,a,i,d,g){return(o.mode&1)===0?(o===a?o.flags|=65536:(o.flags|=128,i.flags|=131072,i.flags&=-52805,i.tag===1&&(i.alternate===null?i.tag=17:(a=lr(-1,1),a.tag=2,Vr(i,a,1))),i.lanes|=1),o):(o.flags|=65536,o.lanes=g,o)}var Kd=F.ReactCurrentOwner,na=!1;function No(o,a,i,d){a.child=o===null?Yc(a,null,i,d):fs(a,o.child,i,d)}function om(o,a,i,d,g){i=i.render;var v=a.ref;return Bs(a,g),d=Oi(o,a,i,d,v,g),i=Tl(),o!==null&&!na?(a.updateQueue=o.updateQueue,a.flags&=-2053,o.lanes&=~g,qs(o,a,g)):(Rt&&i&&Ls(a),a.flags|=1,No(o,a,d,g),a.child)}function am(o,a,i,d,g){if(o===null){var v=i.type;return typeof v=="function"&&!Fh(v)&&v.defaultProps===void 0&&i.compare===null&&i.defaultProps===void 0?(a.tag=15,a.type=v,rm(o,a,v,d,g)):(o=Nm(i.type,null,d,a,a.mode,g),o.ref=a.ref,o.return=a,a.child=o)}if(v=o.child,(o.lanes&g)===0){var A=v.memoizedProps;if(i=i.compare,i=i!==null?i:To,i(A,d)&&o.ref===a.ref)return qs(o,a,g)}return a.flags|=1,o=Ac(v,d),o.ref=a.ref,o.return=a,a.child=o}function rm(o,a,i,d,g){if(o!==null){var v=o.memoizedProps;if(To(v,d)&&o.ref===a.ref)if(na=!1,a.pendingProps=d=v,(o.lanes&g)!==0)(o.flags&131072)!==0&&(na=!0);else return a.lanes=o.lanes,qs(o,a,g)}return pu(o,a,i,d,g)}function sm(o,a,i){var d=a.pendingProps,g=d.children,v=o!==null?o.memoizedState:null;if(d.mode==="hidden")if((a.mode&1)===0)a.memoizedState={baseLanes:0,cachePool:null,transitions:null},It(Hs,za),za|=i;else{if((i&1073741824)===0)return o=v!==null?v.baseLanes|i:i,a.lanes=a.childLanes=1073741824,a.memoizedState={baseLanes:o,cachePool:null,transitions:null},a.updateQueue=null,It(Hs,za),za|=o,null;a.memoizedState={baseLanes:0,cachePool:null,transitions:null},d=v!==null?v.baseLanes:i,It(Hs,za),za|=d}else v!==null?(d=v.baseLanes|i,a.memoizedState=null):d=i,It(Hs,za),za|=d;return No(o,a,g,i),a.child}function Zu(o,a){var i=a.ref;(o===null&&i!==null||o!==null&&o.ref!==i)&&(a.flags|=512,a.flags|=2097152)}function pu(o,a,i,d,g){var v=In(i)?fn:Dn.current;return v=Kt(a,v),Bs(a,g),i=Oi(o,a,i,d,v,g),d=Tl(),o!==null&&!na?(a.updateQueue=o.updateQueue,a.flags&=-2053,o.lanes&=~g,qs(o,a,g)):(Rt&&d&&Ls(a),a.flags|=1,No(o,a,i,g),a.child)}function im(o,a,i,d,g){if(In(i)){var v=!0;ds(a)}else v=!1;if(Bs(a,g),a.stateNode===null)od(o,a),Hd(a,i,d),Wd(a,i,d,g),d=!0;else if(o===null){var A=a.stateNode,U=a.memoizedProps;A.props=U;var J=A.context,de=i.contextType;typeof de=="object"&&de!==null?de=Fo(de):(de=In(i)?fn:Dn.current,de=Kt(a,de));var Se=i.getDerivedStateFromProps,Ae=typeof Se=="function"||typeof A.getSnapshotBeforeUpdate=="function";Ae||typeof A.UNSAFE_componentWillReceiveProps!="function"&&typeof A.componentWillReceiveProps!="function"||(U!==d||J!==de)&&Yp(a,A,d,de),Ra=!1;var Ne=a.memoizedState;A.state=Ne,Bn(a,d,A,g),J=a.memoizedState,U!==d||Ne!==J||$n.current||Ra?(typeof Se=="function"&&(bc(a,i,Se,d),J=a.memoizedState),(U=Ra||Xp(a,i,U,d,Ne,J,de))?(Ae||typeof A.UNSAFE_componentWillMount!="function"&&typeof A.componentWillMount!="function"||(typeof A.componentWillMount=="function"&&A.componentWillMount(),typeof A.UNSAFE_componentWillMount=="function"&&A.UNSAFE_componentWillMount()),typeof A.componentDidMount=="function"&&(a.flags|=4194308)):(typeof A.componentDidMount=="function"&&(a.flags|=4194308),a.memoizedProps=d,a.memoizedState=J),A.props=d,A.state=J,A.context=de,d=U):(typeof A.componentDidMount=="function"&&(a.flags|=4194308),d=!1)}else{A=a.stateNode,Cl(o,a),U=a.memoizedProps,de=a.type===a.elementType?U:ba(a.type,U),A.props=de,Ae=a.pendingProps,Ne=A.context,J=i.contextType,typeof J=="object"&&J!==null?J=Fo(J):(J=In(i)?fn:Dn.current,J=Kt(a,J));var Le=i.getDerivedStateFromProps;(Se=typeof Le=="function"||typeof A.getSnapshotBeforeUpdate=="function")||typeof A.UNSAFE_componentWillReceiveProps!="function"&&typeof A.componentWillReceiveProps!="function"||(U!==Ae||Ne!==J)&&Yp(a,A,d,J),Ra=!1,Ne=a.memoizedState,A.state=Ne,Bn(a,d,A,g);var He=a.memoizedState;U!==Ae||Ne!==He||$n.current||Ra?(typeof Le=="function"&&(bc(a,i,Le,d),He=a.memoizedState),(de=Ra||Xp(a,i,de,d,Ne,He,J)||!1)?(Se||typeof A.UNSAFE_componentWillUpdate!="function"&&typeof A.componentWillUpdate!="function"||(typeof A.componentWillUpdate=="function"&&A.componentWillUpdate(d,He,J),typeof A.UNSAFE_componentWillUpdate=="function"&&A.UNSAFE_componentWillUpdate(d,He,J)),typeof A.componentDidUpdate=="function"&&(a.flags|=4),typeof A.getSnapshotBeforeUpdate=="function"&&(a.flags|=1024)):(typeof A.componentDidUpdate!="function"||U===o.memoizedProps&&Ne===o.memoizedState||(a.flags|=4),typeof A.getSnapshotBeforeUpdate!="function"||U===o.memoizedProps&&Ne===o.memoizedState||(a.flags|=1024),a.memoizedProps=d,a.memoizedState=He),A.props=d,A.state=He,A.context=J,d=de):(typeof A.componentDidUpdate!="function"||U===o.memoizedProps&&Ne===o.memoizedState||(a.flags|=4),typeof A.getSnapshotBeforeUpdate!="function"||U===o.memoizedProps&&Ne===o.memoizedState||(a.flags|=1024),d=!1)}return mu(o,a,i,d,v,g)}function mu(o,a,i,d,g,v){Zu(o,a);var A=(a.flags&128)!==0;if(!d&&!A)return g&&gl(a,i,!1),qs(o,a,v);d=a.stateNode,Kd.current=a;var U=A&&typeof i.getDerivedStateFromError!="function"?null:d.render();return a.flags|=1,o!==null&&A?(a.child=fs(a,o.child,null,v),a.child=fs(a,null,U,v)):No(o,a,U,v),a.memoizedState=d.state,g&&gl(a,i,!0),a.child}function lm(o){var a=o.stateNode;a.pendingContext?us(o,a.pendingContext,a.pendingContext!==a.context):a.context&&us(o,a.context,!1),mc(o,a.containerInfo)}function cm(o,a,i,d,g){return ms(),jl(g),a.flags|=256,No(o,a,i,d),a.child}var ed={dehydrated:null,treeContext:null,retryLane:0};function hu(o){return{baseLanes:o,cachePool:null,transitions:null}}function um(o,a,i){var d=a.pendingProps,g=Yt.current,v=!1,A=(a.flags&128)!==0,U;if((U=A)||(U=o!==null&&o.memoizedState===null?!1:(g&2)!==0),U?(v=!0,a.flags&=-129):(o===null||o.memoizedState!==null)&&(g|=1),It(Yt,g&1),o===null)return Dr(a),o=a.memoizedState,o!==null&&(o=o.dehydrated,o!==null)?((a.mode&1)===0?a.lanes=1:o.data==="$!"?a.lanes=8:a.lanes=1073741824,null):(A=d.children,o=d.fallback,v?(d=a.mode,v=a.child,A={mode:"hidden",children:A},(d&1)===0&&v!==null?(v.childLanes=0,v.pendingProps=A):v=Cm(A,d,0,null),o=Mu(o,d,i,null),v.return=a,o.return=a,v.sibling=o,a.child=v,a.child.memoizedState=hu(i),a.memoizedState=ed,o):Qd(a,A));if(g=o.memoizedState,g!==null&&(U=g.dehydrated,U!==null))return dm(o,a,A,d,U,g,i);if(v){v=d.fallback,A=a.mode,g=o.child,U=g.sibling;var J={mode:"hidden",children:d.children};return(A&1)===0&&a.child!==g?(d=a.child,d.childLanes=0,d.pendingProps=J,a.deletions=null):(d=Ac(g,J),d.subtreeFlags=g.subtreeFlags&14680064),U!==null?v=Ac(U,v):(v=Mu(v,A,i,null),v.flags|=2),v.return=a,d.return=a,d.sibling=v,a.child=d,d=v,v=a.child,A=o.child.memoizedState,A=A===null?hu(i):{baseLanes:A.baseLanes|i,cachePool:null,transitions:A.transitions},v.memoizedState=A,v.childLanes=o.childLanes&~i,a.memoizedState=ed,d}return v=o.child,o=v.sibling,d=Ac(v,{mode:"visible",children:d.children}),(a.mode&1)===0&&(d.lanes=i),d.return=a,d.sibling=null,o!==null&&(i=a.deletions,i===null?(a.deletions=[o],a.flags|=16):i.push(o)),a.child=d,a.memoizedState=null,d}function Qd(o,a){return a=Cm({mode:"visible",children:a},o.mode,0,null),a.return=o,o.child=a}function td(o,a,i,d){return d!==null&&jl(d),fs(a,o.child,null,i),o=Qd(a,a.pendingProps.children),o.flags|=2,a.memoizedState=null,o}function dm(o,a,i,d,g,v,A){if(i)return a.flags&256?(a.flags&=-257,d=Gd(Error(r(422))),td(o,a,A,d)):a.memoizedState!==null?(a.child=o.child,a.flags|=128,null):(v=d.fallback,g=a.mode,d=Cm({mode:"visible",children:d.children},g,0,null),v=Mu(v,g,A,null),v.flags|=2,d.return=a,v.return=a,d.sibling=v,a.child=d,(a.mode&1)!==0&&fs(a,o.child,null,A),a.child.memoizedState=hu(A),a.memoizedState=ed,v);if((a.mode&1)===0)return td(o,a,A,null);if(g.data==="$!"){if(d=g.nextSibling&&g.nextSibling.dataset,d)var U=d.dgst;return d=U,v=Error(r(419)),d=Gd(v,d,void 0),td(o,a,A,d)}if(U=(A&o.childLanes)!==0,na||U){if(d=co,d!==null){switch(A&-A){case 4:g=2;break;case 16:g=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:g=32;break;case 536870912:g=268435456;break;default:g=0}g=(g&(d.suspendedLanes|A))!==0?0:g,g!==0&&g!==v.retryLane&&(v.retryLane=g,zo(o,g),pr(d,o,g,-1))}return hd(),d=Gd(Error(r(421))),td(o,a,A,d)}return g.data==="$?"?(a.flags|=128,a.child=o.child,a=Bt.bind(null,o),g._reactRetry=a,null):(o=v.treeContext,so=zr(g.nextSibling),bn=a,Rt=!0,yo=null,o!==null&&(Ro[Lt++]=ea,Ro[Lt++]=ir,Ro[Lt++]=_t,ea=o.id,ir=o.overflow,_t=a),a=Qd(a,d.children),a.flags|=4096,a)}function fu(o,a,i){o.lanes|=a;var d=o.alternate;d!==null&&(d.lanes|=a),pc(o.return,a,i)}function nd(o,a,i,d,g){var v=o.memoizedState;v===null?o.memoizedState={isBackwards:a,rendering:null,renderingStartTime:0,last:d,tail:i,tailMode:g}:(v.isBackwards=a,v.rendering=null,v.renderingStartTime=0,v.last=d,v.tail=i,v.tailMode=g)}function pm(o,a,i){var d=a.pendingProps,g=d.revealOrder,v=d.tail;if(No(o,a,d.children,i),d=Yt.current,(d&2)!==0)d=d&1|2,a.flags|=128;else{if(o!==null&&(o.flags&128)!==0)e:for(o=a.child;o!==null;){if(o.tag===13)o.memoizedState!==null&&fu(o,i,a);else if(o.tag===19)fu(o,i,a);else if(o.child!==null){o.child.return=o,o=o.child;continue}if(o===a)break e;for(;o.sibling===null;){if(o.return===null||o.return===a)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}d&=1}if(It(Yt,d),(a.mode&1)===0)a.memoizedState=null;else switch(g){case"forwards":for(i=a.child,g=null;i!==null;)o=i.alternate,o!==null&&Al(o)===null&&(g=i),i=i.sibling;i=g,i===null?(g=a.child,a.child=null):(g=i.sibling,i.sibling=null),nd(a,!1,g,i,v);break;case"backwards":for(i=null,g=a.child,a.child=null;g!==null;){if(o=g.alternate,o!==null&&Al(o)===null){a.child=g;break}o=g.sibling,g.sibling=i,i=g,g=o}nd(a,!0,i,null,v);break;case"together":nd(a,!1,null,null,void 0);break;default:a.memoizedState=null}return a.child}function od(o,a){(a.mode&1)===0&&o!==null&&(o.alternate=null,a.alternate=null,a.flags|=2)}function qs(o,a,i){if(o!==null&&(a.dependencies=o.dependencies),Bi|=a.lanes,(i&a.childLanes)===0)return null;if(o!==null&&a.child!==o.child)throw Error(r(153));if(a.child!==null){for(o=a.child,i=Ac(o,o.pendingProps),a.child=i,i.return=a;o.sibling!==null;)o=o.sibling,i=i.sibling=Ac(o,o.pendingProps),i.return=a;i.sibling=null}return a.child}function Oh(o,a,i){switch(a.tag){case 3:lm(a),ms();break;case 5:hc(a);break;case 1:In(a.type)&&ds(a);break;case 4:mc(a,a.stateNode.containerInfo);break;case 10:var d=a.type._context,g=a.memoizedProps.value;It(Oa,d._currentValue),d._currentValue=g;break;case 13:if(d=a.memoizedState,d!==null)return d.dehydrated!==null?(It(Yt,Yt.current&1),a.flags|=128,null):(i&a.child.childLanes)!==0?um(o,a,i):(It(Yt,Yt.current&1),o=qs(o,a,i),o!==null?o.sibling:null);It(Yt,Yt.current&1);break;case 19:if(d=(i&a.childLanes)!==0,(o.flags&128)!==0){if(d)return pm(o,a,i);a.flags|=128}if(g=a.memoizedState,g!==null&&(g.rendering=null,g.tail=null,g.lastEffect=null),It(Yt,Yt.current),d)break;return null;case 22:case 23:return a.lanes=0,sm(o,a,i)}return qs(o,a,i)}var mm,Nc,gu,hm;mm=function(o,a){for(var i=a.child;i!==null;){if(i.tag===5||i.tag===6)o.appendChild(i.stateNode);else if(i.tag!==4&&i.child!==null){i.child.return=i,i=i.child;continue}if(i===a)break;for(;i.sibling===null;){if(i.return===null||i.return===a)return;i=i.return}i.sibling.return=i.return,i=i.sibling}},Nc=function(){},gu=function(o,a,i,d){var g=o.memoizedProps;if(g!==d){o=a.stateNode,Ur(Lo.current);var v=null;switch(i){case"input":g=ht(o,g),d=ht(o,d),v=[];break;case"select":g=K({},g,{value:void 0}),d=K({},d,{value:void 0}),v=[];break;case"textarea":g=we(o,g),d=we(o,d),v=[];break;default:typeof g.onClick!="function"&&typeof d.onClick=="function"&&(o.onclick=Jt)}mn(i,d);var A;i=null;for(de in g)if(!d.hasOwnProperty(de)&&g.hasOwnProperty(de)&&g[de]!=null)if(de==="style"){var U=g[de];for(A in U)U.hasOwnProperty(A)&&(i||(i={}),i[A]="")}else de!=="dangerouslySetInnerHTML"&&de!=="children"&&de!=="suppressContentEditableWarning"&&de!=="suppressHydrationWarning"&&de!=="autoFocus"&&(l.hasOwnProperty(de)?v||(v=[]):(v=v||[]).push(de,null));for(de in d){var J=d[de];if(U=g!=null?g[de]:void 0,d.hasOwnProperty(de)&&J!==U&&(J!=null||U!=null))if(de==="style")if(U){for(A in U)!U.hasOwnProperty(A)||J&&J.hasOwnProperty(A)||(i||(i={}),i[A]="");for(A in J)J.hasOwnProperty(A)&&U[A]!==J[A]&&(i||(i={}),i[A]=J[A])}else i||(v||(v=[]),v.push(de,i)),i=J;else de==="dangerouslySetInnerHTML"?(J=J?J.__html:void 0,U=U?U.__html:void 0,J!=null&&U!==J&&(v=v||[]).push(de,J)):de==="children"?typeof J!="string"&&typeof J!="number"||(v=v||[]).push(de,""+J):de!=="suppressContentEditableWarning"&&de!=="suppressHydrationWarning"&&(l.hasOwnProperty(de)?(J!=null&&de==="onScroll"&&Tt("scroll",o),v||U===J||(v=[])):(v=v||[]).push(de,J))}i&&(v=v||[]).push("style",i);var de=v;(a.updateQueue=de)&&(a.flags|=4)}},hm=function(o,a,i,d){i!==d&&(a.flags|=4)};function xu(o,a){if(!Rt)switch(o.tailMode){case"hidden":a=o.tail;for(var i=null;a!==null;)a.alternate!==null&&(i=a),a=a.sibling;i===null?o.tail=null:i.sibling=null;break;case"collapsed":i=o.tail;for(var d=null;i!==null;)i.alternate!==null&&(d=i),i=i.sibling;d===null?a||o.tail===null?o.tail=null:o.tail.sibling=null:d.sibling=null}}function $o(o){var a=o.alternate!==null&&o.alternate.child===o.child,i=0,d=0;if(a)for(var g=o.child;g!==null;)i|=g.lanes|g.childLanes,d|=g.subtreeFlags&14680064,d|=g.flags&14680064,g.return=o,g=g.sibling;else for(g=o.child;g!==null;)i|=g.lanes|g.childLanes,d|=g.subtreeFlags,d|=g.flags,g.return=o,g=g.sibling;return o.subtreeFlags|=d,o.childLanes=i,a}function fm(o,a,i){var d=a.pendingProps;switch(vl(a),a.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return $o(a),null;case 1:return In(a.type)&&Sn(),$o(a),null;case 3:return d=a.stateNode,xs(),Ee($n),Ee(Dn),gc(),d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null),(o===null||o.child===null)&&(Ti(a)?a.flags|=4:o===null||o.memoizedState.isDehydrated&&(a.flags&256)===0||(a.flags|=1024,yo!==null&&(dd(yo),yo=null))),Nc(o,a),$o(a),null;case 5:kl(a);var g=Ur(Vs.current);if(i=a.type,o!==null&&a.stateNode!=null)gu(o,a,i,d,g),o.ref!==a.ref&&(a.flags|=512,a.flags|=2097152);else{if(!d){if(a.stateNode===null)throw Error(r(166));return $o(a),null}if(o=Ur(Lo.current),Ti(a)){d=a.stateNode,i=a.type;var v=a.memoizedProps;switch(d[rn]=a,d[Fs]=v,o=(a.mode&1)!==0,i){case"dialog":Tt("cancel",d),Tt("close",d);break;case"iframe":case"object":case"embed":Tt("load",d);break;case"video":case"audio":for(g=0;g<Ea.length;g++)Tt(Ea[g],d);break;case"source":Tt("error",d);break;case"img":case"image":case"link":Tt("error",d),Tt("load",d);break;case"details":Tt("toggle",d);break;case"input":mt(d,v),Tt("invalid",d);break;case"select":d._wrapperState={wasMultiple:!!v.multiple},Tt("invalid",d);break;case"textarea":Me(d,v),Tt("invalid",d)}mn(i,v),g=null;for(var A in v)if(v.hasOwnProperty(A)){var U=v[A];A==="children"?typeof U=="string"?d.textContent!==U&&(v.suppressHydrationWarning!==!0&&Rs(d.textContent,U,o),g=["children",U]):typeof U=="number"&&d.textContent!==""+U&&(v.suppressHydrationWarning!==!0&&Rs(d.textContent,U,o),g=["children",""+U]):l.hasOwnProperty(A)&&U!=null&&A==="onScroll"&&Tt("scroll",d)}switch(i){case"input":Be(d),Pe(d,v,!0);break;case"textarea":Be(d),it(d);break;case"select":case"option":break;default:typeof v.onClick=="function"&&(d.onclick=Jt)}d=g,a.updateQueue=d,d!==null&&(a.flags|=4)}else{A=g.nodeType===9?g:g.ownerDocument,o==="http://www.w3.org/1999/xhtml"&&(o=qe(i)),o==="http://www.w3.org/1999/xhtml"?i==="script"?(o=A.createElement("div"),o.innerHTML="<script><\/script>",o=o.removeChild(o.firstChild)):typeof d.is=="string"?o=A.createElement(i,{is:d.is}):(o=A.createElement(i),i==="select"&&(A=o,d.multiple?A.multiple=!0:d.size&&(A.size=d.size))):o=A.createElementNS(o,i),o[rn]=a,o[Fs]=d,mm(o,a,!1,!1),a.stateNode=o;e:{switch(A=Wn(i,d),i){case"dialog":Tt("cancel",o),Tt("close",o),g=d;break;case"iframe":case"object":case"embed":Tt("load",o),g=d;break;case"video":case"audio":for(g=0;g<Ea.length;g++)Tt(Ea[g],o);g=d;break;case"source":Tt("error",o),g=d;break;case"img":case"image":case"link":Tt("error",o),Tt("load",o),g=d;break;case"details":Tt("toggle",o),g=d;break;case"input":mt(o,d),g=ht(o,d),Tt("invalid",o);break;case"option":g=d;break;case"select":o._wrapperState={wasMultiple:!!d.multiple},g=K({},d,{value:void 0}),Tt("invalid",o);break;case"textarea":Me(o,d),g=we(o,d),Tt("invalid",o);break;default:g=d}mn(i,g),U=g;for(v in U)if(U.hasOwnProperty(v)){var J=U[v];v==="style"?An(o,J):v==="dangerouslySetInnerHTML"?(J=J?J.__html:void 0,J!=null&&kt(o,J)):v==="children"?typeof J=="string"?(i!=="textarea"||J!=="")&&Fe(o,J):typeof J=="number"&&Fe(o,""+J):v!=="suppressContentEditableWarning"&&v!=="suppressHydrationWarning"&&v!=="autoFocus"&&(l.hasOwnProperty(v)?J!=null&&v==="onScroll"&&Tt("scroll",o):J!=null&&I(o,v,J,A))}switch(i){case"input":Be(o),Pe(o,d,!1);break;case"textarea":Be(o),it(o);break;case"option":d.value!=null&&o.setAttribute("value",""+z(d.value));break;case"select":o.multiple=!!d.multiple,v=d.value,v!=null?re(o,!!d.multiple,v,!1):d.defaultValue!=null&&re(o,!!d.multiple,d.defaultValue,!0);break;default:typeof g.onClick=="function"&&(o.onclick=Jt)}switch(i){case"button":case"input":case"select":case"textarea":d=!!d.autoFocus;break e;case"img":d=!0;break e;default:d=!1}}d&&(a.flags|=4)}a.ref!==null&&(a.flags|=512,a.flags|=2097152)}return $o(a),null;case 6:if(o&&a.stateNode!=null)hm(o,a,o.memoizedProps,d);else{if(typeof d!="string"&&a.stateNode===null)throw Error(r(166));if(i=Ur(Vs.current),Ur(Lo.current),Ti(a)){if(d=a.stateNode,i=a.memoizedProps,d[rn]=a,(v=d.nodeValue!==i)&&(o=bn,o!==null))switch(o.tag){case 3:Rs(d.nodeValue,i,(o.mode&1)!==0);break;case 5:o.memoizedProps.suppressHydrationWarning!==!0&&Rs(d.nodeValue,i,(o.mode&1)!==0)}v&&(a.flags|=4)}else d=(i.nodeType===9?i:i.ownerDocument).createTextNode(d),d[rn]=a,a.stateNode=d}return $o(a),null;case 13:if(Ee(Yt),d=a.memoizedState,o===null||o.memoizedState!==null&&o.memoizedState.dehydrated!==null){if(Rt&&so!==null&&(a.mode&1)!==0&&(a.flags&128)===0)lc(),ms(),a.flags|=98560,v=!1;else if(v=Ti(a),d!==null&&d.dehydrated!==null){if(o===null){if(!v)throw Error(r(318));if(v=a.memoizedState,v=v!==null?v.dehydrated:null,!v)throw Error(r(317));v[rn]=a}else ms(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;$o(a),v=!1}else yo!==null&&(dd(yo),yo=null),v=!0;if(!v)return a.flags&65536?a:null}return(a.flags&128)!==0?(a.lanes=i,a):(d=d!==null,d!==(o!==null&&o.memoizedState!==null)&&d&&(a.child.flags|=8192,(a.mode&1)!==0&&(o===null||(Yt.current&1)!==0?kn===0&&(kn=3):hd())),a.updateQueue!==null&&(a.flags|=4),$o(a),null);case 4:return xs(),Nc(o,a),o===null&&Os(a.stateNode.containerInfo),$o(a),null;case 10:return bl(a.type._context),$o(a),null;case 17:return In(a.type)&&Sn(),$o(a),null;case 19:if(Ee(Yt),v=a.memoizedState,v===null)return $o(a),null;if(d=(a.flags&128)!==0,A=v.rendering,A===null)if(d)xu(v,!1);else{if(kn!==0||o!==null&&(o.flags&128)!==0)for(o=a.child;o!==null;){if(A=Al(o),A!==null){for(a.flags|=128,xu(v,!1),d=A.updateQueue,d!==null&&(a.updateQueue=d,a.flags|=4),a.subtreeFlags=0,d=i,i=a.child;i!==null;)v=i,o=d,v.flags&=14680066,A=v.alternate,A===null?(v.childLanes=0,v.lanes=o,v.child=null,v.subtreeFlags=0,v.memoizedProps=null,v.memoizedState=null,v.updateQueue=null,v.dependencies=null,v.stateNode=null):(v.childLanes=A.childLanes,v.lanes=A.lanes,v.child=A.child,v.subtreeFlags=0,v.deletions=null,v.memoizedProps=A.memoizedProps,v.memoizedState=A.memoizedState,v.updateQueue=A.updateQueue,v.type=A.type,o=A.dependencies,v.dependencies=o===null?null:{lanes:o.lanes,firstContext:o.firstContext}),i=i.sibling;return It(Yt,Yt.current&1|2),a.child}o=o.sibling}v.tail!==null&&We()>_l&&(a.flags|=128,d=!0,xu(v,!1),a.lanes=4194304)}else{if(!d)if(o=Al(A),o!==null){if(a.flags|=128,d=!0,i=o.updateQueue,i!==null&&(a.updateQueue=i,a.flags|=4),xu(v,!0),v.tail===null&&v.tailMode==="hidden"&&!A.alternate&&!Rt)return $o(a),null}else 2*We()-v.renderingStartTime>_l&&i!==1073741824&&(a.flags|=128,d=!0,xu(v,!1),a.lanes=4194304);v.isBackwards?(A.sibling=a.child,a.child=A):(i=v.last,i!==null?i.sibling=A:a.child=A,v.last=A)}return v.tail!==null?(a=v.tail,v.rendering=a,v.tail=a.sibling,v.renderingStartTime=We(),a.sibling=null,i=Yt.current,It(Yt,d?i&1|2:i&1),a):($o(a),null);case 22:case 23:return md(),d=a.memoizedState!==null,o!==null&&o.memoizedState!==null!==d&&(a.flags|=8192),d&&(a.mode&1)!==0?(za&1073741824)!==0&&($o(a),a.subtreeFlags&6&&(a.flags|=8192)):$o(a),null;case 24:return null;case 25:return null}throw Error(r(156,a.tag))}function Rh(o,a){switch(vl(a),a.tag){case 1:return In(a.type)&&Sn(),o=a.flags,o&65536?(a.flags=o&-65537|128,a):null;case 3:return xs(),Ee($n),Ee(Dn),gc(),o=a.flags,(o&65536)!==0&&(o&128)===0?(a.flags=o&-65537|128,a):null;case 5:return kl(a),null;case 13:if(Ee(Yt),o=a.memoizedState,o!==null&&o.dehydrated!==null){if(a.alternate===null)throw Error(r(340));ms()}return o=a.flags,o&65536?(a.flags=o&-65537|128,a):null;case 19:return Ee(Yt),null;case 4:return xs(),null;case 10:return bl(a.type._context),null;case 22:case 23:return md(),null;case 24:return null;default:return null}}var vu=!1,Bo=!1,gm=typeof WeakSet=="function"?WeakSet:Set,De=null;function Cc(o,a){var i=o.ref;if(i!==null)if(typeof i=="function")try{i(null)}catch(d){Qe(o,a,d)}else i.current=null}function Xd(o,a,i){try{i()}catch(d){Qe(o,a,d)}}var Yd=!1;function Zd(o,a){if(Rr=al,o=dl(),Ir(o)){if("selectionStart"in o)var i={start:o.selectionStart,end:o.selectionEnd};else e:{i=(i=o.ownerDocument)&&i.defaultView||window;var d=i.getSelection&&i.getSelection();if(d&&d.rangeCount!==0){i=d.anchorNode;var g=d.anchorOffset,v=d.focusNode;d=d.focusOffset;try{i.nodeType,v.nodeType}catch{i=null;break e}var A=0,U=-1,J=-1,de=0,Se=0,Ae=o,Ne=null;t:for(;;){for(var Le;Ae!==i||g!==0&&Ae.nodeType!==3||(U=A+g),Ae!==v||d!==0&&Ae.nodeType!==3||(J=A+d),Ae.nodeType===3&&(A+=Ae.nodeValue.length),(Le=Ae.firstChild)!==null;)Ne=Ae,Ae=Le;for(;;){if(Ae===o)break t;if(Ne===i&&++de===g&&(U=A),Ne===v&&++Se===d&&(J=A),(Le=Ae.nextSibling)!==null)break;Ae=Ne,Ne=Ae.parentNode}Ae=Le}i=U===-1||J===-1?null:{start:U,end:J}}else i=null}i=i||{start:0,end:0}}else i=null;for(hl={focusedElem:o,selectionRange:i},al=!1,De=a;De!==null;)if(a=De,o=a.child,(a.subtreeFlags&1028)!==0&&o!==null)o.return=a,De=o;else for(;De!==null;){a=De;try{var He=a.alternate;if((a.flags&1024)!==0)switch(a.tag){case 0:case 11:case 15:break;case 1:if(He!==null){var Je=He.memoizedProps,Hn=He.memoizedState,ie=a.stateNode,X=ie.getSnapshotBeforeUpdate(a.elementType===a.type?Je:ba(a.type,Je),Hn);ie.__reactInternalSnapshotBeforeUpdate=X}break;case 3:var ce=a.stateNode.containerInfo;ce.nodeType===1?ce.textContent="":ce.nodeType===9&&ce.documentElement&&ce.removeChild(ce.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(r(163))}}catch(Ie){Qe(a,a.return,Ie)}if(o=a.sibling,o!==null){o.return=a.return,De=o;break}De=a.return}return He=Yd,Yd=!1,He}function yu(o,a,i){var d=a.updateQueue;if(d=d!==null?d.lastEffect:null,d!==null){var g=d=d.next;do{if((g.tag&o)===o){var v=g.destroy;g.destroy=void 0,v!==void 0&&Xd(a,i,v)}g=g.next}while(g!==d)}}function ju(o,a){if(a=a.updateQueue,a=a!==null?a.lastEffect:null,a!==null){var i=a=a.next;do{if((i.tag&o)===o){var d=i.create;i.destroy=d()}i=i.next}while(i!==a)}}function ad(o){var a=o.ref;if(a!==null){var i=o.stateNode;switch(o.tag){case 5:o=i;break;default:o=i}typeof a=="function"?a(o):a.current=o}}function xm(o){var a=o.alternate;a!==null&&(o.alternate=null,xm(a)),o.child=null,o.deletions=null,o.sibling=null,o.tag===5&&(a=o.stateNode,a!==null&&(delete a[rn],delete a[Fs],delete a[oc],delete a[Ma],delete a[ac])),o.stateNode=null,o.return=null,o.dependencies=null,o.memoizedProps=null,o.memoizedState=null,o.pendingProps=null,o.stateNode=null,o.updateQueue=null}function vm(o){return o.tag===5||o.tag===3||o.tag===4}function ep(o){e:for(;;){for(;o.sibling===null;){if(o.return===null||vm(o.return))return null;o=o.return}for(o.sibling.return=o.return,o=o.sibling;o.tag!==5&&o.tag!==6&&o.tag!==18;){if(o.flags&2||o.child===null||o.tag===4)continue e;o.child.return=o,o=o.child}if(!(o.flags&2))return o.stateNode}}function tp(o,a,i){var d=o.tag;if(d===5||d===6)o=o.stateNode,a?i.nodeType===8?i.parentNode.insertBefore(o,a):i.insertBefore(o,a):(i.nodeType===8?(a=i.parentNode,a.insertBefore(o,i)):(a=i,a.appendChild(o)),i=i._reactRootContainer,i!=null||a.onclick!==null||(a.onclick=Jt));else if(d!==4&&(o=o.child,o!==null))for(tp(o,a,i),o=o.sibling;o!==null;)tp(o,a,i),o=o.sibling}function np(o,a,i){var d=o.tag;if(d===5||d===6)o=o.stateNode,a?i.insertBefore(o,a):i.appendChild(o);else if(d!==4&&(o=o.child,o!==null))for(np(o,a,i),o=o.sibling;o!==null;)np(o,a,i),o=o.sibling}var lo=null,Hr=!1;function zi(o,a,i){for(i=i.child;i!==null;)rd(o,a,i),i=i.sibling}function rd(o,a,i){if(ua&&typeof ua.onCommitFiberUnmount=="function")try{ua.onCommitFiberUnmount(Zr,i)}catch{}switch(i.tag){case 5:Bo||Cc(i,a);case 6:var d=lo,g=Hr;lo=null,zi(o,a,i),lo=d,Hr=g,lo!==null&&(Hr?(o=lo,i=i.stateNode,o.nodeType===8?o.parentNode.removeChild(i):o.removeChild(i)):lo.removeChild(i.stateNode));break;case 18:lo!==null&&(Hr?(o=lo,i=i.stateNode,o.nodeType===8?ya(o.parentNode,i):o.nodeType===1&&ya(o,i),ui(o)):ya(lo,i.stateNode));break;case 4:d=lo,g=Hr,lo=i.stateNode.containerInfo,Hr=!0,zi(o,a,i),lo=d,Hr=g;break;case 0:case 11:case 14:case 15:if(!Bo&&(d=i.updateQueue,d!==null&&(d=d.lastEffect,d!==null))){g=d=d.next;do{var v=g,A=v.destroy;v=v.tag,A!==void 0&&((v&2)!==0||(v&4)!==0)&&Xd(i,a,A),g=g.next}while(g!==d)}zi(o,a,i);break;case 1:if(!Bo&&(Cc(i,a),d=i.stateNode,typeof d.componentWillUnmount=="function"))try{d.props=i.memoizedProps,d.state=i.memoizedState,d.componentWillUnmount()}catch(U){Qe(i,a,U)}zi(o,a,i);break;case 21:zi(o,a,i);break;case 22:i.mode&1?(Bo=(d=Bo)||i.memoizedState!==null,zi(o,a,i),Bo=d):zi(o,a,i);break;default:zi(o,a,i)}}function sd(o){var a=o.updateQueue;if(a!==null){o.updateQueue=null;var i=o.stateNode;i===null&&(i=o.stateNode=new gm),a.forEach(function(d){var g=Co.bind(null,o,d);i.has(d)||(i.add(d),d.then(g,g))})}}function wa(o,a){var i=a.deletions;if(i!==null)for(var d=0;d<i.length;d++){var g=i[d];try{var v=o,A=a,U=A;e:for(;U!==null;){switch(U.tag){case 5:lo=U.stateNode,Hr=!1;break e;case 3:lo=U.stateNode.containerInfo,Hr=!0;break e;case 4:lo=U.stateNode.containerInfo,Hr=!0;break e}U=U.return}if(lo===null)throw Error(r(160));rd(v,A,g),lo=null,Hr=!1;var J=g.alternate;J!==null&&(J.return=null),g.return=null}catch(de){Qe(g,a,de)}}if(a.subtreeFlags&12854)for(a=a.child;a!==null;)Li(a,o),a=a.sibling}function Li(o,a){var i=o.alternate,d=o.flags;switch(o.tag){case 0:case 11:case 14:case 15:if(wa(a,o),ur(o),d&4){try{yu(3,o,o.return),ju(3,o)}catch(Je){Qe(o,o.return,Je)}try{yu(5,o,o.return)}catch(Je){Qe(o,o.return,Je)}}break;case 1:wa(a,o),ur(o),d&512&&i!==null&&Cc(i,i.return);break;case 5:if(wa(a,o),ur(o),d&512&&i!==null&&Cc(i,i.return),o.flags&32){var g=o.stateNode;try{Fe(g,"")}catch(Je){Qe(o,o.return,Je)}}if(d&4&&(g=o.stateNode,g!=null)){var v=o.memoizedProps,A=i!==null?i.memoizedProps:v,U=o.type,J=o.updateQueue;if(o.updateQueue=null,J!==null)try{U==="input"&&v.type==="radio"&&v.name!=null&&Et(g,v),Wn(U,A);var de=Wn(U,v);for(A=0;A<J.length;A+=2){var Se=J[A],Ae=J[A+1];Se==="style"?An(g,Ae):Se==="dangerouslySetInnerHTML"?kt(g,Ae):Se==="children"?Fe(g,Ae):I(g,Se,Ae,de)}switch(U){case"input":Ye(g,v);break;case"textarea":et(g,v);break;case"select":var Ne=g._wrapperState.wasMultiple;g._wrapperState.wasMultiple=!!v.multiple;var Le=v.value;Le!=null?re(g,!!v.multiple,Le,!1):Ne!==!!v.multiple&&(v.defaultValue!=null?re(g,!!v.multiple,v.defaultValue,!0):re(g,!!v.multiple,v.multiple?[]:"",!1))}g[Fs]=v}catch(Je){Qe(o,o.return,Je)}}break;case 6:if(wa(a,o),ur(o),d&4){if(o.stateNode===null)throw Error(r(162));g=o.stateNode,v=o.memoizedProps;try{g.nodeValue=v}catch(Je){Qe(o,o.return,Je)}}break;case 3:if(wa(a,o),ur(o),d&4&&i!==null&&i.memoizedState.isDehydrated)try{ui(a.containerInfo)}catch(Je){Qe(o,o.return,Je)}break;case 4:wa(a,o),ur(o);break;case 13:wa(a,o),ur(o),g=o.child,g.flags&8192&&(v=g.memoizedState!==null,g.stateNode.isHidden=v,!v||g.alternate!==null&&g.alternate.memoizedState!==null||(id=We())),d&4&&sd(o);break;case 22:if(Se=i!==null&&i.memoizedState!==null,o.mode&1?(Bo=(de=Bo)||Se,wa(a,o),Bo=de):wa(a,o),ur(o),d&8192){if(de=o.memoizedState!==null,(o.stateNode.isHidden=de)&&!Se&&(o.mode&1)!==0)for(De=o,Se=o.child;Se!==null;){for(Ae=De=Se;De!==null;){switch(Ne=De,Le=Ne.child,Ne.tag){case 0:case 11:case 14:case 15:yu(4,Ne,Ne.return);break;case 1:Cc(Ne,Ne.return);var He=Ne.stateNode;if(typeof He.componentWillUnmount=="function"){d=Ne,i=Ne.return;try{a=d,He.props=a.memoizedProps,He.state=a.memoizedState,He.componentWillUnmount()}catch(Je){Qe(d,i,Je)}}break;case 5:Cc(Ne,Ne.return);break;case 22:if(Ne.memoizedState!==null){jm(Ae);continue}}Le!==null?(Le.return=Ne,De=Le):jm(Ae)}Se=Se.sibling}e:for(Se=null,Ae=o;;){if(Ae.tag===5){if(Se===null){Se=Ae;try{g=Ae.stateNode,de?(v=g.style,typeof v.setProperty=="function"?v.setProperty("display","none","important"):v.display="none"):(U=Ae.stateNode,J=Ae.memoizedProps.style,A=J!=null&&J.hasOwnProperty("display")?J.display:null,U.style.display=pn("display",A))}catch(Je){Qe(o,o.return,Je)}}}else if(Ae.tag===6){if(Se===null)try{Ae.stateNode.nodeValue=de?"":Ae.memoizedProps}catch(Je){Qe(o,o.return,Je)}}else if((Ae.tag!==22&&Ae.tag!==23||Ae.memoizedState===null||Ae===o)&&Ae.child!==null){Ae.child.return=Ae,Ae=Ae.child;continue}if(Ae===o)break e;for(;Ae.sibling===null;){if(Ae.return===null||Ae.return===o)break e;Se===Ae&&(Se=null),Ae=Ae.return}Se===Ae&&(Se=null),Ae.sibling.return=Ae.return,Ae=Ae.sibling}}break;case 19:wa(a,o),ur(o),d&4&&sd(o);break;case 21:break;default:wa(a,o),ur(o)}}function ur(o){var a=o.flags;if(a&2){try{e:{for(var i=o.return;i!==null;){if(vm(i)){var d=i;break e}i=i.return}throw Error(r(160))}switch(d.tag){case 5:var g=d.stateNode;d.flags&32&&(Fe(g,""),d.flags&=-33);var v=ep(o);np(o,v,g);break;case 3:case 4:var A=d.stateNode.containerInfo,U=ep(o);tp(o,U,A);break;default:throw Error(r(161))}}catch(J){Qe(o,o.return,J)}o.flags&=-3}a&4096&&(o.flags&=-4097)}function Di(o,a,i){De=o,op(o)}function op(o,a,i){for(var d=(o.mode&1)!==0;De!==null;){var g=De,v=g.child;if(g.tag===22&&d){var A=g.memoizedState!==null||vu;if(!A){var U=g.alternate,J=U!==null&&U.memoizedState!==null||Bo;U=vu;var de=Bo;if(vu=A,(Bo=J)&&!de)for(De=g;De!==null;)A=De,J=A.child,A.tag===22&&A.memoizedState!==null?bm(g):J!==null?(J.return=A,De=J):bm(g);for(;v!==null;)De=v,op(v),v=v.sibling;De=g,vu=U,Bo=de}ym(o)}else(g.subtreeFlags&8772)!==0&&v!==null?(v.return=g,De=v):ym(o)}}function ym(o){for(;De!==null;){var a=De;if((a.flags&8772)!==0){var i=a.alternate;try{if((a.flags&8772)!==0)switch(a.tag){case 0:case 11:case 15:Bo||ju(5,a);break;case 1:var d=a.stateNode;if(a.flags&4&&!Bo)if(i===null)d.componentDidMount();else{var g=a.elementType===a.type?i.memoizedProps:ba(a.type,i.memoizedProps);d.componentDidUpdate(g,i.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var v=a.updateQueue;v!==null&&cr(a,v,d);break;case 3:var A=a.updateQueue;if(A!==null){if(i=null,a.child!==null)switch(a.child.tag){case 5:i=a.child.stateNode;break;case 1:i=a.child.stateNode}cr(a,A,i)}break;case 5:var U=a.stateNode;if(i===null&&a.flags&4){i=U;var J=a.memoizedProps;switch(a.type){case"button":case"input":case"select":case"textarea":J.autoFocus&&i.focus();break;case"img":J.src&&(i.src=J.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(a.memoizedState===null){var de=a.alternate;if(de!==null){var Se=de.memoizedState;if(Se!==null){var Ae=Se.dehydrated;Ae!==null&&ui(Ae)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(r(163))}Bo||a.flags&512&&ad(a)}catch(Ne){Qe(a,a.return,Ne)}}if(a===o){De=null;break}if(i=a.sibling,i!==null){i.return=a.return,De=i;break}De=a.return}}function jm(o){for(;De!==null;){var a=De;if(a===o){De=null;break}var i=a.sibling;if(i!==null){i.return=a.return,De=i;break}De=a.return}}function bm(o){for(;De!==null;){var a=De;try{switch(a.tag){case 0:case 11:case 15:var i=a.return;try{ju(4,a)}catch(J){Qe(a,i,J)}break;case 1:var d=a.stateNode;if(typeof d.componentDidMount=="function"){var g=a.return;try{d.componentDidMount()}catch(J){Qe(a,g,J)}}var v=a.return;try{ad(a)}catch(J){Qe(a,v,J)}break;case 5:var A=a.return;try{ad(a)}catch(J){Qe(a,A,J)}}}catch(J){Qe(a,a.return,J)}if(a===o){De=null;break}var U=a.sibling;if(U!==null){U.return=a.return,De=U;break}De=a.return}}var $i=Math.ceil,Wr=F.ReactCurrentDispatcher,ap=F.ReactCurrentOwner,dr=F.ReactCurrentBatchConfig,At=0,co=null,cn=null,qn=0,za=0,Hs=Pa(0),kn=0,bu=null,Bi=0,wu=0,Vi=0,Sc=null,oa=null,id=0,_l=1/0,bs=null,Nu=!1,ld=null,Ws=null,Cu=!1,Gs=null,Su=0,kc=0,cd=null,ku=-1,Au=0;function Vo(){return(At&6)!==0?We():ku!==-1?ku:ku=We()}function Js(o){return(o.mode&1)===0?1:(At&2)!==0&&qn!==0?qn&-qn:cc.transition!==null?(Au===0&&(Au=Ul()),Au):(o=xt,o!==0||(o=window.event,o=o===void 0?16:Ca(o.type)),o)}function pr(o,a,i,d){if(50<kc)throw kc=0,cd=null,Error(r(185));wr(o,i,d),((At&2)===0||o!==co)&&(o===co&&((At&2)===0&&(wu|=i),kn===4&&Ks(o,qn)),aa(o,d),i===1&&At===0&&(a.mode&1)===0&&(_l=We()+500,xl&&sr()))}function aa(o,a){var i=o.callbackNode;si(o,a);var d=Qa(o,o===co?qn:0);if(d===0)i!==null&&Ga(i),o.callbackNode=null,o.callbackPriority=0;else if(a=d&-d,o.callbackPriority!==a){if(i!=null&&Ga(i),a===1)o.tag===0?Zo(sp.bind(null,o)):sc(sp.bind(null,o)),Ai(function(){(At&6)===0&&sr()}),i=null;else{switch(zt(d)){case 1:i=Qn;break;case 4:i=Eo;break;case 16:i=Yr;break;case 536870912:i=Vl;break;default:i=Yr}i=kg(i,rp.bind(null,o))}o.callbackPriority=a,o.callbackNode=i}}function rp(o,a){if(ku=-1,Au=0,(At&6)!==0)throw Error(r(327));var i=o.callbackNode;if(pe()&&o.callbackNode!==i)return null;var d=Qa(o,o===co?qn:0);if(d===0)return null;if((d&30)!==0||(d&o.expiredLanes)!==0||a)a=Eu(o,d);else{a=d;var g=At;At|=2;var v=lp();(co!==o||qn!==a)&&(bs=null,_l=We()+500,qi(o,a));do try{y();break}catch(U){ip(o,U)}while(!0);dc(),Wr.current=v,At=g,cn!==null?a=0:(co=null,qn=0,a=kn)}if(a!==0){if(a===2&&(g=nl(o),g!==0&&(d=g,a=ud(o,g))),a===1)throw i=bu,qi(o,0),Ks(o,d),aa(o,We()),i;if(a===6)Ks(o,d);else{if(g=o.current.alternate,(d&30)===0&&!wm(g)&&(a=Eu(o,d),a===2&&(v=nl(o),v!==0&&(d=v,a=ud(o,v))),a===1))throw i=bu,qi(o,0),Ks(o,d),aa(o,We()),i;switch(o.finishedWork=g,o.finishedLanes=d,a){case 0:case 1:throw Error(r(345));case 2:te(o,oa,bs);break;case 3:if(Ks(o,d),(d&130023424)===d&&(a=id+500-We(),10<a)){if(Qa(o,0)!==0)break;if(g=o.suspendedLanes,(g&d)!==d){Vo(),o.pingedLanes|=o.suspendedLanes&g;break}o.timeoutHandle=Fr(te.bind(null,o,oa,bs),a);break}te(o,oa,bs);break;case 4:if(Ks(o,d),(d&4194240)===d)break;for(a=o.eventTimes,g=-1;0<d;){var A=31-_e(d);v=1<<A,A=a[A],A>g&&(g=A),d&=~v}if(d=g,d=We()-d,d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3e3>d?3e3:4320>d?4320:1960*$i(d/1960))-d,10<d){o.timeoutHandle=Fr(te.bind(null,o,oa,bs),d);break}te(o,oa,bs);break;case 5:te(o,oa,bs);break;default:throw Error(r(329))}}}return aa(o,We()),o.callbackNode===i?rp.bind(null,o):null}function ud(o,a){var i=Sc;return o.current.memoizedState.isDehydrated&&(qi(o,a).flags|=256),o=Eu(o,a),o!==2&&(a=oa,oa=i,a!==null&&dd(a)),o}function dd(o){oa===null?oa=o:oa.push.apply(oa,o)}function wm(o){for(var a=o;;){if(a.flags&16384){var i=a.updateQueue;if(i!==null&&(i=i.stores,i!==null))for(var d=0;d<i.length;d++){var g=i[d],v=g.getSnapshot;g=g.value;try{if(!hn(v(),g))return!1}catch{return!1}}}if(i=a.child,a.subtreeFlags&16384&&i!==null)i.return=a,a=i;else{if(a===o)break;for(;a.sibling===null;){if(a.return===null||a.return===o)return!0;a=a.return}a.sibling.return=a.return,a=a.sibling}}return!0}function Ks(o,a){for(a&=~Vi,a&=~wu,o.suspendedLanes|=a,o.pingedLanes&=~a,o=o.expirationTimes;0<a;){var i=31-_e(a),d=1<<i;o[i]=-1,a&=~d}}function sp(o){if((At&6)!==0)throw Error(r(327));pe();var a=Qa(o,0);if((a&1)===0)return aa(o,We()),null;var i=Eu(o,a);if(o.tag!==0&&i===2){var d=nl(o);d!==0&&(a=d,i=ud(o,d))}if(i===1)throw i=bu,qi(o,0),Ks(o,a),aa(o,We()),i;if(i===6)throw Error(r(345));return o.finishedWork=o.current.alternate,o.finishedLanes=a,te(o,oa,bs),aa(o,We()),null}function pd(o,a){var i=At;At|=1;try{return o(a)}finally{At=i,At===0&&(_l=We()+500,xl&&sr())}}function Ui(o){Gs!==null&&Gs.tag===0&&(At&6)===0&&pe();var a=At;At|=1;var i=dr.transition,d=xt;try{if(dr.transition=null,xt=1,o)return o()}finally{xt=d,dr.transition=i,At=a,(At&6)===0&&sr()}}function md(){za=Hs.current,Ee(Hs)}function qi(o,a){o.finishedWork=null,o.finishedLanes=0;var i=o.timeoutHandle;if(i!==-1&&(o.timeoutHandle=-1,cs(i)),cn!==null)for(i=cn.return;i!==null;){var d=i;switch(vl(d),d.tag){case 1:d=d.type.childContextTypes,d!=null&&Sn();break;case 3:xs(),Ee($n),Ee(Dn),gc();break;case 5:kl(d);break;case 4:xs();break;case 13:Ee(Yt);break;case 19:Ee(Yt);break;case 10:bl(d.type._context);break;case 22:case 23:md()}i=i.return}if(co=o,cn=o=Ac(o.current,null),qn=za=a,kn=0,bu=null,Vi=wu=Bi=0,oa=Sc=null,Br!==null){for(a=0;a<Br.length;a++)if(i=Br[a],d=i.interleaved,d!==null){i.interleaved=null;var g=d.next,v=i.pending;if(v!==null){var A=v.next;v.next=g,d.next=A}i.pending=d}Br=null}return o}function ip(o,a){do{var i=cn;try{if(dc(),El.current=wo,vs){for(var d=Zt.memoizedState;d!==null;){var g=d.queue;g!==null&&(g.pending=null),d=d.next}vs=!1}if(Do=0,wn=gn=Zt=null,Us=!1,_i=0,ap.current=null,i===null||i.return===null){kn=1,bu=a,cn=null;break}e:{var v=o,A=i.return,U=i,J=a;if(a=qn,U.flags|=32768,J!==null&&typeof J=="object"&&typeof J.then=="function"){var de=J,Se=U,Ae=Se.tag;if((Se.mode&1)===0&&(Ae===0||Ae===11||Ae===15)){var Ne=Se.alternate;Ne?(Se.updateQueue=Ne.updateQueue,Se.memoizedState=Ne.memoizedState,Se.lanes=Ne.lanes):(Se.updateQueue=null,Se.memoizedState=null)}var Le=nm(A);if(Le!==null){Le.flags&=-257,js(Le,A,U,v,a),Le.mode&1&&tm(v,de,a),a=Le,J=de;var He=a.updateQueue;if(He===null){var Je=new Set;Je.add(J),a.updateQueue=Je}else He.add(J);break e}else{if((a&1)===0){tm(v,de,a),hd();break e}J=Error(r(426))}}else if(Rt&&U.mode&1){var Hn=nm(A);if(Hn!==null){(Hn.flags&65536)===0&&(Hn.flags|=256),js(Hn,A,U,v,a),jl(wc(J,U));break e}}v=J=wc(J,U),kn!==4&&(kn=2),Sc===null?Sc=[v]:Sc.push(v),v=A;do{switch(v.tag){case 3:v.flags|=65536,a&=-a,v.lanes|=a;var ie=em(v,J,a);Zc(v,ie);break e;case 1:U=J;var X=v.type,ce=v.stateNode;if((v.flags&128)===0&&(typeof X.getDerivedStateFromError=="function"||ce!==null&&typeof ce.componentDidCatch=="function"&&(Ws===null||!Ws.has(ce)))){v.flags|=65536,a&=-a,v.lanes|=a;var Ie=Jd(v,U,a);Zc(v,Ie);break e}}v=v.return}while(v!==null)}B(i)}catch(Ke){a=Ke,cn===i&&i!==null&&(cn=i=i.return);continue}break}while(!0)}function lp(){var o=Wr.current;return Wr.current=wo,o===null?wo:o}function hd(){(kn===0||kn===3||kn===2)&&(kn=4),co===null||(Bi&268435455)===0&&(wu&268435455)===0||Ks(co,qn)}function Eu(o,a){var i=At;At|=2;var d=lp();(co!==o||qn!==a)&&(bs=null,qi(o,a));do try{u();break}catch(g){ip(o,g)}while(!0);if(dc(),At=i,Wr.current=d,cn!==null)throw Error(r(261));return co=null,qn=0,kn}function u(){for(;cn!==null;)k(cn)}function y(){for(;cn!==null&&!oi();)k(cn)}function k(o){var a=La(o.alternate,o,za);o.memoizedProps=o.pendingProps,a===null?B(o):cn=a,ap.current=null}function B(o){var a=o;do{var i=a.alternate;if(o=a.return,(a.flags&32768)===0){if(i=fm(i,a,za),i!==null){cn=i;return}}else{if(i=Rh(i,a),i!==null){i.flags&=32767,cn=i;return}if(o!==null)o.flags|=32768,o.subtreeFlags=0,o.deletions=null;else{kn=6,cn=null;return}}if(a=a.sibling,a!==null){cn=a;return}cn=a=o}while(a!==null);kn===0&&(kn=5)}function te(o,a,i){var d=xt,g=dr.transition;try{dr.transition=null,xt=1,ue(o,a,i,d)}finally{dr.transition=g,xt=d}return null}function ue(o,a,i,d){do pe();while(Gs!==null);if((At&6)!==0)throw Error(r(327));i=o.finishedWork;var g=o.finishedLanes;if(i===null)return null;if(o.finishedWork=null,o.finishedLanes=0,i===o.current)throw Error(r(177));o.callbackNode=null,o.callbackPriority=0;var v=i.lanes|i.childLanes;if(ql(o,v),o===co&&(cn=co=null,qn=0),(i.subtreeFlags&2064)===0&&(i.flags&2064)===0||Cu||(Cu=!0,kg(Yr,function(){return pe(),null})),v=(i.flags&15990)!==0,(i.subtreeFlags&15990)!==0||v){v=dr.transition,dr.transition=null;var A=xt;xt=1;var U=At;At|=4,ap.current=null,Zd(o,i),Li(i,o),vi(hl),al=!!Rr,hl=Rr=null,o.current=i,Di(i),ca(),At=U,xt=A,dr.transition=v}else o.current=i;if(Cu&&(Cu=!1,Gs=o,Su=g),v=o.pendingLanes,v===0&&(Ws=null),Ja(i.stateNode),aa(o,We()),a!==null)for(d=o.onRecoverableError,i=0;i<a.length;i++)g=a[i],d(g.value,{componentStack:g.stack,digest:g.digest});if(Nu)throw Nu=!1,o=ld,ld=null,o;return(Su&1)!==0&&o.tag!==0&&pe(),v=o.pendingLanes,(v&1)!==0?o===cd?kc++:(kc=0,cd=o):kc=0,sr(),null}function pe(){if(Gs!==null){var o=zt(Su),a=dr.transition,i=xt;try{if(dr.transition=null,xt=16>o?16:o,Gs===null)var d=!1;else{if(o=Gs,Gs=null,Su=0,(At&6)!==0)throw Error(r(331));var g=At;for(At|=4,De=o.current;De!==null;){var v=De,A=v.child;if((De.flags&16)!==0){var U=v.deletions;if(U!==null){for(var J=0;J<U.length;J++){var de=U[J];for(De=de;De!==null;){var Se=De;switch(Se.tag){case 0:case 11:case 15:yu(8,Se,v)}var Ae=Se.child;if(Ae!==null)Ae.return=Se,De=Ae;else for(;De!==null;){Se=De;var Ne=Se.sibling,Le=Se.return;if(xm(Se),Se===de){De=null;break}if(Ne!==null){Ne.return=Le,De=Ne;break}De=Le}}}var He=v.alternate;if(He!==null){var Je=He.child;if(Je!==null){He.child=null;do{var Hn=Je.sibling;Je.sibling=null,Je=Hn}while(Je!==null)}}De=v}}if((v.subtreeFlags&2064)!==0&&A!==null)A.return=v,De=A;else e:for(;De!==null;){if(v=De,(v.flags&2048)!==0)switch(v.tag){case 0:case 11:case 15:yu(9,v,v.return)}var ie=v.sibling;if(ie!==null){ie.return=v.return,De=ie;break e}De=v.return}}var X=o.current;for(De=X;De!==null;){A=De;var ce=A.child;if((A.subtreeFlags&2064)!==0&&ce!==null)ce.return=A,De=ce;else e:for(A=X;De!==null;){if(U=De,(U.flags&2048)!==0)try{switch(U.tag){case 0:case 11:case 15:ju(9,U)}}catch(Ke){Qe(U,U.return,Ke)}if(U===A){De=null;break e}var Ie=U.sibling;if(Ie!==null){Ie.return=U.return,De=Ie;break e}De=U.return}}if(At=g,sr(),ua&&typeof ua.onPostCommitFiberRoot=="function")try{ua.onPostCommitFiberRoot(Zr,o)}catch{}d=!0}return d}finally{xt=i,dr.transition=a}}return!1}function ze(o,a,i){a=wc(i,a),a=em(o,a,1),o=Vr(o,a,1),a=Vo(),o!==null&&(wr(o,1,a),aa(o,a))}function Qe(o,a,i){if(o.tag===3)ze(o,o,i);else for(;a!==null;){if(a.tag===3){ze(a,o,i);break}else if(a.tag===1){var d=a.stateNode;if(typeof a.type.getDerivedStateFromError=="function"||typeof d.componentDidCatch=="function"&&(Ws===null||!Ws.has(d))){o=wc(i,o),o=Jd(a,o,1),a=Vr(a,o,1),o=Vo(),a!==null&&(wr(a,1,o),aa(a,o));break}}a=a.return}}function yn(o,a,i){var d=o.pingCache;d!==null&&d.delete(a),a=Vo(),o.pingedLanes|=o.suspendedLanes&i,co===o&&(qn&i)===i&&(kn===4||kn===3&&(qn&130023424)===qn&&500>We()-id?qi(o,0):Vi|=i),aa(o,a)}function ra(o,a){a===0&&((o.mode&1)===0?a=1:(a=Ka,Ka<<=1,(Ka&130023424)===0&&(Ka=4194304)));var i=Vo();o=zo(o,a),o!==null&&(wr(o,a,i),aa(o,i))}function Bt(o){var a=o.memoizedState,i=0;a!==null&&(i=a.retryLane),ra(o,i)}function Co(o,a){var i=0;switch(o.tag){case 13:var d=o.stateNode,g=o.memoizedState;g!==null&&(i=g.retryLane);break;case 19:d=o.stateNode;break;default:throw Error(r(314))}d!==null&&d.delete(a),ra(o,i)}var La;La=function(o,a,i){if(o!==null)if(o.memoizedProps!==a.pendingProps||$n.current)na=!0;else{if((o.lanes&i)===0&&(a.flags&128)===0)return na=!1,Oh(o,a,i);na=(o.flags&131072)!==0}else na=!1,Rt&&(a.flags&1048576)!==0&&Qt(a,zs,a.index);switch(a.lanes=0,a.tag){case 2:var d=a.type;od(o,a),o=a.pendingProps;var g=Kt(a,Dn.current);Bs(a,i),g=Oi(null,a,d,o,g,i);var v=Tl();return a.flags|=1,typeof g=="object"&&g!==null&&typeof g.render=="function"&&g.$$typeof===void 0?(a.tag=1,a.memoizedState=null,a.updateQueue=null,In(d)?(v=!0,ds(a)):v=!1,a.memoizedState=g.state!==null&&g.state!==void 0?g.state:null,Nl(a),g.updater=ys,a.stateNode=g,g._reactInternals=a,Wd(a,d,o,i),a=mu(null,a,d,!0,v,i)):(a.tag=0,Rt&&v&&Ls(a),No(null,a,g,i),a=a.child),a;case 16:d=a.elementType;e:{switch(od(o,a),o=a.pendingProps,g=d._init,d=g(d._payload),a.type=d,g=a.tag=Gj(d),o=ba(d,o),g){case 0:a=pu(null,a,d,o,i);break e;case 1:a=im(null,a,d,o,i);break e;case 11:a=om(null,a,d,o,i);break e;case 14:a=am(null,a,d,ba(d.type,o),i);break e}throw Error(r(306,d,""))}return a;case 0:return d=a.type,g=a.pendingProps,g=a.elementType===d?g:ba(d,g),pu(o,a,d,g,i);case 1:return d=a.type,g=a.pendingProps,g=a.elementType===d?g:ba(d,g),im(o,a,d,g,i);case 3:e:{if(lm(a),o===null)throw Error(r(387));d=a.pendingProps,v=a.memoizedState,g=v.element,Cl(o,a),Bn(a,d,null,i);var A=a.memoizedState;if(d=A.element,v.isDehydrated)if(v={element:d,isDehydrated:!1,cache:A.cache,pendingSuspenseBoundaries:A.pendingSuspenseBoundaries,transitions:A.transitions},a.updateQueue.baseState=v,a.memoizedState=v,a.flags&256){g=wc(Error(r(423)),a),a=cm(o,a,d,i,g);break e}else if(d!==g){g=wc(Error(r(424)),a),a=cm(o,a,d,i,g);break e}else for(so=zr(a.stateNode.containerInfo.firstChild),bn=a,Rt=!0,yo=null,i=Yc(a,null,d,i),a.child=i;i;)i.flags=i.flags&-3|4096,i=i.sibling;else{if(ms(),d===g){a=qs(o,a,i);break e}No(o,a,d,i)}a=a.child}return a;case 5:return hc(a),o===null&&Dr(a),d=a.type,g=a.pendingProps,v=o!==null?o.memoizedProps:null,A=g.children,Ln(d,g)?A=null:v!==null&&Ln(d,v)&&(a.flags|=32),Zu(o,a),No(o,a,A,i),a.child;case 6:return o===null&&Dr(a),null;case 13:return um(o,a,i);case 4:return mc(a,a.stateNode.containerInfo),d=a.pendingProps,o===null?a.child=fs(a,null,d,i):No(o,a,d,i),a.child;case 11:return d=a.type,g=a.pendingProps,g=a.elementType===d?g:ba(d,g),om(o,a,d,g,i);case 7:return No(o,a,a.pendingProps,i),a.child;case 8:return No(o,a,a.pendingProps.children,i),a.child;case 12:return No(o,a,a.pendingProps.children,i),a.child;case 10:e:{if(d=a.type._context,g=a.pendingProps,v=a.memoizedProps,A=g.value,It(Oa,d._currentValue),d._currentValue=A,v!==null)if(hn(v.value,A)){if(v.children===g.children&&!$n.current){a=qs(o,a,i);break e}}else for(v=a.child,v!==null&&(v.return=a);v!==null;){var U=v.dependencies;if(U!==null){A=v.child;for(var J=U.firstContext;J!==null;){if(J.context===d){if(v.tag===1){J=lr(-1,i&-i),J.tag=2;var de=v.updateQueue;if(de!==null){de=de.shared;var Se=de.pending;Se===null?J.next=J:(J.next=Se.next,Se.next=J),de.pending=J}}v.lanes|=i,J=v.alternate,J!==null&&(J.lanes|=i),pc(v.return,i,a),U.lanes|=i;break}J=J.next}}else if(v.tag===10)A=v.type===a.type?null:v.child;else if(v.tag===18){if(A=v.return,A===null)throw Error(r(341));A.lanes|=i,U=A.alternate,U!==null&&(U.lanes|=i),pc(A,i,a),A=v.sibling}else A=v.child;if(A!==null)A.return=v;else for(A=v;A!==null;){if(A===a){A=null;break}if(v=A.sibling,v!==null){v.return=A.return,A=v;break}A=A.return}v=A}No(o,a,g.children,i),a=a.child}return a;case 9:return g=a.type,d=a.pendingProps.children,Bs(a,i),g=Fo(g),d=d(g),a.flags|=1,No(o,a,d,i),a.child;case 14:return d=a.type,g=ba(d,a.pendingProps),g=ba(d.type,g),am(o,a,d,g,i);case 15:return rm(o,a,a.type,a.pendingProps,i);case 17:return d=a.type,g=a.pendingProps,g=a.elementType===d?g:ba(d,g),od(o,a),a.tag=1,In(d)?(o=!0,ds(a)):o=!1,Bs(a,i),Hd(a,d,g),Wd(a,d,g,i),mu(null,a,d,!0,o,i);case 19:return pm(o,a,i);case 22:return sm(o,a,i)}throw Error(r(156,a.tag))};function kg(o,a){return Es(o,a)}function Wj(o,a,i,d){this.tag=o,this.key=i,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=a,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=d,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ws(o,a,i,d){return new Wj(o,a,i,d)}function Fh(o){return o=o.prototype,!(!o||!o.isReactComponent)}function Gj(o){if(typeof o=="function")return Fh(o)?1:0;if(o!=null){if(o=o.$$typeof,o===ye)return 11;if(o===ee)return 14}return 2}function Ac(o,a){var i=o.alternate;return i===null?(i=ws(o.tag,a,o.key,o.mode),i.elementType=o.elementType,i.type=o.type,i.stateNode=o.stateNode,i.alternate=o,o.alternate=i):(i.pendingProps=a,i.type=o.type,i.flags=0,i.subtreeFlags=0,i.deletions=null),i.flags=o.flags&14680064,i.childLanes=o.childLanes,i.lanes=o.lanes,i.child=o.child,i.memoizedProps=o.memoizedProps,i.memoizedState=o.memoizedState,i.updateQueue=o.updateQueue,a=o.dependencies,i.dependencies=a===null?null:{lanes:a.lanes,firstContext:a.firstContext},i.sibling=o.sibling,i.index=o.index,i.ref=o.ref,i}function Nm(o,a,i,d,g,v){var A=2;if(d=o,typeof o=="function")Fh(o)&&(A=1);else if(typeof o=="string")A=5;else e:switch(o){case ae:return Mu(i.children,g,v,a);case oe:A=8,g|=8;break;case Q:return o=ws(12,i,a,g|2),o.elementType=Q,o.lanes=v,o;case le:return o=ws(13,i,a,g),o.elementType=le,o.lanes=v,o;case M:return o=ws(19,i,a,g),o.elementType=M,o.lanes=v,o;case se:return Cm(i,g,v,a);default:if(typeof o=="object"&&o!==null)switch(o.$$typeof){case fe:A=10;break e;case xe:A=9;break e;case ye:A=11;break e;case ee:A=14;break e;case H:A=16,d=null;break e}throw Error(r(130,o==null?o:typeof o,""))}return a=ws(A,i,a,g),a.elementType=o,a.type=d,a.lanes=v,a}function Mu(o,a,i,d){return o=ws(7,o,d,a),o.lanes=i,o}function Cm(o,a,i,d){return o=ws(22,o,d,a),o.elementType=se,o.lanes=i,o.stateNode={isHidden:!1},o}function zh(o,a,i){return o=ws(6,o,null,a),o.lanes=i,o}function Lh(o,a,i){return a=ws(4,o.children!==null?o.children:[],o.key,a),a.lanes=i,a.stateNode={containerInfo:o.containerInfo,pendingChildren:null,implementation:o.implementation},a}function Jj(o,a,i,d,g){this.tag=a,this.containerInfo=o,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=br(0),this.expirationTimes=br(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=br(0),this.identifierPrefix=d,this.onRecoverableError=g,this.mutableSourceEagerHydrationData=null}function Dh(o,a,i,d,g,v,A,U,J){return o=new Jj(o,a,i,U,J),a===1?(a=1,v===!0&&(a|=8)):a=0,v=ws(3,null,null,a),o.current=v,v.stateNode=o,v.memoizedState={element:d,isDehydrated:i,cache:null,transitions:null,pendingSuspenseBoundaries:null},Nl(v),o}function Kj(o,a,i){var d=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:ne,key:d==null?null:""+d,children:o,containerInfo:a,implementation:i}}function Ag(o){if(!o)return ja;o=o._reactInternals;e:{if(ft(o)!==o||o.tag!==1)throw Error(r(170));var a=o;do{switch(a.tag){case 3:a=a.stateNode.context;break e;case 1:if(In(a.type)){a=a.stateNode.__reactInternalMemoizedMergedChildContext;break e}}a=a.return}while(a!==null);throw Error(r(171))}if(o.tag===1){var i=o.type;if(In(i))return Qc(o,i,a)}return a}function Eg(o,a,i,d,g,v,A,U,J){return o=Dh(i,d,!0,o,g,v,A,U,J),o.context=Ag(null),i=o.current,d=Vo(),g=Js(i),v=lr(d,g),v.callback=a??null,Vr(i,v,g),o.current.lanes=g,wr(o,g,d),aa(o,d),o}function Sm(o,a,i,d){var g=a.current,v=Vo(),A=Js(g);return i=Ag(i),a.context===null?a.context=i:a.pendingContext=i,a=lr(v,A),a.payload={element:o},d=d===void 0?null:d,d!==null&&(a.callback=d),o=Vr(g,a,A),o!==null&&(pr(o,g,A,v),Sl(o,g,A)),A}function km(o){if(o=o.current,!o.child)return null;switch(o.child.tag){case 5:return o.child.stateNode;default:return o.child.stateNode}}function Mg(o,a){if(o=o.memoizedState,o!==null&&o.dehydrated!==null){var i=o.retryLane;o.retryLane=i!==0&&i<a?i:a}}function $h(o,a){Mg(o,a),(o=o.alternate)&&Mg(o,a)}function Qj(){return null}var Tg=typeof reportError=="function"?reportError:function(o){console.error(o)};function Bh(o){this._internalRoot=o}Am.prototype.render=Bh.prototype.render=function(o){var a=this._internalRoot;if(a===null)throw Error(r(409));Sm(o,a,null,null)},Am.prototype.unmount=Bh.prototype.unmount=function(){var o=this._internalRoot;if(o!==null){this._internalRoot=null;var a=o.containerInfo;Ui(function(){Sm(null,o,null,null)}),a[sn]=null}};function Am(o){this._internalRoot=o}Am.prototype.unstable_scheduleHydration=function(o){if(o){var a=$c();o={blockedOn:null,target:o,priority:a};for(var i=0;i<tt.length&&a!==0&&a<tt[i].priority;i++);tt.splice(i,0,o),i===0&&li(o)}};function Vh(o){return!(!o||o.nodeType!==1&&o.nodeType!==9&&o.nodeType!==11)}function Em(o){return!(!o||o.nodeType!==1&&o.nodeType!==9&&o.nodeType!==11&&(o.nodeType!==8||o.nodeValue!==" react-mount-point-unstable "))}function Ig(){}function Xj(o,a,i,d,g){if(g){if(typeof d=="function"){var v=d;d=function(){var de=km(A);v.call(de)}}var A=Eg(a,d,o,0,null,!1,!1,"",Ig);return o._reactRootContainer=A,o[sn]=A.current,Os(o.nodeType===8?o.parentNode:o),Ui(),A}for(;g=o.lastChild;)o.removeChild(g);if(typeof d=="function"){var U=d;d=function(){var de=km(J);U.call(de)}}var J=Dh(o,0,!1,null,null,!1,!1,"",Ig);return o._reactRootContainer=J,o[sn]=J.current,Os(o.nodeType===8?o.parentNode:o),Ui(function(){Sm(a,J,i,d)}),J}function Mm(o,a,i,d,g){var v=i._reactRootContainer;if(v){var A=v;if(typeof g=="function"){var U=g;g=function(){var J=km(A);U.call(J)}}Sm(a,A,o,g)}else A=Xj(i,a,o,g,d);return km(A)}$t=function(o){switch(o.tag){case 3:var a=o.stateNode;if(a.current.memoizedState.isDehydrated){var i=ri(a.pendingLanes);i!==0&&(an(a,i|1),aa(a,We()),(At&6)===0&&(_l=We()+500,sr()))}break;case 13:Ui(function(){var d=zo(o,1);if(d!==null){var g=Vo();pr(d,o,1,g)}}),$h(o,1)}},Cn=function(o){if(o.tag===13){var a=zo(o,134217728);if(a!==null){var i=Vo();pr(a,o,134217728,i)}$h(o,134217728)}},da=function(o){if(o.tag===13){var a=Js(o),i=zo(o,a);if(i!==null){var d=Vo();pr(i,o,a,d)}$h(o,a)}},$c=function(){return xt},Hl=function(o,a){var i=xt;try{return xt=o,a()}finally{xt=i}},Ko=function(o,a,i){switch(a){case"input":if(Ye(o,i),a=i.name,i.type==="radio"&&a!=null){for(i=o;i.parentNode;)i=i.parentNode;for(i=i.querySelectorAll("input[name="+JSON.stringify(""+a)+'][type="radio"]'),a=0;a<i.length;a++){var d=i[a];if(d!==o&&d.form===o.form){var g=rr(d);if(!g)throw Error(r(90));at(d),Ye(d,g)}}}break;case"textarea":et(o,i);break;case"select":a=i.value,a!=null&&re(o,!!i.multiple,a,!1)}},vr=pd,Ba=Ui;var Yj={usingClientEntryPoint:!1,Events:[Oo,Lr,rr,gr,xr,pd]},cp={findFiberByHostInstance:Ta,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},Zj={bundleType:cp.bundleType,version:cp.version,rendererPackageName:cp.rendererPackageName,rendererConfig:cp.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:F.ReactCurrentDispatcher,findHostInstanceByFiber:function(o){return o=tl(o),o===null?null:o.stateNode},findFiberByHostInstance:cp.findFiberByHostInstance||Qj,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Tm=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Tm.isDisabled&&Tm.supportsFiber)try{Zr=Tm.inject(Zj),ua=Tm}catch{}}return mr.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Yj,mr.createPortal=function(o,a){var i=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!Vh(a))throw Error(r(200));return Kj(o,a,null,i)},mr.createRoot=function(o,a){if(!Vh(o))throw Error(r(299));var i=!1,d="",g=Tg;return a!=null&&(a.unstable_strictMode===!0&&(i=!0),a.identifierPrefix!==void 0&&(d=a.identifierPrefix),a.onRecoverableError!==void 0&&(g=a.onRecoverableError)),a=Dh(o,1,!1,null,null,i,!1,d,g),o[sn]=a.current,Os(o.nodeType===8?o.parentNode:o),new Bh(a)},mr.findDOMNode=function(o){if(o==null)return null;if(o.nodeType===1)return o;var a=o._reactInternals;if(a===void 0)throw typeof o.render=="function"?Error(r(188)):(o=Object.keys(o).join(","),Error(r(268,o)));return o=tl(a),o=o===null?null:o.stateNode,o},mr.flushSync=function(o){return Ui(o)},mr.hydrate=function(o,a,i){if(!Em(a))throw Error(r(200));return Mm(null,o,a,!0,i)},mr.hydrateRoot=function(o,a,i){if(!Vh(o))throw Error(r(405));var d=i!=null&&i.hydratedSources||null,g=!1,v="",A=Tg;if(i!=null&&(i.unstable_strictMode===!0&&(g=!0),i.identifierPrefix!==void 0&&(v=i.identifierPrefix),i.onRecoverableError!==void 0&&(A=i.onRecoverableError)),a=Eg(a,null,o,1,i??null,g,!1,v,A),o[sn]=a.current,Os(o),d)for(o=0;o<d.length;o++)i=d[o],g=i._getVersion,g=g(i._source),a.mutableSourceEagerHydrationData==null?a.mutableSourceEagerHydrationData=[i,g]:a.mutableSourceEagerHydrationData.push(i,g);return new Am(a)},mr.render=function(o,a,i){if(!Em(a))throw Error(r(200));return Mm(null,o,a,!1,i)},mr.unmountComponentAtNode=function(o){if(!Em(o))throw Error(r(40));return o._reactRootContainer?(Ui(function(){Mm(null,null,o,!1,function(){o._reactRootContainer=null,o[sn]=null})}),!0):!1},mr.unstable_batchedUpdates=pd,mr.unstable_renderSubtreeIntoContainer=function(o,a,i,d){if(!Em(i))throw Error(r(200));if(o==null||o._reactInternals===void 0)throw Error(r(38));return Mm(o,a,i,!1,d)},mr.version="18.3.1-next-f1338f8080-20240426",mr}var Dg;function Tv(){if(Dg)return Hh.exports;Dg=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(n){console.error(n)}}return t(),Hh.exports=sb(),Hh.exports}var $g;function ib(){if($g)return Im;$g=1;var t=Tv();return Im.createRoot=t.createRoot,Im.hydrateRoot=t.hydrateRoot,Im}var lb=ib();const cb=ng(lb);function Go(t){if(typeof t=="string"||typeof t=="number")return""+t;let n="";if(Array.isArray(t))for(let r=0,s;r<t.length;r++)(s=Go(t[r]))!==""&&(n+=(n&&" ")+s);else for(let r in t)t[r]&&(n+=(n&&" ")+r);return n}var Jh={exports:{}},Kh={},Qh={exports:{}},Xh={};/**
|
|
41
|
+
* @license React
|
|
42
|
+
* use-sync-external-store-shim.production.js
|
|
43
|
+
*
|
|
44
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
45
|
+
*
|
|
46
|
+
* This source code is licensed under the MIT license found in the
|
|
47
|
+
* LICENSE file in the root directory of this source tree.
|
|
48
|
+
*/var Bg;function ub(){if(Bg)return Xh;Bg=1;var t=Hp();function n(w,N){return w===N&&(w!==0||1/w===1/N)||w!==w&&N!==N}var r=typeof Object.is=="function"?Object.is:n,s=t.useState,l=t.useEffect,p=t.useLayoutEffect,m=t.useDebugValue;function h(w,N){var C=N(),E=s({inst:{value:C,getSnapshot:N}}),T=E[0].inst,R=E[1];return p(function(){T.value=C,T.getSnapshot=N,f(T)&&R({inst:T})},[w,C,N]),l(function(){return f(T)&&R({inst:T}),w(function(){f(T)&&R({inst:T})})},[w]),m(C),C}function f(w){var N=w.getSnapshot;w=w.value;try{var C=N();return!r(w,C)}catch{return!0}}function x(w,N){return N()}var j=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?x:h;return Xh.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:j,Xh}var Vg;function db(){return Vg||(Vg=1,Qh.exports=ub()),Qh.exports}/**
|
|
49
|
+
* @license React
|
|
50
|
+
* use-sync-external-store-shim/with-selector.production.js
|
|
51
|
+
*
|
|
52
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
53
|
+
*
|
|
54
|
+
* This source code is licensed under the MIT license found in the
|
|
55
|
+
* LICENSE file in the root directory of this source tree.
|
|
56
|
+
*/var Ug;function pb(){if(Ug)return Kh;Ug=1;var t=Hp(),n=db();function r(x,j){return x===j&&(x!==0||1/x===1/j)||x!==x&&j!==j}var s=typeof Object.is=="function"?Object.is:r,l=n.useSyncExternalStore,p=t.useRef,m=t.useEffect,h=t.useMemo,f=t.useDebugValue;return Kh.useSyncExternalStoreWithSelector=function(x,j,w,N,C){var E=p(null);if(E.current===null){var T={hasValue:!1,value:null};E.current=T}else T=E.current;E=h(function(){function D(ne){if(!q){if(q=!0,I=ne,ne=N(ne),C!==void 0&&T.hasValue){var ae=T.value;if(C(ae,ne))return F=ae}return F=ne}if(ae=F,s(I,ne))return ae;var oe=N(ne);return C!==void 0&&C(ae,oe)?(I=ne,ae):(I=ne,F=oe)}var q=!1,I,F,Y=w===void 0?null:w;return[function(){return D(j())},Y===null?void 0:function(){return D(Y())}]},[j,w,N,C]);var R=l(x,E[0],E[1]);return m(function(){T.hasValue=!0,T.value=R},[R]),f(R),R},Kh}var qg;function mb(){return qg||(qg=1,Jh.exports=pb()),Jh.exports}var hb=mb();const fb=ng(hb),gb={},Hg=t=>{let n;const r=new Set,s=(j,w)=>{const N=typeof j=="function"?j(n):j;if(!Object.is(N,n)){const C=n;n=w??(typeof N!="object"||N===null)?N:Object.assign({},n,N),r.forEach(E=>E(n,C))}},l=()=>n,f={setState:s,getState:l,getInitialState:()=>x,subscribe:j=>(r.add(j),()=>r.delete(j)),destroy:()=>{(gb?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),r.clear()}},x=n=t(s,l,f);return f},xb=t=>t?Hg(t):Hg,{useDebugValue:vb}=me,{useSyncExternalStoreWithSelector:yb}=fb,jb=t=>t;function Iv(t,n=jb,r){const s=yb(t.subscribe,t.getState,t.getServerState||t.getInitialState,n,r);return vb(s),s}const Wg=(t,n)=>{const r=xb(t),s=(l,p=n)=>Iv(r,l,p);return Object.assign(s,r),s},bb=(t,n)=>t?Wg(t,n):Wg;function Wo(t,n){if(Object.is(t,n))return!0;if(typeof t!="object"||t===null||typeof n!="object"||n===null)return!1;if(t instanceof Map&&n instanceof Map){if(t.size!==n.size)return!1;for(const[s,l]of t)if(!Object.is(l,n.get(s)))return!1;return!0}if(t instanceof Set&&n instanceof Set){if(t.size!==n.size)return!1;for(const s of t)if(!n.has(s))return!1;return!0}const r=Object.keys(t);if(r.length!==Object.keys(n).length)return!1;for(const s of r)if(!Object.prototype.hasOwnProperty.call(n,s)||!Object.is(t[s],n[s]))return!1;return!0}var wb={value:()=>{}};function Sh(){for(var t=0,n=arguments.length,r={},s;t<n;++t){if(!(s=arguments[t]+"")||s in r||/[\s.]/.test(s))throw new Error("illegal type: "+s);r[s]=[]}return new th(r)}function th(t){this._=t}function Nb(t,n){return t.trim().split(/^|\s+/).map(function(r){var s="",l=r.indexOf(".");if(l>=0&&(s=r.slice(l+1),r=r.slice(0,l)),r&&!n.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:s}})}th.prototype=Sh.prototype={constructor:th,on:function(t,n){var r=this._,s=Nb(t+"",r),l,p=-1,m=s.length;if(arguments.length<2){for(;++p<m;)if((l=(t=s[p]).type)&&(l=Cb(r[l],t.name)))return l;return}if(n!=null&&typeof n!="function")throw new Error("invalid callback: "+n);for(;++p<m;)if(l=(t=s[p]).type)r[l]=Gg(r[l],t.name,n);else if(n==null)for(l in r)r[l]=Gg(r[l],t.name,null);return this},copy:function(){var t={},n=this._;for(var r in n)t[r]=n[r].slice();return new th(t)},call:function(t,n){if((l=arguments.length-2)>0)for(var r=new Array(l),s=0,l,p;s<l;++s)r[s]=arguments[s+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(p=this._[t],s=0,l=p.length;s<l;++s)p[s].value.apply(n,r)},apply:function(t,n,r){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var s=this._[t],l=0,p=s.length;l<p;++l)s[l].value.apply(n,r)}};function Cb(t,n){for(var r=0,s=t.length,l;r<s;++r)if((l=t[r]).name===n)return l.value}function Gg(t,n,r){for(var s=0,l=t.length;s<l;++s)if(t[s].name===n){t[s]=wb,t=t.slice(0,s).concat(t.slice(s+1));break}return r!=null&&t.push({name:n,value:r}),t}var Sf="http://www.w3.org/1999/xhtml";const Jg={svg:"http://www.w3.org/2000/svg",xhtml:Sf,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function kh(t){var n=t+="",r=n.indexOf(":");return r>=0&&(n=t.slice(0,r))!=="xmlns"&&(t=t.slice(r+1)),Jg.hasOwnProperty(n)?{space:Jg[n],local:t}:t}function Sb(t){return function(){var n=this.ownerDocument,r=this.namespaceURI;return r===Sf&&n.documentElement.namespaceURI===Sf?n.createElement(t):n.createElementNS(r,t)}}function kb(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Pv(t){var n=kh(t);return(n.local?kb:Sb)(n)}function Ab(){}function og(t){return t==null?Ab:function(){return this.querySelector(t)}}function Eb(t){typeof t!="function"&&(t=og(t));for(var n=this._groups,r=n.length,s=new Array(r),l=0;l<r;++l)for(var p=n[l],m=p.length,h=s[l]=new Array(m),f,x,j=0;j<m;++j)(f=p[j])&&(x=t.call(f,f.__data__,j,p))&&("__data__"in f&&(x.__data__=f.__data__),h[j]=x);return new Qr(s,this._parents)}function Mb(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function Tb(){return[]}function _v(t){return t==null?Tb:function(){return this.querySelectorAll(t)}}function Ib(t){return function(){return Mb(t.apply(this,arguments))}}function Pb(t){typeof t=="function"?t=Ib(t):t=_v(t);for(var n=this._groups,r=n.length,s=[],l=[],p=0;p<r;++p)for(var m=n[p],h=m.length,f,x=0;x<h;++x)(f=m[x])&&(s.push(t.call(f,f.__data__,x,m)),l.push(f));return new Qr(s,l)}function Ov(t){return function(){return this.matches(t)}}function Rv(t){return function(n){return n.matches(t)}}var _b=Array.prototype.find;function Ob(t){return function(){return _b.call(this.children,t)}}function Rb(){return this.firstElementChild}function Fb(t){return this.select(t==null?Rb:Ob(typeof t=="function"?t:Rv(t)))}var zb=Array.prototype.filter;function Lb(){return Array.from(this.children)}function Db(t){return function(){return zb.call(this.children,t)}}function $b(t){return this.selectAll(t==null?Lb:Db(typeof t=="function"?t:Rv(t)))}function Bb(t){typeof t!="function"&&(t=Ov(t));for(var n=this._groups,r=n.length,s=new Array(r),l=0;l<r;++l)for(var p=n[l],m=p.length,h=s[l]=[],f,x=0;x<m;++x)(f=p[x])&&t.call(f,f.__data__,x,p)&&h.push(f);return new Qr(s,this._parents)}function Fv(t){return new Array(t.length)}function Vb(){return new Qr(this._enter||this._groups.map(Fv),this._parents)}function ch(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}ch.prototype={constructor:ch,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function Ub(t){return function(){return t}}function qb(t,n,r,s,l,p){for(var m=0,h,f=n.length,x=p.length;m<x;++m)(h=n[m])?(h.__data__=p[m],s[m]=h):r[m]=new ch(t,p[m]);for(;m<f;++m)(h=n[m])&&(l[m]=h)}function Hb(t,n,r,s,l,p,m){var h,f,x=new Map,j=n.length,w=p.length,N=new Array(j),C;for(h=0;h<j;++h)(f=n[h])&&(N[h]=C=m.call(f,f.__data__,h,n)+"",x.has(C)?l[h]=f:x.set(C,f));for(h=0;h<w;++h)C=m.call(t,p[h],h,p)+"",(f=x.get(C))?(s[h]=f,f.__data__=p[h],x.delete(C)):r[h]=new ch(t,p[h]);for(h=0;h<j;++h)(f=n[h])&&x.get(N[h])===f&&(l[h]=f)}function Wb(t){return t.__data__}function Gb(t,n){if(!arguments.length)return Array.from(this,Wb);var r=n?Hb:qb,s=this._parents,l=this._groups;typeof t!="function"&&(t=Ub(t));for(var p=l.length,m=new Array(p),h=new Array(p),f=new Array(p),x=0;x<p;++x){var j=s[x],w=l[x],N=w.length,C=Jb(t.call(j,j&&j.__data__,x,s)),E=C.length,T=h[x]=new Array(E),R=m[x]=new Array(E),D=f[x]=new Array(N);r(j,w,T,R,D,C,n);for(var q=0,I=0,F,Y;q<E;++q)if(F=T[q]){for(q>=I&&(I=q+1);!(Y=R[I])&&++I<E;);F._next=Y||null}}return m=new Qr(m,s),m._enter=h,m._exit=f,m}function Jb(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function Kb(){return new Qr(this._exit||this._groups.map(Fv),this._parents)}function Qb(t,n,r){var s=this.enter(),l=this,p=this.exit();return typeof t=="function"?(s=t(s),s&&(s=s.selection())):s=s.append(t+""),n!=null&&(l=n(l),l&&(l=l.selection())),r==null?p.remove():r(p),s&&l?s.merge(l).order():l}function Xb(t){for(var n=t.selection?t.selection():t,r=this._groups,s=n._groups,l=r.length,p=s.length,m=Math.min(l,p),h=new Array(l),f=0;f<m;++f)for(var x=r[f],j=s[f],w=x.length,N=h[f]=new Array(w),C,E=0;E<w;++E)(C=x[E]||j[E])&&(N[E]=C);for(;f<l;++f)h[f]=r[f];return new Qr(h,this._parents)}function Yb(){for(var t=this._groups,n=-1,r=t.length;++n<r;)for(var s=t[n],l=s.length-1,p=s[l],m;--l>=0;)(m=s[l])&&(p&&m.compareDocumentPosition(p)^4&&p.parentNode.insertBefore(m,p),p=m);return this}function Zb(t){t||(t=e0);function n(w,N){return w&&N?t(w.__data__,N.__data__):!w-!N}for(var r=this._groups,s=r.length,l=new Array(s),p=0;p<s;++p){for(var m=r[p],h=m.length,f=l[p]=new Array(h),x,j=0;j<h;++j)(x=m[j])&&(f[j]=x);f.sort(n)}return new Qr(l,this._parents).order()}function e0(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function t0(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function n0(){return Array.from(this)}function o0(){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var s=t[n],l=0,p=s.length;l<p;++l){var m=s[l];if(m)return m}return null}function a0(){let t=0;for(const n of this)++t;return t}function r0(){return!this.node()}function s0(t){for(var n=this._groups,r=0,s=n.length;r<s;++r)for(var l=n[r],p=0,m=l.length,h;p<m;++p)(h=l[p])&&t.call(h,h.__data__,p,l);return this}function i0(t){return function(){this.removeAttribute(t)}}function l0(t){return function(){this.removeAttributeNS(t.space,t.local)}}function c0(t,n){return function(){this.setAttribute(t,n)}}function u0(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function d0(t,n){return function(){var r=n.apply(this,arguments);r==null?this.removeAttribute(t):this.setAttribute(t,r)}}function p0(t,n){return function(){var r=n.apply(this,arguments);r==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function m0(t,n){var r=kh(t);if(arguments.length<2){var s=this.node();return r.local?s.getAttributeNS(r.space,r.local):s.getAttribute(r)}return this.each((n==null?r.local?l0:i0:typeof n=="function"?r.local?p0:d0:r.local?u0:c0)(r,n))}function zv(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function h0(t){return function(){this.style.removeProperty(t)}}function f0(t,n,r){return function(){this.style.setProperty(t,n,r)}}function g0(t,n,r){return function(){var s=n.apply(this,arguments);s==null?this.style.removeProperty(t):this.style.setProperty(t,s,r)}}function x0(t,n,r){return arguments.length>1?this.each((n==null?h0:typeof n=="function"?g0:f0)(t,n,r??"")):Fd(this.node(),t)}function Fd(t,n){return t.style.getPropertyValue(n)||zv(t).getComputedStyle(t,null).getPropertyValue(n)}function v0(t){return function(){delete this[t]}}function y0(t,n){return function(){this[t]=n}}function j0(t,n){return function(){var r=n.apply(this,arguments);r==null?delete this[t]:this[t]=r}}function b0(t,n){return arguments.length>1?this.each((n==null?v0:typeof n=="function"?j0:y0)(t,n)):this.node()[t]}function Lv(t){return t.trim().split(/^|\s+/)}function ag(t){return t.classList||new Dv(t)}function Dv(t){this._node=t,this._names=Lv(t.getAttribute("class")||"")}Dv.prototype={add:function(t){var n=this._names.indexOf(t);n<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function $v(t,n){for(var r=ag(t),s=-1,l=n.length;++s<l;)r.add(n[s])}function Bv(t,n){for(var r=ag(t),s=-1,l=n.length;++s<l;)r.remove(n[s])}function w0(t){return function(){$v(this,t)}}function N0(t){return function(){Bv(this,t)}}function C0(t,n){return function(){(n.apply(this,arguments)?$v:Bv)(this,t)}}function S0(t,n){var r=Lv(t+"");if(arguments.length<2){for(var s=ag(this.node()),l=-1,p=r.length;++l<p;)if(!s.contains(r[l]))return!1;return!0}return this.each((typeof n=="function"?C0:n?w0:N0)(r,n))}function k0(){this.textContent=""}function A0(t){return function(){this.textContent=t}}function E0(t){return function(){var n=t.apply(this,arguments);this.textContent=n??""}}function M0(t){return arguments.length?this.each(t==null?k0:(typeof t=="function"?E0:A0)(t)):this.node().textContent}function T0(){this.innerHTML=""}function I0(t){return function(){this.innerHTML=t}}function P0(t){return function(){var n=t.apply(this,arguments);this.innerHTML=n??""}}function _0(t){return arguments.length?this.each(t==null?T0:(typeof t=="function"?P0:I0)(t)):this.node().innerHTML}function O0(){this.nextSibling&&this.parentNode.appendChild(this)}function R0(){return this.each(O0)}function F0(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function z0(){return this.each(F0)}function L0(t){var n=typeof t=="function"?t:Pv(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})}function D0(){return null}function $0(t,n){var r=typeof t=="function"?t:Pv(t),s=n==null?D0:typeof n=="function"?n:og(n);return this.select(function(){return this.insertBefore(r.apply(this,arguments),s.apply(this,arguments)||null)})}function B0(){var t=this.parentNode;t&&t.removeChild(this)}function V0(){return this.each(B0)}function U0(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function q0(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function H0(t){return this.select(t?q0:U0)}function W0(t){return arguments.length?this.property("__data__",t):this.node().__data__}function G0(t){return function(n){t.call(this,n,this.__data__)}}function J0(t){return t.trim().split(/^|\s+/).map(function(n){var r="",s=n.indexOf(".");return s>=0&&(r=n.slice(s+1),n=n.slice(0,s)),{type:n,name:r}})}function K0(t){return function(){var n=this.__on;if(n){for(var r=0,s=-1,l=n.length,p;r<l;++r)p=n[r],(!t.type||p.type===t.type)&&p.name===t.name?this.removeEventListener(p.type,p.listener,p.options):n[++s]=p;++s?n.length=s:delete this.__on}}}function Q0(t,n,r){return function(){var s=this.__on,l,p=G0(n);if(s){for(var m=0,h=s.length;m<h;++m)if((l=s[m]).type===t.type&&l.name===t.name){this.removeEventListener(l.type,l.listener,l.options),this.addEventListener(l.type,l.listener=p,l.options=r),l.value=n;return}}this.addEventListener(t.type,p,r),l={type:t.type,name:t.name,value:n,listener:p,options:r},s?s.push(l):this.__on=[l]}}function X0(t,n,r){var s=J0(t+""),l,p=s.length,m;if(arguments.length<2){var h=this.node().__on;if(h){for(var f=0,x=h.length,j;f<x;++f)for(l=0,j=h[f];l<p;++l)if((m=s[l]).type===j.type&&m.name===j.name)return j.value}return}for(h=n?Q0:K0,l=0;l<p;++l)this.each(h(s[l],n,r));return this}function Vv(t,n,r){var s=zv(t),l=s.CustomEvent;typeof l=="function"?l=new l(n,r):(l=s.document.createEvent("Event"),r?(l.initEvent(n,r.bubbles,r.cancelable),l.detail=r.detail):l.initEvent(n,!1,!1)),t.dispatchEvent(l)}function Y0(t,n){return function(){return Vv(this,t,n)}}function Z0(t,n){return function(){return Vv(this,t,n.apply(this,arguments))}}function ew(t,n){return this.each((typeof n=="function"?Z0:Y0)(t,n))}function*tw(){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var s=t[n],l=0,p=s.length,m;l<p;++l)(m=s[l])&&(yield m)}var Uv=[null];function Qr(t,n){this._groups=t,this._parents=n}function Wp(){return new Qr([[document.documentElement]],Uv)}function nw(){return this}Qr.prototype=Wp.prototype={constructor:Qr,select:Eb,selectAll:Pb,selectChild:Fb,selectChildren:$b,filter:Bb,data:Gb,enter:Vb,exit:Kb,join:Qb,merge:Xb,selection:nw,order:Yb,sort:Zb,call:t0,nodes:n0,node:o0,size:a0,empty:r0,each:s0,attr:m0,style:x0,property:b0,classed:S0,text:M0,html:_0,raise:R0,lower:z0,append:L0,insert:$0,remove:V0,clone:H0,datum:W0,on:X0,dispatch:ew,[Symbol.iterator]:tw};function Kr(t){return typeof t=="string"?new Qr([[document.querySelector(t)]],[document.documentElement]):new Qr([[t]],Uv)}function ow(t){let n;for(;n=t.sourceEvent;)t=n;return t}function Xs(t,n){if(t=ow(t),n===void 0&&(n=t.currentTarget),n){var r=n.ownerSVGElement||n;if(r.createSVGPoint){var s=r.createSVGPoint();return s.x=t.clientX,s.y=t.clientY,s=s.matrixTransform(n.getScreenCTM().inverse()),[s.x,s.y]}if(n.getBoundingClientRect){var l=n.getBoundingClientRect();return[t.clientX-l.left-n.clientLeft,t.clientY-l.top-n.clientTop]}}return[t.pageX,t.pageY]}const aw={passive:!1},Pp={capture:!0,passive:!1};function Yh(t){t.stopImmediatePropagation()}function Td(t){t.preventDefault(),t.stopImmediatePropagation()}function qv(t){var n=t.document.documentElement,r=Kr(t).on("dragstart.drag",Td,Pp);"onselectstart"in n?r.on("selectstart.drag",Td,Pp):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}function Hv(t,n){var r=t.document.documentElement,s=Kr(t).on("dragstart.drag",null);n&&(s.on("click.drag",Td,Pp),setTimeout(function(){s.on("click.drag",null)},0)),"onselectstart"in r?s.on("selectstart.drag",null):(r.style.MozUserSelect=r.__noselect,delete r.__noselect)}const Pm=t=>()=>t;function kf(t,{sourceEvent:n,subject:r,target:s,identifier:l,active:p,x:m,y:h,dx:f,dy:x,dispatch:j}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:s,enumerable:!0,configurable:!0},identifier:{value:l,enumerable:!0,configurable:!0},active:{value:p,enumerable:!0,configurable:!0},x:{value:m,enumerable:!0,configurable:!0},y:{value:h,enumerable:!0,configurable:!0},dx:{value:f,enumerable:!0,configurable:!0},dy:{value:x,enumerable:!0,configurable:!0},_:{value:j}})}kf.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function rw(t){return!t.ctrlKey&&!t.button}function sw(){return this.parentNode}function iw(t,n){return n??{x:t.x,y:t.y}}function lw(){return navigator.maxTouchPoints||"ontouchstart"in this}function Wv(){var t=rw,n=sw,r=iw,s=lw,l={},p=Sh("start","drag","end"),m=0,h,f,x,j,w=0;function N(F){F.on("mousedown.drag",C).filter(s).on("touchstart.drag",R).on("touchmove.drag",D,aw).on("touchend.drag touchcancel.drag",q).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function C(F,Y){if(!(j||!t.call(this,F,Y))){var ne=I(this,n.call(this,F,Y),F,Y,"mouse");ne&&(Kr(F.view).on("mousemove.drag",E,Pp).on("mouseup.drag",T,Pp),qv(F.view),Yh(F),x=!1,h=F.clientX,f=F.clientY,ne("start",F))}}function E(F){if(Td(F),!x){var Y=F.clientX-h,ne=F.clientY-f;x=Y*Y+ne*ne>w}l.mouse("drag",F)}function T(F){Kr(F.view).on("mousemove.drag mouseup.drag",null),Hv(F.view,x),Td(F),l.mouse("end",F)}function R(F,Y){if(t.call(this,F,Y)){var ne=F.changedTouches,ae=n.call(this,F,Y),oe=ne.length,Q,fe;for(Q=0;Q<oe;++Q)(fe=I(this,ae,F,Y,ne[Q].identifier,ne[Q]))&&(Yh(F),fe("start",F,ne[Q]))}}function D(F){var Y=F.changedTouches,ne=Y.length,ae,oe;for(ae=0;ae<ne;++ae)(oe=l[Y[ae].identifier])&&(Td(F),oe("drag",F,Y[ae]))}function q(F){var Y=F.changedTouches,ne=Y.length,ae,oe;for(j&&clearTimeout(j),j=setTimeout(function(){j=null},500),ae=0;ae<ne;++ae)(oe=l[Y[ae].identifier])&&(Yh(F),oe("end",F,Y[ae]))}function I(F,Y,ne,ae,oe,Q){var fe=p.copy(),xe=Xs(Q||ne,Y),ye,le,M;if((M=r.call(F,new kf("beforestart",{sourceEvent:ne,target:N,identifier:oe,active:m,x:xe[0],y:xe[1],dx:0,dy:0,dispatch:fe}),ae))!=null)return ye=M.x-xe[0]||0,le=M.y-xe[1]||0,function ee(H,se,G){var V=xe,K;switch(H){case"start":l[oe]=ee,K=m++;break;case"end":delete l[oe],--m;case"drag":xe=Xs(G||se,Y),K=m;break}fe.call(H,F,new kf(H,{sourceEvent:se,subject:M,target:N,identifier:oe,active:K,x:xe[0]+ye,y:xe[1]+le,dx:xe[0]-V[0],dy:xe[1]-V[1],dispatch:fe}),ae)}}return N.filter=function(F){return arguments.length?(t=typeof F=="function"?F:Pm(!!F),N):t},N.container=function(F){return arguments.length?(n=typeof F=="function"?F:Pm(F),N):n},N.subject=function(F){return arguments.length?(r=typeof F=="function"?F:Pm(F),N):r},N.touchable=function(F){return arguments.length?(s=typeof F=="function"?F:Pm(!!F),N):s},N.on=function(){var F=p.on.apply(p,arguments);return F===p?N:F},N.clickDistance=function(F){return arguments.length?(w=(F=+F)*F,N):Math.sqrt(w)},N}function rg(t,n,r){t.prototype=n.prototype=r,r.constructor=t}function Gv(t,n){var r=Object.create(t.prototype);for(var s in n)r[s]=n[s];return r}function Gp(){}var _p=.7,uh=1/_p,Id="\\s*([+-]?\\d+)\\s*",Op="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Xi="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",cw=/^#([0-9a-f]{3,8})$/,uw=new RegExp(`^rgb\\(${Id},${Id},${Id}\\)$`),dw=new RegExp(`^rgb\\(${Xi},${Xi},${Xi}\\)$`),pw=new RegExp(`^rgba\\(${Id},${Id},${Id},${Op}\\)$`),mw=new RegExp(`^rgba\\(${Xi},${Xi},${Xi},${Op}\\)$`),hw=new RegExp(`^hsl\\(${Op},${Xi},${Xi}\\)$`),fw=new RegExp(`^hsla\\(${Op},${Xi},${Xi},${Op}\\)$`),Kg={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};rg(Gp,Rp,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Qg,formatHex:Qg,formatHex8:gw,formatHsl:xw,formatRgb:Xg,toString:Xg});function Qg(){return this.rgb().formatHex()}function gw(){return this.rgb().formatHex8()}function xw(){return Jv(this).formatHsl()}function Xg(){return this.rgb().formatRgb()}function Rp(t){var n,r;return t=(t+"").trim().toLowerCase(),(n=cw.exec(t))?(r=n[1].length,n=parseInt(n[1],16),r===6?Yg(n):r===3?new hr(n>>8&15|n>>4&240,n>>4&15|n&240,(n&15)<<4|n&15,1):r===8?_m(n>>24&255,n>>16&255,n>>8&255,(n&255)/255):r===4?_m(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|n&240,((n&15)<<4|n&15)/255):null):(n=uw.exec(t))?new hr(n[1],n[2],n[3],1):(n=dw.exec(t))?new hr(n[1]*255/100,n[2]*255/100,n[3]*255/100,1):(n=pw.exec(t))?_m(n[1],n[2],n[3],n[4]):(n=mw.exec(t))?_m(n[1]*255/100,n[2]*255/100,n[3]*255/100,n[4]):(n=hw.exec(t))?tx(n[1],n[2]/100,n[3]/100,1):(n=fw.exec(t))?tx(n[1],n[2]/100,n[3]/100,n[4]):Kg.hasOwnProperty(t)?Yg(Kg[t]):t==="transparent"?new hr(NaN,NaN,NaN,0):null}function Yg(t){return new hr(t>>16&255,t>>8&255,t&255,1)}function _m(t,n,r,s){return s<=0&&(t=n=r=NaN),new hr(t,n,r,s)}function vw(t){return t instanceof Gp||(t=Rp(t)),t?(t=t.rgb(),new hr(t.r,t.g,t.b,t.opacity)):new hr}function Af(t,n,r,s){return arguments.length===1?vw(t):new hr(t,n,r,s??1)}function hr(t,n,r,s){this.r=+t,this.g=+n,this.b=+r,this.opacity=+s}rg(hr,Af,Gv(Gp,{brighter(t){return t=t==null?uh:Math.pow(uh,t),new hr(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?_p:Math.pow(_p,t),new hr(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new hr(zu(this.r),zu(this.g),zu(this.b),dh(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Zg,formatHex:Zg,formatHex8:yw,formatRgb:ex,toString:ex}));function Zg(){return`#${Ou(this.r)}${Ou(this.g)}${Ou(this.b)}`}function yw(){return`#${Ou(this.r)}${Ou(this.g)}${Ou(this.b)}${Ou((isNaN(this.opacity)?1:this.opacity)*255)}`}function ex(){const t=dh(this.opacity);return`${t===1?"rgb(":"rgba("}${zu(this.r)}, ${zu(this.g)}, ${zu(this.b)}${t===1?")":`, ${t})`}`}function dh(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function zu(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ou(t){return t=zu(t),(t<16?"0":"")+t.toString(16)}function tx(t,n,r,s){return s<=0?t=n=r=NaN:r<=0||r>=1?t=n=NaN:n<=0&&(t=NaN),new Ys(t,n,r,s)}function Jv(t){if(t instanceof Ys)return new Ys(t.h,t.s,t.l,t.opacity);if(t instanceof Gp||(t=Rp(t)),!t)return new Ys;if(t instanceof Ys)return t;t=t.rgb();var n=t.r/255,r=t.g/255,s=t.b/255,l=Math.min(n,r,s),p=Math.max(n,r,s),m=NaN,h=p-l,f=(p+l)/2;return h?(n===p?m=(r-s)/h+(r<s)*6:r===p?m=(s-n)/h+2:m=(n-r)/h+4,h/=f<.5?p+l:2-p-l,m*=60):h=f>0&&f<1?0:m,new Ys(m,h,f,t.opacity)}function jw(t,n,r,s){return arguments.length===1?Jv(t):new Ys(t,n,r,s??1)}function Ys(t,n,r,s){this.h=+t,this.s=+n,this.l=+r,this.opacity=+s}rg(Ys,jw,Gv(Gp,{brighter(t){return t=t==null?uh:Math.pow(uh,t),new Ys(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?_p:Math.pow(_p,t),new Ys(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,n=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,s=r+(r<.5?r:1-r)*n,l=2*r-s;return new hr(Zh(t>=240?t-240:t+120,l,s),Zh(t,l,s),Zh(t<120?t+240:t-120,l,s),this.opacity)},clamp(){return new Ys(nx(this.h),Om(this.s),Om(this.l),dh(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=dh(this.opacity);return`${t===1?"hsl(":"hsla("}${nx(this.h)}, ${Om(this.s)*100}%, ${Om(this.l)*100}%${t===1?")":`, ${t})`}`}}));function nx(t){return t=(t||0)%360,t<0?t+360:t}function Om(t){return Math.max(0,Math.min(1,t||0))}function Zh(t,n,r){return(t<60?n+(r-n)*t/60:t<180?r:t<240?n+(r-n)*(240-t)/60:n)*255}const Kv=t=>()=>t;function bw(t,n){return function(r){return t+r*n}}function ww(t,n,r){return t=Math.pow(t,r),n=Math.pow(n,r)-t,r=1/r,function(s){return Math.pow(t+s*n,r)}}function Nw(t){return(t=+t)==1?Qv:function(n,r){return r-n?ww(n,r,t):Kv(isNaN(n)?r:n)}}function Qv(t,n){var r=n-t;return r?bw(t,r):Kv(isNaN(t)?n:t)}const ox=(function t(n){var r=Nw(n);function s(l,p){var m=r((l=Af(l)).r,(p=Af(p)).r),h=r(l.g,p.g),f=r(l.b,p.b),x=Qv(l.opacity,p.opacity);return function(j){return l.r=m(j),l.g=h(j),l.b=f(j),l.opacity=x(j),l+""}}return s.gamma=t,s})(1);function Pc(t,n){return t=+t,n=+n,function(r){return t*(1-r)+n*r}}var Ef=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,ef=new RegExp(Ef.source,"g");function Cw(t){return function(){return t}}function Sw(t){return function(n){return t(n)+""}}function kw(t,n){var r=Ef.lastIndex=ef.lastIndex=0,s,l,p,m=-1,h=[],f=[];for(t=t+"",n=n+"";(s=Ef.exec(t))&&(l=ef.exec(n));)(p=l.index)>r&&(p=n.slice(r,p),h[m]?h[m]+=p:h[++m]=p),(s=s[0])===(l=l[0])?h[m]?h[m]+=l:h[++m]=l:(h[++m]=null,f.push({i:m,x:Pc(s,l)})),r=ef.lastIndex;return r<n.length&&(p=n.slice(r),h[m]?h[m]+=p:h[++m]=p),h.length<2?f[0]?Sw(f[0].x):Cw(n):(n=f.length,function(x){for(var j=0,w;j<n;++j)h[(w=f[j]).i]=w.x(x);return h.join("")})}var ax=180/Math.PI,Mf={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Xv(t,n,r,s,l,p){var m,h,f;return(m=Math.sqrt(t*t+n*n))&&(t/=m,n/=m),(f=t*r+n*s)&&(r-=t*f,s-=n*f),(h=Math.sqrt(r*r+s*s))&&(r/=h,s/=h,f/=h),t*s<n*r&&(t=-t,n=-n,f=-f,m=-m),{translateX:l,translateY:p,rotate:Math.atan2(n,t)*ax,skewX:Math.atan(f)*ax,scaleX:m,scaleY:h}}var Rm;function Aw(t){const n=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?Mf:Xv(n.a,n.b,n.c,n.d,n.e,n.f)}function Ew(t){return t==null||(Rm||(Rm=document.createElementNS("http://www.w3.org/2000/svg","g")),Rm.setAttribute("transform",t),!(t=Rm.transform.baseVal.consolidate()))?Mf:(t=t.matrix,Xv(t.a,t.b,t.c,t.d,t.e,t.f))}function Yv(t,n,r,s){function l(x){return x.length?x.pop()+" ":""}function p(x,j,w,N,C,E){if(x!==w||j!==N){var T=C.push("translate(",null,n,null,r);E.push({i:T-4,x:Pc(x,w)},{i:T-2,x:Pc(j,N)})}else(w||N)&&C.push("translate("+w+n+N+r)}function m(x,j,w,N){x!==j?(x-j>180?j+=360:j-x>180&&(x+=360),N.push({i:w.push(l(w)+"rotate(",null,s)-2,x:Pc(x,j)})):j&&w.push(l(w)+"rotate("+j+s)}function h(x,j,w,N){x!==j?N.push({i:w.push(l(w)+"skewX(",null,s)-2,x:Pc(x,j)}):j&&w.push(l(w)+"skewX("+j+s)}function f(x,j,w,N,C,E){if(x!==w||j!==N){var T=C.push(l(C)+"scale(",null,",",null,")");E.push({i:T-4,x:Pc(x,w)},{i:T-2,x:Pc(j,N)})}else(w!==1||N!==1)&&C.push(l(C)+"scale("+w+","+N+")")}return function(x,j){var w=[],N=[];return x=t(x),j=t(j),p(x.translateX,x.translateY,j.translateX,j.translateY,w,N),m(x.rotate,j.rotate,w,N),h(x.skewX,j.skewX,w,N),f(x.scaleX,x.scaleY,j.scaleX,j.scaleY,w,N),x=j=null,function(C){for(var E=-1,T=N.length,R;++E<T;)w[(R=N[E]).i]=R.x(C);return w.join("")}}}var Mw=Yv(Aw,"px, ","px)","deg)"),Tw=Yv(Ew,", ",")",")"),Iw=1e-12;function rx(t){return((t=Math.exp(t))+1/t)/2}function Pw(t){return((t=Math.exp(t))-1/t)/2}function _w(t){return((t=Math.exp(2*t))-1)/(t+1)}const Ow=(function t(n,r,s){function l(p,m){var h=p[0],f=p[1],x=p[2],j=m[0],w=m[1],N=m[2],C=j-h,E=w-f,T=C*C+E*E,R,D;if(T<Iw)D=Math.log(N/x)/n,R=function(ae){return[h+ae*C,f+ae*E,x*Math.exp(n*ae*D)]};else{var q=Math.sqrt(T),I=(N*N-x*x+s*T)/(2*x*r*q),F=(N*N-x*x-s*T)/(2*N*r*q),Y=Math.log(Math.sqrt(I*I+1)-I),ne=Math.log(Math.sqrt(F*F+1)-F);D=(ne-Y)/n,R=function(ae){var oe=ae*D,Q=rx(Y),fe=x/(r*q)*(Q*_w(n*oe+Y)-Pw(Y));return[h+fe*C,f+fe*E,x*Q/rx(n*oe+Y)]}}return R.duration=D*1e3*n/Math.SQRT2,R}return l.rho=function(p){var m=Math.max(.001,+p),h=m*m,f=h*h;return t(m,h,f)},l})(Math.SQRT2,2,4);var zd=0,Np=0,dp=0,Zv=1e3,ph,Cp,mh=0,$u=0,Ah=0,Fp=typeof performance=="object"&&performance.now?performance:Date,ey=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function sg(){return $u||(ey(Rw),$u=Fp.now()+Ah)}function Rw(){$u=0}function hh(){this._call=this._time=this._next=null}hh.prototype=ty.prototype={constructor:hh,restart:function(t,n,r){if(typeof t!="function")throw new TypeError("callback is not a function");r=(r==null?sg():+r)+(n==null?0:+n),!this._next&&Cp!==this&&(Cp?Cp._next=this:ph=this,Cp=this),this._call=t,this._time=r,Tf()},stop:function(){this._call&&(this._call=null,this._time=1/0,Tf())}};function ty(t,n,r){var s=new hh;return s.restart(t,n,r),s}function Fw(){sg(),++zd;for(var t=ph,n;t;)(n=$u-t._time)>=0&&t._call.call(void 0,n),t=t._next;--zd}function sx(){$u=(mh=Fp.now())+Ah,zd=Np=0;try{Fw()}finally{zd=0,Lw(),$u=0}}function zw(){var t=Fp.now(),n=t-mh;n>Zv&&(Ah-=n,mh=t)}function Lw(){for(var t,n=ph,r,s=1/0;n;)n._call?(s>n._time&&(s=n._time),t=n,n=n._next):(r=n._next,n._next=null,n=t?t._next=r:ph=r);Cp=t,Tf(s)}function Tf(t){if(!zd){Np&&(Np=clearTimeout(Np));var n=t-$u;n>24?(t<1/0&&(Np=setTimeout(sx,t-Fp.now()-Ah)),dp&&(dp=clearInterval(dp))):(dp||(mh=Fp.now(),dp=setInterval(zw,Zv)),zd=1,ey(sx))}}function ix(t,n,r){var s=new hh;return n=n==null?0:+n,s.restart(l=>{s.stop(),t(l+n)},n,r),s}var Dw=Sh("start","end","cancel","interrupt"),$w=[],ny=0,lx=1,If=2,nh=3,cx=4,Pf=5,oh=6;function Eh(t,n,r,s,l,p){var m=t.__transition;if(!m)t.__transition={};else if(r in m)return;Bw(t,r,{name:n,index:s,group:l,on:Dw,tween:$w,time:p.time,delay:p.delay,duration:p.duration,ease:p.ease,timer:null,state:ny})}function ig(t,n){var r=ti(t,n);if(r.state>ny)throw new Error("too late; already scheduled");return r}function Yi(t,n){var r=ti(t,n);if(r.state>nh)throw new Error("too late; already running");return r}function ti(t,n){var r=t.__transition;if(!r||!(r=r[n]))throw new Error("transition not found");return r}function Bw(t,n,r){var s=t.__transition,l;s[n]=r,r.timer=ty(p,0,r.time);function p(x){r.state=lx,r.timer.restart(m,r.delay,r.time),r.delay<=x&&m(x-r.delay)}function m(x){var j,w,N,C;if(r.state!==lx)return f();for(j in s)if(C=s[j],C.name===r.name){if(C.state===nh)return ix(m);C.state===cx?(C.state=oh,C.timer.stop(),C.on.call("interrupt",t,t.__data__,C.index,C.group),delete s[j]):+j<n&&(C.state=oh,C.timer.stop(),C.on.call("cancel",t,t.__data__,C.index,C.group),delete s[j])}if(ix(function(){r.state===nh&&(r.state=cx,r.timer.restart(h,r.delay,r.time),h(x))}),r.state=If,r.on.call("start",t,t.__data__,r.index,r.group),r.state===If){for(r.state=nh,l=new Array(N=r.tween.length),j=0,w=-1;j<N;++j)(C=r.tween[j].value.call(t,t.__data__,r.index,r.group))&&(l[++w]=C);l.length=w+1}}function h(x){for(var j=x<r.duration?r.ease.call(null,x/r.duration):(r.timer.restart(f),r.state=Pf,1),w=-1,N=l.length;++w<N;)l[w].call(t,j);r.state===Pf&&(r.on.call("end",t,t.__data__,r.index,r.group),f())}function f(){r.state=oh,r.timer.stop(),delete s[n];for(var x in s)return;delete t.__transition}}function ah(t,n){var r=t.__transition,s,l,p=!0,m;if(r){n=n==null?null:n+"";for(m in r){if((s=r[m]).name!==n){p=!1;continue}l=s.state>If&&s.state<Pf,s.state=oh,s.timer.stop(),s.on.call(l?"interrupt":"cancel",t,t.__data__,s.index,s.group),delete r[m]}p&&delete t.__transition}}function Vw(t){return this.each(function(){ah(this,t)})}function Uw(t,n){var r,s;return function(){var l=Yi(this,t),p=l.tween;if(p!==r){s=r=p;for(var m=0,h=s.length;m<h;++m)if(s[m].name===n){s=s.slice(),s.splice(m,1);break}}l.tween=s}}function qw(t,n,r){var s,l;if(typeof r!="function")throw new Error;return function(){var p=Yi(this,t),m=p.tween;if(m!==s){l=(s=m).slice();for(var h={name:n,value:r},f=0,x=l.length;f<x;++f)if(l[f].name===n){l[f]=h;break}f===x&&l.push(h)}p.tween=l}}function Hw(t,n){var r=this._id;if(t+="",arguments.length<2){for(var s=ti(this.node(),r).tween,l=0,p=s.length,m;l<p;++l)if((m=s[l]).name===t)return m.value;return null}return this.each((n==null?Uw:qw)(r,t,n))}function lg(t,n,r){var s=t._id;return t.each(function(){var l=Yi(this,s);(l.value||(l.value={}))[n]=r.apply(this,arguments)}),function(l){return ti(l,s).value[n]}}function oy(t,n){var r;return(typeof n=="number"?Pc:n instanceof Rp?ox:(r=Rp(n))?(n=r,ox):kw)(t,n)}function Ww(t){return function(){this.removeAttribute(t)}}function Gw(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Jw(t,n,r){var s,l=r+"",p;return function(){var m=this.getAttribute(t);return m===l?null:m===s?p:p=n(s=m,r)}}function Kw(t,n,r){var s,l=r+"",p;return function(){var m=this.getAttributeNS(t.space,t.local);return m===l?null:m===s?p:p=n(s=m,r)}}function Qw(t,n,r){var s,l,p;return function(){var m,h=r(this),f;return h==null?void this.removeAttribute(t):(m=this.getAttribute(t),f=h+"",m===f?null:m===s&&f===l?p:(l=f,p=n(s=m,h)))}}function Xw(t,n,r){var s,l,p;return function(){var m,h=r(this),f;return h==null?void this.removeAttributeNS(t.space,t.local):(m=this.getAttributeNS(t.space,t.local),f=h+"",m===f?null:m===s&&f===l?p:(l=f,p=n(s=m,h)))}}function Yw(t,n){var r=kh(t),s=r==="transform"?Tw:oy;return this.attrTween(t,typeof n=="function"?(r.local?Xw:Qw)(r,s,lg(this,"attr."+t,n)):n==null?(r.local?Gw:Ww)(r):(r.local?Kw:Jw)(r,s,n))}function Zw(t,n){return function(r){this.setAttribute(t,n.call(this,r))}}function eN(t,n){return function(r){this.setAttributeNS(t.space,t.local,n.call(this,r))}}function tN(t,n){var r,s;function l(){var p=n.apply(this,arguments);return p!==s&&(r=(s=p)&&eN(t,p)),r}return l._value=n,l}function nN(t,n){var r,s;function l(){var p=n.apply(this,arguments);return p!==s&&(r=(s=p)&&Zw(t,p)),r}return l._value=n,l}function oN(t,n){var r="attr."+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(n==null)return this.tween(r,null);if(typeof n!="function")throw new Error;var s=kh(t);return this.tween(r,(s.local?tN:nN)(s,n))}function aN(t,n){return function(){ig(this,t).delay=+n.apply(this,arguments)}}function rN(t,n){return n=+n,function(){ig(this,t).delay=n}}function sN(t){var n=this._id;return arguments.length?this.each((typeof t=="function"?aN:rN)(n,t)):ti(this.node(),n).delay}function iN(t,n){return function(){Yi(this,t).duration=+n.apply(this,arguments)}}function lN(t,n){return n=+n,function(){Yi(this,t).duration=n}}function cN(t){var n=this._id;return arguments.length?this.each((typeof t=="function"?iN:lN)(n,t)):ti(this.node(),n).duration}function uN(t,n){if(typeof n!="function")throw new Error;return function(){Yi(this,t).ease=n}}function dN(t){var n=this._id;return arguments.length?this.each(uN(n,t)):ti(this.node(),n).ease}function pN(t,n){return function(){var r=n.apply(this,arguments);if(typeof r!="function")throw new Error;Yi(this,t).ease=r}}function mN(t){if(typeof t!="function")throw new Error;return this.each(pN(this._id,t))}function hN(t){typeof t!="function"&&(t=Ov(t));for(var n=this._groups,r=n.length,s=new Array(r),l=0;l<r;++l)for(var p=n[l],m=p.length,h=s[l]=[],f,x=0;x<m;++x)(f=p[x])&&t.call(f,f.__data__,x,p)&&h.push(f);return new $l(s,this._parents,this._name,this._id)}function fN(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,r=t._groups,s=n.length,l=r.length,p=Math.min(s,l),m=new Array(s),h=0;h<p;++h)for(var f=n[h],x=r[h],j=f.length,w=m[h]=new Array(j),N,C=0;C<j;++C)(N=f[C]||x[C])&&(w[C]=N);for(;h<s;++h)m[h]=n[h];return new $l(m,this._parents,this._name,this._id)}function gN(t){return(t+"").trim().split(/^|\s+/).every(function(n){var r=n.indexOf(".");return r>=0&&(n=n.slice(0,r)),!n||n==="start"})}function xN(t,n,r){var s,l,p=gN(n)?ig:Yi;return function(){var m=p(this,t),h=m.on;h!==s&&(l=(s=h).copy()).on(n,r),m.on=l}}function vN(t,n){var r=this._id;return arguments.length<2?ti(this.node(),r).on.on(t):this.each(xN(r,t,n))}function yN(t){return function(){var n=this.parentNode;for(var r in this.__transition)if(+r!==t)return;n&&n.removeChild(this)}}function jN(){return this.on("end.remove",yN(this._id))}function bN(t){var n=this._name,r=this._id;typeof t!="function"&&(t=og(t));for(var s=this._groups,l=s.length,p=new Array(l),m=0;m<l;++m)for(var h=s[m],f=h.length,x=p[m]=new Array(f),j,w,N=0;N<f;++N)(j=h[N])&&(w=t.call(j,j.__data__,N,h))&&("__data__"in j&&(w.__data__=j.__data__),x[N]=w,Eh(x[N],n,r,N,x,ti(j,r)));return new $l(p,this._parents,n,r)}function wN(t){var n=this._name,r=this._id;typeof t!="function"&&(t=_v(t));for(var s=this._groups,l=s.length,p=[],m=[],h=0;h<l;++h)for(var f=s[h],x=f.length,j,w=0;w<x;++w)if(j=f[w]){for(var N=t.call(j,j.__data__,w,f),C,E=ti(j,r),T=0,R=N.length;T<R;++T)(C=N[T])&&Eh(C,n,r,T,N,E);p.push(N),m.push(j)}return new $l(p,m,n,r)}var NN=Wp.prototype.constructor;function CN(){return new NN(this._groups,this._parents)}function SN(t,n){var r,s,l;return function(){var p=Fd(this,t),m=(this.style.removeProperty(t),Fd(this,t));return p===m?null:p===r&&m===s?l:l=n(r=p,s=m)}}function ay(t){return function(){this.style.removeProperty(t)}}function kN(t,n,r){var s,l=r+"",p;return function(){var m=Fd(this,t);return m===l?null:m===s?p:p=n(s=m,r)}}function AN(t,n,r){var s,l,p;return function(){var m=Fd(this,t),h=r(this),f=h+"";return h==null&&(f=h=(this.style.removeProperty(t),Fd(this,t))),m===f?null:m===s&&f===l?p:(l=f,p=n(s=m,h))}}function EN(t,n){var r,s,l,p="style."+n,m="end."+p,h;return function(){var f=Yi(this,t),x=f.on,j=f.value[p]==null?h||(h=ay(n)):void 0;(x!==r||l!==j)&&(s=(r=x).copy()).on(m,l=j),f.on=s}}function MN(t,n,r){var s=(t+="")=="transform"?Mw:oy;return n==null?this.styleTween(t,SN(t,s)).on("end.style."+t,ay(t)):typeof n=="function"?this.styleTween(t,AN(t,s,lg(this,"style."+t,n))).each(EN(this._id,t)):this.styleTween(t,kN(t,s,n),r).on("end.style."+t,null)}function TN(t,n,r){return function(s){this.style.setProperty(t,n.call(this,s),r)}}function IN(t,n,r){var s,l;function p(){var m=n.apply(this,arguments);return m!==l&&(s=(l=m)&&TN(t,m,r)),s}return p._value=n,p}function PN(t,n,r){var s="style."+(t+="");if(arguments.length<2)return(s=this.tween(s))&&s._value;if(n==null)return this.tween(s,null);if(typeof n!="function")throw new Error;return this.tween(s,IN(t,n,r??""))}function _N(t){return function(){this.textContent=t}}function ON(t){return function(){var n=t(this);this.textContent=n??""}}function RN(t){return this.tween("text",typeof t=="function"?ON(lg(this,"text",t)):_N(t==null?"":t+""))}function FN(t){return function(n){this.textContent=t.call(this,n)}}function zN(t){var n,r;function s(){var l=t.apply(this,arguments);return l!==r&&(n=(r=l)&&FN(l)),n}return s._value=t,s}function LN(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;return this.tween(n,zN(t))}function DN(){for(var t=this._name,n=this._id,r=ry(),s=this._groups,l=s.length,p=0;p<l;++p)for(var m=s[p],h=m.length,f,x=0;x<h;++x)if(f=m[x]){var j=ti(f,n);Eh(f,t,r,x,m,{time:j.time+j.delay+j.duration,delay:0,duration:j.duration,ease:j.ease})}return new $l(s,this._parents,t,r)}function $N(){var t,n,r=this,s=r._id,l=r.size();return new Promise(function(p,m){var h={value:m},f={value:function(){--l===0&&p()}};r.each(function(){var x=Yi(this,s),j=x.on;j!==t&&(n=(t=j).copy(),n._.cancel.push(h),n._.interrupt.push(h),n._.end.push(f)),x.on=n}),l===0&&p()})}var BN=0;function $l(t,n,r,s){this._groups=t,this._parents=n,this._name=r,this._id=s}function ry(){return++BN}var Ol=Wp.prototype;$l.prototype={constructor:$l,select:bN,selectAll:wN,selectChild:Ol.selectChild,selectChildren:Ol.selectChildren,filter:hN,merge:fN,selection:CN,transition:DN,call:Ol.call,nodes:Ol.nodes,node:Ol.node,size:Ol.size,empty:Ol.empty,each:Ol.each,on:vN,attr:Yw,attrTween:oN,style:MN,styleTween:PN,text:RN,textTween:LN,remove:jN,tween:Hw,delay:sN,duration:cN,ease:dN,easeVarying:mN,end:$N,[Symbol.iterator]:Ol[Symbol.iterator]};function VN(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var UN={time:null,delay:0,duration:250,ease:VN};function qN(t,n){for(var r;!(r=t.__transition)||!(r=r[n]);)if(!(t=t.parentNode))throw new Error(`transition ${n} not found`);return r}function HN(t){var n,r;t instanceof $l?(n=t._id,t=t._name):(n=ry(),(r=UN).time=sg(),t=t==null?null:t+"");for(var s=this._groups,l=s.length,p=0;p<l;++p)for(var m=s[p],h=m.length,f,x=0;x<h;++x)(f=m[x])&&Eh(f,t,n,x,m,r||qN(f,n));return new $l(s,this._parents,t,n)}Wp.prototype.interrupt=Vw;Wp.prototype.transition=HN;const Fm=t=>()=>t;function WN(t,{sourceEvent:n,target:r,transform:s,dispatch:l}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:s,enumerable:!0,configurable:!0},_:{value:l}})}function zl(t,n,r){this.k=t,this.x=n,this.y=r}zl.prototype={constructor:zl,scale:function(t){return t===1?this:new zl(this.k*t,this.x,this.y)},translate:function(t,n){return t===0&n===0?this:new zl(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Ll=new zl(1,0,0);zl.prototype;function tf(t){t.stopImmediatePropagation()}function pp(t){t.preventDefault(),t.stopImmediatePropagation()}function GN(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function JN(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function ux(){return this.__zoom||Ll}function KN(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function QN(){return navigator.maxTouchPoints||"ontouchstart"in this}function XN(t,n,r){var s=t.invertX(n[0][0])-r[0][0],l=t.invertX(n[1][0])-r[1][0],p=t.invertY(n[0][1])-r[0][1],m=t.invertY(n[1][1])-r[1][1];return t.translate(l>s?(s+l)/2:Math.min(0,s)||Math.max(0,l),m>p?(p+m)/2:Math.min(0,p)||Math.max(0,m))}function sy(){var t=GN,n=JN,r=XN,s=KN,l=QN,p=[0,1/0],m=[[-1/0,-1/0],[1/0,1/0]],h=250,f=Ow,x=Sh("start","zoom","end"),j,w,N,C=500,E=150,T=0,R=10;function D(M){M.property("__zoom",ux).on("wheel.zoom",oe,{passive:!1}).on("mousedown.zoom",Q).on("dblclick.zoom",fe).filter(l).on("touchstart.zoom",xe).on("touchmove.zoom",ye).on("touchend.zoom touchcancel.zoom",le).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}D.transform=function(M,ee,H,se){var G=M.selection?M.selection():M;G.property("__zoom",ux),M!==G?Y(M,ee,H,se):G.interrupt().each(function(){ne(this,arguments).event(se).start().zoom(null,typeof ee=="function"?ee.apply(this,arguments):ee).end()})},D.scaleBy=function(M,ee,H,se){D.scaleTo(M,function(){var G=this.__zoom.k,V=typeof ee=="function"?ee.apply(this,arguments):ee;return G*V},H,se)},D.scaleTo=function(M,ee,H,se){D.transform(M,function(){var G=n.apply(this,arguments),V=this.__zoom,K=H==null?F(G):typeof H=="function"?H.apply(this,arguments):H,P=V.invert(K),O=typeof ee=="function"?ee.apply(this,arguments):ee;return r(I(q(V,O),K,P),G,m)},H,se)},D.translateBy=function(M,ee,H,se){D.transform(M,function(){return r(this.__zoom.translate(typeof ee=="function"?ee.apply(this,arguments):ee,typeof H=="function"?H.apply(this,arguments):H),n.apply(this,arguments),m)},null,se)},D.translateTo=function(M,ee,H,se,G){D.transform(M,function(){var V=n.apply(this,arguments),K=this.__zoom,P=se==null?F(V):typeof se=="function"?se.apply(this,arguments):se;return r(Ll.translate(P[0],P[1]).scale(K.k).translate(typeof ee=="function"?-ee.apply(this,arguments):-ee,typeof H=="function"?-H.apply(this,arguments):-H),V,m)},se,G)};function q(M,ee){return ee=Math.max(p[0],Math.min(p[1],ee)),ee===M.k?M:new zl(ee,M.x,M.y)}function I(M,ee,H){var se=ee[0]-H[0]*M.k,G=ee[1]-H[1]*M.k;return se===M.x&&G===M.y?M:new zl(M.k,se,G)}function F(M){return[(+M[0][0]+ +M[1][0])/2,(+M[0][1]+ +M[1][1])/2]}function Y(M,ee,H,se){M.on("start.zoom",function(){ne(this,arguments).event(se).start()}).on("interrupt.zoom end.zoom",function(){ne(this,arguments).event(se).end()}).tween("zoom",function(){var G=this,V=arguments,K=ne(G,V).event(se),P=n.apply(G,V),O=H==null?F(P):typeof H=="function"?H.apply(G,V):H,ve=Math.max(P[1][0]-P[0][0],P[1][1]-P[0][1]),ge=G.__zoom,be=typeof ee=="function"?ee.apply(G,V):ee,Ce=f(ge.invert(O).concat(ve/ge.k),be.invert(O).concat(ve/be.k));return function($){if($===1)$=be;else{var z=Ce($),Z=ve/z[2];$=new zl(Z,O[0]-z[0]*Z,O[1]-z[1]*Z)}K.zoom(null,$)}})}function ne(M,ee,H){return!H&&M.__zooming||new ae(M,ee)}function ae(M,ee){this.that=M,this.args=ee,this.active=0,this.sourceEvent=null,this.extent=n.apply(M,ee),this.taps=0}ae.prototype={event:function(M){return M&&(this.sourceEvent=M),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(M,ee){return this.mouse&&M!=="mouse"&&(this.mouse[1]=ee.invert(this.mouse[0])),this.touch0&&M!=="touch"&&(this.touch0[1]=ee.invert(this.touch0[0])),this.touch1&&M!=="touch"&&(this.touch1[1]=ee.invert(this.touch1[0])),this.that.__zoom=ee,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(M){var ee=Kr(this.that).datum();x.call(M,this.that,new WN(M,{sourceEvent:this.sourceEvent,target:D,transform:this.that.__zoom,dispatch:x}),ee)}};function oe(M,...ee){if(!t.apply(this,arguments))return;var H=ne(this,ee).event(M),se=this.__zoom,G=Math.max(p[0],Math.min(p[1],se.k*Math.pow(2,s.apply(this,arguments)))),V=Xs(M);if(H.wheel)(H.mouse[0][0]!==V[0]||H.mouse[0][1]!==V[1])&&(H.mouse[1]=se.invert(H.mouse[0]=V)),clearTimeout(H.wheel);else{if(se.k===G)return;H.mouse=[V,se.invert(V)],ah(this),H.start()}pp(M),H.wheel=setTimeout(K,E),H.zoom("mouse",r(I(q(se,G),H.mouse[0],H.mouse[1]),H.extent,m));function K(){H.wheel=null,H.end()}}function Q(M,...ee){if(N||!t.apply(this,arguments))return;var H=M.currentTarget,se=ne(this,ee,!0).event(M),G=Kr(M.view).on("mousemove.zoom",O,!0).on("mouseup.zoom",ve,!0),V=Xs(M,H),K=M.clientX,P=M.clientY;qv(M.view),tf(M),se.mouse=[V,this.__zoom.invert(V)],ah(this),se.start();function O(ge){if(pp(ge),!se.moved){var be=ge.clientX-K,Ce=ge.clientY-P;se.moved=be*be+Ce*Ce>T}se.event(ge).zoom("mouse",r(I(se.that.__zoom,se.mouse[0]=Xs(ge,H),se.mouse[1]),se.extent,m))}function ve(ge){G.on("mousemove.zoom mouseup.zoom",null),Hv(ge.view,se.moved),pp(ge),se.event(ge).end()}}function fe(M,...ee){if(t.apply(this,arguments)){var H=this.__zoom,se=Xs(M.changedTouches?M.changedTouches[0]:M,this),G=H.invert(se),V=H.k*(M.shiftKey?.5:2),K=r(I(q(H,V),se,G),n.apply(this,ee),m);pp(M),h>0?Kr(this).transition().duration(h).call(Y,K,se,M):Kr(this).call(D.transform,K,se,M)}}function xe(M,...ee){if(t.apply(this,arguments)){var H=M.touches,se=H.length,G=ne(this,ee,M.changedTouches.length===se).event(M),V,K,P,O;for(tf(M),K=0;K<se;++K)P=H[K],O=Xs(P,this),O=[O,this.__zoom.invert(O),P.identifier],G.touch0?!G.touch1&&G.touch0[2]!==O[2]&&(G.touch1=O,G.taps=0):(G.touch0=O,V=!0,G.taps=1+!!j);j&&(j=clearTimeout(j)),V&&(G.taps<2&&(w=O[0],j=setTimeout(function(){j=null},C)),ah(this),G.start())}}function ye(M,...ee){if(this.__zooming){var H=ne(this,ee).event(M),se=M.changedTouches,G=se.length,V,K,P,O;for(pp(M),V=0;V<G;++V)K=se[V],P=Xs(K,this),H.touch0&&H.touch0[2]===K.identifier?H.touch0[0]=P:H.touch1&&H.touch1[2]===K.identifier&&(H.touch1[0]=P);if(K=H.that.__zoom,H.touch1){var ve=H.touch0[0],ge=H.touch0[1],be=H.touch1[0],Ce=H.touch1[1],$=($=be[0]-ve[0])*$+($=be[1]-ve[1])*$,z=(z=Ce[0]-ge[0])*z+(z=Ce[1]-ge[1])*z;K=q(K,Math.sqrt($/z)),P=[(ve[0]+be[0])/2,(ve[1]+be[1])/2],O=[(ge[0]+Ce[0])/2,(ge[1]+Ce[1])/2]}else if(H.touch0)P=H.touch0[0],O=H.touch0[1];else return;H.zoom("touch",r(I(K,P,O),H.extent,m))}}function le(M,...ee){if(this.__zooming){var H=ne(this,ee).event(M),se=M.changedTouches,G=se.length,V,K;for(tf(M),N&&clearTimeout(N),N=setTimeout(function(){N=null},C),V=0;V<G;++V)K=se[V],H.touch0&&H.touch0[2]===K.identifier?delete H.touch0:H.touch1&&H.touch1[2]===K.identifier&&delete H.touch1;if(H.touch1&&!H.touch0&&(H.touch0=H.touch1,delete H.touch1),H.touch0)H.touch0[1]=this.__zoom.invert(H.touch0[0]);else if(H.end(),H.taps===2&&(K=Xs(K,this),Math.hypot(w[0]-K[0],w[1]-K[1])<R)){var P=Kr(this).on("dblclick.zoom");P&&P.apply(this,arguments)}}}return D.wheelDelta=function(M){return arguments.length?(s=typeof M=="function"?M:Fm(+M),D):s},D.filter=function(M){return arguments.length?(t=typeof M=="function"?M:Fm(!!M),D):t},D.touchable=function(M){return arguments.length?(l=typeof M=="function"?M:Fm(!!M),D):l},D.extent=function(M){return arguments.length?(n=typeof M=="function"?M:Fm([[+M[0][0],+M[0][1]],[+M[1][0],+M[1][1]]]),D):n},D.scaleExtent=function(M){return arguments.length?(p[0]=+M[0],p[1]=+M[1],D):[p[0],p[1]]},D.translateExtent=function(M){return arguments.length?(m[0][0]=+M[0][0],m[1][0]=+M[1][0],m[0][1]=+M[0][1],m[1][1]=+M[1][1],D):[[m[0][0],m[0][1]],[m[1][0],m[1][1]]]},D.constrain=function(M){return arguments.length?(r=M,D):r},D.duration=function(M){return arguments.length?(h=+M,D):h},D.interpolate=function(M){return arguments.length?(f=M,D):f},D.on=function(){var M=x.on.apply(x,arguments);return M===x?D:M},D.clickDistance=function(M){return arguments.length?(T=(M=+M)*M,D):Math.sqrt(T)},D.tapDistance=function(M){return arguments.length?(R=+M,D):R},D}var YN=Tv();const Mh=b.createContext(null),ZN=Mh.Provider,Bl={error001:()=>"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:t=>`Node type "${t}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:t=>`The old edge with id=${t} does not exist.`,error009:t=>`Marker type "${t}" doesn't exist.`,error008:(t,n)=>`Couldn't create edge for ${t?"target":"source"} handle id: "${t?n.targetHandle:n.sourceHandle}", edge id: ${n.id}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:t=>`Edge type "${t}" not found. Using fallback type "default".`,error012:t=>`Node with id "${t}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`},iy=Bl.error001();function on(t,n){const r=b.useContext(Mh);if(r===null)throw new Error(iy);return Iv(r,t,n)}const po=()=>{const t=b.useContext(Mh);if(t===null)throw new Error(iy);return b.useMemo(()=>({getState:t.getState,setState:t.setState,subscribe:t.subscribe,destroy:t.destroy}),[t])},e1=t=>t.userSelectionActive?"none":"all";function zp({position:t,children:n,className:r,style:s,...l}){const p=on(e1),m=`${t}`.split("-");return me.createElement("div",{className:Go(["react-flow__panel",r,...m]),style:{...s,pointerEvents:p},...l},n)}function t1({proOptions:t,position:n="bottom-right"}){return t!=null&&t.hideAttribution?null:me.createElement(zp,{position:n,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://reactflow.dev/pro"},me.createElement("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution"},"React Flow"))}const n1=({x:t,y:n,label:r,labelStyle:s={},labelShowBg:l=!0,labelBgStyle:p={},labelBgPadding:m=[2,4],labelBgBorderRadius:h=2,children:f,className:x,...j})=>{const w=b.useRef(null),[N,C]=b.useState({x:0,y:0,width:0,height:0}),E=Go(["react-flow__edge-textwrapper",x]);return b.useEffect(()=>{if(w.current){const T=w.current.getBBox();C({x:T.x,y:T.y,width:T.width,height:T.height})}},[r]),typeof r>"u"||!r?null:me.createElement("g",{transform:`translate(${t-N.width/2} ${n-N.height/2})`,className:E,visibility:N.width?"visible":"hidden",...j},l&&me.createElement("rect",{width:N.width+2*m[0],x:-m[0],y:-m[1],height:N.height+2*m[1],className:"react-flow__edge-textbg",style:p,rx:h,ry:h}),me.createElement("text",{className:"react-flow__edge-text",y:N.height/2,dy:"0.3em",ref:w,style:s},r),f)};var o1=b.memo(n1);const cg=t=>({width:t.offsetWidth,height:t.offsetHeight}),Lc=(t,n=0,r=1)=>Math.min(Math.max(t,n),r),ug=(t={x:0,y:0},n)=>({x:Lc(t.x,n[0][0],n[1][0]),y:Lc(t.y,n[0][1],n[1][1])}),dx=(t,n,r)=>t<n?Lc(Math.abs(t-n),1,50)/50:t>r?-Lc(Math.abs(t-r),1,50)/50:0,ly=(t,n)=>{const r=dx(t.x,35,n.width-35)*20,s=dx(t.y,35,n.height-35)*20;return[r,s]},cy=t=>{var n;return((n=t.getRootNode)==null?void 0:n.call(t))||(window==null?void 0:window.document)},uy=(t,n)=>({x:Math.min(t.x,n.x),y:Math.min(t.y,n.y),x2:Math.max(t.x2,n.x2),y2:Math.max(t.y2,n.y2)}),Lp=({x:t,y:n,width:r,height:s})=>({x:t,y:n,x2:t+r,y2:n+s}),dy=({x:t,y:n,x2:r,y2:s})=>({x:t,y:n,width:r-t,height:s-n}),px=t=>({...t.positionAbsolute||{x:0,y:0},width:t.width||0,height:t.height||0}),a1=(t,n)=>dy(uy(Lp(t),Lp(n))),_f=(t,n)=>{const r=Math.max(0,Math.min(t.x+t.width,n.x+n.width)-Math.max(t.x,n.x)),s=Math.max(0,Math.min(t.y+t.height,n.y+n.height)-Math.max(t.y,n.y));return Math.ceil(r*s)},r1=t=>Cs(t.width)&&Cs(t.height)&&Cs(t.x)&&Cs(t.y),Cs=t=>!isNaN(t)&&isFinite(t),Pn=Symbol.for("internals"),py=["Enter"," ","Escape"],s1=(t,n)=>{},i1=t=>"nativeEvent"in t;function Of(t){var l,p;const n=i1(t)?t.nativeEvent:t,r=((p=(l=n.composedPath)==null?void 0:l.call(n))==null?void 0:p[0])||t.target;return["INPUT","SELECT","TEXTAREA"].includes(r==null?void 0:r.nodeName)||(r==null?void 0:r.hasAttribute("contenteditable"))||!!(r!=null&&r.closest(".nokey"))}const my=t=>"clientX"in t,Fc=(t,n)=>{var p,m;const r=my(t),s=r?t.clientX:(p=t.touches)==null?void 0:p[0].clientX,l=r?t.clientY:(m=t.touches)==null?void 0:m[0].clientY;return{x:s-((n==null?void 0:n.left)??0),y:l-((n==null?void 0:n.top)??0)}},fh=()=>{var t;return typeof navigator<"u"&&((t=navigator==null?void 0:navigator.userAgent)==null?void 0:t.indexOf("Mac"))>=0},Jp=({id:t,path:n,labelX:r,labelY:s,label:l,labelStyle:p,labelShowBg:m,labelBgStyle:h,labelBgPadding:f,labelBgBorderRadius:x,style:j,markerEnd:w,markerStart:N,interactionWidth:C=20})=>me.createElement(me.Fragment,null,me.createElement("path",{id:t,style:j,d:n,fill:"none",className:"react-flow__edge-path",markerEnd:w,markerStart:N}),C&&me.createElement("path",{d:n,fill:"none",strokeOpacity:0,strokeWidth:C,className:"react-flow__edge-interaction"}),l&&Cs(r)&&Cs(s)?me.createElement(o1,{x:r,y:s,label:l,labelStyle:p,labelShowBg:m,labelBgStyle:h,labelBgPadding:f,labelBgBorderRadius:x}):null);Jp.displayName="BaseEdge";function mp(t,n,r){return r===void 0?r:s=>{const l=n().edges.find(p=>p.id===t);l&&r(s,{...l})}}function hy({sourceX:t,sourceY:n,targetX:r,targetY:s}){const l=Math.abs(r-t)/2,p=r<t?r+l:r-l,m=Math.abs(s-n)/2,h=s<n?s+m:s-m;return[p,h,l,m]}function fy({sourceX:t,sourceY:n,targetX:r,targetY:s,sourceControlX:l,sourceControlY:p,targetControlX:m,targetControlY:h}){const f=t*.125+l*.375+m*.375+r*.125,x=n*.125+p*.375+h*.375+s*.125,j=Math.abs(f-t),w=Math.abs(x-n);return[f,x,j,w]}var Bu;(function(t){t.Strict="strict",t.Loose="loose"})(Bu||(Bu={}));var Ru;(function(t){t.Free="free",t.Vertical="vertical",t.Horizontal="horizontal"})(Ru||(Ru={}));var Dp;(function(t){t.Partial="partial",t.Full="full"})(Dp||(Dp={}));var Rc;(function(t){t.Bezier="default",t.Straight="straight",t.Step="step",t.SmoothStep="smoothstep",t.SimpleBezier="simplebezier"})(Rc||(Rc={}));var $p;(function(t){t.Arrow="arrow",t.ArrowClosed="arrowclosed"})($p||($p={}));var nt;(function(t){t.Left="left",t.Top="top",t.Right="right",t.Bottom="bottom"})(nt||(nt={}));function mx({pos:t,x1:n,y1:r,x2:s,y2:l}){return t===nt.Left||t===nt.Right?[.5*(n+s),r]:[n,.5*(r+l)]}function gy({sourceX:t,sourceY:n,sourcePosition:r=nt.Bottom,targetX:s,targetY:l,targetPosition:p=nt.Top}){const[m,h]=mx({pos:r,x1:t,y1:n,x2:s,y2:l}),[f,x]=mx({pos:p,x1:s,y1:l,x2:t,y2:n}),[j,w,N,C]=fy({sourceX:t,sourceY:n,targetX:s,targetY:l,sourceControlX:m,sourceControlY:h,targetControlX:f,targetControlY:x});return[`M${t},${n} C${m},${h} ${f},${x} ${s},${l}`,j,w,N,C]}const dg=b.memo(({sourceX:t,sourceY:n,targetX:r,targetY:s,sourcePosition:l=nt.Bottom,targetPosition:p=nt.Top,label:m,labelStyle:h,labelShowBg:f,labelBgStyle:x,labelBgPadding:j,labelBgBorderRadius:w,style:N,markerEnd:C,markerStart:E,interactionWidth:T})=>{const[R,D,q]=gy({sourceX:t,sourceY:n,sourcePosition:l,targetX:r,targetY:s,targetPosition:p});return me.createElement(Jp,{path:R,labelX:D,labelY:q,label:m,labelStyle:h,labelShowBg:f,labelBgStyle:x,labelBgPadding:j,labelBgBorderRadius:w,style:N,markerEnd:C,markerStart:E,interactionWidth:T})});dg.displayName="SimpleBezierEdge";const hx={[nt.Left]:{x:-1,y:0},[nt.Right]:{x:1,y:0},[nt.Top]:{x:0,y:-1},[nt.Bottom]:{x:0,y:1}},l1=({source:t,sourcePosition:n=nt.Bottom,target:r})=>n===nt.Left||n===nt.Right?t.x<r.x?{x:1,y:0}:{x:-1,y:0}:t.y<r.y?{x:0,y:1}:{x:0,y:-1},fx=(t,n)=>Math.sqrt(Math.pow(n.x-t.x,2)+Math.pow(n.y-t.y,2));function c1({source:t,sourcePosition:n=nt.Bottom,target:r,targetPosition:s=nt.Top,center:l,offset:p}){const m=hx[n],h=hx[s],f={x:t.x+m.x*p,y:t.y+m.y*p},x={x:r.x+h.x*p,y:r.y+h.y*p},j=l1({source:f,sourcePosition:n,target:x}),w=j.x!==0?"x":"y",N=j[w];let C=[],E,T;const R={x:0,y:0},D={x:0,y:0},[q,I,F,Y]=hy({sourceX:t.x,sourceY:t.y,targetX:r.x,targetY:r.y});if(m[w]*h[w]===-1){E=l.x??q,T=l.y??I;const ae=[{x:E,y:f.y},{x:E,y:x.y}],oe=[{x:f.x,y:T},{x:x.x,y:T}];m[w]===N?C=w==="x"?ae:oe:C=w==="x"?oe:ae}else{const ae=[{x:f.x,y:x.y}],oe=[{x:x.x,y:f.y}];if(w==="x"?C=m.x===N?oe:ae:C=m.y===N?ae:oe,n===s){const le=Math.abs(t[w]-r[w]);if(le<=p){const M=Math.min(p-1,p-le);m[w]===N?R[w]=(f[w]>t[w]?-1:1)*M:D[w]=(x[w]>r[w]?-1:1)*M}}if(n!==s){const le=w==="x"?"y":"x",M=m[w]===h[le],ee=f[le]>x[le],H=f[le]<x[le];(m[w]===1&&(!M&&ee||M&&H)||m[w]!==1&&(!M&&H||M&&ee))&&(C=w==="x"?ae:oe)}const Q={x:f.x+R.x,y:f.y+R.y},fe={x:x.x+D.x,y:x.y+D.y},xe=Math.max(Math.abs(Q.x-C[0].x),Math.abs(fe.x-C[0].x)),ye=Math.max(Math.abs(Q.y-C[0].y),Math.abs(fe.y-C[0].y));xe>=ye?(E=(Q.x+fe.x)/2,T=C[0].y):(E=C[0].x,T=(Q.y+fe.y)/2)}return[[t,{x:f.x+R.x,y:f.y+R.y},...C,{x:x.x+D.x,y:x.y+D.y},r],E,T,F,Y]}function u1(t,n,r,s){const l=Math.min(fx(t,n)/2,fx(n,r)/2,s),{x:p,y:m}=n;if(t.x===p&&p===r.x||t.y===m&&m===r.y)return`L${p} ${m}`;if(t.y===m){const x=t.x<r.x?-1:1,j=t.y<r.y?1:-1;return`L ${p+l*x},${m}Q ${p},${m} ${p},${m+l*j}`}const h=t.x<r.x?1:-1,f=t.y<r.y?-1:1;return`L ${p},${m+l*f}Q ${p},${m} ${p+l*h},${m}`}function Rf({sourceX:t,sourceY:n,sourcePosition:r=nt.Bottom,targetX:s,targetY:l,targetPosition:p=nt.Top,borderRadius:m=5,centerX:h,centerY:f,offset:x=20}){const[j,w,N,C,E]=c1({source:{x:t,y:n},sourcePosition:r,target:{x:s,y:l},targetPosition:p,center:{x:h,y:f},offset:x});return[j.reduce((R,D,q)=>{let I="";return q>0&&q<j.length-1?I=u1(j[q-1],D,j[q+1],m):I=`${q===0?"M":"L"}${D.x} ${D.y}`,R+=I,R},""),w,N,C,E]}const Th=b.memo(({sourceX:t,sourceY:n,targetX:r,targetY:s,label:l,labelStyle:p,labelShowBg:m,labelBgStyle:h,labelBgPadding:f,labelBgBorderRadius:x,style:j,sourcePosition:w=nt.Bottom,targetPosition:N=nt.Top,markerEnd:C,markerStart:E,pathOptions:T,interactionWidth:R})=>{const[D,q,I]=Rf({sourceX:t,sourceY:n,sourcePosition:w,targetX:r,targetY:s,targetPosition:N,borderRadius:T==null?void 0:T.borderRadius,offset:T==null?void 0:T.offset});return me.createElement(Jp,{path:D,labelX:q,labelY:I,label:l,labelStyle:p,labelShowBg:m,labelBgStyle:h,labelBgPadding:f,labelBgBorderRadius:x,style:j,markerEnd:C,markerStart:E,interactionWidth:R})});Th.displayName="SmoothStepEdge";const pg=b.memo(t=>{var n;return me.createElement(Th,{...t,pathOptions:b.useMemo(()=>{var r;return{borderRadius:0,offset:(r=t.pathOptions)==null?void 0:r.offset}},[(n=t.pathOptions)==null?void 0:n.offset])})});pg.displayName="StepEdge";function d1({sourceX:t,sourceY:n,targetX:r,targetY:s}){const[l,p,m,h]=hy({sourceX:t,sourceY:n,targetX:r,targetY:s});return[`M ${t},${n}L ${r},${s}`,l,p,m,h]}const mg=b.memo(({sourceX:t,sourceY:n,targetX:r,targetY:s,label:l,labelStyle:p,labelShowBg:m,labelBgStyle:h,labelBgPadding:f,labelBgBorderRadius:x,style:j,markerEnd:w,markerStart:N,interactionWidth:C})=>{const[E,T,R]=d1({sourceX:t,sourceY:n,targetX:r,targetY:s});return me.createElement(Jp,{path:E,labelX:T,labelY:R,label:l,labelStyle:p,labelShowBg:m,labelBgStyle:h,labelBgPadding:f,labelBgBorderRadius:x,style:j,markerEnd:w,markerStart:N,interactionWidth:C})});mg.displayName="StraightEdge";function zm(t,n){return t>=0?.5*t:n*25*Math.sqrt(-t)}function gx({pos:t,x1:n,y1:r,x2:s,y2:l,c:p}){switch(t){case nt.Left:return[n-zm(n-s,p),r];case nt.Right:return[n+zm(s-n,p),r];case nt.Top:return[n,r-zm(r-l,p)];case nt.Bottom:return[n,r+zm(l-r,p)]}}function hg({sourceX:t,sourceY:n,sourcePosition:r=nt.Bottom,targetX:s,targetY:l,targetPosition:p=nt.Top,curvature:m=.25}){const[h,f]=gx({pos:r,x1:t,y1:n,x2:s,y2:l,c:m}),[x,j]=gx({pos:p,x1:s,y1:l,x2:t,y2:n,c:m}),[w,N,C,E]=fy({sourceX:t,sourceY:n,targetX:s,targetY:l,sourceControlX:h,sourceControlY:f,targetControlX:x,targetControlY:j});return[`M${t},${n} C${h},${f} ${x},${j} ${s},${l}`,w,N,C,E]}const gh=b.memo(({sourceX:t,sourceY:n,targetX:r,targetY:s,sourcePosition:l=nt.Bottom,targetPosition:p=nt.Top,label:m,labelStyle:h,labelShowBg:f,labelBgStyle:x,labelBgPadding:j,labelBgBorderRadius:w,style:N,markerEnd:C,markerStart:E,pathOptions:T,interactionWidth:R})=>{const[D,q,I]=hg({sourceX:t,sourceY:n,sourcePosition:l,targetX:r,targetY:s,targetPosition:p,curvature:T==null?void 0:T.curvature});return me.createElement(Jp,{path:D,labelX:q,labelY:I,label:m,labelStyle:h,labelShowBg:f,labelBgStyle:x,labelBgPadding:j,labelBgBorderRadius:w,style:N,markerEnd:C,markerStart:E,interactionWidth:R})});gh.displayName="BezierEdge";const fg=b.createContext(null),p1=fg.Provider;fg.Consumer;const xy=()=>b.useContext(fg),m1=t=>"id"in t&&"source"in t&&"target"in t,h1=({source:t,sourceHandle:n,target:r,targetHandle:s})=>`reactflow__edge-${t}${n||""}-${r}${s||""}`,Ff=(t,n)=>typeof t>"u"?"":typeof t=="string"?t:`${n?`${n}__`:""}${Object.keys(t).sort().map(s=>`${s}=${t[s]}`).join("&")}`,f1=(t,n)=>n.some(r=>r.source===t.source&&r.target===t.target&&(r.sourceHandle===t.sourceHandle||!r.sourceHandle&&!t.sourceHandle)&&(r.targetHandle===t.targetHandle||!r.targetHandle&&!t.targetHandle)),g1=(t,n)=>{if(!t.source||!t.target)return n;let r;return m1(t)?r={...t}:r={...t,id:h1(t)},f1(r,n)?n:n.concat(r)},zf=({x:t,y:n},[r,s,l],p,[m,h])=>{const f={x:(t-r)/l,y:(n-s)/l};return p?{x:m*Math.round(f.x/m),y:h*Math.round(f.y/h)}:f},vy=({x:t,y:n},[r,s,l])=>({x:t*l+r,y:n*l+s}),Lu=(t,n=[0,0])=>{if(!t)return{x:0,y:0,positionAbsolute:{x:0,y:0}};const r=(t.width??0)*n[0],s=(t.height??0)*n[1],l={x:t.position.x-r,y:t.position.y-s};return{...l,positionAbsolute:t.positionAbsolute?{x:t.positionAbsolute.x-r,y:t.positionAbsolute.y-s}:l}},Ih=(t,n=[0,0])=>{if(t.length===0)return{x:0,y:0,width:0,height:0};const r=t.reduce((s,l)=>{const{x:p,y:m}=Lu(l,n).positionAbsolute;return uy(s,Lp({x:p,y:m,width:l.width||0,height:l.height||0}))},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return dy(r)},yy=(t,n,[r,s,l]=[0,0,1],p=!1,m=!1,h=[0,0])=>{const f={x:(n.x-r)/l,y:(n.y-s)/l,width:n.width/l,height:n.height/l},x=[];return t.forEach(j=>{const{width:w,height:N,selectable:C=!0,hidden:E=!1}=j;if(m&&!C||E)return!1;const{positionAbsolute:T}=Lu(j,h),R={x:T.x,y:T.y,width:w||0,height:N||0},D=_f(f,R),q=typeof w>"u"||typeof N>"u"||w===null||N===null,I=p&&D>0,F=(w||0)*(N||0);(q||I||D>=F||j.dragging)&&x.push(j)}),x},jy=(t,n)=>{const r=t.map(s=>s.id);return n.filter(s=>r.includes(s.source)||r.includes(s.target))},by=(t,n,r,s,l,p=.1)=>{const m=n/(t.width*(1+p)),h=r/(t.height*(1+p)),f=Math.min(m,h),x=Lc(f,s,l),j=t.x+t.width/2,w=t.y+t.height/2,N=n/2-j*x,C=r/2-w*x;return{x:N,y:C,zoom:x}},Tu=(t,n=0)=>t.transition().duration(n);function xx(t,n,r,s){return(n[r]||[]).reduce((l,p)=>{var m,h;return`${t.id}-${p.id}-${r}`!==s&&l.push({id:p.id||null,type:r,nodeId:t.id,x:(((m=t.positionAbsolute)==null?void 0:m.x)??0)+p.x+p.width/2,y:(((h=t.positionAbsolute)==null?void 0:h.y)??0)+p.y+p.height/2}),l},[])}function x1(t,n,r,s,l,p){const{x:m,y:h}=Fc(t),x=n.elementsFromPoint(m,h).find(E=>E.classList.contains("react-flow__handle"));if(x){const E=x.getAttribute("data-nodeid");if(E){const T=gg(void 0,x),R=x.getAttribute("data-handleid"),D=p({nodeId:E,id:R,type:T});if(D){const q=l.find(I=>I.nodeId===E&&I.type===T&&I.id===R);return{handle:{id:R,type:T,nodeId:E,x:(q==null?void 0:q.x)||r.x,y:(q==null?void 0:q.y)||r.y},validHandleResult:D}}}}let j=[],w=1/0;if(l.forEach(E=>{const T=Math.sqrt((E.x-r.x)**2+(E.y-r.y)**2);if(T<=s){const R=p(E);T<=w&&(T<w?j=[{handle:E,validHandleResult:R}]:T===w&&j.push({handle:E,validHandleResult:R}),w=T)}}),!j.length)return{handle:null,validHandleResult:wy()};if(j.length===1)return j[0];const N=j.some(({validHandleResult:E})=>E.isValid),C=j.some(({handle:E})=>E.type==="target");return j.find(({handle:E,validHandleResult:T})=>C?E.type==="target":N?T.isValid:!0)||j[0]}const v1={source:null,target:null,sourceHandle:null,targetHandle:null},wy=()=>({handleDomNode:null,isValid:!1,connection:v1,endHandle:null});function Ny(t,n,r,s,l,p,m){const h=l==="target",f=m.querySelector(`.react-flow__handle[data-id="${t==null?void 0:t.nodeId}-${t==null?void 0:t.id}-${t==null?void 0:t.type}"]`),x={...wy(),handleDomNode:f};if(f){const j=gg(void 0,f),w=f.getAttribute("data-nodeid"),N=f.getAttribute("data-handleid"),C=f.classList.contains("connectable"),E=f.classList.contains("connectableend"),T={source:h?w:r,sourceHandle:h?N:s,target:h?r:w,targetHandle:h?s:N};x.connection=T,C&&E&&(n===Bu.Strict?h&&j==="source"||!h&&j==="target":w!==r||N!==s)&&(x.endHandle={nodeId:w,handleId:N,type:j},x.isValid=p(T))}return x}function y1({nodes:t,nodeId:n,handleId:r,handleType:s}){return t.reduce((l,p)=>{if(p[Pn]){const{handleBounds:m}=p[Pn];let h=[],f=[];m&&(h=xx(p,m,"source",`${n}-${r}-${s}`),f=xx(p,m,"target",`${n}-${r}-${s}`)),l.push(...h,...f)}return l},[])}function gg(t,n){return t||(n!=null&&n.classList.contains("target")?"target":n!=null&&n.classList.contains("source")?"source":null)}function nf(t){t==null||t.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function j1(t,n){let r=null;return n?r="valid":t&&!n&&(r="invalid"),r}function Cy({event:t,handleId:n,nodeId:r,onConnect:s,isTarget:l,getState:p,setState:m,isValidConnection:h,edgeUpdaterType:f,onReconnectEnd:x}){const j=cy(t.target),{connectionMode:w,domNode:N,autoPanOnConnect:C,connectionRadius:E,onConnectStart:T,panBy:R,getNodes:D,cancelConnection:q}=p();let I=0,F;const{x:Y,y:ne}=Fc(t),ae=j==null?void 0:j.elementFromPoint(Y,ne),oe=gg(f,ae),Q=N==null?void 0:N.getBoundingClientRect();if(!Q||!oe)return;let fe,xe=Fc(t,Q),ye=!1,le=null,M=!1,ee=null;const H=y1({nodes:D(),nodeId:r,handleId:n,handleType:oe}),se=()=>{if(!C)return;const[K,P]=ly(xe,Q);R({x:K,y:P}),I=requestAnimationFrame(se)};m({connectionPosition:xe,connectionStatus:null,connectionNodeId:r,connectionHandleId:n,connectionHandleType:oe,connectionStartHandle:{nodeId:r,handleId:n,type:oe},connectionEndHandle:null}),T==null||T(t,{nodeId:r,handleId:n,handleType:oe});function G(K){const{transform:P}=p();xe=Fc(K,Q);const{handle:O,validHandleResult:ve}=x1(K,j,zf(xe,P,!1,[1,1]),E,H,ge=>Ny(ge,w,r,n,l?"target":"source",h,j));if(F=O,ye||(se(),ye=!0),ee=ve.handleDomNode,le=ve.connection,M=ve.isValid,m({connectionPosition:F&&M?vy({x:F.x,y:F.y},P):xe,connectionStatus:j1(!!F,M),connectionEndHandle:ve.endHandle}),!F&&!M&&!ee)return nf(fe);le.source!==le.target&&ee&&(nf(fe),fe=ee,ee.classList.add("connecting","react-flow__handle-connecting"),ee.classList.toggle("valid",M),ee.classList.toggle("react-flow__handle-valid",M))}function V(K){var P,O;(F||ee)&&le&&M&&(s==null||s(le)),(O=(P=p()).onConnectEnd)==null||O.call(P,K),f&&(x==null||x(K)),nf(fe),q(),cancelAnimationFrame(I),ye=!1,M=!1,le=null,ee=null,j.removeEventListener("mousemove",G),j.removeEventListener("mouseup",V),j.removeEventListener("touchmove",G),j.removeEventListener("touchend",V)}j.addEventListener("mousemove",G),j.addEventListener("mouseup",V),j.addEventListener("touchmove",G),j.addEventListener("touchend",V)}const vx=()=>!0,b1=t=>({connectionStartHandle:t.connectionStartHandle,connectOnClick:t.connectOnClick,noPanClassName:t.noPanClassName}),w1=(t,n,r)=>s=>{const{connectionStartHandle:l,connectionEndHandle:p,connectionClickStartHandle:m}=s;return{connecting:(l==null?void 0:l.nodeId)===t&&(l==null?void 0:l.handleId)===n&&(l==null?void 0:l.type)===r||(p==null?void 0:p.nodeId)===t&&(p==null?void 0:p.handleId)===n&&(p==null?void 0:p.type)===r,clickConnecting:(m==null?void 0:m.nodeId)===t&&(m==null?void 0:m.handleId)===n&&(m==null?void 0:m.type)===r}},Sy=b.forwardRef(({type:t="source",position:n=nt.Top,isValidConnection:r,isConnectable:s=!0,isConnectableStart:l=!0,isConnectableEnd:p=!0,id:m,onConnect:h,children:f,className:x,onMouseDown:j,onTouchStart:w,...N},C)=>{var Q,fe;const E=m||null,T=t==="target",R=po(),D=xy(),{connectOnClick:q,noPanClassName:I}=on(b1,Wo),{connecting:F,clickConnecting:Y}=on(w1(D,E,t),Wo);D||(fe=(Q=R.getState()).onError)==null||fe.call(Q,"010",Bl.error010());const ne=xe=>{const{defaultEdgeOptions:ye,onConnect:le,hasDefaultEdges:M}=R.getState(),ee={...ye,...xe};if(M){const{edges:H,setEdges:se}=R.getState();se(g1(ee,H))}le==null||le(ee),h==null||h(ee)},ae=xe=>{if(!D)return;const ye=my(xe);l&&(ye&&xe.button===0||!ye)&&Cy({event:xe,handleId:E,nodeId:D,onConnect:ne,isTarget:T,getState:R.getState,setState:R.setState,isValidConnection:r||R.getState().isValidConnection||vx}),ye?j==null||j(xe):w==null||w(xe)},oe=xe=>{const{onClickConnectStart:ye,onClickConnectEnd:le,connectionClickStartHandle:M,connectionMode:ee,isValidConnection:H}=R.getState();if(!D||!M&&!l)return;if(!M){ye==null||ye(xe,{nodeId:D,handleId:E,handleType:t}),R.setState({connectionClickStartHandle:{nodeId:D,type:t,handleId:E}});return}const se=cy(xe.target),G=r||H||vx,{connection:V,isValid:K}=Ny({nodeId:D,id:E,type:t},ee,M.nodeId,M.handleId||null,M.type,G,se);K&&ne(V),le==null||le(xe),R.setState({connectionClickStartHandle:null})};return me.createElement("div",{"data-handleid":E,"data-nodeid":D,"data-handlepos":n,"data-id":`${D}-${E}-${t}`,className:Go(["react-flow__handle",`react-flow__handle-${n}`,"nodrag",I,x,{source:!T,target:T,connectable:s,connectablestart:l,connectableend:p,connecting:Y,connectionindicator:s&&(l&&!F||p&&F)}]),onMouseDown:ae,onTouchStart:ae,onClick:q?oe:void 0,ref:C,...N},f)});Sy.displayName="Handle";var Ld=b.memo(Sy);const ky=({data:t,isConnectable:n,targetPosition:r=nt.Top,sourcePosition:s=nt.Bottom})=>me.createElement(me.Fragment,null,me.createElement(Ld,{type:"target",position:r,isConnectable:n}),t==null?void 0:t.label,me.createElement(Ld,{type:"source",position:s,isConnectable:n}));ky.displayName="DefaultNode";var Lf=b.memo(ky);const Ay=({data:t,isConnectable:n,sourcePosition:r=nt.Bottom})=>me.createElement(me.Fragment,null,t==null?void 0:t.label,me.createElement(Ld,{type:"source",position:r,isConnectable:n}));Ay.displayName="InputNode";var Ey=b.memo(Ay);const My=({data:t,isConnectable:n,targetPosition:r=nt.Top})=>me.createElement(me.Fragment,null,me.createElement(Ld,{type:"target",position:r,isConnectable:n}),t==null?void 0:t.label);My.displayName="OutputNode";var Ty=b.memo(My);const xg=()=>null;xg.displayName="GroupNode";const N1=t=>({selectedNodes:t.getNodes().filter(n=>n.selected),selectedEdges:t.edges.filter(n=>n.selected).map(n=>({...n}))}),Lm=t=>t.id;function C1(t,n){return Wo(t.selectedNodes.map(Lm),n.selectedNodes.map(Lm))&&Wo(t.selectedEdges.map(Lm),n.selectedEdges.map(Lm))}const Iy=b.memo(({onSelectionChange:t})=>{const n=po(),{selectedNodes:r,selectedEdges:s}=on(N1,C1);return b.useEffect(()=>{const l={nodes:r,edges:s};t==null||t(l),n.getState().onSelectionChange.forEach(p=>p(l))},[r,s,t]),null});Iy.displayName="SelectionListener";const S1=t=>!!t.onSelectionChange;function k1({onSelectionChange:t}){const n=on(S1);return t||n?me.createElement(Iy,{onSelectionChange:t}):null}const A1=t=>({setNodes:t.setNodes,setEdges:t.setEdges,setDefaultNodesAndEdges:t.setDefaultNodesAndEdges,setMinZoom:t.setMinZoom,setMaxZoom:t.setMaxZoom,setTranslateExtent:t.setTranslateExtent,setNodeExtent:t.setNodeExtent,reset:t.reset});function fd(t,n){b.useEffect(()=>{typeof t<"u"&&n(t)},[t])}function wt(t,n,r){b.useEffect(()=>{typeof n<"u"&&r({[t]:n})},[n])}const E1=({nodes:t,edges:n,defaultNodes:r,defaultEdges:s,onConnect:l,onConnectStart:p,onConnectEnd:m,onClickConnectStart:h,onClickConnectEnd:f,nodesDraggable:x,nodesConnectable:j,nodesFocusable:w,edgesFocusable:N,edgesUpdatable:C,elevateNodesOnSelect:E,minZoom:T,maxZoom:R,nodeExtent:D,onNodesChange:q,onEdgesChange:I,elementsSelectable:F,connectionMode:Y,snapGrid:ne,snapToGrid:ae,translateExtent:oe,connectOnClick:Q,defaultEdgeOptions:fe,fitView:xe,fitViewOptions:ye,onNodesDelete:le,onEdgesDelete:M,onNodeDrag:ee,onNodeDragStart:H,onNodeDragStop:se,onSelectionDrag:G,onSelectionDragStart:V,onSelectionDragStop:K,noPanClassName:P,nodeOrigin:O,rfId:ve,autoPanOnConnect:ge,autoPanOnNodeDrag:be,onError:Ce,connectionRadius:$,isValidConnection:z,nodeDragThreshold:Z})=>{const{setNodes:he,setEdges:Be,setDefaultNodesAndEdges:at,setMinZoom:gt,setMaxZoom:ht,setTranslateExtent:mt,setNodeExtent:Et,reset:Ye}=on(A1,Wo),Pe=po();return b.useEffect(()=>{const Ze=s==null?void 0:s.map(Ct=>({...Ct,...fe}));return at(r,Ze),()=>{Ye()}},[]),wt("defaultEdgeOptions",fe,Pe.setState),wt("connectionMode",Y,Pe.setState),wt("onConnect",l,Pe.setState),wt("onConnectStart",p,Pe.setState),wt("onConnectEnd",m,Pe.setState),wt("onClickConnectStart",h,Pe.setState),wt("onClickConnectEnd",f,Pe.setState),wt("nodesDraggable",x,Pe.setState),wt("nodesConnectable",j,Pe.setState),wt("nodesFocusable",w,Pe.setState),wt("edgesFocusable",N,Pe.setState),wt("edgesUpdatable",C,Pe.setState),wt("elementsSelectable",F,Pe.setState),wt("elevateNodesOnSelect",E,Pe.setState),wt("snapToGrid",ae,Pe.setState),wt("snapGrid",ne,Pe.setState),wt("onNodesChange",q,Pe.setState),wt("onEdgesChange",I,Pe.setState),wt("connectOnClick",Q,Pe.setState),wt("fitViewOnInit",xe,Pe.setState),wt("fitViewOnInitOptions",ye,Pe.setState),wt("onNodesDelete",le,Pe.setState),wt("onEdgesDelete",M,Pe.setState),wt("onNodeDrag",ee,Pe.setState),wt("onNodeDragStart",H,Pe.setState),wt("onNodeDragStop",se,Pe.setState),wt("onSelectionDrag",G,Pe.setState),wt("onSelectionDragStart",V,Pe.setState),wt("onSelectionDragStop",K,Pe.setState),wt("noPanClassName",P,Pe.setState),wt("nodeOrigin",O,Pe.setState),wt("rfId",ve,Pe.setState),wt("autoPanOnConnect",ge,Pe.setState),wt("autoPanOnNodeDrag",be,Pe.setState),wt("onError",Ce,Pe.setState),wt("connectionRadius",$,Pe.setState),wt("isValidConnection",z,Pe.setState),wt("nodeDragThreshold",Z,Pe.setState),fd(t,he),fd(n,Be),fd(T,gt),fd(R,ht),fd(oe,mt),fd(D,Et),null},yx={display:"none"},M1={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},Py="react-flow__node-desc",_y="react-flow__edge-desc",T1="react-flow__aria-live",I1=t=>t.ariaLiveMessage;function P1({rfId:t}){const n=on(I1);return me.createElement("div",{id:`${T1}-${t}`,"aria-live":"assertive","aria-atomic":"true",style:M1},n)}function _1({rfId:t,disableKeyboardA11y:n}){return me.createElement(me.Fragment,null,me.createElement("div",{id:`${Py}-${t}`,style:yx},"Press enter or space to select a node.",!n&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "),me.createElement("div",{id:`${_y}-${t}`,style:yx},"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."),!n&&me.createElement(P1,{rfId:t}))}var Bp=(t=null,n={actInsideInputWithModifier:!0})=>{const[r,s]=b.useState(!1),l=b.useRef(!1),p=b.useRef(new Set([])),[m,h]=b.useMemo(()=>{if(t!==null){const x=(Array.isArray(t)?t:[t]).filter(w=>typeof w=="string").map(w=>w.split("+")),j=x.reduce((w,N)=>w.concat(...N),[]);return[x,j]}return[[],[]]},[t]);return b.useEffect(()=>{const f=typeof document<"u"?document:null,x=(n==null?void 0:n.target)||f;if(t!==null){const j=C=>{if(l.current=C.ctrlKey||C.metaKey||C.shiftKey,(!l.current||l.current&&!n.actInsideInputWithModifier)&&Of(C))return!1;const T=bx(C.code,h);p.current.add(C[T]),jx(m,p.current,!1)&&(C.preventDefault(),s(!0))},w=C=>{if((!l.current||l.current&&!n.actInsideInputWithModifier)&&Of(C))return!1;const T=bx(C.code,h);jx(m,p.current,!0)?(s(!1),p.current.clear()):p.current.delete(C[T]),C.key==="Meta"&&p.current.clear(),l.current=!1},N=()=>{p.current.clear(),s(!1)};return x==null||x.addEventListener("keydown",j),x==null||x.addEventListener("keyup",w),window.addEventListener("blur",N),()=>{x==null||x.removeEventListener("keydown",j),x==null||x.removeEventListener("keyup",w),window.removeEventListener("blur",N)}}},[t,s]),r};function jx(t,n,r){return t.filter(s=>r||s.length===n.size).some(s=>s.every(l=>n.has(l)))}function bx(t,n){return n.includes(t)?"code":"key"}function Oy(t,n,r,s){var h,f;const l=t.parentNode||t.parentId;if(!l)return r;const p=n.get(l),m=Lu(p,s);return Oy(p,n,{x:(r.x??0)+m.x,y:(r.y??0)+m.y,z:(((h=p[Pn])==null?void 0:h.z)??0)>(r.z??0)?((f=p[Pn])==null?void 0:f.z)??0:r.z??0},s)}function Ry(t,n,r){t.forEach(s=>{var p;const l=s.parentNode||s.parentId;if(l&&!t.has(l))throw new Error(`Parent node ${l} not found`);if(l||r!=null&&r[s.id]){const{x:m,y:h,z:f}=Oy(s,t,{...s.position,z:((p=s[Pn])==null?void 0:p.z)??0},n);s.positionAbsolute={x:m,y:h},s[Pn].z=f,r!=null&&r[s.id]&&(s[Pn].isParent=!0)}})}function of(t,n,r,s){const l=new Map,p={},m=s?1e3:0;return t.forEach(h=>{var C;const f=(Cs(h.zIndex)?h.zIndex:0)+(h.selected?m:0),x=n.get(h.id),j={...h,positionAbsolute:{x:h.position.x,y:h.position.y}},w=h.parentNode||h.parentId;w&&(p[w]=!0);const N=(x==null?void 0:x.type)&&(x==null?void 0:x.type)!==h.type;Object.defineProperty(j,Pn,{enumerable:!1,value:{handleBounds:N||(C=x==null?void 0:x[Pn])==null?void 0:C.handleBounds,z:f}}),l.set(h.id,j)}),Ry(l,r,p),l}function Fy(t,n={}){const{getNodes:r,width:s,height:l,minZoom:p,maxZoom:m,d3Zoom:h,d3Selection:f,fitViewOnInitDone:x,fitViewOnInit:j,nodeOrigin:w}=t(),N=n.initial&&!x&&j;if(h&&f&&(N||!n.initial)){const E=r().filter(R=>{var q;const D=n.includeHiddenNodes?R.width&&R.height:!R.hidden;return(q=n.nodes)!=null&&q.length?D&&n.nodes.some(I=>I.id===R.id):D}),T=E.every(R=>R.width&&R.height);if(E.length>0&&T){const R=Ih(E,w),{x:D,y:q,zoom:I}=by(R,s,l,n.minZoom??p,n.maxZoom??m,n.padding??.1),F=Ll.translate(D,q).scale(I);return typeof n.duration=="number"&&n.duration>0?h.transform(Tu(f,n.duration),F):h.transform(f,F),!0}}return!1}function O1(t,n){return t.forEach(r=>{const s=n.get(r.id);s&&n.set(s.id,{...s,[Pn]:s[Pn],selected:r.selected})}),new Map(n)}function R1(t,n){return n.map(r=>{const s=t.find(l=>l.id===r.id);return s&&(r.selected=s.selected),r})}function Dm({changedNodes:t,changedEdges:n,get:r,set:s}){const{nodeInternals:l,edges:p,onNodesChange:m,onEdgesChange:h,hasDefaultNodes:f,hasDefaultEdges:x}=r();t!=null&&t.length&&(f&&s({nodeInternals:O1(t,l)}),m==null||m(t)),n!=null&&n.length&&(x&&s({edges:R1(n,p)}),h==null||h(n))}const gd=()=>{},F1={zoomIn:gd,zoomOut:gd,zoomTo:gd,getZoom:()=>1,setViewport:gd,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:gd,fitBounds:gd,project:t=>t,screenToFlowPosition:t=>t,flowToScreenPosition:t=>t,viewportInitialized:!1},z1=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection}),L1=()=>{const t=po(),{d3Zoom:n,d3Selection:r}=on(z1,Wo);return b.useMemo(()=>r&&n?{zoomIn:l=>n.scaleBy(Tu(r,l==null?void 0:l.duration),1.2),zoomOut:l=>n.scaleBy(Tu(r,l==null?void 0:l.duration),1/1.2),zoomTo:(l,p)=>n.scaleTo(Tu(r,p==null?void 0:p.duration),l),getZoom:()=>t.getState().transform[2],setViewport:(l,p)=>{const[m,h,f]=t.getState().transform,x=Ll.translate(l.x??m,l.y??h).scale(l.zoom??f);n.transform(Tu(r,p==null?void 0:p.duration),x)},getViewport:()=>{const[l,p,m]=t.getState().transform;return{x:l,y:p,zoom:m}},fitView:l=>Fy(t.getState,l),setCenter:(l,p,m)=>{const{width:h,height:f,maxZoom:x}=t.getState(),j=typeof(m==null?void 0:m.zoom)<"u"?m.zoom:x,w=h/2-l*j,N=f/2-p*j,C=Ll.translate(w,N).scale(j);n.transform(Tu(r,m==null?void 0:m.duration),C)},fitBounds:(l,p)=>{const{width:m,height:h,minZoom:f,maxZoom:x}=t.getState(),{x:j,y:w,zoom:N}=by(l,m,h,f,x,(p==null?void 0:p.padding)??.1),C=Ll.translate(j,w).scale(N);n.transform(Tu(r,p==null?void 0:p.duration),C)},project:l=>{const{transform:p,snapToGrid:m,snapGrid:h}=t.getState();return console.warn("[DEPRECATED] `project` is deprecated. Instead use `screenToFlowPosition`. There is no need to subtract the react flow bounds anymore! https://reactflow.dev/api-reference/types/react-flow-instance#screen-to-flow-position"),zf(l,p,m,h)},screenToFlowPosition:l=>{const{transform:p,snapToGrid:m,snapGrid:h,domNode:f}=t.getState();if(!f)return l;const{x,y:j}=f.getBoundingClientRect(),w={x:l.x-x,y:l.y-j};return zf(w,p,m,h)},flowToScreenPosition:l=>{const{transform:p,domNode:m}=t.getState();if(!m)return l;const{x:h,y:f}=m.getBoundingClientRect(),x=vy(l,p);return{x:x.x+h,y:x.y+f}},viewportInitialized:!0}:F1,[n,r])};function vg(){const t=L1(),n=po(),r=b.useCallback(()=>n.getState().getNodes().map(T=>({...T})),[]),s=b.useCallback(T=>n.getState().nodeInternals.get(T),[]),l=b.useCallback(()=>{const{edges:T=[]}=n.getState();return T.map(R=>({...R}))},[]),p=b.useCallback(T=>{const{edges:R=[]}=n.getState();return R.find(D=>D.id===T)},[]),m=b.useCallback(T=>{const{getNodes:R,setNodes:D,hasDefaultNodes:q,onNodesChange:I}=n.getState(),F=R(),Y=typeof T=="function"?T(F):T;if(q)D(Y);else if(I){const ne=Y.length===0?F.map(ae=>({type:"remove",id:ae.id})):Y.map(ae=>({item:ae,type:"reset"}));I(ne)}},[]),h=b.useCallback(T=>{const{edges:R=[],setEdges:D,hasDefaultEdges:q,onEdgesChange:I}=n.getState(),F=typeof T=="function"?T(R):T;if(q)D(F);else if(I){const Y=F.length===0?R.map(ne=>({type:"remove",id:ne.id})):F.map(ne=>({item:ne,type:"reset"}));I(Y)}},[]),f=b.useCallback(T=>{const R=Array.isArray(T)?T:[T],{getNodes:D,setNodes:q,hasDefaultNodes:I,onNodesChange:F}=n.getState();if(I){const ne=[...D(),...R];q(ne)}else if(F){const Y=R.map(ne=>({item:ne,type:"add"}));F(Y)}},[]),x=b.useCallback(T=>{const R=Array.isArray(T)?T:[T],{edges:D=[],setEdges:q,hasDefaultEdges:I,onEdgesChange:F}=n.getState();if(I)q([...D,...R]);else if(F){const Y=R.map(ne=>({item:ne,type:"add"}));F(Y)}},[]),j=b.useCallback(()=>{const{getNodes:T,edges:R=[],transform:D}=n.getState(),[q,I,F]=D;return{nodes:T().map(Y=>({...Y})),edges:R.map(Y=>({...Y})),viewport:{x:q,y:I,zoom:F}}},[]),w=b.useCallback(({nodes:T,edges:R})=>{const{nodeInternals:D,getNodes:q,edges:I,hasDefaultNodes:F,hasDefaultEdges:Y,onNodesDelete:ne,onEdgesDelete:ae,onNodesChange:oe,onEdgesChange:Q}=n.getState(),fe=(T||[]).map(ee=>ee.id),xe=(R||[]).map(ee=>ee.id),ye=q().reduce((ee,H)=>{const se=H.parentNode||H.parentId,G=!fe.includes(H.id)&&se&&ee.find(K=>K.id===se);return(typeof H.deletable=="boolean"?H.deletable:!0)&&(fe.includes(H.id)||G)&&ee.push(H),ee},[]),le=I.filter(ee=>typeof ee.deletable=="boolean"?ee.deletable:!0),M=le.filter(ee=>xe.includes(ee.id));if(ye||M){const ee=jy(ye,le),H=[...M,...ee],se=H.reduce((G,V)=>(G.includes(V.id)||G.push(V.id),G),[]);if((Y||F)&&(Y&&n.setState({edges:I.filter(G=>!se.includes(G.id))}),F&&(ye.forEach(G=>{D.delete(G.id)}),n.setState({nodeInternals:new Map(D)}))),se.length>0&&(ae==null||ae(H),Q&&Q(se.map(G=>({id:G,type:"remove"})))),ye.length>0&&(ne==null||ne(ye),oe)){const G=ye.map(V=>({id:V.id,type:"remove"}));oe(G)}}},[]),N=b.useCallback(T=>{const R=r1(T),D=R?null:n.getState().nodeInternals.get(T.id);return!R&&!D?[null,null,R]:[R?T:px(D),D,R]},[]),C=b.useCallback((T,R=!0,D)=>{const[q,I,F]=N(T);return q?(D||n.getState().getNodes()).filter(Y=>{if(!F&&(Y.id===I.id||!Y.positionAbsolute))return!1;const ne=px(Y),ae=_f(ne,q);return R&&ae>0||ae>=q.width*q.height}):[]},[]),E=b.useCallback((T,R,D=!0)=>{const[q]=N(T);if(!q)return!1;const I=_f(q,R);return D&&I>0||I>=q.width*q.height},[]);return b.useMemo(()=>({...t,getNodes:r,getNode:s,getEdges:l,getEdge:p,setNodes:m,setEdges:h,addNodes:f,addEdges:x,toObject:j,deleteElements:w,getIntersectingNodes:C,isNodeIntersecting:E}),[t,r,s,l,p,m,h,f,x,j,w,C,E])}const D1={actInsideInputWithModifier:!1};var $1=({deleteKeyCode:t,multiSelectionKeyCode:n})=>{const r=po(),{deleteElements:s}=vg(),l=Bp(t,D1),p=Bp(n);b.useEffect(()=>{if(l){const{edges:m,getNodes:h}=r.getState(),f=h().filter(j=>j.selected),x=m.filter(j=>j.selected);s({nodes:f,edges:x}),r.setState({nodesSelectionActive:!1})}},[l]),b.useEffect(()=>{r.setState({multiSelectionActive:p})},[p])};function B1(t){const n=po();b.useEffect(()=>{let r;const s=()=>{var p,m;if(!t.current)return;const l=cg(t.current);(l.height===0||l.width===0)&&((m=(p=n.getState()).onError)==null||m.call(p,"004",Bl.error004())),n.setState({width:l.width||500,height:l.height||500})};return s(),window.addEventListener("resize",s),t.current&&(r=new ResizeObserver(()=>s()),r.observe(t.current)),()=>{window.removeEventListener("resize",s),r&&t.current&&r.unobserve(t.current)}},[])}const yg={position:"absolute",width:"100%",height:"100%",top:0,left:0},V1=(t,n)=>t.x!==n.x||t.y!==n.y||t.zoom!==n.k,$m=t=>({x:t.x,y:t.y,zoom:t.k}),xd=(t,n)=>t.target.closest(`.${n}`),wx=(t,n)=>n===2&&Array.isArray(t)&&t.includes(2),Nx=t=>{const n=t.ctrlKey&&fh()?10:1;return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*n},U1=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection,d3ZoomHandler:t.d3ZoomHandler,userSelectionActive:t.userSelectionActive}),q1=({onMove:t,onMoveStart:n,onMoveEnd:r,onPaneContextMenu:s,zoomOnScroll:l=!0,zoomOnPinch:p=!0,panOnScroll:m=!1,panOnScrollSpeed:h=.5,panOnScrollMode:f=Ru.Free,zoomOnDoubleClick:x=!0,elementsSelectable:j,panOnDrag:w=!0,defaultViewport:N,translateExtent:C,minZoom:E,maxZoom:T,zoomActivationKeyCode:R,preventScrolling:D=!0,children:q,noWheelClassName:I,noPanClassName:F})=>{const Y=b.useRef(),ne=po(),ae=b.useRef(!1),oe=b.useRef(!1),Q=b.useRef(null),fe=b.useRef({x:0,y:0,zoom:0}),{d3Zoom:xe,d3Selection:ye,d3ZoomHandler:le,userSelectionActive:M}=on(U1,Wo),ee=Bp(R),H=b.useRef(0),se=b.useRef(!1),G=b.useRef();return B1(Q),b.useEffect(()=>{if(Q.current){const V=Q.current.getBoundingClientRect(),K=sy().scaleExtent([E,T]).translateExtent(C),P=Kr(Q.current).call(K),O=Ll.translate(N.x,N.y).scale(Lc(N.zoom,E,T)),ve=[[0,0],[V.width,V.height]],ge=K.constrain()(O,ve,C);K.transform(P,ge),K.wheelDelta(Nx),ne.setState({d3Zoom:K,d3Selection:P,d3ZoomHandler:P.on("wheel.zoom"),transform:[ge.x,ge.y,ge.k],domNode:Q.current.closest(".react-flow")})}},[]),b.useEffect(()=>{ye&&xe&&(m&&!ee&&!M?ye.on("wheel.zoom",V=>{if(xd(V,I))return!1;V.preventDefault(),V.stopImmediatePropagation();const K=ye.property("__zoom").k||1;if(V.ctrlKey&&p){const z=Xs(V),Z=Nx(V),he=K*Math.pow(2,Z);xe.scaleTo(ye,he,z,V);return}const P=V.deltaMode===1?20:1;let O=f===Ru.Vertical?0:V.deltaX*P,ve=f===Ru.Horizontal?0:V.deltaY*P;!fh()&&V.shiftKey&&f!==Ru.Vertical&&(O=V.deltaY*P,ve=0),xe.translateBy(ye,-(O/K)*h,-(ve/K)*h,{internal:!0});const ge=$m(ye.property("__zoom")),{onViewportChangeStart:be,onViewportChange:Ce,onViewportChangeEnd:$}=ne.getState();clearTimeout(G.current),se.current||(se.current=!0,n==null||n(V,ge),be==null||be(ge)),se.current&&(t==null||t(V,ge),Ce==null||Ce(ge),G.current=setTimeout(()=>{r==null||r(V,ge),$==null||$(ge),se.current=!1},150))},{passive:!1}):typeof le<"u"&&ye.on("wheel.zoom",function(V,K){if(!D&&V.type==="wheel"&&!V.ctrlKey||xd(V,I))return null;V.preventDefault(),le.call(this,V,K)},{passive:!1}))},[M,m,f,ye,xe,le,ee,p,D,I,n,t,r]),b.useEffect(()=>{xe&&xe.on("start",V=>{var O,ve;if(!V.sourceEvent||V.sourceEvent.internal)return null;H.current=(O=V.sourceEvent)==null?void 0:O.button;const{onViewportChangeStart:K}=ne.getState(),P=$m(V.transform);ae.current=!0,fe.current=P,((ve=V.sourceEvent)==null?void 0:ve.type)==="mousedown"&&ne.setState({paneDragging:!0}),K==null||K(P),n==null||n(V.sourceEvent,P)})},[xe,n]),b.useEffect(()=>{xe&&(M&&!ae.current?xe.on("zoom",null):M||xe.on("zoom",V=>{var P;const{onViewportChange:K}=ne.getState();if(ne.setState({transform:[V.transform.x,V.transform.y,V.transform.k]}),oe.current=!!(s&&wx(w,H.current??0)),(t||K)&&!((P=V.sourceEvent)!=null&&P.internal)){const O=$m(V.transform);K==null||K(O),t==null||t(V.sourceEvent,O)}}))},[M,xe,t,w,s]),b.useEffect(()=>{xe&&xe.on("end",V=>{if(!V.sourceEvent||V.sourceEvent.internal)return null;const{onViewportChangeEnd:K}=ne.getState();if(ae.current=!1,ne.setState({paneDragging:!1}),s&&wx(w,H.current??0)&&!oe.current&&s(V.sourceEvent),oe.current=!1,(r||K)&&V1(fe.current,V.transform)){const P=$m(V.transform);fe.current=P,clearTimeout(Y.current),Y.current=setTimeout(()=>{K==null||K(P),r==null||r(V.sourceEvent,P)},m?150:0)}})},[xe,m,w,r,s]),b.useEffect(()=>{xe&&xe.filter(V=>{const K=ee||l,P=p&&V.ctrlKey;if((w===!0||Array.isArray(w)&&w.includes(1))&&V.button===1&&V.type==="mousedown"&&(xd(V,"react-flow__node")||xd(V,"react-flow__edge")))return!0;if(!w&&!K&&!m&&!x&&!p||M||!x&&V.type==="dblclick"||xd(V,I)&&V.type==="wheel"||xd(V,F)&&(V.type!=="wheel"||m&&V.type==="wheel"&&!ee)||!p&&V.ctrlKey&&V.type==="wheel"||!K&&!m&&!P&&V.type==="wheel"||!w&&(V.type==="mousedown"||V.type==="touchstart")||Array.isArray(w)&&!w.includes(V.button)&&V.type==="mousedown")return!1;const O=Array.isArray(w)&&w.includes(V.button)||!V.button||V.button<=1;return(!V.ctrlKey||V.type==="wheel")&&O})},[M,xe,l,p,m,x,w,j,ee]),me.createElement("div",{className:"react-flow__renderer",ref:Q,style:yg},q)},H1=t=>({userSelectionActive:t.userSelectionActive,userSelectionRect:t.userSelectionRect});function W1(){const{userSelectionActive:t,userSelectionRect:n}=on(H1,Wo);return t&&n?me.createElement("div",{className:"react-flow__selection react-flow__container",style:{width:n.width,height:n.height,transform:`translate(${n.x}px, ${n.y}px)`}}):null}function Cx(t,n){const r=n.parentNode||n.parentId,s=t.find(l=>l.id===r);if(s){const l=n.position.x+n.width-s.width,p=n.position.y+n.height-s.height;if(l>0||p>0||n.position.x<0||n.position.y<0){if(s.style={...s.style},s.style.width=s.style.width??s.width,s.style.height=s.style.height??s.height,l>0&&(s.style.width+=l),p>0&&(s.style.height+=p),n.position.x<0){const m=Math.abs(n.position.x);s.position.x=s.position.x-m,s.style.width+=m,n.position.x=0}if(n.position.y<0){const m=Math.abs(n.position.y);s.position.y=s.position.y-m,s.style.height+=m,n.position.y=0}s.width=s.style.width,s.height=s.style.height}}}function G1(t,n){if(t.some(s=>s.type==="reset"))return t.filter(s=>s.type==="reset").map(s=>s.item);const r=t.filter(s=>s.type==="add").map(s=>s.item);return n.reduce((s,l)=>{const p=t.filter(h=>h.id===l.id);if(p.length===0)return s.push(l),s;const m={...l};for(const h of p)if(h)switch(h.type){case"select":{m.selected=h.selected;break}case"position":{typeof h.position<"u"&&(m.position=h.position),typeof h.positionAbsolute<"u"&&(m.positionAbsolute=h.positionAbsolute),typeof h.dragging<"u"&&(m.dragging=h.dragging),m.expandParent&&Cx(s,m);break}case"dimensions":{typeof h.dimensions<"u"&&(m.width=h.dimensions.width,m.height=h.dimensions.height),typeof h.updateStyle<"u"&&(m.style={...m.style||{},...h.dimensions}),typeof h.resizing=="boolean"&&(m.resizing=h.resizing),m.expandParent&&Cx(s,m);break}case"remove":return s}return s.push(m),s},r)}function zy(t,n){return G1(t,n)}const _c=(t,n)=>({id:t,type:"select",selected:n});function kd(t,n){return t.reduce((r,s)=>{const l=n.includes(s.id);return!s.selected&&l?(s.selected=!0,r.push(_c(s.id,!0))):s.selected&&!l&&(s.selected=!1,r.push(_c(s.id,!1))),r},[])}const af=(t,n)=>r=>{r.target===n.current&&(t==null||t(r))},J1=t=>({userSelectionActive:t.userSelectionActive,elementsSelectable:t.elementsSelectable,dragging:t.paneDragging}),Ly=b.memo(({isSelecting:t,selectionMode:n=Dp.Full,panOnDrag:r,onSelectionStart:s,onSelectionEnd:l,onPaneClick:p,onPaneContextMenu:m,onPaneScroll:h,onPaneMouseEnter:f,onPaneMouseMove:x,onPaneMouseLeave:j,children:w})=>{const N=b.useRef(null),C=po(),E=b.useRef(0),T=b.useRef(0),R=b.useRef(),{userSelectionActive:D,elementsSelectable:q,dragging:I}=on(J1,Wo),F=()=>{C.setState({userSelectionActive:!1,userSelectionRect:null}),E.current=0,T.current=0},Y=le=>{p==null||p(le),C.getState().resetSelectedElements(),C.setState({nodesSelectionActive:!1})},ne=le=>{if(Array.isArray(r)&&(r!=null&&r.includes(2))){le.preventDefault();return}m==null||m(le)},ae=h?le=>h(le):void 0,oe=le=>{const{resetSelectedElements:M,domNode:ee}=C.getState();if(R.current=ee==null?void 0:ee.getBoundingClientRect(),!q||!t||le.button!==0||le.target!==N.current||!R.current)return;const{x:H,y:se}=Fc(le,R.current);M(),C.setState({userSelectionRect:{width:0,height:0,startX:H,startY:se,x:H,y:se}}),s==null||s(le)},Q=le=>{const{userSelectionRect:M,nodeInternals:ee,edges:H,transform:se,onNodesChange:G,onEdgesChange:V,nodeOrigin:K,getNodes:P}=C.getState();if(!t||!R.current||!M)return;C.setState({userSelectionActive:!0,nodesSelectionActive:!1});const O=Fc(le,R.current),ve=M.startX??0,ge=M.startY??0,be={...M,x:O.x<ve?O.x:ve,y:O.y<ge?O.y:ge,width:Math.abs(O.x-ve),height:Math.abs(O.y-ge)},Ce=P(),$=yy(ee,be,se,n===Dp.Partial,!0,K),z=jy($,H).map(he=>he.id),Z=$.map(he=>he.id);if(E.current!==Z.length){E.current=Z.length;const he=kd(Ce,Z);he.length&&(G==null||G(he))}if(T.current!==z.length){T.current=z.length;const he=kd(H,z);he.length&&(V==null||V(he))}C.setState({userSelectionRect:be})},fe=le=>{if(le.button!==0)return;const{userSelectionRect:M}=C.getState();!D&&M&&le.target===N.current&&(Y==null||Y(le)),C.setState({nodesSelectionActive:E.current>0}),F(),l==null||l(le)},xe=le=>{D&&(C.setState({nodesSelectionActive:E.current>0}),l==null||l(le)),F()},ye=q&&(t||D);return me.createElement("div",{className:Go(["react-flow__pane",{dragging:I,selection:t}]),onClick:ye?void 0:af(Y,N),onContextMenu:af(ne,N),onWheel:af(ae,N),onMouseEnter:ye?void 0:f,onMouseDown:ye?oe:void 0,onMouseMove:ye?Q:x,onMouseUp:ye?fe:void 0,onMouseLeave:ye?xe:j,ref:N,style:yg},w,me.createElement(W1,null))});Ly.displayName="Pane";function Dy(t,n){const r=t.parentNode||t.parentId;if(!r)return!1;const s=n.get(r);return s?s.selected?!0:Dy(s,n):!1}function Sx(t,n,r){let s=t;do{if(s!=null&&s.matches(n))return!0;if(s===r.current)return!1;s=s.parentElement}while(s);return!1}function K1(t,n,r,s){return Array.from(t.values()).filter(l=>(l.selected||l.id===s)&&(!l.parentNode||l.parentId||!Dy(l,t))&&(l.draggable||n&&typeof l.draggable>"u")).map(l=>{var p,m;return{id:l.id,position:l.position||{x:0,y:0},positionAbsolute:l.positionAbsolute||{x:0,y:0},distance:{x:r.x-(((p=l.positionAbsolute)==null?void 0:p.x)??0),y:r.y-(((m=l.positionAbsolute)==null?void 0:m.y)??0)},delta:{x:0,y:0},extent:l.extent,parentNode:l.parentNode||l.parentId,parentId:l.parentNode||l.parentId,width:l.width,height:l.height,expandParent:l.expandParent}})}function Q1(t,n){return!n||n==="parent"?n:[n[0],[n[1][0]-(t.width||0),n[1][1]-(t.height||0)]]}function $y(t,n,r,s,l=[0,0],p){const m=Q1(t,t.extent||s);let h=m;const f=t.parentNode||t.parentId;if(t.extent==="parent"&&!t.expandParent)if(f&&t.width&&t.height){const w=r.get(f),{x:N,y:C}=Lu(w,l).positionAbsolute;h=w&&Cs(N)&&Cs(C)&&Cs(w.width)&&Cs(w.height)?[[N+t.width*l[0],C+t.height*l[1]],[N+w.width-t.width+t.width*l[0],C+w.height-t.height+t.height*l[1]]]:h}else p==null||p("005",Bl.error005()),h=m;else if(t.extent&&f&&t.extent!=="parent"){const w=r.get(f),{x:N,y:C}=Lu(w,l).positionAbsolute;h=[[t.extent[0][0]+N,t.extent[0][1]+C],[t.extent[1][0]+N,t.extent[1][1]+C]]}let x={x:0,y:0};if(f){const w=r.get(f);x=Lu(w,l).positionAbsolute}const j=h&&h!=="parent"?ug(n,h):n;return{position:{x:j.x-x.x,y:j.y-x.y},positionAbsolute:j}}function rf({nodeId:t,dragItems:n,nodeInternals:r}){const s=n.map(l=>({...r.get(l.id),position:l.position,positionAbsolute:l.positionAbsolute}));return[t?s.find(l=>l.id===t):s[0],s]}const kx=(t,n,r,s)=>{const l=n.querySelectorAll(t);if(!l||!l.length)return null;const p=Array.from(l),m=n.getBoundingClientRect(),h={x:m.width*s[0],y:m.height*s[1]};return p.map(f=>{const x=f.getBoundingClientRect();return{id:f.getAttribute("data-handleid"),position:f.getAttribute("data-handlepos"),x:(x.left-m.left-h.x)/r,y:(x.top-m.top-h.y)/r,...cg(f)}})};function hp(t,n,r){return r===void 0?r:s=>{const l=n().nodeInternals.get(t);l&&r(s,{...l})}}function Df({id:t,store:n,unselect:r=!1,nodeRef:s}){const{addSelectedNodes:l,unselectNodesAndEdges:p,multiSelectionActive:m,nodeInternals:h,onError:f}=n.getState(),x=h.get(t);if(!x){f==null||f("012",Bl.error012(t));return}n.setState({nodesSelectionActive:!1}),x.selected?(r||x.selected&&m)&&(p({nodes:[x],edges:[]}),requestAnimationFrame(()=>{var j;return(j=s==null?void 0:s.current)==null?void 0:j.blur()})):l([t])}function By(){const t=po();return b.useCallback(({sourceEvent:r})=>{const{transform:s,snapGrid:l,snapToGrid:p}=t.getState(),m=r.touches?r.touches[0].clientX:r.clientX,h=r.touches?r.touches[0].clientY:r.clientY,f={x:(m-s[0])/s[2],y:(h-s[1])/s[2]};return{xSnapped:p?l[0]*Math.round(f.x/l[0]):f.x,ySnapped:p?l[1]*Math.round(f.y/l[1]):f.y,...f}},[])}function sf(t){return(n,r,s)=>t==null?void 0:t(n,s)}function Vy({nodeRef:t,disabled:n=!1,noDragClassName:r,handleSelector:s,nodeId:l,isSelectable:p,selectNodesOnDrag:m}){const h=po(),[f,x]=b.useState(!1),j=b.useRef([]),w=b.useRef({x:null,y:null}),N=b.useRef(0),C=b.useRef(null),E=b.useRef({x:0,y:0}),T=b.useRef(null),R=b.useRef(!1),D=b.useRef(!1),q=b.useRef(!1),I=By();return b.useEffect(()=>{if(t!=null&&t.current){const F=Kr(t.current),Y=({x:oe,y:Q})=>{const{nodeInternals:fe,onNodeDrag:xe,onSelectionDrag:ye,updateNodePositions:le,nodeExtent:M,snapGrid:ee,snapToGrid:H,nodeOrigin:se,onError:G}=h.getState();w.current={x:oe,y:Q};let V=!1,K={x:0,y:0,x2:0,y2:0};if(j.current.length>1&&M){const O=Ih(j.current,se);K=Lp(O)}if(j.current=j.current.map(O=>{const ve={x:oe-O.distance.x,y:Q-O.distance.y};H&&(ve.x=ee[0]*Math.round(ve.x/ee[0]),ve.y=ee[1]*Math.round(ve.y/ee[1]));const ge=[[M[0][0],M[0][1]],[M[1][0],M[1][1]]];j.current.length>1&&M&&!O.extent&&(ge[0][0]=O.positionAbsolute.x-K.x+M[0][0],ge[1][0]=O.positionAbsolute.x+(O.width??0)-K.x2+M[1][0],ge[0][1]=O.positionAbsolute.y-K.y+M[0][1],ge[1][1]=O.positionAbsolute.y+(O.height??0)-K.y2+M[1][1]);const be=$y(O,ve,fe,ge,se,G);return V=V||O.position.x!==be.position.x||O.position.y!==be.position.y,O.position=be.position,O.positionAbsolute=be.positionAbsolute,O}),!V)return;le(j.current,!0,!0),x(!0);const P=l?xe:sf(ye);if(P&&T.current){const[O,ve]=rf({nodeId:l,dragItems:j.current,nodeInternals:fe});P(T.current,O,ve)}},ne=()=>{if(!C.current)return;const[oe,Q]=ly(E.current,C.current);if(oe!==0||Q!==0){const{transform:fe,panBy:xe}=h.getState();w.current.x=(w.current.x??0)-oe/fe[2],w.current.y=(w.current.y??0)-Q/fe[2],xe({x:oe,y:Q})&&Y(w.current)}N.current=requestAnimationFrame(ne)},ae=oe=>{var se;const{nodeInternals:Q,multiSelectionActive:fe,nodesDraggable:xe,unselectNodesAndEdges:ye,onNodeDragStart:le,onSelectionDragStart:M}=h.getState();D.current=!0;const ee=l?le:sf(M);(!m||!p)&&!fe&&l&&((se=Q.get(l))!=null&&se.selected||ye()),l&&p&&m&&Df({id:l,store:h,nodeRef:t});const H=I(oe);if(w.current=H,j.current=K1(Q,xe,H,l),ee&&j.current){const[G,V]=rf({nodeId:l,dragItems:j.current,nodeInternals:Q});ee(oe.sourceEvent,G,V)}};if(n)F.on(".drag",null);else{const oe=Wv().on("start",Q=>{const{domNode:fe,nodeDragThreshold:xe}=h.getState();xe===0&&ae(Q),q.current=!1;const ye=I(Q);w.current=ye,C.current=(fe==null?void 0:fe.getBoundingClientRect())||null,E.current=Fc(Q.sourceEvent,C.current)}).on("drag",Q=>{var le,M;const fe=I(Q),{autoPanOnNodeDrag:xe,nodeDragThreshold:ye}=h.getState();if(Q.sourceEvent.type==="touchmove"&&Q.sourceEvent.touches.length>1&&(q.current=!0),!q.current){if(!R.current&&D.current&&xe&&(R.current=!0,ne()),!D.current){const ee=fe.xSnapped-(((le=w==null?void 0:w.current)==null?void 0:le.x)??0),H=fe.ySnapped-(((M=w==null?void 0:w.current)==null?void 0:M.y)??0);Math.sqrt(ee*ee+H*H)>ye&&ae(Q)}(w.current.x!==fe.xSnapped||w.current.y!==fe.ySnapped)&&j.current&&D.current&&(T.current=Q.sourceEvent,E.current=Fc(Q.sourceEvent,C.current),Y(fe))}}).on("end",Q=>{if(!(!D.current||q.current)&&(x(!1),R.current=!1,D.current=!1,cancelAnimationFrame(N.current),j.current)){const{updateNodePositions:fe,nodeInternals:xe,onNodeDragStop:ye,onSelectionDragStop:le}=h.getState(),M=l?ye:sf(le);if(fe(j.current,!1,!1),M){const[ee,H]=rf({nodeId:l,dragItems:j.current,nodeInternals:xe});M(Q.sourceEvent,ee,H)}}}).filter(Q=>{const fe=Q.target;return!Q.button&&(!r||!Sx(fe,`.${r}`,t))&&(!s||Sx(fe,s,t))});return F.call(oe),()=>{F.on(".drag",null)}}}},[t,n,r,s,p,h,l,m,I]),f}function Uy(){const t=po();return b.useCallback(r=>{const{nodeInternals:s,nodeExtent:l,updateNodePositions:p,getNodes:m,snapToGrid:h,snapGrid:f,onError:x,nodesDraggable:j}=t.getState(),w=m().filter(q=>q.selected&&(q.draggable||j&&typeof q.draggable>"u")),N=h?f[0]:5,C=h?f[1]:5,E=r.isShiftPressed?4:1,T=r.x*N*E,R=r.y*C*E,D=w.map(q=>{if(q.positionAbsolute){const I={x:q.positionAbsolute.x+T,y:q.positionAbsolute.y+R};h&&(I.x=f[0]*Math.round(I.x/f[0]),I.y=f[1]*Math.round(I.y/f[1]));const{positionAbsolute:F,position:Y}=$y(q,I,s,l,void 0,x);q.position=Y,q.positionAbsolute=F}return q});p(D,!0,!1)},[])}const Pd={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var fp=t=>{const n=({id:r,type:s,data:l,xPos:p,yPos:m,xPosOrigin:h,yPosOrigin:f,selected:x,onClick:j,onMouseEnter:w,onMouseMove:N,onMouseLeave:C,onContextMenu:E,onDoubleClick:T,style:R,className:D,isDraggable:q,isSelectable:I,isConnectable:F,isFocusable:Y,selectNodesOnDrag:ne,sourcePosition:ae,targetPosition:oe,hidden:Q,resizeObserver:fe,dragHandle:xe,zIndex:ye,isParent:le,noDragClassName:M,noPanClassName:ee,initialized:H,disableKeyboardA11y:se,ariaLabel:G,rfId:V,hasHandleBounds:K})=>{const P=po(),O=b.useRef(null),ve=b.useRef(null),ge=b.useRef(ae),be=b.useRef(oe),Ce=b.useRef(s),$=I||q||j||w||N||C,z=Uy(),Z=hp(r,P.getState,w),he=hp(r,P.getState,N),Be=hp(r,P.getState,C),at=hp(r,P.getState,E),gt=hp(r,P.getState,T),ht=Ye=>{const{nodeDragThreshold:Pe}=P.getState();if(I&&(!ne||!q||Pe>0)&&Df({id:r,store:P,nodeRef:O}),j){const Ze=P.getState().nodeInternals.get(r);Ze&&j(Ye,{...Ze})}},mt=Ye=>{if(!Of(Ye)&&!se)if(py.includes(Ye.key)&&I){const Pe=Ye.key==="Escape";Df({id:r,store:P,unselect:Pe,nodeRef:O})}else q&&x&&Object.prototype.hasOwnProperty.call(Pd,Ye.key)&&(P.setState({ariaLiveMessage:`Moved selected node ${Ye.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~p}, y: ${~~m}`}),z({x:Pd[Ye.key].x,y:Pd[Ye.key].y,isShiftPressed:Ye.shiftKey}))};b.useEffect(()=>()=>{ve.current&&(fe==null||fe.unobserve(ve.current),ve.current=null)},[]),b.useEffect(()=>{if(O.current&&!Q){const Ye=O.current;(!H||!K||ve.current!==Ye)&&(ve.current&&(fe==null||fe.unobserve(ve.current)),fe==null||fe.observe(Ye),ve.current=Ye)}},[Q,H,K]),b.useEffect(()=>{const Ye=Ce.current!==s,Pe=ge.current!==ae,Ze=be.current!==oe;O.current&&(Ye||Pe||Ze)&&(Ye&&(Ce.current=s),Pe&&(ge.current=ae),Ze&&(be.current=oe),P.getState().updateNodeDimensions([{id:r,nodeElement:O.current,forceUpdate:!0}]))},[r,s,ae,oe]);const Et=Vy({nodeRef:O,disabled:Q||!q,noDragClassName:M,handleSelector:xe,nodeId:r,isSelectable:I,selectNodesOnDrag:ne});return Q?null:me.createElement("div",{className:Go(["react-flow__node",`react-flow__node-${s}`,{[ee]:q},D,{selected:x,selectable:I,parent:le,dragging:Et}]),ref:O,style:{zIndex:ye,transform:`translate(${h}px,${f}px)`,pointerEvents:$?"all":"none",visibility:H?"visible":"hidden",...R},"data-id":r,"data-testid":`rf__node-${r}`,onMouseEnter:Z,onMouseMove:he,onMouseLeave:Be,onContextMenu:at,onClick:ht,onDoubleClick:gt,onKeyDown:Y?mt:void 0,tabIndex:Y?0:void 0,role:Y?"button":void 0,"aria-describedby":se?void 0:`${Py}-${V}`,"aria-label":G},me.createElement(p1,{value:r},me.createElement(t,{id:r,data:l,type:s,xPos:p,yPos:m,selected:x,isConnectable:F,sourcePosition:ae,targetPosition:oe,dragging:Et,dragHandle:xe,zIndex:ye})))};return n.displayName="NodeWrapper",b.memo(n)};const X1=t=>{const n=t.getNodes().filter(r=>r.selected);return{...Ih(n,t.nodeOrigin),transformString:`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`,userSelectionActive:t.userSelectionActive}};function Y1({onSelectionContextMenu:t,noPanClassName:n,disableKeyboardA11y:r}){const s=po(),{width:l,height:p,x:m,y:h,transformString:f,userSelectionActive:x}=on(X1,Wo),j=Uy(),w=b.useRef(null);if(b.useEffect(()=>{var E;r||(E=w.current)==null||E.focus({preventScroll:!0})},[r]),Vy({nodeRef:w}),x||!l||!p)return null;const N=t?E=>{const T=s.getState().getNodes().filter(R=>R.selected);t(E,T)}:void 0,C=E=>{Object.prototype.hasOwnProperty.call(Pd,E.key)&&j({x:Pd[E.key].x,y:Pd[E.key].y,isShiftPressed:E.shiftKey})};return me.createElement("div",{className:Go(["react-flow__nodesselection","react-flow__container",n]),style:{transform:f}},me.createElement("div",{ref:w,className:"react-flow__nodesselection-rect",onContextMenu:N,tabIndex:r?void 0:-1,onKeyDown:r?void 0:C,style:{width:l,height:p,top:h,left:m}}))}var Z1=b.memo(Y1);const eC=t=>t.nodesSelectionActive,qy=({children:t,onPaneClick:n,onPaneMouseEnter:r,onPaneMouseMove:s,onPaneMouseLeave:l,onPaneContextMenu:p,onPaneScroll:m,deleteKeyCode:h,onMove:f,onMoveStart:x,onMoveEnd:j,selectionKeyCode:w,selectionOnDrag:N,selectionMode:C,onSelectionStart:E,onSelectionEnd:T,multiSelectionKeyCode:R,panActivationKeyCode:D,zoomActivationKeyCode:q,elementsSelectable:I,zoomOnScroll:F,zoomOnPinch:Y,panOnScroll:ne,panOnScrollSpeed:ae,panOnScrollMode:oe,zoomOnDoubleClick:Q,panOnDrag:fe,defaultViewport:xe,translateExtent:ye,minZoom:le,maxZoom:M,preventScrolling:ee,onSelectionContextMenu:H,noWheelClassName:se,noPanClassName:G,disableKeyboardA11y:V})=>{const K=on(eC),P=Bp(w),O=Bp(D),ve=O||fe,ge=O||ne,be=P||N&&ve!==!0;return $1({deleteKeyCode:h,multiSelectionKeyCode:R}),me.createElement(q1,{onMove:f,onMoveStart:x,onMoveEnd:j,onPaneContextMenu:p,elementsSelectable:I,zoomOnScroll:F,zoomOnPinch:Y,panOnScroll:ge,panOnScrollSpeed:ae,panOnScrollMode:oe,zoomOnDoubleClick:Q,panOnDrag:!P&&ve,defaultViewport:xe,translateExtent:ye,minZoom:le,maxZoom:M,zoomActivationKeyCode:q,preventScrolling:ee,noWheelClassName:se,noPanClassName:G},me.createElement(Ly,{onSelectionStart:E,onSelectionEnd:T,onPaneClick:n,onPaneMouseEnter:r,onPaneMouseMove:s,onPaneMouseLeave:l,onPaneContextMenu:p,onPaneScroll:m,panOnDrag:ve,isSelecting:!!be,selectionMode:C},t,K&&me.createElement(Z1,{onSelectionContextMenu:H,noPanClassName:G,disableKeyboardA11y:V})))};qy.displayName="FlowRenderer";var tC=b.memo(qy);function nC(t){return on(b.useCallback(r=>t?yy(r.nodeInternals,{x:0,y:0,width:r.width,height:r.height},r.transform,!0):r.getNodes(),[t]))}function oC(t){const n={input:fp(t.input||Ey),default:fp(t.default||Lf),output:fp(t.output||Ty),group:fp(t.group||xg)},r={},s=Object.keys(t).filter(l=>!["input","default","output","group"].includes(l)).reduce((l,p)=>(l[p]=fp(t[p]||Lf),l),r);return{...n,...s}}const aC=({x:t,y:n,width:r,height:s,origin:l})=>!r||!s?{x:t,y:n}:l[0]<0||l[1]<0||l[0]>1||l[1]>1?{x:t,y:n}:{x:t-r*l[0],y:n-s*l[1]},rC=t=>({nodesDraggable:t.nodesDraggable,nodesConnectable:t.nodesConnectable,nodesFocusable:t.nodesFocusable,elementsSelectable:t.elementsSelectable,updateNodeDimensions:t.updateNodeDimensions,onError:t.onError}),Hy=t=>{const{nodesDraggable:n,nodesConnectable:r,nodesFocusable:s,elementsSelectable:l,updateNodeDimensions:p,onError:m}=on(rC,Wo),h=nC(t.onlyRenderVisibleElements),f=b.useRef(),x=b.useMemo(()=>{if(typeof ResizeObserver>"u")return null;const j=new ResizeObserver(w=>{const N=w.map(C=>({id:C.target.getAttribute("data-id"),nodeElement:C.target,forceUpdate:!0}));p(N)});return f.current=j,j},[]);return b.useEffect(()=>()=>{var j;(j=f==null?void 0:f.current)==null||j.disconnect()},[]),me.createElement("div",{className:"react-flow__nodes",style:yg},h.map(j=>{var Y,ne,ae;let w=j.type||"default";t.nodeTypes[w]||(m==null||m("003",Bl.error003(w)),w="default");const N=t.nodeTypes[w]||t.nodeTypes.default,C=!!(j.draggable||n&&typeof j.draggable>"u"),E=!!(j.selectable||l&&typeof j.selectable>"u"),T=!!(j.connectable||r&&typeof j.connectable>"u"),R=!!(j.focusable||s&&typeof j.focusable>"u"),D=t.nodeExtent?ug(j.positionAbsolute,t.nodeExtent):j.positionAbsolute,q=(D==null?void 0:D.x)??0,I=(D==null?void 0:D.y)??0,F=aC({x:q,y:I,width:j.width??0,height:j.height??0,origin:t.nodeOrigin});return me.createElement(N,{key:j.id,id:j.id,className:j.className,style:j.style,type:w,data:j.data,sourcePosition:j.sourcePosition||nt.Bottom,targetPosition:j.targetPosition||nt.Top,hidden:j.hidden,xPos:q,yPos:I,xPosOrigin:F.x,yPosOrigin:F.y,selectNodesOnDrag:t.selectNodesOnDrag,onClick:t.onNodeClick,onMouseEnter:t.onNodeMouseEnter,onMouseMove:t.onNodeMouseMove,onMouseLeave:t.onNodeMouseLeave,onContextMenu:t.onNodeContextMenu,onDoubleClick:t.onNodeDoubleClick,selected:!!j.selected,isDraggable:C,isSelectable:E,isConnectable:T,isFocusable:R,resizeObserver:x,dragHandle:j.dragHandle,zIndex:((Y=j[Pn])==null?void 0:Y.z)??0,isParent:!!((ne=j[Pn])!=null&&ne.isParent),noDragClassName:t.noDragClassName,noPanClassName:t.noPanClassName,initialized:!!j.width&&!!j.height,rfId:t.rfId,disableKeyboardA11y:t.disableKeyboardA11y,ariaLabel:j.ariaLabel,hasHandleBounds:!!((ae=j[Pn])!=null&&ae.handleBounds)})}))};Hy.displayName="NodeRenderer";var sC=b.memo(Hy);const iC=(t,n,r)=>r===nt.Left?t-n:r===nt.Right?t+n:t,lC=(t,n,r)=>r===nt.Top?t-n:r===nt.Bottom?t+n:t,Ax="react-flow__edgeupdater",Ex=({position:t,centerX:n,centerY:r,radius:s=10,onMouseDown:l,onMouseEnter:p,onMouseOut:m,type:h})=>me.createElement("circle",{onMouseDown:l,onMouseEnter:p,onMouseOut:m,className:Go([Ax,`${Ax}-${h}`]),cx:iC(n,s,t),cy:lC(r,s,t),r:s,stroke:"transparent",fill:"transparent"}),cC=()=>!0;var vd=t=>{const n=({id:r,className:s,type:l,data:p,onClick:m,onEdgeDoubleClick:h,selected:f,animated:x,label:j,labelStyle:w,labelShowBg:N,labelBgStyle:C,labelBgPadding:E,labelBgBorderRadius:T,style:R,source:D,target:q,sourceX:I,sourceY:F,targetX:Y,targetY:ne,sourcePosition:ae,targetPosition:oe,elementsSelectable:Q,hidden:fe,sourceHandleId:xe,targetHandleId:ye,onContextMenu:le,onMouseEnter:M,onMouseMove:ee,onMouseLeave:H,reconnectRadius:se,onReconnect:G,onReconnectStart:V,onReconnectEnd:K,markerEnd:P,markerStart:O,rfId:ve,ariaLabel:ge,isFocusable:be,isReconnectable:Ce,pathOptions:$,interactionWidth:z,disableKeyboardA11y:Z})=>{const he=b.useRef(null),[Be,at]=b.useState(!1),[gt,ht]=b.useState(!1),mt=po(),Et=b.useMemo(()=>`url('#${Ff(O,ve)}')`,[O,ve]),Ye=b.useMemo(()=>`url('#${Ff(P,ve)}')`,[P,ve]);if(fe)return null;const Pe=Te=>{var Wn;const{edges:rt,addSelectedEdges:pn,unselectNodesAndEdges:An,multiSelectionActive:sa}=mt.getState(),mn=rt.find(Jo=>Jo.id===r);mn&&(Q&&(mt.setState({nodesSelectionActive:!1}),mn.selected&&sa?(An({nodes:[],edges:[mn]}),(Wn=he.current)==null||Wn.blur()):pn([r])),m&&m(Te,mn))},Ze=mp(r,mt.getState,h),Ct=mp(r,mt.getState,le),re=mp(r,mt.getState,M),we=mp(r,mt.getState,ee),Me=mp(r,mt.getState,H),et=(Te,rt)=>{if(Te.button!==0)return;const{edges:pn,isValidConnection:An}=mt.getState(),sa=rt?q:D,mn=(rt?ye:xe)||null,Wn=rt?"target":"source",Jo=An||cC,fr=rt,Ko=pn.find(la=>la.id===r);ht(!0),V==null||V(Te,Ko,Wn);const ia=la=>{ht(!1),K==null||K(la,Ko,Wn)};Cy({event:Te,handleId:mn,nodeId:sa,onConnect:la=>G==null?void 0:G(Ko,la),isTarget:fr,getState:mt.getState,setState:mt.setState,isValidConnection:Jo,edgeUpdaterType:Wn,onReconnectEnd:ia})},it=Te=>et(Te,!0),qe=Te=>et(Te,!1),Re=()=>at(!0),ot=()=>at(!1),kt=!Q&&!m,Fe=Te=>{var rt;if(!Z&&py.includes(Te.key)&&Q){const{unselectNodesAndEdges:pn,addSelectedEdges:An,edges:sa}=mt.getState();Te.key==="Escape"?((rt=he.current)==null||rt.blur(),pn({edges:[sa.find(Wn=>Wn.id===r)]})):An([r])}};return me.createElement("g",{className:Go(["react-flow__edge",`react-flow__edge-${l}`,s,{selected:f,animated:x,inactive:kt,updating:Be}]),onClick:Pe,onDoubleClick:Ze,onContextMenu:Ct,onMouseEnter:re,onMouseMove:we,onMouseLeave:Me,onKeyDown:be?Fe:void 0,tabIndex:be?0:void 0,role:be?"button":"img","data-testid":`rf__edge-${r}`,"aria-label":ge===null?void 0:ge||`Edge from ${D} to ${q}`,"aria-describedby":be?`${_y}-${ve}`:void 0,ref:he},!gt&&me.createElement(t,{id:r,source:D,target:q,selected:f,animated:x,label:j,labelStyle:w,labelShowBg:N,labelBgStyle:C,labelBgPadding:E,labelBgBorderRadius:T,data:p,style:R,sourceX:I,sourceY:F,targetX:Y,targetY:ne,sourcePosition:ae,targetPosition:oe,sourceHandleId:xe,targetHandleId:ye,markerStart:Et,markerEnd:Ye,pathOptions:$,interactionWidth:z}),Ce&&me.createElement(me.Fragment,null,(Ce==="source"||Ce===!0)&&me.createElement(Ex,{position:ae,centerX:I,centerY:F,radius:se,onMouseDown:it,onMouseEnter:Re,onMouseOut:ot,type:"source"}),(Ce==="target"||Ce===!0)&&me.createElement(Ex,{position:oe,centerX:Y,centerY:ne,radius:se,onMouseDown:qe,onMouseEnter:Re,onMouseOut:ot,type:"target"})))};return n.displayName="EdgeWrapper",b.memo(n)};function uC(t){const n={default:vd(t.default||gh),straight:vd(t.bezier||mg),step:vd(t.step||pg),smoothstep:vd(t.step||Th),simplebezier:vd(t.simplebezier||dg)},r={},s=Object.keys(t).filter(l=>!["default","bezier"].includes(l)).reduce((l,p)=>(l[p]=vd(t[p]||gh),l),r);return{...n,...s}}function Mx(t,n,r=null){const s=((r==null?void 0:r.x)||0)+n.x,l=((r==null?void 0:r.y)||0)+n.y,p=(r==null?void 0:r.width)||n.width,m=(r==null?void 0:r.height)||n.height;switch(t){case nt.Top:return{x:s+p/2,y:l};case nt.Right:return{x:s+p,y:l+m/2};case nt.Bottom:return{x:s+p/2,y:l+m};case nt.Left:return{x:s,y:l+m/2}}}function Tx(t,n){return t?t.length===1||!n?t[0]:n&&t.find(r=>r.id===n)||null:null}const dC=(t,n,r,s,l,p)=>{const m=Mx(r,t,n),h=Mx(p,s,l);return{sourceX:m.x,sourceY:m.y,targetX:h.x,targetY:h.y}};function pC({sourcePos:t,targetPos:n,sourceWidth:r,sourceHeight:s,targetWidth:l,targetHeight:p,width:m,height:h,transform:f}){const x={x:Math.min(t.x,n.x),y:Math.min(t.y,n.y),x2:Math.max(t.x+r,n.x+l),y2:Math.max(t.y+s,n.y+p)};x.x===x.x2&&(x.x2+=1),x.y===x.y2&&(x.y2+=1);const j=Lp({x:(0-f[0])/f[2],y:(0-f[1])/f[2],width:m/f[2],height:h/f[2]}),w=Math.max(0,Math.min(j.x2,x.x2)-Math.max(j.x,x.x)),N=Math.max(0,Math.min(j.y2,x.y2)-Math.max(j.y,x.y));return Math.ceil(w*N)>0}function Ix(t){var s,l,p,m,h;const n=((s=t==null?void 0:t[Pn])==null?void 0:s.handleBounds)||null,r=n&&(t==null?void 0:t.width)&&(t==null?void 0:t.height)&&typeof((l=t==null?void 0:t.positionAbsolute)==null?void 0:l.x)<"u"&&typeof((p=t==null?void 0:t.positionAbsolute)==null?void 0:p.y)<"u";return[{x:((m=t==null?void 0:t.positionAbsolute)==null?void 0:m.x)||0,y:((h=t==null?void 0:t.positionAbsolute)==null?void 0:h.y)||0,width:(t==null?void 0:t.width)||0,height:(t==null?void 0:t.height)||0},n,!!r]}const mC=[{level:0,isMaxLevel:!0,edges:[]}];function hC(t,n,r=!1){let s=-1;const l=t.reduce((m,h)=>{var j,w;const f=Cs(h.zIndex);let x=f?h.zIndex:0;if(r){const N=n.get(h.target),C=n.get(h.source),E=h.selected||(N==null?void 0:N.selected)||(C==null?void 0:C.selected),T=Math.max(((j=C==null?void 0:C[Pn])==null?void 0:j.z)||0,((w=N==null?void 0:N[Pn])==null?void 0:w.z)||0,1e3);x=(f?h.zIndex:0)+(E?T:0)}return m[x]?m[x].push(h):m[x]=[h],s=x>s?x:s,m},{}),p=Object.entries(l).map(([m,h])=>{const f=+m;return{edges:h,level:f,isMaxLevel:f===s}});return p.length===0?mC:p}function fC(t,n,r){const s=on(b.useCallback(l=>t?l.edges.filter(p=>{const m=n.get(p.source),h=n.get(p.target);return(m==null?void 0:m.width)&&(m==null?void 0:m.height)&&(h==null?void 0:h.width)&&(h==null?void 0:h.height)&&pC({sourcePos:m.positionAbsolute||{x:0,y:0},targetPos:h.positionAbsolute||{x:0,y:0},sourceWidth:m.width,sourceHeight:m.height,targetWidth:h.width,targetHeight:h.height,width:l.width,height:l.height,transform:l.transform})}):l.edges,[t,n]));return hC(s,n,r)}const gC=({color:t="none",strokeWidth:n=1})=>me.createElement("polyline",{style:{stroke:t,strokeWidth:n},strokeLinecap:"round",strokeLinejoin:"round",fill:"none",points:"-5,-4 0,0 -5,4"}),xC=({color:t="none",strokeWidth:n=1})=>me.createElement("polyline",{style:{stroke:t,fill:t,strokeWidth:n},strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"}),Px={[$p.Arrow]:gC,[$p.ArrowClosed]:xC};function vC(t){const n=po();return b.useMemo(()=>{var l,p;return Object.prototype.hasOwnProperty.call(Px,t)?Px[t]:((p=(l=n.getState()).onError)==null||p.call(l,"009",Bl.error009(t)),null)},[t])}const yC=({id:t,type:n,color:r,width:s=12.5,height:l=12.5,markerUnits:p="strokeWidth",strokeWidth:m,orient:h="auto-start-reverse"})=>{const f=vC(n);return f?me.createElement("marker",{className:"react-flow__arrowhead",id:t,markerWidth:`${s}`,markerHeight:`${l}`,viewBox:"-10 -10 20 20",markerUnits:p,orient:h,refX:"0",refY:"0"},me.createElement(f,{color:r,strokeWidth:m})):null},jC=({defaultColor:t,rfId:n})=>r=>{const s=[];return r.edges.reduce((l,p)=>([p.markerStart,p.markerEnd].forEach(m=>{if(m&&typeof m=="object"){const h=Ff(m,n);s.includes(h)||(l.push({id:h,color:m.color||t,...m}),s.push(h))}}),l),[]).sort((l,p)=>l.id.localeCompare(p.id))},Wy=({defaultColor:t,rfId:n})=>{const r=on(b.useCallback(jC({defaultColor:t,rfId:n}),[t,n]),(s,l)=>!(s.length!==l.length||s.some((p,m)=>p.id!==l[m].id)));return me.createElement("defs",null,r.map(s=>me.createElement(yC,{id:s.id,key:s.id,type:s.type,color:s.color,width:s.width,height:s.height,markerUnits:s.markerUnits,strokeWidth:s.strokeWidth,orient:s.orient})))};Wy.displayName="MarkerDefinitions";var bC=b.memo(Wy);const wC=t=>({nodesConnectable:t.nodesConnectable,edgesFocusable:t.edgesFocusable,edgesUpdatable:t.edgesUpdatable,elementsSelectable:t.elementsSelectable,width:t.width,height:t.height,connectionMode:t.connectionMode,nodeInternals:t.nodeInternals,onError:t.onError}),Gy=({defaultMarkerColor:t,onlyRenderVisibleElements:n,elevateEdgesOnSelect:r,rfId:s,edgeTypes:l,noPanClassName:p,onEdgeContextMenu:m,onEdgeMouseEnter:h,onEdgeMouseMove:f,onEdgeMouseLeave:x,onEdgeClick:j,onEdgeDoubleClick:w,onReconnect:N,onReconnectStart:C,onReconnectEnd:E,reconnectRadius:T,children:R,disableKeyboardA11y:D})=>{const{edgesFocusable:q,edgesUpdatable:I,elementsSelectable:F,width:Y,height:ne,connectionMode:ae,nodeInternals:oe,onError:Q}=on(wC,Wo),fe=fC(n,oe,r);return Y?me.createElement(me.Fragment,null,fe.map(({level:xe,edges:ye,isMaxLevel:le})=>me.createElement("svg",{key:xe,style:{zIndex:xe},width:Y,height:ne,className:"react-flow__edges react-flow__container"},le&&me.createElement(bC,{defaultColor:t,rfId:s}),me.createElement("g",null,ye.map(M=>{const[ee,H,se]=Ix(oe.get(M.source)),[G,V,K]=Ix(oe.get(M.target));if(!se||!K)return null;let P=M.type||"default";l[P]||(Q==null||Q("011",Bl.error011(P)),P="default");const O=l[P]||l.default,ve=ae===Bu.Strict?V.target:(V.target??[]).concat(V.source??[]),ge=Tx(H.source,M.sourceHandle),be=Tx(ve,M.targetHandle),Ce=(ge==null?void 0:ge.position)||nt.Bottom,$=(be==null?void 0:be.position)||nt.Top,z=!!(M.focusable||q&&typeof M.focusable>"u"),Z=M.reconnectable||M.updatable,he=typeof N<"u"&&(Z||I&&typeof Z>"u");if(!ge||!be)return Q==null||Q("008",Bl.error008(ge,M)),null;const{sourceX:Be,sourceY:at,targetX:gt,targetY:ht}=dC(ee,ge,Ce,G,be,$);return me.createElement(O,{key:M.id,id:M.id,className:Go([M.className,p]),type:P,data:M.data,selected:!!M.selected,animated:!!M.animated,hidden:!!M.hidden,label:M.label,labelStyle:M.labelStyle,labelShowBg:M.labelShowBg,labelBgStyle:M.labelBgStyle,labelBgPadding:M.labelBgPadding,labelBgBorderRadius:M.labelBgBorderRadius,style:M.style,source:M.source,target:M.target,sourceHandleId:M.sourceHandle,targetHandleId:M.targetHandle,markerEnd:M.markerEnd,markerStart:M.markerStart,sourceX:Be,sourceY:at,targetX:gt,targetY:ht,sourcePosition:Ce,targetPosition:$,elementsSelectable:F,onContextMenu:m,onMouseEnter:h,onMouseMove:f,onMouseLeave:x,onClick:j,onEdgeDoubleClick:w,onReconnect:N,onReconnectStart:C,onReconnectEnd:E,reconnectRadius:T,rfId:s,ariaLabel:M.ariaLabel,isFocusable:z,isReconnectable:he,pathOptions:"pathOptions"in M?M.pathOptions:void 0,interactionWidth:M.interactionWidth,disableKeyboardA11y:D})})))),R):null};Gy.displayName="EdgeRenderer";var NC=b.memo(Gy);const CC=t=>`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`;function SC({children:t}){const n=on(CC);return me.createElement("div",{className:"react-flow__viewport react-flow__container",style:{transform:n}},t)}function kC(t){const n=vg(),r=b.useRef(!1);b.useEffect(()=>{!r.current&&n.viewportInitialized&&t&&(setTimeout(()=>t(n),1),r.current=!0)},[t,n.viewportInitialized])}const AC={[nt.Left]:nt.Right,[nt.Right]:nt.Left,[nt.Top]:nt.Bottom,[nt.Bottom]:nt.Top},Jy=({nodeId:t,handleType:n,style:r,type:s=Rc.Bezier,CustomComponent:l,connectionStatus:p})=>{var ne,ae,oe;const{fromNode:m,handleId:h,toX:f,toY:x,connectionMode:j}=on(b.useCallback(Q=>({fromNode:Q.nodeInternals.get(t),handleId:Q.connectionHandleId,toX:(Q.connectionPosition.x-Q.transform[0])/Q.transform[2],toY:(Q.connectionPosition.y-Q.transform[1])/Q.transform[2],connectionMode:Q.connectionMode}),[t]),Wo),w=(ne=m==null?void 0:m[Pn])==null?void 0:ne.handleBounds;let N=w==null?void 0:w[n];if(j===Bu.Loose&&(N=N||(w==null?void 0:w[n==="source"?"target":"source"])),!m||!N)return null;const C=h?N.find(Q=>Q.id===h):N[0],E=C?C.x+C.width/2:(m.width??0)/2,T=C?C.y+C.height/2:m.height??0,R=(((ae=m.positionAbsolute)==null?void 0:ae.x)??0)+E,D=(((oe=m.positionAbsolute)==null?void 0:oe.y)??0)+T,q=C==null?void 0:C.position,I=q?AC[q]:null;if(!q||!I)return null;if(l)return me.createElement(l,{connectionLineType:s,connectionLineStyle:r,fromNode:m,fromHandle:C,fromX:R,fromY:D,toX:f,toY:x,fromPosition:q,toPosition:I,connectionStatus:p});let F="";const Y={sourceX:R,sourceY:D,sourcePosition:q,targetX:f,targetY:x,targetPosition:I};return s===Rc.Bezier?[F]=hg(Y):s===Rc.Step?[F]=Rf({...Y,borderRadius:0}):s===Rc.SmoothStep?[F]=Rf(Y):s===Rc.SimpleBezier?[F]=gy(Y):F=`M${R},${D} ${f},${x}`,me.createElement("path",{d:F,fill:"none",className:"react-flow__connection-path",style:r})};Jy.displayName="ConnectionLine";const EC=t=>({nodeId:t.connectionNodeId,handleType:t.connectionHandleType,nodesConnectable:t.nodesConnectable,connectionStatus:t.connectionStatus,width:t.width,height:t.height});function MC({containerStyle:t,style:n,type:r,component:s}){const{nodeId:l,handleType:p,nodesConnectable:m,width:h,height:f,connectionStatus:x}=on(EC,Wo);return!(l&&p&&h&&m)?null:me.createElement("svg",{style:t,width:h,height:f,className:"react-flow__edges react-flow__connectionline react-flow__container"},me.createElement("g",{className:Go(["react-flow__connection",x])},me.createElement(Jy,{nodeId:l,handleType:p,style:n,type:r,CustomComponent:s,connectionStatus:x})))}function _x(t,n){return b.useRef(null),po(),b.useMemo(()=>n(t),[t])}const Ky=({nodeTypes:t,edgeTypes:n,onMove:r,onMoveStart:s,onMoveEnd:l,onInit:p,onNodeClick:m,onEdgeClick:h,onNodeDoubleClick:f,onEdgeDoubleClick:x,onNodeMouseEnter:j,onNodeMouseMove:w,onNodeMouseLeave:N,onNodeContextMenu:C,onSelectionContextMenu:E,onSelectionStart:T,onSelectionEnd:R,connectionLineType:D,connectionLineStyle:q,connectionLineComponent:I,connectionLineContainerStyle:F,selectionKeyCode:Y,selectionOnDrag:ne,selectionMode:ae,multiSelectionKeyCode:oe,panActivationKeyCode:Q,zoomActivationKeyCode:fe,deleteKeyCode:xe,onlyRenderVisibleElements:ye,elementsSelectable:le,selectNodesOnDrag:M,defaultViewport:ee,translateExtent:H,minZoom:se,maxZoom:G,preventScrolling:V,defaultMarkerColor:K,zoomOnScroll:P,zoomOnPinch:O,panOnScroll:ve,panOnScrollSpeed:ge,panOnScrollMode:be,zoomOnDoubleClick:Ce,panOnDrag:$,onPaneClick:z,onPaneMouseEnter:Z,onPaneMouseMove:he,onPaneMouseLeave:Be,onPaneScroll:at,onPaneContextMenu:gt,onEdgeContextMenu:ht,onEdgeMouseEnter:mt,onEdgeMouseMove:Et,onEdgeMouseLeave:Ye,onReconnect:Pe,onReconnectStart:Ze,onReconnectEnd:Ct,reconnectRadius:re,noDragClassName:we,noWheelClassName:Me,noPanClassName:et,elevateEdgesOnSelect:it,disableKeyboardA11y:qe,nodeOrigin:Re,nodeExtent:ot,rfId:kt})=>{const Fe=_x(t,oC),Te=_x(n,uC);return kC(p),me.createElement(tC,{onPaneClick:z,onPaneMouseEnter:Z,onPaneMouseMove:he,onPaneMouseLeave:Be,onPaneContextMenu:gt,onPaneScroll:at,deleteKeyCode:xe,selectionKeyCode:Y,selectionOnDrag:ne,selectionMode:ae,onSelectionStart:T,onSelectionEnd:R,multiSelectionKeyCode:oe,panActivationKeyCode:Q,zoomActivationKeyCode:fe,elementsSelectable:le,onMove:r,onMoveStart:s,onMoveEnd:l,zoomOnScroll:P,zoomOnPinch:O,zoomOnDoubleClick:Ce,panOnScroll:ve,panOnScrollSpeed:ge,panOnScrollMode:be,panOnDrag:$,defaultViewport:ee,translateExtent:H,minZoom:se,maxZoom:G,onSelectionContextMenu:E,preventScrolling:V,noDragClassName:we,noWheelClassName:Me,noPanClassName:et,disableKeyboardA11y:qe},me.createElement(SC,null,me.createElement(NC,{edgeTypes:Te,onEdgeClick:h,onEdgeDoubleClick:x,onlyRenderVisibleElements:ye,onEdgeContextMenu:ht,onEdgeMouseEnter:mt,onEdgeMouseMove:Et,onEdgeMouseLeave:Ye,onReconnect:Pe,onReconnectStart:Ze,onReconnectEnd:Ct,reconnectRadius:re,defaultMarkerColor:K,noPanClassName:et,elevateEdgesOnSelect:!!it,disableKeyboardA11y:qe,rfId:kt},me.createElement(MC,{style:q,type:D,component:I,containerStyle:F})),me.createElement("div",{className:"react-flow__edgelabel-renderer"}),me.createElement(sC,{nodeTypes:Fe,onNodeClick:m,onNodeDoubleClick:f,onNodeMouseEnter:j,onNodeMouseMove:w,onNodeMouseLeave:N,onNodeContextMenu:C,selectNodesOnDrag:M,onlyRenderVisibleElements:ye,noPanClassName:et,noDragClassName:we,disableKeyboardA11y:qe,nodeOrigin:Re,nodeExtent:ot,rfId:kt})))};Ky.displayName="GraphView";var TC=b.memo(Ky);const $f=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Mc={rfId:"1",width:0,height:0,transform:[0,0,1],nodeInternals:new Map,edges:[],onNodesChange:null,onEdgesChange:null,hasDefaultNodes:!1,hasDefaultEdges:!1,d3Zoom:null,d3Selection:null,d3ZoomHandler:void 0,minZoom:.5,maxZoom:2,translateExtent:$f,nodeExtent:$f,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:Bu.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:[0,0],nodeDragThreshold:0,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesUpdatable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,fitViewOnInit:!1,fitViewOnInitDone:!1,fitViewOnInitOptions:void 0,onSelectionChange:[],multiSelectionActive:!1,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,connectionRadius:20,onError:s1,isValidConnection:void 0},IC=()=>bb((t,n)=>({...Mc,setNodes:r=>{const{nodeInternals:s,nodeOrigin:l,elevateNodesOnSelect:p}=n();t({nodeInternals:of(r,s,l,p)})},getNodes:()=>Array.from(n().nodeInternals.values()),setEdges:r=>{const{defaultEdgeOptions:s={}}=n();t({edges:r.map(l=>({...s,...l}))})},setDefaultNodesAndEdges:(r,s)=>{const l=typeof r<"u",p=typeof s<"u",m=l?of(r,new Map,n().nodeOrigin,n().elevateNodesOnSelect):new Map;t({nodeInternals:m,edges:p?s:[],hasDefaultNodes:l,hasDefaultEdges:p})},updateNodeDimensions:r=>{const{onNodesChange:s,nodeInternals:l,fitViewOnInit:p,fitViewOnInitDone:m,fitViewOnInitOptions:h,domNode:f,nodeOrigin:x}=n(),j=f==null?void 0:f.querySelector(".react-flow__viewport");if(!j)return;const w=window.getComputedStyle(j),{m22:N}=new window.DOMMatrixReadOnly(w.transform),C=r.reduce((T,R)=>{const D=l.get(R.id);if(D!=null&&D.hidden)l.set(D.id,{...D,[Pn]:{...D[Pn],handleBounds:void 0}});else if(D){const q=cg(R.nodeElement);!!(q.width&&q.height&&(D.width!==q.width||D.height!==q.height||R.forceUpdate))&&(l.set(D.id,{...D,[Pn]:{...D[Pn],handleBounds:{source:kx(".source",R.nodeElement,N,x),target:kx(".target",R.nodeElement,N,x)}},...q}),T.push({id:D.id,type:"dimensions",dimensions:q}))}return T},[]);Ry(l,x);const E=m||p&&!m&&Fy(n,{initial:!0,...h});t({nodeInternals:new Map(l),fitViewOnInitDone:E}),(C==null?void 0:C.length)>0&&(s==null||s(C))},updateNodePositions:(r,s=!0,l=!1)=>{const{triggerNodeChanges:p}=n(),m=r.map(h=>{const f={id:h.id,type:"position",dragging:l};return s&&(f.positionAbsolute=h.positionAbsolute,f.position=h.position),f});p(m)},triggerNodeChanges:r=>{const{onNodesChange:s,nodeInternals:l,hasDefaultNodes:p,nodeOrigin:m,getNodes:h,elevateNodesOnSelect:f}=n();if(r!=null&&r.length){if(p){const x=zy(r,h()),j=of(x,l,m,f);t({nodeInternals:j})}s==null||s(r)}},addSelectedNodes:r=>{const{multiSelectionActive:s,edges:l,getNodes:p}=n();let m,h=null;s?m=r.map(f=>_c(f,!0)):(m=kd(p(),r),h=kd(l,[])),Dm({changedNodes:m,changedEdges:h,get:n,set:t})},addSelectedEdges:r=>{const{multiSelectionActive:s,edges:l,getNodes:p}=n();let m,h=null;s?m=r.map(f=>_c(f,!0)):(m=kd(l,r),h=kd(p(),[])),Dm({changedNodes:h,changedEdges:m,get:n,set:t})},unselectNodesAndEdges:({nodes:r,edges:s}={})=>{const{edges:l,getNodes:p}=n(),m=r||p(),h=s||l,f=m.map(j=>(j.selected=!1,_c(j.id,!1))),x=h.map(j=>_c(j.id,!1));Dm({changedNodes:f,changedEdges:x,get:n,set:t})},setMinZoom:r=>{const{d3Zoom:s,maxZoom:l}=n();s==null||s.scaleExtent([r,l]),t({minZoom:r})},setMaxZoom:r=>{const{d3Zoom:s,minZoom:l}=n();s==null||s.scaleExtent([l,r]),t({maxZoom:r})},setTranslateExtent:r=>{var s;(s=n().d3Zoom)==null||s.translateExtent(r),t({translateExtent:r})},resetSelectedElements:()=>{const{edges:r,getNodes:s}=n(),p=s().filter(h=>h.selected).map(h=>_c(h.id,!1)),m=r.filter(h=>h.selected).map(h=>_c(h.id,!1));Dm({changedNodes:p,changedEdges:m,get:n,set:t})},setNodeExtent:r=>{const{nodeInternals:s}=n();s.forEach(l=>{l.positionAbsolute=ug(l.position,r)}),t({nodeExtent:r,nodeInternals:new Map(s)})},panBy:r=>{const{transform:s,width:l,height:p,d3Zoom:m,d3Selection:h,translateExtent:f}=n();if(!m||!h||!r.x&&!r.y)return!1;const x=Ll.translate(s[0]+r.x,s[1]+r.y).scale(s[2]),j=[[0,0],[l,p]],w=m==null?void 0:m.constrain()(x,j,f);return m.transform(h,w),s[0]!==w.x||s[1]!==w.y||s[2]!==w.k},cancelConnection:()=>t({connectionNodeId:Mc.connectionNodeId,connectionHandleId:Mc.connectionHandleId,connectionHandleType:Mc.connectionHandleType,connectionStatus:Mc.connectionStatus,connectionStartHandle:Mc.connectionStartHandle,connectionEndHandle:Mc.connectionEndHandle}),reset:()=>t({...Mc})}),Object.is),jg=({children:t})=>{const n=b.useRef(null);return n.current||(n.current=IC()),me.createElement(ZN,{value:n.current},t)};jg.displayName="ReactFlowProvider";const Qy=({children:t})=>b.useContext(Mh)?me.createElement(me.Fragment,null,t):me.createElement(jg,null,t);Qy.displayName="ReactFlowWrapper";const PC={input:Ey,default:Lf,output:Ty,group:xg},_C={default:gh,straight:mg,step:pg,smoothstep:Th,simplebezier:dg},OC=[0,0],RC=[15,15],FC={x:0,y:0,zoom:1},zC={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},Xy=b.forwardRef(({nodes:t,edges:n,defaultNodes:r,defaultEdges:s,className:l,nodeTypes:p=PC,edgeTypes:m=_C,onNodeClick:h,onEdgeClick:f,onInit:x,onMove:j,onMoveStart:w,onMoveEnd:N,onConnect:C,onConnectStart:E,onConnectEnd:T,onClickConnectStart:R,onClickConnectEnd:D,onNodeMouseEnter:q,onNodeMouseMove:I,onNodeMouseLeave:F,onNodeContextMenu:Y,onNodeDoubleClick:ne,onNodeDragStart:ae,onNodeDrag:oe,onNodeDragStop:Q,onNodesDelete:fe,onEdgesDelete:xe,onSelectionChange:ye,onSelectionDragStart:le,onSelectionDrag:M,onSelectionDragStop:ee,onSelectionContextMenu:H,onSelectionStart:se,onSelectionEnd:G,connectionMode:V=Bu.Strict,connectionLineType:K=Rc.Bezier,connectionLineStyle:P,connectionLineComponent:O,connectionLineContainerStyle:ve,deleteKeyCode:ge="Backspace",selectionKeyCode:be="Shift",selectionOnDrag:Ce=!1,selectionMode:$=Dp.Full,panActivationKeyCode:z="Space",multiSelectionKeyCode:Z=fh()?"Meta":"Control",zoomActivationKeyCode:he=fh()?"Meta":"Control",snapToGrid:Be=!1,snapGrid:at=RC,onlyRenderVisibleElements:gt=!1,selectNodesOnDrag:ht=!0,nodesDraggable:mt,nodesConnectable:Et,nodesFocusable:Ye,nodeOrigin:Pe=OC,edgesFocusable:Ze,edgesUpdatable:Ct,elementsSelectable:re,defaultViewport:we=FC,minZoom:Me=.5,maxZoom:et=2,translateExtent:it=$f,preventScrolling:qe=!0,nodeExtent:Re,defaultMarkerColor:ot="#b1b1b7",zoomOnScroll:kt=!0,zoomOnPinch:Fe=!0,panOnScroll:Te=!1,panOnScrollSpeed:rt=.5,panOnScrollMode:pn=Ru.Free,zoomOnDoubleClick:An=!0,panOnDrag:sa=!0,onPaneClick:mn,onPaneMouseEnter:Wn,onPaneMouseMove:Jo,onPaneMouseLeave:fr,onPaneScroll:Ko,onPaneContextMenu:ia,children:Ao,onEdgeContextMenu:la,onEdgeDoubleClick:gr,onEdgeMouseEnter:xr,onEdgeMouseMove:vr,onEdgeMouseLeave:Ba,onEdgeUpdate:yr,onEdgeUpdateStart:Va,onEdgeUpdateEnd:Ua,onReconnect:ks,onReconnectStart:Qo,onReconnectEnd:Gn,reconnectRadius:qa=10,edgeUpdaterRadius:En=10,onNodesChange:Xr,onEdgesChange:Ha,noDragClassName:el="nodrag",noWheelClassName:As="nowheel",noPanClassName:Jn="nopan",fitView:ft=!1,fitViewOptions:_n,connectOnClick:Wa=!0,attributionPosition:ni,proOptions:tl,defaultEdgeOptions:jr,elevateNodesOnSelect:Es=!0,elevateEdgesOnSelect:Ga=!1,disableKeyboardA11y:oi=!1,autoPanOnConnect:ca=!0,autoPanOnNodeDrag:We=!0,connectionRadius:Kn=20,isValidConnection:Qn,onError:Eo,style:Yr,id:ai,nodeDragThreshold:Vl,...Zr},ua)=>{const Ja=ai||"1";return me.createElement("div",{...Zr,style:{...Yr,...zC},ref:ua,className:Go(["react-flow",l]),"data-testid":"rf__wrapper",id:ai},me.createElement(Qy,null,me.createElement(TC,{onInit:x,onMove:j,onMoveStart:w,onMoveEnd:N,onNodeClick:h,onEdgeClick:f,onNodeMouseEnter:q,onNodeMouseMove:I,onNodeMouseLeave:F,onNodeContextMenu:Y,onNodeDoubleClick:ne,nodeTypes:p,edgeTypes:m,connectionLineType:K,connectionLineStyle:P,connectionLineComponent:O,connectionLineContainerStyle:ve,selectionKeyCode:be,selectionOnDrag:Ce,selectionMode:$,deleteKeyCode:ge,multiSelectionKeyCode:Z,panActivationKeyCode:z,zoomActivationKeyCode:he,onlyRenderVisibleElements:gt,selectNodesOnDrag:ht,defaultViewport:we,translateExtent:it,minZoom:Me,maxZoom:et,preventScrolling:qe,zoomOnScroll:kt,zoomOnPinch:Fe,zoomOnDoubleClick:An,panOnScroll:Te,panOnScrollSpeed:rt,panOnScrollMode:pn,panOnDrag:sa,onPaneClick:mn,onPaneMouseEnter:Wn,onPaneMouseMove:Jo,onPaneMouseLeave:fr,onPaneScroll:Ko,onPaneContextMenu:ia,onSelectionContextMenu:H,onSelectionStart:se,onSelectionEnd:G,onEdgeContextMenu:la,onEdgeDoubleClick:gr,onEdgeMouseEnter:xr,onEdgeMouseMove:vr,onEdgeMouseLeave:Ba,onReconnect:ks??yr,onReconnectStart:Qo??Va,onReconnectEnd:Gn??Ua,reconnectRadius:qa??En,defaultMarkerColor:ot,noDragClassName:el,noWheelClassName:As,noPanClassName:Jn,elevateEdgesOnSelect:Ga,rfId:Ja,disableKeyboardA11y:oi,nodeOrigin:Pe,nodeExtent:Re}),me.createElement(E1,{nodes:t,edges:n,defaultNodes:r,defaultEdges:s,onConnect:C,onConnectStart:E,onConnectEnd:T,onClickConnectStart:R,onClickConnectEnd:D,nodesDraggable:mt,nodesConnectable:Et,nodesFocusable:Ye,edgesFocusable:Ze,edgesUpdatable:Ct,elementsSelectable:re,elevateNodesOnSelect:Es,minZoom:Me,maxZoom:et,nodeExtent:Re,onNodesChange:Xr,onEdgesChange:Ha,snapToGrid:Be,snapGrid:at,connectionMode:V,translateExtent:it,connectOnClick:Wa,defaultEdgeOptions:jr,fitView:ft,fitViewOptions:_n,onNodesDelete:fe,onEdgesDelete:xe,onNodeDragStart:ae,onNodeDrag:oe,onNodeDragStop:Q,onSelectionDrag:M,onSelectionDragStart:le,onSelectionDragStop:ee,noPanClassName:Jn,nodeOrigin:Pe,rfId:Ja,autoPanOnConnect:ca,autoPanOnNodeDrag:We,onError:Eo,connectionRadius:Kn,isValidConnection:Qn,nodeDragThreshold:Vl}),me.createElement(k1,{onSelectionChange:ye}),Ao,me.createElement(t1,{proOptions:tl,position:ni}),me.createElement(_1,{rfId:Ja,disableKeyboardA11y:oi})))});Xy.displayName="ReactFlow";const LC=t=>{var n;return(n=t.domNode)==null?void 0:n.querySelector(".react-flow__edgelabel-renderer")};function DC({children:t}){const n=on(LC);return n?YN.createPortal(t,n):null}const Yy=({id:t,x:n,y:r,width:s,height:l,style:p,color:m,strokeColor:h,strokeWidth:f,className:x,borderRadius:j,shapeRendering:w,onClick:N,selected:C})=>{const{background:E,backgroundColor:T}=p||{},R=m||E||T;return me.createElement("rect",{className:Go(["react-flow__minimap-node",{selected:C},x]),x:n,y:r,rx:j,ry:j,width:s,height:l,fill:R,stroke:h,strokeWidth:f,shapeRendering:w,onClick:N?D=>N(D,t):void 0})};Yy.displayName="MiniMapNode";var $C=b.memo(Yy);const BC=t=>t.nodeOrigin,VC=t=>t.getNodes().filter(n=>!n.hidden&&n.width&&n.height),lf=t=>t instanceof Function?t:()=>t;function UC({nodeStrokeColor:t="transparent",nodeColor:n="#e2e2e2",nodeClassName:r="",nodeBorderRadius:s=5,nodeStrokeWidth:l=2,nodeComponent:p=$C,onClick:m}){const h=on(VC,Wo),f=on(BC),x=lf(n),j=lf(t),w=lf(r),N=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return me.createElement(me.Fragment,null,h.map(C=>{const{x:E,y:T}=Lu(C,f).positionAbsolute;return me.createElement(p,{key:C.id,x:E,y:T,width:C.width,height:C.height,style:C.style,selected:C.selected,className:w(C),color:x(C),borderRadius:s,strokeColor:j(C),strokeWidth:l,shapeRendering:N,onClick:m,id:C.id})}))}var qC=b.memo(UC);const HC=200,WC=150,GC=t=>{const n=t.getNodes(),r={x:-t.transform[0]/t.transform[2],y:-t.transform[1]/t.transform[2],width:t.width/t.transform[2],height:t.height/t.transform[2]};return{viewBB:r,boundingRect:n.length>0?a1(Ih(n,t.nodeOrigin),r):r,rfId:t.rfId}},JC="react-flow__minimap-desc";function Zy({style:t,className:n,nodeStrokeColor:r="transparent",nodeColor:s="#e2e2e2",nodeClassName:l="",nodeBorderRadius:p=5,nodeStrokeWidth:m=2,nodeComponent:h,maskColor:f="rgb(240, 240, 240, 0.6)",maskStrokeColor:x="none",maskStrokeWidth:j=1,position:w="bottom-right",onClick:N,onNodeClick:C,pannable:E=!1,zoomable:T=!1,ariaLabel:R="React Flow mini map",inversePan:D=!1,zoomStep:q=10,offsetScale:I=5}){const F=po(),Y=b.useRef(null),{boundingRect:ne,viewBB:ae,rfId:oe}=on(GC,Wo),Q=(t==null?void 0:t.width)??HC,fe=(t==null?void 0:t.height)??WC,xe=ne.width/Q,ye=ne.height/fe,le=Math.max(xe,ye),M=le*Q,ee=le*fe,H=I*le,se=ne.x-(M-ne.width)/2-H,G=ne.y-(ee-ne.height)/2-H,V=M+H*2,K=ee+H*2,P=`${JC}-${oe}`,O=b.useRef(0);O.current=le,b.useEffect(()=>{if(Y.current){const be=Kr(Y.current),Ce=Z=>{const{transform:he,d3Selection:Be,d3Zoom:at}=F.getState();if(Z.sourceEvent.type!=="wheel"||!Be||!at)return;const gt=-Z.sourceEvent.deltaY*(Z.sourceEvent.deltaMode===1?.05:Z.sourceEvent.deltaMode?1:.002)*q,ht=he[2]*Math.pow(2,gt);at.scaleTo(Be,ht)},$=Z=>{const{transform:he,d3Selection:Be,d3Zoom:at,translateExtent:gt,width:ht,height:mt}=F.getState();if(Z.sourceEvent.type!=="mousemove"||!Be||!at)return;const Et=O.current*Math.max(1,he[2])*(D?-1:1),Ye={x:he[0]-Z.sourceEvent.movementX*Et,y:he[1]-Z.sourceEvent.movementY*Et},Pe=[[0,0],[ht,mt]],Ze=Ll.translate(Ye.x,Ye.y).scale(he[2]),Ct=at.constrain()(Ze,Pe,gt);at.transform(Be,Ct)},z=sy().on("zoom",E?$:null).on("zoom.wheel",T?Ce:null);return be.call(z),()=>{be.on("zoom",null)}}},[E,T,D,q]);const ve=N?be=>{const Ce=Xs(be);N(be,{x:Ce[0],y:Ce[1]})}:void 0,ge=C?(be,Ce)=>{const $=F.getState().nodeInternals.get(Ce);C(be,$)}:void 0;return me.createElement(zp,{position:w,style:t,className:Go(["react-flow__minimap",n]),"data-testid":"rf__minimap"},me.createElement("svg",{width:Q,height:fe,viewBox:`${se} ${G} ${V} ${K}`,role:"img","aria-labelledby":P,ref:Y,onClick:ve},R&&me.createElement("title",{id:P},R),me.createElement(qC,{onClick:ge,nodeColor:s,nodeStrokeColor:r,nodeBorderRadius:p,nodeClassName:l,nodeStrokeWidth:m,nodeComponent:h}),me.createElement("path",{className:"react-flow__minimap-mask",d:`M${se-H},${G-H}h${V+H*2}v${K+H*2}h${-V-H*2}z
|
|
57
|
+
M${ae.x},${ae.y}h${ae.width}v${ae.height}h${-ae.width}z`,fill:f,fillRule:"evenodd",stroke:x,strokeWidth:j,pointerEvents:"none"})))}Zy.displayName="MiniMap";var KC=b.memo(Zy);function QC(){return me.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},me.createElement("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"}))}function XC(){return me.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},me.createElement("path",{d:"M0 0h32v4.2H0z"}))}function YC(){return me.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},me.createElement("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"}))}function ZC(){return me.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},me.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"}))}function eS(){return me.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},me.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"}))}const Ad=({children:t,className:n,...r})=>me.createElement("button",{type:"button",className:Go(["react-flow__controls-button",n]),...r},t);Ad.displayName="ControlButton";const tS=t=>({isInteractive:t.nodesDraggable||t.nodesConnectable||t.elementsSelectable,minZoomReached:t.transform[2]<=t.minZoom,maxZoomReached:t.transform[2]>=t.maxZoom}),ej=({style:t,showZoom:n=!0,showFitView:r=!0,showInteractive:s=!0,fitViewOptions:l,onZoomIn:p,onZoomOut:m,onFitView:h,onInteractiveChange:f,className:x,children:j,position:w="bottom-left"})=>{const N=po(),[C,E]=b.useState(!1),{isInteractive:T,minZoomReached:R,maxZoomReached:D}=on(tS,Wo),{zoomIn:q,zoomOut:I,fitView:F}=vg();if(b.useEffect(()=>{E(!0)},[]),!C)return null;const Y=()=>{q(),p==null||p()},ne=()=>{I(),m==null||m()},ae=()=>{F(l),h==null||h()},oe=()=>{N.setState({nodesDraggable:!T,nodesConnectable:!T,elementsSelectable:!T}),f==null||f(!T)};return me.createElement(zp,{className:Go(["react-flow__controls",x]),position:w,style:t,"data-testid":"rf__controls"},n&&me.createElement(me.Fragment,null,me.createElement(Ad,{onClick:Y,className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:D},me.createElement(QC,null)),me.createElement(Ad,{onClick:ne,className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:R},me.createElement(XC,null))),r&&me.createElement(Ad,{className:"react-flow__controls-fitview",onClick:ae,title:"fit view","aria-label":"fit view"},me.createElement(YC,null)),s&&me.createElement(Ad,{className:"react-flow__controls-interactive",onClick:oe,title:"toggle interactivity","aria-label":"toggle interactivity"},T?me.createElement(eS,null):me.createElement(ZC,null)),j)};ej.displayName="Controls";var nS=b.memo(ej),ei;(function(t){t.Lines="lines",t.Dots="dots",t.Cross="cross"})(ei||(ei={}));function oS({color:t,dimensions:n,lineWidth:r}){return me.createElement("path",{stroke:t,strokeWidth:r,d:`M${n[0]/2} 0 V${n[1]} M0 ${n[1]/2} H${n[0]}`})}function aS({color:t,radius:n}){return me.createElement("circle",{cx:n,cy:n,r:n,fill:t})}const rS={[ei.Dots]:"#91919a",[ei.Lines]:"#eee",[ei.Cross]:"#e2e2e2"},sS={[ei.Dots]:1,[ei.Lines]:1,[ei.Cross]:6},iS=t=>({transform:t.transform,patternId:`pattern-${t.rfId}`});function tj({id:t,variant:n=ei.Dots,gap:r=20,size:s,lineWidth:l=1,offset:p=2,color:m,style:h,className:f}){const x=b.useRef(null),{transform:j,patternId:w}=on(iS,Wo),N=m||rS[n],C=s||sS[n],E=n===ei.Dots,T=n===ei.Cross,R=Array.isArray(r)?r:[r,r],D=[R[0]*j[2]||1,R[1]*j[2]||1],q=C*j[2],I=T?[q,q]:D,F=E?[q/p,q/p]:[I[0]/p,I[1]/p];return me.createElement("svg",{className:Go(["react-flow__background",f]),style:{...h,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:x,"data-testid":"rf__background"},me.createElement("pattern",{id:w+t,x:j[0]%D[0],y:j[1]%D[1],width:D[0],height:D[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${F[0]},-${F[1]})`},E?me.createElement(aS,{color:N,radius:q/p}):me.createElement(oS,{dimensions:I,color:N,lineWidth:l})),me.createElement("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${w+t})`}))}tj.displayName="Background";var lS=b.memo(tj),_d;(function(t){t.Line="line",t.Handle="handle"})(_d||(_d={}));function cS({width:t,prevWidth:n,height:r,prevHeight:s,invertX:l,invertY:p}){const m=t-n,h=r-s,f=[m>0?1:m<0?-1:0,h>0?1:h<0?-1:0];return m&&l&&(f[0]=f[0]*-1),h&&p&&(f[1]=f[1]*-1),f}const nj={width:0,height:0,x:0,y:0},uS={...nj,pointerX:0,pointerY:0,aspectRatio:1};function dS({nodeId:t,position:n,variant:r=_d.Handle,className:s,style:l={},children:p,color:m,minWidth:h=10,minHeight:f=10,maxWidth:x=Number.MAX_VALUE,maxHeight:j=Number.MAX_VALUE,keepAspectRatio:w=!1,shouldResize:N,onResizeStart:C,onResize:E,onResizeEnd:T}){const R=xy(),D=typeof t=="string"?t:R,q=po(),I=b.useRef(null),F=b.useRef(uS),Y=b.useRef(nj),ne=By(),ae=r===_d.Line?"right":"bottom-right",oe=n??ae;b.useEffect(()=>{if(!I.current||!D)return;const ye=Kr(I.current),le=oe.includes("right")||oe.includes("left"),M=oe.includes("bottom")||oe.includes("top"),ee=oe.includes("left"),H=oe.includes("top"),se=Wv().on("start",G=>{const V=q.getState().nodeInternals.get(D),{xSnapped:K,ySnapped:P}=ne(G);Y.current={width:(V==null?void 0:V.width)??0,height:(V==null?void 0:V.height)??0,x:(V==null?void 0:V.position.x)??0,y:(V==null?void 0:V.position.y)??0},F.current={...Y.current,pointerX:K,pointerY:P,aspectRatio:Y.current.width/Y.current.height},C==null||C(G,{...Y.current})}).on("drag",G=>{const{nodeInternals:V,triggerNodeChanges:K}=q.getState(),{xSnapped:P,ySnapped:O}=ne(G),ve=V.get(D);if(ve){const ge=[],{pointerX:be,pointerY:Ce,width:$,height:z,x:Z,y:he,aspectRatio:Be}=F.current,{x:at,y:gt,width:ht,height:mt}=Y.current,Et=Math.floor(le?P-be:0),Ye=Math.floor(M?O-Ce:0);let Pe=Lc($+(ee?-Et:Et),h,x),Ze=Lc(z+(H?-Ye:Ye),f,j);if(w){const it=Pe/Ze,qe=le&&M,Re=le&&!M,ot=M&&!le;Pe=it<=Be&&qe||ot?Ze*Be:Pe,Ze=it>Be&&qe||Re?Pe/Be:Ze,Pe>=x?(Pe=x,Ze=x/Be):Pe<=h&&(Pe=h,Ze=h/Be),Ze>=j?(Ze=j,Pe=j*Be):Ze<=f&&(Ze=f,Pe=f*Be)}const Ct=Pe!==ht,re=Ze!==mt;if(ee||H){const it=ee?Z-(Pe-$):Z,qe=H?he-(Ze-z):he,Re=it!==at&&Ct,ot=qe!==gt&&re;if(Re||ot){const kt={id:ve.id,type:"position",position:{x:Re?it:at,y:ot?qe:gt}};ge.push(kt),Y.current.x=kt.position.x,Y.current.y=kt.position.y}}if(Ct||re){const it={id:D,type:"dimensions",updateStyle:!0,resizing:!0,dimensions:{width:Pe,height:Ze}};ge.push(it),Y.current.width=Pe,Y.current.height=Ze}if(ge.length===0)return;const we=cS({width:Y.current.width,prevWidth:ht,height:Y.current.height,prevHeight:mt,invertX:ee,invertY:H}),Me={...Y.current,direction:we};if((N==null?void 0:N(G,Me))===!1)return;E==null||E(G,Me),K(ge)}}).on("end",G=>{const V={id:D,type:"dimensions",resizing:!1};T==null||T(G,{...Y.current}),q.getState().triggerNodeChanges([V])});return ye.call(se),()=>{ye.on(".drag",null)}},[D,oe,h,f,x,j,w,ne,C,E,T]);const Q=oe.split("-"),fe=r===_d.Line?"borderColor":"backgroundColor",xe=m?{...l,[fe]:m}:l;return me.createElement("div",{className:Go(["react-flow__resize-control","nodrag",...Q,r,s]),ref:I,style:xe},p)}var Ox=b.memo(dS);const pS=["top-left","top-right","bottom-left","bottom-right"],mS=["top","right","bottom","left"];function hS({nodeId:t,isVisible:n=!0,handleClassName:r,handleStyle:s,lineClassName:l,lineStyle:p,color:m,minWidth:h=10,minHeight:f=10,maxWidth:x=Number.MAX_VALUE,maxHeight:j=Number.MAX_VALUE,keepAspectRatio:w=!1,shouldResize:N,onResizeStart:C,onResize:E,onResizeEnd:T}){return n?me.createElement(me.Fragment,null,mS.map(R=>me.createElement(Ox,{key:R,className:l,style:p,nodeId:t,position:R,variant:_d.Line,color:m,minWidth:h,minHeight:f,maxWidth:x,maxHeight:j,onResizeStart:C,keepAspectRatio:w,shouldResize:N,onResize:E,onResizeEnd:T})),pS.map(R=>me.createElement(Ox,{key:R,className:r,style:s,nodeId:t,position:R,color:m,minWidth:h,minHeight:f,maxWidth:x,maxHeight:j,onResizeStart:C,keepAspectRatio:w,shouldResize:N,onResize:E,onResizeEnd:T}))):null}/**
|
|
58
|
+
* @license lucide-react v0.468.0 - ISC
|
|
59
|
+
*
|
|
60
|
+
* This source code is licensed under the ISC license.
|
|
61
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
62
|
+
*/const fS=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),oj=(...t)=>t.filter((n,r,s)=>!!n&&n.trim()!==""&&s.indexOf(n)===r).join(" ").trim();/**
|
|
63
|
+
* @license lucide-react v0.468.0 - ISC
|
|
64
|
+
*
|
|
65
|
+
* This source code is licensed under the ISC license.
|
|
66
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
67
|
+
*/var gS={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
|
|
68
|
+
* @license lucide-react v0.468.0 - ISC
|
|
69
|
+
*
|
|
70
|
+
* This source code is licensed under the ISC license.
|
|
71
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
72
|
+
*/const xS=b.forwardRef(({color:t="currentColor",size:n=24,strokeWidth:r=2,absoluteStrokeWidth:s,className:l="",children:p,iconNode:m,...h},f)=>b.createElement("svg",{ref:f,...gS,width:n,height:n,stroke:t,strokeWidth:s?Number(r)*24/Number(n):r,className:oj("lucide",l),...h},[...m.map(([x,j])=>b.createElement(x,j)),...Array.isArray(p)?p:[p]]));/**
|
|
73
|
+
* @license lucide-react v0.468.0 - ISC
|
|
74
|
+
*
|
|
75
|
+
* This source code is licensed under the ISC license.
|
|
76
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
77
|
+
*/const Ve=(t,n)=>{const r=b.forwardRef(({className:s,...l},p)=>b.createElement(xS,{ref:p,iconNode:n,className:oj(`lucide-${fS(t)}`,s),...l}));return r.displayName=`${t}`,r};/**
|
|
78
|
+
* @license lucide-react v0.468.0 - ISC
|
|
79
|
+
*
|
|
80
|
+
* This source code is licensed under the ISC license.
|
|
81
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
82
|
+
*/const vS=Ve("ArrowDown",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]);/**
|
|
83
|
+
* @license lucide-react v0.468.0 - ISC
|
|
84
|
+
*
|
|
85
|
+
* This source code is licensed under the ISC license.
|
|
86
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
87
|
+
*/const yS=Ve("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/**
|
|
88
|
+
* @license lucide-react v0.468.0 - ISC
|
|
89
|
+
*
|
|
90
|
+
* This source code is licensed under the ISC license.
|
|
91
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
92
|
+
*/const rh=Ve("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/**
|
|
93
|
+
* @license lucide-react v0.468.0 - ISC
|
|
94
|
+
*
|
|
95
|
+
* This source code is licensed under the ISC license.
|
|
96
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
97
|
+
*/const jS=Ve("ArrowUpDown",[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]]);/**
|
|
98
|
+
* @license lucide-react v0.468.0 - ISC
|
|
99
|
+
*
|
|
100
|
+
* This source code is licensed under the ISC license.
|
|
101
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
102
|
+
*/const bS=Ve("ArrowUp",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);/**
|
|
103
|
+
* @license lucide-react v0.468.0 - ISC
|
|
104
|
+
*
|
|
105
|
+
* This source code is licensed under the ISC license.
|
|
106
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
107
|
+
*/const Ho=Ve("Bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);/**
|
|
108
|
+
* @license lucide-react v0.468.0 - ISC
|
|
109
|
+
*
|
|
110
|
+
* This source code is licensed under the ISC license.
|
|
111
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
112
|
+
*/const Bf=Ve("Braces",[["path",{d:"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1",key:"ezmyqa"}],["path",{d:"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1",key:"e1hn23"}]]);/**
|
|
113
|
+
* @license lucide-react v0.468.0 - ISC
|
|
114
|
+
*
|
|
115
|
+
* This source code is licensed under the ISC license.
|
|
116
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
117
|
+
*/const aj=Ve("Bug",[["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M9 7.13v-1a3.003 3.003 0 1 1 6 0v1",key:"d7y7pr"}],["path",{d:"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6",key:"xs1cw7"}],["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M6.53 9C4.6 8.8 3 7.1 3 5",key:"32zzws"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"M3 21c0-2.1 1.7-3.9 3.8-4",key:"4p0ekp"}],["path",{d:"M20.97 5c0 2.1-1.6 3.8-3.5 4",key:"18gb23"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M17.2 17c2.1.1 3.8 1.9 3.8 4",key:"k3fwyw"}]]);/**
|
|
118
|
+
* @license lucide-react v0.468.0 - ISC
|
|
119
|
+
*
|
|
120
|
+
* This source code is licensed under the ISC license.
|
|
121
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
122
|
+
*/const Bm=Ve("Building2",[["path",{d:"M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z",key:"1b4qmf"}],["path",{d:"M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2",key:"i71pzd"}],["path",{d:"M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2",key:"10jefs"}],["path",{d:"M10 6h4",key:"1itunk"}],["path",{d:"M10 10h4",key:"tcdvrf"}],["path",{d:"M10 14h4",key:"kelpxr"}],["path",{d:"M10 18h4",key:"1ulq68"}]]);/**
|
|
123
|
+
* @license lucide-react v0.468.0 - ISC
|
|
124
|
+
*
|
|
125
|
+
* This source code is licensed under the ISC license.
|
|
126
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
127
|
+
*/const xh=Ve("ChartColumn",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);/**
|
|
128
|
+
* @license lucide-react v0.468.0 - ISC
|
|
129
|
+
*
|
|
130
|
+
* This source code is licensed under the ISC license.
|
|
131
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
132
|
+
*/const Rx=Ve("ChartLine",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"m19 9-5 5-4-4-3 3",key:"2osh9i"}]]);/**
|
|
133
|
+
* @license lucide-react v0.468.0 - ISC
|
|
134
|
+
*
|
|
135
|
+
* This source code is licensed under the ISC license.
|
|
136
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
137
|
+
*/const wS=Ve("ChartPie",[["path",{d:"M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z",key:"pzmjnu"}],["path",{d:"M21.21 15.89A10 10 0 1 1 8 2.83",key:"k2fpak"}]]);/**
|
|
138
|
+
* @license lucide-react v0.468.0 - ISC
|
|
139
|
+
*
|
|
140
|
+
* This source code is licensed under the ISC license.
|
|
141
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
142
|
+
*/const Ji=Ve("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/**
|
|
143
|
+
* @license lucide-react v0.468.0 - ISC
|
|
144
|
+
*
|
|
145
|
+
* This source code is licensed under the ISC license.
|
|
146
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
147
|
+
*/const Sp=Ve("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/**
|
|
148
|
+
* @license lucide-react v0.468.0 - ISC
|
|
149
|
+
*
|
|
150
|
+
* This source code is licensed under the ISC license.
|
|
151
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
152
|
+
*/const rj=Ve("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/**
|
|
153
|
+
* @license lucide-react v0.468.0 - ISC
|
|
154
|
+
*
|
|
155
|
+
* This source code is licensed under the ISC license.
|
|
156
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
157
|
+
*/const bg=Ve("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/**
|
|
158
|
+
* @license lucide-react v0.468.0 - ISC
|
|
159
|
+
*
|
|
160
|
+
* This source code is licensed under the ISC license.
|
|
161
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
162
|
+
*/const sj=Ve("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/**
|
|
163
|
+
* @license lucide-react v0.468.0 - ISC
|
|
164
|
+
*
|
|
165
|
+
* This source code is licensed under the ISC license.
|
|
166
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
167
|
+
*/const cf=Ve("Cloud",[["path",{d:"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z",key:"p7xjir"}]]);/**
|
|
168
|
+
* @license lucide-react v0.468.0 - ISC
|
|
169
|
+
*
|
|
170
|
+
* This source code is licensed under the ISC license.
|
|
171
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
172
|
+
*/const NS=Ve("CodeXml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);/**
|
|
173
|
+
* @license lucide-react v0.468.0 - ISC
|
|
174
|
+
*
|
|
175
|
+
* This source code is licensed under the ISC license.
|
|
176
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
177
|
+
*/const nn=Ve("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/**
|
|
178
|
+
* @license lucide-react v0.468.0 - ISC
|
|
179
|
+
*
|
|
180
|
+
* This source code is licensed under the ISC license.
|
|
181
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
182
|
+
*/const Ss=Ve("Database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);/**
|
|
183
|
+
* @license lucide-react v0.468.0 - ISC
|
|
184
|
+
*
|
|
185
|
+
* This source code is licensed under the ISC license.
|
|
186
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
187
|
+
*/const vh=Ve("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/**
|
|
188
|
+
* @license lucide-react v0.468.0 - ISC
|
|
189
|
+
*
|
|
190
|
+
* This source code is licensed under the ISC license.
|
|
191
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
192
|
+
*/const CS=Ve("Ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]);/**
|
|
193
|
+
* @license lucide-react v0.468.0 - ISC
|
|
194
|
+
*
|
|
195
|
+
* This source code is licensed under the ISC license.
|
|
196
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
197
|
+
*/const Od=Ve("FileJson",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"1oajmo"}],["path",{d:"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"mpwhp6"}]]);/**
|
|
198
|
+
* @license lucide-react v0.468.0 - ISC
|
|
199
|
+
*
|
|
200
|
+
* This source code is licensed under the ISC license.
|
|
201
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
202
|
+
*/const ij=Ve("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);/**
|
|
203
|
+
* @license lucide-react v0.468.0 - ISC
|
|
204
|
+
*
|
|
205
|
+
* This source code is licensed under the ISC license.
|
|
206
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
207
|
+
*/const SS=Ve("Flag",[["path",{d:"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z",key:"i9b6wo"}],["line",{x1:"4",x2:"4",y1:"22",y2:"15",key:"1cm3nv"}]]);/**
|
|
208
|
+
* @license lucide-react v0.468.0 - ISC
|
|
209
|
+
*
|
|
210
|
+
* This source code is licensed under the ISC license.
|
|
211
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
212
|
+
*/const Vf=Ve("FolderPlus",[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);/**
|
|
213
|
+
* @license lucide-react v0.468.0 - ISC
|
|
214
|
+
*
|
|
215
|
+
* This source code is licensed under the ISC license.
|
|
216
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
217
|
+
*/const lj=Ve("Folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);/**
|
|
218
|
+
* @license lucide-react v0.468.0 - ISC
|
|
219
|
+
*
|
|
220
|
+
* This source code is licensed under the ISC license.
|
|
221
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
222
|
+
*/const Qi=Ve("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);/**
|
|
223
|
+
* @license lucide-react v0.468.0 - ISC
|
|
224
|
+
*
|
|
225
|
+
* This source code is licensed under the ISC license.
|
|
226
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
227
|
+
*/const uf=Ve("GripVertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);/**
|
|
228
|
+
* @license lucide-react v0.468.0 - ISC
|
|
229
|
+
*
|
|
230
|
+
* This source code is licensed under the ISC license.
|
|
231
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
232
|
+
*/const cj=Ve("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);/**
|
|
233
|
+
* @license lucide-react v0.468.0 - ISC
|
|
234
|
+
*
|
|
235
|
+
* This source code is licensed under the ISC license.
|
|
236
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
237
|
+
*/const uj=Ve("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);/**
|
|
238
|
+
* @license lucide-react v0.468.0 - ISC
|
|
239
|
+
*
|
|
240
|
+
* This source code is licensed under the ISC license.
|
|
241
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
242
|
+
*/const kS=Ve("Library",[["path",{d:"m16 6 4 14",key:"ji33uf"}],["path",{d:"M12 6v14",key:"1n7gus"}],["path",{d:"M8 8v12",key:"1gg7y9"}],["path",{d:"M4 4v16",key:"6qkkli"}]]);/**
|
|
243
|
+
* @license lucide-react v0.468.0 - ISC
|
|
244
|
+
*
|
|
245
|
+
* This source code is licensed under the ISC license.
|
|
246
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
247
|
+
*/const Ut=Ve("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/**
|
|
248
|
+
* @license lucide-react v0.468.0 - ISC
|
|
249
|
+
*
|
|
250
|
+
* This source code is licensed under the ISC license.
|
|
251
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
252
|
+
*/const AS=Ve("LogIn",[["path",{d:"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4",key:"u53s6r"}],["polyline",{points:"10 17 15 12 10 7",key:"1ail0h"}],["line",{x1:"15",x2:"3",y1:"12",y2:"12",key:"v6grx8"}]]);/**
|
|
253
|
+
* @license lucide-react v0.468.0 - ISC
|
|
254
|
+
*
|
|
255
|
+
* This source code is licensed under the ISC license.
|
|
256
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
257
|
+
*/const ES=Ve("LogOut",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);/**
|
|
258
|
+
* @license lucide-react v0.468.0 - ISC
|
|
259
|
+
*
|
|
260
|
+
* This source code is licensed under the ISC license.
|
|
261
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
262
|
+
*/const Pu=Ve("Maximize2",[["polyline",{points:"15 3 21 3 21 9",key:"mznyad"}],["polyline",{points:"9 21 3 21 3 15",key:"1avn1i"}],["line",{x1:"21",x2:"14",y1:"3",y2:"10",key:"ota7mn"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]);/**
|
|
263
|
+
* @license lucide-react v0.468.0 - ISC
|
|
264
|
+
*
|
|
265
|
+
* This source code is licensed under the ISC license.
|
|
266
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
267
|
+
*/const dj=Ve("MessageCircle",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]]);/**
|
|
268
|
+
* @license lucide-react v0.468.0 - ISC
|
|
269
|
+
*
|
|
270
|
+
* This source code is licensed under the ISC license.
|
|
271
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
272
|
+
*/const MS=Ve("MessageSquarePlus",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}],["path",{d:"M12 7v6",key:"lw1j43"}],["path",{d:"M9 10h6",key:"9gxzsh"}]]);/**
|
|
273
|
+
* @license lucide-react v0.468.0 - ISC
|
|
274
|
+
*
|
|
275
|
+
* This source code is licensed under the ISC license.
|
|
276
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
277
|
+
*/const TS=Ve("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);/**
|
|
278
|
+
* @license lucide-react v0.468.0 - ISC
|
|
279
|
+
*
|
|
280
|
+
* This source code is licensed under the ISC license.
|
|
281
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
282
|
+
*/const IS=Ve("Minimize2",[["polyline",{points:"4 14 10 14 10 20",key:"11kfnr"}],["polyline",{points:"20 10 14 10 14 4",key:"rlmsce"}],["line",{x1:"14",x2:"21",y1:"10",y2:"3",key:"o5lafz"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]);/**
|
|
283
|
+
* @license lucide-react v0.468.0 - ISC
|
|
284
|
+
*
|
|
285
|
+
* This source code is licensed under the ISC license.
|
|
286
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
287
|
+
*/const PS=Ve("Monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);/**
|
|
288
|
+
* @license lucide-react v0.468.0 - ISC
|
|
289
|
+
*
|
|
290
|
+
* This source code is licensed under the ISC license.
|
|
291
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
292
|
+
*/const _S=Ve("Network",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]);/**
|
|
293
|
+
* @license lucide-react v0.468.0 - ISC
|
|
294
|
+
*
|
|
295
|
+
* This source code is licensed under the ISC license.
|
|
296
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
297
|
+
*/const Uf=Ve("PanelsTopLeft",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]]);/**
|
|
298
|
+
* @license lucide-react v0.468.0 - ISC
|
|
299
|
+
*
|
|
300
|
+
* This source code is licensed under the ISC license.
|
|
301
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
302
|
+
*/const Tc=Ve("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);/**
|
|
303
|
+
* @license lucide-react v0.468.0 - ISC
|
|
304
|
+
*
|
|
305
|
+
* This source code is licensed under the ISC license.
|
|
306
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
307
|
+
*/const yd=Ve("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/**
|
|
308
|
+
* @license lucide-react v0.468.0 - ISC
|
|
309
|
+
*
|
|
310
|
+
* This source code is licensed under the ISC license.
|
|
311
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
312
|
+
*/const un=Ve("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/**
|
|
313
|
+
* @license lucide-react v0.468.0 - ISC
|
|
314
|
+
*
|
|
315
|
+
* This source code is licensed under the ISC license.
|
|
316
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
317
|
+
*/const OS=Ve("RefreshCcw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]]);/**
|
|
318
|
+
* @license lucide-react v0.468.0 - ISC
|
|
319
|
+
*
|
|
320
|
+
* This source code is licensed under the ISC license.
|
|
321
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
322
|
+
*/const kp=Ve("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/**
|
|
323
|
+
* @license lucide-react v0.468.0 - ISC
|
|
324
|
+
*
|
|
325
|
+
* This source code is licensed under the ISC license.
|
|
326
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
327
|
+
*/const pj=Ve("Repeat2",[["path",{d:"m2 9 3-3 3 3",key:"1ltn5i"}],["path",{d:"M13 18H7a2 2 0 0 1-2-2V6",key:"1r6tfw"}],["path",{d:"m22 15-3 3-3-3",key:"4rnwn2"}],["path",{d:"M11 6h6a2 2 0 0 1 2 2v10",key:"2f72bc"}]]);/**
|
|
328
|
+
* @license lucide-react v0.468.0 - ISC
|
|
329
|
+
*
|
|
330
|
+
* This source code is licensed under the ISC license.
|
|
331
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
332
|
+
*/const Rl=Ve("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);/**
|
|
333
|
+
* @license lucide-react v0.468.0 - ISC
|
|
334
|
+
*
|
|
335
|
+
* This source code is licensed under the ISC license.
|
|
336
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
337
|
+
*/const Oc=Ve("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/**
|
|
338
|
+
* @license lucide-react v0.468.0 - ISC
|
|
339
|
+
*
|
|
340
|
+
* This source code is licensed under the ISC license.
|
|
341
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
342
|
+
*/const mj=Ve("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);/**
|
|
343
|
+
* @license lucide-react v0.468.0 - ISC
|
|
344
|
+
*
|
|
345
|
+
* This source code is licensed under the ISC license.
|
|
346
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
347
|
+
*/const yh=Ve("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/**
|
|
348
|
+
* @license lucide-react v0.468.0 - ISC
|
|
349
|
+
*
|
|
350
|
+
* This source code is licensed under the ISC license.
|
|
351
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
352
|
+
*/const Zs=Ve("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/**
|
|
353
|
+
* @license lucide-react v0.468.0 - ISC
|
|
354
|
+
*
|
|
355
|
+
* This source code is licensed under the ISC license.
|
|
356
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
357
|
+
*/const hj=Ve("SquareTerminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);/**
|
|
358
|
+
* @license lucide-react v0.468.0 - ISC
|
|
359
|
+
*
|
|
360
|
+
* This source code is licensed under the ISC license.
|
|
361
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
362
|
+
*/const RS=Ve("Table2",[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",key:"gugj83"}]]);/**
|
|
363
|
+
* @license lucide-react v0.468.0 - ISC
|
|
364
|
+
*
|
|
365
|
+
* This source code is licensed under the ISC license.
|
|
366
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
367
|
+
*/const FS=Ve("TextCursorInput",[["path",{d:"M5 4h1a3 3 0 0 1 3 3 3 3 0 0 1 3-3h1",key:"18xjzo"}],["path",{d:"M13 20h-1a3 3 0 0 1-3-3 3 3 0 0 1-3 3H5",key:"fj48gi"}],["path",{d:"M5 16H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h1",key:"1n9rhb"}],["path",{d:"M13 8h7a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-7",key:"13ksps"}],["path",{d:"M9 7v10",key:"1vc8ob"}]]);/**
|
|
368
|
+
* @license lucide-react v0.468.0 - ISC
|
|
369
|
+
*
|
|
370
|
+
* This source code is licensed under the ISC license.
|
|
371
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
372
|
+
*/const Nt=Ve("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);/**
|
|
373
|
+
* @license lucide-react v0.468.0 - ISC
|
|
374
|
+
*
|
|
375
|
+
* This source code is licensed under the ISC license.
|
|
376
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
377
|
+
*/const Vm=Ve("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/**
|
|
378
|
+
* @license lucide-react v0.468.0 - ISC
|
|
379
|
+
*
|
|
380
|
+
* This source code is licensed under the ISC license.
|
|
381
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
382
|
+
*/const Ic=Ve("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);/**
|
|
383
|
+
* @license lucide-react v0.468.0 - ISC
|
|
384
|
+
*
|
|
385
|
+
* This source code is licensed under the ISC license.
|
|
386
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
387
|
+
*/const Fx=Ve("UserPlus",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]);/**
|
|
388
|
+
* @license lucide-react v0.468.0 - ISC
|
|
389
|
+
*
|
|
390
|
+
* This source code is licensed under the ISC license.
|
|
391
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
392
|
+
*/const Dl=Ve("WandSparkles",[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72",key:"ul74o6"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M5 6v4",key:"ilb8ba"}],["path",{d:"M19 14v4",key:"blhpug"}],["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M7 8H3",key:"zfb6yr"}],["path",{d:"M21 16h-4",key:"1cnmox"}],["path",{d:"M11 3H9",key:"1obp7u"}]]);/**
|
|
393
|
+
* @license lucide-react v0.468.0 - ISC
|
|
394
|
+
*
|
|
395
|
+
* This source code is licensed under the ISC license.
|
|
396
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
397
|
+
*/const fj=Ve("Webhook",[["path",{d:"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2",key:"q3hayz"}],["path",{d:"m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06",key:"1go1hn"}],["path",{d:"m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8",key:"qlwsc0"}]]);/**
|
|
398
|
+
* @license lucide-react v0.468.0 - ISC
|
|
399
|
+
*
|
|
400
|
+
* This source code is licensed under the ISC license.
|
|
401
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
402
|
+
*/const zS=Ve("Wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",key:"cbrjhi"}]]);/**
|
|
403
|
+
* @license lucide-react v0.468.0 - ISC
|
|
404
|
+
*
|
|
405
|
+
* This source code is licensed under the ISC license.
|
|
406
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
407
|
+
*/const Vt=Ve("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);function Um(t){t.preventDefault(),t.stopPropagation()}function LS({id:t,sourceX:n,sourceY:r,targetX:s,targetY:l,sourcePosition:p,targetPosition:m,markerEnd:h,style:f,data:x,selected:j}){const[w,N]=b.useState(!1),C=b.useRef(null),E=x||{},[T,R,D]=hg({sourceX:n,sourceY:r,sourcePosition:p,targetX:s,targetY:l,targetPosition:m}),q=w||j,I=!!E.label,F=()=>{C.current&&window.clearTimeout(C.current),C.current=null,N(!0)},Y=()=>{C.current&&window.clearTimeout(C.current),C.current=window.setTimeout(()=>{N(!1),C.current=null},160)};return e.jsxs(e.Fragment,{children:[e.jsx("path",{id:t,className:"react-flow__edge-path canvas-edge-path",d:T,markerEnd:h,style:f}),e.jsx("path",{className:"canvas-edge-hit-path",d:T,onMouseEnter:F,onMouseLeave:Y}),e.jsx(DC,{children:e.jsxs("div",{className:`canvas-edge-tools nodrag nopan ${q?"is-active":""} ${I?"has-label":""}`,style:{transform:`translate(-50%, -50%) translate(${R}px, ${D}px)`,pointerEvents:q?"all":"none"},onMouseEnter:F,onMouseLeave:Y,children:[I&&e.jsx("span",{className:"canvas-edge-label",children:E.label}),e.jsxs("span",{className:"canvas-edge-actions",children:[e.jsx("button",{type:"button",title:"Editar ligacao","aria-label":"Editar ligacao",onMouseDown:Um,onClick:ne=>{var ae;Um(ne),(ae=E.onEdit)==null||ae.call(E,t)},children:e.jsx(Tc,{size:12})}),e.jsx("button",{type:"button",title:"Excluir ligacao","aria-label":"Excluir ligacao",className:"danger-edge-tool",onMouseDown:Um,onClick:ne=>{var ae;Um(ne),(ae=E.onDelete)==null||ae.call(E,t)},children:e.jsx(Nt,{size:12})})]})]})})]})}const DS=180,$S=156,gj={message:{label:"Mensagem",color:"#2563eb",Icon:TS},richMessage:{label:"Mensagem rica",color:"#0891b2",Icon:Uf},input:{label:"Input",color:"#0f766e",Icon:FS},api:{label:"API",color:"#ea580c",Icon:Bf},condition:{label:"Condição",color:"#7c3aed",Icon:bg},end:{label:"Fim",color:"#475569",Icon:SS},group:{label:"Encapsulador",color:"#0d9488",Icon:lj},component:{label:"Componente",color:"#2563eb",Icon:Ho}};function BS(t){var n,r,s,l,p,m,h,f,x,j,w,N,C,E,T,R,D,q;return((n=t.component)==null?void 0:n.type)==="debug"?{label:"Debug",color:"#f59e0b",Icon:aj}:((r=t.component)==null?void 0:r.type)==="rag"?{label:"RAG IA Gen",color:"#2563eb",Icon:Ss}:((s=t.component)==null?void 0:s.type)==="openaiGen"?t.component.agentRole==="orchestrator"?{label:"Orquestrador",color:"#2563eb",Icon:Ho}:t.component.agentRole==="subagent"?{label:"Subagent",color:"#dc2626",Icon:Ho}:{label:"Agente",color:"#2563eb",Icon:Ho}:((l=t.component)==null?void 0:l.type)==="agentPlan"?{label:"Agent Plan",color:"#4f46e5",Icon:Qi}:((p=t.component)==null?void 0:p.type)==="azureOpenAI"?{label:"Azure OpenAI",color:"#0ea5e9",Icon:Ho}:((m=t.component)==null?void 0:m.type)==="milvus"?{label:"Milvus",color:"#7c3aed",Icon:Ss}:((h=t.component)==null?void 0:h.type)==="azureSearch"?{label:"Azure Search",color:"#16a34a",Icon:Ss}:((f=t.component)==null?void 0:f.type)==="azureBlob"?{label:"Azure Blob",color:"#0891b2",Icon:lj}:((x=t.component)==null?void 0:x.type)==="files"?{label:"Arquivos",color:"#0f766e",Icon:ij}:((j=t.component)==null?void 0:j.type)==="mongodb"?{label:"MongoDB",color:"#16a34a",Icon:Ss}:((w=t.component)==null?void 0:w.type)==="context"?{label:"Contexto",color:"#0891b2",Icon:Bf}:((N=t.component)==null?void 0:N.type)==="dashboard"?{label:"Dashboard",color:"#7c3aed",Icon:xh}:((C=t.component)==null?void 0:C.type)==="cron"?{label:"CRON",color:"#0f766e",Icon:sj}:((E=t.component)==null?void 0:E.type)==="loop"?{label:"Loop",color:"#0ea5e9",Icon:pj}:((T=t.component)==null?void 0:T.type)==="flowRouter"?{label:"Supervisor",color:"#9333ea",Icon:Qi}:((R=t.component)==null?void 0:R.type)==="webhook"?{label:"Webhook",color:"#dc2626",Icon:fj}:((D=t.component)==null?void 0:D.type)==="mcp"?{label:"MCP",color:"#0f766e",Icon:Bf}:((q=t.component)==null?void 0:q.type)==="approval"?{label:"Aprovação",color:"#be123c",Icon:Zs}:gj.component}function Hi(t){t.stopPropagation()}function VS({data:t,selected:n}){var ae;const r=t.step,s=r.type==="component"?BS(r):gj[r.type],l=s.Icon,p=r.type==="group",m=!!(p&&((ae=r.group)!=null&&ae.collapsed)),h=r.type==="condition"?r.instruction||r.condition||"":r.instruction||"",f=r.type==="end"?s.label:r.title||s.label,x=t.editingField||null,[j,w]=b.useState(r.title||""),[N,C]=b.useState(h),E=b.useRef(!1);b.useEffect(()=>{E.current=!1,x==="title"&&w(r.title||""),x==="instruction"&&C(h)},[x,r.id,h]);const T=()=>{var oe;return(oe=t.onInlineEdit)==null?void 0:oe.call(t,r.id,null)},R=()=>{var oe;j!==(r.title||"")&&((oe=t.onUpdate)==null||oe.call(t,r.id,{title:j})),T()},D=()=>{var oe;N!==h&&((oe=t.onUpdate)==null||oe.call(t,r.id,{instruction:N})),T()},q=()=>{E.current=!0,w(r.title||""),C(h),T()},I=()=>{if(E.current){E.current=!1;return}R()},F=()=>{if(E.current){E.current=!1;return}D()},Y=oe=>Q=>{var xe;if(p&&oe==="instruction")return;const fe=Q;fe.ctrlKey||fe.metaKey||(Hi(Q),(xe=t.onInlineEdit)==null||xe.call(t,r.id,oe))},ne=oe=>Q=>{var fe;p&&oe==="instruction"||(Hi(Q),(Q.key==="Enter"||Q.key===" ")&&(Q.preventDefault(),(fe=t.onInlineEdit)==null||fe.call(t,r.id,oe)))};return e.jsxs("div",{className:`canvas-node ${n?"canvas-node-selected":""} ${p?"canvas-node-group":""} ${m?"canvas-node-group-collapsed":""}`,title:`${f} - ${s.label}${h?`
|
|
408
|
+
${h}`:""}`,style:{borderColor:n?s.color:`${s.color}55`,boxShadow:n&&p?`0 0 0 4px ${s.color}20, 0 14px 30px rgba(15,23,42,0.12)`:void 0},children:[p&&e.jsx(hS,{isVisible:!m,minWidth:DS,minHeight:$S,color:s.color,handleClassName:"canvas-group-resize-handle",lineClassName:"canvas-group-resize-line",onResizeEnd:(oe,Q)=>{var fe;(fe=t.onResizeGroup)==null||fe.call(t,r.id,{width:Q.width,height:Q.height})}}),e.jsx(Ld,{type:"target",position:nt.Left,className:"node-handle",style:{background:s.color}}),e.jsxs("div",{className:"canvas-node-header",style:{background:`${s.color}13`,borderColor:`${s.color}35`},children:[e.jsx("span",{className:"canvas-node-icon-shell",style:{color:s.color,background:`${s.color}12`,borderColor:`${s.color}24`},children:e.jsx(l,{size:18})}),e.jsx("span",{className:"canvas-node-kind",style:{color:s.color},children:p?f:s.label}),p&&!m&&e.jsxs("em",{className:"group-node-count",children:[t.childrenCount||0," nos"]}),p&&e.jsxs("span",{className:"group-node-help",tabIndex:0,"aria-label":"Arraste nos para dentro ou redimensione pelas bordas.",children:["?",e.jsx("span",{children:"Arraste nos para dentro ou redimensione pelas bordas."})]}),t.isStart&&e.jsx("em",{className:"start-node-badge",children:"Início"}),e.jsxs("div",{className:"canvas-node-actions nodrag nopan",onMouseDown:Hi,onClick:Hi,children:[p&&e.jsx("button",{type:"button",title:m?"Expandir encapsulador":"Minimizar encapsulador","aria-label":m?"Expandir encapsulador":"Minimizar encapsulador",onClick:oe=>{var Q;Hi(oe),(Q=t.onToggleGroup)==null||Q.call(t,r.id)},children:m?e.jsx(Pu,{size:12}):e.jsx(IS,{size:12})}),e.jsx("button",{type:"button",title:"Editar nó","aria-label":"Editar nó",onClick:oe=>{var Q;Hi(oe),(Q=t.onEdit)==null||Q.call(t,r.id)},children:e.jsx(yh,{size:12})}),e.jsx("button",{type:"button",title:"Duplicar nó","aria-label":"Duplicar nó",onClick:oe=>{var Q;Hi(oe),(Q=t.onDuplicate)==null||Q.call(t,r.id)},children:e.jsx(nn,{size:12})}),e.jsx("button",{type:"button",title:"Deletar nó","aria-label":"Deletar nó",className:"node-action-danger",onClick:oe=>{var Q;Hi(oe),(Q=t.onDelete)==null||Q.call(t,r.id)},children:e.jsx(Nt,{size:12})})]})]}),e.jsxs("div",{className:`canvas-node-body ${p?"canvas-group-body":""} ${m?"canvas-group-body-collapsed":""}`,children:[!p&&(x==="title"?e.jsx("input",{autoFocus:!0,className:"node-title-input nodrag nopan",value:j,placeholder:s.label,"aria-label":"Nome do nó",onBlur:I,onKeyDown:oe=>{Hi(oe),oe.key==="Enter"&&(oe.preventDefault(),R()),oe.key==="Escape"&&(oe.preventDefault(),q())},onChange:oe=>{w(oe.target.value)}}):e.jsx("div",{className:"node-title-display",role:"button",tabIndex:0,title:"Duplo clique para editar",onDoubleClick:Y("title"),onKeyDown:ne("title"),children:f})),!p&&e.jsx(e.Fragment,{children:x==="instruction"?e.jsx("textarea",{autoFocus:!0,className:"node-text-input nodrag nopan",value:N,placeholder:"Sem instrução.","aria-label":"Texto do nó",onBlur:F,onKeyDown:oe=>{Hi(oe),oe.key==="Escape"&&(oe.preventDefault(),q())},onChange:oe=>{C(oe.target.value)}}):e.jsx("div",{className:"node-text-display",role:"button",tabIndex:0,title:"Duplo clique para editar",onDoubleClick:Y("instruction"),onKeyDown:ne("instruction"),children:e.jsx("p",{children:h||"Sem instrução."})})})]}),e.jsx(Ld,{type:"source",position:nt.Right,className:"node-handle",style:{background:s.color}})]})}function US(t,n){return t.selected===n.selected&&t.data.step===n.data.step&&t.data.isStart===n.data.isStart&&t.data.childrenCount===n.data.childrenCount&&t.data.editingField===n.data.editingField}const xj=b.memo(VS,US);xj.displayName="CanvasStepNode";const df=[{value:"openai",label:"OpenAI"},{value:"azure_openai",label:"Azure OpenAI"},{value:"gemini",label:"Gemini"},{value:"claude",label:"Claude"},{value:"grok",label:"Grok"},{value:"bedrock",label:"Bedrock"}],jh={openai:[{value:"gpt-5.5",label:"gpt-5.5"},{value:"gpt-5.4",label:"gpt-5.4"},{value:"gpt-5.4-mini",label:"gpt-5.4-mini"},{value:"gpt-5.3",label:"gpt-5.3"},{value:"gpt-5.2",label:"gpt-5.2"},{value:"gpt-5.1",label:"gpt-5.1"},{value:"gpt-4.1",label:"gpt-4.1"},{value:"gpt-4.1-mini",label:"gpt-4.1-mini"},{value:"gpt-4o",label:"gpt-4o"},{value:"gpt-4o-mini",label:"gpt-4o-mini"}],azure_openai:[{value:"gpt-5.4",label:"gpt-5.4"},{value:"gpt-5.4-mini",label:"gpt-5.4-mini"},{value:"gpt-4.1",label:"gpt-4.1"},{value:"gpt-4.1-mini",label:"gpt-4.1-mini"},{value:"gpt-4o",label:"gpt-4o"},{value:"gpt-4o-mini",label:"gpt-4o-mini"}],gemini:[{value:"gemini-3.5-flash",label:"Gemini 3.5 Flash"},{value:"gemini-3.1-pro",label:"Gemini 3.1 Pro"},{value:"gemini-3.1-pro-preview",label:"Gemini 3.1 Pro Preview"},{value:"gemini-3-flash",label:"Gemini 3 Flash"},{value:"gemini-3-flash-preview",label:"Gemini 3 Flash Preview"},{value:"gemini-3.1-flash-lite",label:"Gemini 3.1 Flash-Lite"},{value:"gemini-3.1-flash-lite-preview",label:"Gemini 3.1 Flash-Lite Preview"},{value:"gemini-2.5-pro",label:"Gemini 2.5 Pro"},{value:"gemini-2.5-flash",label:"Gemini 2.5 Flash"},{value:"gemini-2.5-flash-lite",label:"Gemini 2.5 Flash-Lite"}],claude:[{value:"claude-sonnet-4-6",label:"Claude Sonnet 4.6"},{value:"claude-opus-4-7",label:"Claude Opus 4.7"},{value:"claude-haiku-4-5",label:"Claude Haiku 4.5"},{value:"claude-haiku-4-5-20251001",label:"Claude Haiku 4.5 20251001"},{value:"claude-3-5-sonnet-latest",label:"claude-3-5-sonnet-latest"},{value:"claude-3-5-haiku-latest",label:"claude-3-5-haiku-latest"}],grok:[{value:"grok-2-latest",label:"grok-2-latest"},{value:"grok-2-vision-latest",label:"grok-2-vision-latest"}],bedrock:[{value:"anthropic.claude-sonnet-4-6",label:"Claude Sonnet 4.6"},{value:"anthropic.claude-opus-4-7",label:"Claude Opus 4.7"},{value:"anthropic.claude-haiku-4-5",label:"Claude Haiku 4.5"},{value:"anthropic.claude-haiku-4-5-20251001-v1:0",label:"Claude Haiku 4.5"},{value:"amazon.nova-2-lite-v1:0",label:"Amazon Nova 2 Lite"},{value:"amazon.nova-premier-v1:0",label:"Amazon Nova Premier"},{value:"amazon.nova-pro-v1:0",label:"Amazon Nova Pro"},{value:"meta.llama3-3-70b-instruct-v1:0",label:"Llama 3.3 70B Instruct"},{value:"meta.llama3-1-405b-instruct-v1:0",label:"Llama 3.1 405B Instruct"},{value:"meta.llama3-1-70b-instruct-v1:0",label:"Llama 3.1 70B Instruct"},{value:"meta.llama3-1-8b-instruct-v1:0",label:"Llama 3.1 8B Instruct"},{value:"anthropic.claude-3-5-sonnet-20240620-v1:0",label:"Claude 3.5 Sonnet"}]};function Mp(t){return jh[t]||jh.openai}function _u(t){var n;return((n=Mp(t)[0])==null?void 0:n.value)||""}function zx(t,n){const r=Mp(t).map(s=>s.value);return Array.from(new Set([n,...r].filter(Boolean)))}const qS={agentsMd:"",guardrails:"",blockedTerms:[],rules:[],skills:[],subagents:[],mcpServers:[]},HS=[{id:"profile",label:"Perfil",icon:Ho},{id:"guardrails",label:"Guardrails",icon:Zs},{id:"manifest",label:"Manifest",icon:Od},{id:"skills",label:"Skills",icon:zS},{id:"subagents",label:"Subagents",icon:Qi},{id:"rules",label:"Rules",icon:bg},{id:"mcp",label:"MCP",icon:_S}],WS=[{title:"Agents.md",mode:"sempre presente",text:"Arquitetura do projeto, decisões de design, funcionamento do sistema e papel do agente orquestrador."},{title:"Rules",mode:"sempre ou sob demanda",text:"Convenções, restrições de segurança e regras que orientam ou redirecionam decisões do agente."},{title:"Skills",mode:"contexto principal",text:"Tarefas específicas com instruções e ferramentas/scripts auxiliares, sem delegar para outro agente."},{title:"Subagents",mode:"sempre presentes",text:"Especialistas com contexto isolado e modelo próprio; devolvem resumo ao pai e não encadeiam spam."},{title:"MCP",mode:"sob demanda",text:"Ferramentas externas, APIs, bancos de dados, Google Drive e outros sistemas conectados."}];function qm(t){return`${t}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}function Iu(t){return Array.isArray(t)?t.filter(n=>!!(n&&typeof n=="object"&&!Array.isArray(n))):[]}function Dt(t){return String(t??"")}function Ed(t,n){return Dt(t.id||t.key||t.name||t.label||n).trim()||n}function Hm(t,n){return Dt(t.name||t.label||t.title||Ed(t,n)).trim()||n}function Wm(t){return Dt(t.description||t.role||t.instructions||t.instruction||t.action).trim()}function gp(t,n){const r=Dt(t.load||t.loadMode||t.when).trim();return r==="always"||r==="auto"||r==="on_demand"||r==="manual"?r:n}function jd(t,n,r,s){const l=Ed(n,`${t}-${s+1}`).normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/-+/g,"-").replace(/^[-_]+|[-_]+$/g,"")||`${t}-${s+1}`;return`.canvas-flow/${t}/${l}${r}`}function Gm(t,n){try{const r=JSON.parse(t);return Iu(r)}catch{return n}}function Lx(t,n){try{const r=JSON.parse(t);return r&&typeof r=="object"&&!Array.isArray(r)?r:n}catch{return n}}function Dx(t){const n=t&&typeof t=="object"&&!Array.isArray(t)?t:{};return JSON.stringify(n,null,2)}function GS({agentId:t,agentName:n,config:r,providerOptions:s,modelOptions:l,saving:p=!1,workspaceBusy:m=!1,error:h="",message:f="",onChange:x,onSave:j,onExportWorkspace:w,onImportWorkspace:N,onClose:C,onOpenProviders:E,onOpenAgentOps:T}){var $;const[R,D]=b.useState("profile"),q=b.useRef(null),I={...qS,...r.agentSpec||{}},F=Iu(I.skills),Y=Iu(I.subagents),ne=Iu(I.rules),ae=Iu(I.mcpServers),oe=r.llmProvider||"openai",Q=(($=s.find(z=>z.value===oe))==null?void 0:$.label)||"OpenAI",fe=b.useMemo(()=>Array.from(new Set([r.model,...l].filter(Boolean))),[r.model,l]),xe=z=>{x({agentSpec:{...I,...z}})},ye=(z,Z)=>{xe({[z]:Z})},le=(z,Z,he)=>{const at=Iu(I[z]).map((gt,ht)=>ht===Z?{...gt,...he}:gt);ye(z,at)},M=(z,Z)=>{ye(z,Iu(I[z]).filter((he,Be)=>Be!==Z))},ee=async z=>{if(!z||!N)return;const Z=await z.text();await N(Z)},H=(z,Z,he,Be)=>e.jsxs("label",{children:["Load",e.jsxs("select",{value:gp(he,Be),onChange:at=>le(z,Z,{load:at.target.value}),children:[e.jsx("option",{value:"always",children:"Sempre no contexto"}),e.jsx("option",{value:"auto",children:"Auto"}),e.jsx("option",{value:"on_demand",children:"Sob demanda"}),e.jsx("option",{value:"manual",children:"Manual"})]})]}),se=(z,Z,he)=>e.jsxs("details",{className:"agent-studio-advanced-json",children:[e.jsx("summary",{children:"Contrato de execucao"}),e.jsxs("div",{className:"agent-studio-fields two-columns",children:[e.jsxs("label",{children:["Efeito",e.jsxs("select",{value:Dt(he.sideEffect||"read"),onChange:Be=>le(z,Z,{sideEffect:Be.target.value}),children:[e.jsx("option",{value:"read",children:"Somente leitura"}),e.jsx("option",{value:"write",children:"Altera dados"}),e.jsx("option",{value:"external_action",children:"Acao externa"}),e.jsx("option",{value:"none",children:"Sem efeito externo"})]})]}),e.jsxs("label",{children:["Max retries",e.jsx("input",{type:"number",min:0,max:3,value:Number(he.maxRetries??0),onChange:Be=>le(z,Z,{maxRetries:Number(Be.target.value||0)})})]})]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:he.requiresApproval===!0,onChange:Be=>le(z,Z,{requiresApproval:Be.target.checked})}),"Exigir aprovacao antes de executar"]}),e.jsxs("div",{className:"agent-studio-fields two-columns",children:[e.jsxs("label",{children:["Input schema",e.jsx("textarea",{rows:6,spellCheck:!1,value:Dx(he.inputSchema),onChange:Be=>le(z,Z,{inputSchema:Lx(Be.target.value,he.inputSchema||{})})})]}),e.jsxs("label",{children:["Output schema",e.jsx("textarea",{rows:6,spellCheck:!1,value:Dx(he.outputSchema),onChange:Be=>le(z,Z,{outputSchema:Lx(Be.target.value,he.outputSchema||{})})})]})]}),e.jsx("span",{className:"field-hint",children:"Schemas seguem JSON Schema simples: type, properties, required, enum, items e additionalProperties."})]}),G=b.useMemo(()=>[...ne.map((z,Z)=>({kind:"rule",id:Ed(z,`rule-${Z+1}`),name:Hm(z,`Rule ${Z+1}`),description:Wm(z),path:Dt(z.path)||jd("rules",z,".rule.json",Z),load:gp(z,"always"),enabled:z.enabled!==!1})),...F.map((z,Z)=>({kind:"skill",id:Ed(z,`skill-${Z+1}`),name:Hm(z,`Skill ${Z+1}`),description:Wm(z),path:Dt(z.path)||jd("skills",z,"/SKILL.md",Z),load:gp(z,"auto"),enabled:z.enabled!==!1})),...Y.map((z,Z)=>({kind:"subagent",id:Ed(z,`subagent-${Z+1}`),name:Hm(z,`Subagent ${Z+1}`),description:Wm(z),path:Dt(z.path)||jd("subagents",z,".agent.md",Z),load:gp(z,"auto"),enabled:z.enabled!==!1})),...ae.map((z,Z)=>({kind:"mcp",id:Ed(z,`mcp-${Z+1}`),name:Hm(z,`MCP ${Z+1}`),description:Wm(z),path:Dt(z.path)||".canvas-flow/mcp.json",load:gp(z,"on_demand"),enabled:z.enabled!==!1}))],[ne,F,Y,ae]),V=()=>e.jsxs("div",{className:"agent-studio-panel",children:[e.jsxs("section",{className:"agent-studio-section",children:[e.jsxs("div",{className:"agent-studio-section-title",children:[e.jsx("strong",{children:"Motor do agente"}),e.jsx("span",{children:"Este provider/modelo vira o default para todos os fluxos deste agente."})]}),e.jsxs("div",{className:"agent-studio-fields two-columns",children:[e.jsxs("label",{children:["Provider",e.jsx("select",{value:oe,onChange:z=>{const Z=z.target.value;x({llmProvider:Z,model:_u(Z)||r.model})},children:s.map(z=>e.jsx("option",{value:z.value,children:z.label},z.value))})]}),e.jsxs("label",{children:["Modelo",e.jsx("select",{value:r.model||"",onChange:z=>x({model:z.target.value}),children:fe.map(z=>e.jsx("option",{value:z,children:z},z))})]})]}),e.jsxs("div",{className:"agent-studio-inline-actions",children:[e.jsxs("button",{type:"button",onClick:E,children:[e.jsx(Ss,{size:15}),"Configurar provedores"]}),e.jsxs("button",{type:"button",onClick:T,children:[e.jsx(yh,{size:15}),"Ver operacao"]})]})]}),e.jsxs("section",{className:"agent-studio-section agent-studio-workspace-card",children:[e.jsxs("div",{className:"agent-studio-section-title",children:[e.jsx("strong",{children:"Workspace .canvas-flow"}),e.jsx("span",{children:"Exporte ou importe um pacote versionavel com agents.md, rules, skills, subagents, mcp.json e guardrails."})]}),e.jsxs("div",{className:"agent-studio-workspace-summary",children:[e.jsx(Od,{size:18}),e.jsx("span",{children:".canvas-flow/agents.md, rules/, skills/, subagents/, mcp.json"})]}),e.jsxs("div",{className:"agent-studio-inline-actions",children:[e.jsxs("button",{type:"button",onClick:w,disabled:!w||m,children:[e.jsx(vh,{size:15}),m?"Processando...":"Exportar workspace"]}),e.jsxs("button",{type:"button",onClick:()=>{var z;return(z=q.current)==null?void 0:z.click()},disabled:!N||m,children:[e.jsx(Ic,{size:15}),"Importar workspace"]}),e.jsx("input",{ref:q,type:"file",accept:".json,application/json",className:"hidden-file-input",onChange:z=>{var he;const Z=(he=z.currentTarget.files)==null?void 0:he[0];z.currentTarget.value="",ee(Z)}})]})]}),e.jsxs("section",{className:"agent-studio-section",children:[e.jsxs("div",{className:"agent-studio-section-title",children:[e.jsx("strong",{children:"Agents.md"}),e.jsx("span",{children:"Sempre presente: arquitetura do projeto, decisões de design, funcionamento do sistema e papel do orquestrador."})]}),e.jsx("textarea",{rows:12,value:I.agentsMd||"",placeholder:`# Agente principal orquestrador
|
|
409
|
+
Recebe instrucoes do usuario, consulta rules e docs, delega tarefas e coordena subagents e skills.
|
|
410
|
+
|
|
411
|
+
# Arquitetura do projeto
|
|
412
|
+
Explique como o sistema funciona, decisoes de design e convencoes.
|
|
413
|
+
|
|
414
|
+
# Operacao
|
|
415
|
+
- Use skills no contexto principal
|
|
416
|
+
- Delegue para subagents quando precisar de contexto isolado
|
|
417
|
+
- Use MCP sob demanda para ferramentas externas`,onChange:z=>xe({agentsMd:z.target.value})})]}),e.jsxs("section",{className:"agent-studio-section",children:[e.jsxs("div",{className:"agent-studio-section-title",children:[e.jsx("strong",{children:"Mapa mental do Agent OS"}),e.jsx("span",{children:"Como cada bloco entra na execução do agente."})]}),e.jsx("div",{className:"agent-studio-concept-grid",children:WS.map(z=>e.jsxs("div",{className:"agent-studio-concept-card",children:[e.jsx("strong",{children:z.title}),e.jsx("small",{children:z.mode}),e.jsx("span",{children:z.text})]},z.title))})]})]}),K=()=>e.jsxs("div",{className:"agent-studio-panel",children:[e.jsxs("section",{className:"agent-studio-section",children:[e.jsxs("div",{className:"agent-studio-section-title",children:[e.jsx("strong",{children:"Politicas e limites"}),e.jsx("span",{children:"Sempre presentes: restrições de segurança e limites duros antes do prompt dos nós LLM."})]}),e.jsx("textarea",{rows:9,value:I.guardrails||"",placeholder:"Nunca invente dados. Nao exponha segredos. Peça aprovacao humana antes de apagar, enviar ou alterar dados sensiveis.",onChange:z=>xe({guardrails:z.target.value})})]}),e.jsxs("section",{className:"agent-studio-section",children:[e.jsxs("div",{className:"agent-studio-section-title",children:[e.jsx("strong",{children:"Tripwires"}),e.jsx("span",{children:"Se a entrada tiver um termo bloqueado, a chamada LLM e interrompida antes de gastar tokens."})]}),e.jsxs("label",{children:["Termos bloqueados",e.jsx("input",{value:(I.blockedTerms||[]).join(", "),placeholder:"apagar banco, excluir cliente, vazar token",onChange:z=>xe({blockedTerms:z.target.value.split(",").map(Z=>Z.trim()).filter(Boolean)})})]}),e.jsxs("div",{className:"agent-studio-chips",children:[(I.blockedTerms||[]).map(z=>e.jsx("span",{children:z},z)),!(I.blockedTerms||[]).length&&e.jsx("small",{children:"Nenhum termo bloqueado."})]})]})]}),P=()=>e.jsxs("div",{className:"agent-studio-panel",children:[e.jsxs("section",{className:"agent-studio-section",children:[e.jsxs("div",{className:"agent-studio-section-title",children:[e.jsx("strong",{children:"Manifest do orquestrador"}),e.jsx("span",{children:"Indice leve do que o agente principal pode enxergar antes de carregar conteudo completo."})]}),e.jsxs("div",{className:"agent-studio-manifest-table",children:[e.jsxs("div",{className:"agent-studio-manifest-row header",children:[e.jsx("span",{children:"Tipo"}),e.jsx("span",{children:"Nome"}),e.jsx("span",{children:"Load"}),e.jsx("span",{children:"Caminho"})]}),G.map(z=>e.jsxs("div",{className:`agent-studio-manifest-row ${z.enabled?"":"disabled"}`,children:[e.jsx("span",{children:z.kind}),e.jsx("strong",{title:z.description||z.name,children:z.name}),e.jsx("span",{children:z.load}),e.jsx("code",{children:z.path})]},`${z.kind}-${z.id}`))]}),!G.length&&e.jsx("div",{className:"component-empty",children:"Crie rules, skills, subagents ou MCP para gerar o manifest."})]}),e.jsxs("section",{className:"agent-studio-section",children:[e.jsxs("div",{className:"agent-studio-section-title",children:[e.jsx("strong",{children:"Semantica de load"}),e.jsx("span",{children:"Como o runtime monta o contexto inicial e decide chamadas sob demanda."})]}),e.jsxs("div",{className:"agent-studio-concept-grid",children:[e.jsxs("div",{className:"agent-studio-concept-card",children:[e.jsx("strong",{children:"always"}),e.jsx("small",{children:"sempre no contexto"}),e.jsx("span",{children:"Conteudo completo entra no preamble do agente principal."})]}),e.jsxs("div",{className:"agent-studio-concept-card",children:[e.jsx("strong",{children:"auto"}),e.jsx("small",{children:"agente decide"}),e.jsx("span",{children:"O agente ve o resumo no manifest e carrega/chama quando for util."})]}),e.jsxs("div",{className:"agent-studio-concept-card",children:[e.jsx("strong",{children:"on_demand"}),e.jsx("small",{children:"sob demanda"}),e.jsx("span",{children:"Ferramenta ou contexto fica disponivel para chamada pontual."})]}),e.jsxs("div",{className:"agent-studio-concept-card",children:[e.jsx("strong",{children:"manual"}),e.jsx("small",{children:"operador decide"}),e.jsx("span",{children:"Disponivel para uso explicito, sem autoexecucao."})]})]})]})]}),O=()=>e.jsxs("div",{className:"agent-studio-panel",children:[e.jsxs("div",{className:"agent-studio-list-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Skills do agente"}),e.jsx("span",{children:"Tarefas específicas executadas no contexto principal, com instruções e ferramentas/scripts auxiliares."})]}),e.jsxs("button",{type:"button",onClick:()=>{const z=qm("skill");ye("skills",[...F,{id:z,name:"Nova skill",description:"",kind:"workflow",load:"auto",path:`.canvas-flow/skills/${z}/SKILL.md`,enabled:!0,sideEffect:"read",requiresApproval:!1,inputSchema:{},outputSchema:{}}])},children:[e.jsx(un,{size:15}),"Skill"]})]}),F.map((z,Z)=>e.jsxs("section",{className:"agent-studio-list-item",children:[e.jsxs("div",{className:"agent-studio-list-item-header",children:[e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:z.enabled!==!1,onChange:he=>le("skills",Z,{enabled:he.target.checked})}),"Ativa"]}),e.jsx("button",{type:"button",className:"danger-button",onClick:()=>M("skills",Z),children:e.jsx(Nt,{size:15})})]}),e.jsxs("div",{className:"agent-studio-fields two-columns",children:[e.jsxs("label",{children:["Nome",e.jsx("input",{value:Dt(z.name),onChange:he=>le("skills",Z,{name:he.target.value})})]}),e.jsxs("label",{children:["Tipo",e.jsxs("select",{value:Dt(z.kind||"workflow"),onChange:he=>le("skills",Z,{kind:he.target.value}),children:[e.jsx("option",{value:"workflow",children:"Workflow"}),e.jsx("option",{value:"prompt",children:"Prompt"}),e.jsx("option",{value:"tool",children:"Tool"}),e.jsx("option",{value:"document",children:"Documento"})]})]}),H("skills",Z,z,"auto")]}),e.jsxs("label",{children:["Caminho no workspace",e.jsx("input",{value:Dt(z.path||jd("skills",z,"/SKILL.md",Z)),onChange:he=>le("skills",Z,{path:he.target.value})})]}),e.jsxs("label",{children:["Descricao",e.jsx("textarea",{rows:3,value:Dt(z.description),onChange:he=>le("skills",Z,{description:he.target.value})})]}),se("skills",Z,z)]},Dt(z.id)||Z)),!F.length&&e.jsx("div",{className:"component-empty",children:"Nenhuma skill criada para este agente."}),e.jsxs("details",{className:"agent-studio-advanced-json",children:[e.jsx("summary",{children:"JSON avancado"}),e.jsx("textarea",{rows:8,value:JSON.stringify(F,null,2),onChange:z=>ye("skills",Gm(z.target.value,F))})]})]}),ve=()=>e.jsxs("div",{className:"agent-studio-panel",children:[e.jsxs("div",{className:"agent-studio-list-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Subagents"}),e.jsx("span",{children:"Especialistas sempre disponíveis, com contexto isolado e modelo próprio; retornam resumo ao agente pai."})]}),e.jsxs("button",{type:"button",onClick:()=>{const z=qm("subagent");ye("subagents",[...Y,{id:z,name:"Novo subagent",role:"",model:r.model||"",handoff:"as_tool",load:"auto",path:`.canvas-flow/subagents/${z}.agent.md`,enabled:!0,sideEffect:"read",requiresApproval:!1,inputSchema:{},outputSchema:{}}])},children:[e.jsx(un,{size:15}),"Subagent"]})]}),Y.map((z,Z)=>e.jsxs("section",{className:"agent-studio-list-item",children:[e.jsxs("div",{className:"agent-studio-list-item-header",children:[e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:z.enabled!==!1,onChange:he=>le("subagents",Z,{enabled:he.target.checked})}),"Ativo"]}),e.jsx("button",{type:"button",className:"danger-button",onClick:()=>M("subagents",Z),children:e.jsx(Nt,{size:15})})]}),e.jsxs("div",{className:"agent-studio-fields two-columns",children:[e.jsxs("label",{children:["Nome",e.jsx("input",{value:Dt(z.name),onChange:he=>le("subagents",Z,{name:he.target.value})})]}),e.jsxs("label",{children:["Handoff",e.jsxs("select",{value:Dt(z.handoff||"as_tool"),onChange:he=>le("subagents",Z,{handoff:he.target.value}),children:[e.jsx("option",{value:"as_tool",children:"Manager chama como tool"}),e.jsx("option",{value:"handoff",children:"Transfere conversa"})]})]}),H("subagents",Z,z,"auto")]}),e.jsxs("label",{children:["Modelo",e.jsx("select",{value:Dt(z.model||r.model||""),onChange:he=>le("subagents",Z,{model:he.target.value}),children:fe.map(he=>e.jsx("option",{value:he,children:he},he))})]}),e.jsxs("label",{children:["Caminho no workspace",e.jsx("input",{value:Dt(z.path||jd("subagents",z,".agent.md",Z)),onChange:he=>le("subagents",Z,{path:he.target.value})})]}),e.jsxs("label",{children:["Papel",e.jsx("textarea",{rows:3,value:Dt(z.role),onChange:he=>le("subagents",Z,{role:he.target.value})})]}),se("subagents",Z,z)]},Dt(z.id)||Z)),!Y.length&&e.jsx("div",{className:"component-empty",children:"Nenhum subagent criado."}),e.jsxs("details",{className:"agent-studio-advanced-json",children:[e.jsx("summary",{children:"JSON avancado"}),e.jsx("textarea",{rows:8,value:JSON.stringify(Y,null,2),onChange:z=>ye("subagents",Gm(z.target.value,Y))})]})]}),ge=()=>e.jsxs("div",{className:"agent-studio-panel",children:[e.jsxs("div",{className:"agent-studio-list-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Rules"}),e.jsx("span",{children:"Regras sempre presentes ou sob demanda para redirecionar decisões, carregar convenções e aplicar segurança."})]}),e.jsxs("button",{type:"button",onClick:()=>{const z=qm("rule");ye("rules",[...ne,{id:z,name:"Nova rule",timing:"before_llm",condition:"",action:"",load:"always",path:`.canvas-flow/rules/${z}.rule.json`,enabled:!0}])},children:[e.jsx(un,{size:15}),"Rule"]})]}),ne.map((z,Z)=>e.jsxs("section",{className:"agent-studio-list-item",children:[e.jsxs("div",{className:"agent-studio-list-item-header",children:[e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:z.enabled!==!1,onChange:he=>le("rules",Z,{enabled:he.target.checked})}),"Ativa"]}),e.jsx("button",{type:"button",className:"danger-button",onClick:()=>M("rules",Z),children:e.jsx(Nt,{size:15})})]}),e.jsxs("div",{className:"agent-studio-fields two-columns",children:[e.jsxs("label",{children:["Nome",e.jsx("input",{value:Dt(z.name),onChange:he=>le("rules",Z,{name:he.target.value})})]}),e.jsxs("label",{children:["Momento",e.jsxs("select",{value:Dt(z.timing||"before_llm"),onChange:he=>le("rules",Z,{timing:he.target.value}),children:[e.jsx("option",{value:"always",children:"Sempre presente"}),e.jsx("option",{value:"on_demand",children:"Sob demanda"}),e.jsx("option",{value:"before_llm",children:"Antes da LLM"}),e.jsx("option",{value:"before_tool",children:"Antes de tool"}),e.jsx("option",{value:"after_tool",children:"Depois de tool"}),e.jsx("option",{value:"final_output",children:"Resposta final"})]})]}),H("rules",Z,z,"always")]}),e.jsxs("label",{children:["Caminho no workspace",e.jsx("input",{value:Dt(z.path||jd("rules",z,".rule.json",Z)),onChange:he=>le("rules",Z,{path:he.target.value})})]}),e.jsxs("label",{children:["Condicao",e.jsx("textarea",{rows:2,value:Dt(z.condition),onChange:he=>le("rules",Z,{condition:he.target.value})})]}),e.jsxs("label",{children:["Acao",e.jsx("textarea",{rows:2,value:Dt(z.action),onChange:he=>le("rules",Z,{action:he.target.value})})]})]},Dt(z.id)||Z)),!ne.length&&e.jsx("div",{className:"component-empty",children:"Nenhuma rule criada."}),e.jsxs("details",{className:"agent-studio-advanced-json",children:[e.jsx("summary",{children:"JSON avancado"}),e.jsx("textarea",{rows:8,value:JSON.stringify(ne,null,2),onChange:z=>ye("rules",Gm(z.target.value,ne))})]})]}),be=()=>e.jsxs("div",{className:"agent-studio-panel",children:[e.jsxs("div",{className:"agent-studio-list-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"MCP servers"}),e.jsx("span",{children:"Sob demanda: ferramentas externas, APIs, bancos, Google Drive e sistemas conectados."})]}),e.jsxs("button",{type:"button",onClick:()=>ye("mcpServers",[...ae,{id:qm("mcp"),label:"Novo MCP",serverUrl:"",scope:"agent",load:"on_demand",path:".canvas-flow/mcp.json",enabled:!0,sideEffect:"read",requiresApproval:!1,inputSchema:{},outputSchema:{}}]),children:[e.jsx(un,{size:15}),"MCP"]})]}),ae.map((z,Z)=>e.jsxs("section",{className:"agent-studio-list-item",children:[e.jsxs("div",{className:"agent-studio-list-item-header",children:[e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:z.enabled!==!1,onChange:he=>le("mcpServers",Z,{enabled:he.target.checked})}),"Ativo"]}),e.jsx("button",{type:"button",className:"danger-button",onClick:()=>M("mcpServers",Z),children:e.jsx(Nt,{size:15})})]}),e.jsxs("div",{className:"agent-studio-fields two-columns",children:[e.jsxs("label",{children:["Nome",e.jsx("input",{value:Dt(z.label),onChange:he=>le("mcpServers",Z,{label:he.target.value})})]}),e.jsxs("label",{children:["Escopo",e.jsxs("select",{value:Dt(z.scope||"agent"),onChange:he=>le("mcpServers",Z,{scope:he.target.value}),children:[e.jsx("option",{value:"agent",children:"Agente"}),e.jsx("option",{value:"team",children:"Time"}),e.jsx("option",{value:"external",children:"Externo"})]})]}),H("mcpServers",Z,z,"on_demand")]}),e.jsxs("label",{children:["Caminho no workspace",e.jsx("input",{value:Dt(z.path||".canvas-flow/mcp.json"),onChange:he=>le("mcpServers",Z,{path:he.target.value})})]}),e.jsxs("label",{children:["Server URL",e.jsx("input",{value:Dt(z.serverUrl),placeholder:"https://mcp.sua-empresa.com/sse",onChange:he=>le("mcpServers",Z,{serverUrl:he.target.value})})]}),se("mcpServers",Z,z)]},Dt(z.id)||Z)),!ae.length&&e.jsx("div",{className:"component-empty",children:"Nenhum MCP cadastrado para o perfil do agente."}),e.jsxs("details",{className:"agent-studio-advanced-json",children:[e.jsx("summary",{children:"JSON avancado"}),e.jsx("textarea",{rows:8,value:JSON.stringify(ae,null,2),onChange:z=>ye("mcpServers",Gm(z.target.value,ae))})]})]}),Ce=()=>R==="guardrails"?K():R==="manifest"?P():R==="skills"?O():R==="subagents"?ve():R==="rules"?ge():R==="mcp"?be():V();return e.jsx("div",{className:"modal-backdrop agent-studio-backdrop",onMouseDown:C,children:e.jsxs("div",{className:"agent-studio-modal",onMouseDown:z=>z.stopPropagation(),children:[e.jsxs("div",{className:"modal-header agent-studio-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Agent Studio"}),e.jsxs("span",{children:[n," · ",Q," · ",r.model||"modelo default"]})]}),e.jsxs("button",{type:"button",onClick:C,children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("div",{className:"agent-studio-body",children:[e.jsxs("aside",{className:"agent-studio-sidebar",children:[e.jsxs("div",{className:"agent-studio-agent-badge",children:[e.jsx(Ho,{size:20}),e.jsxs("div",{children:[e.jsx("strong",{children:n}),e.jsx("span",{children:t})]})]}),e.jsxs("div",{className:"agent-studio-metrics",children:[e.jsxs("span",{children:[e.jsx("strong",{children:F.length})," skills"]}),e.jsxs("span",{children:[e.jsx("strong",{children:Y.length})," subagents"]}),e.jsxs("span",{children:[e.jsx("strong",{children:ne.length})," rules"]}),e.jsxs("span",{children:[e.jsx("strong",{children:ae.length})," MCP"]})]}),e.jsx("nav",{className:"agent-studio-tabs","aria-label":"Agent Studio",children:HS.map(z=>{const Z=z.icon;return e.jsxs("button",{type:"button",className:R===z.id?"active":"",onClick:()=>D(z.id),children:[e.jsx(Z,{size:16}),z.label]},z.id)})})]}),e.jsxs("main",{className:"agent-studio-content",children:[Ce(),h&&e.jsx("div",{className:"auth-error",children:h}),f&&e.jsx("div",{className:"provider-config-success",children:f})]})]}),e.jsxs("div",{className:"modal-actions agent-studio-actions",children:[e.jsx("span",{children:"Salva no perfil do agente e tambem atualiza o fluxo aberto como fallback."}),e.jsxs("div",{children:[e.jsx("button",{type:"button",onClick:C,children:"Cancelar"}),e.jsxs("button",{type:"button",className:"primary-button",onClick:j,disabled:p,children:[e.jsx(Rl,{size:15}),p?"Salvando...":"Salvar Agent OS"]})]})]})]})})}const qf="",vj="",JS="true".toLowerCase()==="true",Hf="canvas_flow_auth_token",zc=typeof window<"u"?window.location.origin:"",yj=!!vj,KS=JS;function QS(){return localStorage.getItem(Hf)||""}function Jm(t){t?localStorage.setItem(Hf,t):localStorage.removeItem(Hf)}function xp(t){const n=new URLSearchParams;Object.entries(t).forEach(([s,l])=>{l&&n.set(s,l)});const r=n.toString();return r?`?${r}`:""}function Ue(){const t=QS()||vj;return t?{Authorization:`Bearer ${t}`}:{}}async function $e(t,n){const r=(n==null?void 0:n.body)instanceof FormData,s=`${qf}${t}`;let l;try{l=await fetch(s,{...n,headers:{...r?{}:{"Content-Type":"application/json"},...(n==null?void 0:n.headers)||{}}})}catch(p){const m=p instanceof Error?p.message:"falha de rede";throw new Error(`Não foi possível conectar ao backend em ${zc||"esta origem"}. Verifique se a API está rodando e se o CORS permite esta origem. Detalhe: ${m}`)}if(!l.ok){const p=await l.text();let m=p||`HTTP ${l.status}`;try{const f=JSON.parse(p);m=(f==null?void 0:f.message)||(f==null?void 0:f.error)||m}catch{}const h=new Error(m||`HTTP ${l.status}`);throw h.status=l.status,h}return l.json()}const Oe={authConfig(){return $e("/api/auth/config")},login(t){return $e("/api/auth/login",{method:"POST",body:JSON.stringify(t)})},bootstrap(t){return $e("/api/auth/bootstrap",{method:"POST",body:JSON.stringify(t)})},createOrganization(t){return $e("/api/auth/organizations",{method:"POST",body:JSON.stringify(t)})},me(){return $e("/api/auth/me",{headers:Ue()})},createOrganizationUser(t){return $e("/api/auth/users",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},getProviderConfig(t){return $e(`/api/provider-config${xp({agentId:t==null?void 0:t.agentId})}`,{headers:Ue()})},updateProviderConfig(t,n){return $e(`/api/provider-config${xp({agentId:n==null?void 0:n.agentId})}`,{method:"PUT",headers:Ue(),body:JSON.stringify({settings:t,agentId:n==null?void 0:n.agentId})})},deleteProviderConfigSection(t,n){return $e(`/api/provider-config/${encodeURIComponent(t)}${xp({agentId:n==null?void 0:n.agentId})}`,{method:"DELETE",headers:Ue()})},listFlows(t){const n=t?`?agentId=${encodeURIComponent(t)}`:"";return $e(`/api/canvas-flows${n}`,{headers:Ue()})},listAgents(){return $e("/api/canvas-flows/agents",{headers:Ue()})},createAgent(t){return $e("/api/canvas-flows/agents",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},renameAgent(t,n){return $e(`/api/canvas-flows/agents/${encodeURIComponent(t)}`,{method:"PATCH",headers:Ue(),body:JSON.stringify(n)})},reorderAgents(t){return $e("/api/canvas-flows/agents/reorder",{method:"PATCH",headers:Ue(),body:JSON.stringify({orderedAgentIds:t})})},updateAgentConfig(t,n){return $e(`/api/canvas-flows/agents/${encodeURIComponent(t)}/config`,{method:"PATCH",headers:Ue(),body:JSON.stringify({config:n})})},getAgentWorkspace(t){return $e(`/api/canvas-flows/agents/${encodeURIComponent(t)}/workspace`,{headers:Ue()})},importAgentWorkspace(t,n){return $e(`/api/canvas-flows/agents/${encodeURIComponent(t)}/workspace`,{method:"PUT",headers:Ue(),body:JSON.stringify(n)})},deleteAgent(t,n){return $e(`/api/canvas-flows/agents/${encodeURIComponent(t)}`,{method:"DELETE",headers:Ue(),body:JSON.stringify(n)})},getAgentReleases(t){return $e(`/api/canvas-flows/agents/${encodeURIComponent(t)}/releases`,{headers:Ue()})},deployAgentRelease(t,n){return $e(`/api/canvas-flows/agents/${encodeURIComponent(t)}/releases/deploy`,{method:"POST",headers:Ue(),body:JSON.stringify(n)})},activateAgentRelease(t,n){return $e(`/api/canvas-flows/agents/${encodeURIComponent(t)}/releases/${encodeURIComponent(String(n))}/activate`,{method:"PATCH",headers:Ue()})},renameAgentRelease(t,n,r){return $e(`/api/canvas-flows/agents/${encodeURIComponent(t)}/releases/${encodeURIComponent(String(n))}`,{method:"PATCH",headers:Ue(),body:JSON.stringify(r)})},overwriteAgentRelease(t,n,r){return $e(`/api/canvas-flows/agents/${encodeURIComponent(t)}/releases/${encodeURIComponent(String(n))}/overwrite`,{method:"PATCH",headers:Ue(),body:JSON.stringify(r)})},deleteAgentRelease(t,n){return $e(`/api/canvas-flows/agents/${encodeURIComponent(t)}/releases/${encodeURIComponent(String(n))}`,{method:"DELETE",headers:Ue()})},getFlow(t){return $e(`/api/canvas-flows/${t}`,{headers:Ue()})},getFlowVersions(t){return $e(`/api/canvas-flows/${t}/versions`,{headers:Ue()})},createFlow(t){return $e("/api/canvas-flows",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},updateFlow(t,n){return $e(`/api/canvas-flows/${t}`,{method:"PATCH",headers:Ue(),body:JSON.stringify(n)})},deployFlowVersion(t,n){return $e(`/api/canvas-flows/${t}/versions/deploy`,{method:"POST",headers:Ue(),body:JSON.stringify(n)})},activateFlowVersion(t,n){return $e(`/api/canvas-flows/${t}/versions/${encodeURIComponent(String(n))}/activate`,{method:"PATCH",headers:Ue()})},renameFlowVersion(t,n,r){return $e(`/api/canvas-flows/${t}/versions/${encodeURIComponent(String(n))}`,{method:"PATCH",headers:Ue(),body:JSON.stringify(r)})},overwriteFlowVersion(t,n,r){return $e(`/api/canvas-flows/${t}/versions/${encodeURIComponent(String(n))}/overwrite`,{method:"PATCH",headers:Ue(),body:JSON.stringify(r)})},deleteFlowVersion(t,n){return $e(`/api/canvas-flows/${t}/versions/${encodeURIComponent(String(n))}`,{method:"DELETE",headers:Ue()})},reorderFlows(t,n){return $e("/api/canvas-flows/reorder",{method:"PATCH",headers:Ue(),body:JSON.stringify({orderedIds:t,agentId:n})})},deleteFlow(t){return $e(`/api/canvas-flows/${t}`,{method:"DELETE",headers:Ue()})},listApiKeys(t){const n=new URLSearchParams;t!=null&&t.flowId&&n.set("flowId",t.flowId),t!=null&&t.agentId&&n.set("agentId",t.agentId);const r=n.toString()?`?${n.toString()}`:"";return $e(`/api/canvas-flow-api-keys${r}`,{headers:Ue()})},createApiKey(t){return $e("/api/canvas-flow-api-keys",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},revokeApiKey(t){return $e(`/api/canvas-flow-api-keys/${t}`,{method:"DELETE",headers:Ue()})},testFlow(t){return $e("/api/canvas-flow/test",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},replaySimulation(t){return $e("/api/canvas-flow/simulations/replay",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},getSqsJob(t,n){const r=new URLSearchParams;n!=null&&n.agentId&&r.set("agentId",n.agentId),n!=null&&n.flowId&&r.set("flowId",n.flowId);const s=r.toString()?`?${r.toString()}`:"";return $e(`/api/canvas-flow/sqs/jobs/${encodeURIComponent(t)}${s}`,{headers:Ue()})},retrySqsJob(t,n={}){return $e(`/api/canvas-flow/sqs/jobs/${encodeURIComponent(t)}/retry`,{method:"POST",headers:Ue(),body:JSON.stringify(n)})},getSqsHealth(){return $e("/api/canvas-flow/sqs/health",{headers:Ue()})},async streamTestFlow(t,n){const r=await fetch(`${qf}/api/canvas-flow/test/stream`,{method:"POST",headers:{"Content-Type":"application/json",...Ue()},body:JSON.stringify(t)});if(!r.ok||!r.body){const h=await r.text();throw new Error(h||`HTTP ${r.status}`)}const s=r.body.getReader(),l=new TextDecoder;let p="",m=null;for(;;){const{done:h,value:f}=await s.read();p+=l.decode(f||new Uint8Array,{stream:!h});const x=p.split(`
|
|
418
|
+
`);p=x.pop()||"";for(const j of x){const w=j.trim();if(!w)continue;const N=JSON.parse(w);if(N.event==="message"&&N.message&&n(N.message),N.event==="result"&&(m=N.result||{}),N.event==="error")throw new Error(N.message||"Falha no stream do fluxo.")}if(h)break}if(p.trim()){const h=JSON.parse(p.trim());if(h.event==="message"&&h.message&&n(h.message),h.event==="result"&&(m=h.result||{}),h.event==="error")throw new Error(h.message||"Falha no stream do fluxo.")}return m},generateContextScript(t){return $e("/api/canvas-flow/context/script/generate",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},generateMongoConfig(t){return $e("/api/canvas-flow/mongodb/config/generate",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},generateFlowWithAssistant(t){return $e("/api/canvas-flow/assistant/generate-flow",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},generatePromptField(t){return $e("/api/canvas-flow/prompt-field/generate",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},createWhatsappFlow(t){return $e("/api/canvas-flow/whatsapp-flows",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},listWhatsappFlows(t){return $e("/api/canvas-flow/whatsapp-flows/list",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},deleteWhatsappFlow(t,n){return $e(`/api/canvas-flow/whatsapp-flows/${encodeURIComponent(t)}`,{method:"DELETE",headers:Ue(),body:JSON.stringify(n)})},uploadWhatsappFlowJson(t,n){return $e(`/api/canvas-flow/whatsapp-flows/${encodeURIComponent(t)}/assets`,{method:"POST",headers:Ue(),body:JSON.stringify(n)})},publishWhatsappFlow(t,n){return $e(`/api/canvas-flow/whatsapp-flows/${encodeURIComponent(t)}/publish`,{method:"POST",headers:Ue(),body:JSON.stringify(n)})},getTagDashboard(t){return $e("/api/canvas-flow/tags/dashboard",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},listFlowTemplates(){return $e("/api/canvas-flow/templates",{headers:Ue()})},getAgentOpsDashboard(t){return $e("/api/canvas-flow/agentops/dashboard",{method:"POST",headers:Ue(),body:JSON.stringify(t)}).catch(async n=>{var x,j,w,N,C,E,T;const r=n==null?void 0:n.status,s=n instanceof Error?n.message:String(n||"");if(r!==404&&!/agentops\/dashboard|not found|cannot post/i.test(s))throw n;const l=await $e("/api/canvas-flow/tags/dashboard",{method:"POST",headers:Ue(),body:JSON.stringify({...t,tags:[],limit:Number(t.historyLimit||80),historyLimit:Number(t.historyLimit||80)})}),p=l.traceInsights||{},m=l.insights||{},h=Number(((x=p.summary)==null?void 0:x.runs)||0),f=Number(((j=p.summary)==null?void 0:j.errorCount)||0);return{...l,fallback:"tags-dashboard",summary:{conversations:((w=m.summary)==null?void 0:w.conversations)||((N=l.summary)==null?void 0:N.conversations)||0,messages:((C=m.summary)==null?void 0:C.totalMessages)||0,userMessages:((E=m.summary)==null?void 0:E.userMessages)||0,assistantMessages:((T=m.summary)==null?void 0:T.assistantMessages)||0,runs:h,errorCount:f,errorRate:h?f/h:0,avgDurationMs:0,llmCalls:0,estimatedTokens:0},queue:{},insights:m,traceInsights:p,errors:p.errors||[],hotNodes:p.byStep||[],releases:{activeRelease:void 0,latestRelease:0,releases:[]},flows:[],readiness:{status:"attention",warnings:["Backend atual ainda nao tem o endpoint AgentOps. Reinicie ou atualize o backend; enquanto isso, este painel usa dados operacionais do dashboard existente."]}}})},getMcpOAuthStatus(t){return $e(`/api/mcp-oauth/status${xp({serverUrl:t.serverUrl,agentId:t.agentId,connectionScope:t.connectionScope})}`,{headers:Ue()})},startMcpOAuth(t){return $e("/api/mcp-oauth/start",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},disconnectMcpOAuth(t){return $e(`/api/mcp-oauth${xp({serverUrl:t.serverUrl,agentId:t.agentId,connectionScope:t.connectionScope})}`,{method:"DELETE",headers:Ue()})},listExternalMcpTools(t){return $e("/api/canvas-flow/mcp-external/tools",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},addRagDocuments(t){return $e("/api/rag/add-documents",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},addRagFiles(t){return $e("/api/rag/add-documents-from-file",{method:"POST",headers:Ue(),body:t})},extractFiles(t){return $e("/api/rag/extract-files",{method:"POST",headers:Ue(),body:t})},async downloadDocument(t){var l;const n=await fetch(`${qf}/api/documents/${encodeURIComponent(t)}/download`,{headers:Ue()});if(!n.ok){const p=await n.text();throw new Error(p||`HTTP ${n.status}`)}const s=((l=(n.headers.get("content-disposition")||"").match(/filename="?([^";]+)"?/i))==null?void 0:l[1])||"arquivo";return{blob:await n.blob(),filename:s}},listRagDocuments(t){return $e("/api/rag/documents/list",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},getRagDocument(t){return $e("/api/rag/documents/get",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},updateRagDocument(t){return $e("/api/rag/documents/update",{method:"POST",headers:Ue(),body:JSON.stringify(t)})},deleteRagDocument(t){return $e("/api/rag/documents/delete",{method:"POST",headers:Ue(),body:JSON.stringify(t)})}};function pf(t){if(!t)return"-";const n=new Date(t);return Number.isNaN(n.getTime())?"-":n.toLocaleString("pt-BR",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"})}function XS(t){return t.flowId?"Fluxo":"Todos"}function YS({flowId:t,flowName:n,agentId:r}){const[s,l]=b.useState([]),[p,m]=b.useState(t?"flow":"global"),[h,f]=b.useState(""),[x,j]=b.useState(""),[w,N]=b.useState(null),[C,E]=b.useState(null),[T,R]=b.useState(!1),[D,q]=b.useState(!1),[I,F]=b.useState(""),Y=b.useMemo(()=>p==="flow"?`Chave - ${n||"fluxo"}`:"Chave global Canvas Flow",[n,p]),ne=async()=>{R(!0),F("");try{const Q=await Oe.listApiKeys(t?{flowId:t}:void 0);l(Q)}catch(Q){F(Q instanceof Error?Q.message:"Não foi possível carregar as chaves.")}finally{R(!1)}};b.useEffect(()=>{ne()},[t]);const ae=async()=>{q(!0),F("");try{const Q={name:h.trim()||Y,flowId:p==="flow"?t:void 0,agentId:p==="flow"?r:void 0,expiresAt:x||void 0},fe=await Oe.createApiKey(Q);N(fe),f(""),j(""),await ne()}catch(Q){F(Q instanceof Error?Q.message:"Não foi possível criar a chave.")}finally{q(!1)}},oe=async Q=>{q(!0),F("");try{await Oe.revokeApiKey(Q),E(null),await ne()}catch(fe){F(fe instanceof Error?fe.message:"Não foi possível revogar a chave.")}finally{q(!1)}};return e.jsxs("div",{className:"api-keys-shell",children:[e.jsxs("div",{className:"api-keys-intro",children:[e.jsxs("div",{children:[e.jsxs("strong",{children:[e.jsx(Zs,{size:17})," Chaves de consumo"]}),e.jsx("p",{children:"Gere uma chave global ou limitada ao fluxo atual. Depois de criada, a chave completa aparece uma unica vez."})]}),e.jsxs("button",{type:"button",onClick:()=>void ne(),disabled:T,children:[T?e.jsx(Ut,{size:15,className:"spin"}):e.jsx(OS,{size:15}),"Atualizar"]})]}),!yj&&e.jsxs("div",{className:"api-keys-warning",children:["Configure ",e.jsx("code",{children:"VITE_CANVAS_FLOW_API_TOKEN"})," no frontend com o token master para gerenciar chaves por esta tela."]}),I&&e.jsx("div",{className:"api-keys-error",children:I}),w&&e.jsxs("div",{className:"api-keys-created",children:[e.jsxs("div",{children:[e.jsxs("strong",{children:[e.jsx(bg,{size:16})," Chave criada"]}),e.jsx("p",{children:"Guarde este valor agora. Depois ele não será exibido novamente."})]}),e.jsxs("div",{className:"created-key-row",children:[e.jsx("code",{children:w.token}),e.jsxs("button",{type:"button",onClick:()=>navigator.clipboard.writeText(w.token),children:[e.jsx(nn,{size:15}),"Copiar"]})]})]}),e.jsxs("div",{className:"api-keys-create",children:[e.jsxs("div",{className:"api-key-form-grid",children:[e.jsxs("label",{children:["Nome",e.jsx("input",{value:h,placeholder:Y,onChange:Q=>f(Q.target.value)})]}),e.jsxs("label",{children:["Escopo",e.jsxs("select",{value:p,onChange:Q=>m(Q.target.value),children:[e.jsx("option",{value:"global",children:"Todos os fluxos"}),e.jsx("option",{value:"flow",disabled:!t,children:"Somente este fluxo"})]})]}),e.jsxs("label",{children:["Expira em",e.jsx("input",{type:"datetime-local",value:x,onChange:Q=>j(Q.target.value)})]})]}),p==="flow"&&!t&&e.jsx("div",{className:"api-keys-warning",children:"Salve o fluxo antes de criar uma chave limitada a ele."}),e.jsxs("button",{type:"button",className:"primary-button",onClick:ae,disabled:D||p==="flow"&&!t,children:[D?e.jsx(Ut,{size:15,className:"spin"}):e.jsx(uj,{size:15}),"Gerar chave"]})]}),e.jsxs("div",{className:"api-keys-list",children:[e.jsxs("div",{className:"api-keys-list-header",children:[e.jsx("strong",{children:"Chaves criadas"}),e.jsx("span",{children:s.length})]}),T&&e.jsx("div",{className:"api-keys-empty",children:"Carregando chaves..."}),!T&&!s.length&&e.jsx("div",{className:"api-keys-empty",children:"Nenhuma chave criada ainda."}),!T&&s.map(Q=>e.jsxs("div",{className:`api-key-row ${Q.active?"":"api-key-row-disabled"}`,children:[e.jsxs("div",{className:"api-key-row-main",children:[e.jsx("strong",{children:Q.name}),e.jsxs("span",{children:[XS(Q)," · ",Q.tokenPrefix,"... · usos ",Q.totalUses||0]}),e.jsxs("small",{children:["Criada ",pf(Q.createdAt)," · Ultimo uso ",pf(Q.lastUsedAt),Q.expiresAt?` · Expira ${pf(Q.expiresAt)}`:""]})]}),e.jsxs("div",{className:"api-key-row-actions",children:[e.jsx("span",{className:Q.active?"status-pill active":"status-pill revoked",children:Q.active?"Ativa":"Revogada"}),Q.active&&e.jsxs("button",{type:"button",className:"danger-button compact-danger-button",onClick:()=>E(Q),disabled:D,children:[e.jsx(Nt,{size:14}),"Revogar"]})]})]},Q._id))]}),C&&e.jsxs("div",{className:"api-keys-revoke-confirm",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Revogar chave?"}),e.jsxs("p",{children:["A chave ",e.jsx("b",{children:C.name})," deixara de consumir qualquer fluxo imediatamente."]})]}),e.jsxs("div",{className:"modal-actions",children:[e.jsx("button",{type:"button",onClick:()=>E(null),children:"Cancelar"}),e.jsxs("button",{type:"button",className:"danger-button",onClick:()=>void oe(C._id),disabled:D,children:[e.jsx(Nt,{size:15}),"Revogar"]})]})]})]})}function Wi(t){var n,r;t.stopPropagation(),(r=(n=t.nativeEvent).stopImmediatePropagation)==null||r.call(n)}const mf=[{key:"rules",label:"Rules",fallbackLoad:"always"},{key:"skills",label:"Skills",fallbackLoad:"auto"},{key:"subagents",label:"Subagents",fallbackLoad:"auto"},{key:"mcpServers",label:"MCP",fallbackLoad:"on_demand"}],sh=[{id:"gmail",label:"Email - Gmail",serverUrl:"https://gmailmcp.googleapis.com/mcp/v1",authMode:"oauth",description:"Google Workspace em Developer Preview. Permite ler emails, organizar mensagens e criar rascunhos. No projeto Google Cloud do cliente, habilite gmail.googleapis.com e gmailmcp.googleapis.com, adicione os scopes gmail.readonly e gmail.compose e autorize usuarios de teste quando a audiencia for External.",docsUrl:"https://developers.google.com/workspace/guides/configure-mcp-servers",oauthScopes:["https://www.googleapis.com/auth/gmail.readonly","https://www.googleapis.com/auth/gmail.compose"],setupLinks:[{label:"Habilitar Gmail API",description:"Ative gmail.googleapis.com no projeto Google Cloud.",url:"https://console.cloud.google.com/flows/enableapi?apiid=gmail.googleapis.com"},{label:"Habilitar Gmail MCP API",description:"Ative gmailmcp.googleapis.com no mesmo projeto.",url:"https://console.cloud.google.com/flows/enableapi?apiid=gmailmcp.googleapis.com"},{label:"Configurar Data Access",description:"Adicione os scopes gmail.readonly e gmail.compose.",url:"https://console.cloud.google.com/auth/scopes"},{label:"Configurar Audience",description:"Se usar audiencia External, inclua as contas em Test users.",url:"https://console.cloud.google.com/auth/audience"},{label:"Configurar Branding OAuth",description:"Configure a tela de consentimento do aplicativo.",url:"https://console.cloud.google.com/auth/branding"}],setupNotes:["Depois de alterar scopes ou usuarios de teste, use Reconectar do zero no node MCP.","O Google Workspace MCP esta em Developer Preview e pode exigir liberacao da conta ou do dominio."]},{id:"google-drive",label:"Google Drive",serverUrl:"https://drivemcp.googleapis.com/mcp/v1",authMode:"oauth",description:"Google Workspace em Developer Preview. Permite pesquisar, ler, criar, copiar e baixar arquivos conforme as permissoes OAuth concedidas.",docsUrl:"https://developers.google.com/workspace/guides/configure-mcp-servers",oauthScopes:["https://www.googleapis.com/auth/drive.readonly","https://www.googleapis.com/auth/drive.file"],setupLinks:[{label:"Habilitar Google Drive API",description:"Ative drive.googleapis.com no projeto Google Cloud.",url:"https://console.cloud.google.com/flows/enableapi?apiid=drive.googleapis.com"},{label:"Habilitar Google Drive MCP API",description:"Ative drivemcp.googleapis.com no mesmo projeto.",url:"https://console.cloud.google.com/flows/enableapi?apiid=drivemcp.googleapis.com"},{label:"Configurar Data Access",description:"Adicione os scopes drive.readonly e drive.file.",url:"https://console.cloud.google.com/auth/scopes"},{label:"Configurar Audience",description:"Se usar audiencia External, inclua as contas em Test users.",url:"https://console.cloud.google.com/auth/audience"},{label:"Configurar Branding OAuth",description:"Configure a tela de consentimento do aplicativo.",url:"https://console.cloud.google.com/auth/branding"}],setupNotes:["Depois de alterar scopes ou usuarios de teste, use Reconectar do zero no node MCP.","O Google Workspace MCP esta em Developer Preview e pode exigir liberacao da conta ou do dominio."]},{id:"onedrive",label:"Microsoft OneDrive Work IQ (preview)",serverUrl:"https://agent365.svc.cloud.microsoft/agents/tenants/SEU_TENANT_ID/servers/mcp_OneDriveRemoteServer",authMode:"oauth",description:"Servidor Work IQ OneDrive em preview. Substitua SEU_TENANT_ID na URL pelo tenant Microsoft Entra. Requer configuracao do cliente OAuth, licenca Microsoft 365 Copilot e limita operacoes de arquivo a 5 MB.",docsUrl:"https://learn.microsoft.com/en-us/microsoft-agent-365/mcp-server-reference/onedrive",setupLinks:[{label:"Referencia Work IQ OneDrive",description:"Confirme requisitos, URL tenant-level e tools disponiveis.",url:"https://learn.microsoft.com/en-us/microsoft-agent-365/mcp-server-reference/onedrive"},{label:"Microsoft 365 Admin Center",description:"Revise licencas e politicas do tenant Microsoft 365.",url:"https://admin.microsoft.com/"},{label:"Microsoft Entra Admin Center",description:"Consulte o tenant ID e as politicas de acesso da organizacao.",url:"https://entra.microsoft.com/"}],setupNotes:["Substitua SEU_TENANT_ID na URL do preset.","O servidor esta em preview e opera no OneDrive pessoal do usuario autenticado. Operacoes de arquivo sao limitadas a 5 MB."]},{id:"notion",label:"Notion",serverUrl:"https://mcp.notion.com/mcp",authMode:"oauth",description:"Servidor remoto oficial do Notion. Usa OAuth e permite ler ou alterar o workspace conforme as permissoes concedidas.",docsUrl:"https://developers.notion.com/docs/get-started-with-mcp",setupLinks:[{label:"Conectar ao Notion MCP",description:"Veja o fluxo OAuth oficial e as permissoes do workspace.",url:"https://developers.notion.com/docs/get-started-with-mcp"}],setupNotes:["O Notion MCP remoto exige OAuth por usuario. A conta acessa apenas o conteudo permitido no workspace selecionado."]},{id:"github",label:"GitHub",serverUrl:"https://api.githubcopilot.com/mcp/",authMode:"bearer",description:"Servidor remoto oficial do GitHub. Informe um PAT no campo Segredo; OAuth tambem e possivel quando o host possui um GitHub App configurado.",docsUrl:"https://github.com/github/github-mcp-server",setupLinks:[{label:"Criar Personal Access Token",description:"Gere um PAT com acesso minimo aos repositorios e operacoes necessarias.",url:"https://github.com/settings/personal-access-tokens/new"},{label:"Documentacao do GitHub MCP",description:"Confira autenticacao remota, PAT, OAuth e politicas aplicaveis.",url:"https://github.com/github/github-mcp-server"},{label:"Politicas e governanca",description:"Confira restricoes organizacionais para MCP remoto.",url:"https://github.com/github/github-mcp-server/blob/main/docs/policies-and-governance.md"}],setupNotes:["No Canvas Flow, use autenticacao Bearer e informe o PAT em Segredo.","Aplique privilegio minimo: leitura para consultas e escrita somente quando o fluxo realmente precisar alterar recursos."]},{id:"gitlab-orbit",label:"GitLab Orbit (experimental)",serverUrl:"https://gitlab.com/api/v4/orbit/mcp",authMode:"oauth",description:"Servidor remoto oficial do GitLab Orbit para consultar o knowledge graph. Requer Premium ou Ultimate, Orbit habilitado no grupo e ainda nao esta pronto para producao.",docsUrl:"https://docs.gitlab.com/orbit/remote/access/mcp/",setupLinks:[{label:"Habilitar Orbit Remote",description:"Ative o Orbit no grupo top-level com uma conta Owner.",url:"https://docs.gitlab.com/orbit/remote/getting-started/"},{label:"Conectar via MCP",description:"Veja o endpoint remoto e o fluxo OAuth do GitLab Orbit.",url:"https://docs.gitlab.com/orbit/remote/access/mcp/"}],setupNotes:["Requer GitLab.com Premium ou Ultimate, papel Owner no grupo top-level e Orbit habilitado.","Orbit Remote ainda e experimental e nao deve ser tratado como dependencia de producao."]},{id:"aws-knowledge",label:"AWS Knowledge",serverUrl:"https://knowledge-mcp.global.api.aws",authMode:"none",description:"Servidor remoto oficial e GA para documentacao, referencias, disponibilidade regional e skills AWS. Nao altera recursos da conta e nao exige autenticacao.",docsUrl:"https://awslabs.github.io/mcp/servers/aws-knowledge-mcp-server",setupLinks:[{label:"Documentacao AWS Knowledge MCP",description:"Consulte ferramentas, exemplos e comportamento do servidor.",url:"https://awslabs.github.io/mcp/servers/aws-knowledge-mcp-server"}],setupNotes:["Nao exige credenciais e nao altera recursos da conta AWS."]},{id:"aws-mcp",label:"AWS MCP Server - infraestrutura",serverUrl:"https://aws-mcp.us-east-1.api.aws/mcp",authMode:"aws_sigv4",description:"Servidor remoto gerenciado e GA do Agent Toolkit for AWS. Consulta documentacao e pode operar recursos reais da conta conforme o IAM do backend. Usa AWS SigV4; aplique privilegio minimo e aprovacao humana antes de mutacoes.",docsUrl:"https://docs.aws.amazon.com/aws-mcp/latest/userguide/getting-started-aws-mcp-server.html",setupLinks:[{label:"Configurar AWS MCP Server",description:"Veja credenciais, SigV4, teste de conexao e troubleshooting.",url:"https://docs.aws.amazon.com/aws-mcp/latest/userguide/getting-started-aws-mcp-server.html"},{label:"Entender autorizacao IAM",description:"As policies do usuario ou role controlam cada chamada encaminhada aos servicos AWS.",url:"https://docs.aws.amazon.com/aws-mcp/latest/userguide/security_iam_service-with-iam.html"},{label:"Abrir IAM Roles",description:"Revise a role usada pelo backend e aplique privilegio minimo.",url:"https://console.aws.amazon.com/iam/home#/roles"}],setupNotes:["O servidor nao exige actions IAM exclusivas do MCP. As permissoes dos servicos AWS continuam valendo normalmente.","Use aws:ViaAWSMCPService e aws:CalledViaAWSMCP para restringir chamadas iniciadas via MCP."]}];function jj(t){return sh.find(n=>n.serverUrl===String(t||"").trim())}function ZS(t){var n,r;return((r=(n=jj(t))==null?void 0:n.oauthScopes)==null?void 0:r.join(" "))||""}function $x(t,n){const r=String(t||"").trim();return r==="always"||r==="auto"||r==="on_demand"||r==="manual"?r:n}function Ap(t,n){return String(t.id||t.key||t.name||t.label||n).trim()||n}function Bx(t,n){return String(t.name||t.label||t.title||Ap(t,n)).trim()||n}function Vx(t){return String(t.description||t.role||t.instructions||t.instruction||t.action||"").trim()}function ek(t,n){return String(t||"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||n}function Ns(t,n){try{return JSON.parse(t)}catch{return n}}function Gr(t){const n=String(t||"").trim();if(!n)return"";const r=n.replace(/\{\{[\s\S]*?\}\}/g,"0");try{const s=JSON.parse(r);return!s||typeof s!="object"||Array.isArray(s)?"Use um objeto JSON no topo.":""}catch(s){return s instanceof Error?s.message:"JSON invalido."}}function tk(t){const n=t.trim().replace(/;$/,"").trim();return/^[A-Za-z_$][\w$]*(?:\(\s*\))?$/.test(n)||/^return\s+[A-Za-z_$][\w$]*(?:\(\s*\))?\s*;?$/.test(t.trim())}function Ux(t){const n=String(t||"").trim();if(!n)return"";if(tk(n))return'Script precisa retornar um objeto JSON. Ex: return { exemplo: "valor" };';const r=/\breturn\b/.test(n)?n:`return (${n});`;try{return new Function("context","slots","input","now",r),""}catch(s){return s instanceof Error?s.message:"Sintaxe JS invalida."}}function bd(t,n="{}"){return t==null||t===""?n:typeof t=="string"?t:JSON.stringify(t,null,2)}function Wf(t){if(!t)return null;const{explanation:n,model:r,...s}=t;return Object.keys(s).length?s:null}function nk(t,n){var r,s;return!!((r=t.openai)!=null&&r.enabled||n["openai.apiKey"]||(s=t.openai)!=null&&s.apiKey)}function ok(t,n){var r,s,l;return!!((r=t.azureOpenai)!=null&&r.enabled||(n["azureOpenai.apiKey"]||(s=t.azureOpenai)!=null&&s.apiKey)&&((l=t.azureOpenai)!=null&&l.endpoint))}function ak(t,n,r){var s,l,p,m,h,f,x,j,w;return t==="openai"?nk(n,r):t==="azure_openai"?ok(n,r):t==="gemini"?!!((s=n.gemini)!=null&&s.enabled||r["gemini.apiKey"]||(l=n.gemini)!=null&&l.apiKey):t==="claude"?!!((p=n.claude)!=null&&p.enabled||r["claude.apiKey"]||(m=n.claude)!=null&&m.apiKey):t==="grok"?!!((h=n.grok)!=null&&h.enabled||r["grok.apiKey"]||(f=n.grok)!=null&&f.apiKey):t==="bedrock"?!!(((x=n.bedrock)!=null&&x.enabled||r["bedrock.apiKey"]||(j=n.bedrock)!=null&&j.apiKey)&&((w=n.bedrock)!=null&&w.baseUrl)):!1}function bj(t){return t==="azure_openai"?"Azure OpenAI":t==="gemini"?"Gemini":t==="claude"?"Claude":t==="grok"?"Grok":t==="bedrock"?"Bedrock":"OpenAI"}function wd(t,n){const r=bj(t),s=n.configured[t];return s===!0?`${r} (configurado)`:s===!1?`${r} (não configurado)`:n.loading?`${r} (verificando...)`:n.error?`${r} (status indisponível)`:r}function rk(t){const n=t==null?void 0:t.startMode;return JSON.stringify({text:"Olá, preciso de ajuda.",conversationId:`${t==null?void 0:t.agentId}-cliente-123`,currentStepId:n==="node"&&(t==null?void 0:t.currentStepId)||"",slots:{agentId:t==null?void 0:t.agentId,flowId:(t==null?void 0:t.flowId)||"<FLOW_ID_SALVO>",flowName:(t==null?void 0:t.flowName)||"<NOME_DO_FLUXO>",channel:t==null?void 0:t.channel,cpf:"12345678909",origem:"crm"}},null,2)}function sk(t,n,r,s,l){const p=n==="query"?`${t}${t.includes("?")?"&":"?"}${encodeURIComponent(s)}=<SEGREDO>`:t,m=['-H "Content-Type: application/json"',n==="bearer"?'-H "Authorization: Bearer <SEGREDO>"':"",n==="header"?`-H "${r}: <SEGREDO>"`:""].filter(Boolean);return[`curl -X POST "${p}" \\`,...m.map(h=>` ${h} \\`),` -d '${l.replace(/'/g,"'\\''")}'`].join(`
|
|
419
|
+
`)}function ik(t,n){return JSON.stringify({async:!0,queued:!0,jobId:"9b8b1f4e-7a41-4b0a-b067-7f0f8b56a010",status:"queued",retrievalUrl:`${zc}/api/canvas-flow/sqs/jobs/9b8b1f4e-7a41-4b0a-b067-7f0f8b56a010`,flowId:t||"<FLOW_ID_SALVO>",webhookId:n||"<WEBHOOK_ID>",callbackUrlConfigured:!1},null,2)}function lk(t,n){return JSON.stringify({jobId:"9b8b1f4e-7a41-4b0a-b067-7f0f8b56a010",status:"completed",flowId:t||"<FLOW_ID_SALVO>",webhookId:n||"<WEBHOOK_ID>",completedAt:"2026-05-17T12:00:00.000Z",result:{messages:[],slots:{},ended:!0}},null,2)}function Tp(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function ck(t){const n=/(\b(?:const|let|var|return|if|else|for|while|do|switch|case|break|continue|new|typeof|instanceof|of|in|true|false|null|undefined|context|slots|input|now|Array|Object|String|Number|Boolean|Math|Date|JSON)\b|\b\d+(?:\.\d+)?\b|[{}[\]().,:;+\-*/%=!<>|&?]+)/g;return t.split(n).map(r=>{if(!r)return"";const s=Tp(r);return/^(const|let|var|return|if|else|for|while|do|switch|case|break|continue|new|typeof|instanceof|of|in)$/.test(s)?`<span class="tok-keyword">${s}</span>`:/^(true|false|null|undefined)$/.test(s)?`<span class="tok-literal">${s}</span>`:/^(context|slots|input|now|Array|Object|String|Number|Boolean|Math|Date|JSON)$/.test(s)?`<span class="tok-builtin">${s}</span>`:/^\d/.test(s)?`<span class="tok-number">${s}</span>`:/^[{}[\]().,:;+\-*/%=!<>|&?]+$/.test(s)?`<span class="tok-punctuation">${s}</span>`:s}).join("")}function uk(t,n){let r="",s=0;for(;s<t.length;){const l=t[s];if(n==="js"&&l==="/"&&t[s+1]==="/"){const m=t.indexOf(`
|
|
420
|
+
`,s),h=m<0?t.length:m;r+=`<span class="tok-comment">${Tp(t.slice(s,h))}</span>`,s=h;continue}if(n==="js"&&l==="/"&&t[s+1]==="*"){const m=t.indexOf("*/",s+2),h=m<0?t.length:m+2;r+=`<span class="tok-comment">${Tp(t.slice(s,h))}</span>`,s=h;continue}if(l==='"'||n==="js"&&(l==="'"||l==="`")){const m=l;let h=s+1;for(;h<t.length;){if(t[h]==="\\"){h+=2;continue}if(t[h]===m){h+=1;break}h+=1}const f=t.slice(s,h),x=t.slice(h).match(/^\s*:/);r+=`<span class="${n==="json"&&x?"tok-property":"tok-string"}">${Tp(f)}</span>`,s=h;continue}let p=t.length;for(const m of n==="js"?['"',"'","`","//","/*"]:['"']){const h=t.indexOf(m,s+1);h>=0&&(p=Math.min(p,h))}r+=ck(t.slice(s,p)),s=p}return r||" "}function dk(){return`route-${Math.random().toString(36).slice(2,9)}-${Date.now().toString(36)}`}function Km(t,n="America/Sao_Paulo"){if(!t)return"";const r=new Date(t);if(Number.isNaN(r.getTime()))return t;try{return new Intl.DateTimeFormat("pt-BR",{timeZone:n,day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).format(r)}catch{return t}}const qx=[{value:"text-embedding-3-large",label:"text-embedding-3-large"},{value:"text-embedding-3-small",label:"text-embedding-3-small"},{value:"text-embedding-ada-002",label:"text-embedding-ada-002"}],pk=Array.from(new Map(Object.values(jh).flat().map(t=>[t.value,t])).values());function Sd(t,n){return!n||t.some(r=>r.value===n)?t:[{value:n,label:`${n} (atual)`},...t]}function hf({slotName:t,resultName:n}){return e.jsxs("span",{className:"field-hint reason-slot-hint",children:["Campo opcional para auditoria/debug. A decisao principal fica em"," ",e.jsx("code",{children:`context.slots.${n||"resultado"}`}),"; a explicacao da IA fica em"," ",e.jsx("code",{children:`context.slots.${t}`}),". Use um nome legivel, por exemplo ",e.jsx("code",{children:"motivoAgendamento"}),"."]})}function wj(t){const n=String(t||"").trim();return n?/^(context|Math|Number|String|Boolean|Array|Date)\b/.test(n)?n:n.startsWith("slots.")?`context.${n}`:`context.slots.${n}`:"context.slots.input"}function mk(t,n){const r=wj(t),s={filled:"value !== undefined && value !== null && String(value).trim() !== ''",text:"typeof value === 'string' && value.trim() !== ''",number:["(typeof value === 'number' && Number.isFinite(value))","|| (typeof value === 'string'"," && value.trim() !== ''"," && Number.isFinite(Number(value)))"].join(`
|
|
421
|
+
`),integer:["Number.isInteger(value)","|| (typeof value === 'string'"," && /^-?\\d+$/.test(value.trim()))"].join(`
|
|
422
|
+
`),boolean:["typeof value === 'boolean'","|| ['true', 'false', 'sim', 'nao', 'não', 'yes', 'no', '1', '0']"," .includes(String(value).trim().toLowerCase())"].join(`
|
|
423
|
+
`),date:["value instanceof Date","|| (String(value || '').trim() !== ''"," && !Number.isNaN(Date.parse(String(value))))"].join(`
|
|
424
|
+
`),email:"/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(String(value || '').trim())",cpf:"String(value || '').replace(/\\D/g, '').length === 11",cnpj:"String(value || '').replace(/\\D/g, '').length === 14",phone:"String(value || '').replace(/\\D/g, '').length >= 8",object:"value !== null && typeof value === 'object' && !Array.isArray(value)",array:"Array.isArray(value)"};return["(() => {",` const value = ${r};`,` return ${s[n]};`,"})()"].join(`
|
|
425
|
+
`)}function hk(t){const n=new Set,r=String(t||""),s=/\b(?:context\.)?slots\.([A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*)/g,l=/\b(?:context\.)?slots\[['"]([^'"]+)['"]\]/g;let p;for(;p=s.exec(r);)n.add(p[1].split(".")[0]);for(;p=l.exec(r);)n.add(p[1].split(".")[0]);return Array.from(n)}function fk(t){const r=wj(t).match(/^context\.slots\.([A-Za-z_$][\w$]*)/);return(r==null?void 0:r[1])||""}function vp(t){var n,r;return(t==null?void 0:t.responseName)||((n=t==null?void 0:t.api)==null?void 0:n.responseName)||((r=t==null?void 0:t.component)==null?void 0:r.responseName)||""}function Hx(t){return t.split(",").map(n=>n.replace(/^\s+/,""))}function Qm(t){return t.split(",").map(n=>n.trim()).filter(Boolean)}const Gf=["GET","POST","PUT","PATCH","DELETE"],gk=[{value:"text",label:"Texto"},{value:"email",label:"Email"},{value:"number",label:"Número"},{value:"date",label:"Data"},{value:"cpf",label:"CPF"},{value:"cnpj",label:"CNPJ"},{value:"phone",label:"Telefone"},{value:"boolean",label:"Sim/Não"}],xk=[{value:"filled",label:"Preenchido"},{value:"text",label:"Texto"},{value:"number",label:"Número"},{value:"integer",label:"Inteiro"},{value:"boolean",label:"Booleano"},{value:"date",label:"Data"},{value:"email",label:"Email"},{value:"cpf",label:"CPF"},{value:"cnpj",label:"CNPJ"},{value:"phone",label:"Telefone"},{value:"object",label:"Objeto"},{value:"array",label:"Array/lista"}],Jf=[{value:"none",label:"Sem body"},{value:"jsonFields",label:"JSON por campos"},{value:"jsonText",label:"JSON texto"},{value:"text",label:"Texto bruto"}],vk=[{value:"insertOne",label:"Inserir 1"},{value:"insertMany",label:"Inserir vários"},{value:"find",label:"Buscar vários"},{value:"findOne",label:"Buscar 1"},{value:"updateOne",label:"Atualizar 1"},{value:"updateMany",label:"Atualizar vários"},{value:"upsertOne",label:"Upsert 1"},{value:"deleteOne",label:"Deletar 1"},{value:"deleteMany",label:"Deletar vários"},{value:"count",label:"Contar"},{value:"aggregate",label:"Aggregate"}],yk=new Set(["find","findOne","updateOne","updateMany","upsertOne","deleteOne","deleteMany","count","aggregate"]),jk=new Set(["insertOne","insertMany"]),bk=new Set(["updateOne","updateMany","upsertOne"]),wk=new Set(["find","findOne"]),Nk=new Set(["find","findOne"]),Ck=new Set(["find","aggregate","insertMany"]),Sk=new Set(["find","aggregate"]),kk=new Set(["find","findOne","updateOne","updateMany","upsertOne","deleteOne","deleteMany","count","aggregate"]),Wx=new Set(["insertOne","insertMany","updateOne","updateMany","upsertOne"]),qt={interactiveBody:1024,footer:60,buttons:3,buttonLabel:20,buttonId:256,listButton:20,listSections:10,listRows:10,sectionTitle:24,rowTitle:24,rowDescription:72,rowId:200,carouselCards:10,carouselCardTitle:80,carouselCardSubtitle:160,imageUrl:500},Ak=[{value:"actions",label:"Ações iniciais"},{value:"appointments",label:"Meus agendamentos"},{value:"providers",label:"Prestadores"},{value:"services",label:"Serviços"},{value:"dates",label:"Datas"},{value:"times",label:"Horários"},{value:"items",label:"Itens selecionáveis"}],bh={mode:"auto",flowId:"",flowToken:"{{context.conversationId}}",flowCta:"Agendar",flowScreen:"START",headerText:"Agendamento",buttonText:"Ver opções",stage:"actions",stageTemplate:"{{context.slots.appointmentStage}}",actionsTemplate:"",appointmentsTemplate:"{{context.slots.appointments}}",providersTemplate:"{{context.slots.providers}}",servicesTemplate:"{{context.slots.services}}",datesTemplate:"{{context.slots.dates}}",timesTemplate:"{{context.slots.times}}",itemsTemplate:"{{context.slots.items}}",itemsFilterTemplate:"",itemsMaxSelected:20,examsTemplate:"{{context.slots.exams}}",payloadTemplate:"{}",stepOrder:["providers","services","items","dates","times"],stepLabels:{actions:"Ações iniciais",appointments:"Meus agendamentos",providers:"Prestadores",services:"Serviços",dates:"Datas",times:"Horários",items:"Itens selecionáveis"},attachmentSteps:[],llmEnabled:!1,llmSourceTemplate:"{{context.slots.schedules}}",llmInstruction:"Receba os agendamentos/horários brutos e retorne providers, services, items, dates, times e appointments no formato do WhatsApp Flow.",llmModel:"",llmTemperature:.1},Du=[{key:"actions",label:"Ações iniciais",screen:"ACTIONS"},{key:"appointments",label:"Meus agendamentos",screen:"APPOINTMENTS"},{key:"providers",label:"Prestadores",screen:"START"},{key:"services",label:"Serviços",screen:"SERVICES"},{key:"dates",label:"Datas",screen:"DATES"},{key:"times",label:"Horários",screen:"TIMES"},{key:"items",label:"Itens selecionáveis",screen:"ITEMS"}],Gx={actions:{title:"Ações iniciais",description:"Use quando quiser mostrar ações antes da escolha de prestador, serviço ou horário.",value:[{id:"novo",title:"Novo agendamento",description:"Escolher prestador, serviço, data e horário"},{id:"meus",title:"Meus agendamentos",description:"Consultar ou remarcar horários existentes"}]},appointments:{title:"Agendamentos",description:"Lista de agendamentos já montados ou disponíveis para confirmação.",value:[{id:"ag_20260520_0900",title:"20/05/2026 às 09:00",description:"Dra. Ana - Consulta cardiológica",providerId:"prestador_ana",serviceId:"consulta",date:"2026-05-20",time:"09:00"}]},providers:{title:"Prestadores",description:"Profissionais, unidades ou equipes que podem atender.",value:[{id:"prestador_ana",title:"Dra. Ana",description:"Cardiologia - Unidade Paulista"},{id:"prestador_bruno",title:"Dr. Bruno",description:"Clínico geral - Telemedicina"}]},services:{title:"Serviços",description:"Serviços ou procedimentos que o usuário pode escolher.",value:[{id:"consulta",title:"Consulta",description:"Atendimento de 30 minutos"},{id:"retorno",title:"Retorno",description:"Retorno em até 15 dias"}]},dates:{title:"Datas",description:"Dias disponíveis. O id pode ser uma data ISO para facilitar o backend.",value:[{id:"2026-05-20",title:"20/05/2026",description:"Quarta-feira"},{id:"2026-05-21",title:"21/05/2026",description:"Quinta-feira"}]},times:{title:"Horários",description:"Horários disponíveis para a etapa selecionada.",value:[{id:"09:00",title:"09:00",description:"Manhã"},{id:"14:30",title:"14:30",description:"Tarde"}]},items:{title:"Itens selecionáveis",description:"Lista genérica para seleção múltipla. Pode ser exame, produto, procedimento ou qualquer item de carrinho.",value:[{id:"hemograma",title:"Hemograma",description:"HEM"},{id:"tsh",title:"TSH",description:"Hormônio tireoestimulante"},{id:"glicemia",title:"Glicemia",description:"GLI"}]},payload:{title:"Payload extra do Flow",description:"Objeto adicional para contexto. No Flow Meta padrao, apenas campos aceitos pela tela inicial entram no payload nativo; em lista/Blip/Sinch ele pode carregar mais contexto.",value:{clientId:"{{context.slots.clientId}}",clientName:"{{context.slots.clientName}}",insurancePlan:"{{context.slots.plan}}",origin:"canvas-flow"}}};function Md(t){return`attachment:${t}`}function Ep(t,n){const r=["zero","um","dois","tres","quatro","cinco","seis","sete","oito","nove"];return String(t||"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").trim().toLowerCase().replace(/\d/g,l=>`_${r[Number(l)]}_`).replace(/[^a-z_]+/g,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"")||`anexo_${r[n+1]||"item"}`}function ih(t){return String(t||"").replace(/ç/g,"ç").replace(/ã/g,"ã").replace(/õ/g,"õ").replace(/á/g,"á").replace(/é/g,"é").replace(/ÃÂ/g,"í").replace(/ó/g,"ó").replace(/ú/g,"ú").replace(/ê/g,"ê").replace(/â/g,"â").replace(/ô/g,"ô").replace(/à/g,"à").replace(/ç/g,"ç").replace(/ã/g,"ã").replace(/õ/g,"õ").replace(/á/g,"á").replace(/é/g,"é").replace(/Ã/g,"í").replace(/ó/g,"ó").replace(/ú/g,"ú").replace(/ê/g,"ê").replace(/â/g,"â").replace(/ô/g,"ô").replace(/à /g,"à").replace(/Â/g,"")}function ff(t,n){const r=n.map(m=>Md(m.id)),s=new Set([...Du.map(m=>m.key),...r]),p=(Array.isArray(t)?t:Du.map(m=>m.key)).map(m=>String(m||"").trim()==="exams"?"items":String(m||"").trim()).filter((m,h,f)=>s.has(m)&&f.indexOf(m)===h);for(const m of r)p.includes(m)||p.push(m);return p.length||p.push(Du[0].key),p}function Jx(t,n,r){const s=Du.find(p=>p.key===t);if(s)return ih((r==null?void 0:r[t])||s.label);const l=n.find(p=>Md(p.id)===t);return(l==null?void 0:l.label)||"Anexo"}function Kx(t,n){if(n===0)return"START";const r=Du.find(s=>s.key===t);return r?r.screen==="START"?"PROVIDERS":r.screen:`ATTACHMENT_${Ep(t.replace(/^attachment:/,""),n).toUpperCase()}`}function Ek(t){return{actions:{helpKey:"actions",title:"Ações iniciais",valueKey:"actionsTemplate",rows:3,placeholder:'Opcional. Ex: [{"id":"novo","title":"Novo agendamento"},{"id":"meus","title":"Meus agendamentos"}]'},appointments:{helpKey:"appointments",title:"Agendamentos",valueKey:"appointmentsTemplate",rows:3,placeholder:"{{context.slots.appointments}}"},providers:{helpKey:"providers",title:"Prestadores",valueKey:"providersTemplate",rows:3,placeholder:"{{context.slots.providers}}"},services:{helpKey:"services",title:"Serviços",valueKey:"servicesTemplate",rows:3,placeholder:"{{context.slots.services}}"},dates:{helpKey:"dates",title:"Datas",valueKey:"datesTemplate",rows:3,placeholder:"{{context.slots.dates}}"},times:{helpKey:"times",title:"Horários",valueKey:"timesTemplate",rows:3,placeholder:"{{context.slots.times}}"},items:{helpKey:"items",title:"Itens selecionáveis",valueKey:"itemsTemplate",rows:4,placeholder:"{{context.slots.items}}"}}[t]}function Mk(t){try{return JSON.stringify(t)}catch{return String(t)}}function Tk(t){const n=String(t||"").trim();return/^(return|const|let|var|if|for|while|do|switch|try|throw|function|class)\b/.test(n)?n:`return (${n});`}function Ik(t){const n=String(t||"").trim();if(!n)return"";const r=Tk(n);try{return new Function("context","slots","input","now",r),""}catch(s){return s instanceof Error?s.message:"Sintaxe JS invalida."}}function Kf(t){return t.map((n,r)=>{if(typeof n=="string")return`${r+1}. ${n}`;if(n&&typeof n=="object"){const s=n,l=[s.path,s.field,s.pointer,s.property,s.component].map(f=>typeof f=="string"||typeof f=="number"?String(f).trim():"").find(Boolean),p=[s.message,s.error,s.title,s.detail,s.description].map(f=>typeof f=="string"||typeof f=="number"?String(f).trim():"").find(Boolean),m=[s.details,s.errors,s.validation_errors].find(f=>Array.isArray(f)&&f.length>0),h=m?`
|
|
426
|
+
${Kf(m).split(`
|
|
427
|
+
`).map(f=>` ${f}`).join(`
|
|
428
|
+
`)}`:"";return`${r+1}. ${l?`${l}: `:""}${p||Mk(n)}${h}`}return`${r+1}. ${String(n)}`}).join(`
|
|
429
|
+
`)}function Qx(t){return t==="buttons"||t==="quickReplies"?qt.buttons:t==="list"||t==="appointmentFlow"?qt.listRows:t==="carousel"?qt.carouselCards:1}const Jr={field:"",type:"text",value:""};function Nj(t){return Array.isArray(t)?"array":typeof t=="boolean"?"boolean":typeof t=="number"?"number":"text"}function Cj(t){return Array.isArray(t)?t.map(n=>String(n)).join(", "):t==null?"":typeof t=="object"?JSON.stringify(t):String(t)}function Rd(t,n){const r=n.trim();if(t==="number"){if(!r)return null;const s=Number(r.replace(",","."));return Number.isFinite(s)?s:null}return t==="boolean"?r==="true":t==="array"?r.split(",").map(s=>s.trim()).filter(Boolean).map(s=>{if(s==="true")return!0;if(s==="false")return!1;const l=Number(s.replace(",","."));return Number.isFinite(l)&&/^-?\d+([.,]\d+)?$/.test(s)?l:s}):n}function Pk(t,n){return Array.isArray(n)&&n.length?n.map(r=>({field:String(r.field||"").trim(),value:r.value,condition:String(r.condition||"")})).filter(r=>r.field):Object.entries(t||{}).map(([r,s])=>({field:r,value:s,condition:""}))}function _k(t){return t.reduce((n,r)=>{const s=String(r.field||"").trim(),l=String(r.condition||"").trim();return s&&!l&&(n[s]=r.value),n},{})}function wh({type:t,value:n,onChange:r}){return t==="boolean"?e.jsxs("select",{value:n==="true"?"true":"false",onChange:s=>r(s.target.value),children:[e.jsx("option",{value:"true",children:"true"}),e.jsx("option",{value:"false",children:"false"})]}):e.jsx("input",{value:n,placeholder:t==="array"?"valor1, valor2":"Valor",onChange:s=>r(s.target.value)})}function Ki({filter:t,draft:n,emptyText:r,onChange:s,onDraftChange:l}){const p=Object.entries(t||{}),m=()=>{const h=n.field.trim();h&&(s({...t,[h]:Rd(n.type,n.value)}),l(Jr))};return e.jsxs("div",{className:"filter-editor",children:[p.length===0&&e.jsx("div",{className:"filter-empty",children:r}),p.map(([h,f],x)=>{const j=Nj(f),w=Cj(f);return e.jsxs("div",{className:"filter-row",children:[e.jsx("input",{"aria-label":"Campo extraFields",value:h,placeholder:"Campo",onChange:N=>{const C=N.target.value.trim(),E={...t};delete E[h],C&&(E[C]=f),s(E)}}),e.jsxs("select",{"aria-label":"Tipo do filtro",value:j,onChange:N=>{s({...t,[h]:Rd(N.target.value,w)})},children:[e.jsx("option",{value:"text",children:"Texto"}),e.jsx("option",{value:"number",children:"Número"}),e.jsx("option",{value:"boolean",children:"Booleano"}),e.jsx("option",{value:"array",children:"Lista"})]}),e.jsx(wh,{type:j,value:w,onChange:N=>s({...t,[h]:Rd(j,N)})}),e.jsx("button",{type:"button",className:"filter-icon-button","aria-label":"Remover filtro",title:"Remover filtro",onClick:()=>{const N={...t};delete N[h],s(N)},children:e.jsx(Nt,{size:14})})]},x)}),e.jsxs("div",{className:"filter-row filter-row-new",children:[e.jsx("input",{value:n.field,placeholder:"Campo",onChange:h=>l({...n,field:h.target.value})}),e.jsxs("select",{value:n.type,onChange:h=>l({...n,type:h.target.value}),children:[e.jsx("option",{value:"text",children:"Texto"}),e.jsx("option",{value:"number",children:"Número"}),e.jsx("option",{value:"boolean",children:"Booleano"}),e.jsx("option",{value:"array",children:"Lista"})]}),e.jsx(wh,{type:n.type,value:n.value,onChange:h=>l({...n,value:h})}),e.jsxs("button",{type:"button",className:"filter-add-button",onClick:m,disabled:!n.field.trim(),children:[e.jsx(un,{size:14}),"Add"]})]})]})}function Qf(t){if(t.bodyType==="none"||t.bodyType==="jsonFields"||t.bodyType==="jsonText"||t.bodyType==="text")return t.bodyType;const n=t.body!==void 0?t.body:t.data;return typeof n=="string"?"text":n&&typeof n=="object"&&!Array.isArray(n)?"jsonFields":"none"}function uo(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function Xx(){return{method:"GET",url:"https://example.com",headers:{},params:{},bodyType:"none"}}function Ok(){return{enabled:!0,url:"",method:"GET",headers:{},params:{},intervalSeconds:5,maxAttempts:10,stopCondition:'result.data.status === "done"'}}function Fl(t){if(t==null||t==="")return`{
|
|
430
|
+
|
|
431
|
+
}`;if(typeof t=="string")return t;try{return JSON.stringify(t,null,2)}catch{return"{}"}}function Xm({requests:t,onChange:n}){const[r,s]=b.useState({}),[l,p]=b.useState({}),m=Array.isArray(t)?t:[],h=(j,w)=>s(N=>({...N,[j]:w})),f=(j,w)=>{const N=[...m];N[j]={...N[j]||Xx(),...w},n(N)},x=j=>n(m.filter((w,N)=>N!==j));return e.jsxs("div",{className:"http-batch-editor",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsxs("strong",{children:["Requests httpBatch (",m.length,")"]}),e.jsxs("button",{type:"button",onClick:()=>n([...m,Xx()]),children:[e.jsx(un,{size:14}),"Request"]})]}),m.length===0&&e.jsx("div",{className:"filter-empty",children:"Nenhuma chamada configurada."}),m.map((j,w)=>{const N=Qf(j),C=j.body!==void 0?j.body:j.data,E=uo(j.polling),T=E.enabled===!0,R=Qf(E),D=E.body!==void 0?E.body:E.data,q=I=>f(w,{polling:{...Ok(),...E,...I}});return e.jsxs("div",{className:"http-request-card",children:[e.jsxs("div",{className:"http-request-header",children:[e.jsxs("strong",{children:["Request ",w+1]}),e.jsx("button",{type:"button",className:"filter-icon-button","aria-label":"Remover request",title:"Remover request",onClick:()=>x(w),children:e.jsx(Nt,{size:14})})]}),e.jsxs("div",{className:"http-request-grid",children:[e.jsxs("label",{children:["Método",e.jsx("select",{value:String(j.method||"GET").toUpperCase(),onChange:I=>f(w,{method:I.target.value}),children:Gf.map(I=>e.jsx("option",{value:I,children:I},I))})]}),e.jsxs("label",{children:["URL",e.jsx("input",{value:String(j.url||""),placeholder:"https://api.exemplo.com/recurso",onChange:I=>f(w,{url:I.target.value})})]})]}),e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Headers"})}),e.jsx(Ki,{filter:uo(j.headers),draft:r[`headers-${w}`]||Jr,emptyText:"Sem headers.",onDraftChange:I=>h(`headers-${w}`,I),onChange:I=>f(w,{headers:I})})]}),e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Query params"})}),e.jsx(Ki,{filter:uo(j.params),draft:r[`params-${w}`]||Jr,emptyText:"Sem query params.",onDraftChange:I=>h(`params-${w}`,I),onChange:I=>f(w,{params:I})})]}),e.jsxs("label",{children:["Body",e.jsx("select",{value:N,onChange:I=>{const F=I.target.value;if(F==="none"&&f(w,{bodyType:F,body:void 0,data:void 0}),F==="jsonFields"&&f(w,{bodyType:F,body:uo(C),data:void 0}),F==="jsonText"){const Y=Fl(C);p(ne=>({...ne,[w]:Y})),f(w,{bodyType:F,body:Ns(Y,uo(C)),data:void 0})}F==="text"&&f(w,{bodyType:F,body:typeof C=="string"?C:"",data:void 0})},children:Jf.map(I=>e.jsx("option",{value:I.value,children:I.label},I.value))})]}),N==="jsonFields"&&e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Campos do body"})}),e.jsx(Ki,{filter:uo(C),draft:r[`body-${w}`]||Jr,emptyText:"Sem campos no body.",onDraftChange:I=>h(`body-${w}`,I),onChange:I=>f(w,{body:I,data:void 0,bodyType:N})})]}),N==="jsonText"&&e.jsxs("label",{children:["JSON do body",e.jsx("textarea",{rows:6,value:l[w]??Fl(C),placeholder:'{"campo": "valor"}',onChange:I=>p(F=>({...F,[w]:I.target.value})),onBlur:()=>{const I=l[w]??Fl(C);f(w,{body:Ns(I,uo(C)),data:void 0,bodyType:N})}})]}),N==="text"&&e.jsxs("label",{children:["Texto do body",e.jsx("textarea",{rows:4,value:String(C||""),placeholder:"Conteúdo bruto enviado no body",onChange:I=>f(w,{body:I.target.value,data:void 0,bodyType:N})})]}),e.jsxs("div",{className:"filter-section",children:[e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:T,onChange:I=>q({enabled:I.target.checked})}),e.jsx("span",{children:"Ativar polling"})]}),T&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"filter-empty",children:["Use polling quando a chamada inicial dispara um processamento/webhook e outra URL precisa ser consultada até o dado aparecer. Em URL, headers ou params, você pode usar ",e.jsx("code",{children:"{{result.data.id}}"})," ou ",e.jsx("code",{children:"{{initialResult.data.id}}"}),"."]}),e.jsxs("div",{className:"http-request-grid",children:[e.jsxs("label",{children:["Método do polling",e.jsx("select",{value:String(E.method||"GET").toUpperCase(),onChange:I=>q({method:I.target.value}),children:Gf.map(I=>e.jsx("option",{value:I,children:I},I))})]}),e.jsxs("label",{children:["URL de polling",e.jsx("input",{value:String(E.url||""),placeholder:"https://api.exemplo.com/status/{{result.data.id}}",onChange:I=>q({url:I.target.value})})]})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Intervalo (segundos)",e.jsx("input",{type:"number",min:1,max:600,value:Number(E.intervalSeconds||5),onChange:I=>q({intervalSeconds:Math.max(1,Number(I.target.value)||1)})})]}),e.jsxs("label",{children:["Máx. tentativas",e.jsx("input",{type:"number",min:1,max:100,value:Number(E.maxAttempts||10),onChange:I=>q({maxAttempts:Math.max(1,Number(I.target.value)||1)})})]})]}),e.jsxs("div",{className:"filter-empty",children:["Use a condição JS para decidir quando parar. Você recebe ",e.jsx("code",{children:"result"})," com a resposta atual do polling,",e.jsx("code",{children:"initialResult"})," com a resposta da primeira chamada e ",e.jsx("code",{children:"attempt"})," com o número da tentativa."]}),e.jsxs("label",{children:["Condição JS para parar",e.jsx("textarea",{rows:3,value:String(E.stopCondition||""),placeholder:'result.data.status === "done" && Boolean(result.data.result?.xpto)',onChange:I=>q({stopCondition:I.target.value})})]}),e.jsxs("label",{children:["Body do polling",e.jsx("select",{value:R,onChange:I=>{const F=I.target.value;if(F==="none"&&q({bodyType:F,body:void 0,data:void 0}),F==="jsonFields"&&q({bodyType:F,body:uo(D),data:void 0}),F==="jsonText"){const Y=Fl(D);p(ne=>({...ne,[`polling-${w}`]:Y})),q({bodyType:F,body:Ns(Y,uo(D)),data:void 0})}F==="text"&&q({bodyType:F,body:typeof D=="string"?D:"",data:void 0})},children:Jf.map(I=>e.jsx("option",{value:I.value,children:I.label},I.value))})]}),R==="jsonFields"&&e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Campos do body do polling"})}),e.jsx(Ki,{filter:uo(D),draft:r[`polling-body-${w}`]||Jr,emptyText:"Sem campos no body.",onDraftChange:I=>h(`polling-body-${w}`,I),onChange:I=>q({body:I,data:void 0,bodyType:R})})]}),R==="jsonText"&&e.jsxs("label",{children:["JSON do body do polling",e.jsx("textarea",{rows:6,value:l[`polling-${w}`]??Fl(D),placeholder:'{"id": "{{initialResult.data.id}}"}',onChange:I=>p(F=>({...F,[`polling-${w}`]:I.target.value})),onBlur:()=>{const I=l[`polling-${w}`]??Fl(D);q({body:Ns(I,uo(D)),data:void 0,bodyType:R})}})]}),R==="text"&&e.jsxs("label",{children:["Texto do body do polling",e.jsx("textarea",{rows:4,value:String(D||""),placeholder:"Conteúdo bruto enviado no polling",onChange:I=>q({body:I.target.value,data:void 0,bodyType:R})})]}),e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Headers do polling"})}),e.jsx(Ki,{filter:uo(E.headers),draft:r[`polling-headers-${w}`]||Jr,emptyText:"Sem headers.",onDraftChange:I=>h(`polling-headers-${w}`,I),onChange:I=>q({headers:I})})]}),e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Query params do polling"})}),e.jsx(Ki,{filter:uo(E.params),draft:r[`polling-params-${w}`]||Jr,emptyText:"Sem query params.",onDraftChange:I=>h(`polling-params-${w}`,I),onChange:I=>q({params:I})})]})]})]})]},w)})]})}function Ph(t){return`${t}-${Math.random().toString(36).slice(2,8)}`}function Rk({tags:t,onChange:n}){const r=(s,l)=>{const p=[...t];p[s]={...p[s],...l},n(p)};return e.jsxs("div",{className:"rich-editor-block",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:"Tags do nó"}),e.jsxs("button",{type:"button",onClick:()=>n([...t,{id:Ph("tag"),tag:"novo_evento",label:"Novo evento",mode:"always",valueTemplate:"",metadataJson:"{}"}]),children:[e.jsx(un,{size:14}),"Tag"]})]}),e.jsxs("div",{className:"filter-empty",children:["Salva métricas em uma coleção separada quando a conversa passar por este nó. Use ",e.jsx("strong",{children:"uma vez"})," para funil/conversão e ",e.jsx("strong",{children:"sempre"})," para contagem de passagem."]}),t.length===0&&e.jsx("div",{className:"filter-empty",children:"Nenhuma tag configurada neste nó."}),t.map((s,l)=>{const p=s.metadataJson?Gr(s.metadataJson):"";return e.jsxs("div",{className:"rich-card-editor",children:[e.jsxs("div",{className:"rich-card-header",children:[e.jsxs("strong",{children:["Tag ",l+1]}),e.jsx("button",{type:"button",className:"filter-icon-button","aria-label":"Remover tag",title:"Remover tag",onClick:()=>n(t.filter((m,h)=>h!==l)),children:e.jsx(Nt,{size:14})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Tag",e.jsx("input",{value:s.tag||"",placeholder:"lead_qualificado",onChange:m=>r(l,{tag:m.target.value})})]}),e.jsxs("label",{children:["Nome para exibição",e.jsx("input",{value:s.label||"",placeholder:"Lead qualificado",onChange:m=>r(l,{label:m.target.value})})]})]}),e.jsxs("label",{children:["Frequência de gravação",e.jsxs("select",{value:s.mode||"always",onChange:m=>r(l,{mode:m.target.value}),children:[e.jsx("option",{value:"once",children:"Salvar uma vez por conversa neste nó"}),e.jsx("option",{value:"always",children:"Salvar toda vez que passar por aqui"})]})]}),e.jsxs("label",{children:["Valor opcional",e.jsx("input",{value:s.valueTemplate||"",placeholder:"{{context.slots.valor}}",onChange:m=>r(l,{valueTemplate:m.target.value})})]}),e.jsxs("label",{children:["Metadados JSON",e.jsx("textarea",{rows:3,value:s.metadataJson||"{}",placeholder:'{"canal":"{{context.channel}}"}',onChange:m=>r(l,{metadataJson:m.target.value})})]}),p&&e.jsxs("div",{className:"field-error",children:["JSON inválido: ",p]})]},s.id||l)})]})}function Xf({title:t,actions:n,onChange:r,maxActions:s=qt.buttons}){return e.jsxs("div",{className:"rich-editor-block",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsxs("strong",{children:[t," (",n.length,"/",s,")"]}),e.jsxs("button",{type:"button",disabled:n.length>=s,onClick:()=>r([...n,{id:Ph("action"),label:"Opcao",value:"opcao"}]),children:[e.jsx(un,{size:14}),"Add"]})]}),n.length===0&&e.jsx("div",{className:"filter-empty",children:"Nenhuma opcao cadastrada."}),n.map((l,p)=>e.jsxs("div",{className:"rich-action-row",children:[e.jsx("input",{value:l.label||"",placeholder:"Texto do botão",maxLength:qt.buttonLabel,onChange:m=>{const h=[...n];h[p]={...l,label:m.target.value},r(h)}}),e.jsx("input",{value:l.value||"",placeholder:"Valor salvo/enviado",maxLength:qt.buttonId,onChange:m=>{const h=[...n];h[p]={...l,value:m.target.value},r(h)}}),e.jsx("input",{value:l.id||"",placeholder:"ID",maxLength:qt.buttonId,onChange:m=>{const h=[...n];h[p]={...l,id:m.target.value},r(h)}}),e.jsx("button",{type:"button",className:"filter-icon-button","aria-label":"Remover opcao",title:"Remover opcao",onClick:()=>r(n.filter((m,h)=>h!==p)),children:e.jsx(Nt,{size:14})})]},l.id||p))]})}function Fk({sections:t,onChange:n}){const r=t.reduce((l,p)=>l+(p.items||[]).length,0),s=(l,p)=>{const m=[...t];m[l]={...m[l],...p},n(m)};return e.jsxs("div",{className:"rich-editor-block",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsxs("strong",{children:["Secoes da lista (",r,"/",qt.listRows," itens)"]}),e.jsxs("button",{type:"button",disabled:t.length>=qt.listSections,onClick:()=>n([...t,{title:"Seção",items:[]}]),children:[e.jsx(un,{size:14}),"Seção"]})]}),t.length===0&&e.jsx("div",{className:"filter-empty",children:"Adicione uma secao com itens de lista."}),t.map((l,p)=>e.jsxs("div",{className:"rich-card-editor",children:[e.jsxs("div",{className:"rich-card-header",children:[e.jsx("input",{value:l.title||"",placeholder:"Título da secao",maxLength:qt.sectionTitle,onChange:m=>s(p,{title:m.target.value})}),e.jsx("button",{type:"button",className:"filter-icon-button","aria-label":"Remover secao",title:"Remover secao",onClick:()=>n(t.filter((m,h)=>h!==p)),children:e.jsx(Nt,{size:14})})]}),(l.items||[]).map((m,h)=>e.jsxs("div",{className:"rich-list-item-row",children:[e.jsx("input",{value:m.title||"",placeholder:"Item",maxLength:qt.rowTitle,onChange:f=>{const x=[...l.items||[]];x[h]={...m,title:f.target.value},s(p,{items:x})}}),e.jsx("input",{value:m.description||"",placeholder:"Descricao",maxLength:qt.rowDescription,onChange:f=>{const x=[...l.items||[]];x[h]={...m,description:f.target.value},s(p,{items:x})}}),e.jsx("input",{value:m.value||"",placeholder:"Valor",maxLength:qt.rowId,onChange:f=>{const x=[...l.items||[]];x[h]={...m,value:f.target.value},s(p,{items:x})}}),e.jsx("button",{type:"button",className:"filter-icon-button","aria-label":"Remover item",title:"Remover item",onClick:()=>s(p,{items:l.items.filter((f,x)=>x!==h)}),children:e.jsx(Nt,{size:14})})]},m.id||h)),e.jsxs("button",{type:"button",className:"filter-add-button",disabled:r>=qt.listRows,onClick:()=>s(p,{items:[...l.items||[],{id:Ph("item"),title:"Item",value:"item"}]}),children:[e.jsx(un,{size:14}),"Item"]})]},p))]})}function zk({cards:t,onChange:n}){const r=(s,l)=>{const p=[...t];p[s]={...p[s],...l},n(p)};return e.jsxs("div",{className:"rich-editor-block",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsxs("strong",{children:["Cards do carrossel (",t.length,"/",qt.carouselCards,")"]}),e.jsxs("button",{type:"button",disabled:t.length>=qt.carouselCards,onClick:()=>n([...t,{id:Ph("card"),title:"Card",subtitle:"",imageUrl:"",buttons:[]}]),children:[e.jsx(un,{size:14}),"Card"]})]}),t.length===0&&e.jsx("div",{className:"filter-empty",children:"Adicione cards para o web widget."}),t.map((s,l)=>e.jsxs("div",{className:"rich-card-editor",children:[e.jsxs("div",{className:"rich-card-header",children:[e.jsxs("strong",{children:["Card ",l+1]}),e.jsx("button",{type:"button",className:"filter-icon-button","aria-label":"Remover card",title:"Remover card",onClick:()=>n(t.filter((p,m)=>m!==l)),children:e.jsx(Nt,{size:14})})]}),e.jsx("input",{value:s.title||"",maxLength:qt.carouselCardTitle,placeholder:"Título",onChange:p=>r(l,{title:p.target.value})}),e.jsx("input",{value:s.subtitle||"",maxLength:qt.carouselCardSubtitle,placeholder:"Subtítulo",onChange:p=>r(l,{subtitle:p.target.value})}),e.jsx("input",{value:s.imageUrl||"",maxLength:qt.imageUrl,placeholder:"URL da imagem",onChange:p=>r(l,{imageUrl:p.target.value})}),e.jsx(Xf,{title:"Botões do card",actions:s.buttons||[],onChange:p=>r(l,{buttons:p}),maxActions:qt.buttons})]},s.id||l))]})}function Lk({appointmentFlow:t,flowConfig:n,currentFlowId:r,stepId:s,agentId:l,onChange:p}){var mt,Et,Ye,Pe,Ze,Ct;const[m,h]=b.useState(""),[f,x]=b.useState(!1),[j,w]=b.useState(""),[N,C]=b.useState(""),[E,T]=b.useState(!1),[R,D]=b.useState(""),[q,I]=b.useState([]),[F,Y]=b.useState(!1),[ne,ae]=b.useState(""),[oe,Q]=b.useState(!1),[fe,xe]=b.useState(""),[ye,le]=b.useState(""),M={...bh,...t||{}},ee=re=>p({...M,...re}),H=(Array.isArray(M.attachmentSteps)?M.attachmentSteps:[]).slice(0,3).map((re,we)=>({id:Ep(re.id||`anexo_${we+1}`,we),label:ih(re.label||`Anexo ${we+1}`),type:re.type==="document"?"document":"image",required:re.required!==!1,description:ih(re.description||"")})),se={...bh.stepLabels,...M.stepLabels||{}};for(const re of Object.keys(se))se[re]=ih(se[re]);const G=ff(M.stepOrder,H),V=Du.filter(re=>!G.includes(re.key)),K=!!((mt=n.whatsapp)!=null&&mt.businessAccountId&&((Et=n.whatsapp)!=null&&Et.accessToken))||oe;b.useEffect(()=>{let re=!1;const we=async()=>{var Me;try{const et=await Oe.getProviderConfig({agentId:(l==null?void 0:l.trim())||"default-agent"});if(re)return;const it=et.settings.whatsapp;Q(!!((it==null?void 0:it.provider)==="meta"&&it.businessAccountId&&((Me=et.secretStatus)!=null&&Me["whatsapp.accessToken"]||it.accessToken)))}catch{re||Q(!1)}};return we(),window.addEventListener("canvas-flow-provider-config-updated",we),()=>{re=!0,window.removeEventListener("canvas-flow-provider-config-updated",we)}},[l]);const P=async()=>{if(!K){I([]);return}Y(!0),ae("");try{const re=await Oe.listWhatsappFlows({whatsapp:n.whatsapp,agentId:l});I(Array.isArray(re.flows)?re.flows:[])}catch(re){ae(re instanceof Error?re.message:"Não foi possível listar os WhatsApp Flows.")}finally{Y(!1)}},O=async re=>{const we=String(re||"").trim();if(we&&window.confirm("Excluir ou desativar este WhatsApp Flow na Meta?")){xe(we),ae("");try{const Me=await Oe.deleteWhatsappFlow(we,{whatsapp:n.whatsapp,agentId:l});M.flowId===we&&ee({flowId:""}),C(Me.deprecated?`Flow desativado: ${we}`:`Flow excluído: ${we}`),await P()}catch(Me){ae(Me instanceof Error?Me.message:"Não foi possível excluir o Flow.")}finally{xe("")}}},ve=re=>{var we;return e.jsx("button",{type:"button",className:"field-help-button",title:`Ver exemplo de ${((we=Gx[re])==null?void 0:we.title)||"campo"}`,onClick:Me=>{Me.preventDefault(),Me.stopPropagation(),D(et=>et===re?"":re)},children:"?"})},ge=re=>{const we=Gx[re];return R!==re||!we?null:e.jsxs("div",{className:"appointment-field-example inline",children:[e.jsxs("div",{children:[e.jsx("strong",{children:we.title}),e.jsx("button",{type:"button",title:"Fechar exemplo",onClick:Me=>{Me.preventDefault(),Me.stopPropagation(),D("")},children:e.jsx(Vt,{size:14})})]}),e.jsx("span",{children:we.description}),e.jsx("pre",{children:JSON.stringify(we.value,null,2)})]})},be=re=>ee({stepOrder:ff(re,H)}),Ce=(re,we)=>{ee({stepLabels:{...se,[re]:we}})},$=re=>{if(!(G.length<=1)){if(re.startsWith("attachment:")){const we=re.replace(/^attachment:/,"");he(H.filter(Me=>Me.id!==we),G.filter(Me=>Me!==re));return}be(G.filter(we=>we!==re))}},z=re=>{!re||G.includes(re)||(be([...G,re]),le(""))},Z=(re,we)=>{const Me=[...G],et=re+we;et<0||et>=Me.length||([Me[re],Me[et]]=[Me[et],Me[re]],be(Me))},he=(re,we=G)=>{const Me=re.slice(0,3).map((et,it)=>({...et,id:Ep(et.id,it),label:et.label||`Anexo ${it+1}`}));ee({attachmentSteps:Me,stepOrder:ff(we,Me)})},Be=()=>{if(H.length>=3)return;const re=H.length,we=Ep(`anexo_${re+1}`,re),Me={id:we,label:re===0?"Carteirinha de saúde":re===1?"Pedido médico":"RG",type:"image",required:!0,description:"Anexe uma imagem legível."};he([...H,Me],[...G,Md(we)])},at=async re=>{if(p(re),!r||!s)return!1;const we={...n,steps:n.steps.map(Me=>Me.id!==s?Me:{...Me,richMessage:{...Me.richMessage||{type:"appointmentFlow",text:""},appointmentFlow:re}})};return await Oe.updateFlow(r,{agentId:l,config:we}),!0},gt=re=>{const we=Ek(re);return we?e.jsxs("div",{className:"appointment-step-data-field",children:[e.jsxs("label",{children:["Label da etapa",e.jsx("input",{value:se[re]||we.title,maxLength:30,placeholder:we.title,onChange:Me=>Ce(re,Me.target.value)})]}),e.jsxs("label",{children:[e.jsxs("span",{className:"field-label-with-help",children:[e.jsx("span",{children:"Dados dinâmicos ou fixos"}),ve(we.helpKey)]}),e.jsx("textarea",{rows:we.rows,value:String(M[we.valueKey]||""),placeholder:we.placeholder,onChange:Me=>ee({[we.valueKey]:Me.target.value})})]}),ge(we.helpKey),re==="items"&&e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Filtro dos itens",e.jsx("input",{value:M.itemsFilterTemplate||"",placeholder:"{{context.slots.itemFilter}}",onChange:Me=>ee({itemsFilterTemplate:Me.target.value})}),e.jsx("span",{className:"field-hint",children:"Filtra por ID, título ou descrição antes de montar o Flow."})]}),e.jsxs("label",{children:["Máx. selecionados",e.jsx("input",{type:"number",min:1,max:20,value:M.itemsMaxSelected??20,onChange:Me=>ee({itemsMaxSelected:Number(Me.target.value)})}),e.jsx("span",{className:"field-hint",children:"Quantidade máxima que o usuário pode marcar neste passo."})]})]})]}):null};b.useEffect(()=>{P()},[(Ye=n.whatsapp)==null?void 0:Ye.businessAccountId,(Pe=n.whatsapp)==null?void 0:Pe.accessToken,(Ze=n.whatsapp)==null?void 0:Ze.graphApiVersion,l,oe]);const ht=async re=>{x(!0),w(""),C("");try{const we=n.whatsapp;if(!K)throw new Error("Configure WhatsApp Business Account ID e Access token em Provedores > WhatsApp.");const Me=m.trim()||`${n.title||"Canvas Flow"} Agendamento`;if(M.flowId&&re){const Re=await Oe.uploadWhatsappFlowJson(M.flowId,{whatsapp:we,agentId:l,title:M.headerText||"Agendamento",appointmentFlow:{...M,attachmentSteps:H,stepOrder:G,stepLabels:se},introText:n.title?`Agendamento - ${n.title}`:"Escolha as opções para montar seu agendamento."}),ot=Array.isArray(Re.validationErrors)?Re.validationErrors:[];if(ot.length){const rt=Kf(ot);w(`Flow atualizado, mas o JSON voltou com ${ot.length} erro(s) de validação.${rt?`
|
|
432
|
+
${rt}`:""}`),await P();return}const kt=await Oe.publishWhatsappFlow(M.flowId,{whatsapp:we,agentId:l}),Fe={...M,attachmentSteps:H,stepOrder:G,stepLabels:se,mode:"auto"},Te=await at(Fe);C(`Flow publicado: ${String(kt.flowId||M.flowId)}${Te?" e salvo no Canvas.":". Clique em Salvar para persistir no Canvas."}`),await P();return}const et=await Oe.createWhatsappFlow({name:Me,categories:["APPOINTMENT_BOOKING"],publish:re,whatsapp:we,agentId:l,title:M.headerText||"Agendamento",appointmentFlow:{...M,attachmentSteps:H,stepOrder:G,stepLabels:se},introText:n.title?`Agendamento - ${n.title}`:"Escolha as opções para montar seu agendamento."}),it=String(et.flowId||"");it&&await at({...M,flowId:it,mode:"auto",attachmentSteps:H,stepOrder:G,stepLabels:se});const qe=Array.isArray(et.validationErrors)?et.validationErrors:[];if(qe.length){const Re=Kf(qe);w(`Flow criado, mas o JSON voltou com ${qe.length} erro(s) de validação.${Re?`
|
|
433
|
+
${Re}`:""}`)}else C(re?`Flow criado, publicado e salvo no Canvas: ${it}`:`Rascunho criado e salvo no Canvas: ${it}`);await P()}catch(we){w(we instanceof Error?we.message:"Nao foi possivel criar/publicar o Flow.")}finally{x(!1)}};return e.jsxs("div",{className:"rich-editor-block",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:"WhatsApp Flow de agendamento"}),e.jsxs("button",{type:"button",title:"Ver exemplos dos dados dinâmicos",onClick:()=>T(re=>!re),children:[e.jsx(cj,{size:14}),"Exemplos"]})]}),e.jsx("div",{className:"filter-empty",children:"API oficial envia Flow nativo quando houver Flow ID publicado. Blip e Sinch recebem uma lista interativa equivalente usando os mesmos dados dinâmicos."}),E&&e.jsxs("div",{className:"filter-empty",children:[e.jsx("strong",{children:"Formato esperado dos dados dinâmicos"}),e.jsx("pre",{children:JSON.stringify({providers:[{id:"prestador_ana",title:"Dra. Ana",description:"Cardiologia"},{id:"prestador_bruno",title:"Dr. Bruno",description:"Clínico geral"}],services:[{id:"consulta",title:"Consulta",description:"30 min"},{id:"retorno",title:"Retorno",description:"15 min"}],items:[{id:"hemograma",title:"Hemograma",description:"Exame de sangue"},{id:"tsh",title:"TSH",description:"Tireoide"},{id:"glicemia",title:"Glicemia",description:"Jejum"}],dates:[{id:"2026-05-20",title:"20/05/2026",description:"Quarta-feira"},{id:"2026-05-21",title:"21/05/2026",description:"Quinta-feira"}],times:[{id:"09:00",title:"09:00",description:"Manhã"},{id:"14:30",title:"14:30",description:"Tarde"}],appointments:[{id:"ag_123",title:"20/05 às 09:00",description:"Dra. Ana - Consulta"}]},null,2)}),e.jsxs("span",{children:["Você pode preencher esses campos com uma variável, por exemplo ","{{context.slots.providers}}",", ou com um JSON direto. O componente também aceita itens com ",e.jsx("code",{children:"label"}),", ",e.jsx("code",{children:"name"})," ou ",e.jsx("code",{children:"nome"})," no lugar de ",e.jsx("code",{children:"title"}),"."]})]}),e.jsxs("div",{className:"rich-editor-block nested",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:"Criar e publicar na Meta"}),e.jsxs("button",{type:"button",onClick:()=>void P(),disabled:!K||F,children:[F?e.jsx(Ut,{size:14,className:"spin"}):e.jsx(kp,{size:14}),"Atualizar"]})]}),e.jsxs("label",{children:["Nome do Flow",e.jsx("input",{value:m,placeholder:`${n.title||"Canvas Flow"} Agendamento`,onChange:re=>h(re.target.value)})]}),e.jsx("div",{className:"filter-empty",children:"Usa o WhatsApp Business Account ID e o Access token configurados em Provedores > WhatsApp. Depois de criar, o Flow ID e gravado abaixo automaticamente."}),e.jsxs("div",{className:"meta-flow-manager",children:[e.jsxs("label",{children:["Flow criado na Meta",e.jsxs("select",{value:M.flowId||"",onChange:re=>ee({flowId:re.target.value,mode:re.target.value?"auto":M.mode}),disabled:!K||F,children:[e.jsx("option",{value:"",children:F?"Carregando flows...":"Selecionar flow criado"}),q.map(re=>{const we=String(re.id||""),Me=String(re.name||we),et=String(re.status||"");return e.jsxs("option",{value:we,children:[Me,et?` - ${et}`:""]},we)})]})]}),e.jsxs("button",{type:"button",className:"danger-link",onClick:()=>void O(M.flowId||""),disabled:!M.flowId||fe===M.flowId,title:"Excluir ou desativar o Flow selecionado na Meta",children:[e.jsx(Nt,{size:14}),fe===M.flowId?"Excluindo...":"Excluir"]})]}),!K&&e.jsx("div",{className:"filter-empty",children:"Configure Business Account ID e Access token em Provedores > WhatsApp para listar os flows criados."}),ne&&e.jsx("div",{className:"field-error",children:ne}),e.jsxs("div",{className:"rich-action-row compact",children:[e.jsx("button",{type:"button",onClick:()=>void ht(!1),disabled:f,children:f?"Processando...":"Criar rascunho"}),e.jsx("button",{type:"button",className:"primary-button",onClick:()=>void ht(!0),disabled:f,children:M.flowId?"Publicar Flow ID":"Criar e publicar"})]}),N&&e.jsx("div",{className:"filter-empty success",children:N}),j&&e.jsx("div",{className:"field-error",children:j})]}),e.jsxs("div",{className:"rich-editor-block nested",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Formatar dados com LLM"})}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:M.llmEnabled===!0,onChange:re=>ee({llmEnabled:re.target.checked})}),e.jsx("span",{children:"Usar LLM para converter dados brutos no formato do Flow"})]}),M.llmEnabled===!0&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Dados de entrada para a LLM",e.jsx("textarea",{rows:3,value:M.llmSourceTemplate||"",placeholder:"{{context.slots.schedules}}",onChange:re=>ee({llmSourceTemplate:re.target.value})})]}),e.jsxs("label",{children:["Instrução da formatação",e.jsx("textarea",{rows:4,value:M.llmInstruction||"",placeholder:"Transforme a agenda bruta em providers, services, items, dates, times e appointments.",onChange:re=>ee({llmInstruction:re.target.value})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Modelo",e.jsxs("select",{value:M.llmModel||"",onChange:re=>ee({llmModel:re.target.value}),children:[e.jsxs("option",{value:"",children:["Usar modelo do fluxo (",n.model,")"]}),Sd(pk,M.llmModel).map(re=>e.jsx("option",{value:re.value,children:re.label},re.value))]})]}),e.jsxs("label",{children:["Temperatura",e.jsx("input",{type:"number",min:0,max:1,step:.1,value:M.llmTemperature??.1,onChange:re=>ee({llmTemperature:Number(re.target.value)})})]})]}),e.jsxs("div",{className:"filter-empty",children:["Exemplo: a LLM recebe ","{{context.slots.schedules}}"," e retorna JSON com ",e.jsx("code",{children:"providers"}),", ",e.jsx("code",{children:"services"}),", ",e.jsx("code",{children:"items"}),", ",e.jsx("code",{children:"dates"}),", ",e.jsx("code",{children:"times"})," e ",e.jsx("code",{children:"appointments"}),". O runtime normaliza títulos, descrições e IDs para os limites do WhatsApp."]})]})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Como enviar",e.jsxs("select",{value:M.mode||"auto",onChange:re=>ee({mode:re.target.value}),children:[e.jsx("option",{value:"auto",children:"Automático: Flow se tiver ID, senão lista"}),e.jsx("option",{value:"metaFlow",children:"Usar WhatsApp Flow da Meta"}),e.jsx("option",{value:"interactive",children:"Usar lista/botões interativos"})]})]}),e.jsxs("label",{children:["Lista exibida agora",e.jsx("select",{value:M.stage||"actions",onChange:re=>ee({stage:re.target.value}),children:Ak.map(re=>e.jsx("option",{value:re.value,children:re.label},re.value))})]})]}),e.jsxs("div",{className:"filter-empty",children:[e.jsx("strong",{children:"Como enviar:"})," controla se este nó usa o Flow publicado da Meta ou uma lista compatível com Blip/Sinch. ",e.jsx("strong",{children:"Lista exibida agora:"})," define qual conjunto de opções aparece neste passo quando o envio for por lista."]}),e.jsxs("label",{children:["Lista exibida por contexto",e.jsx("input",{value:M.stageTemplate||"",placeholder:"{{context.slots.appointmentStage}}",onChange:re=>ee({stageTemplate:re.target.value})})]}),e.jsxs("div",{className:"filter-empty",children:["Se esse campo retornar ",e.jsx("code",{children:"providers"}),", ",e.jsx("code",{children:"services"}),", ",e.jsx("code",{children:"items"}),", ",e.jsx("code",{children:"dates"}),", ",e.jsx("code",{children:"times"})," ou ",e.jsx("code",{children:"appointments"}),", ele sobrescreve a lista escolhida acima."]}),e.jsxs("div",{className:"rich-editor-block nested",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:"Etapas do Flow"}),e.jsxs("button",{type:"button",onClick:Be,disabled:H.length>=3,children:[e.jsx(un,{size:14}),"Anexo"]})]}),e.jsxs("div",{className:"filter-empty",children:["Ordene as telas que o WhatsApp Flow vai renderizar. Para começar direto em uma etapa, escolha a tela em ",e.jsx("strong",{children:"Tela inicial"}),"; o Flow segue as próximas etapas desta ordem."]}),V.length>0&&e.jsxs("div",{className:"appointment-add-step-row",children:[e.jsx("select",{value:ye||((Ct=V[0])==null?void 0:Ct.key)||"",onChange:re=>le(re.target.value),children:V.map(re=>e.jsx("option",{value:re.key,children:se[re.key]||re.label},re.key))}),e.jsxs("button",{type:"button",onClick:()=>{var re;return z(ye||((re=V[0])==null?void 0:re.key)||"")},children:[e.jsx(un,{size:14}),"Etapa"]})]}),e.jsx("div",{className:"appointment-step-order-list",children:G.map((re,we)=>{const Me=H.find(qe=>Md(qe.id)===re),et=Me?H.findIndex(qe=>qe.id===Me.id):-1,it=Du.some(qe=>qe.key===re);return e.jsx("div",{className:"appointment-step-order-row",children:e.jsxs("div",{className:"appointment-step-order-main",children:[e.jsxs("div",{className:"appointment-step-order-title",children:[e.jsxs("div",{children:[e.jsxs("strong",{children:[we+1,". ",Jx(re,H,se)]}),e.jsx("small",{children:Kx(re,we)})]}),e.jsxs("div",{className:"appointment-step-order-actions",children:[e.jsx("button",{type:"button","aria-label":"Subir etapa",onClick:()=>Z(we,-1),disabled:we===0,children:e.jsx(bS,{size:14})}),e.jsx("button",{type:"button","aria-label":"Descer etapa",onClick:()=>Z(we,1),disabled:we===G.length-1,children:e.jsx(vS,{size:14})}),(Me||it)&&e.jsx("button",{type:"button",className:"filter-icon-button","aria-label":"Remover etapa",onClick:()=>$(re),disabled:G.length<=1,children:e.jsx(Nt,{size:14})})]})]}),Me&&et>=0?e.jsxs("div",{className:"appointment-step-inline-editor",children:[e.jsxs("div",{className:"rich-card-header",children:[e.jsxs("strong",{children:["Anexo ",et+1]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:Me.required!==!1,onChange:qe=>{const Re=[...H];Re[et]={...Me,required:qe.target.checked},he(Re)}}),e.jsx("span",{children:"Obrigatório"})]})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Tipo",e.jsxs("select",{value:Me.type||"image",onChange:qe=>{const Re=[...H];Re[et]={...Me,type:qe.target.value==="document"?"document":"image"},he(Re)},children:[e.jsx("option",{value:"image",children:"Imagem"}),e.jsx("option",{value:"document",children:"Documento"})]})]}),e.jsxs("label",{children:["ID",e.jsx("input",{value:Me.id,placeholder:`anexo_${et+1}`,onChange:qe=>{const Re=Md(Me.id),ot=Ep(qe.target.value,et),kt=[...H];kt[et]={...Me,id:ot},he(kt,G.map(Fe=>Fe===Re?Md(ot):Fe))}})]})]}),e.jsxs("label",{children:["Label",e.jsx("input",{value:Me.label,maxLength:30,placeholder:"Carteirinha de saúde",onChange:qe=>{const Re=[...H];Re[et]={...Me,label:qe.target.value},he(Re)}})]}),e.jsxs("label",{children:["Descrição",e.jsx("input",{value:Me.description||"",maxLength:300,placeholder:"Envie uma imagem legível do documento.",onChange:qe=>{const Re=[...H];Re[et]={...Me,description:qe.target.value},he(Re)}})]})]}):gt(re)]})},re)})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Flow ID Meta",e.jsx("input",{value:M.flowId||"",placeholder:"ID do Flow publicado",onChange:re=>ee({flowId:re.target.value})})]}),e.jsxs("label",{children:["CTA do Flow",e.jsx("input",{value:M.flowCta||"",maxLength:qt.buttonLabel,placeholder:"Agendar",onChange:re=>ee({flowCta:re.target.value})})]})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Token do Flow",e.jsx("input",{value:M.flowToken||"",placeholder:"{{context.conversationId}}",onChange:re=>ee({flowToken:re.target.value})})]}),e.jsxs("label",{children:["Tela inicial",e.jsxs("select",{value:M.flowScreen||"",onChange:re=>ee({flowScreen:re.target.value}),children:[e.jsx("option",{value:"",children:"Primeira etapa da ordem"}),G.map((re,we)=>{const Me=Kx(re,we);return e.jsxs("option",{value:Me,children:[Jx(re,H,se)," (",Me,")"]},`${re}-${Me}`)})]})]})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Header",e.jsx("input",{value:M.headerText||"",placeholder:"Agendamento",onChange:re=>ee({headerText:re.target.value})})]}),e.jsxs("label",{children:["Botao da lista",e.jsx("input",{value:M.buttonText||"",maxLength:qt.listButton,placeholder:"Ver opções",onChange:re=>ee({buttonText:re.target.value})})]})]}),e.jsxs("div",{className:"filter-empty",children:["Os campos de dados aceitam array JSON, string JSON ou variável ","{{context.slots...}}",". Cada item pode usar id, title/label/name e description."]})]})}function Vp({language:t,value:n,placeholder:r,rows:s,error:l,fill:p=!1,readOnly:m=!1,onChange:h}){const[f,x]=b.useState({top:0,left:0}),j=b.useRef(null),w=b.useMemo(()=>{const C=Math.max(String(n||"").split(`
|
|
434
|
+
`).length,s);return Array.from({length:C},(E,T)=>T+1)},[s,n]),N=b.useMemo(()=>n?uk(n,t):`<span class="code-placeholder">${Tp(r)}</span>`,[t,r,n]);return b.useEffect(()=>{if(!m)return;const C=j.current;C&&(C.scrollTop=0,C.scrollLeft=0),x({top:0,left:0})},[m,n]),e.jsxs("div",{className:`code-editor-shell ${p?"fill":""} ${l?"invalid":""}`,children:[e.jsx("div",{className:"code-editor-gutter","aria-hidden":"true",children:e.jsx("div",{style:{transform:`translateY(-${f.top}px)`},children:w.map(C=>e.jsx("span",{children:C},C))})}),e.jsx("div",{className:`code-editor-main ${m?"readonly":""}`,onScroll:m?C=>x({top:C.currentTarget.scrollTop,left:C.currentTarget.scrollLeft}):void 0,children:m?e.jsx("pre",{className:"code-editor-highlight code-editor-static",dangerouslySetInnerHTML:{__html:N}}):e.jsxs(e.Fragment,{children:[e.jsx("pre",{"aria-hidden":"true",className:"code-editor-highlight",style:{transform:`translate(-${f.left}px, -${f.top}px)`},dangerouslySetInnerHTML:{__html:N}}),e.jsx("textarea",{ref:j,className:"code-editor-textarea",rows:s,spellCheck:!1,value:n,onScroll:C=>x({top:C.currentTarget.scrollTop,left:C.currentTarget.scrollLeft}),onChange:C=>h(C.target.value)})]})})]})}function gf({label:t,language:n,value:r,placeholder:s,rows:l,error:p,onChange:m,onOpen:h}){return e.jsxs("div",{className:"code-editor-field",children:[e.jsxs("div",{className:"code-editor-header",children:[e.jsx("strong",{children:t}),e.jsxs("div",{children:[e.jsx("span",{children:n}),e.jsxs("button",{type:"button",onClick:h,children:[e.jsx(Pu,{size:14}),"Abrir editor"]})]})]}),e.jsx(Vp,{language:n==="JSON"?"json":"js",rows:l,error:p,value:r,placeholder:s,onChange:m}),p&&e.jsx("div",{className:"code-editor-error",children:p})]})}function Yx({title:t="Gerar JS com LLM",placeholder:n="Ex: pegue context.slots.carrinho, calcule subtotal, desconto e retorne {pedido: {...}, total: ...}",prompt:r,generatedCode:s,generatedExplanation:l,error:p,loading:m,copied:h,onPromptChange:f,onGenerate:x,onCopy:j,onApply:w}){return e.jsxs("div",{className:"context-script-ai",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:t}),e.jsxs("button",{type:"button",disabled:m||!r.trim(),onClick:x,children:[m?e.jsx(Ut,{size:14,className:"spin"}):e.jsx(Dl,{size:14}),"Gerar"]})]}),e.jsx("textarea",{rows:3,value:r,placeholder:n,onChange:N=>f(N.target.value)}),p&&e.jsx("div",{className:"code-editor-error",children:p}),s&&e.jsxs("div",{className:"context-script-result",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:"Código gerado"}),e.jsxs("div",{className:"context-script-actions",children:[e.jsxs("button",{type:"button",onClick:j,children:[h?e.jsx(Ji,{size:14}):e.jsx(nn,{size:14}),"Copiar"]}),e.jsx("button",{type:"button",onClick:w,children:"Aplicar no editor"})]})]}),l&&e.jsx("div",{className:"filter-empty",children:l}),e.jsx(Vp,{language:"js",rows:8,value:s,placeholder:"",readOnly:!0,onChange:()=>{}})]})]})}function Dk({prompt:t,generated:n,error:r,loading:s,copied:l,onPromptChange:p,onGenerate:m,onCopy:h,onApply:f}){const x=Wf(n),j=x?JSON.stringify(x,null,2):"";return e.jsxs("div",{className:"context-script-ai",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:"Gerar MongoDB com LLM"}),e.jsxs("button",{type:"button",disabled:s||!t.trim(),onClick:m,children:[s?e.jsx(Ut,{size:14,className:"spin"}):e.jsx(Dl,{size:14}),"Gerar"]})]}),e.jsx("textarea",{rows:3,value:t,placeholder:"Ex: gere um filtro para buscar leads convertidos hoje pelo agentId atual, ordenando por createdAt desc",onChange:w=>p(w.target.value)}),r&&e.jsx("div",{className:"code-editor-error",children:r}),x&&e.jsxs("div",{className:"context-script-result",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:"JSON gerado"}),e.jsxs("div",{className:"context-script-actions",children:[e.jsxs("button",{type:"button",onClick:h,children:[l?e.jsx(Ji,{size:14}):e.jsx(nn,{size:14}),"Copiar"]}),e.jsx("button",{type:"button",onClick:f,children:"Aplicar campos"})]})]}),typeof(n==null?void 0:n.explanation)=="string"&&n.explanation&&e.jsx("div",{className:"filter-empty",children:n.explanation}),e.jsx(Vp,{language:"json",rows:8,value:j,placeholder:"",readOnly:!0,onChange:()=>{}})]})]})}function Gi({onClick:t,title:n="Gerar com LLM"}){return e.jsx("button",{type:"button",className:"prompt-field-ai-button",title:n,onClick:t,children:e.jsx(Dl,{size:13})})}const $k=[{value:"fields",title:"Montar campos",description:"A IA transforma contexto em JSON para usar nos próximos nós."},{value:"api",title:"Chamar API",description:"A IA monta argumentos/body e o Canvas chama um endpoint permitido."},{value:"external",title:"Servidor MCP",description:"Conecta em um servidor MCP remoto e chama tools, resources ou prompts."}];function Bk(t){return t==="api"?{mcpMode:"api",responseName:"consultaCliente",mcpToolName:"consultar_cliente",mcpToolDescription:"Consulta dados do cliente em uma API externa usando CPF ou identificador recebido no fluxo.",mcpInstruction:"Use os dados do contexto para montar a chamada. Depois normalize a resposta no output schema, sem inventar dados.",mcpInputSchema:`{
|
|
435
|
+
"type": "object",
|
|
436
|
+
"properties": {
|
|
437
|
+
"cpf": { "type": "string", "description": "CPF do cliente" }
|
|
438
|
+
},
|
|
439
|
+
"required": ["cpf"]
|
|
440
|
+
}`,mcpOutputSchema:`{
|
|
441
|
+
"type": "object",
|
|
442
|
+
"properties": {
|
|
443
|
+
"encontrado": { "type": "boolean" },
|
|
444
|
+
"nome": { "type": "string" },
|
|
445
|
+
"maiorIdade": { "type": "boolean" },
|
|
446
|
+
"status": { "type": "string" }
|
|
447
|
+
}
|
|
448
|
+
}`,mcpApiMethod:"POST",mcpApiBaseUrl:"https://api.exemplo.com/clientes/consulta",mcpApiHeadersJson:"{}",mcpApiQueryJson:"{}",mcpApiBodyJson:`{
|
|
449
|
+
"cpf": "{{context.slots.cpf}}"
|
|
450
|
+
}`,mcpApiAuthMode:"none",mcpApiAllowLlmRequest:!0,mcpApiMapResultWithLlm:!0,mcpApiExecute:!0,mcpApiCallMode:"single",mcpApiExecutionMode:"sequential",mcpApiRequestsJson:Yf("consultaCliente"),mcpMergeOutputToSlots:!1}:t==="external"?{mcpMode:"external",responseName:"mcpCliente",mcpToolName:"buscar_cliente_mcp",mcpToolDescription:"Chama uma tool de um servidor MCP remoto e normaliza o retorno para o fluxo.",mcpInstruction:"Use os dados do contexto para montar os argumentos da tool. Normalize o retorno no output schema.",mcpInputSchema:`{
|
|
451
|
+
"type": "object",
|
|
452
|
+
"properties": {
|
|
453
|
+
"cpf": { "type": "string" }
|
|
454
|
+
},
|
|
455
|
+
"required": ["cpf"]
|
|
456
|
+
}`,mcpOutputSchema:`{
|
|
457
|
+
"type": "object",
|
|
458
|
+
"properties": {
|
|
459
|
+
"encontrado": { "type": "boolean" },
|
|
460
|
+
"nome": { "type": "string" },
|
|
461
|
+
"documento": { "type": "string" },
|
|
462
|
+
"resumo": { "type": "string" }
|
|
463
|
+
}
|
|
464
|
+
}`,mcpExternalTransport:"streamable_http",mcpExternalUrl:"https://mcp.exemplo.com/mcp",mcpExternalOperation:"callTool",mcpExternalToolName:"buscar_cliente",mcpExternalArgumentsJson:`{
|
|
465
|
+
"cpf": "{{context.slots.cpf}}"
|
|
466
|
+
}`,mcpExternalHeadersJson:"{}",mcpExternalAuthMode:"none",mcpExternalOAuthConnectionScope:"agent",mcpExternalUseLlmArguments:!0,mcpExternalMapResultWithLlm:!0,mcpExternalTimeoutMs:3e4,mcpMergeOutputToSlots:!1}:{mcpMode:"fields",responseName:"camposCliente",mcpToolName:"montar_campos_cliente",mcpToolDescription:"Monta campos estruturados para o fluxo com base no contexto da conversa.",mcpInstruction:"Extraia e normalize os campos disponíveis no contexto. Retorne somente o JSON do output schema.",mcpInputSchema:`{
|
|
467
|
+
"type": "object",
|
|
468
|
+
"properties": {
|
|
469
|
+
"input": { "type": "string" },
|
|
470
|
+
"cpf": { "type": "string" }
|
|
471
|
+
}
|
|
472
|
+
}`,mcpOutputSchema:`{
|
|
473
|
+
"type": "object",
|
|
474
|
+
"properties": {
|
|
475
|
+
"cpf": { "type": "string" },
|
|
476
|
+
"intencao": { "type": "string" },
|
|
477
|
+
"resumo": { "type": "string" }
|
|
478
|
+
}
|
|
479
|
+
}`,mcpMergeOutputToSlots:!1}}function Zx({rules:t,draft:n,emptyText:r,onChange:s,onDraftChange:l}){const p=Array.isArray(t)?t:[],m=(f,x)=>{const j=[...p];j[f]={...j[f]||{field:"",value:""},...x},s(j.filter(w=>String(w.field||"").trim()))},h=()=>{const f=n.field.trim();f&&(s([...p,{field:f,value:Rd(n.type,n.value),condition:String(n.condition||"").trim()}]),l(Jr))};return e.jsxs("div",{className:"filter-editor conditional-filter-editor",children:[p.length===0&&e.jsx("div",{className:"filter-empty",children:r}),p.map((f,x)=>{const j=Nj(f.value),w=Cj(f.value);return e.jsxs("div",{className:"conditional-filter-row",children:[e.jsx("input",{"aria-label":"Campo extraFields",value:f.field||"",placeholder:"Campo",onChange:N=>m(x,{field:N.target.value.trim()})}),e.jsxs("select",{"aria-label":"Tipo do filtro",value:j,onChange:N=>m(x,{value:Rd(N.target.value,w)}),children:[e.jsx("option",{value:"text",children:"Texto"}),e.jsx("option",{value:"number",children:"Numero"}),e.jsx("option",{value:"boolean",children:"Booleano"}),e.jsx("option",{value:"array",children:"Lista"})]}),e.jsx(wh,{type:j,value:w,onChange:N=>m(x,{value:Rd(j,N)})}),e.jsx("input",{"aria-label":"Condicao JS do filtro",value:f.condition||"",placeholder:"Condicao JS opcional",onChange:N=>m(x,{condition:N.target.value})}),e.jsx("button",{type:"button",className:"filter-icon-button","aria-label":"Remover filtro",title:"Remover filtro",onClick:()=>s(p.filter((N,C)=>C!==x)),children:e.jsx(Nt,{size:14})})]},x)}),e.jsxs("div",{className:"conditional-filter-row conditional-filter-row-new",children:[e.jsx("input",{value:n.field,placeholder:"Campo",onChange:f=>l({...n,field:f.target.value})}),e.jsxs("select",{value:n.type,onChange:f=>l({...n,type:f.target.value}),children:[e.jsx("option",{value:"text",children:"Texto"}),e.jsx("option",{value:"number",children:"Numero"}),e.jsx("option",{value:"boolean",children:"Booleano"}),e.jsx("option",{value:"array",children:"Lista"})]}),e.jsx(wh,{type:n.type,value:n.value,onChange:f=>l({...n,value:f})}),e.jsx("input",{value:n.condition||"",placeholder:"context.slots.ano == 2026",onChange:f=>l({...n,condition:f.target.value})}),e.jsxs("button",{type:"button",className:"filter-add-button",onClick:h,disabled:!n.field.trim(),children:[e.jsx(un,{size:14}),"Add"]})]}),e.jsxs("div",{className:"filter-empty",children:["Condicao vazia aplica sempre. Exemplo: ",e.jsx("code",{children:"context.slots.ano == 2026"}),"."]})]})}function Vk(){return[{id:`rag_if_default_${Date.now()}`,condition:"",extraFieldsFilterPerRoundExpression:"[{ relevante: true }, { relevante: undefined }]",extraFieldsFilterPerRoundLimitsExpression:"[15, 15]",roundStopFind:!1,roundMixHalf:!0},{id:`rag_if_ano_${Date.now()+1}`,condition:"context?.slots?.extraFieldsFilter?.obterAnoFinanceiroPrioritario == true",extraFieldsFilterPerRoundExpression:"[{ ano: 2026 }, { ano: 2025 }]",roundStopFind:!1,roundMixHalf:!0},{id:`rag_if_ultima_${Date.now()+2}`,condition:"context?.slots?.extraFieldsFilter?.intentUltimaLei == true || context?.slots?.extraFieldsFilter?.ultimaLei == true",extraFieldsFilterPerRoundExpression:"[{ ano: 2026 }, { ano: 2025 }]",extraFieldsFilterPerRoundLimitsExpression:"undefined",roundStopFind:!1,roundMixHalf:!0,order:"desc",extraFieldsFilterOrderByExpression:'["numero"]',metadataOrderScanPageSize:1e3,metadataOrderMaxScan:2e4},{id:`rag_if_filter_${Date.now()+3}`,condition:"(context?.slots?.extraFieldsFilter?.ano || context?.slots?.extraFieldsFilter?.numero) && !context?.slots?.extraFieldsFilter?.intentUltimaLei && !context?.slots?.extraFieldsFilter?.obterAnoFinanceiroPrioritario",extraFieldsFilterExpression:"context?.slots?.extraFieldsFilter"}]}function ev({rules:t,onChange:n}){const r=Array.isArray(t)?t:[],s=(h,f)=>{const x=[...r];x[h]={...x[h]||{},...f},n(x)},l=()=>{n([...r,{id:`rag_if_${Date.now()}`,condition:""}])},p=h=>{if(h==="true")return!0;if(h==="false")return!1},m=h=>{if(h.trim()==="")return null;const f=Number(h);return Number.isFinite(f)?f:null};return e.jsxs("div",{className:"filter-section rag-conditional-section",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:"IF RAG"}),e.jsxs("div",{className:"rag-conditional-actions",children:[e.jsx("button",{type:"button",onClick:()=>n([...r,...Vk()]),children:"Exemplo leis"}),e.jsxs("button",{type:"button",onClick:l,children:[e.jsx(un,{size:14}),"IF"]})]})]}),r.length===0&&e.jsx("div",{className:"filter-empty",children:"Sem IF RAG. Use para trocar prompt, filtros e ordem por condicao."}),e.jsx("div",{className:"rag-conditional-list",children:r.map((h,f)=>e.jsxs("div",{className:"rag-conditional-card",children:[e.jsxs("div",{className:"rag-conditional-card-header",children:[e.jsxs("strong",{children:["IF #",f+1]}),e.jsx("button",{type:"button",className:"filter-icon-button","aria-label":"Remover IF RAG",title:"Remover IF RAG",onClick:()=>n(r.filter((x,j)=>j!==f)),children:e.jsx(Nt,{size:14})})]}),e.jsxs("label",{children:["Condicao do IF",e.jsx("input",{value:h.condition||"",placeholder:"context?.slots?.extraFieldsFilter?.intentUltimaLei == true",onChange:x=>s(f,{condition:x.target.value})})]}),e.jsxs("label",{children:["Prompt override",e.jsx("textarea",{rows:4,value:h.prompt||"",placeholder:"Opcional. Se preencher, este prompt substitui o Prompt RAG quando o IF bater.",onChange:x=>s(f,{prompt:x.target.value})})]}),e.jsxs("div",{className:"rag-conditional-grid",children:[e.jsxs("label",{children:["extraFieldsFilter (JS)",e.jsx("textarea",{rows:3,value:h.extraFieldsFilterExpression||"",placeholder:"context?.slots?.extraFieldsFilter",onChange:x=>s(f,{extraFieldsFilterExpression:x.target.value})})]}),e.jsxs("label",{children:["extraFieldsFilterPerRound (JS)",e.jsx("textarea",{rows:3,value:h.extraFieldsFilterPerRoundExpression||"",placeholder:"[{ ano: 2026 }, { ano: 2025 }]",onChange:x=>s(f,{extraFieldsFilterPerRoundExpression:x.target.value})})]}),e.jsxs("label",{children:["extraFieldsFilterPerRoundLimits (JS)",e.jsx("input",{value:h.extraFieldsFilterPerRoundLimitsExpression||"",placeholder:"[15, 15] ou undefined",onChange:x=>s(f,{extraFieldsFilterPerRoundLimitsExpression:x.target.value})})]}),e.jsxs("label",{children:["extraFieldsFilterOrderBy (JS)",e.jsx("input",{value:h.extraFieldsFilterOrderByExpression||"",placeholder:'["numero"]',onChange:x=>s(f,{extraFieldsFilterOrderByExpression:x.target.value})})]})]}),e.jsxs("div",{className:"rag-conditional-meta-grid",children:[e.jsxs("label",{children:["roundStopFind",e.jsxs("select",{value:h.roundStopFind===!0?"true":h.roundStopFind===!1?"false":"",onChange:x=>s(f,{roundStopFind:p(x.target.value)}),children:[e.jsx("option",{value:"",children:"herdar"}),e.jsx("option",{value:"true",children:"true"}),e.jsx("option",{value:"false",children:"false"})]})]}),e.jsxs("label",{children:["roundMixHalf",e.jsxs("select",{value:h.roundMixHalf===!0?"true":h.roundMixHalf===!1?"false":"",onChange:x=>s(f,{roundMixHalf:p(x.target.value)}),children:[e.jsx("option",{value:"",children:"herdar"}),e.jsx("option",{value:"true",children:"true"}),e.jsx("option",{value:"false",children:"false"})]})]}),e.jsxs("label",{children:["order",e.jsxs("select",{value:h.order||"",onChange:x=>s(f,{order:x.target.value}),children:[e.jsx("option",{value:"",children:"herdar"}),e.jsx("option",{value:"desc",children:"desc"}),e.jsx("option",{value:"asc",children:"asc"})]})]}),e.jsxs("label",{children:["scan page",e.jsx("input",{type:"number",min:0,value:h.metadataOrderScanPageSize??"",placeholder:"1000",onChange:x=>s(f,{metadataOrderScanPageSize:m(x.target.value)})})]}),e.jsxs("label",{children:["max scan",e.jsx("input",{type:"number",min:0,value:h.metadataOrderMaxScan??"",placeholder:"20000",onChange:x=>s(f,{metadataOrderMaxScan:m(x.target.value)})})]})]})]},h.id||f))})]})}const Sj=["string","number","integer","boolean","enum","object","array"];function xf(t){try{const n=JSON.parse(String(t||"{}")),r=n!=null&&n.properties&&typeof n.properties=="object"&&!Array.isArray(n.properties)?n.properties:{},s=new Set(Array.isArray(n==null?void 0:n.required)?n.required.map(l=>String(l)):[]);return Object.entries(r).map(([l,p])=>{const m=p&&typeof p=="object"&&!Array.isArray(p)?p:{},h=String(m.type||"string"),f=Array.isArray(m.enum),x=f?m.enum:[],j=typeof m["x-canvas-enumText"]=="string"?String(m["x-canvas-enumText"]):x.map(w=>String(w)).join(", ");return{name:l,type:f&&h==="string"?"enum":Sj.includes(h)?h:"string",required:s.has(l),enumValues:j,description:String(m.description||"")}})}catch{return[]}}function Uk(t,n){const r=new Set(t.map(p=>p.name));let s=t.length+1,l=`${n}${s}`;for(;r.has(l);)s+=1,l=`${n}${s}`;return{name:l,type:"string",required:!1,enumValues:"",description:""}}function qk(t,n){const r=t.split(/[,\n]/).map(s=>s.trim()).filter(Boolean);return!r.length||n==="object"||n==="array"?[]:n==="boolean"?r.map(s=>{const l=s.toLowerCase();if(l==="true"||l==="verdadeiro"||l==="sim")return!0;if(l==="false"||l==="falso"||l==="nao"||l==="não")return!1}).filter(s=>typeof s=="boolean"):n==="number"||n==="integer"?r.map(s=>Number(s.replace(",","."))).filter(s=>Number.isFinite(s)).map(s=>n==="integer"?Math.trunc(s):s):r}function Hk(t){const n={},r=[];t.forEach(l=>{const p=l.name.trim();if(!p)return;const m=qk(l.enumValues,l.type),h=l.enumValues||"",f=l.description||"";n[p]={type:l.type==="enum"?"string":l.type||"string",...f?{description:f}:{},...m.length?{enum:m}:{},...h?{"x-canvas-enumText":h}:{},...l.type==="array"?{items:{type:"string"}}:{}},l.required&&r.push(p)});const s={type:"object",properties:n};return r.length&&(s.required=r),JSON.stringify(s,null,2)}function kj(t){const n=String(t.type||(t.properties?"object":"any"));if(n==="array"){const r=t.items&&typeof t.items=="object"&&!Array.isArray(t.items)?t.items:{};return`array<${kj(r)}>`}return Array.isArray(t.enum)&&t.enum.length?`${n} enum`:n}function Aj(t,n="",r=!0){const s=t!=null&&t.properties&&typeof t.properties=="object"&&!Array.isArray(t.properties)?t.properties:{},l=new Set(Array.isArray(t==null?void 0:t.required)?t.required.map(p=>String(p)):[]);return Object.entries(s).flatMap(([p,m])=>{const h=m&&typeof m=="object"&&!Array.isArray(m)?m:{},f=n?`${n}.${p}`:p,x=r&&l.has(p),j=h.type==="array"&&h.items&&typeof h.items=="object"&&!Array.isArray(h.items)?h.items:void 0,w=j||h,N=w.properties?Aj(w,j?`${f}[]`:f,x):[];return[{path:f,type:kj(h),required:x,description:String(h.description||"")},...N]})}function Wk(t){const n=(s,l)=>{const p=s&&typeof s=="object"&&!Array.isArray(s)?s:{},m=p.properties&&typeof p.properties=="object"&&!Array.isArray(p.properties)?p.properties:{};return p.type==="object"&&Object.keys(m).length?Object.fromEntries(Object.entries(m).map(([h,f])=>[h,n(f,`${l}.${h}`)])):p.type==="array"?[`{{context.slots.${l}}}`]:`{{context.slots.${l}}}`},r=t!=null&&t.properties&&typeof t.properties=="object"&&!Array.isArray(t.properties)?t.properties:{};return JSON.stringify(Object.fromEntries(Object.entries(r).map(([s,l])=>[s,n(l,s)])),null,2)}function tv(t){return JSON.stringify(t&&typeof t=="object"&&!Array.isArray(t)?t:{},null,2)}function Yf(t="consultaCliente"){return JSON.stringify([{id:"cliente",label:"Buscar cliente",method:"POST",url:"https://api.exemplo.com/clientes/consulta",body:{cpf:"{{context.slots.cpf}}"}},{id:"endereco",label:"Buscar endereco",method:"GET",url:"https://api.exemplo.com/enderecos/{{context.slots."+t+".resultsById.cliente.data.enderecoId}}",params:{clienteId:"{{context.slots."+t+".resultsById.cliente.data.id}}"}}],null,2)}function nv(t){const n=Ns(String(t||"[]"),[]),r=uo(n);return(Array.isArray(n)?n:Array.isArray(r.requests)?r.requests:[]).filter(l=>!!(l&&typeof l=="object"&&!Array.isArray(l))).map((l,p)=>({...l,id:String(l.id||l.key||`request_${p+1}`),label:String(l.label||l.title||`Chamada ${p+1}`)}))}function ov(t){return JSON.stringify(t,null,2)}function Zf(t,n="api"){const r=new Set(t.map(m=>String(m.id||""))),s=n.trim().toLowerCase().replace(/[^a-z0-9_]+/g,"_").replace(/^_+|_+$/g,"")||"api";let l=t.length+1,p=r.has(s)?`${s}_${l}`:s;for(;r.has(p);)l+=1,p=`${s}_${l}`;return{id:p,label:`Chamada ${l}`,method:"GET",url:"https://api.exemplo.com/recurso",headers:{},params:{},bodyType:"none"}}function Gk({requests:t,responseName:n,executionMode:r,onChange:s,onUseExample:l}){const[p,m]=b.useState({}),[h,f]=b.useState({}),x=Array.isArray(t)?t:[],j=(C,E)=>m(T=>({...T,[C]:E})),w=(C,E)=>{const T=[...x];T[C]={...T[C]||Zf(x),...E},s(T)},N=C=>s(x.filter((E,T)=>T!==C));return e.jsxs("div",{className:"mcp-api-requests-editor",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsxs("div",{children:[e.jsxs("strong",{children:["Chamadas da API (",x.length,")"]}),e.jsx("span",{children:r==="parallel"?"Executadas ao mesmo tempo.":"Executadas na ordem da lista."})]}),e.jsxs("div",{className:"mcp-api-editor-actions",children:[e.jsxs("button",{type:"button",onClick:l,children:[e.jsx(Dl,{size:14}),"Exemplo"]}),e.jsxs("button",{type:"button",onClick:()=>s([...x,Zf(x)]),children:[e.jsx(un,{size:14}),"API"]})]})]}),x.length===0&&e.jsx("div",{className:"filter-empty",children:"Nenhuma API configurada. Clique em API para adicionar uma chamada."}),x.map((C,E)=>{const T=Qf(C),R=C.body!==void 0?C.body:C.data,D=String(C.id||`request_${E+1}`),q=String(C.label||`Chamada ${E+1}`);return e.jsxs("div",{className:"http-request-card mcp-api-call-card",children:[e.jsxs("div",{className:"http-request-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:q}),e.jsx("span",{children:D})]}),e.jsx("button",{type:"button",className:"filter-icon-button","aria-label":"Remover API",title:"Remover API",onClick:()=>N(E),children:e.jsx(Nt,{size:14})})]}),e.jsxs("div",{className:"mcp-api-call-meta",children:[e.jsxs("label",{children:["ID da chamada",e.jsx("input",{value:D,placeholder:"cliente",onChange:I=>w(E,{id:I.target.value})})]}),e.jsxs("label",{children:["Nome",e.jsx("input",{value:q,placeholder:"Buscar cliente",onChange:I=>w(E,{label:I.target.value})})]})]}),e.jsxs("div",{className:"http-request-grid",children:[e.jsxs("label",{children:["Método",e.jsx("select",{value:String(C.method||"GET").toUpperCase(),onChange:I=>w(E,{method:I.target.value}),children:Gf.map(I=>e.jsx("option",{value:I,children:I},I))})]}),e.jsxs("label",{children:["URL",e.jsx("input",{value:String(C.url||""),placeholder:E>0&&r!=="parallel"?`https://api.exemplo.com/enderecos/{{context.slots.${n}.resultsById.cliente.data.enderecoId}}`:"https://api.exemplo.com/clientes",onChange:I=>w(E,{url:I.target.value})})]})]}),E>0&&r!=="parallel"&&e.jsxs("div",{className:"filter-empty",children:["Pode usar resultados anteriores, por exemplo ",e.jsx("code",{children:`{{context.slots.${n}.resultsById.cliente.data.id}}`}),"."]}),e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Headers"})}),e.jsx(Ki,{filter:uo(C.headers),draft:p[`mcp-headers-${E}`]||Jr,emptyText:"Sem headers.",onDraftChange:I=>j(`mcp-headers-${E}`,I),onChange:I=>w(E,{headers:I})})]}),e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Query params"})}),e.jsx(Ki,{filter:uo(C.params),draft:p[`mcp-params-${E}`]||Jr,emptyText:"Sem query params.",onDraftChange:I=>j(`mcp-params-${E}`,I),onChange:I=>w(E,{params:I})})]}),e.jsxs("label",{children:["Body",e.jsx("select",{value:T,onChange:I=>{const F=I.target.value;if(F==="none"&&w(E,{bodyType:F,body:void 0,data:void 0}),F==="jsonFields"&&w(E,{bodyType:F,body:uo(R),data:void 0}),F==="jsonText"){const Y=Fl(R);f(ne=>({...ne,[E]:Y})),w(E,{bodyType:F,body:Ns(Y,uo(R)),data:void 0})}F==="text"&&w(E,{bodyType:F,body:typeof R=="string"?R:"",data:void 0})},children:Jf.map(I=>e.jsx("option",{value:I.value,children:I.label},I.value))})]}),T==="jsonFields"&&e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Campos do body"})}),e.jsx(Ki,{filter:uo(R),draft:p[`mcp-body-${E}`]||Jr,emptyText:"Sem campos no body.",onDraftChange:I=>j(`mcp-body-${E}`,I),onChange:I=>w(E,{body:I,data:void 0,bodyType:T})})]}),T==="jsonText"&&e.jsxs("label",{children:["JSON do body",e.jsx("textarea",{rows:6,value:h[E]??Fl(R),placeholder:'{"cpf": "{{context.slots.cpf}}"}',onChange:I=>f(F=>({...F,[E]:I.target.value})),onBlur:()=>{const I=h[E]??Fl(R);w(E,{body:Ns(I,uo(R)),data:void 0,bodyType:T})}})]}),T==="text"&&e.jsxs("label",{children:["Texto do body",e.jsx("textarea",{rows:4,value:String(R||""),placeholder:"Conteúdo bruto enviado no body",onChange:I=>w(E,{body:I.target.value,data:void 0,bodyType:T})})]})]},`${D}-${E}`)})]})}function av({title:t,helper:n,fields:r,emptyLabel:s,onAdd:l,onUpdate:p,onRemove:m}){return e.jsxs("div",{className:"mcp-schema-card",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:t}),e.jsx("span",{children:n})]}),e.jsxs("button",{type:"button",onClick:l,children:[e.jsx(un,{size:14}),"Campo"]})]}),r.length===0?e.jsx("div",{className:"filter-empty",children:s}):e.jsx("div",{className:"mcp-schema-fields",children:r.map((h,f)=>e.jsxs("div",{className:"mcp-schema-row",children:[e.jsxs("label",{children:["Campo",e.jsx("input",{value:h.name,placeholder:"cpf",onChange:x=>p(f,{name:x.target.value})})]}),e.jsxs("label",{children:["Tipo",e.jsx("select",{value:h.type,onChange:x=>p(f,{type:x.target.value}),children:Sj.map(x=>e.jsx("option",{value:x,children:x},x))})]}),e.jsxs("label",{children:["Opções",e.jsx("input",{value:h.enumValues,placeholder:"Ex: pendente, aprovado",onBeforeInput:Wi,onKeyDownCapture:Wi,onKeyDown:Wi,onKeyUpCapture:Wi,onKeyUp:Wi,onChange:x=>p(f,{enumValues:x.target.value})})]}),e.jsxs("label",{children:["Descrição",e.jsx("input",{value:h.description,placeholder:"Ajuda a IA a preencher corretamente",onBeforeInput:Wi,onKeyDownCapture:Wi,onKeyDown:Wi,onKeyUpCapture:Wi,onKeyUp:Wi,onChange:x=>p(f,{description:x.target.value})})]}),e.jsxs("label",{className:"mcp-required-toggle",children:["Obrigatório",e.jsx("input",{type:"checkbox",checked:h.required,onChange:x=>p(f,{required:x.target.checked})})]}),e.jsx("button",{type:"button",className:"filter-icon-button","aria-label":"Remover campo",onClick:()=>m(f),children:e.jsx(Nt,{size:14})})]},`mcp-schema-field-${f}`))})]})}function Jk({config:t,selectedStep:n,selectedEdge:r,flows:s=[],currentFlowId:l="",agentId:p="",onUpdateConfig:m,onUpdateStep:h,onUpdateEdge:f,onRefreshCronLog:x,canRefreshCronLog:j}){var Fs,sn,oc,Ma,ac,Ta,Oo,Lr,rr,fl,Ia,Pa,Ee,It,ja,Dn,$n,fn,Kt,In,Sn,us,Qc,ds,gl,_a,xl,rc,sc,Zo,sr,ps,vo,Mi,zs,Ro,Lt,_t,ea,ir,Ot,Qt,Ls,vl,bn,so,Rt,yo,ta,ic,yl,Dr,jo,Ti,lc,ms,jl,cc,hs,$r,Xc,uc,fs,Yc,Oa,Ds,$s,Ii,dc,bl,pc,Bs,Fo,Br,gs,wl,zo,Ra,Nl,Cl,lr,Vr,Sl,Zc,Bn,cr,bo,Lo,Pi,Vs,Ur,mc,xs,hc,kl,Yt,Al,fc,gc,El,xc,Do,Zt,gn,wn,vs,Us,_i,eu,Vn,Ml,Oi,Tl,Fa,io,Ri,vc,yc,tu,nu,ou,au,ru,su,xn,vn,qr,iu,Il,Fi,lu,Pl,jc,cu;const[w,N]=b.useState(Jr),[C,E]=b.useState({}),[T,R]=b.useState(null),[D,q]=b.useState(!1),[I,F]=b.useState(""),[Y,ne]=b.useState(!1),[ae,oe]=b.useState(""),[Q,fe]=b.useState(""),[xe,ye]=b.useState(""),[le,M]=b.useState(!1),[ee,H]=b.useState(""),[se,G]=b.useState(!1),[V,K]=b.useState(""),[P,O]=b.useState(""),[ve,ge]=b.useState(""),[be,Ce]=b.useState(!1),[$,z]=b.useState(""),[Z,he]=b.useState(!1),[Be,at]=b.useState(null),[gt,ht]=b.useState(""),[mt,Et]=b.useState(!1),[Ye,Pe]=b.useState([]),[Ze,Ct]=b.useState(""),[re,we]=b.useState({}),[Me,et]=b.useState({}),[it,qe]=b.useState({loading:!0,error:"",configured:{}}),[Re,ot]=b.useState(null),[kt,Fe]=b.useState(!1),[Te,rt]=b.useState(""),[pn,An]=b.useState(""),[sa,mn]=b.useState([]),[Wn,Jo]=b.useState(!1),[fr,Ko]=b.useState(""),[ia,Ao]=b.useState(""),[la,gr]=b.useState(null),[xr,vr]=b.useState(!1),[Ba,yr]=b.useState(""),[Va,Ua]=b.useState(""),[ks,Qo]=b.useState(""),[Gn,qa]=b.useState("skills"),[En,Xr]=b.useState(null),[Ha,el]=b.useState(""),[As,Jn]=b.useState(t.model||""),[ft,_n]=b.useState(!1),[Wa,ni]=b.useState(""),[tl,jr]=b.useState(""),[Es,Ga]=b.useState(""),[oi,ca]=b.useState(!1),We=p.trim()||"default-agent",Kn=t.llmProvider||"openai",Qn=b.useMemo(()=>Sd(Mp(Kn),t.model),[t.model,Kn]),Eo=(c,S="",_=t.model||"")=>{c&&(Xr(c),el(S),Jn(_||t.model||""),ni(""),jr(""),Ga(""),ca(!1))},Yr=()=>{ft||(Xr(null),ni(""),jr(""),Ga(""),ca(!1))},ai=b.useMemo(()=>Sd(Mp(Kn),As||t.model),[t.model,As,Kn]),Vl=async()=>{if(!(!En||!Ha.trim()||ft)){_n(!0),Ga(""),ca(!1);try{const c=await Oe.generatePromptField({fieldType:En.fieldType,targetType:En.targetType,objective:Ha,currentValue:En.currentValue,currentConfig:t,stepContext:En.stepContext,model:As||t.model,llmProvider:Kn,flowId:l,agentId:We});ni(c.text||""),jr(c.explanation||"")}catch(c){Ga(c instanceof Error?c.message:"Nao foi possivel gerar este campo.")}finally{_n(!1)}}},Zr=async()=>{Wa&&(await navigator.clipboard.writeText(Wa),ca(!0),window.setTimeout(()=>ca(!1),1800))},ua=()=>{!En||!Wa||(En.applyText(Wa),Yr())},Ja=()=>En&&e.jsx("div",{className:"modal-backdrop prompt-field-assistant-backdrop",onMouseDown:Yr,children:e.jsxs("div",{className:"prompt-field-assistant-modal",onMouseDown:c=>c.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:En.title}),e.jsx("span",{children:En.label})]}),e.jsxs("button",{type:"button",onClick:Yr,disabled:ft,children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("div",{className:"prompt-field-assistant-body",children:[e.jsxs("section",{className:"prompt-field-assistant-compose",children:[e.jsxs("label",{children:["Modelo",e.jsx("select",{value:As,onChange:c=>Jn(c.target.value),children:ai.map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))})]}),e.jsxs("label",{children:["Objetivo deste campo",e.jsx("textarea",{rows:5,value:Ha,placeholder:En.placeholder,onChange:c=>el(c.target.value)})]}),e.jsx("div",{className:"filter-empty",children:"A IA vai gerar apenas este campo. Use Agents.md para papel/arquitetura, Guardrails para limites, Termos bloqueados para tripwires e MCP para contrato de ferramenta."}),e.jsxs("button",{type:"button",onClick:()=>void Vl(),disabled:ft||!Ha.trim(),children:[ft?e.jsx(Ut,{size:14,className:"spin"}):e.jsx(Dl,{size:14}),"Gerar"]})]}),e.jsxs("section",{className:"prompt-field-assistant-result",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:"Resultado"}),e.jsxs("div",{className:"context-script-actions",children:[e.jsxs("button",{type:"button",onClick:()=>void Zr(),disabled:!Wa,children:[oi?e.jsx(Ji,{size:14}):e.jsx(nn,{size:14}),"Copiar"]}),e.jsx("button",{type:"button",onClick:ua,disabled:!Wa,children:"Aplicar no campo"})]})]}),Es&&e.jsx("div",{className:"code-editor-error",children:Es}),tl&&e.jsx("div",{className:"filter-empty",children:tl}),e.jsx("textarea",{rows:14,value:Wa,placeholder:"O texto gerado aparece aqui.",readOnly:!0})]})]})]})});b.useEffect(()=>{q(!1),F(""),oe(""),fe(""),ye(""),M(!1)},[r==null?void 0:r.id]),b.useEffect(()=>{Ua(""),Qo("")},[n==null?void 0:n.id]),b.useEffect(()=>{let c=!1;const S=async()=>{qe(_=>({..._,loading:!0,error:""}));try{const _=await Oe.getProviderConfig({agentId:We});if(c)return;qe({loading:!1,error:"",configured:Object.fromEntries(["openai","azure_openai","gemini","claude","grok","bedrock"].map(je=>[je,ak(je,_.settings,_.secretStatus)]))})}catch(_){if(c)return;qe(W=>({...W,loading:!1,error:_ instanceof Error?_.message:"Não foi possível verificar os provedores."}))}};return S(),window.addEventListener("canvas-flow-provider-config-updated",S),()=>{c=!0,window.removeEventListener("canvas-flow-provider-config-updated",S)}},[We]);const _e=n==null?void 0:n.component,en=(_e==null?void 0:_e.type)==="mcp"&&_e.mcpMode||"fields",Xn=(_e==null?void 0:_e.type)==="mcp"?String(_e.mcpExternalUrl||"").trim():"",mo=(_e==null?void 0:_e.type)==="mcp"&&_e.mcpExternalAuthMode||"none",ho=(_e==null?void 0:_e.type)==="mcp"&&_e.mcpExternalOAuthConnectionScope||"agent",Ka=(_e==null?void 0:_e.type)==="mcp"&&_e.mcpExternalTransport||"streamable_http",ri=mo!=="oauth"||(Re==null?void 0:Re.connected)===!0;b.useEffect(()=>{mn([]),Ko(""),Ao("")},[n==null?void 0:n.id,mo,ho,Ka,Xn,_e==null?void 0:_e.mcpExternalAuthHeaderName,_e==null?void 0:_e.mcpExternalAuthQueryParam,_e==null?void 0:_e.mcpExternalAuthSecret,_e==null?void 0:_e.mcpExternalHeadersJson]);const Qa=(_e==null?void 0:_e.type)==="flowRouter"?_e.flowRouterRules||[]:[],Mn=(_e==null?void 0:_e.type)==="flowRouter"&&_e.flowRouterFallbackAgentId||"",si=b.useMemo(()=>{const c=_=>String(_.agentId||_.name||"").trim(),S=new Map;return Ye.forEach(_=>S.set(c(_),_)),S.set(We,S.get(We)||{agentId:We,name:We,flowCount:s.length}),Qa.forEach(_=>{const W=String(_.targetAgentId||"").trim();W&&!S.has(W)&&S.set(W,{agentId:W,name:W,flowCount:0})}),Mn&&!S.has(Mn)&&S.set(Mn,{agentId:Mn,name:Mn,flowCount:0}),Array.from(S.values()).sort((_,W)=>_.name.localeCompare(W.name))},[We,Ye,Mn,Qa,s.length]),nl=b.useMemo(()=>{const c=new Set([We]);return Qa.forEach(S=>{const _=String(S.targetAgentId||"").trim();_&&c.add(_)}),Mn&&c.add(Mn),Array.from(c)},[We,Mn,Qa]),Ul=nl.join("|");b.useEffect(()=>{we(c=>{const S=c[We]||[];return S.length===s.length&&S.every((W,je)=>{var ke;return W._id===((ke=s[je])==null?void 0:ke._id)})?c:{...c,[We]:s}}),et(c=>c[We]?{...c,[We]:!1}:c)},[We,s]),b.useEffect(()=>{if((_e==null?void 0:_e.type)!=="flowRouter")return;let c=!1;return Ct(""),Oe.listAgents().then(S=>{c||Pe(S)}).catch(S=>{c||Ct(S instanceof Error?S.message:"Não foi possível carregar os agentes.")}),()=>{c=!0}},[n==null?void 0:n.id,_e==null?void 0:_e.type]),b.useEffect(()=>{if((_e==null?void 0:_e.type)!=="flowRouter")return;let c=!1;const S=nl.filter(_=>_&&_!==We&&!re[_]);if(S.length)return S.forEach(_=>{et(W=>({...W,[_]:!0})),Oe.listFlows(_).then(W=>{c||we(je=>({...je,[_]:W}))}).catch(()=>{c||we(W=>({...W,[_]:[]}))}).finally(()=>{c||et(W=>({...W,[_]:!1}))})}),()=>{c=!0}},[We,re,nl,Ul,_e==null?void 0:_e.type]);const br=b.useCallback(c=>String(c||"").trim()||We,[We]),wr=b.useCallback(c=>{const S=br(c);return(re[S]||(S===We?s:[])).filter(W=>W._id!==l)},[We,l,re,s,br]),ql=b.useCallback((c,S)=>{const _=String(c||"").trim();return _?wr(S).some(W=>W._id===_):!1},[wr]),an=b.useCallback((c,S)=>`Fluxo fora de ${br(S)} (${c.slice(0,8)}...)`,[br]),xt=b.useCallback(async c=>{if(!((_e==null?void 0:_e.type)==="mcp"&&en==="external"&&mo==="oauth"&&!!Xn))return ot(null),An(""),null;c!=null&&c.silent||Fe(!0);try{const _=await Oe.getMcpOAuthStatus({serverUrl:Xn,agentId:We,connectionScope:ho});return ot(_),An(_.authorizationUrl||""),_.error&&rt(_.error),_}catch(_){return ot(null),rt(_ instanceof Error?_.message:"Nao foi possivel verificar o OAuth MCP."),null}finally{c!=null&&c.silent||Fe(!1)}},[We,mo,ho,Xn,en,_e==null?void 0:_e.type]);b.useEffect(()=>{if(rt(""),(_e==null?void 0:_e.type)!=="mcp"||en!=="external"||mo!=="oauth"||!Xn){ot(null);return}xt()},[xt,mo,Xn,en,n==null?void 0:n.id,_e==null?void 0:_e.type]),b.useEffect(()=>{if((_e==null?void 0:_e.type)!=="mcp"||en!=="external"||mo!=="oauth"||(Re==null?void 0:Re.status)!=="pending"||!Re.authorizationUrl)return;const c=window.setInterval(()=>{xt({silent:!0})},3e3);return()=>window.clearInterval(c)},[xt,Re==null?void 0:Re.authorizationUrl,Re==null?void 0:Re.status,mo,en,_e==null?void 0:_e.type]),b.useEffect(()=>{const c=S=>{const _=S.data;!_||_.type!=="canvas-flow-mcp-oauth"||(_.status==="ok"&&An(""),rt(_.status==="ok"?"OAuth MCP conectado. O no ja pode executar chamadas autenticadas.":"OAuth MCP retornou erro. Verifique a conexao e tente novamente."),xt({silent:!1}))};return window.addEventListener("message",c),()=>window.removeEventListener("message",c)},[xt]);const zt=(c,S)=>{const _=`canvas-flow-mcp-oauth-${Date.now()}`;return S&&!S.closed?(S.location.href=c,S.focus(),S):window.open(c,_,"width=720,height=760")},$t=(c,S=!1,_)=>{if(ot(c),An(c.authorizationUrl||""),c.authorizationUrl){const W=zt(c.authorizationUrl,_);rt(W?S?"Cache OAuth limpo. Autorize o servidor MCP na janela aberta.":"Autorize o servidor MCP na janela aberta. Esta tela atualiza quando o callback voltar.":"O navegador bloqueou a janela de OAuth. Use Abrir autorizacao.")}else c.connected?(_&&!_.closed&&_.close(),rt(S?"OAuth MCP reconectado.":"OAuth MCP ja esta conectado.")):(_&&!_.closed&&_.close(),rt(c.error||"OAuth iniciado, mas o servidor nao retornou uma URL de autorizacao."))},Cn=async(c=!1)=>{if(!Xn||kt)return;const S=window.open("",`canvas-flow-mcp-oauth-${Date.now()}`,"width=720,height=760");Fe(!0),An(""),rt(c?"Limpando cache OAuth deste escopo e URL...":"");try{c&&await Oe.disconnectMcpOAuth({serverUrl:Xn,agentId:We,connectionScope:ho});const _=await Oe.startMcpOAuth({serverUrl:Xn,agentId:We,connectionScope:ho,label:(n==null?void 0:n.title)||(n==null?void 0:n.id)||"MCP externo",scope:ZS(Xn),clientName:"Canvas Flow MCP"});$t(_,c,S)}catch(_){S&&!S.closed&&S.close(),rt(_ instanceof Error?_.message:c?"Nao foi possivel reconectar o OAuth MCP.":"Nao foi possivel iniciar o OAuth MCP.")}finally{Fe(!1)}},da=async()=>{await Cn(!1)},$c=async()=>{await Cn(!0)},Hl=async()=>{if(!(!Xn||kt)){Fe(!0),rt("");try{const c=await Oe.disconnectMcpOAuth({serverUrl:Xn,agentId:We,connectionScope:ho});ot(c),An(""),rt("OAuth MCP desconectado deste escopo.")}catch(c){rt(c instanceof Error?c.message:"Nao foi possivel desconectar o OAuth MCP.")}finally{Fe(!1)}}},ol=it.configured[Kn],Ms=bj(Kn),pa=c=>c&&c!=="auto"?c:Kn,Xo=(c,S)=>Sd(Mp(pa(c)),S),Nr=async()=>{var W,je,ke,Ge,ut,yt,tn,Un,Xe;const c=I.trim();if(!c||Y||!r)return;const S=t.steps.find(ln=>ln.id===r.source),_=t.steps.find(ln=>ln.id===r.target);ne(!0),ye(""),M(!1);try{const ln=await Oe.generateContextScript({scriptPurpose:"condition",instruction:c,currentCode:r.condition||"",model:t.model,llmProvider:t.llmProvider||"openai",temperature:.1,flowId:l,agentId:We,flowTitle:t.title,sourceTitle:(S==null?void 0:S.title)||r.source,targetTitle:(_==null?void 0:_.title)||r.target,sourceStep:S?{type:S.type,componentType:((W=S.component)==null?void 0:W.type)||"",responseName:S.responseName||((je=S.component)==null?void 0:je.responseName)||"",loopSlot:((ke=S.component)==null?void 0:ke.type)==="loop"?((Ge=S.component)==null?void 0:Ge.loopResponseName)||((ut=S.component)==null?void 0:ut.responseName)||S.responseName||"loop":"",loopCounterSlot:((yt=S.component)==null?void 0:yt.type)==="loop"?((tn=S.component)==null?void 0:tn.loopIndexResponseName)||"loopIndex":""}:void 0,targetStep:_?{type:_.type,componentType:((Un=_.component)==null?void 0:Un.type)||"",responseName:_.responseName||((Xe=_.component)==null?void 0:Xe.responseName)||""}:void 0,conditionValidationPath:r.conditionValidationPath||(vp(S)?`context.slots.${vp(S)}`:"context.slots.input"),conditionValidationType:r.conditionValidationType||"",availableSlots:Array.from(new Set(t.steps.map(wo=>vp(wo)).filter(Boolean)))});oe(ln.code||""),fe(ln.explanation||"")}catch(ln){ye(ln instanceof Error?ln.message:"Nao foi possivel gerar a condicao.")}finally{ne(!1)}},Mt=async()=>{ae&&(await navigator.clipboard.writeText(ae),M(!0),window.setTimeout(()=>M(!1),1800))},ii=()=>{!ae||!r||f(r.id,{conditionMode:"js",condition:ae,conditionValidationType:void 0})};if(r){const c=t.steps.find(Xe=>Xe.id===r.source),S=t.steps.find(Xe=>Xe.id===r.target),_=vp(c),W=r.conditionValidationPath||(_?`context.slots.${_}`:"context.slots.input"),je=Array.from(new Set([_?`context.slots.${_}`:"","context.input","context.slots.input","context.slots.userInput",...t.steps.map(Xe=>{const ln=vp(Xe);return ln?`context.slots.${ln}`:""})].filter(Boolean))),ke=fk(W),Ge=hk(r.condition||""),ut=!!(r.conditionValidationType&&ke&&Ge.length&&!Ge.includes(ke)),yt=["const value = context.slots.input;","if (!value) return false;","return String(value).trim() === 'ok';"].join(`
|
|
480
|
+
`),tn=Ik(r.condition||""),Un=(Xe,ln)=>{const wo={conditionValidationPath:Xe,conditionValidationType:ln||void 0};ln&&(wo.conditionMode="js",wo.condition=mk(Xe,ln)),f(r.id,wo)};return e.jsxs(e.Fragment,{children:[e.jsxs("aside",{className:"inspector edge-inspector",children:[e.jsxs("div",{className:"edge-summary",children:[e.jsxs("div",{className:"edge-summary-box",children:[e.jsx("span",{children:"Origem"}),e.jsx("strong",{children:(c==null?void 0:c.title)||r.source})]}),e.jsx(rh,{size:18}),e.jsxs("div",{className:"edge-summary-box",children:[e.jsx("span",{children:"Destino"}),e.jsx("strong",{children:(S==null?void 0:S.title)||r.target})]})]}),r.edgeRole==="manifest"&&e.jsx("div",{className:"filter-empty warning",children:"Ligacao de manifesto: exibida para mostrar chamada agentica entre nos, mas ignorada pelo runner como jump normal do fluxo."}),e.jsxs("label",{children:["Texto na linha",e.jsx("input",{value:r.label||"",onChange:Xe=>f(r.id,{label:Xe.target.value})})]}),e.jsxs("label",{children:["Modo da condição",e.jsxs("select",{value:r.conditionMode||"js",onChange:Xe=>f(r.id,{conditionMode:Xe.target.value}),children:[e.jsx("option",{value:"js",children:"Regra JS"}),e.jsx("option",{value:"llm",children:"Instrução LLM"})]})]}),(r.conditionMode||"js")==="js"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Validação rápida por tipo"})}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Saída/slot para validar",e.jsx("input",{list:`edge-output-paths-${r.id}`,value:W,placeholder:"context.slots.input",onChange:Xe=>Un(Xe.target.value,r.conditionValidationType||"")}),e.jsx("datalist",{id:`edge-output-paths-${r.id}`,children:je.map(Xe=>e.jsx("option",{value:Xe},Xe))})]}),e.jsxs("label",{children:["Tipo esperado",e.jsxs("select",{value:r.conditionValidationType||"",onChange:Xe=>Un(W,Xe.target.value),children:[e.jsx("option",{value:"",children:"Sem atalho"}),xk.map(Xe=>e.jsx("option",{value:Xe.value,children:Xe.label},Xe.value))]})]})]}),e.jsx("div",{className:"filter-empty",children:"Ao escolher um tipo, o Canvas monta a Condição JS abaixo automaticamente. Você ainda pode editar o JS manualmente depois."}),ut&&e.jsxs("div",{className:"filter-empty warning",children:["Atenção: a condição atual lê ",Ge.map(Xe=>`context.slots.${Xe}`).join(", "),", mas o atalho está configurado para context.slots.",ke,". Ajuste o JS ou escolha o tipo novamente para recriar a regra."]})]}),e.jsx(gf,{label:"Condição JS",language:"JavaScript",rows:8,error:tn,value:r.condition||"",placeholder:yt,onChange:Xe=>f(r.id,{condition:Xe}),onOpen:()=>q(!0)})]}),r.conditionMode==="llm"&&e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Validação por LLM"})}),e.jsxs("label",{children:["Instrução LLM",e.jsx("textarea",{rows:5,value:r.condition||"",placeholder:"Ex: siga por esta ligação se o usuário quer falar com financeiro.",onChange:Xe=>f(r.id,{condition:Xe.target.value})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Modelo",e.jsxs("select",{value:r.conditionModel||"",onChange:Xe=>f(r.id,{conditionModel:Xe.target.value}),children:[e.jsxs("option",{value:"",children:["Usar modelo do fluxo (",t.model,")"]}),Qn.map(Xe=>e.jsx("option",{value:Xe.value,children:Xe.label},Xe.value))]})]}),e.jsxs("label",{children:["Temperatura",e.jsx("input",{type:"number",min:0,max:1,step:.1,value:r.conditionTemperature??0,onChange:Xe=>f(r.id,{conditionTemperature:Number(Xe.target.value)})})]})]}),e.jsxs("label",{children:["Slot do motivo",e.jsx("input",{value:r.conditionReasonResponseName||"",placeholder:`edge_${r.id}_reason`,onChange:Xe=>f(r.id,{conditionReasonResponseName:Xe.target.value})}),e.jsx(hf,{slotName:r.conditionReasonResponseName||`edge_${r.id}_reason`,resultName:r.id})]}),e.jsx("div",{className:"filter-empty",children:"Helper: a IA retorna verdadeiro/falso para esta ligação e salva o motivo nesse slot. Use quando a regra não couber bem em JS."})]})]}),D&&e.jsx("div",{className:"modal-backdrop context-code-backdrop",onMouseDown:()=>q(!1),children:e.jsxs("div",{className:"context-code-modal",onMouseDown:Xe=>Xe.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Editor JS da ligação"}),e.jsx("span",{children:"JavaScript"})]}),e.jsxs("button",{type:"button",onClick:()=>q(!1),children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("div",{className:"context-code-modal-body with-ai",children:[e.jsx(Yx,{title:"Gerar condição JS com LLM",placeholder:"Ex: valide CPF, se for inválido retorne false; se for válido e a origem for crm, retorne true.",prompt:I,generatedCode:ae,generatedExplanation:Q,error:xe,loading:Y,copied:le,onPromptChange:F,onGenerate:()=>void Nr(),onCopy:()=>void Mt(),onApply:ii}),e.jsx(Vp,{language:"js",rows:30,fill:!0,error:tn,value:r.condition||"",placeholder:yt,onChange:Xe=>f(r.id,{condition:Xe})}),tn&&e.jsx("div",{className:"code-editor-error",children:tn})]})]})})]})}if(!n)return e.jsxs(e.Fragment,{children:[e.jsxs("aside",{className:"inspector",children:[e.jsx("div",{className:"inspector-title",children:"Config Padrão"}),e.jsxs("label",{children:["Título",e.jsx("input",{value:t.title,onChange:c=>m({title:c.target.value})})]}),e.jsxs("label",{children:["responseName",e.jsx("input",{value:t.responseName,onChange:c=>m({responseName:c.target.value})})]}),e.jsxs("label",{children:["Modelo padrão",e.jsx("select",{value:t.model,onChange:c=>m({model:c.target.value}),children:Qn.map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))})]}),e.jsxs("label",{children:["Provedor LLM",e.jsxs("select",{value:Kn,onChange:c=>{const S=c.target.value;m({llmProvider:S,model:_u(S)||t.model})},children:[e.jsx("option",{value:"openai",children:wd("openai",it)}),e.jsx("option",{value:"azure_openai",children:wd("azure_openai",it)}),e.jsx("option",{value:"gemini",children:wd("gemini",it)}),e.jsx("option",{value:"claude",children:wd("claude",it)}),e.jsx("option",{value:"grok",children:wd("grok",it)}),e.jsx("option",{value:"bedrock",children:wd("bedrock",it)})]}),ol===!1&&e.jsxs("span",{className:"field-hint provider-config-warning",children:[Ms," não está configurado em Provedores. Configure antes de executar chamadas LLM."]}),it.error&&e.jsx("span",{className:"field-hint provider-config-warning",children:"Não foi possível verificar os Provedores agora. O fluxo ainda será salvo com esta opção."})]}),e.jsxs("label",{children:["Canal",e.jsxs("select",{value:t.channel||"webWidget",onChange:c=>m({channel:c.target.value}),children:[e.jsx("option",{value:"webWidget",children:"Web widget"}),e.jsx("option",{value:"whatsapp",children:"WhatsApp"})]})]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:t.isMainFlow===!0,onChange:c=>m({isMainFlow:c.target.checked})}),"Flow principal do agente"]}),e.jsx("div",{className:"filter-empty",children:"Use o flow principal como porta de entrada do WhatsApp. Dentro dele, adicione o componente Roteador de fluxo para decidir se a conversa pula para outro flow."}),e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Agent OS"})}),e.jsxs("label",{children:[e.jsxs("span",{className:"prompt-field-label-row",children:[e.jsx("span",{children:"Agents.md"}),e.jsx(Gi,{onClick:()=>{var c,S;return Eo({fieldType:"agentsMd",targetType:"global-agent",title:"Gerar Agents.md",label:"Agent OS global",currentValue:((c=t.agentSpec)==null?void 0:c.agentsMd)||"",placeholder:"Ex: agente principal de atendimento para clínica. Deve coletar CPF e data de nascimento, consultar MCPs em ordem e nunca misturar regras técnicas na resposta ao cliente.",applyText:_=>m({agentSpec:{...t.agentSpec||{},agentsMd:_}})},(S=t.agentSpec)!=null&&S.agentsMd?"Melhore este Agents.md mantendo as responsabilidades separadas dos guardrails.":"")}})]}),e.jsx("textarea",{rows:5,value:((Fs=t.agentSpec)==null?void 0:Fs.agentsMd)||"",placeholder:`# Papel
|
|
481
|
+
Descreva objetivo, tom, limites, memoria e ferramentas permitidas.`,onChange:c=>m({agentSpec:{...t.agentSpec||{},agentsMd:c.target.value}})})]}),e.jsxs("label",{children:[e.jsxs("span",{className:"prompt-field-label-row",children:[e.jsx("span",{children:"Guardrails"}),e.jsx(Gi,{onClick:()=>{var c,S;return Eo({fieldType:"guardrails",targetType:"global-agent",title:"Gerar Guardrails",label:"Limites globais do agente",currentValue:((c=t.agentSpec)==null?void 0:c.guardrails)||"",placeholder:"Ex: não inventar dados, não expor segredos, não executar ações sensíveis sem confirmação, responder apenas com dados retornados por MCP/API.",applyText:_=>m({agentSpec:{...t.agentSpec||{},guardrails:_}})},(S=t.agentSpec)!=null&&S.guardrails?"Melhore estes guardrails sem misturar papel do agente ou fluxo de negócio.":"")}})]}),e.jsx("textarea",{rows:4,value:((sn=t.agentSpec)==null?void 0:sn.guardrails)||"",placeholder:"Nunca invente dados. Peça aprovação antes de ações sensíveis. Não exponha segredos.",onChange:c=>m({agentSpec:{...t.agentSpec||{},guardrails:c.target.value}})})]}),e.jsxs("label",{children:[e.jsxs("span",{className:"prompt-field-label-row",children:[e.jsx("span",{children:"Termos bloqueados"}),e.jsx(Gi,{onClick:()=>{var c,S;return Eo({fieldType:"blockedTerms",targetType:"global-agent",title:"Gerar termos bloqueados",label:"Tripwires globais",currentValue:(((c=t.agentSpec)==null?void 0:c.blockedTerms)||[]).join(", "),placeholder:"Ex: termos que devem bloquear exclusão destrutiva, vazamento de token, fraude, disparo em massa ou alteração sensível.",applyText:_=>m({agentSpec:{...t.agentSpec||{},blockedTerms:Qm(_)}})},(((S=t.agentSpec)==null?void 0:S.blockedTerms)||[]).length?"Melhore esta lista mantendo termos curtos separados por vírgula.":"")}})]}),e.jsx("input",{value:(((oc=t.agentSpec)==null?void 0:oc.blockedTerms)||[]).join(", "),placeholder:"excluir cliente, apagar banco, disparo em massa",onChange:c=>m({agentSpec:{...t.agentSpec||{},blockedTerms:Hx(c.target.value)}}),onBlur:c=>m({agentSpec:{...t.agentSpec||{},blockedTerms:Qm(c.target.value)}})})]}),e.jsxs("label",{children:["Skills JSON",e.jsx("textarea",{rows:3,value:JSON.stringify(((Ma=t.agentSpec)==null?void 0:Ma.skills)||[],null,2),onChange:c=>{var S;return m({agentSpec:{...t.agentSpec||{},skills:Ns(c.target.value,((S=t.agentSpec)==null?void 0:S.skills)||[])}})}})]}),e.jsxs("label",{children:["Subagents JSON",e.jsx("textarea",{rows:3,value:JSON.stringify(((ac=t.agentSpec)==null?void 0:ac.subagents)||[],null,2),onChange:c=>{var S;return m({agentSpec:{...t.agentSpec||{},subagents:Ns(c.target.value,((S=t.agentSpec)==null?void 0:S.subagents)||[])}})}})]}),e.jsxs("label",{children:["Rules JSON",e.jsx("textarea",{rows:3,value:JSON.stringify(((Ta=t.agentSpec)==null?void 0:Ta.rules)||[],null,2),onChange:c=>{var S;return m({agentSpec:{...t.agentSpec||{},rules:Ns(c.target.value,((S=t.agentSpec)==null?void 0:S.rules)||[])}})}})]})]}),e.jsxs("label",{children:["Turnos de memoria",e.jsx("input",{type:"number",min:0,value:t.turnHistoricMessages,onChange:c=>m({turnHistoricMessages:Number(c.target.value)||0})})]})]}),Ja()]});const tt=c=>h(n.id,c),Bc=c=>tt({component:c}),L=c=>{Bc({...n.component,...c})},Yn=jj((Oo=n.component)==null?void 0:Oo.mcpExternalUrl),Na=sh.find(c=>c.id===la),li=c=>{const S=sh.find(_=>_.id===c);S&&(mn([]),Ko(""),Ao(""),L({mcpExternalTransport:"streamable_http",mcpExternalUrl:S.serverUrl,mcpExternalOperation:"listTools",mcpExternalToolName:"",mcpExternalArgumentsJson:"{}",mcpExternalHeadersJson:"{}",mcpExternalAuthMode:S.authMode,mcpExternalOAuthConnectionScope:S.authMode==="oauth"?"user":"agent",mcpExternalAuthHeaderName:"Authorization",mcpExternalAuthQueryParam:"api_key",mcpExternalAuthSecret:"",mcpExternalResourceUri:"",mcpExternalPromptName:"",mcpExternalPromptArgumentsJson:"{}",mcpExternalTimeoutMs:3e4}),gr(S.id))},ci=async()=>{var c;if(!(((c=n.component)==null?void 0:c.type)!=="mcp"||!Xn||Wn)){Jo(!0),Ko(""),Ao("");try{const S=await Oe.listExternalMcpTools({agentId:We,component:{...n.component}}),_=Array.isArray(S.tools)?S.tools:[];mn(_),Ao(_.length?`${_.length} tool(s) carregada(s). Selecione uma para preencher o schema e os argumentos.`:"O servidor respondeu sem tools disponiveis.")}catch(S){mn([]),Ko(S instanceof Error?S.message:"Nao foi possivel listar as tools deste MCP.")}finally{Jo(!1)}}},Vu=c=>{const S=sa.find(je=>je.name===c);if(!S)return;const _=S.inputSchema&&typeof S.inputSchema=="object"&&!Array.isArray(S.inputSchema)?S.inputSchema:{},W=S.outputSchema&&typeof S.outputSchema=="object"&&!Array.isArray(S.outputSchema)?S.outputSchema:void 0;L({mcpExternalOperation:"callTool",mcpExternalToolName:S.name,mcpExternalArgumentsJson:Wk(_),mcpInputSchema:tv(_),...W&&Object.keys(W).length?{mcpOutputSchema:tv(W)}:{}}),Ao(`Tool ${S.name} selecionada. Ajuste os argumentos ou desmarque a LLM para enviar somente os valores configurados.`)},Ht={agentsMd:((rr=(Lr=n.component)==null?void 0:Lr.agentSpec)==null?void 0:rr.agentsMd)||"",guardrails:((Ia=(fl=n.component)==null?void 0:fl.agentSpec)==null?void 0:Ia.guardrails)||"",blockedTerms:((Ee=(Pa=n.component)==null?void 0:Pa.agentSpec)==null?void 0:Ee.blockedTerms)||[]},Cr={rules:((Dn=(ja=(It=n.component)==null?void 0:It.agentSpec)==null?void 0:ja.rules)==null?void 0:Dn.length)||0,skills:((Kt=(fn=($n=n.component)==null?void 0:$n.agentSpec)==null?void 0:fn.skills)==null?void 0:Kt.length)||0,subagents:((us=(Sn=(In=n.component)==null?void 0:In.agentSpec)==null?void 0:Sn.subagents)==null?void 0:us.length)||0,mcpServers:((gl=(ds=(Qc=n.component)==null?void 0:Qc.agentSpec)==null?void 0:ds.mcpServers)==null?void 0:gl.length)||0},ui=Object.values(Cr).some(c=>c>0),Pt=((_a=n.component)==null?void 0:_a.agentRole)||"simple",al=((xl=n.component)==null?void 0:xl.agentUseWorkspaceCatalog)!==!1,Zn=t.agentSpec||{},Wl=((rc=n.component)==null?void 0:rc.agentManifest)||{},ma={rules:((sc=Zn.rules)==null?void 0:sc.length)||0,skills:((Zo=Zn.skills)==null?void 0:Zo.length)||0,subagents:((sr=Zn.subagents)==null?void 0:sr.length)||0,mcpServers:((ps=Zn.mcpServers)==null?void 0:ps.length)||0},eo=t.steps.filter(c=>{var S;return c.id!==n.id&&c.type==="component"&&((S=c.component)==null?void 0:S.type)==="openaiGen"&&c.component.agentRole==="subagent"}).map(c=>{var S,_,W;return{id:`canvas:${c.id}`,name:c.title||"Subagent do canvas",description:c.instruction||((_=(S=c.component)==null?void 0:S.agentSpec)==null?void 0:_.agentsMd)||"Subagent especializado criado como no do canvas.",path:`canvas://${c.id}`,source:"canvas",targetStepId:c.id,load:((W=c.component)==null?void 0:W.agentExecutionMode)==="auto_tools"?"auto":"on_demand"}}),es=c=>{var S,_,W,je;return String(((S=c.component)==null?void 0:S.mcpToolDescription)||c.instruction||((_=c.component)==null?void 0:_.mcpInstruction)||((W=c.component)==null?void 0:W.mcpExternalToolName)||((je=c.component)==null?void 0:je.mcpExternalUrl)||"Ferramenta MCP criada em um fluxo.").trim()},Ca=t.steps.filter(c=>{var S;return c.id!==n.id&&c.type==="component"&&((S=c.component)==null?void 0:S.type)==="mcp"}).map(c=>{var S,_,W,je,ke;return{id:`canvas-mcp:${c.id}`,name:c.title||((S=c.component)==null?void 0:S.mcpToolName)||"MCP do canvas",description:es(c),path:`canvas://${c.id}`,source:"canvas",targetStepId:c.id,inputSchema:((_=c.component)==null?void 0:_.mcpInputSchema)||{},outputSchema:((W=c.component)==null?void 0:W.mcpOutputSchema)||{},sideEffect:((je=c.component)==null?void 0:je.mcpMode)==="api"||((ke=c.component)==null?void 0:ke.mcpMode)==="external"?"external_action":"read",load:"on_demand"}}),to=s.filter(c=>String(c._id||"")!==String(l||"")).flatMap(c=>{var _;return(Array.isArray((_=c.config)==null?void 0:_.steps)?c.config.steps:[]).filter(W=>{var je;return W.type==="component"&&((je=W.component)==null?void 0:je.type)==="mcp"}).map(W=>{var je,ke,Ge,ut,yt,tn;return{id:`flow-mcp:${c._id}:${W.id}`,name:`${c.name||((je=c.config)==null?void 0:je.title)||"Fluxo"} / ${W.title||((ke=W.component)==null?void 0:ke.mcpToolName)||"MCP"}`,description:es(W),path:`flow://${c._id}#${W.id}`,source:"flow",targetFlowId:c._id,targetStepId:W.id,targetAgentId:c.agentId||"",inputSchema:((Ge=W.component)==null?void 0:Ge.mcpInputSchema)||{},outputSchema:((ut=W.component)==null?void 0:ut.mcpOutputSchema)||{},sideEffect:((yt=W.component)==null?void 0:yt.mcpMode)==="api"||((tn=W.component)==null?void 0:tn.mcpMode)==="external"?"external_action":"read",load:"on_demand"}})}),Xa=c=>{L({agentSpec:{...Ht,...c}})},rl=c=>{var S,_;L({agentRole:c,agentUseWorkspaceCatalog:!0,agentSpec:{...Ht},agentExecutionMode:c==="orchestrator"||c==="subagent"?((S=n.component)==null?void 0:S.agentExecutionMode)==="hybrid"?"hybrid":"auto_tools":((_=n.component)==null?void 0:_.agentExecutionMode)||"flow"})},On=c=>Array.isArray(Wl[c])?Wl[c]||[]:[],Sr=mf.some(c=>On(c.key).length>0),ts=((vo=n.component)==null?void 0:vo.agentExecutionMode)||(Pt==="orchestrator"||Pt==="subagent"?"auto_tools":"flow"),ha=((Mi=n.component)==null?void 0:Mi.type)==="openaiGen"&&(Pt==="orchestrator"||Pt==="subagent")&&ts!=="flow",no=new Set(mf.flatMap(c=>On(c.key)).map(c=>String(c.targetStepId||c.stepId||c.nodeId||"").trim()).filter(Boolean)),oo=new Set([...eo.map(c=>String(c.targetStepId||"").trim()).filter(Boolean),...Ca.map(c=>String(c.targetStepId||"").trim()).filter(Boolean)]),Ya=Sr?no:oo,Sa=new Set(t.steps.filter(c=>{var S;return c.type==="component"&&((S=c.component)==null?void 0:S.type)==="mcp"}).map(c=>c.id)),ns=new Map(t.steps.map(c=>[c.id,c.title||c.id])),Za=ha?t.edges.filter(c=>c.source===n.id&&Ya.has(c.target)):[],Gl=ha?t.edges.filter(c=>Ya.has(c.source)&&Sa.has(c.target)):[],Rn=Array.from(new Map([...Za,...Gl].map(c=>[c.id,c])).values()),di=Rn.slice(0,5).map(c=>`${ns.get(c.source)||c.source} -> ${ns.get(c.target)||c.target}`).join(", "),ao=(c,S,_,W)=>{const je=Ap(S,`${c}-${_+1}`);return{id:je,name:Bx(S,je),description:Vx(S),path:String(S.path||"").trim(),source:S.source==="canvas"||S.source==="flow"?S.source:"workspace",targetStepId:String(S.targetStepId||"").trim()||void 0,targetFlowId:String(S.targetFlowId||S.flowId||"").trim()||void 0,targetAgentId:String(S.targetAgentId||S.agentId||"").trim()||void 0,inputSchema:S.inputSchema&&typeof S.inputSchema=="object"&&!Array.isArray(S.inputSchema)?S.inputSchema:void 0,outputSchema:S.outputSchema&&typeof S.outputSchema=="object"&&!Array.isArray(S.outputSchema)?S.outputSchema:void 0,sideEffect:String(S.sideEffect||"").trim()||void 0,requiresApproval:S.requiresApproval===!0?!0:void 0,maxRetries:Number.isFinite(Number(S.maxRetries))?Number(S.maxRetries):void 0,load:$x(S.load||S.loadMode,W)}},ka=(c,S)=>{var _;L({agentUseWorkspaceCatalog:!0,agentManifest:{...((_=n.component)==null?void 0:_.agentManifest)||{},[c]:S}})},Vc=(c,S,_)=>{const W=Ap(S,`${c}-${_+1}`);return On(c).find(je=>je.id===W)},Vd=(c,S,_,W)=>{const je=Ap(S,`${c}-${_+1}`),ke=On(c);if(ke.some(Ge=>Ge.id===je)){ka(c,ke.filter(Ge=>Ge.id!==je));return}ka(c,[...ke,ao(c,S,_,W)])},kr=(c,S,_)=>{ka(c,On(c).map(W=>W.id===S?{...W,load:_}:W))},Uu=()=>{const c=mf.reduce((S,_)=>{const W=Array.isArray(Zn[_.key])?Zn[_.key]||[]:[];return S[_.key]=W.map((je,ke)=>ao(_.key,je,ke,_.fallbackLoad)),S},{});c.subagents=[...c.subagents||[],...eo.map((S,_)=>{var W;return ao("subagents",S,_+(((W=c.subagents)==null?void 0:W.length)||0),"auto")})],c.mcpServers=[...c.mcpServers||[],...Ca.map((S,_)=>{var W;return ao("mcpServers",S,_+(((W=c.mcpServers)==null?void 0:W.length)||0),"on_demand")}),...to.map((S,_)=>{var W;return ao("mcpServers",S,_+(((W=c.mcpServers)==null?void 0:W.length)||0),"on_demand")})],L({agentUseWorkspaceCatalog:!0,agentManifest:c})},os=()=>L({agentManifest:{}}),pi=[{id:"skills",label:"Skills",selected:On("skills").length,total:ma.skills},{id:"subagents",label:"Subagents",selected:On("subagents").length,total:ma.subagents+eo.length},{id:"rules",label:"Rules",selected:On("rules").length,total:ma.rules},{id:"mcp",label:"MCP",selected:On("mcpServers").length,total:ma.mcpServers+Ca.length+to.length}],Uc=()=>{if(Gn==="skills"){ka("skills",(Zn.skills||[]).map((W,je)=>ao("skills",W,je,"auto")));return}if(Gn==="subagents"){const W=(Zn.subagents||[]).map((ke,Ge)=>ao("subagents",ke,Ge,"auto")),je=eo.map((ke,Ge)=>ao("subagents",ke,Ge+W.length,"auto"));ka("subagents",[...W,...je]);return}if(Gn==="rules"){ka("rules",(Zn.rules||[]).map((W,je)=>ao("rules",W,je,"always")));return}const c=(Zn.mcpServers||[]).map((W,je)=>ao("mcpServers",W,je,"on_demand")),S=Ca.map((W,je)=>ao("mcpServers",W,je+c.length,"on_demand")),_=to.map((W,je)=>ao("mcpServers",W,je+c.length+S.length,"on_demand"));ka("mcpServers",[...c,...S,..._])},Ud=()=>{if(Gn==="mcp"){ka("mcpServers",[]);return}ka(Gn,[])},sl=(c,S,_=t.steps)=>_.map(W=>{if(W.id!==n.id||W.type!=="component"||!W.component)return W;const je=W.component.agentManifest||{},ke=Array.isArray(je[c])?je[c]||[]:[],Ge=ke.some(ut=>ut.id===S.id);return{...W,component:{...W.component,agentUseWorkspaceCatalog:!0,agentManifest:{...je,[c]:Ge?ke:[...ke,S]}}}}),qd=()=>{var Ge;const c=Va.trim()||`Rule ${ma.rules+1}`,S=ks.trim()||"Descreva a regra, quando ela deve ser aplicada e como ela redireciona o agente.",_=ek(c,`rule-${Date.now().toString(36)}`),W={id:`rule_${_}`,name:c,description:((Ge=S.split(`
|
|
482
|
+
`).find(Boolean))==null?void 0:Ge.slice(0,180))||c,instructions:S,load:"always",path:`.canvas-flow/rules/${_}.md`,enabled:!0},je=[...Zn.rules||[],W],ke=ao("rules",W,je.length-1,"always");m({agentSpec:{...t.agentSpec||{},rules:je},steps:sl("rules",ke)}),qa("rules"),Ua(""),Qo("")},Mo=((zs=n.component)==null?void 0:zs.type)==="files"?n.component.filesUploaded||[]:[],Ts=((Ro=n.component)==null?void 0:Ro.type)==="files"&&((n.component.filesResultMode||"context")==="llm"||(n.component.filesOperation||"read")!=="read"&&!String(n.component.filesContentTemplate||"").trim()),Ar=((Lt=n.component)==null?void 0:Lt.type)==="files"?Array.from(new Set(((_t=n.component.filesTemplateDocumentIds)!=null&&_t.length?n.component.filesTemplateDocumentIds:n.component.filesTemplateDocumentId?[n.component.filesTemplateDocumentId]:[]).map(c=>String(c||"").trim()).filter(Boolean))):[],Jl=Ar.length?Mo.filter(c=>Ar.includes(String(c.documentId||c.id||""))):Mo.length===1?Mo:[],qc=Array.from(new Set(Jl.map(c=>{const S=String(c.filename||c.title||"").toLowerCase(),_=String(c.mimeType||"").toLowerCase();return S.endsWith(".docx")||_.includes("wordprocessingml")?"docx":S.endsWith(".xlsx")||_.includes("spreadsheetml")?"xlsx":""}).filter(Boolean))),Wt=((ea=n.component)==null?void 0:ea.type)==="files"&&(n.component.filesOperation||"read")==="edit"&&qc.length===1?qc[0]:"",qu=Wt||((ir=n.component)==null?void 0:ir.filesOutputFormat)||"docx",fo=(c,S)=>{const _=String(c||"").trim()||`artefato.${S}`;return/\.[^./\\]+$/.test(_)?_.replace(/\.[^./\\]+$/,`.${S}`):`${_}.${S}`},mi=Wt?fo(((Ot=n.component)==null?void 0:Ot.filesOutputFilenameTemplate)||"",Wt):((Qt=n.component)==null?void 0:Qt.filesOutputFilenameTemplate)||`artefato.${qu}`,as=((Ls=n.component)==null?void 0:Ls.type)==="files"&&(n.component.filesOperation||"read")==="edit"&&Mo.length>1&&Ar.length===0,Kl=c=>{if(!c)return;const S=Ar.includes(c)?Ar.filter(_=>_!==c):[...Ar,c];L({filesTemplateDocumentIds:S,filesTemplateDocumentId:S[0]||""})},hi=async c=>{var _;const S=Array.from(c.target.files||[]);if(c.target.value="",!(!S.length||((_=n.component)==null?void 0:_.type)!=="files")){vr(!0),yr("");try{const W=new FormData;S.forEach(ut=>W.append("arquivos",ut)),W.append("ocr",n.component.filesPreferOcr?"true":"false"),W.append("maxTextChars",String(n.component.filesMaxTextChars??6e4)),p&&W.append("agentId",p),l&&W.append("flowId",l);const je=await Oe.extractFiles(W),Ge=(Array.isArray(je.files)?je.files:[]).filter(ut=>ut.documentId||ut.text);if(!Ge.length)throw new Error("Nao foi possivel armazenar os arquivos selecionados.");L({filesUploaded:[...Mo,...Ge],filesSourceMode:"upload"})}catch(W){yr(W instanceof Error?W.message:"Nao foi possivel enviar os arquivos.")}finally{vr(!1)}}},Ql=async c=>{const S=c.documentId||c.id;if(S)try{const{blob:_,filename:W}=await Oe.downloadDocument(S),je=document.createElement("a");je.href=URL.createObjectURL(_),je.download=W||c.filename||"arquivo",je.click(),URL.revokeObjectURL(je.href)}catch(_){yr(_ instanceof Error?_.message:"Nao foi possivel baixar o arquivo.")}},Hu=(c,S)=>{var ke;if(((ke=n.component)==null?void 0:ke.type)!=="files")return;const _=Mo.find((Ge,ut)=>c?Ge.id===c:ut===S),W=String((_==null?void 0:_.documentId)||(_==null?void 0:_.id)||""),je=Ar.filter(Ge=>Ge!==W);L({filesUploaded:Mo.filter((Ge,ut)=>c?Ge.id!==c:ut!==S),filesTemplateDocumentIds:je,filesTemplateDocumentId:je[0]||""})},er=(c,S,_,W)=>{const je=Array.isArray(_)?_:[];return e.jsxs("div",{className:"agent-manifest-picker",children:[e.jsxs("div",{className:"agent-manifest-picker-title",children:[e.jsx("strong",{children:S}),e.jsxs("span",{children:[On(c).length,"/",je.length]})]}),!je.length&&e.jsx("div",{className:"filter-empty",children:"Nenhum item disponivel para esta origem."}),e.jsx("div",{className:"agent-manifest-bubbles",children:je.map((ke,Ge)=>{const ut=Ap(ke,`${c}-${Ge+1}`),yt=Bx(ke,ut),tn=Vx(ke),Un=Vc(c,ke,Ge),Xe=!!Un,ln=$x((Un==null?void 0:Un.load)||ke.load||ke.loadMode,W);return e.jsxs("div",{className:`agent-manifest-bubble ${Xe?"selected":""}`,children:[e.jsxs("button",{type:"button",onClick:()=>Vd(c,ke,Ge,W),children:[e.jsx("span",{children:yt}),tn&&e.jsx("small",{children:tn})]}),Xe&&e.jsxs("select",{value:ln,onChange:wo=>kr(c,ut,wo.target.value),children:[e.jsx("option",{value:"always",children:"always"}),e.jsx("option",{value:"auto",children:"auto"}),e.jsx("option",{value:"on_demand",children:"on_demand"}),e.jsx("option",{value:"manual",children:"manual"})]})]},ut)})})]})},rs=()=>e.jsxs("div",{className:"agent-inline-create-card",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:"Nova rule para este agente"}),e.jsxs("button",{type:"button",onClick:qd,children:[e.jsx(un,{size:14})," Adicionar rule"]})]}),e.jsxs("label",{children:["Nome",e.jsx("input",{value:Va,placeholder:"Seguranca de escrita",onChange:c=>Ua(c.target.value)})]}),e.jsxs("label",{children:["Instrucao",e.jsx("textarea",{rows:4,value:ks,placeholder:"Sempre pedir aprovacao antes de criar, alterar ou excluir dados em sistemas externos.",onChange:c=>Qo(c.target.value)})]}),e.jsx("span",{className:"field-hint",children:"A rule criada entra no Agent Workspace e fica selecionada no manifesto deste orquestrador."})]}),il=()=>Gn==="skills"?er("skills","Skills do Agent Workspace",Zn.skills,"auto"):Gn==="subagents"?e.jsxs(e.Fragment,{children:[er("subagents","Subagents do Agent Workspace",Zn.subagents,"auto"),er("subagents","Subagents do canvas",eo,"auto")]}):Gn==="rules"?e.jsxs(e.Fragment,{children:[rs(),er("rules","Rules",Zn.rules,"always")]}):e.jsxs(e.Fragment,{children:[er("mcpServers","MCP do Agent Workspace",Zn.mcpServers,"on_demand"),er("mcpServers","MCP do canvas atual",Ca,"on_demand"),er("mcpServers","MCP de fluxos salvos",to,"on_demand")]}),Wu=()=>{if(!n.component)return null;const c=n.component.ragUseAgentFilter!==!1;return e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Escopo dos vetores"})}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:c,onChange:S=>L({ragUseAgentFilter:S.target.checked})}),e.jsx("span",{children:"Filtrar vetores/documentos por agente"})]}),c&&e.jsxs("label",{children:["AgentId dos vetores/documentos",e.jsx("input",{value:n.component.ragAgentIdTemplate||"",placeholder:"{{context.agentId}} ou agent_id_manual",onChange:S=>L({ragAgentIdTemplate:S.target.value})})]}),e.jsx("div",{className:"filter-empty",children:"Vazio usa o agente atual. Informe outro agentId para buscar ou vetorizar documentos naquele agente. Desmarque para buscar sem filtro de agente."})]})},ll=c=>{var W;if(((W=n.component)==null?void 0:W.type)!=="mcp")return;const S=Bk(c),_=String(S.responseName||n.component.responseName||n.responseName||"mcp");tt({responseName:_,component:{...n.component,...S,responseName:_}})},ss=((vl=n.component)==null?void 0:vl.flowRouterRules)||[],cl=c=>L({flowRouterRules:c}),Er=(c,S)=>{cl(ss.map(_=>_.id===c?{..._,...S}:_))},Hc=()=>{cl([...ss,{id:dk(),label:`Regra ${ss.length+1}`,targetAgentId:We,targetFlowId:"",conditionMode:"llm",condition:"Roteie para este fluxo se a intenção do usuário combina com o tema.",conditionModel:"",conditionTemperature:0}])},dt=c=>{cl(ss.filter(S=>S.id!==c))},fi=((bn=n.component)==null?void 0:bn.contextMode)||"json",Aa=((so=n.component)==null?void 0:so.contextJson)||"{}",Mr=((Rt=n.component)==null?void 0:Rt.contextScript)||"",Gu=fi==="json"?Gr(Aa):"",Xl=fi==="js"?Ux(Mr):"",tr=T==="json"?Aa:Mr,is=T==="json"?Gr(tr):T==="js"?Ux(tr):"",Ju=T==="json"?"Editor JSON do Contexto":"Editor JS do Contexto",Fn=T==="json"?"JSON":"JavaScript",go=T==="json"?`{
|
|
483
|
+
"cliente": "{{context.slots.input}}",
|
|
484
|
+
"payload": {"origem": "web"}
|
|
485
|
+
}`:`const itens = context.slots.itens || [];
|
|
486
|
+
return {
|
|
487
|
+
total: itens.length,
|
|
488
|
+
nomes: itens.map((item) => item.nome)
|
|
489
|
+
};`,ro=c=>{if(T==="json"){L({contextJson:c});return}T==="js"&&L({contextScript:c})},Wc=async()=>{var S,_;const c=ee.trim();if(!(!c||se)){G(!0),ge(""),Ce(!1);try{const W=await Oe.generateContextScript({instruction:c,currentCode:Mr,model:((S=n.component)==null?void 0:S.contextLlmModel)||t.model,llmProvider:t.llmProvider||"openai",temperature:((_=n.component)==null?void 0:_.contextLlmTemperature)??.2,flowId:l,agentId:We,flowTitle:t.title,stepTitle:n.title});K(W.code||""),O(W.explanation||"")}catch(W){ge(W instanceof Error?W.message:"Nao foi possivel gerar o codigo.")}finally{G(!1)}}},Is=async()=>{V&&(await navigator.clipboard.writeText(V),Ce(!0),window.setTimeout(()=>Ce(!1),1800))},Yl=()=>{V&&L({contextScript:V})},st=n.richMessage||{type:"buttons",text:n.instruction||"Escolha uma opcao:",footer:"",media:{url:"",fileName:"",mimeType:""},buttons:[],quickReplies:[],list:{buttonText:"Ver opções",sections:[]},carousel:{cards:[]},appointmentFlow:bh,generation:{enabled:!1,prompt:"Gere opções objetivas em pt-BR com base no contexto da conversa e no texto principal.",model:"",maxItems:3}},Tn=c=>{tt({richMessage:{...st,...c}})},ls=st.type==="image"||st.type==="document",ul=st.type!=="appointmentFlow"&&!ls,gi=ls?"Legenda":"Texto principal",Tr=ls?"Texto opcional enviado como legenda da mídia":"Texto enviado antes dos elementos interativos",Ps=c=>{Tn({generation:{enabled:!1,prompt:"Gere opções objetivas em pt-BR com base no contexto da conversa e no texto principal.",maxItems:3,...st.generation||{},...c}})},hn=ul&&((yo=st.generation)==null?void 0:yo.enabled)===!0,To=Qx(st.type),fa=((ta=n.component)==null?void 0:ta.extraFieldsFilterPerRound)||[],nr=((ic=n.component)==null?void 0:ic.extraFieldsFilterPerRoundLimits)||[],xi=Array.isArray((yl=n.component)==null?void 0:yl.ragConditionalRules)?n.component.ragConditionalRules:[],dl=Pk(((Dr=n.component)==null?void 0:Dr.extraFieldsFilter)||{},(jo=n.component)==null?void 0:jo.extraFieldsFilterRules),Ir=c=>{L({extraFieldsFilterRules:c,extraFieldsFilter:_k(c)})},vi=((Ti=n.component)==null?void 0:Ti.cronExecutionLog)||[],yi=((lc=n.component)==null?void 0:lc.cronTimezone)||"America/Sao_Paulo",Yo=((ms=n.component)==null?void 0:ms.webhookMode)||"inbound",_s=((jl=n.component)==null?void 0:jl.webhookId)||n.id,ga=`${zc}/api/canvas-flow/webhook/custom/${l||"<FLOW_ID_SALVO>"}/${_s||"<WEBHOOK_ID>"}`,Io=((cc=n.component)==null?void 0:cc.webhookAuthMode)||"none",ji=((hs=n.component)==null?void 0:hs.webhookHeaderName)||"x-canvas-flow-webhook-secret",bi=(($r=n.component)==null?void 0:$r.webhookQueryParam)||"secret",zn=((Xc=n.component)==null?void 0:Xc.webhookResponseMode)||"sync",wi=((uc=n.component)==null?void 0:uc.webhookCallbackAuthMode)||"none",Zl=((fs=n.component)==null?void 0:fs.webhookCallbackHeaderName)||"x-canvas-flow-callback-secret",Ni=((Yc=n.component)==null?void 0:Yc.webhookListenerFireAndForget)!==!1,ec=rk({flowId:l,flowName:t.title,agentId:We,channel:t.channel||"webWidget",currentStepId:n.id,startMode:((Oa=n.component)==null?void 0:Oa.webhookStartMode)||"node"}),tc=sk(ga,Io,ji,bi,ec),Gc=ik(l,_s),nc=lk(l,_s),St=en,Xt=((Ds=n.component)==null?void 0:Ds.type)==="mcp"?Gr(n.component.mcpInputSchema||"{}"):"",Gt=(($s=n.component)==null?void 0:$s.type)==="mcp"?Gr(n.component.mcpOutputSchema||"{}"):"",Ci=((Ii=n.component)==null?void 0:Ii.type)==="mcp"?Gr(n.component.mcpApiHeadersJson||"{}"):"",pl=((dc=n.component)==null?void 0:dc.type)==="mcp"?Gr(n.component.mcpApiQueryJson||"{}"):"",Pr=((bl=n.component)==null?void 0:bl.type)==="mcp"?Gr(n.component.mcpApiBodyJson||"{}"):"",_r=((pc=n.component)==null?void 0:pc.type)==="mcp"?Gr(n.component.mcpApiRequestsJson||"[]"):"",Ea=((Bs=n.component)==null?void 0:Bs.type)==="mcp"?Gr(n.component.mcpExternalHeadersJson||"{}"):"",ml=((Fo=n.component)==null?void 0:Fo.type)==="mcp"?Gr(n.component.mcpExternalArgumentsJson||"{}"):"",Ku=((Br=n.component)==null?void 0:Br.type)==="mcp"?Gr(n.component.mcpExternalPromptArgumentsJson||"{}"):"",Si=((gs=n.component)==null?void 0:gs.type)==="agentPlan"?Gr(n.component.agentPlanJson||'{"plan": []}'):"",Tt=((wl=n.component)==null?void 0:wl.type)==="mcp"?xf(n.component.mcpInputSchema):[],ki=((zo=n.component)==null?void 0:zo.type)==="mcp"?xf(n.component.mcpOutputSchema):[],or=((Ra=n.component)==null?void 0:Ra.type)==="mcp"?Ns(n.component.mcpInputSchema||"{}",{}):{},Os=St==="external"&&or&&typeof or=="object"&&!Array.isArray(or)?Aj(or):[],Jc=((Nl=n.component)==null?void 0:Nl.type)==="mcp"?n.component.mcpApiAllowLlmRequest!==!1:!0,jn=((Cl=n.component)==null?void 0:Cl.type)==="mcp"?(n.component.mcpApiCallMode||"single")!=="multi"&&Jc:!0,vt=((lr=n.component)==null?void 0:lr.type)==="mcp"?n.component.mcpApiMapResultWithLlm!==!1:!0,Po=((Vr=n.component)==null?void 0:Vr.type)==="mcp"?n.component.mcpExternalUseLlmArguments!==!1:!0,xa=((Sl=n.component)==null?void 0:Sl.type)==="mcp"?n.component.mcpExternalMapResultWithLlm!==!1:!0,va=((Zc=n.component)==null?void 0:Zc.type)==="mcp"&&(St==="fields"||St==="api"&&(jn||vt)||St==="external"&&(Po||xa)),Or=(c,S)=>{var je,ke;const _=c==="mcpInputSchema"?(je=n.component)==null?void 0:je.mcpInputSchema:(ke=n.component)==null?void 0:ke.mcpOutputSchema,W=S(xf(_));L({[c]:Hk(W)})},_o=c=>{Or(c,S=>[...S,Uk(S,c==="mcpInputSchema"?"entrada":"campo")])},Kc=(c,S,_)=>{Or(c,W=>W.map((je,ke)=>ke===S?{...je,..._}:je))},Rs=(c,S)=>{Or(c,_=>_.filter((W,je)=>je!==S))},Jt=((Bn=n.component)==null?void 0:Bn.mongoOperation)||"insertOne",Rr=yk.has(Jt),hl=jk.has(Jt),Ln=bk.has(Jt),Fr=wk.has(Jt),cs=Nk.has(Jt),xo=Ck.has(Jt),Ai=Sk.has(Jt),Qu=kk.has(Jt),ya=Wx.has(Jt),zr=hl?"Ex: gere o documento de evento com intent, texto do usuário e dados do contexto.":Ln?"Ex: encontre o lead pelo email em context.slots.email e atualize o status para convertido.":"Ex: busque entradas do funil de ontem com intent PEDIR_PIZZA e ordene pelas mais recentes.",ar=async()=>{var S,_,W,je,ke,Ge,ut,yt,tn,Un,Xe,ln,wo,uu,du,Xu,ba,bc;const c=$.trim();if(!(!c||Z)){he(!0),ht(""),Et(!1);try{const ys=await Oe.generateMongoConfig({instruction:c,operation:Jt,collectionName:((S=n.component)==null?void 0:S.mongoCollectionName)||((_=n.component)==null?void 0:_.collectionName)||"flow_events",model:((W=n.component)==null?void 0:W.mongoLlmModel)||t.model,llmProvider:t.llmProvider||"openai",flowId:l,agentId:We,flowTitle:t.title,stepTitle:n.title,currentConfig:{filter:(je=n.component)==null?void 0:je.mongoFilter,sort:(ke=n.component)==null?void 0:ke.mongoSort,projection:(Ge=n.component)==null?void 0:Ge.mongoProjection,pipeline:(ut=n.component)==null?void 0:ut.mongoPipeline,document:(yt=n.component)==null?void 0:yt.mongoDocument,update:(tn=n.component)==null?void 0:tn.mongoUpdate,dateRange:{field:(Un=n.component)==null?void 0:Un.mongoDateField,start:(Xe=n.component)==null?void 0:Xe.mongoDateStart,end:(ln=n.component)==null?void 0:ln.mongoDateEnd,timezone:(wo=n.component)==null?void 0:wo.mongoDateTimezone},pagination:{mode:(uu=n.component)==null?void 0:uu.mongoPaginationMode,page:(du=n.component)==null?void 0:du.mongoPage,limit:(Xu=n.component)==null?void 0:Xu.mongoLimit,skip:(ba=n.component)==null?void 0:ba.mongoSkip,maxPages:(bc=n.component)==null?void 0:bc.mongoMaxPages}}});at(ys)}catch(ys){ht(ys instanceof Error?ys.message:"Nao foi possivel gerar o MongoDB.")}finally{he(!1)}}},Ei=async()=>{const c=Wf(Be);c&&(await navigator.clipboard.writeText(JSON.stringify(c,null,2)),Et(!0),window.setTimeout(()=>Et(!1),1800))},rn=()=>{const c=Wf(Be);if(!c)return;const S={};if(Rr&&c.filter!==void 0&&(S.mongoFilter=bd(c.filter)),cs&&c.sort!==void 0&&(S.mongoSort=bd(c.sort)),Fr&&c.projection!==void 0&&(S.mongoProjection=bd(c.projection)),Jt==="aggregate"&&c.pipeline!==void 0&&(S.mongoPipeline=bd(c.pipeline,"[]")),hl){const je=Jt==="insertMany"&&c.documents!==void 0?c.documents:c.document??c.documents;je!==void 0&&(S.mongoDocument=bd(je,Jt==="insertMany"?"[]":"{}"))}Ln&&c.update!==void 0&&(S.mongoUpdate=bd(c.update));const _=c.dateRange&&typeof c.dateRange=="object"&&!Array.isArray(c.dateRange)?c.dateRange:null;_&&(_.field!==void 0&&(S.mongoDateField=String(_.field||"")),_.start!==void 0&&(S.mongoDateStart=String(_.start||"")),_.end!==void 0&&(S.mongoDateEnd=String(_.end||"")),_.timezone!==void 0&&(S.mongoDateTimezone=String(_.timezone||"America/Sao_Paulo")));const W=c.pagination&&typeof c.pagination=="object"&&!Array.isArray(c.pagination)?c.pagination:null;W&&((W.mode==="single"||W.mode==="all")&&(S.mongoPaginationMode=W.mode),W.page!==void 0&&(S.mongoPage=Math.max(1,Number(W.page)||1)),W.limit!==void 0&&(S.mongoLimit=Math.max(1,Math.min(1e3,Number(W.limit)||50))),W.skip!==void 0&&(S.mongoSkip=Math.max(0,Number(W.skip)||0)),W.maxPages!==void 0&&(S.mongoMaxPages=Math.max(1,Math.min(50,Number(W.maxPages)||1)))),L(S)};return e.jsxs(e.Fragment,{children:[e.jsxs("aside",{className:"inspector",children:[e.jsx("div",{className:"inspector-title",children:n.title||n.type}),e.jsxs("div",{className:`start-step-panel ${t.startStepId===n.id?"active":""}`,children:[e.jsxs("div",{children:[e.jsx("strong",{children:t.startStepId===n.id?"Nó inicial":"Este nó não é o início"}),e.jsx("span",{children:t.startStepId===n.id?"O teste do fluxo começa por aqui.":"Use isto quando quiser testar este trecho ou um ciclo isolado."})]}),t.startStepId!==n.id&&e.jsx("button",{type:"button",onClick:()=>m({startStepId:n.id}),children:"Definir como início"})]}),e.jsxs("label",{children:["Título",e.jsx("input",{value:n.title,onChange:c=>tt({title:c.target.value})})]}),e.jsx(Rk,{tags:n.tags||[],onChange:c=>tt({tags:c})}),n.type!=="richMessage"&&n.type!=="condition"&&e.jsxs("label",{children:[e.jsxs("span",{className:"prompt-field-label-row",children:[e.jsx("span",{children:"Instrucao"}),e.jsx(Gi,{onClick:()=>{var c,S,_,W,je,ke,Ge,ut,yt;return Eo({fieldType:"instruction",targetType:((c=n.component)==null?void 0:c.type)==="openaiGen"||((S=n.component)==null?void 0:S.type)==="azureOpenAI"?"agent-node":((_=n.component)==null?void 0:_.type)==="mcp"?"mcp-node":"flow-node",title:"Gerar instrucao",label:n.title||n.type,currentValue:n.instruction||"",placeholder:((W=n.component)==null?void 0:W.type)==="mcp"?"Ex: descreva como este MCP deve usar CPF e data de nascimento do contexto, chamar a API e salvar apenas campos reais no output.":((je=n.component)==null?void 0:je.type)==="openaiGen"?"Ex: este agente deve perguntar um dado por vez, chamar MCPs apenas quando tiver campos obrigatorios e responder sem termos tecnicos.":"Ex: descreva o que este no deve fazer no fluxo, com entrada, saida esperada e limites.",applyText:tn=>tt({instruction:tn}),stepContext:{id:n.id,title:n.title,type:n.type,componentType:((ke=n.component)==null?void 0:ke.type)||"",responseName:n.responseName||((Ge=n.component)==null?void 0:Ge.responseName)||""}},n.instruction?"Melhore esta instrucao mantendo-a separada de Agents.md, guardrails e termos bloqueados.":"",((ut=n.component)==null?void 0:ut.ragLlmModel)||((yt=n.component)==null?void 0:yt.mcpModel)||t.model)}})]}),e.jsx("textarea",{rows:4,value:n.instruction,onChange:c=>tt({instruction:c.target.value})})]}),n.type!=="message"&&n.type!=="richMessage"&&n.type!=="end"&&n.type!=="group"&&e.jsxs("label",{children:["responseName",e.jsx("input",{value:n.responseName||"",onChange:c=>tt({responseName:c.target.value})})]}),n.type==="input"&&e.jsxs("div",{className:"rich-message-editor",children:[e.jsxs("label",{children:["Validação do input",e.jsxs("select",{value:n.inputValidationMode||"none",onChange:c=>tt({inputValidationMode:c.target.value}),children:[e.jsx("option",{value:"none",children:"Sem validação"}),e.jsx("option",{value:"type",children:"Tipo do dado"}),e.jsx("option",{value:"regex",children:"Regex"}),e.jsx("option",{value:"llm",children:"Instrução LLM"})]})]}),n.inputValidationMode==="type"&&e.jsxs("label",{children:["Tipo esperado",e.jsx("select",{value:n.inputValidationType||"text",onChange:c=>tt({inputValidationType:c.target.value}),children:gk.map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))})]}),n.inputValidationMode==="regex"&&e.jsxs("label",{children:["Regex de validação",e.jsx("input",{value:n.inputValidationRegex||"",placeholder:"^[A-Z]{3}-\\\\d{4}$",onChange:c=>tt({inputValidationRegex:c.target.value})})]}),n.inputValidationMode==="llm"&&e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Validação por IA"})}),e.jsxs("label",{children:["Instrução LLM",e.jsx("textarea",{rows:5,value:n.inputValidationLlmInstruction||"",placeholder:"Ex: valide se o usuário informou uma data de nascimento real no formato brasileiro.",onChange:c=>tt({inputValidationLlmInstruction:c.target.value})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Modelo",e.jsxs("select",{value:n.inputValidationLlmModel||"",onChange:c=>tt({inputValidationLlmModel:c.target.value}),children:[e.jsxs("option",{value:"",children:["Usar modelo do fluxo (",t.model,")"]}),Qn.map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))]})]}),e.jsxs("label",{children:["Temperatura",e.jsx("input",{type:"number",min:0,max:1,step:.1,value:n.inputValidationLlmTemperature??0,onChange:c=>tt({inputValidationLlmTemperature:Number(c.target.value)})})]})]}),e.jsx("div",{className:"filter-empty",children:"A IA pode devolver um valor normalizado e slots extras. Se retornar inválido, o fluxo pergunta novamente."})]}),(n.inputValidationMode||"none")!=="none"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Mensagem quando inválido",e.jsx("input",{value:n.inputValidationErrorMessage||"",placeholder:"Valor inválido. Informe novamente.",onChange:c=>tt({inputValidationErrorMessage:c.target.value})})]}),e.jsxs("label",{children:["Slot do motivo",e.jsx("input",{value:n.inputValidationReasonResponseName||"",placeholder:`${n.responseName||"input"}_validation_reason`,onChange:c=>tt({inputValidationReasonResponseName:c.target.value})}),e.jsx(hf,{slotName:n.inputValidationReasonResponseName||`${n.responseName||"input"}_validation_reason`,resultName:n.responseName||"input"})]})]})]}),n.type==="message"&&e.jsxs("div",{className:"rich-message-editor",children:[e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.messageUseLlm===!0,onChange:c=>tt({messageUseLlm:c.target.checked})}),"Formatar resposta com LLM"]}),n.messageUseLlm===!0&&e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Formatacao por IA"})}),e.jsxs("div",{className:"filter-empty",children:["A instrução acima vira o prompt do modelo. Use variáveis como ","{{context.slots.item}}"," e a IA retorna somente a mensagem final para o usuário."]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Modelo",e.jsxs("select",{value:n.messageLlmModel||"",onChange:c=>tt({messageLlmModel:c.target.value}),children:[e.jsxs("option",{value:"",children:["Usar modelo do fluxo (",t.model,")"]}),Qn.map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))]})]}),e.jsxs("label",{children:["Temperatura",e.jsx("input",{type:"number",min:0,max:1,step:.1,value:n.messageLlmTemperature??.4,onChange:c=>tt({messageLlmTemperature:Number(c.target.value)})})]})]}),e.jsxs("label",{children:["Salvar resposta em slot",e.jsx("input",{value:n.responseName||"",placeholder:"mensagem_formatada",onChange:c=>tt({responseName:c.target.value})})]})]})]}),n.type==="group"&&e.jsx("div",{className:"filter-empty",children:"Selecione o encapsulador no canvas e arraste as bordas para redimensionar."}),n.type==="condition"&&e.jsxs("div",{className:"rich-message-editor",children:[e.jsxs("label",{children:["Modo da condição",e.jsxs("select",{value:n.conditionMode||"js",onChange:c=>tt({conditionMode:c.target.value}),children:[e.jsx("option",{value:"js",children:"Regra JS"}),e.jsx("option",{value:"llm",children:"Instrução LLM"})]})]}),(n.conditionMode||"js")==="js"&&e.jsxs("label",{children:["Condição JS",e.jsx("textarea",{rows:4,value:n.instruction||n.condition||"",placeholder:'context.slots.input === "ok"',onChange:c=>tt({condition:c.target.value,instruction:c.target.value})})]}),n.conditionMode==="llm"&&e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Decisao por LLM"})}),e.jsxs("label",{children:["Instrução LLM",e.jsx("textarea",{rows:5,value:n.instruction||n.condition||"",placeholder:"Ex: retorne verdadeiro se o usuário confirmou que quer continuar; caso contrário retorne falso.",onChange:c=>tt({condition:c.target.value,instruction:c.target.value})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Modelo",e.jsxs("select",{value:n.conditionModel||"",onChange:c=>tt({conditionModel:c.target.value}),children:[e.jsxs("option",{value:"",children:["Usar modelo do fluxo (",t.model,")"]}),Qn.map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))]})]}),e.jsxs("label",{children:["Temperatura",e.jsx("input",{type:"number",min:0,max:1,step:.1,value:n.conditionTemperature??0,onChange:c=>tt({conditionTemperature:Number(c.target.value)})})]})]}),e.jsxs("label",{children:["Slot do motivo",e.jsx("input",{value:n.conditionReasonResponseName||"",placeholder:`${n.responseName||"condition"}_reason`,onChange:c=>tt({conditionReasonResponseName:c.target.value})}),e.jsx(hf,{slotName:n.conditionReasonResponseName||`${n.responseName||"condition"}_reason`,resultName:n.responseName||"condition"})]}),e.jsxs("div",{className:"filter-empty",children:["Helper: campo opcional para salvar a explicação do LLM sobre a decisão. Exemplo: se o responseName for condition, o true/false fica em context.slots.condition e o motivo fica em context.slots.",n.conditionReasonResponseName||`${n.responseName||"condition"}_reason`,"."]})]})]}),n.type==="richMessage"&&e.jsxs("div",{className:"rich-message-editor",children:[e.jsxs("label",{children:["Tipo de mensagem",e.jsxs("select",{value:st.type,onChange:c=>{const S=c.target.value,_=Qx(S);Tn({type:S,...S==="appointmentFlow"&&!st.appointmentFlow?{appointmentFlow:bh}:{},...(S==="image"||S==="document")&&!st.media?{media:{url:"",fileName:"",mimeType:""}}:{},generation:st.generation?{...st.generation,enabled:S==="appointmentFlow"||S==="image"||S==="document"?!1:st.generation.enabled,maxItems:Math.min(Number(st.generation.maxItems||3),_)}:st.generation})},children:[e.jsx("option",{value:"text",children:"Texto"}),e.jsx("option",{value:"buttons",children:"Botões"}),e.jsx("option",{value:"quickReplies",children:"Quick replies"}),e.jsx("option",{value:"list",children:"Lista"}),e.jsx("option",{value:"carousel",children:"Carrossel"}),e.jsx("option",{value:"image",children:"Imagem"}),e.jsx("option",{value:"document",children:"Documento"}),e.jsx("option",{value:"appointmentFlow",children:"WhatsApp Flow agendamento"})]})]}),ul&&e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:hn,onChange:c=>Ps({enabled:c.target.checked})}),e.jsx("span",{children:"Gerar componentes com LLM"})]}),!hn&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:[gi,e.jsx("textarea",{rows:4,value:st.text||"",placeholder:Tr,maxLength:qt.interactiveBody,onChange:c=>{Tn({text:c.target.value}),tt({instruction:c.target.value})}})]}),e.jsxs("label",{children:["Rodapé",e.jsx("input",{value:st.footer||"",placeholder:"Opcional",maxLength:qt.footer,onChange:c=>Tn({footer:c.target.value})})]}),e.jsxs("div",{className:"filter-empty",children:["WhatsApp: texto até ",qt.interactiveBody," caracteres, rodapé até ",qt.footer,", botões até ",qt.buttons,", lista até ",qt.listRows," itens."]}),ls&&e.jsxs("div",{className:"rich-editor-block nested",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:st.type==="image"?"Imagem":"Documento"})}),e.jsxs("label",{children:["URL pública da ",st.type==="image"?"imagem":"mídia",e.jsx("input",{value:((cr=st.media)==null?void 0:cr.url)||"",placeholder:st.type==="image"?"{{context.slots.imageUrl}}":"{{context.slots.documentUrl}}",maxLength:qt.imageUrl,onChange:c=>Tn({media:{...st.media||{},url:c.target.value}})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[st.type==="document"&&e.jsxs("label",{children:["Nome do arquivo",e.jsx("input",{value:((bo=st.media)==null?void 0:bo.fileName)||"",placeholder:"arquivo.pdf",onChange:c=>Tn({media:{...st.media||{},fileName:c.target.value}})})]}),e.jsxs("label",{children:["Tipo MIME",e.jsx("input",{value:((Lo=st.media)==null?void 0:Lo.mimeType)||"",placeholder:st.type==="image"?"image/jpeg":"application/pdf",onChange:c=>Tn({media:{...st.media||{},mimeType:c.target.value}})})]})]}),e.jsxs("div",{className:"filter-empty",children:["Use uma URL HTTPS acessível pelo provedor. A API Oficial envia como ",st.type==="image"?"imagem":"documento","; a Sinch recebe o payload de mídia equivalente."]})]})]}),hn&&e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Geração por IA"})}),e.jsxs("label",{children:["Prompt da geração",e.jsx("textarea",{rows:5,value:((Pi=st.generation)==null?void 0:Pi.prompt)||"",placeholder:"Ex: gere opções de atendimento com base no interesse do usuário em context.slots.userInput",onChange:c=>Ps({prompt:c.target.value})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Modelo para gerar",e.jsxs("select",{value:((Vs=st.generation)==null?void 0:Vs.model)||"",onChange:c=>Ps({model:c.target.value}),children:[e.jsxs("option",{value:"",children:["Usar modelo do fluxo (",t.model,")"]}),Qn.map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))]})]}),e.jsxs("label",{children:["Max itens",e.jsx("input",{type:"number",min:1,max:To,value:((Ur=st.generation)==null?void 0:Ur.maxItems)??3,onChange:c=>{const S=Number(c.target.value)||1;Ps({maxItems:Math.max(1,Math.min(S,To))})}})]})]}),e.jsxs("div",{className:"filter-empty",children:["O LLM gera texto e componentes respeitando o limite do canal. Para este tipo: até ",To," item(ns)."]})]}),!hn&&st.type==="buttons"&&e.jsx(Xf,{title:"Botões",actions:st.buttons||[],onChange:c=>Tn({buttons:c})}),!hn&&st.type==="quickReplies"&&e.jsx(Xf,{title:"Quick replies",actions:st.quickReplies||[],onChange:c=>Tn({quickReplies:c})}),!hn&&st.type==="list"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Texto do botão da lista",e.jsx("input",{value:((mc=st.list)==null?void 0:mc.buttonText)||"",placeholder:"Ver opções",maxLength:qt.listButton,onChange:c=>{var S;return Tn({list:{buttonText:c.target.value,sections:((S=st.list)==null?void 0:S.sections)||[]}})}})]}),e.jsx(Fk,{sections:((xs=st.list)==null?void 0:xs.sections)||[],onChange:c=>{var S;return Tn({list:{buttonText:((S=st.list)==null?void 0:S.buttonText)||"Ver opções",sections:c}})}})]}),!hn&&st.type==="carousel"&&e.jsx(zk,{cards:((hc=st.carousel)==null?void 0:hc.cards)||[],onChange:c=>Tn({carousel:{cards:c}})}),!hn&&st.type==="appointmentFlow"&&e.jsx(Lk,{appointmentFlow:st.appointmentFlow,flowConfig:t,currentFlowId:l,stepId:n.id,agentId:p,onChange:c=>Tn({appointmentFlow:c})})]}),n.type==="api"&&e.jsxs("div",{className:"rich-message-editor",children:[e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:((Yt=(kl=n.api)==null?void 0:kl.generation)==null?void 0:Yt.enabled)===!0,onChange:c=>{var S,_,W,je,ke,Ge,ut,yt,tn,Un;return tt({api:{responseName:((S=n.api)==null?void 0:S.responseName)||n.responseName||"api",requests:((_=n.api)==null?void 0:_.requests)||[],generation:{enabled:c.target.checked,prompt:((je=(W=n.api)==null?void 0:W.generation)==null?void 0:je.prompt)||"Monte uma ou mais chamadas HTTP usando o contexto do fluxo.",model:((Ge=(ke=n.api)==null?void 0:ke.generation)==null?void 0:Ge.model)||"",temperature:((yt=(ut=n.api)==null?void 0:ut.generation)==null?void 0:yt.temperature)??.2,fallbackToManual:((Un=(tn=n.api)==null?void 0:tn.generation)==null?void 0:Un.fallbackToManual)??!0}}})}}),"Montar requests com LLM"]}),((fc=(Al=n.api)==null?void 0:Al.generation)==null?void 0:fc.enabled)===!0&&e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Geração da API por IA"})}),e.jsxs("label",{children:["Instrução para montar as chamadas",e.jsx("textarea",{rows:5,value:((El=(gc=n.api)==null?void 0:gc.generation)==null?void 0:El.prompt)||"",placeholder:"Ex: crie uma chamada POST para enviar context.slots.item para o CRM.",onChange:c=>{var S,_,W,je,ke,Ge,ut,yt;return tt({api:{responseName:((S=n.api)==null?void 0:S.responseName)||n.responseName||"api",requests:((_=n.api)==null?void 0:_.requests)||[],generation:{enabled:!0,prompt:c.target.value,model:((je=(W=n.api)==null?void 0:W.generation)==null?void 0:je.model)||"",temperature:((Ge=(ke=n.api)==null?void 0:ke.generation)==null?void 0:Ge.temperature)??.2,fallbackToManual:((yt=(ut=n.api)==null?void 0:ut.generation)==null?void 0:yt.fallbackToManual)??!0}}})}})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Modelo",e.jsxs("select",{value:((Do=(xc=n.api)==null?void 0:xc.generation)==null?void 0:Do.model)||"",onChange:c=>{var S,_,W,je,ke,Ge,ut,yt;return tt({api:{responseName:((S=n.api)==null?void 0:S.responseName)||n.responseName||"api",requests:((_=n.api)==null?void 0:_.requests)||[],generation:{enabled:!0,prompt:((je=(W=n.api)==null?void 0:W.generation)==null?void 0:je.prompt)||"",model:c.target.value,temperature:((Ge=(ke=n.api)==null?void 0:ke.generation)==null?void 0:Ge.temperature)??.2,fallbackToManual:((yt=(ut=n.api)==null?void 0:ut.generation)==null?void 0:yt.fallbackToManual)??!0}}})},children:[e.jsxs("option",{value:"",children:["Usar modelo do fluxo (",t.model,")"]}),Qn.map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))]})]}),e.jsxs("label",{children:["Temperatura",e.jsx("input",{type:"number",min:0,max:1,step:.1,value:((gn=(Zt=n.api)==null?void 0:Zt.generation)==null?void 0:gn.temperature)??.2,onChange:c=>{var S,_,W,je,ke,Ge,ut,yt;return tt({api:{responseName:((S=n.api)==null?void 0:S.responseName)||n.responseName||"api",requests:((_=n.api)==null?void 0:_.requests)||[],generation:{enabled:!0,prompt:((je=(W=n.api)==null?void 0:W.generation)==null?void 0:je.prompt)||"",model:((Ge=(ke=n.api)==null?void 0:ke.generation)==null?void 0:Ge.model)||"",temperature:Number(c.target.value),fallbackToManual:((yt=(ut=n.api)==null?void 0:ut.generation)==null?void 0:yt.fallbackToManual)??!0}}})}})]})]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:((vs=(wn=n.api)==null?void 0:wn.generation)==null?void 0:vs.fallbackToManual)!==!1,onChange:c=>{var S,_,W,je,ke,Ge,ut,yt;return tt({api:{responseName:((S=n.api)==null?void 0:S.responseName)||n.responseName||"api",requests:((_=n.api)==null?void 0:_.requests)||[],generation:{enabled:!0,prompt:((je=(W=n.api)==null?void 0:W.generation)==null?void 0:je.prompt)||"",model:((Ge=(ke=n.api)==null?void 0:ke.generation)==null?void 0:Ge.model)||"",temperature:((yt=(ut=n.api)==null?void 0:ut.generation)==null?void 0:yt.temperature)??.2,fallbackToManual:c.target.checked}}})}}),"Usar requests manuais como fallback"]}),e.jsx("div",{className:"filter-empty",children:"O LLM gera apenas o JSON do httpBatch, incluindo polling quando necessário. O executor ainda valida método, URL, headers, params e body antes de chamar."})]}),e.jsx(Xm,{requests:((Us=n.api)==null?void 0:Us.requests)||[],onChange:c=>{var S,_;return tt({api:{responseName:((S=n.api)==null?void 0:S.responseName)||n.responseName||"api",requests:c,generation:(_=n.api)==null?void 0:_.generation}})}})]}),((_i=n.component)==null?void 0:_i.type)==="files"&&e.jsxs("div",{className:"rich-message-editor",children:[e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Arquivos"})}),e.jsxs("div",{className:"filter-empty",children:["Envie arquivos ou informe uma URL. O original fica versionado no storage e o texto extraido fica em ",e.jsxs("code",{children:["context.slots.",n.component.responseName||n.responseName||"arquivos"]}),"."]}),e.jsxs("label",{children:["responseName",e.jsx("input",{value:n.component.responseName||n.responseName||"arquivos",onChange:c=>{const S=c.target.value;tt({responseName:S,component:{...n.component,responseName:S}})}})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Fonte",e.jsxs("select",{value:n.component.filesSourceMode||"upload",onChange:c=>L({filesSourceMode:c.target.value}),children:[e.jsx("option",{value:"upload",children:"Upload no fluxo"}),e.jsx("option",{value:"url",children:"URL existente"})]})]}),e.jsxs("label",{children:["Operacao",e.jsxs("select",{value:n.component.filesOperation||"read",onChange:c=>L({filesOperation:c.target.value}),children:[e.jsx("option",{value:"read",children:"Ler documentos"}),e.jsx("option",{value:"generate",children:"Gerar novo arquivo ou consolidar"}),e.jsx("option",{value:"edit",children:"Editar template e criar versao"})]})]}),e.jsxs("label",{children:["Saida",e.jsxs("select",{value:n.component.filesResultMode||"context",onChange:c=>L({filesResultMode:c.target.value}),children:[e.jsx("option",{value:"context",children:"Salvar no contexto"}),e.jsx("option",{value:"llm",children:"LLM le e responde"})]})]})]})]}),(n.component.filesSourceMode||"upload")==="upload"&&e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Upload"})}),e.jsx("input",{type:"file",multiple:!0,accept:"*/*",onChange:hi,disabled:xr}),xr&&e.jsxs("span",{className:"field-hint",children:[e.jsx(Ut,{size:14,className:"spin"})," Armazenando e extraindo estrutura..."]}),Ba&&e.jsx("span",{className:"field-error",children:Ba}),Mo.length>0&&e.jsx("div",{className:"selected-files",children:Mo.map((c,S)=>{var _;return e.jsxs("span",{children:[c.filename||c.title||`arquivo-${S+1}`," (",c.textLength||((_=c.text)==null?void 0:_.length)||0," chars)",(c.documentId||c.id)&&e.jsx("button",{type:"button",onClick:()=>void Ql(c),"aria-label":"Baixar arquivo",children:e.jsx(vh,{size:12})}),e.jsx("button",{type:"button",onClick:()=>Hu(c.id,S),"aria-label":"Remover arquivo",children:e.jsx(Nt,{size:12})})]},c.id||`${c.filename}-${S}`)})})]}),(n.component.filesSourceMode||"upload")==="url"&&e.jsxs("label",{children:["URL do arquivo",e.jsx("input",{value:n.component.filesUrlTemplate||"",placeholder:"https://site.com/arquivo.pdf",onChange:c=>L({filesUrlTemplate:c.target.value})}),e.jsx("span",{className:"field-hint",children:"Use uma URL publica direta do arquivo. Para Google Drive, Docs ou Sheets privado, use um componente MCP separado."})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.component.filesPreferOcr===!0,onChange:c=>L({filesPreferOcr:c.target.checked})}),"Usar OCR quando necessario"]}),e.jsxs("label",{children:["Limite de texto por arquivo",e.jsx("input",{type:"number",min:0,step:1e3,value:n.component.filesMaxTextChars??6e4,onChange:c=>L({filesMaxTextChars:Number(c.target.value)||0})})]})]}),(n.component.filesOperation||"read")!=="read"&&e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Artefato gerado"})}),e.jsxs("div",{className:"filter-empty",children:["O componente cria um novo arquivo versionado. Em modo editar, use placeholders como ",e.jsx("code",{children:"{{cliente.nome}}"})," ou descreva alteracoes estruturais em DOCX e XLSX."]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.component.filesUseDocumentSkill!==!1,onChange:c=>L({filesUseDocumentSkill:c.target.checked})}),"Usar Docs Skill especialista"]}),e.jsxs("span",{className:"field-hint",children:["A skill planeja a entrega, escolhe secoes/tabelas, orienta a LLM e registra qualidade em ",e.jsx("code",{children:"documentSkill"})," no resultado."]}),as&&e.jsxs("div",{className:"filter-empty warning",children:["Ha varios arquivos enviados. Marque explicitamente qual deles e o template que sera editado. Para combinar o conteudo de todos em um novo documento, use Gerar novo arquivo ou consolidar.",e.jsx("button",{type:"button",onClick:()=>L({filesOperation:"generate"}),children:"Consolidar arquivos"})]}),(n.component.filesOperation||"read")==="generate"&&Mo.length>1&&e.jsx("div",{className:"filter-empty",children:"Os arquivos enviados serao lidos como referencias para gerar um novo documento consolidado no formato escolhido abaixo."}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Formato de saida",e.jsxs("select",{value:qu,disabled:!!Wt,onChange:c=>{const S=c.target.value;L({filesOutputFormat:S,filesOutputFilenameTemplate:fo(n.component.filesOutputFilenameTemplate||"",S)})},children:[e.jsx("option",{value:"docx",children:"DOCX"}),e.jsx("option",{value:"xlsx",children:"XLSX"}),e.jsx("option",{value:"pdf",children:"PDF"}),e.jsx("option",{value:"csv",children:"CSV"}),e.jsx("option",{value:"json",children:"JSON"}),e.jsx("option",{value:"html",children:"HTML"}),e.jsx("option",{value:"md",children:"Markdown"}),e.jsx("option",{value:"txt",children:"TXT"})]}),Wt&&e.jsxs("span",{className:"field-hint",children:["Ao editar um template ",Wt.toUpperCase(),", o formato original e preservado. Para converter, use Gerar novo arquivo."]})]}),e.jsxs("label",{children:["Nome do novo arquivo",e.jsx("input",{value:mi,onChange:c=>L({filesOutputFilenameTemplate:c.target.value})})]})]}),(n.component.filesOperation||"read")==="edit"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"template-files-list",children:[e.jsx("strong",{children:"Documentos template"}),e.jsx("span",{className:"field-hint",children:"Marque um ou mais arquivos que serao editados. Quando houver varios uploads, a selecao e obrigatoria. Arquivos nao marcados continuam disponiveis como referencia para a LLM."}),!Mo.length&&e.jsx("div",{className:"filter-empty",children:"Envie ao menos um arquivo template."}),Mo.map((c,S)=>{const _=String(c.documentId||c.id||"");return e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:Ar.includes(_),disabled:!_,onChange:()=>Kl(_)}),c.filename||c.title||`arquivo-${S+1}`]},_||S)})]}),e.jsxs("label",{children:["Valores para placeholders",e.jsx("textarea",{rows:5,value:typeof n.component.filesTemplateValuesJson=="string"?n.component.filesTemplateValuesJson:JSON.stringify(n.component.filesTemplateValuesJson||{},null,2),placeholder:'{"cliente.nome":"{{context.slots.cliente.nome}}"}',onChange:c=>L({filesTemplateValuesJson:c.target.value})})]})]}),e.jsxs("label",{children:["Conteudo pronto avancado (opcional)",e.jsx("textarea",{rows:5,value:n.component.filesContentTemplate||"",placeholder:"Deixe vazio para a LLM interpretar a instrucao abaixo. Preencha somente quando ja tiver o conteudo final pronto.",onChange:c=>L({filesContentTemplate:c.target.value})})]}),String(n.component.filesContentTemplate||"").trim()&&e.jsxs("div",{className:"filter-empty warning",children:["Este campo esta preenchido: a LLM nao sera chamada para interpretar a alteracao. Use-o somente para conteudo final pronto.",e.jsx("button",{type:"button",onClick:()=>L({filesContentTemplate:""}),children:"Limpar e usar LLM"})]}),e.jsxs("label",{children:["Instrucao para gerar ou editar",e.jsx("textarea",{rows:5,value:n.component.filesGenerationPrompt||"",placeholder:"Leia os contratos conectados e gere a nova versao solicitada pelo usuario.",onChange:c=>L({filesGenerationPrompt:c.target.value})}),e.jsx("span",{className:"field-hint",children:"Em DOCX com varias tabelas, informe qual tabela alterar. Em XLSX, informe a aba e as celulas ou colunas desejadas, por exemplo: preencher os totais na aba Total acumulado."})]})]}),e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"LLM do componente Arquivos"})}),e.jsx("div",{className:"filter-empty",children:Ts?"LLM ativa nesta etapa. Se nenhum modelo for escolhido, este componente usa o modelo configurado no fluxo.":"LLM inativa nesta configuracao. Ela sera usada ao selecionar LLM le e responde ou ao gerar/editar com Conteudo direto opcional vazio."}),Ts&&e.jsxs("label",{children:["Pergunta para a LLM",e.jsx("input",{value:n.component.filesQuestionTemplate||"{{context.slots.userInput}}",onChange:c=>L({filesQuestionTemplate:c.target.value})})]}),Ts&&(n.component.filesOperation||"read")==="read"&&e.jsxs("label",{children:["Prompt",e.jsx("textarea",{rows:4,value:n.component.filesLlmPrompt||"Leia os arquivos conectados e responda ao usuario em pt-BR de forma objetiva.",onChange:c=>L({filesLlmPrompt:c.target.value})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Provider",e.jsxs("select",{value:n.component.filesLlmProvider||"auto",onChange:c=>{const S=c.target.value;L({filesLlmProvider:S,filesLlmModel:S==="auto"?"":_u(S)})},children:[e.jsx("option",{value:"auto",children:"Auto/global"}),e.jsx("option",{value:"openai",children:"OpenAI"}),e.jsx("option",{value:"azure_openai",children:"Azure OpenAI"}),e.jsx("option",{value:"gemini",children:"Gemini"}),e.jsx("option",{value:"claude",children:"Claude"}),e.jsx("option",{value:"grok",children:"Grok"}),e.jsx("option",{value:"bedrock",children:"Bedrock"})]})]}),e.jsxs("label",{children:["Modelo",e.jsxs("select",{value:n.component.filesLlmModel||"",onChange:c=>L({filesLlmModel:c.target.value}),children:[e.jsxs("option",{value:"",children:["Usar modelo do fluxo (",t.model,")"]}),Xo(n.component.filesLlmProvider||"auto",n.component.filesLlmModel).map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))]})]}),e.jsxs("label",{children:["Temperatura",e.jsx("input",{type:"number",min:0,max:1,step:.1,value:n.component.filesLlmTemperature??.2,onChange:c=>L({filesLlmTemperature:Number(c.target.value)})})]})]})]}),e.jsxs("div",{className:"mcp-output-hint",children:["Proximo no: use ",e.jsx("code",{children:`{{context.slots.${n.component.responseName||n.responseName||"arquivos"}.text}}`}),", configure um Agente com docs em ",e.jsx("code",{children:`context.slots.${n.component.responseName||n.responseName||"arquivos"}.documents`})," ou envie ",e.jsx("code",{children:`{{context.slots.${n.component.responseName||n.responseName||"arquivos"}.artifact.downloadUrl}}`}),". Em edicao multipla, a lista completa fica em ",e.jsx("code",{children:`context.slots.${n.component.responseName||n.responseName||"arquivos"}.artifacts`}),"."]})]}),((eu=n.component)==null?void 0:eu.type)==="agentPlan"&&e.jsx("div",{className:"rich-message-editor",children:e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Agent Plan"})}),e.jsxs("div",{className:"filter-empty",children:["Coloque este no antes do Agente. Ele salva um contrato de planejamento em ",e.jsx("code",{children:"context.slots.agentPlan"}),"; o orquestrador usa isso para decidir quais skills, subagents e MCP chamar."]}),e.jsxs("label",{children:["responseName",e.jsx("input",{value:n.component.responseName||n.responseName||"agentPlan",onChange:c=>{const S=c.target.value;tt({responseName:S,component:{...n.component,responseName:S}})}})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Modo",e.jsxs("select",{value:n.component.agentPlanMode||"advisory",onChange:c=>L({agentPlanMode:c.target.value}),children:[e.jsx("option",{value:"advisory",children:"Orientar planejamento"}),e.jsx("option",{value:"manual",children:"Plano manual"})]})]}),e.jsxs("label",{children:["Limite de chamadas sugerido",e.jsx("input",{type:"number",min:1,max:10,value:n.component.agentPlanMaxToolCalls??3,onChange:c=>L({agentPlanMaxToolCalls:Number(c.target.value)||1})})]})]}),e.jsxs("label",{children:["Instrucoes do plano",e.jsx("textarea",{rows:6,value:n.component.agentPlanInstructions||"",placeholder:`Ex: quebre pedidos com varias intencoes em uma chamada por tool.
|
|
490
|
+
Ex: resumo deve usar somente skill de resumo; traducao deve usar somente skill de traducao.`,onChange:c=>L({agentPlanInstructions:c.target.value})})]}),(n.component.agentPlanMode||"advisory")==="manual"&&e.jsxs("label",{children:["Plano JSON",e.jsx("textarea",{rows:8,value:n.component.agentPlanJson||`{
|
|
491
|
+
"plan": []
|
|
492
|
+
}`,placeholder:`{
|
|
493
|
+
"plan": [
|
|
494
|
+
{ "action": "tool", "toolId": "canvas:...", "arguments": { "text": "{{context.slots.userInput}}" }, "reason": "..." }
|
|
495
|
+
]
|
|
496
|
+
}`,onChange:c=>L({agentPlanJson:c.target.value})}),Si&&e.jsx("span",{className:"field-error",children:Si})]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.component.agentPlanClearAfterUse!==!1,onChange:c=>L({agentPlanClearAfterUse:c.target.checked})}),e.jsx("span",{children:"Consumir apenas pelo proximo Agente"})]}),e.jsxs("div",{className:"mcp-output-hint",children:["O trace continua mostrando ",e.jsx("code",{children:"agentPlan"}),", mas agora o criterio pode ser editado aqui no canvas."]})]})}),((Vn=n.component)==null?void 0:Vn.type)==="approval"&&e.jsx("div",{className:"rich-message-editor",children:e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Aprovação humana"})}),e.jsx("div",{className:"filter-empty",children:"Este nó pausa a execução antes de ações sensíveis. O fluxo continua quando o operador responder com a palavra de aprovação ou quando a API enviar approvals pelo payload."}),e.jsxs("label",{children:["responseName",e.jsx("input",{value:n.component.responseName||n.responseName||"aprovacao",onChange:c=>{const S=c.target.value;tt({responseName:S,component:{...n.component,responseName:S}})}})]}),e.jsxs("label",{children:["Título da aprovação",e.jsx("input",{value:n.component.approvalTitle||"",placeholder:"Aprovar cancelamento",onChange:c=>L({approvalTitle:c.target.value})})]}),e.jsxs("label",{children:["Descrição para o operador",e.jsx("textarea",{rows:4,value:n.component.approvalDescription||n.instruction||"",placeholder:"Revise os dados do cliente, valor e motivo antes de continuar.",onChange:c=>L({approvalDescription:c.target.value})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Risco",e.jsxs("select",{value:n.component.approvalRisk||"medium",onChange:c=>L({approvalRisk:c.target.value}),children:[e.jsx("option",{value:"low",children:"Baixo"}),e.jsx("option",{value:"medium",children:"Médio"}),e.jsx("option",{value:"high",children:"Alto"}),e.jsx("option",{value:"critical",children:"Crítico"})]})]}),e.jsxs("label",{children:["Responsável",e.jsx("input",{value:n.component.approvalApproverHint||"",placeholder:"Supervisor de atendimento",onChange:c=>L({approvalApproverHint:c.target.value})})]})]}),e.jsxs("label",{children:["Escopos/permissões",e.jsx("input",{value:(n.component.approvalScopes||[]).join(", "),placeholder:"write, external_api, billing",onChange:c=>L({approvalScopes:c.target.value.split(",").map(S=>S.trim()).filter(Boolean)})}),e.jsxs("span",{className:"field-hint",children:["Use nomes curtos para auditoria, como ",e.jsx("code",{children:"write"}),", ",e.jsx("code",{children:"delete"}),", ",e.jsx("code",{children:"billing"})," ou ",e.jsx("code",{children:"whatsapp_broadcast"}),"."]})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Palavra para aprovar",e.jsx("input",{value:n.component.approvalKeyword||"aprovar",onChange:c=>L({approvalKeyword:c.target.value})})]}),e.jsxs("label",{children:["Palavra para reprovar",e.jsx("input",{value:n.component.approvalRejectKeyword||"reprovar",onChange:c=>L({approvalRejectKeyword:c.target.value})})]})]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.component.approvalRequireExplicitInput!==!1,onChange:c=>L({approvalRequireExplicitInput:c.target.checked})}),e.jsx("span",{children:"Exigir que a resposta venha quando este nó estiver aguardando input"})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Texto ao aprovar",e.jsx("input",{value:n.component.approvalApprovedText||"",placeholder:"Aprovado. Vou continuar.",onChange:c=>L({approvalApprovedText:c.target.value})})]}),e.jsxs("label",{children:["Texto ao reprovar",e.jsx("input",{value:n.component.approvalRejectedText||"",placeholder:"Reprovado. A ação foi bloqueada.",onChange:c=>L({approvalRejectedText:c.target.value})})]})]}),e.jsxs("div",{className:"mcp-output-hint",children:["Próximo nó: use ",e.jsx("code",{children:`{{context.slots.${n.component.responseName||n.responseName||"aprovacao"}.decision}}`})," para rotear aprovado/reprovado."]})]})}),((Ml=n.component)==null?void 0:Ml.type)==="mcp"&&e.jsxs("div",{className:"rich-message-editor",children:[e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"MCP"})}),e.jsxs("div",{className:"filter-empty",children:["Escolha o tipo de integração, preencha os campos principais e use o output em ",e.jsxs("code",{children:["context.slots.",n.component.responseName||n.responseName||"mcp"]}),"."]}),e.jsx("div",{className:"mcp-mode-grid",children:$k.map(c=>e.jsxs("button",{type:"button",className:St===c.value?"active":"",onClick:()=>L({mcpMode:c.value}),children:[e.jsx("strong",{children:c.title}),e.jsx("span",{children:c.description})]},c.value))}),e.jsxs("div",{className:"mcp-helper-row",children:[e.jsx("span",{children:St==="fields"?"Ideal para extrair e padronizar dados.":St==="api"?"Ideal quando o sistema externo ainda não é MCP.":"Ideal para servers MCP remotos já publicados."}),e.jsxs("button",{type:"button",onClick:()=>ll(St),children:[e.jsx(Dl,{size:14}),"Preencher exemplo"]})]}),e.jsxs("label",{children:["responseName",e.jsx("input",{value:n.component.responseName||n.responseName||"mcp",placeholder:"mcp",onChange:c=>{const S=c.target.value;tt({responseName:S,component:{...n.component,responseName:S}})}})]}),e.jsxs("div",{className:"mcp-output-hint",children:["Próximo nó: use ",e.jsx("code",{children:`{{context.slots.${n.component.responseName||n.responseName||"mcp"}.output.campo}}`})]}),St==="api"&&e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Uso de LLM neste no"})}),(n.component.mcpApiCallMode||"single")!=="multi"&&e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:Jc,onChange:c=>L({mcpApiAllowLlmRequest:c.target.checked})}),e.jsx("span",{children:"Permitir que a LLM monte metodo, params e body dentro da URL/base permitida"})]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:vt,onChange:c=>L({mcpApiMapResultWithLlm:c.target.checked})}),e.jsx("span",{children:"Usar LLM para mapear resposta da API para o output schema"})]}),!jn&&!vt&&e.jsx("div",{className:"filter-empty",children:"LLM desligada neste no. Provider, modelo e temperatura ficam bloqueados; o Canvas usa a chamada fixa e copia campos compativeis com o output schema."})]}),e.jsxs("details",{className:"mcp-details",children:[e.jsx("summary",{children:"Modelo, provider e saída"}),!va&&e.jsx("div",{className:"filter-empty",children:"LLM desativada neste componente. Provider, modelo e temperatura so sao usados quando alguma opcao de LLM estiver ligada."}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Provedor LLM",e.jsxs("select",{disabled:!va,value:n.component.mcpLlmProvider||"auto",onChange:c=>{const S=c.target.value;L({mcpLlmProvider:S,mcpModel:S==="auto"?"":_u(S)})},children:[e.jsxs("option",{value:"auto",children:["Usar provedor do fluxo (",Ms,")"]}),e.jsx("option",{value:"openai",children:"OpenAI"}),e.jsx("option",{value:"azure_openai",children:"Azure OpenAI"}),e.jsx("option",{value:"gemini",children:"Gemini"}),e.jsx("option",{value:"claude",children:"Claude"}),e.jsx("option",{value:"grok",children:"Grok"}),e.jsx("option",{value:"bedrock",children:"Bedrock"})]})]}),e.jsxs("label",{children:["Modelo/deployment",e.jsxs("select",{disabled:!va,value:n.component.mcpModel||"",onChange:c=>L({mcpModel:c.target.value}),children:[e.jsxs("option",{value:"",children:["Usar modelo do fluxo (",t.model,")"]}),Xo(n.component.mcpLlmProvider||"auto",n.component.mcpModel).map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))]})]})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Temperatura",e.jsx("input",{type:"number",min:0,max:1,step:.1,disabled:!va,value:n.component.mcpTemperature??.1,onChange:c=>L({mcpTemperature:Number(c.target.value)})})]}),e.jsxs("label",{children:["Salvar output",e.jsxs("select",{value:n.component.mcpMergeOutputToSlots===!0?"merge":"responseName",onChange:c=>L({mcpMergeOutputToSlots:c.target.value==="merge"}),children:[e.jsx("option",{value:"responseName",children:"Só no responseName"}),e.jsx("option",{value:"merge",children:"Mesclar em context.slots"})]})]})]})]})]}),e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Contrato da ferramenta"})}),e.jsxs("label",{children:["Nome da ferramenta",e.jsx("input",{value:n.component.mcpToolName||"",placeholder:St==="external"?"buscar_cliente_mcp":St==="api"?"consultar_cliente":"montar_campos_cliente",onChange:c=>L({mcpToolName:c.target.value})})]}),e.jsxs("label",{children:[e.jsxs("span",{className:"prompt-field-label-row",children:[e.jsx("span",{children:"Descricao da ferramenta"}),e.jsx(Gi,{onClick:()=>{var c,S,_,W,je;return Eo({fieldType:"mcpDescription",targetType:"mcp-node",title:"Gerar descricao do MCP",label:n.title||"MCP",currentValue:((c=n.component)==null?void 0:c.mcpToolDescription)||"",placeholder:"Ex: ferramenta que obtem detalhes de um agendamento usando agendamentoId e retorna unidade, horario e exames somente quando a API responder.",applyText:ke=>L({mcpToolDescription:ke}),stepContext:{id:n.id,title:n.title,mcpMode:St,inputSchema:((S=n.component)==null?void 0:S.mcpInputSchema)||"{}",outputSchema:((_=n.component)==null?void 0:_.mcpOutputSchema)||"{}"}},(W=n.component)!=null&&W.mcpToolDescription?"Melhore a descricao para o agente escolher esta ferramenta corretamente.":"",((je=n.component)==null?void 0:je.mcpModel)||t.model)}})]}),e.jsx("textarea",{rows:3,value:n.component.mcpToolDescription||"",placeholder:"Busca ou monta dados do cliente com base no CPF informado.",onChange:c=>L({mcpToolDescription:c.target.value})})]}),e.jsxs("label",{children:[e.jsxs("span",{className:"prompt-field-label-row",children:[e.jsx("span",{children:"Instrucao"}),e.jsx(Gi,{onClick:()=>{var c,S,_,W,je,ke,Ge,ut,yt;return Eo({fieldType:"mcpInstruction",targetType:"mcp-node",title:"Gerar instrucao do MCP",label:n.title||"MCP",currentValue:((c=n.component)==null?void 0:c.mcpInstruction)||n.instruction||"",placeholder:"Ex: use somente os campos do input schema, nao execute se faltar campo obrigatorio, chame a API configurada e normalize apenas dados reais no output schema.",applyText:tn=>L({mcpInstruction:tn}),stepContext:{id:n.id,title:n.title,mcpMode:St,toolName:((S=n.component)==null?void 0:S.mcpToolName)||"",description:((_=n.component)==null?void 0:_.mcpToolDescription)||"",inputSchema:((W=n.component)==null?void 0:W.mcpInputSchema)||"{}",outputSchema:((je=n.component)==null?void 0:je.mcpOutputSchema)||"{}",apiMethod:((ke=n.component)==null?void 0:ke.mcpApiMethod)||"",apiBaseUrl:((Ge=n.component)==null?void 0:Ge.mcpApiBaseUrl)||""}},(ut=n.component)!=null&&ut.mcpInstruction?"Melhore esta instrucao do MCP sem misturar prompt de atendimento ao cliente.":"",((yt=n.component)==null?void 0:yt.mcpModel)||t.model)}})]}),e.jsx("textarea",{rows:5,value:n.component.mcpInstruction||n.instruction||"",placeholder:"Use somente dados do contexto. Retorne os campos do schema de saída. Não invente dados sensíveis.",onChange:c=>L({mcpInstruction:c.target.value})})]}),e.jsxs("details",{className:"mcp-details",children:[e.jsx("summary",{children:"Campos de entrada e saída"}),e.jsx("div",{className:"filter-empty",children:'Preencha os campos em formulário. Use Opções para enum, separando os valores por vírgula. O JSON continua disponível em "JSON avançado".'}),e.jsx(av,{title:"Entrada que a IA pode usar",helper:"Ex: cpf, idCliente, origem",fields:Tt,emptyLabel:"Nenhum campo de entrada definido. Adicione os campos que a IA deve receber do contexto.",onAdd:()=>_o("mcpInputSchema"),onUpdate:(c,S)=>Kc("mcpInputSchema",c,S),onRemove:c=>Rs("mcpInputSchema",c)}),e.jsx(av,{title:"Saída para os próximos nós",helper:"Ex: encontrado, nome, maiorIdade",fields:ki,emptyLabel:"Nenhum campo de saída definido. Adicione os campos que os próximos nós precisam consumir.",onAdd:()=>_o("mcpOutputSchema"),onUpdate:(c,S)=>Kc("mcpOutputSchema",c,S),onRemove:c=>Rs("mcpOutputSchema",c)}),e.jsxs("details",{className:"mcp-details mcp-json-details",children:[e.jsx("summary",{children:"JSON avançado"}),e.jsxs("div",{className:"mcp-schema-json-grid",children:[e.jsxs("label",{children:["Input schema JSON",e.jsx("textarea",{rows:8,value:n.component.mcpInputSchema||"{}",placeholder:'{"type":"object","properties":{"cpf":{"type":"string"}},"required":["cpf"]}',onChange:c=>L({mcpInputSchema:c.target.value})}),Xt&&e.jsx("span",{className:"field-error",children:Xt})]}),e.jsxs("label",{children:["Output schema JSON",e.jsx("textarea",{rows:8,value:n.component.mcpOutputSchema||"{}",placeholder:'{"type":"object","properties":{"maiorIdade":{"type":"boolean"},"nome":{"type":"string"}}}',onChange:c=>L({mcpOutputSchema:c.target.value})}),Gt&&e.jsx("span",{className:"field-error",children:Gt})]})]})]})]})]}),St==="api"&&e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"API externa"})}),e.jsx("div",{className:"filter-empty",children:"Informe a URL permitida. Se a LLM montar a request, o runtime aceita apenas URLs no mesmo host/base configurado e nunca inventa segredos."}),e.jsxs("div",{className:"mcp-output-hint",children:["Campos de entrada dizem quais dados a IA pode usar para montar argumentos, query ou body. Campos de saída dizem quais dados normalizados ela deve salvar em ",e.jsx("code",{children:`context.slots.${n.component.responseName||n.responseName||"mcp"}.output`})," para os próximos nós."]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Modo de chamada",e.jsxs("select",{value:n.component.mcpApiCallMode||"single",onChange:c=>{var W;const S=c.target.value,_=nv(((W=n.component)==null?void 0:W.mcpApiRequestsJson)||"[]");L({mcpApiCallMode:S,...S==="multi"&&_.length===0?{mcpApiRequestsJson:ov([Zf([],"cliente")])}:{}})},children:[e.jsx("option",{value:"single",children:"Uma API"}),e.jsx("option",{value:"multi",children:"Várias APIs"})]})]}),(n.component.mcpApiCallMode||"single")==="multi"&&e.jsxs("label",{children:["Execução",e.jsxs("select",{value:n.component.mcpApiExecutionMode||"sequential",onChange:c=>L({mcpApiExecutionMode:c.target.value}),children:[e.jsx("option",{value:"sequential",children:"Sequencial"}),e.jsx("option",{value:"parallel",children:"Paralela"})]})]})]}),(n.component.mcpApiCallMode||"single")==="multi"&&e.jsxs("div",{className:"mcp-api-multi-box",children:[e.jsxs("div",{className:"mcp-output-hint",children:["Sequencial: a próxima chamada pode usar ",e.jsx("code",{children:`{{context.slots.${((Oi=n.component)==null?void 0:Oi.responseName)||n.responseName||"mcp"}.resultsById.cliente.data.enderecoId}}`})]}),e.jsx(Gk,{requests:nv(n.component.mcpApiRequestsJson||"[]"),responseName:((Tl=n.component)==null?void 0:Tl.responseName)||n.responseName||"mcp",executionMode:n.component.mcpApiExecutionMode||"sequential",onChange:c=>L({mcpApiRequestsJson:ov(c)}),onUseExample:()=>{var c;return L({mcpApiRequestsJson:Yf(((c=n.component)==null?void 0:c.responseName)||n.responseName||"mcp")})}}),_r&&e.jsx("span",{className:"field-error",children:_r}),e.jsxs("details",{className:"mcp-details",children:[e.jsx("summary",{children:"Autenticação comum para todas as chamadas"}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Autenticação",e.jsxs("select",{value:n.component.mcpApiAuthMode||"none",onChange:c=>L({mcpApiAuthMode:c.target.value}),children:[e.jsx("option",{value:"none",children:"Sem autenticação"}),e.jsx("option",{value:"bearer",children:"Bearer token"}),e.jsx("option",{value:"header",children:"Header secreto"}),e.jsx("option",{value:"query",children:"Query param"})]})]}),(n.component.mcpApiAuthMode==="header"||n.component.mcpApiAuthMode==="bearer")&&e.jsxs("label",{children:["Header",e.jsx("input",{value:n.component.mcpApiAuthHeaderName||"Authorization",onChange:c=>L({mcpApiAuthHeaderName:c.target.value})})]}),n.component.mcpApiAuthMode==="query"&&e.jsxs("label",{children:["Query param",e.jsx("input",{value:n.component.mcpApiAuthQueryParam||"api_key",onChange:c=>L({mcpApiAuthQueryParam:c.target.value})})]}),(n.component.mcpApiAuthMode||"none")!=="none"&&e.jsxs("label",{children:["Segredo",e.jsx("input",{type:"password",value:n.component.mcpApiAuthSecret||"",onChange:c=>L({mcpApiAuthSecret:c.target.value})})]})]})]}),e.jsxs("details",{className:"mcp-details mcp-json-details",children:[e.jsx("summary",{children:"JSON avançado das chamadas"}),e.jsx("textarea",{rows:10,value:n.component.mcpApiRequestsJson||"[]",placeholder:Yf(n.component.responseName||n.responseName||"mcp"),onChange:c=>L({mcpApiRequestsJson:c.target.value})}),_r&&e.jsx("span",{className:"field-error",children:_r})]}),e.jsxs("div",{className:"filter-empty",children:["Cada item aceita ",e.jsx("code",{children:"id"}),", ",e.jsx("code",{children:"method"}),", ",e.jsx("code",{children:"url"}),", ",e.jsx("code",{children:"headers"}),", ",e.jsx("code",{children:"params"}),", ",e.jsx("code",{children:"body"})," e ",e.jsx("code",{children:"bodyType"}),". Em paralelo, as chamadas não dependem uma da outra; em sequencial, use o resultado anterior pelo id."]})]}),(n.component.mcpApiCallMode||"single")!=="multi"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Método padrão",e.jsxs("select",{value:n.component.mcpApiMethod||"POST",onChange:c=>L({mcpApiMethod:c.target.value}),children:[e.jsx("option",{value:"GET",children:"GET"}),e.jsx("option",{value:"POST",children:"POST"}),e.jsx("option",{value:"PUT",children:"PUT"}),e.jsx("option",{value:"PATCH",children:"PATCH"}),e.jsx("option",{value:"DELETE",children:"DELETE"})]})]}),e.jsxs("label",{children:["Autenticação",e.jsxs("select",{value:n.component.mcpApiAuthMode||"none",onChange:c=>L({mcpApiAuthMode:c.target.value}),children:[e.jsx("option",{value:"none",children:"Sem autenticação"}),e.jsx("option",{value:"bearer",children:"Bearer token"}),e.jsx("option",{value:"header",children:"Header secreto"}),e.jsx("option",{value:"query",children:"Query param"})]})]})]}),e.jsxs("label",{children:["URL/base permitida",e.jsx("input",{value:n.component.mcpApiBaseUrl||"",placeholder:"https://api.exemplo.com/clientes",onChange:c=>L({mcpApiBaseUrl:c.target.value})})]}),(n.component.mcpApiAuthMode||"none")!=="none"&&e.jsxs("div",{className:"inspector-grid-two",children:[(n.component.mcpApiAuthMode==="header"||n.component.mcpApiAuthMode==="bearer")&&e.jsxs("label",{children:["Header",e.jsx("input",{value:n.component.mcpApiAuthHeaderName||"Authorization",onChange:c=>L({mcpApiAuthHeaderName:c.target.value})})]}),n.component.mcpApiAuthMode==="query"&&e.jsxs("label",{children:["Query param",e.jsx("input",{value:n.component.mcpApiAuthQueryParam||"api_key",onChange:c=>L({mcpApiAuthQueryParam:c.target.value})})]}),e.jsxs("label",{children:["Segredo",e.jsx("input",{type:"password",value:n.component.mcpApiAuthSecret||"",onChange:c=>L({mcpApiAuthSecret:c.target.value})})]})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Headers JSON",e.jsx("textarea",{rows:6,value:n.component.mcpApiHeadersJson||"{}",placeholder:'{"x-tenant":"{{context.agentId}}"}',onChange:c=>L({mcpApiHeadersJson:c.target.value})}),Ci&&e.jsx("span",{className:"field-error",children:Ci})]}),e.jsxs("label",{children:["Query JSON",e.jsx("textarea",{rows:6,value:n.component.mcpApiQueryJson||"{}",placeholder:'{"cpf":"{{context.slots.cpf}}"}',onChange:c=>L({mcpApiQueryJson:c.target.value})}),pl&&e.jsx("span",{className:"field-error",children:pl})]})]}),e.jsxs("label",{children:["Body JSON padrão",e.jsx("textarea",{rows:7,value:n.component.mcpApiBodyJson||"{}",placeholder:'{"cpf":"{{context.slots.cpf}}","origem":"canvas-flow"}',onChange:c=>L({mcpApiBodyJson:c.target.value})}),Pr&&e.jsx("span",{className:"field-error",children:Pr})]})]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.component.mcpApiExecute!==!1,onChange:c=>L({mcpApiExecute:c.target.checked})}),e.jsx("span",{children:"Executar chamada HTTP"})]})]}),St==="external"&&e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Servidor MCP externo"})}),e.jsx("div",{className:"filter-empty",children:"Conecta em um servidor MCP remoto e executa tools, resources ou prompts. Streamable HTTP e SSE aceitam headers, OAuth e AWS SigV4; WebSocket deve usar auth por query."}),e.jsxs("div",{className:"mcp-remote-preset-picker",children:[e.jsxs("label",{children:["MCP remoto pre-configurado",e.jsxs("select",{value:"",onChange:c=>li(c.target.value),children:[e.jsx("option",{value:"",children:"Selecionar preset..."}),sh.map(c=>e.jsx("option",{value:c.id,children:c.label},c.id))]})]}),Yn&&e.jsxs("div",{className:"mcp-remote-preset-hint",children:[e.jsx("strong",{children:Yn.label}),e.jsx("span",{children:Yn.description}),e.jsxs("div",{className:"mcp-remote-preset-actions",children:[e.jsxs("button",{type:"button",onClick:()=>gr(Yn.id),children:[e.jsx(cj,{size:14}),"Ver permissoes e configuracao"]}),e.jsx("a",{href:Yn.docsUrl,target:"_blank",rel:"noreferrer",children:"Abrir documentacao oficial"})]})]}),e.jsx("span",{className:"field-hint",children:"O preset preenche a conexao. Use Listar tools abaixo e selecione a operacao remota desejada."})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Transporte",e.jsxs("select",{value:n.component.mcpExternalTransport||"streamable_http",onChange:c=>L({mcpExternalTransport:c.target.value}),children:[e.jsx("option",{value:"streamable_http",children:"Streamable HTTP"}),e.jsx("option",{value:"sse",children:"SSE legado"}),e.jsx("option",{value:"websocket",children:"WebSocket"})]})]}),e.jsxs("label",{children:["Operação",e.jsxs("select",{value:n.component.mcpExternalOperation||"callTool",onChange:c=>L({mcpExternalOperation:c.target.value}),children:[e.jsx("option",{value:"callTool",children:"Chamar tool"}),e.jsx("option",{value:"listTools",children:"Listar tools"}),e.jsx("option",{value:"readResource",children:"Ler resource"}),e.jsx("option",{value:"listResources",children:"Listar resources"}),e.jsx("option",{value:"getPrompt",children:"Buscar prompt"}),e.jsx("option",{value:"listPrompts",children:"Listar prompts"}),e.jsx("option",{value:"ping",children:"Ping"})]})]})]}),e.jsxs("label",{children:["URL do servidor MCP",e.jsx("input",{value:n.component.mcpExternalUrl||"",placeholder:"https://mcp.exemplo.com/mcp",onChange:c=>L({mcpExternalUrl:c.target.value})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Autenticação",e.jsxs("select",{value:n.component.mcpExternalAuthMode||"none",onChange:c=>L({mcpExternalAuthMode:c.target.value}),children:[e.jsx("option",{value:"none",children:"Sem autenticação"}),e.jsx("option",{value:"bearer",children:"Bearer token"}),e.jsx("option",{value:"header",children:"Header secreto"}),e.jsx("option",{value:"query",children:"Query param"}),e.jsx("option",{value:"oauth",children:"OAuth MCP"}),e.jsx("option",{value:"aws_sigv4",children:"AWS IAM SigV4 (backend)"})]})]}),e.jsxs("label",{children:["Timeout",e.jsx("input",{type:"number",min:1e3,max:3e5,step:1e3,value:n.component.mcpExternalTimeoutMs??3e4,onChange:c=>L({mcpExternalTimeoutMs:Number(c.target.value)})})]})]}),!["none","oauth","aws_sigv4"].includes(n.component.mcpExternalAuthMode||"none")&&e.jsxs("div",{className:"inspector-grid-two",children:[(n.component.mcpExternalAuthMode==="header"||n.component.mcpExternalAuthMode==="bearer")&&e.jsxs("label",{children:["Header",e.jsx("input",{value:n.component.mcpExternalAuthHeaderName||"Authorization",onChange:c=>L({mcpExternalAuthHeaderName:c.target.value})})]}),n.component.mcpExternalAuthMode==="query"&&e.jsxs("label",{children:["Query param",e.jsx("input",{value:n.component.mcpExternalAuthQueryParam||"api_key",onChange:c=>L({mcpExternalAuthQueryParam:c.target.value})})]}),e.jsxs("label",{children:["Segredo",e.jsx("input",{type:"password",value:n.component.mcpExternalAuthSecret||"",onChange:c=>L({mcpExternalAuthSecret:c.target.value})})]})]}),mo==="aws_sigv4"&&e.jsx("div",{className:"mcp-output-hint",children:"O backend assina cada chamada com AWS SigV4 usando a cadeia padrao de credenciais AWS. Configure IAM com privilegio minimo e use um node de aprovacao antes de tools que alteram infraestrutura."}),mo==="oauth"&&e.jsxs("div",{className:"mcp-output-hint mcp-oauth-panel",children:[e.jsxs("label",{children:["Escopo da conexao OAuth",e.jsxs("select",{value:ho,onChange:c=>L({mcpExternalOAuthConnectionScope:c.target.value}),children:[e.jsx("option",{value:"user",children:"Individual por usuario Canvas Flow"}),e.jsx("option",{value:"agent",children:"Compartilhada no agente"})]})]}),e.jsxs("div",{className:"mcp-oauth-status",children:[e.jsx("strong",{children:Re!=null&&Re.connected?"OAuth conectado":pn?"OAuth aguardando autorizacao":(Re==null?void 0:Re.status)==="error"?"OAuth com erro":"OAuth nao conectado"}),e.jsxs("span",{children:[ho==="user"?`A conexao fica salva somente para o usuario Canvas Flow autenticado, no agente ${We} e nesta URL MCP.`:`A conexao fica compartilhada com todos os operadores do agente ${We} para esta URL MCP.`," ","Os tokens nao entram no JSON do flow."]}),ho==="user"&&e.jsxs("span",{children:["O modo individual exige login Canvas Flow habilitado com ",e.jsx("code",{children:"CANVAS_FLOW_LOGIN=true"}),"."]}),((Fa=Yn==null?void 0:Yn.oauthScopes)==null?void 0:Fa.length)&&e.jsxs("span",{children:["Scopes solicitados ao reconectar: ",e.jsx("code",{children:Yn.oauthScopes.join(" ")})]}),Ka==="websocket"&&e.jsx("span",{className:"field-error",children:"OAuth MCP esta disponivel apenas em Streamable HTTP ou SSE neste runtime."}),pn&&e.jsx("span",{className:"field-error",children:"Conclua Abrir autorizacao antes de executar o node ou listar tools."}),(Re==null?void 0:Re.connected)&&Re.authenticatedAt&&e.jsxs("span",{children:["Autenticado em ",new Date(Re.authenticatedAt).toLocaleString()]}),(Re==null?void 0:Re.connected)&&Re.expiresAt&&e.jsxs("span",{children:["Token expira em ",new Date(Re.expiresAt).toLocaleString()]}),Te&&e.jsx("span",{children:Te})]}),e.jsxs("div",{className:"mcp-oauth-actions",children:[e.jsxs("button",{type:"button",className:"primary-button",onClick:()=>void da(),disabled:!Xn||kt||Ka==="websocket",children:[kt?e.jsx(Ut,{size:14,className:"spin"}):e.jsx(kp,{size:14}),Re!=null&&Re.connected?"Reconectar OAuth":"Conectar OAuth"]}),e.jsxs("button",{type:"button",onClick:()=>void $c(),disabled:!Xn||kt||Ka==="websocket",children:[e.jsx(kp,{size:14}),"Reconectar do zero"]}),pn&&e.jsx("button",{type:"button",onClick:()=>zt(pn),disabled:Ka==="websocket",children:"Abrir autorizacao"}),(Re==null?void 0:Re.connected)&&e.jsx("button",{type:"button",onClick:()=>void Hl(),disabled:kt,children:"Desconectar"})]})]}),e.jsxs("label",{children:["Headers JSON",e.jsx("textarea",{rows:5,value:n.component.mcpExternalHeadersJson||"{}",placeholder:'{"x-tenant":"{{context.agentId}}"}',onChange:c=>L({mcpExternalHeadersJson:c.target.value})}),Ea&&e.jsx("span",{className:"field-error",children:Ea})]}),e.jsxs("div",{className:"mcp-tool-discovery",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:"Descobrir tools agora"}),e.jsxs("button",{type:"button",onClick:()=>void ci(),disabled:!Xn||Wn||!ri,children:[Wn?e.jsx(Ut,{size:14,className:"spin"}):e.jsx(kp,{size:14}),"Listar tools"]})]}),e.jsxs("div",{className:"filter-empty",children:["Consulta ",e.jsx("code",{children:"tools/list"})," durante a configuracao. Ao selecionar uma tool, o Canvas copia o input schema oficial e preenche os argumentos com variaveis de ",e.jsx("code",{children:"context.slots"}),"."]}),sa.length>0&&e.jsxs("label",{children:["Tool encontrada",e.jsxs("select",{value:sa.some(c=>{var S;return c.name===((S=n.component)==null?void 0:S.mcpExternalToolName)})?(io=n.component)==null?void 0:io.mcpExternalToolName:"",onChange:c=>Vu(c.target.value),children:[e.jsx("option",{value:"",children:"Selecionar tool..."}),sa.map(c=>e.jsx("option",{value:c.name,children:c.title||c.name},c.name))]})]}),ia&&e.jsx("span",{className:"field-hint",children:ia}),fr&&e.jsx("span",{className:"field-error",children:fr})]}),(n.component.mcpExternalOperation||"callTool")==="callTool"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Nome da tool",e.jsx("input",{value:n.component.mcpExternalToolName||"",placeholder:"buscar_cliente",onChange:c=>L({mcpExternalToolName:c.target.value})})]}),e.jsxs("label",{children:["Argumentos JSON",e.jsx("textarea",{rows:7,value:n.component.mcpExternalArgumentsJson||"{}",placeholder:'{"cpf":"{{context.slots.cpf}}"}',onChange:c=>L({mcpExternalArgumentsJson:c.target.value})}),ml&&e.jsx("span",{className:"field-error",children:ml})]}),Os.length>0&&e.jsxs("div",{className:"mcp-argument-contract",children:[e.jsxs("div",{className:"mcp-argument-contract-header",children:[e.jsx("strong",{children:"Tipagem da entrada"}),e.jsx("span",{children:"schema oficial da tool"})]}),e.jsx("div",{className:"mcp-argument-contract-list",children:Os.map(c=>e.jsxs("div",{className:"mcp-argument-contract-row",title:c.description||void 0,children:[e.jsx("code",{children:c.path}),e.jsx("span",{className:"mcp-type-badge",children:c.type}),e.jsx("span",{className:c.required?"mcp-required-badge":"mcp-optional-badge",children:c.required?"obrigatorio":"opcional"})]},c.path))}),e.jsxs("span",{className:"field-hint",children:["Arrays aparecem com colchetes no JSON preenchido. Valores vindos de ",e.jsx("code",{children:"context.slots"})," sao convertidos conforme essa tipagem."]})]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.component.mcpExternalUseLlmArguments!==!1,onChange:c=>L({mcpExternalUseLlmArguments:c.target.checked})}),e.jsx("span",{children:"Permitir que a LLM monte os argumentos da tool usando o schema da tool"})]}),e.jsx("div",{className:"filter-empty",children:"Desmarque para enviar somente o JSON configurado acima. Isso evita uma chamada de LLM quando o cliente ja possui os dados necessarios."})]}),(n.component.mcpExternalOperation||"callTool")==="readResource"&&e.jsxs("label",{children:["URI do resource",e.jsx("input",{value:n.component.mcpExternalResourceUri||"",placeholder:"file:///docs/contrato.md",onChange:c=>L({mcpExternalResourceUri:c.target.value})})]}),(n.component.mcpExternalOperation||"callTool")==="getPrompt"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Nome do prompt",e.jsx("input",{value:n.component.mcpExternalPromptName||"",placeholder:"resumo_cliente",onChange:c=>L({mcpExternalPromptName:c.target.value})})]}),e.jsxs("label",{children:["Argumentos do prompt JSON",e.jsx("textarea",{rows:6,value:n.component.mcpExternalPromptArgumentsJson||"{}",placeholder:'{"clienteId":"{{context.slots.clienteId}}"}',onChange:c=>L({mcpExternalPromptArgumentsJson:c.target.value})}),Ku&&e.jsx("span",{className:"field-error",children:Ku})]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.component.mcpExternalUseLlmArguments!==!1,onChange:c=>L({mcpExternalUseLlmArguments:c.target.checked})}),e.jsx("span",{children:"Permitir que a LLM monte os argumentos do prompt"})]})]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.component.mcpExternalMapResultWithLlm!==!1,onChange:c=>L({mcpExternalMapResultWithLlm:c.target.checked})}),e.jsx("span",{children:"Mapear resultado para o output schema quando o servidor não retornar structuredContent"})]}),e.jsx("div",{className:"filter-empty",children:"Desmarque tambem o mapeamento para evitar LLM na resposta. O retorno bruto continua disponivel no slot do node."})]})]}),((Ri=n.component)==null?void 0:Ri.type)==="webhook"&&e.jsxs("div",{className:"rich-message-editor",children:[e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Webhook"})}),e.jsxs("label",{children:["Modo",e.jsxs("select",{value:Yo,onChange:c=>L({webhookMode:c.target.value}),children:[e.jsx("option",{value:"inbound",children:"Entrada: receber dados"}),e.jsx("option",{value:"outbound",children:"Saída: postar dados"}),e.jsx("option",{value:"listener",children:"Ouvinte global: postar interações"})]})]}),e.jsxs("label",{children:["responseName",e.jsx("input",{value:n.component.responseName||n.responseName||"webhook",onChange:c=>{const S=c.target.value;tt({responseName:S,api:n.api?{...n.api,responseName:S}:n.api,component:{...n.component,responseName:S}})}})]})]}),Yo==="inbound"&&e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Entrada HTTP"})}),e.jsxs("label",{children:["Identificador da URL",e.jsx("input",{value:_s,onChange:c=>L({webhookId:c.target.value.trim()})})]}),e.jsxs("label",{children:["URL do webhook",e.jsxs("div",{className:"copy-field",children:[e.jsx("input",{value:ga,readOnly:!0}),e.jsx("button",{type:"button",onClick:()=>navigator.clipboard.writeText(ga),children:e.jsx(nn,{size:14})})]})]}),!l&&e.jsxs("div",{className:"filter-empty",children:["Salve o fluxo para trocar ",e.jsx("code",{children:"<FLOW_ID_SALVO>"})," pelo ID real da URL."]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Autenticação",e.jsxs("select",{value:Io,onChange:c=>L({webhookAuthMode:c.target.value}),children:[e.jsx("option",{value:"none",children:"Sem autenticação"}),e.jsx("option",{value:"bearer",children:"Bearer token"}),e.jsx("option",{value:"header",children:"Header secreto"}),e.jsx("option",{value:"query",children:"Query param"})]})]}),e.jsxs("label",{children:["Iniciar em",e.jsxs("select",{value:n.component.webhookStartMode||"node",onChange:c=>L({webhookStartMode:c.target.value}),children:[e.jsx("option",{value:"node",children:"Este nó"}),e.jsx("option",{value:"flow",children:"Início do fluxo"})]})]})]}),e.jsxs("label",{children:["Resposta do webhook",e.jsxs("select",{value:zn,onChange:c=>L({webhookResponseMode:c.target.value}),children:[e.jsx("option",{value:"sync",children:"Síncrona: esperar o fluxo terminar"}),e.jsx("option",{value:"async_job",children:"Assíncrona: retornar apenas jobId"}),e.jsx("option",{value:"async",children:"Assíncrona: retornar jobId e chamar URL de retorno"})]})]}),zn==="async_job"&&e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Retorno por jobId"})}),e.jsxs("div",{className:"filter-empty",children:["A chamada inicial retorna um ",e.jsx("code",{children:"jobId"})," e não envia callback. Com SQS habilitado, consulte depois em ",e.jsxs("code",{children:["GET ",zc,"/api/canvas-flow/sqs/jobs/<jobId>"]}),"."]}),e.jsxs("div",{className:"filter-empty",children:["Se o job ainda não terminou, a consulta retorna ",e.jsx("code",{children:'status: "queued"'})," ou ",e.jsx("code",{children:'status: "running"'})," sem ",e.jsx("code",{children:"result"}),". Consulte novamente com backoff até receber ",e.jsx("code",{children:'status: "completed"'})," ou ",e.jsx("code",{children:'status: "failed"'}),"."]}),e.jsx("div",{className:"filter-empty",children:"Use este modo quando o sistema externo recupera os resultados em lote. Configure o TTL dos jobs para maior que a janela de recuperação."})]}),zn==="async"&&e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Retorno assíncrono"})}),e.jsxs("label",{children:["URL de retorno",e.jsx("input",{value:n.component.webhookCallbackUrl||"",placeholder:"https://meusistema.com/canvas-flow/callback",onChange:c=>L({webhookCallbackUrl:c.target.value})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Auth do retorno",e.jsxs("select",{value:wi,onChange:c=>L({webhookCallbackAuthMode:c.target.value}),children:[e.jsx("option",{value:"none",children:"Sem autenticação"}),e.jsx("option",{value:"bearer",children:"Bearer token"}),e.jsx("option",{value:"header",children:"Header secreto"})]})]}),wi==="header"&&e.jsxs("label",{children:["Header",e.jsx("input",{value:Zl,onChange:c=>L({webhookCallbackHeaderName:c.target.value})})]})]}),wi!=="none"&&e.jsxs("label",{children:["Segredo do retorno",e.jsx("input",{type:"password",value:n.component.webhookCallbackSecret||"",placeholder:"Segredo enviado no callback",onChange:c=>L({webhookCallbackSecret:c.target.value})})]}),e.jsxs("div",{className:"filter-empty",children:["A chamada inicial retorna um ",e.jsx("code",{children:"jobId"}),". Quando o fluxo terminar, o Canvas Flow faz ",e.jsx("code",{children:"POST"})," nesta URL com o resultado."]}),e.jsxs("div",{className:"filter-empty",children:["Com SQS habilitado, o resultado também pode ser consultado por ",e.jsxs("code",{children:["GET ",zc,"/api/canvas-flow/sqs/jobs/<jobId>"]}),"."]}),e.jsxs("div",{className:"filter-empty",children:["Enquanto não estiver pronto, esse endpoint retorna ",e.jsx("code",{children:"queued"})," ou ",e.jsx("code",{children:"running"})," sem ",e.jsx("code",{children:"result"}),". Quando terminar, retorna ",e.jsx("code",{children:"completed"})," com ",e.jsx("code",{children:"result"}),", ou ",e.jsx("code",{children:"failed"})," com ",e.jsx("code",{children:"error"}),"."]})]}),Io!=="none"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Segredo",e.jsx("input",{type:"password",value:n.component.webhookSecret||"",placeholder:"Segredo usado pelo sistema externo",onChange:c=>L({webhookSecret:c.target.value})})]}),Io==="header"&&e.jsxs("label",{children:["Nome do header",e.jsx("input",{value:n.component.webhookHeaderName||"x-canvas-flow-webhook-secret",onChange:c=>L({webhookHeaderName:c.target.value})})]}),Io==="query"&&e.jsxs("label",{children:["Query param",e.jsx("input",{value:n.component.webhookQueryParam||"secret",onChange:c=>L({webhookQueryParam:c.target.value})})]}),!n.component.webhookSecret&&e.jsx("div",{className:"filter-empty",children:"Configure um segredo para o endpoint aceitar chamadas externas neste modo."})]}),Io==="none"&&e.jsx("div",{className:"filter-empty",children:"Sem autenticação deixa esta URL pública. Use apenas quando o endpoint estiver protegido por outra camada."}),e.jsxs("div",{className:"filter-empty",children:["O payload recebido fica em ",e.jsxs("code",{children:["context.slots.",n.component.responseName||n.responseName||"webhook"]})," e também em ",e.jsx("code",{children:"context.slots.webhook"}),"."]}),e.jsxs("div",{className:"api-doc-section webhook-contract",children:[e.jsxs("div",{className:"api-doc-section-header",children:[e.jsx("strong",{children:"Contrato de entrada"}),e.jsxs("button",{type:"button",onClick:()=>navigator.clipboard.writeText(tc),children:[e.jsx(nn,{size:14}),"Copiar cURL"]})]}),e.jsxs("div",{className:"api-endpoint",children:[e.jsx("span",{children:"Método"}),e.jsx("code",{children:"POST"})]}),e.jsxs("div",{className:"api-endpoint",children:[e.jsx("span",{children:"URL"}),e.jsx("code",{children:ga})]}),e.jsxs("div",{className:"filter-empty",children:["Envie ",e.jsx("code",{children:"Content-Type: application/json"}),". O campo ",e.jsx("code",{children:"text"})," vira a entrada principal; ",e.jsx("code",{children:"slots"})," é mesclado em ",e.jsx("code",{children:"context.slots"}),". Para continuar uma conversa, reenvie o ",e.jsx("code",{children:"conversationId"})," e o ",e.jsx("code",{children:"currentStepId"})," retornados na chamada anterior. Sem ",e.jsx("code",{children:"currentStepId"}),", o ",e.jsx("code",{children:"text"})," abre a interação, mas não responde automaticamente inputs que aparecerem depois no mesmo fluxo."]}),Io==="bearer"&&e.jsxs("div",{className:"api-endpoint",children:[e.jsx("span",{children:"Auth"}),e.jsx("code",{children:"Authorization: Bearer <SEGREDO>"})]}),Io==="header"&&e.jsxs("div",{className:"api-endpoint",children:[e.jsx("span",{children:"Auth"}),e.jsxs("code",{children:[ji,": <SEGREDO>"]})]}),Io==="query"&&e.jsxs("div",{className:"api-endpoint",children:[e.jsx("span",{children:"Auth"}),e.jsxs("code",{children:["?",bi,"=<SEGREDO>"]})]}),e.jsxs("label",{children:["Body JSON esperado",e.jsx("textarea",{rows:7,value:ec,readOnly:!0})]}),e.jsxs("label",{children:["Exemplo cURL",e.jsx("textarea",{rows:9,value:tc,readOnly:!0})]}),(zn==="async"||zn==="async_job")&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Resposta imediata no modo assíncrono",e.jsx("textarea",{rows:7,value:Gc,readOnly:!0})]}),zn==="async"&&e.jsxs("label",{children:["POST enviado para a URL de retorno",e.jsx("textarea",{rows:10,value:nc,readOnly:!0})]})]})]})]}),Yo==="outbound"&&e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Saída HTTP"})}),e.jsxs("div",{className:"filter-empty",children:["Configure uma ou mais chamadas para postar dados do fluxo. Use templates como ",e.jsx("code",{children:"{{context.slots.cpf}}"})," no body, headers ou URL."]}),e.jsx(Xm,{requests:((vc=n.api)==null?void 0:vc.requests)||[],onChange:c=>{var S,_;return tt({api:{responseName:((S=n.component)==null?void 0:S.responseName)||n.responseName||"webhook",requests:c,generation:(_=n.api)==null?void 0:_.generation}})}})]}),Yo==="listener"&&e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Ouvinte global"})}),e.jsx("div",{className:"filter-empty",children:"Este webhook não precisa estar conectado em nenhum nó. A cada interação do cliente, o Canvas Flow dispara as chamadas abaixo e mantém o fluxo conversacional seguindo pelo caminho normal."}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:Ni,onChange:c=>L({webhookListenerFireAndForget:c.target.checked})}),"Não bloquear a resposta do usuário enquanto posta no webhook"]}),e.jsxs("div",{className:"filter-empty",children:["Campos úteis para montar o body: ",e.jsx("code",{children:"{{context.slots.webhookEvent}}"}),", ",e.jsx("code",{children:"{{context.input}}"}),", ",e.jsx("code",{children:"{{context.conversationId}}"}),", ",e.jsx("code",{children:"{{context.currentStepId}}"})," e ",e.jsx("code",{children:"{{context.slots}}"}),"."]}),e.jsx(Xm,{requests:((yc=n.api)==null?void 0:yc.requests)||[],onChange:c=>{var S,_;return tt({api:{responseName:((S=n.component)==null?void 0:S.responseName)||n.responseName||"webhook",requests:c,generation:(_=n.api)==null?void 0:_.generation}})}})]})]}),((tu=n.component)==null?void 0:tu.type)==="rag"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Composicao do RAG"})}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["LLM resposta",e.jsxs("select",{value:n.component.ragLlmProvider||"auto",onChange:c=>{const S=c.target.value;L({ragLlmProvider:S,ragLlmModel:S==="auto"?"":_u(S)})},children:[e.jsx("option",{value:"auto",children:"Auto/global"}),e.jsx("option",{value:"openai",children:"OpenAI"}),e.jsx("option",{value:"azure_openai",children:"Azure OpenAI"}),e.jsx("option",{value:"gemini",children:"Gemini"}),e.jsx("option",{value:"claude",children:"Claude"}),e.jsx("option",{value:"grok",children:"Grok"}),e.jsx("option",{value:"bedrock",children:"Bedrock"})]})]}),e.jsxs("label",{children:["Embedding",e.jsxs("select",{value:n.component.ragEmbeddingProvider||"auto",onChange:c=>L({ragEmbeddingProvider:c.target.value}),children:[e.jsx("option",{value:"auto",children:"Auto/global"}),e.jsx("option",{value:"openai",children:"OpenAI"}),e.jsx("option",{value:"azure_openai",children:"Azure OpenAI"})]})]}),e.jsxs("label",{children:["Busca vetorial",e.jsxs("select",{value:n.component.ragSearchProvider||n.component.ragProvider||"auto",onChange:c=>{const S=c.target.value;L({ragSearchProvider:S,ragProvider:S==="hybrid"?"auto":S})},children:[e.jsx("option",{value:"auto",children:"Auto"}),e.jsx("option",{value:"milvus",children:"Milvus"}),e.jsx("option",{value:"azure_search",children:"Azure AI Search"}),e.jsx("option",{value:"hybrid",children:"Milvus + Azure AI Search"})]})]}),e.jsxs("label",{children:["Modelo do chat",e.jsxs("select",{value:n.component.ragLlmModel||"",onChange:c=>L({ragLlmModel:c.target.value}),children:[e.jsxs("option",{value:"",children:["Usar modelo do fluxo (",t.model,")"]}),Xo(n.component.ragLlmProvider||"auto",n.component.ragLlmModel).map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))]})]}),e.jsxs("label",{children:["Modelo de embedding",e.jsxs("select",{value:n.component.ragEmbeddingModel||"",onChange:c=>L({ragEmbeddingModel:c.target.value}),children:[e.jsx("option",{value:"",children:"Usar default do provider"}),Sd(qx,n.component.ragEmbeddingModel).map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))]})]})]}),e.jsx("div",{className:"filter-empty",children:"Azure AI Search funciona como motor de busca. Azure Blob Storage nao busca vetores direto aqui: use um componente Azure Blob Storage antes e informe Docs recuperados, ou indexe o conteudo no Azure AI Search/Milvus."})]}),e.jsx("div",{className:"inspector-grid-two",children:e.jsxs("label",{children:["Collection / Index",e.jsx("input",{value:n.component.collectionName||"",placeholder:"canvas_flow_docs ou azure-search-index",onChange:c=>tt({component:{...n.component,collectionName:c.target.value}})})]})}),Wu(),e.jsxs("label",{children:["K",e.jsx("input",{type:"number",min:0,value:n.component.k??8,onChange:c=>L({k:Number(c.target.value)||0})})]}),e.jsxs("label",{children:["Turnos de memoria",e.jsx("input",{type:"number",min:0,value:n.component.turnHistoricMessages??t.turnHistoricMessages??20,onChange:c=>L({turnHistoricMessages:Number(c.target.value)||0})})]}),e.jsxs("label",{children:["Prompt RAG",e.jsx("textarea",{rows:5,value:n.component.prompt||"",onChange:c=>L({prompt:c.target.value})})]}),e.jsxs("label",{children:["Texto de busca no RAG",e.jsx("input",{value:n.component.queryTemplate||"",onChange:c=>L({queryTemplate:c.target.value})})]}),e.jsxs("label",{children:["Docs recuperados",e.jsx("input",{value:n.component.ragDocsPath||"",placeholder:"context.slots.milvus.results ou context.slots.azureSearch.results",onChange:c=>L({ragDocsPath:c.target.value})})]}),e.jsx(ev,{rules:xi,onChange:c=>L({ragConditionalRules:c})}),e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Filtro extraFields"})}),e.jsx(Zx,{rules:dl,draft:w,emptyText:"Sem filtro global. Adicione campos como ano, tipo ou categoria.",onDraftChange:N,onChange:Ir})]}),e.jsxs("div",{className:"filter-section",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:"Filtros por rodada"}),e.jsxs("button",{type:"button",onClick:()=>L({extraFieldsFilterPerRound:[...fa,{}]}),children:[e.jsx(un,{size:14}),"Rodada"]})]}),fa.length===0&&e.jsx("div",{className:"filter-empty",children:"Sem rodadas. Use quando quiser tentar filtros em ordem."}),e.jsx("div",{className:"round-filter-list",children:fa.map((c,S)=>e.jsxs("div",{className:"round-filter-card",children:[e.jsxs("div",{className:"round-filter-header",children:[e.jsxs("strong",{children:["Rodada ",S+1]}),e.jsxs("label",{children:["Limite",e.jsx("input",{type:"number",min:0,value:nr[S]??"",placeholder:"Auto",onChange:_=>{const W=[...nr];W[S]=_.target.value===""?null:Number(_.target.value)||0,L({extraFieldsFilterPerRoundLimits:W})}})]}),e.jsx("button",{type:"button",className:"filter-icon-button","aria-label":"Remover rodada",title:"Remover rodada",onClick:()=>{L({extraFieldsFilterPerRound:fa.filter((_,W)=>W!==S),extraFieldsFilterPerRoundLimits:nr.filter((_,W)=>W!==S)})},children:e.jsx(Nt,{size:14})})]}),e.jsx(Ki,{filter:c||{},draft:C[S]||Jr,emptyText:"Esta rodada ainda não tem filtros.",onDraftChange:_=>E(W=>({...W,[S]:_})),onChange:_=>{const W=[...fa];W[S]=_,L({extraFieldsFilterPerRound:W})}})]},S))})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Order by extraFields",e.jsx("input",{value:((nu=n.component.extraFieldsFilterOrderBy)==null?void 0:nu[0])||"",placeholder:"ano",onChange:c=>{const S=c.target.value.trim();L({extraFieldsFilterOrderBy:S?[S]:[]})}})]}),e.jsxs("label",{children:["Ordem",e.jsxs("select",{value:n.component.order||"desc",onChange:c=>L({order:c.target.value}),children:[e.jsx("option",{value:"desc",children:"desc"}),e.jsx("option",{value:"asc",children:"asc"})]})]})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["metadataOrderScanPageSize",e.jsx("input",{type:"number",min:0,value:n.component.metadataOrderScanPageSize??"",placeholder:"1000",onChange:c=>L({metadataOrderScanPageSize:c.target.value===""?null:Number(c.target.value)||0})})]}),e.jsxs("label",{children:["metadataOrderMaxScan",e.jsx("input",{type:"number",min:0,value:n.component.metadataOrderMaxScan??"",placeholder:"20000",onChange:c=>L({metadataOrderMaxScan:c.target.value===""?null:Number(c.target.value)||0})})]})]}),e.jsxs("label",{children:["Filtro avancado Milvus",e.jsx("input",{value:n.component.filterExpr||"",placeholder:'text like "%contrato%"',onChange:c=>L({filterExpr:c.target.value})})]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.component.roundStopFind!==!1,onChange:c=>L({roundStopFind:c.target.checked})}),e.jsx("span",{children:"Parar na primeira rodada com resultado"})]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.component.roundMixHalf===!0,onChange:c=>L({roundMixHalf:c.target.checked})}),e.jsx("span",{children:"Misturar resultados entre rodadas"})]})]}),(((ou=n.component)==null?void 0:ou.type)==="openaiGen"||((au=n.component)==null?void 0:au.type)==="azureOpenAI")&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"filter-empty",children:[n.component.type==="azureOpenAI"?"Este componente gera a resposta com Azure OpenAI.":"Este componente e um Agente: escolha o motor LLM, defina o papel e selecione quais rules, skills, subagents e MCP ele pode enxergar."," ","Para usar documentos, conecte antes Arquivos, Milvus ou Azure AI Search e informe o caminho dos resultados."]}),e.jsxs("div",{className:"filter-section agent-llm-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Motor LLM"})}),e.jsxs("div",{className:"filter-grid two-columns",children:[n.component.type==="openaiGen"&&e.jsxs("label",{children:["Provider",e.jsxs("select",{value:n.component.ragLlmProvider||"auto",onChange:c=>{const S=c.target.value;L({ragLlmProvider:S,ragLlmModel:S==="auto"?"":_u(S)})},children:[e.jsxs("option",{value:"auto",children:["Usar provider do fluxo (",Ms,")"]}),e.jsx("option",{value:"openai",children:"OpenAI"}),e.jsx("option",{value:"azure_openai",children:"Azure OpenAI"}),e.jsx("option",{value:"gemini",children:"Gemini"}),e.jsx("option",{value:"claude",children:"Claude"}),e.jsx("option",{value:"grok",children:"Grok"}),e.jsx("option",{value:"bedrock",children:"Bedrock"})]})]}),e.jsxs("label",{children:[n.component.type==="azureOpenAI"?"Deployment/modelo":"Modelo",e.jsxs("select",{value:n.component.ragLlmModel||"",onChange:c=>L({ragLlmModel:c.target.value}),children:[e.jsxs("option",{value:"",children:["Usar modelo do fluxo (",t.model,")"]}),Xo(n.component.ragLlmProvider||"auto",n.component.ragLlmModel).map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))]})]})]})]}),n.component.type==="openaiGen"&&e.jsxs("div",{className:"filter-section agent-execution-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Execucao do agente"})}),e.jsxs("div",{className:"filter-grid two-columns compact",children:[e.jsxs("label",{children:["Modo",e.jsxs("select",{value:n.component.agentExecutionMode||"hybrid",onChange:c=>L({agentExecutionMode:c.target.value}),children:[e.jsx("option",{value:"flow",children:"Fluxo conectado"}),e.jsx("option",{value:"auto_tools",children:"Auto tools"}),e.jsx("option",{value:"hybrid",children:"Hibrido"})]})]}),e.jsxs("label",{children:["Limite de chamadas",e.jsx("input",{type:"number",min:1,max:10,value:n.component.agentMaxToolCalls??1,onChange:c=>L({agentMaxToolCalls:Number(c.target.value)||1})})]})]}),e.jsx("span",{className:"field-hint",children:"Fluxo conectado segue as linhas do canvas. Auto tools deixa o agente chamar skills, subagents ou MCP. Hibrido chama tools e depois continua pelo canvas."}),(Pt==="orchestrator"||Pt==="subagent")&&ts!=="flow"&&e.jsx("div",{className:"filter-empty warning",children:"Modo agentico usa o manifesto visivel para chamar skills, subagents e MCP sob demanda. Use edges apenas para o caminho conversacional do canvas, como Agente -> Mensagem -> Pergunta. Nao conecte orquestrador -> skill nem skill/subagent -> MCP para representar dependencia agentica; isso vira execucao de fluxo conectado."}),Rn.length>0&&e.jsxs("span",{className:"field-error",children:["Ligacoes agenticas por manifesto: ",di,Rn.length>5?"...":"",". Elas mantem o mesmo layout da conexao, ficam verdes no canvas e nao fazem jump de fluxo."]}),(Pt==="orchestrator"||Pt==="subagent")&&n.component.agentExecutionMode==="flow"&&e.jsx("span",{className:"field-error",children:"Para delegar para skills/subagents selecionados, use Auto tools ou Hibrido."})]}),n.component.type==="openaiGen"&&e.jsx(e.Fragment,{children:e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Papel e contrato do agente"})}),e.jsx("div",{className:"filter-empty",children:"Configure aqui o papel deste no e o manifesto que ele enxerga. Voce tambem pode criar rules e subagents rapidos sem sair do agente."}),e.jsxs("label",{children:["Papel",e.jsxs("select",{value:Pt,onChange:c=>rl(c.target.value),children:[e.jsx("option",{value:"simple",children:"Agente simples"}),e.jsx("option",{value:"orchestrator",children:"Agente orquestrador principal"}),e.jsx("option",{value:"subagent",children:"Subagent especializado"})]})]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:al||Sr,disabled:Sr,onChange:c=>L({agentUseWorkspaceCatalog:c.target.checked})}),e.jsx("span",{children:"Usar catalogo do Agent Workspace"})]}),Sr&&e.jsx("span",{className:"field-hint",children:"O manifesto selecionado ativa automaticamente o catalogo necessario para este orquestrador."}),e.jsxs("div",{className:"agent-workspace-catalog-summary",children:[e.jsxs("span",{children:[e.jsx("strong",{children:ma.skills})," skills"]}),e.jsxs("span",{children:[e.jsx("strong",{children:ma.subagents+eo.length})," subagents"]}),e.jsxs("span",{children:[e.jsx("strong",{children:ma.rules})," rules"]}),e.jsxs("span",{children:[e.jsx("strong",{children:ma.mcpServers+Ca.length+to.length})," MCP"]})]}),(Pt==="orchestrator"||Pt==="subagent")&&e.jsxs("div",{className:"agent-manifest-section",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:"Manifesto visivel para este agente"}),e.jsxs("div",{className:"agent-manifest-actions",children:[e.jsx("button",{type:"button",onClick:Uc,children:"Selecionar aba"}),e.jsx("button",{type:"button",onClick:Ud,children:"Limpar aba"}),e.jsx("button",{type:"button",onClick:Uu,children:"Selecionar todos"}),e.jsx("button",{type:"button",onClick:os,children:"Limpar"})]})]}),!Sr&&e.jsx("div",{className:"filter-empty",children:"Sem selecao explicita: este no enxerga o catalogo inteiro do Agent Workspace."}),e.jsx("div",{className:"agent-manifest-tabs",role:"tablist","aria-label":"Categorias do manifesto do agente",children:pi.map(c=>e.jsxs("button",{type:"button",className:Gn===c.id?"active":"",onClick:()=>qa(c.id),children:[e.jsx("span",{children:c.label}),e.jsxs("small",{children:[c.selected,"/",c.total]})]},c.id))}),e.jsx("div",{className:"agent-manifest-tab-panel",children:il()})]}),Pt==="orchestrator"&&e.jsx("div",{className:"filter-empty",children:"Orquestrador recebe instrucoes do usuario, consulta rules/docs, decide quando usar skills, chama subagents com contexto isolado e aciona MCP sob demanda."}),Pt==="subagent"&&e.jsx("div",{className:"filter-empty",children:"Subagent deve ter escopo estreito e contexto proprio, mas pode chamar MCP, skills e outros subagents selecionados quando isso fizer parte da tarefa."}),e.jsxs("label",{children:[e.jsxs("span",{className:"prompt-field-label-row",children:[e.jsx("span",{children:"Agents.md local"}),e.jsx(Gi,{onClick:()=>{var c,S,_;return Eo({fieldType:"agentsMd",targetType:"agent-node",title:"Gerar Agents.md local",label:n.title||"Agente",currentValue:Ht.agentsMd,placeholder:Pt==="orchestrator"?"Ex: orquestrador de agendamentos: coleta CPF, data de nascimento, chama MCP_LOGIN, MCP_API_CLIENTES e só consulta detalhes após seleção do cliente.":"Ex: subagent especializado em consultar e formatar dados de agendamento. Pode chamar MCPs ou subagents selecionados quando precisar de dados que nao estao no contexto.",applyText:W=>Xa({agentsMd:W}),stepContext:{id:n.id,title:n.title,type:n.type,componentType:((c=n.component)==null?void 0:c.type)||"",role:Pt,manifest:((S=n.component)==null?void 0:S.agentManifest)||{}}},Ht.agentsMd?"Melhore este Agents.md local sem misturar guardrails ou termos bloqueados.":"",((_=n.component)==null?void 0:_.ragLlmModel)||t.model)}})]}),e.jsx("textarea",{rows:Pt==="orchestrator"?6:4,value:Ht.agentsMd,placeholder:Pt==="orchestrator"?"# Agente principal orquestrador Recebe instrucoes do usuario, consulta rules e docs, delega tarefas e coordena subagents e skills. Use o catalogo do Agent Workspace para decidir ferramentas.":"# Identidade local Objetivo, tom, limites e quando este agente deve responder.",onChange:c=>Xa({agentsMd:c.target.value})})]}),e.jsxs("label",{children:[e.jsxs("span",{className:"prompt-field-label-row",children:[e.jsx("span",{children:"Guardrails"}),e.jsx(Gi,{onClick:()=>{var c,S;return Eo({fieldType:"guardrails",targetType:"agent-node",title:"Gerar guardrails locais",label:n.title||"Agente",currentValue:Ht.guardrails,placeholder:"Ex: bloquear resposta sem dados de MCP, não inventar detalhes de agendamento, não expor IDs técnicos ao cliente salvo quando necessário.",applyText:_=>Xa({guardrails:_}),stepContext:{id:n.id,title:n.title,role:Pt,manifest:((c=n.component)==null?void 0:c.agentManifest)||{}}},Ht.guardrails?"Melhore estes guardrails locais sem repetir o Agents.md.":"",((S=n.component)==null?void 0:S.ragLlmModel)||t.model)}})]}),e.jsx("textarea",{rows:4,value:Ht.guardrails,placeholder:"Nao invente dados. Peça aprovacao antes de acoes sensiveis. Nao exponha segredos.",onChange:c=>Xa({guardrails:c.target.value})})]}),e.jsxs("label",{children:[e.jsxs("span",{className:"prompt-field-label-row",children:[e.jsx("span",{children:"Termos bloqueados"}),e.jsx(Gi,{onClick:()=>{var c;return Eo({fieldType:"blockedTerms",targetType:"agent-node",title:"Gerar termos bloqueados locais",label:n.title||"Agente",currentValue:Ht.blockedTerms.join(", "),placeholder:"Ex: termos que devem bloquear exclusão, vazamento de token, manipulação indevida de cliente ou chamadas sensíveis.",applyText:S=>Xa({blockedTerms:Qm(S)}),stepContext:{id:n.id,title:n.title,role:Pt}},Ht.blockedTerms.length?"Melhore a lista mantendo termos curtos separados por vírgula.":"",((c=n.component)==null?void 0:c.ragLlmModel)||t.model)}})]}),e.jsx("input",{value:Ht.blockedTerms.join(", "),placeholder:"apagar banco, excluir cliente, vazar token",onChange:c=>Xa({blockedTerms:Hx(c.target.value)}),onBlur:c=>Xa({blockedTerms:Qm(c.target.value)})})]}),ui&&e.jsxs("div",{className:"filter-empty",children:["Este no ainda tem catalogo legado local (",Cr.skills," skills, ",Cr.subagents," subagents, ",Cr.rules," rules, ",Cr.mcpServers," MCP). Ao salvar o papel acima, o Canvas passa a usar o catalogo do Agent Workspace."]})]})}),e.jsxs("label",{children:[e.jsxs("span",{className:"prompt-field-label-row",children:[e.jsx("span",{children:"Prompt"}),e.jsx(Gi,{onClick:()=>{var c,S,_,W,je;return Eo({fieldType:"instruction",targetType:"agent-node",title:"Gerar prompt do agente",label:n.title||"Agente",currentValue:((c=n.component)==null?void 0:c.prompt)||"",placeholder:"Ex: agente deve conduzir a conversa um dado por vez, usar MCPs somente com entradas obrigatorias e responder ao cliente sem expor detalhes tecnicos.",applyText:ke=>L({prompt:ke}),stepContext:{id:n.id,title:n.title,type:n.type,componentType:((S=n.component)==null?void 0:S.type)||"",role:Pt,agentsMd:Ht.agentsMd,guardrails:Ht.guardrails,blockedTerms:Ht.blockedTerms,manifest:((_=n.component)==null?void 0:_.agentManifest)||{}}},(W=n.component)!=null&&W.prompt?"Melhore este prompt sem repetir Agents.md, guardrails ou termos bloqueados.":"",((je=n.component)==null?void 0:je.ragLlmModel)||t.model)}})]}),e.jsx("textarea",{rows:5,value:n.component.prompt||"",onChange:c=>L({prompt:c.target.value})})]}),e.jsxs("label",{children:[e.jsxs("span",{className:"prompt-field-label-row",children:[e.jsx("span",{children:"Entrada do LLM"}),Pt==="subagent"&&n.component.queryTemplate!=="{{context.input}}"&&e.jsx("button",{type:"button",onClick:()=>L({queryTemplate:"{{context.input}}"}),children:"Usar context.input"})]}),e.jsx("input",{value:n.component.queryTemplate||"",placeholder:Pt==="subagent"?"{{context.input}}":"{{context.slots.userInput}}",onChange:c=>L({queryTemplate:c.target.value})}),Pt==="orchestrator"||Pt==="subagent"?e.jsxs("span",{className:"field-hint",children:[e.jsx("code",{children:"{{context.input}}"})," e a entrada atual deste componente. Em subagent/MCP chamado como tool, ele recebe a tarefa ou payload delegado pelo agente pai; ",e.jsx("code",{children:"{{context.slots.autoToolInput}}"})," guarda o mesmo texto por compatibilidade. ",e.jsx("code",{children:"{{context.slots.pergunta}}"})," e o valor salvo pelo no Pergunta."]}):e.jsxs("span",{className:"field-hint",children:[e.jsx("code",{children:"{{context.input}}"})," e a entrada atual do runner; ",e.jsx("code",{children:"{{context.slots.nome}}"})," acessa valores salvos por nos anteriores."]})]}),e.jsxs("label",{children:["Contexto dinamico",e.jsx("textarea",{rows:4,value:n.component.llmContextTemplate||"",placeholder:"{{context.slots.arquivos.text}}",onChange:c=>L({llmContextTemplate:c.target.value})}),e.jsx("span",{className:"field-hint",children:"Opcional. O payload dos nos ligados ao Agente ja entra automaticamente. Use este campo para complementar ou sobrescrever partes do contexto."})]}),e.jsxs("label",{children:["Docs conectados",e.jsx("input",{value:n.component.ragDocsPath||"",placeholder:"context.slots.milvus.results ou context.slots.azureSearch.results",onChange:c=>L({ragDocsPath:c.target.value})}),e.jsx("span",{className:"field-hint",children:"Opcional. Documentos vindos de Arquivos, Milvus ou Azure AI Search ligados ao Agente sao usados automaticamente. Preencha para escolher outro caminho explicitamente."})]}),e.jsxs("label",{children:["Turnos de memoria",e.jsx("input",{type:"number",min:0,value:n.component.turnHistoricMessages??t.turnHistoricMessages??20,onChange:c=>L({turnHistoricMessages:Number(c.target.value)||0})})]})]}),(((ru=n.component)==null?void 0:ru.type)==="milvus"||((su=n.component)==null?void 0:su.type)==="azureSearch")&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"filter-empty",children:(()=>{const c=n.component.ragOperation||"search",S=n.component.type==="azureSearch";return c==="index"&&S?"Gera embeddings e grava os chunks/vetores diretamente no indice Azure AI Search. Nao salva no Blob; para Blob + Search use o componente Azure Blob Storage.":c==="index"?"Gera embeddings e salva os chunks/vetores na collection Milvus.":c==="list"?"Lista documentos salvos no Milvus para visualizar o que ja foi vetorizado.":c==="get"?"Busca um documento do Milvus pelo id ou embeddingId.":c==="delete"?"Remove um documento do Milvus pelo id ou embeddingId.":`Busca documentos no ${S?"Azure AI Search":"Milvus"} e salva o resultado em context.slots.${n.component.responseName||n.responseName||(S?"azureSearch":"milvus")}. Use Agente ou Azure OpenAI depois para responder com esses docs.`})()}),e.jsxs("label",{children:["Operação",e.jsxs("select",{value:n.component.ragOperation||"search",onChange:c=>L({ragOperation:c.target.value}),children:[e.jsx("option",{value:"search",children:n.component.type==="azureSearch"?"Buscar no Azure AI Search":"Buscar documentos no Milvus"}),e.jsx("option",{value:"index",children:n.component.type==="azureSearch"?"Indexar documentos no Azure AI Search":"Indexar / vetorizar no Milvus"}),n.component.type==="milvus"&&e.jsxs(e.Fragment,{children:[e.jsx("option",{value:"list",children:"Visualizar / listar dados"}),e.jsx("option",{value:"get",children:"Buscar por ID"}),e.jsx("option",{value:"delete",children:"Deletar por ID"})]})]})]}),e.jsx("div",{className:"inspector-grid-two",children:e.jsxs("label",{children:[n.component.type==="milvus"?"Collection Milvus":"Index Azure AI Search",e.jsx("input",{value:n.component.collectionName||"",placeholder:n.component.type==="milvus"?"canvas_flow_docs":"azure-search-index",onChange:c=>L({collectionName:c.target.value})})]})}),Wu(),((n.component.ragOperation||"search")==="search"||(n.component.ragOperation||"search")==="index")&&e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Provider de embedding",e.jsxs("select",{value:n.component.ragEmbeddingProvider||"openai",onChange:c=>L({ragEmbeddingProvider:c.target.value}),children:[e.jsx("option",{value:"openai",children:"OpenAI"}),e.jsx("option",{value:"azure_openai",children:"Azure OpenAI"}),n.component.ragEmbeddingProvider==="auto"&&e.jsx("option",{value:"auto",children:"Auto/global (atual)"})]})]}),e.jsxs("label",{children:["Modelo/deployment de embedding",e.jsxs("select",{value:n.component.ragEmbeddingModel||"",onChange:c=>L({ragEmbeddingModel:c.target.value}),children:[e.jsx("option",{value:"",children:"Usar default do provider"}),Sd(qx,n.component.ragEmbeddingModel).map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))]})]})]}),(n.component.ragOperation||"search")==="search"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["K",e.jsx("input",{type:"number",min:1,max:100,value:n.component.k??8,onChange:c=>L({k:Number(c.target.value)||8})})]}),n.component.type==="milvus"&&e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.component.useHybrid!==!1,onChange:c=>L({useHybrid:c.target.checked})}),e.jsx("span",{children:"Busca híbrida dense + BM25"})]})]}),e.jsxs("label",{children:["Query",e.jsx("input",{value:n.component.queryTemplate||"",placeholder:"{{context.slots.userInput}}",onChange:c=>L({queryTemplate:c.target.value})})]}),e.jsx(ev,{rules:xi,onChange:c=>L({ragConditionalRules:c})}),e.jsxs("div",{className:"filter-section",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Filtro extraFields"})}),e.jsx(Zx,{rules:dl,draft:w,emptyText:"Sem filtro global. Adicione campos como ano, tipo ou categoria.",onDraftChange:N,onChange:Ir})]}),n.component.type==="milvus"&&e.jsxs("label",{children:["Filtro Milvus",e.jsx("input",{value:n.component.filterExpr||"",placeholder:'text like "%contrato%"',onChange:c=>L({filterExpr:c.target.value})})]})]}),n.component.type==="milvus"&&(n.component.ragOperation||"search")==="list"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"inspector-grid-two",children:e.jsxs("label",{children:["Limite",e.jsx("input",{type:"number",min:1,max:1e3,value:n.component.k??50,onChange:c=>L({k:Number(c.target.value)||50})})]})}),e.jsxs("label",{children:["Busca/filtro textual opcional",e.jsx("input",{value:n.component.queryTemplate||"",placeholder:"{{context.slots.termoBusca}}",onChange:c=>L({queryTemplate:c.target.value})})]}),e.jsx("div",{className:"filter-empty",children:"Lista documentos agrupados por embeddingId/nome para visualizar o que esta salvo no Milvus."})]}),n.component.type==="milvus"&&((n.component.ragOperation||"search")==="get"||(n.component.ragOperation||"search")==="delete")&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["ID ou embeddingId do documento",e.jsx("input",{value:n.component.ragEmbeddingIdTemplate||"",placeholder:"{{context.slots.documentId}}",onChange:c=>L({ragEmbeddingIdTemplate:c.target.value})})]}),(n.component.ragOperation||"search")==="delete"&&e.jsx("div",{className:"filter-empty",children:"A exclusao remove os chunks desse documento da collection Milvus."})]}),(n.component.ragOperation||"search")==="index"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Caminho de documentos/chunks",e.jsx("input",{value:n.component.ragDocumentsPath||"",placeholder:n.component.type==="azureSearch"?"context.slots.azureBlob.blobs ou context.slots.mongo.documents":"context.slots.documentos",onChange:c=>L({ragDocumentsPath:c.target.value})})]}),e.jsx("div",{className:"filter-empty",children:"Opcional. Use para indexar chunks vindos de Blob, MongoDB ou outro no. Se vazio, usa o texto abaixo."}),e.jsxs("label",{children:["Texto/documento para indexar",e.jsx("textarea",{rows:7,value:n.component.ragTextTemplate||"",placeholder:"{{context.slots.documento}}",onChange:c=>L({ragTextTemplate:c.target.value})})]}),e.jsxs("label",{children:["Caminho do texto",e.jsx("input",{value:n.component.ragTextPath||"",placeholder:"context.slots.documento.text",onChange:c=>L({ragTextPath:c.target.value})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Nome do documento",e.jsx("input",{value:n.component.ragEmbeddingNameTemplate||"",placeholder:"Documento",onChange:c=>L({ragEmbeddingNameTemplate:c.target.value})})]}),e.jsxs("label",{children:["ID do documento",e.jsx("input",{value:n.component.ragEmbeddingIdTemplate||"",placeholder:"opcional",onChange:c=>L({ragEmbeddingIdTemplate:c.target.value})})]})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Chunk size",e.jsx("input",{type:"number",min:100,value:n.component.ragChunkSize??512,onChange:c=>L({ragChunkSize:Number(c.target.value)||512})})]}),e.jsxs("label",{children:["Chunk overlap",e.jsx("input",{type:"number",min:0,value:n.component.ragChunkOverlap??70,onChange:c=>L({ragChunkOverlap:Number(c.target.value)||0})})]})]}),e.jsxs("label",{children:["Extra fields JSON",e.jsx("textarea",{rows:5,value:n.component.ragExtraFieldsJson||"{}",onChange:c=>L({ragExtraFieldsJson:c.target.value})})]})]})]}),((xn=n.component)==null?void 0:xn.type)==="azureBlob"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"filter-empty",children:n.component.azureBlobOperation==="chunks"||n.component.azureBlobOperation==="index"?"Quebra o texto em chunks e salva no Azure Blob Storage. Nao gera embedding e nao cria indice de busca.":n.component.azureBlobOperation==="list"?"Lista blobs/chunks por prefixo e traz o texto para usar em outro componente, como Azure AI Search.":n.component.azureBlobOperation==="read"?"Le um blob especifico e salva o conteudo no contexto.":`Grava um texto ou JSON renderizado no Azure Blob Storage e salva blobName/blobUrl em context.slots.${n.component.responseName||n.responseName||"azureBlob"}.`}),e.jsxs("label",{children:["Operação",e.jsxs("select",{value:n.component.azureBlobOperation==="index"?"chunks":n.component.azureBlobOperation||"upload",onChange:c=>L({azureBlobOperation:c.target.value}),children:[e.jsx("option",{value:"upload",children:"Gravar blob"}),e.jsx("option",{value:"chunks",children:"Salvar chunks no Blob"}),e.jsx("option",{value:"list",children:"Listar/buscar blobs"}),e.jsx("option",{value:"read",children:"Ler blob"})]})]}),(n.component.azureBlobOperation==="index"?"chunks":n.component.azureBlobOperation||"upload")==="list"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Prefixo/pasta",e.jsx("input",{value:n.component.collectionName||"",placeholder:"canvas-flow-chunks/",onChange:c=>L({collectionName:c.target.value})})]}),e.jsxs("label",{children:["Limite",e.jsx("input",{type:"number",min:1,max:1e3,value:n.component.k??100,onChange:c=>L({k:Number(c.target.value)||100})})]})]}),e.jsxs("label",{children:["Busca em nome/metadados/texto",e.jsx("input",{value:n.component.azureBlobFilterText||"",placeholder:"contrato, cliente, produto...",onChange:c=>L({azureBlobFilterText:c.target.value})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Content-Type contem",e.jsx("input",{value:n.component.azureBlobFilterContentType||"",placeholder:"text/plain ou application/json",onChange:c=>L({azureBlobFilterContentType:c.target.value})})]}),e.jsxs("label",{children:["Min bytes",e.jsx("input",{type:"number",min:0,value:n.component.azureBlobMinBytes??"",onChange:c=>L({azureBlobMinBytes:c.target.value===""?void 0:Number(c.target.value)})})]})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Modificado apos",e.jsx("input",{type:"datetime-local",value:n.component.azureBlobFilterModifiedAfter||"",onChange:c=>L({azureBlobFilterModifiedAfter:c.target.value})})]}),e.jsxs("label",{children:["Modificado antes",e.jsx("input",{type:"datetime-local",value:n.component.azureBlobFilterModifiedBefore||"",onChange:c=>L({azureBlobFilterModifiedBefore:c.target.value})})]})]}),e.jsxs("label",{children:["Max bytes",e.jsx("input",{type:"number",min:0,value:n.component.azureBlobMaxBytes??"",onChange:c=>L({azureBlobMaxBytes:c.target.value===""?void 0:Number(c.target.value)})})]}),e.jsxs("div",{className:"filter-empty",children:["Resultado sugerido para indexar: context.slots.",n.component.responseName||n.responseName||"azureBlob",".blobs"]})]}),(n.component.azureBlobOperation==="index"?"chunks":n.component.azureBlobOperation||"upload")==="read"&&e.jsxs("label",{children:["Nome do blob",e.jsx("input",{value:n.component.azureBlobNameTemplate||"",placeholder:"canvas-flow-chunks/global/documento/0.txt",onChange:c=>L({azureBlobNameTemplate:c.target.value})})]}),(n.component.azureBlobOperation==="index"?"chunks":n.component.azureBlobOperation||"upload")==="chunks"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Pasta/prefixo no Blob",e.jsx("input",{value:n.component.collectionName||"",placeholder:"canvas-flow-chunks",onChange:c=>L({collectionName:c.target.value})})]}),e.jsxs("label",{children:["Texto para quebrar em chunks",e.jsx("textarea",{rows:7,value:n.component.ragTextTemplate||"",placeholder:"{{context.slots.documento}}",onChange:c=>L({ragTextTemplate:c.target.value})})]}),e.jsxs("label",{children:["Caminho do texto",e.jsx("input",{value:n.component.ragTextPath||"",placeholder:"context.slots.documento.text",onChange:c=>L({ragTextPath:c.target.value})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Nome do documento",e.jsx("input",{value:n.component.ragEmbeddingNameTemplate||"",placeholder:"Documento",onChange:c=>L({ragEmbeddingNameTemplate:c.target.value})})]}),e.jsxs("label",{children:["ID do documento",e.jsx("input",{value:n.component.ragEmbeddingIdTemplate||"",placeholder:"opcional",onChange:c=>L({ragEmbeddingIdTemplate:c.target.value})})]})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Chunk size",e.jsx("input",{type:"number",min:100,value:n.component.ragChunkSize??512,onChange:c=>L({ragChunkSize:Number(c.target.value)||512})})]}),e.jsxs("label",{children:["Chunk overlap",e.jsx("input",{type:"number",min:0,value:n.component.ragChunkOverlap??70,onChange:c=>L({ragChunkOverlap:Number(c.target.value)||0})})]})]}),e.jsxs("label",{children:["Extra fields JSON",e.jsx("textarea",{rows:5,value:n.component.ragExtraFieldsJson||"{}",onChange:c=>L({ragExtraFieldsJson:c.target.value})})]})]}),(n.component.azureBlobOperation==="index"?"chunks":n.component.azureBlobOperation||"upload")==="upload"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Nome do blob",e.jsx("input",{value:n.component.azureBlobNameTemplate||"",placeholder:"canvas-flow/{{context.conversationId}}/{{context.now}}.json",onChange:c=>L({azureBlobNameTemplate:c.target.value})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Content-Type",e.jsx("input",{value:n.component.azureBlobContentType||"application/json",onChange:c=>L({azureBlobContentType:c.target.value})})]}),e.jsxs("label",{children:["Caminho do conteúdo",e.jsx("input",{value:n.component.azureBlobContentPath||"",placeholder:"context.slots.rag",onChange:c=>L({azureBlobContentPath:c.target.value})})]})]}),e.jsxs("label",{children:["Conteúdo template",e.jsx("textarea",{rows:7,value:n.component.azureBlobContentTemplate||"",placeholder:"{{context.slots}}",onChange:c=>L({azureBlobContentTemplate:c.target.value})})]})]})]}),((vn=n.component)==null?void 0:vn.type)==="mongodb"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"filter-empty",children:["Usa o MongoDB configurado no backend. O resultado fica em context.slots.",n.component.responseName||n.responseName||"mongo","."]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Collection MongoDB",e.jsx("input",{value:n.component.mongoCollectionName||"",placeholder:"flow_events",onChange:c=>L({mongoCollectionName:c.target.value})})]}),e.jsxs("label",{children:["Operação",e.jsx("select",{value:Jt,onChange:c=>{const S=c.target.value;L({mongoOperation:S,...Wx.has(S)?{mongoLlmMode:"full"}:{}})},children:vk.map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))})]})]}),(xo||cs)&&e.jsxs("div",{className:"inspector-grid-two",children:[xo&&e.jsxs("label",{children:[Jt==="insertMany"?"Max documentos":"Limite",e.jsx("input",{type:"number",min:1,max:1e3,value:n.component.mongoLimit??50,onChange:c=>L({mongoLimit:Number(c.target.value)||50})})]}),cs&&e.jsxs("label",{children:["Sort JSON",e.jsx("input",{value:n.component.mongoSort||"{}",placeholder:'{"createdAt": -1}',onChange:c=>L({mongoSort:c.target.value})})]})]}),Ai&&e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Paginação e volume"})}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Modo",e.jsxs("select",{value:n.component.mongoPaginationMode||"single",onChange:c=>L({mongoPaginationMode:c.target.value}),children:[e.jsx("option",{value:"single",children:"Uma página"}),e.jsx("option",{value:"all",children:"Buscar várias páginas"})]})]}),e.jsxs("label",{children:["Página",e.jsx("input",{type:"number",min:1,value:n.component.mongoPage??1,onChange:c=>L({mongoPage:Math.max(1,Number(c.target.value)||1)})})]})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Skip inicial",e.jsx("input",{type:"number",min:0,value:n.component.mongoSkip??0,onChange:c=>L({mongoSkip:Math.max(0,Number(c.target.value)||0)})})]}),e.jsxs("label",{children:["Max páginas",e.jsx("input",{type:"number",min:1,max:50,value:n.component.mongoMaxPages??5,onChange:c=>L({mongoMaxPages:Math.max(1,Math.min(50,Number(c.target.value)||1))})})]})]}),e.jsx("div",{className:"filter-empty",children:"Max páginas define quantas páginas o backend percorre a partir da página inicial. Ex: limite 100 e max páginas 5 busca até 500 registros, parando antes se não houver mais dados."})]}),Qu&&e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Range de data"})}),e.jsxs("div",{className:"mongo-date-grid",children:[e.jsxs("label",{children:["Campo de data",e.jsx("input",{value:n.component.mongoDateField||"",placeholder:"createdAt",onChange:c=>L({mongoDateField:c.target.value})})]}),e.jsxs("label",{children:["Timezone",e.jsx("input",{value:n.component.mongoDateTimezone||"America/Sao_Paulo",placeholder:"America/Sao_Paulo",onChange:c=>L({mongoDateTimezone:c.target.value})})]})]}),e.jsxs("div",{className:"mongo-date-grid",children:[e.jsxs("label",{children:["Início",e.jsx("input",{type:"datetime-local",value:n.component.mongoDateStart||"",onChange:c=>L({mongoDateStart:c.target.value})})]}),e.jsxs("label",{children:["Fim",e.jsx("input",{type:"datetime-local",value:n.component.mongoDateEnd||"",onChange:c=>L({mongoDateEnd:c.target.value})})]})]})]}),e.jsxs("div",{className:"rich-editor-block",children:[e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.component.mongoUseLlmFilter===!0,onChange:c=>L({mongoUseLlmFilter:c.target.checked})}),e.jsx("span",{children:"Montar campos com LLM"})]}),n.component.mongoUseLlmFilter===!0&&e.jsxs(e.Fragment,{children:[!ya&&e.jsxs("label",{children:["Modo do LLM",e.jsxs("select",{value:n.component.mongoLlmMode||"filter",onChange:c=>L({mongoLlmMode:c.target.value}),children:[e.jsx("option",{value:"filter",children:"Somente consulta"}),e.jsx("option",{value:"full",children:"Consulta completa + paginação"})]})]}),e.jsxs("label",{children:["Instrução do MongoDB",e.jsx("textarea",{rows:4,value:n.component.mongoLlmInstruction||"",placeholder:zr,onChange:c=>L({mongoLlmInstruction:c.target.value})})]}),e.jsxs("label",{children:["Modelo",e.jsxs("select",{value:n.component.mongoLlmModel||"",onChange:c=>L({mongoLlmModel:c.target.value}),children:[e.jsxs("option",{value:"",children:["Usar modelo do fluxo (",t.model,")"]}),Qn.map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))]})]})]}),e.jsx("div",{className:"filter-empty",children:ya?"Nesta operação, o LLM monta os campos principais da ação: document/documents para insert ou filter + update para update/upsert. Os campos manuais ficam como fallback.":n.component.mongoLlmMode==="full"?"Consulta completa: o LLM pode montar filter, sort, projection/pipeline, range de data e paginação. O backend ainda limita limite e max páginas.":"Somente consulta: o LLM monta filter, sort, projection ou pipeline. Limite, paginação, range de data e demais campos manuais continuam valendo."})]}),e.jsx(Dk,{prompt:$,generated:Be,error:gt,loading:Z,copied:mt,onPromptChange:z,onGenerate:()=>void ar(),onCopy:()=>void Ei(),onApply:rn}),Rr&&e.jsxs("label",{children:[Jt==="aggregate"?"Filtro / $match JSON":"Filtro JSON",e.jsx("textarea",{rows:4,value:n.component.mongoFilter||"{}",placeholder:'{"conversationId": "{{context.slots.conversationId}}"}',onChange:c=>L({mongoFilter:c.target.value})})]}),hl&&e.jsxs("label",{children:[Jt==="insertMany"?"Documentos JSON":"Documento JSON",e.jsx("textarea",{rows:5,value:n.component.mongoDocument||"{}",placeholder:Jt==="insertMany"?'[{"event": "entrada_fluxo"}, {"event": "lead_convertido"}]':'{"event": "entrada_fluxo", "userInput": "{{context.slots.userInput}}"}',onChange:c=>L({mongoDocument:c.target.value})})]}),Ln&&e.jsxs("label",{children:["Update JSON",e.jsx("textarea",{rows:4,value:n.component.mongoUpdate||"{}",placeholder:'{"$set": {"status": "convertido"}}',onChange:c=>L({mongoUpdate:c.target.value})})]}),Fr&&e.jsxs("label",{children:["Projection JSON",e.jsx("input",{value:n.component.mongoProjection||"{}",placeholder:'{"_id": 0, "conversationId": 1}',onChange:c=>L({mongoProjection:c.target.value})})]}),Jt==="aggregate"&&e.jsxs("label",{children:["Pipeline aggregate JSON",e.jsx("textarea",{rows:6,value:n.component.mongoPipeline||"[]",placeholder:'[{"$group": {"_id": "$event", "total": {"$sum": 1}}}]',onChange:c=>L({mongoPipeline:c.target.value})})]})]}),((qr=n.component)==null?void 0:qr.type)==="loop"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"filter-empty",children:"O Loop executa as saídas conectadas enquanto não atingir o limite de voltas e enquanto a condição JS de parada for falsa. Para repetir, conecte Loop -> corpo e depois corpo -> Loop."}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Slot do loop",e.jsx("input",{value:n.component.loopResponseName||n.component.responseName||"",placeholder:"loop",onChange:c=>L({loopResponseName:c.target.value,responseName:c.target.value})})]}),e.jsxs("label",{children:["Quantidade de voltas",e.jsx("input",{type:"number",min:1,max:1e3,value:n.component.loopMaxIterations??3,onChange:c=>L({loopMaxIterations:Math.max(1,Math.min(1e3,Number(c.target.value)||1))})})]})]}),e.jsxs("label",{children:["Slot do contador",e.jsx("input",{value:n.component.loopIndexResponseName||"",placeholder:"loopIndex",onChange:c=>L({loopIndexResponseName:c.target.value})}),e.jsxs("div",{className:"reason-slot-hint",children:["Se ficar vazio, o contador será salvo em ",e.jsx("code",{children:"context.slots.loopIndex"}),". Se você preencher ",e.jsx("code",{children:"contador"}),", use ",e.jsx("code",{children:"context.slots.contador"})," ou ",e.jsx("code",{children:"slots.contador"})," nas condições."]})]}),e.jsxs("label",{children:["Espera entre voltas (segundos)",e.jsx("input",{type:"number",min:0,max:3600,step:.1,value:n.component.loopDelaySeconds??0,onChange:c=>L({loopDelaySeconds:Math.max(0,Math.min(3600,Number(c.target.value)||0))})})]}),e.jsxs("label",{children:["Condição JS para parar",e.jsx("textarea",{rows:4,value:n.component.loopStopCondition||"",placeholder:'context.slots.api?.status === "done"',onChange:c=>L({loopStopCondition:c.target.value})})]}),e.jsx("div",{className:"filter-empty",children:"Use 0 para rodar sem pausa. A espera acontece antes da segunda volta em diante, ou seja, entre uma repetição e outra."}),e.jsxs("div",{className:"filter-empty",children:["Durante a execução, o backend grava context.slots.",n.component.loopResponseName||n.component.responseName||"loop",".iteration e context.slots.",n.component.loopIndexResponseName||"loopIndex"," com a volta atual, começando em 1. O índice começando em 0 fica em context.slots.",n.component.loopResponseName||n.component.responseName||"loop",".index. Para seguir depois que o loop acabar, crie uma ligação saindo do Loop para o próximo nó com a condição JS: !context.slots.",n.component.loopResponseName||n.component.responseName||"loop",".shouldContinue"]})]}),((iu=n.component)==null?void 0:iu.type)==="context"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"filter-empty",children:["O Contexto cria ou atualiza campos em context.slots. Os proximos nos podem usar essas variaveis com ","{{context.slots.nomeDoCampo}}"," ou via JS."]}),e.jsxs("div",{className:"filter-empty",children:["Se preencher Slot do resultado, os mesmos campos tambem ficam agrupados nele. Exemplo: com slot ",e.jsx("code",{children:"email"})," e campo ",e.jsx("code",{children:"to"}),", use ",e.jsx("code",{children:"{{context.slots.email.to}}"}),"."]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Slot do resultado",e.jsx("input",{value:n.component.responseName||"",placeholder:"context",onChange:c=>L({responseName:c.target.value})})]}),e.jsxs("label",{children:["Modo",e.jsxs("select",{value:fi,onChange:c=>L({contextMode:c.target.value}),children:[e.jsx("option",{value:"json",children:"JSON com variaveis"}),e.jsx("option",{value:"js",children:"Script JS"}),e.jsx("option",{value:"llm",children:"LLM"})]})]})]}),fi==="json"&&e.jsx(gf,{label:"JSON para mesclar no contexto",language:"JSON",rows:9,value:Aa,placeholder:`{
|
|
497
|
+
"cliente": "{{context.slots.input}}",
|
|
498
|
+
"payload": {"origem": "web"}
|
|
499
|
+
}`,error:Gu,onChange:c=>L({contextJson:c}),onOpen:()=>R("json")}),fi==="js"&&e.jsx(gf,{label:"Script JS que retorna um JSON",language:"JavaScript",rows:11,value:Mr,placeholder:`const itens = context.slots.itens || [];
|
|
500
|
+
return {
|
|
501
|
+
total: itens.length,
|
|
502
|
+
nomes: itens.map((item) => item.nome)
|
|
503
|
+
};`,error:Xl,onChange:c=>L({contextScript:c}),onOpen:()=>R("js")}),fi==="llm"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Instrucao LLM",e.jsx("textarea",{rows:7,value:n.component.contextLlmPrompt||"",placeholder:"Extraia da conversa um JSON com nome, email e interesse. Responda somente com os campos que devem entrar em context.slots.",onChange:c=>L({contextLlmPrompt:c.target.value})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Modelo",e.jsxs("select",{value:n.component.contextLlmModel||"",onChange:c=>L({contextLlmModel:c.target.value}),children:[e.jsxs("option",{value:"",children:["Usar modelo do fluxo (",t.model,")"]}),Qn.map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))]})]}),e.jsxs("label",{children:["Temperatura",e.jsx("input",{type:"number",min:0,max:1,step:.1,value:n.component.contextLlmTemperature??.2,onChange:c=>L({contextLlmTemperature:Number(c.target.value)})})]})]})]}),e.jsxs("div",{className:"filter-empty",children:["O retorno precisa ser um objeto JSON no topo, por exemplo ",'{"lead": {"nome": "Ana"}, "score": 8}',". Arrays ou textos soltos nao sao mesclados."]})]}),((Il=n.component)==null?void 0:Il.type)==="flowRouter"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"filter-empty",children:"O roteador avalia as regras em ordem. A primeira regra verdadeira pula a conversa para o flow escolhido. Se nenhuma regra bater, ele para neste ponto ou usa o fallback configurado."}),e.jsx("div",{className:"filter-empty",children:"Escolha o agente do destino para listar os fluxos dele. O valor executado continua sendo o ID do fluxo, e o runtime troca o agente ativo para o agente do fluxo destino."}),e.jsxs("label",{children:["Slot do resultado",e.jsx("input",{value:n.component.flowRouterReasonResponseName||n.component.responseName||"",placeholder:"flowRouter",onChange:c=>L({flowRouterReasonResponseName:c.target.value,responseName:c.target.value})}),e.jsxs("span",{className:"field-hint reason-slot-hint",children:["Salva o resultado do roteador em ",e.jsx("code",{children:`context.slots.${n.component.flowRouterReasonResponseName||n.component.responseName||"flowRouter"}`}),", incluindo regra escolhida, destino e motivo quando a decisão usar LLM."]})]}),e.jsx("div",{className:"filter-empty",children:"O jump usa apenas as regras JS ou LLM abaixo, entra no flow destino e não reaproveita a mensagem atual como resposta dos inputs do destino."}),Ze&&e.jsx("div",{className:"auth-error",children:Ze}),e.jsxs("div",{className:"rich-editor-block",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:"Regras de roteamento"}),e.jsxs("button",{type:"button",onClick:Hc,children:[e.jsx(un,{size:14}),"Regra"]})]}),!ss.length&&e.jsx("div",{className:"filter-empty",children:"Adicione uma regra para escolher um fluxo destino. Use LLM para intenção aberta ou JS para regras diretas com context.slots."}),ss.map((c,S)=>e.jsxs("div",{className:"filter-rule-card",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:c.label||`Regra ${S+1}`}),e.jsxs("button",{type:"button",className:"danger-link",onClick:()=>dt(c.id),children:[e.jsx(Nt,{size:14}),"Remover"]})]}),(()=>{const _=br(c.targetAgentId),W=wr(_),je=Me[_]===!0;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Nome",e.jsx("input",{value:c.label||"",placeholder:`Regra ${S+1}`,onChange:ke=>Er(c.id,{label:ke.target.value})})]}),e.jsxs("label",{children:["Agente destino",e.jsx("select",{value:_,onChange:ke=>Er(c.id,{targetAgentId:ke.target.value,targetFlowId:""}),children:si.map(ke=>e.jsxs("option",{value:ke.agentId||ke.name,children:[ke.name,(ke.agentId||ke.name)===We?" (atual)":""]},ke.agentId||ke.name))})]})]}),e.jsxs("label",{children:["Fluxo destino",e.jsxs("select",{value:c.targetFlowId||"",onChange:ke=>Er(c.id,{targetAgentId:_,targetFlowId:ke.target.value}),disabled:je,children:[e.jsx("option",{value:"",children:je?"Carregando fluxos...":"Selecione um fluxo"}),c.targetFlowId&&!ql(c.targetFlowId,_)&&e.jsx("option",{value:c.targetFlowId,children:an(c.targetFlowId,_)}),W.map(ke=>e.jsx("option",{value:ke._id,children:ke.name},ke._id))]})]})]})})(),e.jsxs("label",{children:["Modo da regra",e.jsxs("select",{value:c.conditionMode||"js",onChange:_=>Er(c.id,{conditionMode:_.target.value}),children:[e.jsx("option",{value:"js",children:"Regra JS"}),e.jsx("option",{value:"llm",children:"Instrução LLM"})]})]}),e.jsxs("label",{children:[c.conditionMode==="llm"?"Instrução LLM":"Condição JS",e.jsx("textarea",{rows:4,value:c.condition||"",placeholder:c.conditionMode==="llm"?"Ex: roteie se o usuário quer falar sobre financeiro, boleto ou pagamento.":'context.slots.userInput?.includes("boleto")',onChange:_=>Er(c.id,{condition:_.target.value})})]}),c.conditionMode==="llm"&&e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Modelo",e.jsxs("select",{value:c.conditionModel||"",onChange:_=>Er(c.id,{conditionModel:_.target.value}),children:[e.jsxs("option",{value:"",children:["Usar modelo do fluxo (",t.model,")"]}),Qn.map(_=>e.jsx("option",{value:_.value,children:_.label},_.value))]})]}),e.jsxs("label",{children:["Temperatura",e.jsx("input",{type:"number",min:0,max:1,step:.1,value:c.conditionTemperature??0,onChange:_=>Er(c.id,{conditionTemperature:Number(_.target.value)})})]})]})]},c.id))]}),(()=>{const c=br(n.component.flowRouterFallbackAgentId),S=wr(c),_=Me[c]===!0;return e.jsxs("div",{className:"rich-editor-block",children:[e.jsx("div",{className:"filter-section-header",children:e.jsx("strong",{children:"Fallback"})}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Agente do fallback",e.jsx("select",{value:c,onChange:W=>L({flowRouterFallbackAgentId:W.target.value,flowRouterFallbackFlowId:""}),children:si.map(W=>e.jsxs("option",{value:W.agentId||W.name,children:[W.name,(W.agentId||W.name)===We?" (atual)":""]},W.agentId||W.name))})]}),e.jsxs("label",{children:["Fluxo se nenhuma regra bater",e.jsxs("select",{value:n.component.flowRouterFallbackFlowId||"",onChange:W=>L({flowRouterFallbackAgentId:c,flowRouterFallbackFlowId:W.target.value}),disabled:_,children:[e.jsx("option",{value:"",children:_?"Carregando fluxos...":"Parar neste ponto"}),n.component.flowRouterFallbackFlowId&&!ql(n.component.flowRouterFallbackFlowId,c)&&e.jsx("option",{value:n.component.flowRouterFallbackFlowId,children:an(n.component.flowRouterFallbackFlowId,c)}),S.map(W=>e.jsx("option",{value:W._id,children:W.name},W._id))]})]})]})]})})()]}),((Fi=n.component)==null?void 0:Fi.type)==="dashboard"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"filter-empty",children:"Monta um payload analítico e exibe no teste como Debug. Use para funil, tráfego, traces de API e consultas em MongoDB/Milvus."}),e.jsxs("label",{children:["Título do dashboard",e.jsx("input",{value:n.component.dashboardTitle||"",placeholder:"Analítico do fluxo",onChange:c=>L({dashboardTitle:c.target.value})})]}),e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Fonte",e.jsxs("select",{value:n.component.dashboardSource||"trace",onChange:c=>L({dashboardSource:c.target.value}),children:[e.jsx("option",{value:"trace",children:"Trace do fluxo"}),e.jsx("option",{value:"mongodb",children:"MongoDB"}),e.jsx("option",{value:"api",children:"API externa"}),e.jsx("option",{value:"milvus",children:"Milvus/RAG"})]})]}),e.jsxs("label",{children:["Visualizacao",e.jsxs("select",{value:n.component.dashboardMode||"summary",onChange:c=>L({dashboardMode:c.target.value}),children:[e.jsx("option",{value:"summary",children:"Resumo"}),e.jsx("option",{value:"table",children:"Tabela"}),e.jsx("option",{value:"funnel",children:"Funil"}),e.jsx("option",{value:"timeseries",children:"Serie temporal"}),e.jsx("option",{value:"bar",children:"Grafico de barras"}),e.jsx("option",{value:"pie",children:"Grafico de pizza"})]})]})]}),(n.component.dashboardMode==="bar"||n.component.dashboardMode==="pie"||n.component.dashboardMode==="timeseries")&&e.jsxs("div",{className:"rich-editor-block",children:[e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.component.dashboardUseLlm!==!1,onChange:c=>L({dashboardUseLlm:c.target.checked})}),e.jsx("span",{children:"Montar gráfico com LLM"})]}),n.component.dashboardUseLlm!==!1&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Prompt do gráfico",e.jsx("textarea",{rows:4,value:n.component.dashboardLlmPrompt||"",placeholder:"Ex: agrupe por etapa do funil e gere labels curtos.",onChange:c=>L({dashboardLlmPrompt:c.target.value})})]}),e.jsxs("label",{children:["Modelo para montar",e.jsxs("select",{value:n.component.dashboardModel||"",onChange:c=>L({dashboardModel:c.target.value}),children:[e.jsxs("option",{value:"",children:["Usar modelo do fluxo (",t.model,")"]}),Qn.map(c=>e.jsx("option",{value:c.value,children:c.label},c.value))]})]})]}),e.jsx("div",{className:"filter-empty",children:"O LLM recebe os dados da fonte escolhida e devolve um JSON de gráfico. Se falhar, o backend monta o gráfico automaticamente."})]}),n.component.dashboardSource==="mongodb"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Collection MongoDB",e.jsx("input",{value:n.component.dashboardCollectionName||n.component.mongoCollectionName||"",placeholder:"flow_events",onChange:c=>L({dashboardCollectionName:c.target.value})})]}),e.jsxs("label",{children:["Limite",e.jsx("input",{type:"number",min:1,max:500,value:n.component.mongoLimit??100,onChange:c=>L({mongoLimit:Number(c.target.value)||100})})]})]}),e.jsxs("label",{children:["Pipeline aggregate JSON",e.jsx("textarea",{rows:7,value:n.component.dashboardPipeline||"[]",placeholder:'[{"$group": {"_id": "$stage", "users": {"$addToSet": "$conversationId"}}}, {"$project": {"stage": "$_id", "total": {"$size": "$users"}}}]',onChange:c=>L({dashboardPipeline:c.target.value})})]})]}),n.component.dashboardSource==="api"&&e.jsx(Xm,{requests:Ns(n.component.dashboardApiRequests||"[]",[]),onChange:c=>L({dashboardApiRequests:JSON.stringify(c,null,2)})}),n.component.dashboardSource==="milvus"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"inspector-grid-two",children:[e.jsxs("label",{children:["Collection Milvus",e.jsx("input",{value:n.component.collectionName||"",onChange:c=>L({collectionName:c.target.value})})]}),e.jsxs("label",{children:["K",e.jsx("input",{type:"number",min:1,max:100,value:n.component.dashboardK??n.component.k??10,onChange:c=>L({dashboardK:Number(c.target.value)||10})})]})]}),e.jsxs("label",{children:["Query Milvus",e.jsx("input",{value:n.component.dashboardQueryTemplate||n.component.queryTemplate||"",placeholder:"{{context.slots.userInput}}",onChange:c=>L({dashboardQueryTemplate:c.target.value})})]}),e.jsxs("label",{children:["Filtro Milvus",e.jsx("input",{value:n.component.dashboardFilterExpr||n.component.filterExpr||"",placeholder:'source == "fluxo"',onChange:c=>L({dashboardFilterExpr:c.target.value})})]})]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.component.dashboardIncludeTrace!==!1,onChange:c=>L({dashboardIncludeTrace:c.target.checked})}),e.jsx("span",{children:"Incluir trace do fluxo no resultado"})]}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.component.dashboardShowTable===!0,onChange:c=>L({dashboardShowTable:c.target.checked})}),e.jsx("span",{children:"Mostrar tabela de dados no web widget/teste"})]})]}),((lu=n.component)==null?void 0:lu.type)==="cron"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"filter-empty",children:"Agenda a execução do fluxo. Conecte a saída do CRON no primeiro nó que deve rodar, ou selecione executar desde o início do fluxo."}),e.jsxs("label",{className:"checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:n.component.cronEnabled===!0,onChange:c=>L({cronEnabled:c.target.checked})}),e.jsx("span",{children:"Ativar agendamento"})]}),e.jsxs("div",{className:"cron-grid-two",children:[e.jsxs("label",{children:["Recorrência",e.jsxs("select",{value:n.component.cronMode||"interval",onChange:c=>L({cronMode:c.target.value}),children:[e.jsx("option",{value:"interval",children:"A cada X tempo"}),e.jsx("option",{value:"daily",children:"Diário"}),e.jsx("option",{value:"weekly",children:"Semanal"}),e.jsx("option",{value:"monthly",children:"Mensal"})]})]}),e.jsxs("label",{children:["Executar",e.jsxs("select",{value:n.component.cronRunFrom||"cronNode",onChange:c=>L({cronRunFrom:c.target.value}),children:[e.jsx("option",{value:"cronNode",children:"Da saída do CRON"}),e.jsx("option",{value:"flowStart",children:"Do início do fluxo"})]})]})]}),(n.component.cronMode||"interval")==="interval"&&e.jsxs("div",{className:"cron-grid-two compact-cron-grid",children:[e.jsxs("label",{children:["A cada",e.jsx("input",{type:"number",min:1,max:1e4,value:n.component.cronIntervalValue??15,onChange:c=>L({cronIntervalValue:Math.max(1,Number(c.target.value)||1)})})]}),e.jsxs("label",{children:["Unidade",e.jsxs("select",{value:n.component.cronIntervalUnit||"minutes",onChange:c=>L({cronIntervalUnit:c.target.value}),children:[e.jsx("option",{value:"minutes",children:"Minutos"}),e.jsx("option",{value:"hours",children:"Horas"})]})]})]}),(n.component.cronMode||"interval")!=="interval"&&e.jsxs("div",{className:"cron-grid-two compact-cron-grid",children:[e.jsxs("label",{children:["Horário",e.jsx("input",{type:"time",value:n.component.cronTime||"09:00",onChange:c=>L({cronTime:c.target.value})})]}),n.component.cronMode==="weekly"&&e.jsxs("label",{children:["Dia da semana",e.jsxs("select",{value:n.component.cronWeekday??1,onChange:c=>L({cronWeekday:Number(c.target.value)}),children:[e.jsx("option",{value:0,children:"Domingo"}),e.jsx("option",{value:1,children:"Segunda"}),e.jsx("option",{value:2,children:"Terça"}),e.jsx("option",{value:3,children:"Quarta"}),e.jsx("option",{value:4,children:"Quinta"}),e.jsx("option",{value:5,children:"Sexta"}),e.jsx("option",{value:6,children:"Sábado"})]})]}),n.component.cronMode==="monthly"&&e.jsxs("label",{children:["Dia do mês",e.jsx("input",{type:"number",min:1,max:31,value:n.component.cronMonthDay??1,onChange:c=>L({cronMonthDay:Math.max(1,Math.min(31,Number(c.target.value)||1))})})]})]}),e.jsxs("div",{className:"cron-grid-two",children:[e.jsxs("label",{children:["Timezone",e.jsx("input",{value:n.component.cronTimezone||"America/Sao_Paulo",placeholder:"America/Sao_Paulo",onChange:c=>L({cronTimezone:c.target.value})})]}),e.jsxs("label",{children:["Começar em",e.jsx("input",{type:"datetime-local",value:n.component.cronStartAt||"",onChange:c=>L({cronStartAt:c.target.value})})]})]}),e.jsxs("label",{children:["Mensagem de entrada",e.jsx("input",{value:n.component.cronInputText||"",placeholder:"Texto usado como input quando o agendamento rodar",onChange:c=>L({cronInputText:c.target.value})})]}),e.jsxs("label",{children:["Slots extras JSON",e.jsx("textarea",{rows:4,value:n.component.cronSlotsJson||"{}",placeholder:'{"source": "cron", "campanha": "followup"}',onChange:c=>L({cronSlotsJson:c.target.value})})]}),e.jsxs("div",{className:"filter-empty",children:["Salve o fluxo para o scheduler considerar esta configuração. Horários exibidos em ",yi,". Próxima execução: ",Km(n.component.cronNextRunAt,yi)||"será calculada pelo backend",". Última execução: ",Km(n.component.cronLastRunAt,yi)||"nenhuma","."]}),e.jsxs("div",{className:"cron-log-panel",children:[e.jsxs("div",{className:"filter-section-header",children:[e.jsx("strong",{children:"Histórico leve"}),e.jsxs("button",{type:"button",onClick:()=>x==null?void 0:x(n.id),disabled:!j||!x,children:[e.jsx(kp,{size:14}),"Atualizar"]})]}),!vi.length&&e.jsx("div",{className:"filter-empty",children:"Nenhuma execução registrada ainda. O histórico guarda apenas as últimas execuções."}),vi.length>0&&e.jsx("div",{className:"cron-log-list",children:vi.slice(0,8).map((c,S)=>e.jsxs("div",{className:`cron-log-entry ${c.status==="error"?"error":"ok"}`,children:[e.jsxs("div",{children:[e.jsx("strong",{children:c.status==="error"?"Erro":"Executado"}),e.jsx("span",{children:Km(c.finishedAt||c.firedAt,yi)})]}),e.jsx("small",{children:c.status==="ok"?`${c.messages??0} mensagem(ns) - ${c.durationMs??0}ms`:c.error||"Erro sem detalhes."}),c.nextRunAt&&e.jsxs("em",{children:["Próxima: ",Km(c.nextRunAt,yi)]})]},`${c.firedAt}-${S}`))})]})]})]}),Ja(),T&&((Pl=n.component)==null?void 0:Pl.type)==="context"&&e.jsx("div",{className:"modal-backdrop context-code-backdrop",onMouseDown:()=>R(null),children:e.jsxs("div",{className:"context-code-modal",onMouseDown:c=>c.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:Ju}),e.jsx("span",{children:Fn})]}),e.jsxs("button",{type:"button",onClick:()=>R(null),children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("div",{className:`context-code-modal-body ${T==="js"?"with-ai":""}`,children:[T==="js"&&e.jsx(Yx,{prompt:ee,generatedCode:V,generatedExplanation:P,error:ve,loading:se,copied:be,onPromptChange:H,onGenerate:()=>void Wc(),onCopy:()=>void Is(),onApply:Yl}),e.jsx(Vp,{language:T==="json"?"json":"js",rows:30,fill:!0,error:is,value:tr,placeholder:go,onChange:ro}),is&&e.jsx("div",{className:"code-editor-error",children:is})]})]})}),Na&&e.jsx("div",{className:"modal-backdrop mcp-preset-help-backdrop",onMouseDown:()=>gr(null),children:e.jsxs("div",{className:"mcp-preset-help-modal",onMouseDown:c=>c.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:Na.label}),e.jsx("span",{children:"Permissoes e configuracao necessarias"})]}),e.jsxs("button",{type:"button",onClick:()=>gr(null),children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("div",{className:"mcp-preset-help-body",children:[e.jsx("p",{children:Na.description}),e.jsxs("div",{className:"mcp-preset-help-auth",children:[e.jsx("strong",{children:"Autenticacao usada pelo Canvas Flow"}),e.jsx("code",{children:Na.authMode})]}),((jc=Na.oauthScopes)==null?void 0:jc.length)&&e.jsxs("div",{className:"mcp-preset-help-scopes",children:[e.jsx("strong",{children:"Scopes OAuth solicitados"}),Na.oauthScopes.map(c=>e.jsx("code",{children:c},c))]}),e.jsx("div",{className:"mcp-preset-help-links",children:Na.setupLinks.map(c=>e.jsxs("a",{href:c.url,target:"_blank",rel:"noreferrer",children:[e.jsx("strong",{children:c.label}),e.jsx("span",{children:c.description})]},c.url))}),((cu=Na.setupNotes)==null?void 0:cu.length)&&e.jsxs("div",{className:"mcp-preset-help-notes",children:[e.jsx("strong",{children:"Antes de testar"}),Na.setupNotes.map(c=>e.jsx("span",{children:c},c))]})]}),e.jsxs("div",{className:"mcp-preset-help-footer",children:[e.jsx("a",{href:Na.docsUrl,target:"_blank",rel:"noreferrer",children:"Documentacao oficial"}),e.jsx("button",{type:"button",className:"primary-button",onClick:()=>gr(null),children:"Entendi"})]})]})})]})}const $a={llmProvider:"openai",openai:{enabled:!0,apiKey:"",chatModel:"gpt-4o",embeddingModel:"text-embedding-3-large",ocrModel:"gpt-4o"},azureOpenai:{enabled:!1,apiKey:"",endpoint:"",apiVersion:"2024-02-15-preview",chatDeploymentName:"",embeddingDeploymentName:"",ocrDeploymentName:"",embeddingDimensions:3072},gemini:{enabled:!1,apiKey:"",chatModel:"gemini-3.5-flash"},claude:{enabled:!1,apiKey:"",chatModel:"claude-sonnet-4-6"},grok:{enabled:!1,apiKey:"",baseUrl:"https://api.x.ai/v1",chatModel:"grok-2-latest"},bedrock:{enabled:!1,apiKey:"",baseUrl:"",region:"us-east-1",chatModel:"anthropic.claude-sonnet-4-6"},milvus:{address:"",token:"",username:"",password:"",collectionName:"canvas_flow_docs"},azureBlob:{connectionString:"",containerName:""},azureSearch:{endpoint:"",apiKey:"",indexName:"",apiVersion:"2024-07-01"},mongodb:{connectionString:"",databaseName:""},webWidget:{primaryColor:"#0f6bff",accentColor:"#00b37e",assistantName:"Assistente IA",subtitle:"Online agora",welcomeMessage:"Ola! Como posso ajudar?",placeholder:"Digite sua mensagem",bubbleLabel:"Precisa de ajuda?",avatarText:"IA",openByDefault:!1,position:"right"},whatsapp:{provider:"meta",deliveryMode:"provider",verifyToken:"",businessAccountId:"",phoneNumberId:"",accessToken:"",graphApiVersion:"v20.0",autoReply:!0,blipContractId:"",blipAuthorizationKey:"",sinchProjectId:"",sinchAppId:"",sinchRegion:"us",sinchAccessToken:"",sinchChannel:"WHATSAPP",sinchApiMode:"conversation",sinchServiceNumber:"",sinchServiceUsername:"",sinchServiceToken:""}},rv=Array.from(new Map(Object.values(jh).flat().map(t=>[t.value,t])).values()),sv=[{value:"text-embedding-3-large",label:"text-embedding-3-large"},{value:"text-embedding-3-small",label:"text-embedding-3-small"},{value:"text-embedding-ada-002",label:"text-embedding-ada-002"}],iv=[{id:"openai",title:"OpenAI",subtitle:"Credencial OpenAI",Icon:Ho,color:"#2563eb"},{id:"azureOpenai",title:"Azure OpenAI",subtitle:"Endpoint e credencial",Icon:cf,color:"#0ea5e9"},{id:"gemini",title:"Gemini",subtitle:"Google AI Studio",Icon:Ho,color:"#7c3aed"},{id:"claude",title:"Claude",subtitle:"Anthropic API",Icon:Ho,color:"#c2410c"},{id:"grok",title:"Grok",subtitle:"xAI OpenAI-compatible",Icon:Ho,color:"#111827"},{id:"bedrock",title:"Bedrock",subtitle:"Gateway OpenAI-compatible",Icon:cf,color:"#ea580c"},{id:"milvus",title:"Milvus",subtitle:"Vetores e busca",Icon:Ss,color:"#7c3aed"},{id:"azureBlob",title:"Azure Blob Storage",subtitle:"Arquivos do RAG",Icon:cf,color:"#0891b2"},{id:"azureSearch",title:"Azure AI Search",subtitle:"Indice e busca RAG",Icon:Oc,color:"#16a34a"},{id:"mongodb",title:"MongoDB",subtitle:"Base operacional",Icon:Ss,color:"#15803d"},{id:"webWidget",title:"Web widget",subtitle:"Aparencia e embed",Icon:PS,color:"#2563eb"},{id:"whatsapp",title:"WhatsApp",subtitle:"Canal e entrega",Icon:dj,color:"#0f766e"}];function vf(t){return{...$a,...t||{},openai:{...$a.openai,...(t==null?void 0:t.openai)||{}},azureOpenai:{...$a.azureOpenai,...(t==null?void 0:t.azureOpenai)||{}},gemini:{...$a.gemini,...(t==null?void 0:t.gemini)||{}},claude:{...$a.claude,...(t==null?void 0:t.claude)||{}},grok:{...$a.grok,...(t==null?void 0:t.grok)||{}},bedrock:{...$a.bedrock,...(t==null?void 0:t.bedrock)||{}},milvus:{...$a.milvus,...(t==null?void 0:t.milvus)||{}},azureBlob:{...$a.azureBlob,...(t==null?void 0:t.azureBlob)||{}},azureSearch:{...$a.azureSearch,...(t==null?void 0:t.azureSearch)||{}},mongodb:{...$a.mongodb,...(t==null?void 0:t.mongodb)||{}},webWidget:{...$a.webWidget,...(t==null?void 0:t.webWidget)||{}},whatsapp:{...$a.whatsapp,...(t==null?void 0:t.whatsapp)||{}}}}function Da({path:t,status:n}){return n[t]?e.jsx("small",{className:"provider-secret-hint",children:"Ja configurado. Deixe em branco para manter."}):null}function lv(t,n,r){return t==="openai"?r["openai.apiKey"]||!!n.openai.apiKey:t==="azureOpenai"?!!n.azureOpenai.endpoint&&(r["azureOpenai.apiKey"]||!!n.azureOpenai.apiKey):t==="gemini"?r["gemini.apiKey"]||!!n.gemini.apiKey:t==="claude"?r["claude.apiKey"]||!!n.claude.apiKey:t==="grok"?r["grok.apiKey"]||!!n.grok.apiKey:t==="bedrock"?(r["bedrock.apiKey"]||!!n.bedrock.apiKey)&&!!n.bedrock.baseUrl:t==="milvus"?r["milvus.token"]||!!(n.milvus.address||n.milvus.username):t==="azureBlob"?r["azureBlob.connectionString"]||!!n.azureBlob.containerName:t==="azureSearch"?r["azureSearch.apiKey"]||!!(n.azureSearch.endpoint||n.azureSearch.indexName):t==="mongodb"?r["mongodb.connectionString"]||!!n.mongodb.databaseName:t==="webWidget"?!!(n.webWidget.assistantName||n.webWidget.primaryColor||n.webWidget.welcomeMessage):t==="whatsapp"?n.whatsapp.provider==="blip"?!!n.whatsapp.blipContractId&&(r["whatsapp.blipAuthorizationKey"]||!!n.whatsapp.blipAuthorizationKey):n.whatsapp.provider==="sinch"?n.whatsapp.sinchApiMode==="relay"?!!n.whatsapp.sinchServiceUsername&&(r["whatsapp.sinchServiceToken"]||!!n.whatsapp.sinchServiceToken):!!(n.whatsapp.sinchProjectId&&n.whatsapp.sinchAppId)&&(r["whatsapp.sinchAccessToken"]||!!n.whatsapp.sinchAccessToken):!!n.whatsapp.phoneNumberId&&(r["whatsapp.accessToken"]||!!n.whatsapp.accessToken):!1}function Kk(t,n,r,s){const l=n[t];return l?l.source==="agent"?"Configurado no agente":l.source==="global"?s==="global"?"Configurado":"Herdado do global":l.source==="env"?"Fallback .env":"Nao configurado":r?"Configurado":"Nao configurado"}function cv(t,n){return!n||t.some(r=>r.value===n)?t:[{value:n,label:`${n} (atual)`},...t]}function Qk(t){return t.slice(0,3).toUpperCase()}function Xk(t,n){const r={flowId:n.flowId,flowName:n.flowName||"<NOME_DO_FLUXO>",agentId:n.agentId,channel:"webWidget",userContext:null,theme:{primaryColor:t.primaryColor,accentColor:t.accentColor,assistantName:t.assistantName,subtitle:t.subtitle,welcomeMessage:t.welcomeMessage,placeholder:t.placeholder,bubbleLabel:t.bubbleLabel,avatarText:t.avatarText,openByDefault:t.openByDefault,position:t.position}};return`<script>
|
|
504
|
+
const canvasFlowWidget = ${JSON.stringify(r,null,2).replace(/</g,"\\u003c")};
|
|
505
|
+
const canvasFlowConversationStorageKey =
|
|
506
|
+
"canvasFlowConversationId:" + canvasFlowWidget.agentId + ":" + canvasFlowWidget.flowId;
|
|
507
|
+
const canvasFlowSession = {
|
|
508
|
+
// Anonimo: gere uma vez no browser e guarde.
|
|
509
|
+
// Usuario logado: prefira receber este ID do seu backend/proxy.
|
|
510
|
+
conversationId:
|
|
511
|
+
window.localStorage.getItem(canvasFlowConversationStorageKey) ||
|
|
512
|
+
((window.crypto && crypto.randomUUID) ? crypto.randomUUID() : "web-" + Date.now())
|
|
513
|
+
};
|
|
514
|
+
window.localStorage.setItem(canvasFlowConversationStorageKey, canvasFlowSession.conversationId);
|
|
515
|
+
|
|
516
|
+
async function enviarMensagemCanvasFlow(texto) {
|
|
517
|
+
// O proxy deve validar o usuario logado e pode trocar conversationId/userContext
|
|
518
|
+
// por valores confiaveis do seu sistema antes de chamar o Canvas Flow.
|
|
519
|
+
// Produção: chame seu backend/proxy e injete o Authorization no servidor.
|
|
520
|
+
const response = await fetch("/seu-backend/canvas-flow-proxy", {
|
|
521
|
+
method: "POST",
|
|
522
|
+
headers: { "Content-Type": "application/json" },
|
|
523
|
+
body: JSON.stringify({
|
|
524
|
+
flowId: canvasFlowWidget.flowId,
|
|
525
|
+
agentId: canvasFlowWidget.agentId,
|
|
526
|
+
channel: canvasFlowWidget.channel,
|
|
527
|
+
conversationId: canvasFlowSession.conversationId,
|
|
528
|
+
text: texto,
|
|
529
|
+
slots: {
|
|
530
|
+
webWidget: canvasFlowWidget.theme,
|
|
531
|
+
user: canvasFlowWidget.userContext
|
|
532
|
+
}
|
|
533
|
+
})
|
|
534
|
+
});
|
|
535
|
+
|
|
536
|
+
const data = await response.json();
|
|
537
|
+
// O backend recupera o checkpoint LangGraph usando conversationId.
|
|
538
|
+
return data;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
// Use canvasFlowWidget.theme para montar o botão, janela,
|
|
542
|
+
// cores, textos, posição e estado inicial do widget.
|
|
543
|
+
// Use canvasFlowWidget.userContext apenas para dados nao sensiveis.
|
|
544
|
+
<\/script>`}function Yk({agentId:t,flowId:n,flowName:r,onClose:s}){const[l,p]=b.useState($a),[m,h]=b.useState({}),[f,x]=b.useState({}),[j,w]=b.useState(null),[N,C]=b.useState(null),[E,T]=b.useState("global"),[R,D]=b.useState(!0),[q,I]=b.useState(!1),[F,Y]=b.useState($a.webWidget.openByDefault),[ne,ae]=b.useState(!1),[oe,Q]=b.useState(""),[fe,xe]=b.useState(""),ye=b.useMemo(()=>iv.find($=>$.id===j),[j]),le=String(t||"").trim(),M=le||"default-agent",ee=String(n||"").trim(),H=String(r||"").trim(),se=le||"<AGENTE_ID>",G=ee||"<FLOW_ID_DO_FLUXO>",V=E==="agent"?M:void 0,K=E==="agent"?`Agente: ${M}`:"Global",P=b.useMemo(()=>Xk(l.webWidget,{agentId:se,flowId:G,flowName:H||void 0}),[H,l.webWidget,se,G]),O=($,z)=>{p(Z=>({...Z,[$]:{...Z[$],...z}}))};b.useEffect(()=>{let $=!0;return D(!0),xe(""),Oe.getProviderConfig({agentId:V}).then(z=>{$&&(p(vf(z.settings)),h(z.secretStatus||{}),x(z.providerStatus||{}))}).catch(z=>{$&&xe(z instanceof Error?z.message:"Nao foi possivel carregar os provedores.")}).finally(()=>{$&&D(!1)}),()=>{$=!1}},[V]),b.useEffect(()=>{Y(l.webWidget.openByDefault)},[l.webWidget.openByDefault]);const ve=async()=>{try{await navigator.clipboard.writeText(P),ae(!0),window.setTimeout(()=>ae(!1),1600)}catch{xe("Não foi possível copiar o código do widget.")}},ge=async()=>{if(j){I(!0),xe(""),Q("");try{const $=await Oe.updateProviderConfig({[j]:{...l[j],...j==="whatsapp"||j==="webWidget"?{}:{enabled:lv(j,l,m)}}},{agentId:V});p(vf($.settings)),h($.secretStatus||{}),x($.providerStatus||{}),window.dispatchEvent(new Event("canvas-flow-provider-config-updated")),Q(`Configuracao salva em ${K}.`)}catch($){xe($ instanceof Error?$.message:"Nao foi possivel salvar o provedor.")}finally{I(!1)}}},be=async $=>{I(!0),xe(""),Q("");try{const z=await Oe.deleteProviderConfigSection($,{agentId:V});p(vf(z.settings)),h(z.secretStatus||{}),x(z.providerStatus||{}),w(null),C(null),window.dispatchEvent(new Event("canvas-flow-provider-config-updated")),Q(`Configuracao removida de ${K}.`)}catch(z){xe(z instanceof Error?z.message:"Nao foi possivel remover o provedor.")}finally{I(!1)}},Ce=()=>{if(!j)return null;if(j==="openai")return e.jsxs("div",{className:"provider-form-grid",children:[e.jsxs("label",{children:["API key",e.jsx("input",{type:"password",value:l.openai.apiKey,onChange:$=>O("openai",{apiKey:$.target.value})}),e.jsx(Da,{path:"openai.apiKey",status:m})]}),e.jsxs("label",{children:["Modelo do chat",e.jsx("select",{value:l.openai.chatModel,onChange:$=>O("openai",{chatModel:$.target.value}),children:cv(rv,l.openai.chatModel).map($=>e.jsx("option",{value:$.value,children:$.label},$.value))})]}),e.jsxs("label",{children:["Modelo de embedding",e.jsx("select",{value:l.openai.embeddingModel,onChange:$=>O("openai",{embeddingModel:$.target.value}),children:cv(sv,l.openai.embeddingModel).map($=>e.jsx("option",{value:$.value,children:$.label},$.value))})]}),e.jsxs("label",{children:["Modelo de OCR",e.jsx("input",{list:"provider-chat-model-options",value:l.openai.ocrModel,placeholder:"gpt-4o",onChange:$=>O("openai",{ocrModel:$.target.value})})]})]});if(j==="azureOpenai")return e.jsxs("div",{className:"provider-form-grid",children:[e.jsxs("label",{children:["Endpoint",e.jsx("input",{value:l.azureOpenai.endpoint,placeholder:"https://recurso.openai.azure.com",onChange:$=>O("azureOpenai",{endpoint:$.target.value})})]}),e.jsxs("label",{children:["API key",e.jsx("input",{type:"password",value:l.azureOpenai.apiKey,onChange:$=>O("azureOpenai",{apiKey:$.target.value})}),e.jsx(Da,{path:"azureOpenai.apiKey",status:m})]}),e.jsxs("label",{children:["API version",e.jsx("input",{value:l.azureOpenai.apiVersion,onChange:$=>O("azureOpenai",{apiVersion:$.target.value})})]}),e.jsxs("label",{children:["Deployment/modelo do chat",e.jsx("input",{list:"provider-chat-model-options",value:l.azureOpenai.chatDeploymentName,placeholder:"gpt-5.4-mini ou nome do deployment",onChange:$=>O("azureOpenai",{chatDeploymentName:$.target.value})}),e.jsx("span",{className:"provider-secret-hint",children:"No Azure, informe o nome do deployment criado no portal. Pode ser igual ao modelo, se voce nomeou assim."})]}),e.jsxs("label",{children:["Deployment de embedding",e.jsx("input",{list:"provider-embedding-model-options",value:l.azureOpenai.embeddingDeploymentName,placeholder:"text-embedding-3-large ou nome do deployment",onChange:$=>O("azureOpenai",{embeddingDeploymentName:$.target.value})})]}),e.jsxs("label",{children:["Deployment de OCR",e.jsx("input",{list:"provider-chat-model-options",value:l.azureOpenai.ocrDeploymentName,placeholder:"gpt-4o ou nome do deployment",onChange:$=>O("azureOpenai",{ocrDeploymentName:$.target.value})})]}),e.jsxs("label",{children:["Dimensoes do embedding",e.jsx("input",{type:"number",min:1,value:l.azureOpenai.embeddingDimensions,onChange:$=>O("azureOpenai",{embeddingDimensions:Number($.target.value)||3072})})]})]});if(j==="gemini")return e.jsxs("div",{className:"provider-form-grid",children:[e.jsxs("label",{children:["API key",e.jsx("input",{type:"password",value:l.gemini.apiKey,onChange:$=>O("gemini",{apiKey:$.target.value})}),e.jsx(Da,{path:"gemini.apiKey",status:m})]}),e.jsxs("label",{children:["Modelo do chat",e.jsx("input",{list:"provider-chat-model-options",value:l.gemini.chatModel,placeholder:"gemini-3.5-flash",onChange:$=>O("gemini",{chatModel:$.target.value})})]})]});if(j==="claude")return e.jsxs("div",{className:"provider-form-grid",children:[e.jsxs("label",{children:["API key",e.jsx("input",{type:"password",value:l.claude.apiKey,onChange:$=>O("claude",{apiKey:$.target.value})}),e.jsx(Da,{path:"claude.apiKey",status:m})]}),e.jsxs("label",{children:["Modelo do chat",e.jsx("input",{list:"provider-chat-model-options",value:l.claude.chatModel,placeholder:"claude-sonnet-4-6",onChange:$=>O("claude",{chatModel:$.target.value})})]})]});if(j==="grok")return e.jsxs("div",{className:"provider-form-grid",children:[e.jsxs("label",{children:["API key",e.jsx("input",{type:"password",value:l.grok.apiKey,onChange:$=>O("grok",{apiKey:$.target.value})}),e.jsx(Da,{path:"grok.apiKey",status:m})]}),e.jsxs("label",{children:["Base URL",e.jsx("input",{value:l.grok.baseUrl,placeholder:"https://api.x.ai/v1",onChange:$=>O("grok",{baseUrl:$.target.value})})]}),e.jsxs("label",{children:["Modelo do chat",e.jsx("input",{list:"provider-chat-model-options",value:l.grok.chatModel,placeholder:"grok-2-latest",onChange:$=>O("grok",{chatModel:$.target.value})})]})]});if(j==="bedrock")return e.jsxs("div",{className:"provider-form-grid",children:[e.jsxs("label",{children:["API key do gateway",e.jsx("input",{type:"password",value:l.bedrock.apiKey,onChange:$=>O("bedrock",{apiKey:$.target.value})}),e.jsx(Da,{path:"bedrock.apiKey",status:m})]}),e.jsxs("label",{children:["Base URL",e.jsx("input",{value:l.bedrock.baseUrl,placeholder:"https://seu-gateway-bedrock/v1",onChange:$=>O("bedrock",{baseUrl:$.target.value})}),e.jsx("span",{className:"provider-secret-hint",children:"Use um gateway Bedrock OpenAI-compatible. Assim o Canvas mantém tools, JSON mode e auditoria no mesmo formato."})]}),e.jsxs("label",{children:["Regiao",e.jsx("input",{value:l.bedrock.region,placeholder:"us-east-1",onChange:$=>O("bedrock",{region:$.target.value})})]}),e.jsxs("label",{children:["Modelo do chat",e.jsx("input",{list:"provider-chat-model-options",value:l.bedrock.chatModel,placeholder:"anthropic.claude-sonnet-4-6",onChange:$=>O("bedrock",{chatModel:$.target.value})})]})]});if(j==="milvus")return e.jsxs("div",{className:"provider-form-grid",children:[e.jsxs("label",{children:["Address",e.jsx("input",{value:l.milvus.address,placeholder:"host:19530",onChange:$=>O("milvus",{address:$.target.value})})]}),e.jsxs("label",{children:["Token",e.jsx("input",{type:"password",value:l.milvus.token,onChange:$=>O("milvus",{token:$.target.value})}),e.jsx(Da,{path:"milvus.token",status:m})]}),e.jsxs("label",{children:["Username",e.jsx("input",{value:l.milvus.username,onChange:$=>O("milvus",{username:$.target.value})})]}),e.jsxs("label",{children:["Password",e.jsx("input",{type:"password",value:l.milvus.password,onChange:$=>O("milvus",{password:$.target.value})}),e.jsx(Da,{path:"milvus.password",status:m})]}),e.jsxs("label",{children:["Collection padrao",e.jsx("input",{value:l.milvus.collectionName,onChange:$=>O("milvus",{collectionName:$.target.value})})]})]});if(j==="azureBlob")return e.jsxs("div",{className:"provider-form-grid",children:[e.jsxs("label",{children:["Connection string",e.jsx("input",{type:"password",value:l.azureBlob.connectionString,onChange:$=>O("azureBlob",{connectionString:$.target.value})}),e.jsx(Da,{path:"azureBlob.connectionString",status:m})]}),e.jsxs("label",{children:["Container",e.jsx("input",{value:l.azureBlob.containerName,onChange:$=>O("azureBlob",{containerName:$.target.value})})]})]});if(j==="azureSearch")return e.jsxs("div",{className:"provider-form-grid",children:[e.jsxs("label",{children:["Endpoint",e.jsx("input",{value:l.azureSearch.endpoint,placeholder:"https://servico.search.windows.net",onChange:$=>O("azureSearch",{endpoint:$.target.value})})]}),e.jsxs("label",{children:["API key",e.jsx("input",{type:"password",value:l.azureSearch.apiKey,onChange:$=>O("azureSearch",{apiKey:$.target.value})}),e.jsx(Da,{path:"azureSearch.apiKey",status:m})]}),e.jsxs("label",{children:["Index padrao",e.jsx("input",{value:l.azureSearch.indexName,onChange:$=>O("azureSearch",{indexName:$.target.value})})]}),e.jsxs("label",{children:["API version",e.jsx("input",{value:l.azureSearch.apiVersion,onChange:$=>O("azureSearch",{apiVersion:$.target.value})})]})]});if(j==="whatsapp")return e.jsxs("div",{className:"provider-form-grid",children:[e.jsxs("label",{children:["Provedor WhatsApp",e.jsxs("select",{value:l.whatsapp.provider,onChange:$=>O("whatsapp",{provider:$.target.value}),children:[e.jsx("option",{value:"meta",children:"Meta Cloud API"}),e.jsx("option",{value:"blip",children:"Blip"}),e.jsx("option",{value:"sinch",children:"Sinch"})]})]}),e.jsxs("label",{children:["Modo de entrega",e.jsxs("select",{value:l.whatsapp.deliveryMode||"provider",onChange:$=>O("whatsapp",{deliveryMode:$.target.value}),children:[e.jsx("option",{value:"provider",children:"Enviar pelo provedor"}),e.jsx("option",{value:"apiResponse",children:"Responder no payload da API"})]})]}),e.jsxs("label",{className:"provider-checkbox-label",children:[e.jsx("input",{type:"checkbox",checked:l.whatsapp.autoReply!==!1,onChange:$=>O("whatsapp",{autoReply:$.target.checked})}),"Responder automaticamente mensagens do assistente"]}),l.whatsapp.provider==="meta"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Verify token",e.jsx("input",{value:l.whatsapp.verifyToken,onChange:$=>O("whatsapp",{verifyToken:$.target.value})})]}),e.jsxs("label",{children:["Business Account ID",e.jsx("input",{value:l.whatsapp.businessAccountId||"",onChange:$=>O("whatsapp",{businessAccountId:$.target.value})})]}),e.jsxs("label",{children:["Phone Number ID",e.jsx("input",{value:l.whatsapp.phoneNumberId,onChange:$=>O("whatsapp",{phoneNumberId:$.target.value})})]}),e.jsxs("label",{children:["Access token",e.jsx("input",{type:"password",value:l.whatsapp.accessToken,onChange:$=>O("whatsapp",{accessToken:$.target.value})}),e.jsx(Da,{path:"whatsapp.accessToken",status:m})]}),e.jsxs("label",{children:["Graph API version",e.jsx("input",{value:l.whatsapp.graphApiVersion,onChange:$=>O("whatsapp",{graphApiVersion:$.target.value})})]})]}),l.whatsapp.provider==="blip"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Contract ID",e.jsx("input",{value:l.whatsapp.blipContractId||"",onChange:$=>O("whatsapp",{blipContractId:$.target.value})})]}),e.jsxs("label",{children:["Authorization key",e.jsx("input",{type:"password",value:l.whatsapp.blipAuthorizationKey||"",onChange:$=>O("whatsapp",{blipAuthorizationKey:$.target.value})}),e.jsx(Da,{path:"whatsapp.blipAuthorizationKey",status:m})]})]}),l.whatsapp.provider==="sinch"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["API Sinch",e.jsxs("select",{value:l.whatsapp.sinchApiMode||"conversation",onChange:$=>O("whatsapp",{sinchApiMode:$.target.value}),children:[e.jsx("option",{value:"conversation",children:"Conversation API"}),e.jsx("option",{value:"relay",children:"Relay/API response"})]})]}),e.jsxs("label",{children:["Regiao",e.jsx("input",{value:l.whatsapp.sinchRegion||"us",onChange:$=>O("whatsapp",{sinchRegion:$.target.value})})]}),e.jsxs("label",{children:["Canal",e.jsx("input",{value:l.whatsapp.sinchChannel||"WHATSAPP",onChange:$=>O("whatsapp",{sinchChannel:$.target.value})})]}),l.whatsapp.sinchApiMode==="relay"?e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Service number",e.jsx("input",{value:l.whatsapp.sinchServiceNumber||"",onChange:$=>O("whatsapp",{sinchServiceNumber:$.target.value})})]}),e.jsxs("label",{children:["Service username",e.jsx("input",{value:l.whatsapp.sinchServiceUsername||"",onChange:$=>O("whatsapp",{sinchServiceUsername:$.target.value})})]}),e.jsxs("label",{children:["Service token",e.jsx("input",{type:"password",value:l.whatsapp.sinchServiceToken||"",onChange:$=>O("whatsapp",{sinchServiceToken:$.target.value})}),e.jsx(Da,{path:"whatsapp.sinchServiceToken",status:m})]})]}):e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Project ID",e.jsx("input",{value:l.whatsapp.sinchProjectId||"",onChange:$=>O("whatsapp",{sinchProjectId:$.target.value})})]}),e.jsxs("label",{children:["App ID",e.jsx("input",{value:l.whatsapp.sinchAppId||"",onChange:$=>O("whatsapp",{sinchAppId:$.target.value})})]}),e.jsxs("label",{children:["Access token",e.jsx("input",{type:"password",value:l.whatsapp.sinchAccessToken||"",onChange:$=>O("whatsapp",{sinchAccessToken:$.target.value})}),e.jsx(Da,{path:"whatsapp.sinchAccessToken",status:m})]})]})]})]});if(j==="webWidget"){const $=l.webWidget,z=$.position==="left"?"left":"right";return e.jsxs("div",{className:"provider-form-grid",children:[e.jsxs("label",{children:["Cor principal",e.jsxs("div",{className:"widget-color-row",children:[e.jsx("input",{"aria-label":"Cor principal",type:"color",value:l.webWidget.primaryColor,onChange:Z=>O("webWidget",{primaryColor:Z.target.value})}),e.jsx("input",{value:l.webWidget.primaryColor,onChange:Z=>O("webWidget",{primaryColor:Z.target.value})})]})]}),e.jsxs("label",{children:["Cor de destaque",e.jsxs("div",{className:"widget-color-row",children:[e.jsx("input",{"aria-label":"Cor de destaque",type:"color",value:l.webWidget.accentColor,onChange:Z=>O("webWidget",{accentColor:Z.target.value})}),e.jsx("input",{value:l.webWidget.accentColor,onChange:Z=>O("webWidget",{accentColor:Z.target.value})})]})]}),e.jsxs("label",{children:["Posicao",e.jsxs("select",{value:l.webWidget.position,onChange:Z=>O("webWidget",{position:Z.target.value}),children:[e.jsx("option",{value:"right",children:"Direita"}),e.jsx("option",{value:"left",children:"Esquerda"})]})]}),e.jsxs("label",{className:"provider-checkbox-label",children:[e.jsx("input",{type:"checkbox",checked:l.webWidget.openByDefault===!0,onChange:Z=>O("webWidget",{openByDefault:Z.target.checked})}),"Manter aberto ao carregar"]}),e.jsxs("label",{children:["Nome do assistente",e.jsx("input",{value:l.webWidget.assistantName,onChange:Z=>O("webWidget",{assistantName:Z.target.value})})]}),e.jsxs("label",{children:["Subtitulo",e.jsx("input",{value:l.webWidget.subtitle,onChange:Z=>O("webWidget",{subtitle:Z.target.value})})]}),e.jsxs("label",{children:["Mensagem inicial",e.jsx("textarea",{rows:3,value:l.webWidget.welcomeMessage,onChange:Z=>O("webWidget",{welcomeMessage:Z.target.value})})]}),e.jsxs("label",{children:["Placeholder",e.jsx("input",{value:l.webWidget.placeholder,onChange:Z=>O("webWidget",{placeholder:Z.target.value})})]}),e.jsxs("label",{children:["Balao",e.jsx("input",{value:l.webWidget.bubbleLabel,onChange:Z=>O("webWidget",{bubbleLabel:Z.target.value})})]}),e.jsxs("label",{children:["Avatar",e.jsx("input",{value:l.webWidget.avatarText,onChange:Z=>O("webWidget",{avatarText:Qk(Z.target.value)})})]}),e.jsxs("section",{className:"provider-widget-context-card",children:[e.jsxs("div",{children:[e.jsx(Zs,{size:18}),e.jsx("strong",{children:"Contexto da conversa"})]}),e.jsx("p",{children:"O backend usa LangGraph para recuperar o checkpoint pelo conversationId. Em producao, o recomendado e o seu backend/proxy controlar o conversationId do usuario logado e chamar o Canvas Flow com Authorization fora do navegador."}),e.jsxs("ul",{children:[e.jsx("li",{children:"Usuario anonimo: gere um conversationId uma vez e guarde no browser."}),e.jsx("li",{children:"Usuario logado: derive o conversationId no backend, por exemplo pelo ID interno do usuario ou da sessao."}),e.jsx("li",{children:"Contexto do usuario entra em slots.user, somente com dados nao sensiveis."}),e.jsx("li",{children:"Para continuar a conversa, reenvie o mesmo conversationId. O backend mantem o no atual e os slots."})]})]}),e.jsxs("div",{className:"provider-widget-live",children:[e.jsxs("section",{className:"provider-widget-panel",children:[e.jsx("div",{className:"provider-widget-panel-header",children:e.jsxs("div",{children:[e.jsx("strong",{children:"Prévia do widget"}),e.jsx("span",{children:"Amostra visual com a configuração atual."})]})}),e.jsxs("div",{className:"provider-widget-stage",children:[e.jsxs("header",{className:"provider-widget-site-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Site do cliente"}),e.jsx("span",{children:"Atendimento online"})]}),e.jsxs("nav",{children:[e.jsx("span",{children:"Produtos"}),e.jsx("span",{children:"Contato"})]})]}),e.jsx("main",{className:"provider-widget-site-body",children:e.jsxs("section",{children:[e.jsx("span",{children:"Web widget"}),e.jsx("strong",{children:"Experiência no site"}),e.jsx("p",{children:"Prévia de abertura, cores e textos do atendimento."})]})}),e.jsxs("div",{className:`web-widget-preview ${z}`,children:[F&&e.jsxs("div",{className:"web-widget-window",style:{"--widget-primary":$.primaryColor,"--widget-accent":$.accentColor},children:[e.jsxs("div",{className:"web-widget-header",children:[e.jsx("div",{className:"web-widget-avatar",children:$.avatarText||"IA"}),e.jsxs("div",{children:[e.jsx("strong",{children:$.assistantName||"Assistente IA"}),e.jsx("span",{children:$.subtitle||"Online agora"})]}),e.jsx("button",{type:"button","aria-label":"Fechar preview",onClick:()=>Y(!1),children:e.jsx(Vt,{size:16})})]}),e.jsxs("div",{className:"web-widget-messages",children:[e.jsx("div",{className:"web-widget-day",children:"Hoje"}),e.jsxs("div",{className:"web-widget-bubble assistant",children:[e.jsx(Ho,{size:14}),e.jsx("p",{children:$.welcomeMessage||"Olá! Como posso ajudar?"})]}),e.jsxs("div",{className:"web-widget-quick-replies",children:[e.jsx("button",{type:"button",children:"Falar com atendimento"}),e.jsx("button",{type:"button",children:"Consultar pedido"})]}),e.jsx("div",{className:"web-widget-bubble user",children:e.jsx("p",{children:"Quero tirar uma dúvida."})}),e.jsx("div",{className:"web-widget-bubble assistant compact",children:e.jsx("p",{children:"Claro. Me conte o que você precisa."})})]}),e.jsxs("div",{className:"web-widget-input",children:[e.jsx("input",{value:"",readOnly:!0,placeholder:$.placeholder||"Digite sua mensagem"}),e.jsx("button",{type:"button","aria-label":"Enviar preview",children:e.jsx(mj,{size:17})})]})]}),e.jsxs("button",{type:"button",className:`web-widget-launcher ${F?"open":""}`,style:{"--widget-primary":$.primaryColor,"--widget-accent":$.accentColor},onClick:()=>Y(Z=>!Z),children:[e.jsx(dj,{size:22}),!F&&$.bubbleLabel&&e.jsx("span",{children:$.bubbleLabel})]})]})]})]}),e.jsxs("section",{className:"provider-widget-panel",children:[e.jsxs("div",{className:"provider-widget-panel-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Código do widget"}),e.jsxs("span",{children:["Agente: ",se," · Fluxo: ",ee?G:"salve o fluxo para gerar o flowId"]})]}),e.jsxs("button",{type:"button",className:"primary-button",onClick:ve,children:[ne?e.jsx(Ji,{size:15}):e.jsx(nn,{size:15}),ne?"Copiado":"Copiar código"]})]}),e.jsx("pre",{className:"provider-widget-code-block",children:e.jsx("code",{children:P})})]})]})]})}return e.jsxs("div",{className:"provider-form-grid",children:[e.jsxs("label",{children:["Connection string",e.jsx("input",{type:"password",value:l.mongodb.connectionString,onChange:$=>O("mongodb",{connectionString:$.target.value})}),e.jsx(Da,{path:"mongodb.connectionString",status:m})]}),e.jsxs("label",{children:["Database",e.jsx("input",{value:l.mongodb.databaseName,onChange:$=>O("mongodb",{databaseName:$.target.value})})]})]})};return e.jsxs("div",{className:"provider-config-shell",children:[e.jsx("datalist",{id:"provider-chat-model-options",children:rv.map($=>e.jsx("option",{value:$.value},$.value))}),e.jsx("datalist",{id:"provider-embedding-model-options",children:sv.map($=>e.jsx("option",{value:$.value},$.value))}),e.jsxs("div",{className:"provider-config-intro",children:[e.jsxs("div",{children:[e.jsxs("strong",{children:[e.jsx(Zs,{size:17})," Provedores do Canvas Flow"]}),e.jsx("p",{children:"Configure credenciais, modelos padrão e deployments globais ou sobrescreva por agente."})]}),e.jsxs("button",{type:"button",className:"primary-button",onClick:ge,disabled:q||R||!j,children:[q?e.jsx(Ut,{size:15,className:"spin"}):e.jsx(Rl,{size:15}),"Salvar"]})]}),e.jsxs("div",{className:"provider-scope-bar",children:[e.jsx("span",{children:"Escopo"}),e.jsxs("div",{className:"provider-scope-toggle",children:[e.jsx("button",{type:"button",className:E==="global"?"active":"",onClick:()=>T("global"),children:"Global"}),e.jsx("button",{type:"button",className:E==="agent"?"active":"",onClick:()=>T("agent"),children:"Agente atual"})]}),e.jsx("small",{children:E==="agent"?`Usando sobrescritas para ${M}. Campos vazios herdam o Global.`:"Usado como fallback para todos os agentes."})]}),R&&e.jsx("div",{className:"provider-config-status",children:"Carregando configuracoes..."}),fe&&e.jsx("div",{className:"api-keys-error",children:fe}),oe&&e.jsx("div",{className:"provider-config-success",children:oe}),!j&&e.jsx("div",{className:"provider-component-grid",children:iv.map($=>{const z=$.Icon,Z=lv($.id,l,m),he=Kk($.id,f,Z,E),Be=he!=="Nao configurado";return e.jsxs("div",{role:"button",tabIndex:0,className:"provider-component-card",onClick:()=>w($.id),onKeyDown:at=>{(at.key==="Enter"||at.key===" ")&&(at.preventDefault(),w($.id))},style:{borderColor:`${$.color}40`},children:[e.jsx("span",{className:"provider-card-icon",style:{color:$.color,background:`${$.color}12`},children:e.jsx(z,{size:19})}),e.jsxs("span",{className:"provider-card-main",children:[e.jsx("strong",{children:$.title}),e.jsx("small",{children:$.subtitle}),e.jsx("em",{className:Be?"configured":void 0,children:he})]}),e.jsx("span",{role:"button",tabIndex:0,className:"provider-card-delete",onClick:at=>{at.stopPropagation(),C($.id)},onKeyDown:at=>{(at.key==="Enter"||at.key===" ")&&(at.preventDefault(),at.stopPropagation(),C($.id))},children:e.jsx(Nt,{size:14})})]},$.id)})}),j&&ye&&e.jsxs("div",{className:"provider-editor",children:[e.jsxs("div",{className:"provider-editor-header",children:[e.jsxs("button",{type:"button",onClick:()=>w(null),children:[e.jsx(yS,{size:15}),"Voltar"]}),e.jsxs("div",{children:[e.jsx("strong",{children:ye.title}),e.jsx("span",{children:ye.subtitle})]}),e.jsxs("button",{type:"button",className:"danger-button compact-danger-button",onClick:()=>C(j),children:[e.jsx(Nt,{size:14}),"Excluir"]})]}),Ce()]}),e.jsxs("div",{className:"modal-actions",children:[e.jsx("button",{type:"button",onClick:s,children:"Fechar"}),e.jsxs("button",{type:"button",className:"primary-button",onClick:ge,disabled:q||R||!j,children:[q?e.jsx(Ut,{size:15,className:"spin"}):e.jsx(Rl,{size:15}),"Salvar"]})]}),N&&e.jsxs("div",{className:"provider-delete-confirm",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Excluir configuracao?"}),e.jsx("p",{children:"Os campos salvos deste provedor serao limpos, incluindo segredos armazenados."})]}),e.jsxs("div",{className:"modal-actions",children:[e.jsx("button",{type:"button",onClick:()=>C(null),children:"Cancelar"}),e.jsxs("button",{type:"button",className:"danger-button",onClick:()=>void be(N),disabled:q,children:[q?e.jsx(Ut,{size:15,className:"spin"}):e.jsx(Nt,{size:15}),"Excluir"]})]})]})]})}const Zk={primaryColor:"#0f6bff",accentColor:"#00b37e",assistantName:"Assistente IA",subtitle:"Online agora",welcomeMessage:"Ola! Como posso ajudar?",placeholder:"Digite sua mensagem",bubbleLabel:"Precisa de ajuda?",avatarText:"IA",openByDefault:!1,position:"right"};function Dd(t){return{...Zk,...t||{}}}const uv={provider:"meta",deliveryMode:"provider",verifyToken:"canvas-flow-token",businessAccountId:"",phoneNumberId:"",accessToken:"",graphApiVersion:"v20.0",autoReply:!0,blipContractId:"",blipAuthorizationKey:"",sinchProjectId:"",sinchAppId:"",sinchRegion:"us",sinchAccessToken:"",sinchChannel:"WHATSAPP",sinchApiMode:"conversation",sinchServiceNumber:"",sinchServiceUsername:"",sinchServiceToken:""};function Kp(t){const n=t||{};return{...uv,...t||{},sinchApiMode:n.sinchApiMode==="broker"?"relay":n.sinchApiMode||uv.sinchApiMode,sinchServiceNumber:n.sinchServiceNumber||n.sinchBrokerNumber||"",sinchServiceUsername:n.sinchServiceUsername||n.sinchBrokerUsername||n.sinchBrokerNumber||"",sinchServiceToken:n.sinchServiceToken||n.sinchBrokerToken||""}}function ko(t){return`${t}-${Math.random().toString(36).slice(2,9)}-${Date.now().toString(36)}`}function jt(t,n,r){const s={id:ko(t),type:t,title:"",instruction:"",position:{x:120+n*230,y:180+n%2*160},tags:[]};if(t==="message")return{...s,title:"Mensagem",instruction:"Escreva a mensagem para o usuário.",messageUseLlm:!1,messageLlmModel:"",messageLlmTemperature:.4};if(t==="richMessage")return{...s,title:"Mensagem rica",instruction:"Mensagem interativa por canal.",richMessage:{type:"buttons",text:"Escolha uma opcao:",footer:"",media:{url:"",fileName:"",mimeType:""},buttons:[{id:"sim",label:"Sim",value:"sim"},{id:"nao",label:"Não",value:"nao"}],quickReplies:[{id:"ajuda",label:"Ajuda",value:"ajuda"},{id:"falar_atendente",label:"Atendente",value:"atendente"}],list:{buttonText:"Ver opções",sections:[{title:"Opções",items:[{id:"produto",title:"Produto",description:"Ver produtos",value:"produto"},{id:"suporte",title:"Suporte",description:"Falar com suporte",value:"suporte"}]}]},carousel:{cards:[{id:"card-1",title:"Produto exemplo",subtitle:"Descricao curta do produto.",imageUrl:"",buttons:[{id:"ver_produto",label:"Ver produto",value:"ver_produto"}]}]},appointmentFlow:{mode:"auto",flowId:"",flowToken:"{{context.conversationId}}",flowCta:"Agendar",flowScreen:"START",headerText:"Agendamento",buttonText:"Ver opções",stage:"actions",stageTemplate:"{{context.slots.appointmentStage}}",actionsTemplate:"",appointmentsTemplate:"{{context.slots.appointments}}",providersTemplate:"{{context.slots.providers}}",servicesTemplate:"{{context.slots.services}}",datesTemplate:"{{context.slots.dates}}",timesTemplate:"{{context.slots.times}}",itemsTemplate:"{{context.slots.items}}",itemsFilterTemplate:"",itemsMaxSelected:20,examsTemplate:"{{context.slots.exams}}",payloadTemplate:"{}",stepOrder:["providers","services","items","dates","times"],stepLabels:{actions:"Ações iniciais",appointments:"Meus agendamentos",providers:"Prestadores",services:"Serviços",dates:"Datas",times:"Horários",items:"Itens selecionáveis"},attachmentSteps:[],llmEnabled:!1,llmSourceTemplate:"{{context.slots.schedules}}",llmInstruction:"Receba os agendamentos/horários brutos e retorne providers, services, items, dates, times e appointments no formato do WhatsApp Flow.",llmModel:"",llmTemperature:.1},generation:{enabled:!1,prompt:"Gere opções objetivas em pt-BR com base no contexto da conversa e no texto principal.",model:"",maxItems:3}}};if(t==="input")return{...s,title:"Coletar dado",instruction:"Informe o dado para continuar.",responseName:"input",inputValidationMode:"none",inputValidationType:"text",inputValidationRegex:"",inputValidationErrorMessage:"Valor inválido. Informe novamente.",inputValidationLlmInstruction:"Valide se a entrada do usuário atende ao dado solicitado.",inputValidationLlmModel:"",inputValidationLlmTemperature:0};if(t==="api")return{...s,title:"API httpBatch",instruction:"Execute uma ou mais chamadas HTTP.",responseName:"api",api:{responseName:"api",requests:[{method:"GET",url:"https://example.com",headers:{},params:{},bodyType:"none"}],generation:{enabled:!1,prompt:"Monte uma ou mais chamadas HTTP usando o contexto do fluxo.",model:"",temperature:.2,fallbackToManual:!0}}};if(t==="condition")return{...s,title:"Condição",instruction:'context.slots.input === "ok"',responseName:"condition",condition:'context.slots.input === "ok"',conditionMode:"js"};if(t==="end")return{...s,title:"Responder",instruction:"Fluxo finalizado."};if(t==="group")return{...s,title:"Encapsulador",instruction:"Arraste ou selecione nós para colocar aqui.",group:{width:520,height:340}};if(r==="debug")return{...s,type:"component",title:"Debug",instruction:"Registra um snapshot do contexto.",responseName:"debug",component:{type:"debug",responseName:"debug"}};if(r==="mongodb")return{...s,type:"component",title:"MongoDB",instruction:"Conecta em uma collection para CRUD ou registro analítico.",responseName:"mongo",component:{type:"mongodb",responseName:"mongo",mongoOperation:"insertOne",mongoCollectionName:"flow_events",mongoFilter:"{}",mongoDocument:"{}",mongoUpdate:"{}",mongoPipeline:"[]",mongoProjection:"{}",mongoSort:'{"createdAt": -1}',mongoLimit:50,mongoPage:1,mongoSkip:0,mongoPaginationMode:"single",mongoMaxPages:5,mongoDateField:"createdAt",mongoDateStart:"",mongoDateEnd:"",mongoDateTimezone:"America/Sao_Paulo",mongoUseLlmFilter:!1,mongoLlmMode:"filter",mongoLlmInstruction:"",mongoLlmModel:""}};if(r==="openaiGen"||r==="azureOpenAI"){const l=r==="azureOpenAI";return{...s,type:"component",title:l?"Azure OpenAI":"Agente",instruction:l?"Gera resposta usando Azure OpenAI.":"Agente LLM que usa o Agent Workspace para rules, skills, subagents, MCP e guardrails.",responseName:l?"azureOpenAI":"agente",component:{type:r,responseName:l?"azureOpenAI":"agente",ragLlmProvider:l?"azure_openai":"auto",ragLlmModel:"",agentRole:l?void 0:"simple",agentUseWorkspaceCatalog:!0,agentExecutionMode:l?"flow":"hybrid",agentMaxToolCalls:1,queryTemplate:"{{context.slots.userInput}}",llmContextTemplate:"",ragDocsPath:"",prompt:"Responda em pt-BR de forma objetiva usando os documentos conectados quando existirem.",turnHistoricMessages:20,agentSpec:l?void 0:{agentsMd:"",guardrails:"",blockedTerms:[]}}}}if(r==="agentPlan")return{...s,type:"component",title:"Agent Plan",instruction:"Define como o agente deve planejar antes de chamar skills, subagents e MCP.",responseName:"agentPlan",component:{type:"agentPlan",responseName:"agentPlan",agentPlanMode:"advisory",agentPlanInstructions:["Quebre pedidos com multiplas intencoes em uma etapa por ferramenta.","Use somente ferramentas que estejam no manifesto visivel do agente.","Nao use tradutor para resumir, nem resumidor para traduzir."].join(`
|
|
545
|
+
`),agentPlanJson:`{
|
|
546
|
+
"plan": []
|
|
547
|
+
}`,agentPlanMaxToolCalls:3,agentPlanClearAfterUse:!0}};if(r==="mcp")return{...s,type:"component",title:"MCP",instruction:"Executa uma ferramenta MCP-style com contrato, LLM e schema.",responseName:"mcp",component:{type:"mcp",responseName:"mcp",mcpMode:"fields",mcpToolName:"montar_campos",mcpToolDescription:"Monta campos estruturados para o fluxo com base no contexto.",mcpInstruction:"Use o contexto do fluxo e retorne somente os campos solicitados no schema de saída.",mcpInputSchema:`{
|
|
548
|
+
"type": "object",
|
|
549
|
+
"properties": {
|
|
550
|
+
"input": { "type": "string", "description": "Entrada do usuário" }
|
|
551
|
+
}
|
|
552
|
+
}`,mcpOutputSchema:`{
|
|
553
|
+
"type": "object",
|
|
554
|
+
"properties": {
|
|
555
|
+
"status": { "type": "string" },
|
|
556
|
+
"campos": { "type": "object" }
|
|
557
|
+
}
|
|
558
|
+
}`,mcpLlmProvider:"auto",mcpModel:"",mcpTemperature:.1,mcpApiMethod:"POST",mcpApiBaseUrl:"",mcpApiHeadersJson:"{}",mcpApiQueryJson:"{}",mcpApiBodyJson:"{}",mcpApiAuthMode:"none",mcpApiAuthHeaderName:"Authorization",mcpApiAuthQueryParam:"api_key",mcpApiAllowLlmRequest:!0,mcpApiMapResultWithLlm:!0,mcpApiExecute:!0,mcpApiCallMode:"single",mcpApiExecutionMode:"sequential",mcpApiRequestsJson:"[]",mcpMergeOutputToSlots:!1,mcpExternalTransport:"streamable_http",mcpExternalUrl:"",mcpExternalHeadersJson:"{}",mcpExternalAuthMode:"none",mcpExternalOAuthConnectionScope:"agent",mcpExternalAuthHeaderName:"Authorization",mcpExternalAuthQueryParam:"api_key",mcpExternalOperation:"callTool",mcpExternalToolName:"",mcpExternalArgumentsJson:"{}",mcpExternalResourceUri:"",mcpExternalPromptName:"",mcpExternalPromptArgumentsJson:"{}",mcpExternalUseLlmArguments:!0,mcpExternalMapResultWithLlm:!0,mcpExternalTimeoutMs:3e4}};if(r==="files")return{...s,type:"component",title:"Arquivos",instruction:"Leia arquivos enviados ou uma URL e salve o texto no contexto.",responseName:"arquivos",component:{type:"files",responseName:"arquivos",filesSourceMode:"upload",filesResultMode:"context",filesUploaded:[],filesUrlTemplate:"",filesPreferOcr:!1,filesMaxTextChars:6e4,filesLlmProvider:"auto",filesLlmModel:"",filesLlmPrompt:"Leia os arquivos conectados e responda ao usuario em pt-BR de forma objetiva.",filesQuestionTemplate:"{{context.slots.userInput}}",filesLlmTemperature:.2,filesOperation:"read",filesOutputFormat:"docx",filesOutputFilenameTemplate:"artefato.docx",filesContentTemplate:"",filesTemplateDocumentId:"",filesTemplateDocumentIds:[],filesTemplateValuesJson:"{}",filesGenerationPrompt:"",filesUseDocumentSkill:!0,filesDocumentSkillPrompt:"",ragDocsPath:""}};if(r==="approval")return{...s,type:"component",title:"Aprovação humana",instruction:"Revise e aprove antes de executar a próxima ação sensível.",responseName:"aprovacao",component:{type:"approval",responseName:"aprovacao",approvalTitle:"Aprovar ação sensível",approvalDescription:"Um operador precisa revisar esta etapa antes de continuar.",approvalRisk:"high",approvalScopes:["write","external_api"],approvalApproverHint:"Operador humano",approvalKeyword:"aprovar",approvalRejectKeyword:"reprovar",approvalApprovedText:"Aprovado. Vou continuar.",approvalRejectedText:"Reprovado. A ação foi bloqueada.",approvalRequireExplicitInput:!0}};if(r==="milvus")return{...s,type:"component",title:"Milvus",instruction:"Busca documentos vetoriais no Milvus.",responseName:"milvus",component:{type:"milvus",responseName:"milvus",ragOperation:"search",collectionName:"",ragEmbeddingProvider:"openai",ragEmbeddingModel:"",ragUseAgentFilter:!0,ragAgentIdTemplate:"",ragDocumentsPath:"",queryTemplate:"{{context.slots.userInput}}",ragTextTemplate:"",ragTextPath:"",ragEmbeddingNameTemplate:"Documento",ragEmbeddingIdTemplate:"",ragExtraFieldsJson:`{
|
|
559
|
+
"source": "canvas-flow"
|
|
560
|
+
}`,ragChunkSize:512,ragChunkOverlap:70,k:8,useHybrid:!0,filterExpr:"",extraFieldsFilter:{},order:"desc"}};if(r==="azureSearch")return{...s,type:"component",title:"Azure AI Search",instruction:"Busca documentos no indice Azure AI Search.",responseName:"azureSearch",component:{type:"azureSearch",responseName:"azureSearch",ragOperation:"search",collectionName:"",ragEmbeddingProvider:"openai",ragEmbeddingModel:"",ragUseAgentFilter:!0,ragAgentIdTemplate:"",ragDocumentsPath:"",queryTemplate:"{{context.slots.userInput}}",ragTextTemplate:"",ragTextPath:"",ragEmbeddingNameTemplate:"Documento",ragEmbeddingIdTemplate:"",ragExtraFieldsJson:`{
|
|
561
|
+
"source": "canvas-flow"
|
|
562
|
+
}`,ragChunkSize:512,ragChunkOverlap:70,k:8,extraFieldsFilter:{},order:"desc"}};if(r==="azureBlob")return{...s,type:"component",title:"Azure Blob Storage",instruction:"Grava um payload no Azure Blob Storage.",responseName:"azureBlob",component:{type:"azureBlob",responseName:"azureBlob",azureBlobOperation:"upload",azureBlobNameTemplate:"canvas-flow/{{context.conversationId}}/{{context.now}}.json",azureBlobContentTemplate:"{{context.slots}}",azureBlobContentPath:"",azureBlobContentType:"application/json",collectionName:"",ragEmbeddingProvider:"openai",ragEmbeddingModel:"",ragUseAgentFilter:!0,ragAgentIdTemplate:"",ragDocumentsPath:"",ragTextTemplate:"",ragTextPath:"",ragEmbeddingNameTemplate:"Documento",ragEmbeddingIdTemplate:"",ragExtraFieldsJson:`{
|
|
563
|
+
"source": "canvas-flow-blob"
|
|
564
|
+
}`,ragChunkSize:512,ragChunkOverlap:70}};if(r==="dashboard")return{...s,type:"component",title:"Dashboard",instruction:"Monta dados analíticos usando trace, MongoDB, API externa ou Milvus.",responseName:"dashboard",component:{type:"dashboard",responseName:"dashboard",dashboardTitle:"Analítico do fluxo",dashboardSource:"trace",dashboardMode:"summary",dashboardCollectionName:"flow_events",dashboardPipeline:"[]",dashboardApiRequests:"[]",dashboardQueryTemplate:"{{context.slots.userInput}}",dashboardK:10,dashboardFilterExpr:"",dashboardIncludeTrace:!0,dashboardShowTable:!1,dashboardUseLlm:!0,dashboardLlmPrompt:"Monte um gráfico objetivo em pt-BR com labels curtos e valores numéricos a partir dos dados analíticos.",dashboardModel:""}};if(r==="cron")return{...s,type:"component",title:"CRON",instruction:"Executa o fluxo automaticamente conforme o agendamento.",responseName:"cron",component:{type:"cron",responseName:"cron",cronEnabled:!1,cronMode:"interval",cronIntervalValue:15,cronIntervalUnit:"minutes",cronTime:"09:00",cronWeekday:1,cronMonthDay:1,cronTimezone:"America/Sao_Paulo",cronRunFrom:"cronNode",cronInputText:"",cronSlotsJson:"{}",cronExecutionLog:[]}};if(r==="loop")return{...s,type:"component",title:"Loop",instruction:"Repete a saída enquanto não atingir o limite ou até a condição JS parar.",responseName:"loop",component:{type:"loop",responseName:"loop",loopResponseName:"loop",loopIndexResponseName:"loopIndex",loopMaxIterations:3,loopDelaySeconds:0,loopStopCondition:""}};if(r==="context")return{...s,type:"component",title:"Contexto",instruction:"Cria ou atualiza variaveis em context.slots por JSON, JS ou LLM.",responseName:"context",component:{type:"context",responseName:"context",contextMode:"json",contextJson:`{
|
|
565
|
+
"novoPayload": {
|
|
566
|
+
"input": "{{context.slots.input}}"
|
|
567
|
+
}
|
|
568
|
+
}`,contextScript:`const itens = Array.isArray(context.slots.itens) ? context.slots.itens : [];
|
|
569
|
+
return {
|
|
570
|
+
totalItens: itens.length,
|
|
571
|
+
itensNormalizados: itens.map((item) => String(item).trim()).filter(Boolean)
|
|
572
|
+
};`,contextLlmPrompt:"Gere um JSON com os novos campos de contexto a partir da conversa atual.",contextLlmModel:"",contextLlmTemperature:.2}};if(r==="flowRouter")return{...s,type:"component",title:"Supervisor multi-agente",instruction:"Escolhe outro fluxo/agente para continuar a conversa ou mantem no fluxo atual.",responseName:"flowRouter",component:{type:"flowRouter",responseName:"flowRouter",flowRouterRules:[],flowRouterFallbackAgentId:"",flowRouterFallbackFlowId:"",flowRouterReasonResponseName:"flowRouter"}};if(r==="webhook"){const l=`webhook_${Math.random().toString(36).slice(2,8)}`;return{...s,type:"component",title:"Webhook",instruction:"Recebe ou envia dados via webhook.",responseName:"webhook",api:{responseName:"webhook",requests:[{method:"POST",url:"https://api.exemplo.com/webhook",headers:{"Content-Type":"application/json"},params:{},bodyType:"jsonFields",body:{event:"{{context.slots.webhookEvent}}",conversationId:"{{context.conversationId}}",text:"{{context.input}}",slots:"{{context.slots}}"}}]},component:{type:"webhook",responseName:"webhook",webhookMode:"inbound",webhookId:l,webhookAuthMode:"none",webhookSecret:"",webhookHeaderName:"x-canvas-flow-webhook-secret",webhookQueryParam:"secret",webhookStartMode:"node",webhookResponseMode:"sync",webhookCallbackUrl:"",webhookCallbackAuthMode:"none",webhookCallbackSecret:"",webhookCallbackHeaderName:"x-canvas-flow-callback-secret",webhookListenerFireAndForget:!0}}}return{...s,type:"component",title:"RAG IA Gen",instruction:"Use o RAG para responder com base no contexto recuperado.",responseName:"rag",component:{type:"rag",responseName:"rag",collectionName:"",k:8,turnHistoricMessages:20,prompt:"Você é uma IA RAG. Responda em pt-BR com base no contexto.",queryTemplate:"{{context.slots.userInput}}",ragLlmProvider:"auto",ragEmbeddingProvider:"auto",ragSearchProvider:"auto",ragStorageProvider:"none",ragUseAgentFilter:!0,ragAgentIdTemplate:"",ragDocsPath:"",extraFieldsFilter:{},extraFieldsFilterPerRound:[],extraFieldsFilterPerRoundLimits:[],roundStopFind:!0,roundMixHalf:!1,extraFieldsFilterOrderBy:[],order:"desc"}}}function dv(){const t=jt("message",0);t.title="Início",t.instruction="Ola. Como posso ajudar?";const n=jt("input",1);n.title="Pergunta",n.responseName="pergunta",n.instruction="Digite sua pergunta.";const r=jt("component",2,"openaiGen");r.position={x:580,y:180};const s=jt("end",3);return s.position={x:820,y:180},s.instruction="{{context.slots.agente.text}}",{title:"Fluxo conversacional IA Gen",responseName:"conversationFlow",execute:"firstQuestion",model:"gpt-4o",llmProvider:"openai",channel:"webWidget",isMainFlow:!0,webWidget:Dd(),whatsapp:Kp(),turnHistoricMessages:20,startStepId:t.id,steps:[t,n,r,s],edges:[{id:ko("edge"),source:t.id,target:n.id},{id:ko("edge"),source:n.id,target:r.id},{id:ko("edge"),source:r.id,target:s.id}]}}function dn(t,n){return{id:ko("edge"),source:t.id,target:n.id}}function Bd(t,n){return{title:t,responseName:ko("flow").replace(/-/g,"_"),execute:"firstQuestion",model:"gpt-4o",llmProvider:"openai",channel:n,isMainFlow:!0,webWidget:Dd(),whatsapp:Kp(),turnHistoricMessages:20}}function eA(){const t=jt("message",0);t.title="Boas vindas",t.instruction="Ola! Sou o assistente de atendimento. Me conte o que voce precisa.";const n=jt("input",1);n.title="Pergunta do cliente",n.responseName="pergunta",n.instruction="Digite sua duvida.";const r=jt("component",2,"flowRouter");r.position={x:590,y:160},r.title="Supervisor de intencao",r.instruction="Classifica a intencao e roteia para fluxos especializados quando existirem.",r.component={...r.component,flowRouterReasonResponseName:"supervisor",flowRouterRules:[{id:ko("rule"),label:"Financeiro",targetAgentId:"",targetFlowId:"",conditionMode:"llm",condition:"Roteie se o usuario falar de boleto, pagamento, segunda via, cobranca ou financeiro.",conditionTemperature:0},{id:ko("rule"),label:"Suporte tecnico",targetAgentId:"",targetFlowId:"",conditionMode:"llm",condition:"Roteie se o usuario relatar erro, falha tecnica, acesso, integracao ou instabilidade.",conditionTemperature:0}]};const s=jt("component",3,"rag");s.position={x:850,y:160},s.title="Resposta com base de conhecimento",s.component={...s.component,responseName:"respostaRag",queryTemplate:"{{context.slots.pergunta}}",prompt:"Responda em pt-BR de forma objetiva. Use a base de conhecimento quando houver documentos relevantes. Se faltar contexto, diga o que precisa confirmar."};const l=jt("end",4);return l.position={x:1110,y:160},l.title="Responder cliente",l.instruction="{{context.slots.respostaRag.text}}",{...Bd("Atendimento WhatsApp com RAG e Supervisor","whatsapp"),startStepId:t.id,steps:[t,n,r,s,l],edges:[dn(t,n),dn(n,r),dn(r,s),dn(s,l)]}}function tA(){const t=jt("message",0);t.title="Inicio do agendamento",t.instruction="Vamos agendar seu atendimento. Primeiro, informe seu CPF.";const n=jt("input",1);n.title="Coletar CPF",n.responseName="cpf",n.inputValidationMode="type",n.inputValidationType="cpf",n.inputValidationErrorMessage="CPF invalido. Informe novamente somente os numeros.";const r=jt("component",2,"mcp");r.position={x:580,y:180},r.title="Consultar disponibilidade",r.component={...r.component,responseName:"agenda",mcpMode:"api",mcpToolName:"consultar_agenda",mcpToolDescription:"Consulta disponibilidade de agenda por CPF.",mcpInstruction:"Use o CPF do contexto para consultar disponibilidade. Normalize providers, services, dates e times.",mcpInputSchema:`{
|
|
573
|
+
"type": "object",
|
|
574
|
+
"properties": {
|
|
575
|
+
"cpf": { "type": "string" }
|
|
576
|
+
},
|
|
577
|
+
"required": ["cpf"]
|
|
578
|
+
}`,mcpOutputSchema:`{
|
|
579
|
+
"type": "object",
|
|
580
|
+
"properties": {
|
|
581
|
+
"providers": { "type": "array" },
|
|
582
|
+
"services": { "type": "array" },
|
|
583
|
+
"dates": { "type": "array" },
|
|
584
|
+
"times": { "type": "array" }
|
|
585
|
+
}
|
|
586
|
+
}`,mcpApiBaseUrl:"",mcpApiBodyJson:`{
|
|
587
|
+
"cpf": "{{context.slots.cpf}}"
|
|
588
|
+
}`};const s=jt("richMessage",3);s.position={x:850,y:180},s.title="Escolher horario",s.richMessage={...s.richMessage,type:"appointmentFlow",text:"Escolha uma opcao de agendamento.",appointmentFlow:{...s.richMessage.appointmentFlow,mode:"auto",providersTemplate:"{{context.slots.agenda.providers}}",servicesTemplate:"{{context.slots.agenda.services}}",datesTemplate:"{{context.slots.agenda.dates}}",timesTemplate:"{{context.slots.agenda.times}}"}};const l=jt("end",4);return l.position={x:1110,y:180},l.title="Confirmacao",l.instruction="Perfeito. Registrei sua escolha e sigo com a confirmacao.",{...Bd("Agendamento assistido por WhatsApp Flow","whatsapp"),startStepId:t.id,steps:[t,n,r,s,l],edges:[dn(t,n),dn(n,r),dn(r,s),dn(s,l)]}}function nA(){const t=jt("component",0,"cron");t.title="Rotina programada",t.position={x:120,y:180},t.component={...t.component,cronEnabled:!1,cronMode:"daily",cronTime:"09:00",cronInputText:"Executar rotina de backoffice"};const n=jt("api",1);n.title="Buscar dados operacionais",n.position={x:380,y:180},n.responseName="dadosOperacionais";const r=jt("component",2,"mongodb");r.title="Registrar resultado",r.position={x:640,y:180},r.component={...r.component,responseName:"registro",mongoCollectionName:"agentic_backoffice_runs",mongoOperation:"insertOne",mongoDocument:`{
|
|
589
|
+
"runAt": "{{context.now}}",
|
|
590
|
+
"agentId": "{{context.agentId}}",
|
|
591
|
+
"dados": "{{context.slots.dadosOperacionais}}"
|
|
592
|
+
}`};const s=jt("component",3,"dashboard");s.title="Resumo operacional",s.position={x:900,y:180},s.component={...s.component,dashboardSource:"trace",dashboardMode:"summary",dashboardTitle:"Resumo da rotina"};const l=jt("end",4);return l.position={x:1160,y:180},l.instruction="Rotina executada. Veja o dashboard no trace.",{...Bd("Backoffice agentico com cron, API e Mongo","webWidget"),startStepId:t.id,steps:[t,n,r,s,l],edges:[dn(t,n),dn(n,r),dn(r,s),dn(s,l)]}}function oA(){const t=jt("message",0);t.title="Recepcao",t.instruction="Ola! Vou te ajudar com agendamento, exame, convenio ou remarcacao.";const n=jt("input",1);n.title="Solicitacao",n.responseName="solicitacao",n.instruction="Descreva o que voce precisa.";const r=jt("component",2,"mcp");r.title="Classificar atendimento",r.position={x:580,y:180},r.component={...r.component,responseName:"triagem",mcpMode:"fields",mcpToolName:"classificar_triagem_clinica",mcpToolDescription:"Classifica demanda de clinica e extrai dados essenciais.",mcpInstruction:"Classifique a solicitacao em agendamento, exame, convenio, remarcacao ou humano. Extraia especialidade, convenio e urgencia quando aparecerem.",mcpOutputSchema:`{
|
|
593
|
+
"type": "object",
|
|
594
|
+
"properties": {
|
|
595
|
+
"intencao": { "type": "string" },
|
|
596
|
+
"especialidade": { "type": "string" },
|
|
597
|
+
"convenio": { "type": "string" },
|
|
598
|
+
"urgente": { "type": "boolean" }
|
|
599
|
+
}
|
|
600
|
+
}`};const s=jt("component",3,"mcp");s.title="Consultar agenda",s.position={x:850,y:180},s.component={...s.component,responseName:"agenda",mcpMode:"api",mcpToolName:"consultar_agenda_clinica",mcpToolDescription:"Consulta agenda no sistema da clinica.",mcpInstruction:"Monte a consulta usando especialidade e convenio extraidos na triagem.",mcpApiMethod:"POST",mcpApiBaseUrl:"",mcpApiBodyJson:`{
|
|
601
|
+
"especialidade": "{{context.slots.triagem.output.especialidade}}",
|
|
602
|
+
"convenio": "{{context.slots.triagem.output.convenio}}"
|
|
603
|
+
}`};const l=jt("component",4,"approval");l.title="Aprovar encaixe",l.position={x:1120,y:180},l.component={...l.component,responseName:"aprovacaoEncaixe",approvalTitle:"Aprovar encaixe de agenda",approvalDescription:"A solicitacao parece urgente. Revise antes de oferecer encaixe fora da regra padrao.",approvalRisk:"high",approvalScopes:["agenda_write","exception"]};const p=jt("end",5);return p.position={x:1390,y:180},p.instruction="Encontrei as melhores opcoes e vou seguir com a confirmacao.",{...Bd("Clinica: triagem e agendamento com aprovacao","whatsapp"),startStepId:t.id,steps:[t,n,r,s,l,p],edges:[dn(t,n),dn(n,r),dn(r,s),dn(s,l),dn(l,p)]}}function aA(){const t=jt("message",0);t.title="Atendimento loja",t.instruction="Ola! Posso ajudar com pedido, troca, rastreio ou produto.";const n=jt("input",1);n.title="Pedido ou duvida",n.responseName="pedido",n.instruction="Informe seu numero de pedido ou descreva sua duvida.";const r=jt("component",2,"mcp");r.title="Consultar pedido",r.position={x:580,y:180},r.component={...r.component,responseName:"consultaPedido",mcpMode:"api",mcpToolName:"consultar_pedido",mcpToolDescription:"Consulta dados de pedido, rastreio e status.",mcpInstruction:"Use o texto do cliente para localizar pedido e status. Nunca invente codigo de rastreio.",mcpApiMethod:"GET",mcpApiBaseUrl:"",mcpApiQueryJson:`{
|
|
604
|
+
"q": "{{context.slots.pedido}}"
|
|
605
|
+
}`};const s=jt("component",3,"approval");s.title="Aprovar reembolso",s.position={x:850,y:180},s.component={...s.component,responseName:"aprovacaoReembolso",approvalTitle:"Aprovar reembolso ou cupom",approvalDescription:"Antes de gerar cupom/reembolso, confira valor, politica e historico do cliente.",approvalRisk:"high",approvalScopes:["refund","coupon_write"]};const l=jt("component",4,"openaiGen");l.title="Resposta final",l.position={x:1120,y:180},l.component={...l.component,responseName:"resposta",prompt:"Responda de forma clara usando context.slots.consultaPedido e o status da aprovacao quando existir.",queryTemplate:"{{context.slots.pedido}}"};const p=jt("end",5);return p.position={x:1390,y:180},p.instruction="{{context.slots.resposta.text}}",{...Bd("E-commerce: pedido, troca e reembolso seguro","whatsapp"),startStepId:t.id,steps:[t,n,r,s,l,p],edges:[dn(t,n),dn(n,r),dn(r,s),dn(s,l),dn(l,p)]}}function rA(){const t=jt("message",0);t.title="Receber lead",t.instruction="Ola! Vou entender seu perfil para sugerir imoveis.";const n=jt("input",1);n.title="Perfil do cliente",n.responseName="perfil",n.instruction="Qual bairro, faixa de valor e tipo de imovel voce procura?";const r=jt("component",2,"context");r.title="Normalizar perfil",r.position={x:580,y:180},r.component={...r.component,responseName:"lead",contextMode:"llm",contextLlmPrompt:"Extraia bairro, valorMaximo, quartos, tipo e urgencia do lead imobiliario."};const s=jt("component",3,"mcp");s.title="Buscar imoveis",s.position={x:850,y:180},s.component={...s.component,responseName:"imoveis",mcpMode:"api",mcpToolName:"buscar_imoveis",mcpToolDescription:"Busca imoveis no CRM/imobiliaria.",mcpApiMethod:"POST",mcpApiBaseUrl:"",mcpApiBodyJson:`{
|
|
606
|
+
"bairro": "{{context.slots.lead.bairro}}",
|
|
607
|
+
"valorMaximo": "{{context.slots.lead.valorMaximo}}",
|
|
608
|
+
"quartos": "{{context.slots.lead.quartos}}"
|
|
609
|
+
}`};const l=jt("end",4);return l.position={x:1120,y:180},l.instruction="Separei algumas opcoes e posso agendar uma visita.",{...Bd("Imobiliaria: qualificacao e busca no CRM","webWidget"),startStepId:t.id,steps:[t,n,r,s,l],edges:[dn(t,n),dn(n,r),dn(r,s),dn(s,l)]}}function sA(){return[{id:"support-whatsapp-rag",name:"Atendimento WhatsApp + RAG",segment:"Suporte",description:"Entrada WhatsApp com supervisor de intencao, fallback RAG e resposta final.",channel:"whatsapp",config:eA()},{id:"scheduling-whatsapp",name:"Agendamento inteligente",segment:"Atendimento",description:"Coleta CPF, consulta disponibilidade via MCP/API e renderiza opcoes interativas.",channel:"whatsapp",config:tA()},{id:"backoffice-agentops",name:"Backoffice agentico",segment:"Operacoes",description:"Cron, API, MongoDB e dashboard para rotinas internas com rastreabilidade.",channel:"webWidget",config:nA()},{id:"clinic-triage-approval",name:"Clinica com aprovacao",segment:"Saude",description:"Triagem por MCP, consulta de agenda e gate humano para encaixes sensiveis.",channel:"whatsapp",config:oA()},{id:"ecommerce-refund-safe",name:"E-commerce seguro",segment:"E-commerce",description:"Consulta pedido via MCP, aprova reembolso/cupom e responde com contexto.",channel:"whatsapp",config:aA()},{id:"real-estate-lead-crm",name:"Imobiliaria CRM",segment:"Vendas",description:"Qualifica lead, normaliza perfil e busca imoveis no CRM por MCP/API.",channel:"webWidget",config:rA()}]}const iA={canvasStep:xj},lA={canvasFlowEdge:LS},Ej=108,Mj=72,cA=120,uA=180,eg=180,tg=156,dA=Ej,pA=Mj,pv=36,mv=74,mA=36,Tj=58,Ij=18,hA=18,fA=18,Nh=18,gA=16,yf=t=>String(t||"").split(",").map(n=>n.trim()).filter(Boolean),qo=t=>String((t==null?void 0:t.agentId)||(t==null?void 0:t.name)||"").trim()||"default-agent",Qs=t=>String((t==null?void 0:t.name)||(t==null?void 0:t.agentId)||"").trim()||"Agente",yp=(t,n)=>{var r,s,l,p,m,h,f,x,j,w,N,C,E,T,R,D,q,I,F,Y,ne,ae,oe;return{llmProvider:((r=t==null?void 0:t.config)==null?void 0:r.llmProvider)||n.llmProvider||"openai",model:((s=t==null?void 0:t.config)==null?void 0:s.model)||n.model,agentSpec:{agentsMd:((p=(l=t==null?void 0:t.config)==null?void 0:l.agentSpec)==null?void 0:p.agentsMd)??((m=n.agentSpec)==null?void 0:m.agentsMd)??"",guardrails:((f=(h=t==null?void 0:t.config)==null?void 0:h.agentSpec)==null?void 0:f.guardrails)??((x=n.agentSpec)==null?void 0:x.guardrails)??"",blockedTerms:((w=(j=t==null?void 0:t.config)==null?void 0:j.agentSpec)==null?void 0:w.blockedTerms)??((N=n.agentSpec)==null?void 0:N.blockedTerms)??[],rules:((E=(C=t==null?void 0:t.config)==null?void 0:C.agentSpec)==null?void 0:E.rules)??((T=n.agentSpec)==null?void 0:T.rules)??[],skills:((D=(R=t==null?void 0:t.config)==null?void 0:R.agentSpec)==null?void 0:D.skills)??((q=n.agentSpec)==null?void 0:q.skills)??[],subagents:((F=(I=t==null?void 0:t.config)==null?void 0:I.agentSpec)==null?void 0:F.subagents)??((Y=n.agentSpec)==null?void 0:Y.subagents)??[],mcpServers:((ae=(ne=t==null?void 0:t.config)==null?void 0:ne.agentSpec)==null?void 0:ae.mcpServers)??((oe=n.agentSpec)==null?void 0:oe.mcpServers)??[]}}};function xA(t){return String(t||"").split(/\r?\n/).map(n=>n.trim()).filter(Boolean)}function jf(t){return!t||typeof t!="object"||Array.isArray(t)?"":JSON.stringify(t,null,2)}function bf(t,n){const r=String(t||"").trim();if(!r)return;const s=JSON.parse(r);if(!s||typeof s!="object"||Array.isArray(s))throw new Error(`${n} precisa ser um objeto JSON.`);return s}function Fu(t={}){return{id:ko("simcase"),name:"",text:"",expectedContainsText:"",expectedEnded:"any",expectedSlotsText:"",slotsText:"",approvalsText:"",allowErrors:!1,...t}}function Pj(t,n){const r=Array.isArray(t.expectedContains)?t.expectedContains:Array.isArray(t.expectedTextIncludes)?t.expectedTextIncludes:t.expectedContains||t.expectedTextIncludes?[t.expectedContains||t.expectedTextIncludes]:[];return Fu({id:String(t.id||"")||ko("simcase"),name:String(t.name||t.title||`Cenario ${n+1}`),text:String(t.text||t.input||""),expectedContainsText:r.map(s=>String(s||"")).filter(Boolean).join(`
|
|
610
|
+
`),expectedEnded:t.expectedEnded===!0?"true":t.expectedEnded===!1?"false":"any",expectedSlotsText:jf(t.expectedSlots),slotsText:jf(t.slots),approvalsText:jf(t.approvals),allowErrors:t.allowErrors===!0})}function _j(t){return t.map((n,r)=>{const s=xA(n.expectedContainsText),l={name:n.name.trim()||`Cenario ${r+1}`,text:n.text.trim()};s.length===1&&(l.expectedContains=s[0]),s.length>1&&(l.expectedContains=s),n.expectedEnded!=="any"&&(l.expectedEnded=n.expectedEnded==="true");const p=bf(n.expectedSlotsText,"Slots esperados"),m=bf(n.slotsText,"Slots iniciais"),h=bf(n.approvalsText,"Aprovacoes");return p&&Object.keys(p).length&&(l.expectedSlots=p),m&&Object.keys(m).length&&(l.slots=m),h&&Object.keys(h).length&&(l.approvals=h),n.allowErrors&&(l.allowErrors=!0),l}).filter(n=>String(n.text||"").trim())}function jp(t){return JSON.stringify(_j(t),null,2)}function hv(t){const n=JSON.parse(t||"[]"),r=Array.isArray(n)?n:n==null?void 0:n.cases;if(!Array.isArray(r))throw new Error("JSON precisa ser uma lista de casos ou um objeto com cases[].");return r.map((s,l)=>Pj(s||{},l))}function bp(){return[Fu({name:"Boas-vindas",text:"Oi, preciso de ajuda",expectedContainsText:"ajuda"}),Fu({name:"Agendamento",text:"Quero falar com atendimento",expectedEnded:"false"})]}function Ip(t){return Array.isArray(t)?t.map((n,r)=>{if(!n||typeof n!="object"||Array.isArray(n))return null;const s=n,l=Array.isArray(s.cases)?s.cases.filter(p=>p&&typeof p=="object"):[];return l.length?{id:String(s.id||"")||ko("evalsuite"),name:String(s.name||s.title||`Suite ${r+1}`),description:String(s.description||""),mode:s.mode==="isolated"?"isolated":"conversation",cases:l,createdAt:String(s.createdAt||""),updatedAt:String(s.updatedAt||"")}:null}).filter(n=>!!n):[]}const vA="canvas_flow_eval_suites_v1";function yA(t,n,r){return`${vA}:${t}:${n||r||"draft"}`}function jA(t){try{return typeof localStorage>"u"?[]:Ip(JSON.parse(localStorage.getItem(t)||"[]"))}catch{return[]}}function fv(t,n){try{if(typeof localStorage>"u")return;localStorage.setItem(t,JSON.stringify(Ip(n)))}catch{}}function bA(t,n){const r=new Map;return t.forEach(s=>r.set(s.id,s)),n.forEach(s=>{r.has(s.id)||r.set(s.id,s)}),Array.from(r.values())}function wA(t,n){const r=new Map(t.map(s=>[s.id,s]));return n.flatMap(s=>{const l=r.get(s);return l?l.cases.map((p,m)=>({...p||{},suiteId:l.id,suiteName:l.name,name:`${l.name} / ${String((p==null?void 0:p.name)||(p==null?void 0:p.title)||`Caso ${m+1}`)}`})):[]})}const gv=[{type:"openaiGen",title:"Agente",description:"Agente LLM com modelo, skills, subagents, rules e guardrails.",category:"IA",Icon:Ho,color:"#2563eb"},{type:"agentPlan",title:"Agent Plan",description:"Contrato visual para orientar ou fixar o plano do agente antes das tools.",category:"IA",Icon:Qi,color:"#4f46e5"},{type:"rag",title:"RAG IA Gen",description:"Busca documentos e gera a resposta final com LLM.",category:"RAG",Icon:Ss,color:"#2563eb"},{type:"milvus",title:"Milvus",description:"Busca vetorial/hibrida no Milvus e salva documentos no contexto.",category:"RAG",Icon:Ss,color:"#7c3aed"},{type:"azureSearch",title:"Azure AI Search",description:"Busca no Azure AI Search e salva documentos no contexto.",category:"RAG",Icon:Oc,color:"#16a34a"},{type:"azureBlob",title:"Azure Blob Storage",description:"Grava payloads e documentos no Blob Storage.",category:"RAG",Icon:Vf,color:"#0891b2"},{type:"files",title:"Arquivos",description:"Lê upload ou URL e salva texto/documentos no contexto.",category:"Dados",Icon:ij,color:"#0f766e"},{type:"mongodb",title:"MongoDB",description:"CRUD em collections para funil, eventos e analise.",category:"Dados",Icon:Ss,color:"#16a34a"},{type:"context",title:"Contexto",description:"Cria ou atualiza slots por JSON dinamico, JS ou LLM.",category:"Dados",Icon:Od,color:"#0891b2"},{type:"webhook",title:"Webhook",description:"Recebe dados externos ou envia o contexto para outro endpoint.",category:"Ações",Icon:fj,color:"#dc2626"},{type:"mcp",title:"MCP",description:"Contrato de ferramenta com schema, LLM e chamada API externa opcional.",category:"Acoes",Icon:hj,color:"#0f766e"},{type:"approval",title:"Aprovação humana",description:"Pausa o fluxo antes de ações sensíveis e registra aprovar/reprovar.",category:"Governança",Icon:Zs,color:"#be123c"},{type:"dashboard",title:"Dashboard",description:"Monta cards, tabelas e gráficos com trace, API, Mongo ou Milvus.",category:"Analítico",Icon:xh,color:"#7c3aed"},{type:"loop",title:"Loop",description:"Repete a saída até atingir o limite ou uma condição JS parar.",category:"Controle",Icon:pj,color:"#0ea5e9"},{type:"flowRouter",title:"Roteador de fluxo",description:"Direciona a conversa para outro fluxo por regra JS ou LLM.",category:"Controle",Icon:Qi,color:"#9333ea"},{type:"cron",title:"CRON",description:"Agenda a execução automática do fluxo por intervalo, dia, semana ou mês.",category:"Automação",Icon:sj,color:"#0f766e"},{type:"debug",title:"Debug",description:"Registra um snapshot do contexto atual do fluxo.",category:"Dev",Icon:aj,color:"#f59e0b"}],xv=['Construa um fluxo com mensagem de boas vindas "Ola seja bem vindo",',"salve a entrada em responseName input, marque a tag boas_vindas,",'peca o CPF do usuario validando como cpf e use fallback "CPF invalido",',"chame POST http://cpto.com enviando o cpf no body,","faca polling a cada 3 segundos ate encontrar maiorIdade=true,","mostre uma mensagem rica com botoes e finalize o fluxo."].join(" ");function NA(t){var n,r,s,l,p,m,h,f,x,j,w,N,C,E,T,R,D,q,I,F,Y,ne,ae,oe,Q,fe,xe,ye,le,M,ee,H,se,G,V,K,P,O,ve,ge,be,Ce,$,z,Z,he,Be,at,gt,ht,mt,Et,Ye,Pe,Ze,Ct,re,we,Me,et,it;return((r=(n=t.data)==null?void 0:n.step)==null?void 0:r.type)==="group"?"#0d9488":((l=(s=t.data)==null?void 0:s.step)==null?void 0:l.type)==="richMessage"?"#0891b2":((h=(m=(p=t.data)==null?void 0:p.step)==null?void 0:m.component)==null?void 0:h.type)==="debug"?"#f59e0b":((j=(x=(f=t.data)==null?void 0:f.step)==null?void 0:x.component)==null?void 0:j.type)==="openaiGen"&&((C=(N=(w=t.data)==null?void 0:w.step)==null?void 0:N.component)==null?void 0:C.agentRole)==="subagent"?"#dc2626":((R=(T=(E=t.data)==null?void 0:E.step)==null?void 0:T.component)==null?void 0:R.type)==="openaiGen"?"#2563eb":((I=(q=(D=t.data)==null?void 0:D.step)==null?void 0:q.component)==null?void 0:I.type)==="agentPlan"?"#4f46e5":((ne=(Y=(F=t.data)==null?void 0:F.step)==null?void 0:Y.component)==null?void 0:ne.type)==="azureOpenAI"?"#0ea5e9":((Q=(oe=(ae=t.data)==null?void 0:ae.step)==null?void 0:oe.component)==null?void 0:Q.type)==="milvus"?"#7c3aed":((ye=(xe=(fe=t.data)==null?void 0:fe.step)==null?void 0:xe.component)==null?void 0:ye.type)==="azureSearch"?"#16a34a":((ee=(M=(le=t.data)==null?void 0:le.step)==null?void 0:M.component)==null?void 0:ee.type)==="azureBlob"?"#0891b2":((G=(se=(H=t.data)==null?void 0:H.step)==null?void 0:se.component)==null?void 0:G.type)==="files"?"#0f766e":((P=(K=(V=t.data)==null?void 0:V.step)==null?void 0:K.component)==null?void 0:P.type)==="mongodb"?"#16a34a":((ge=(ve=(O=t.data)==null?void 0:O.step)==null?void 0:ve.component)==null?void 0:ge.type)==="context"?"#0891b2":(($=(Ce=(be=t.data)==null?void 0:be.step)==null?void 0:Ce.component)==null?void 0:$.type)==="dashboard"?"#7c3aed":((he=(Z=(z=t.data)==null?void 0:z.step)==null?void 0:Z.component)==null?void 0:he.type)==="cron"?"#0f766e":((gt=(at=(Be=t.data)==null?void 0:Be.step)==null?void 0:at.component)==null?void 0:gt.type)==="loop"?"#0ea5e9":((Et=(mt=(ht=t.data)==null?void 0:ht.step)==null?void 0:mt.component)==null?void 0:Et.type)==="flowRouter"?"#9333ea":((Ze=(Pe=(Ye=t.data)==null?void 0:Ye.step)==null?void 0:Pe.component)==null?void 0:Ze.type)==="webhook"?"#dc2626":((we=(re=(Ct=t.data)==null?void 0:Ct.step)==null?void 0:re.component)==null?void 0:we.type)==="mcp"?"#0f766e":((it=(et=(Me=t.data)==null?void 0:Me.step)==null?void 0:et.component)==null?void 0:it.type)==="approval"?"#be123c":"#2563eb"}function vv(t){try{return JSON.parse(t)}catch{return null}}function CA(t){if(t.kind==="debug"&&t.debug)return{title:t.text||"Debug",payload:t.debug};const n=String(t.text||"").trim();if(n.startsWith("DEBUG - ")){const s=n.indexOf(`
|
|
611
|
+
`),l=s>-1?n.slice(8,s).trim():"Debug",p=s>-1?vv(n.slice(s+1)):null;if(p)return{title:l||"Debug",payload:p}}const r=vv(n);return r&&typeof r=="object"&&("stepId"in r||"slots"in r)?{title:typeof r.title=="string"?r.title:"Debug",payload:r}:null}function SA(t){return t.kind==="dashboard"&&t.debug&&typeof t.debug=="object"?t.debug:null}function Oj(t){return!!(t&&typeof t=="object"&&!Array.isArray(t))}function Rj(t){return Array.isArray(t)?t.map((n,r)=>[String(r),n]):Oj(t)?Object.entries(t):[]}function Fj(t,n="root"){return!t||typeof t!="object"?[]:[n,...Rj(t).flatMap(([r,s])=>Fj(s,`${n}.${r}`))]}function kA({value:t}){return t===null?e.jsx("span",{className:"json-value json-null",children:"null"}):typeof t=="string"?e.jsxs("span",{className:"json-value json-string",children:['"',t,'"']}):typeof t=="number"?e.jsx("span",{className:"json-value json-number",children:String(t)}):typeof t=="boolean"?e.jsx("span",{className:"json-value json-boolean",children:String(t)}):e.jsxs("span",{className:"json-value json-unknown",children:['"',String(t),'"']})}function zj({name:t,value:n,path:r,level:s,isLast:l,collapsedPaths:p,onToggle:m}){const h=Array.isArray(n),f=Oj(n),x=h||f,j=Rj(n),w=p.has(r),N={paddingLeft:`${s*18}px`},C=h?"[":"{",E=h?"]":"}",T=h?`${j.length} item(ns)`:`${j.length} campo(s)`,R=t!==void 0&&Number.isInteger(Number(t));return x?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"json-tree-row",style:N,children:[e.jsx("button",{type:"button",className:"json-tree-toggle",onClick:()=>m(r),"aria-label":w?"Expandir JSON":"Recolher JSON",children:w?e.jsx(rj,{size:13}):e.jsx(Sp,{size:13})}),t!==void 0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:R?"json-index":"json-key",children:R?t:`"${t}"`}),e.jsx("span",{className:"json-punctuation",children:": "})]}),e.jsx("span",{className:"json-punctuation",children:C}),w&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"json-summary",children:T}),e.jsxs("span",{className:"json-punctuation",children:[E,l?"":","]})]})]}),!w&&j.map(([D,q],I)=>e.jsx(zj,{name:D,value:q,path:`${r}.${D}`,level:s+1,isLast:I===j.length-1,collapsedPaths:p,onToggle:m},`${r}.${D}`)),!w&&e.jsxs("div",{className:"json-tree-row",style:N,children:[e.jsx("span",{className:"json-tree-spacer"}),e.jsxs("span",{className:"json-punctuation",children:[E,l?"":","]})]})]}):e.jsxs("div",{className:"json-tree-row",style:N,children:[t!==void 0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:R?"json-index":"json-key",children:R?t:`"${t}"`}),e.jsx("span",{className:"json-punctuation",children:": "})]}),e.jsx(kA,{value:n}),!l&&e.jsx("span",{className:"json-punctuation",children:","})]})}function AA({value:t}){const[n,r]=b.useState(new Set),s=b.useMemo(()=>Fj(t).filter(p=>p!=="root"),[t]),l=p=>{r(m=>{const h=new Set(m);return h.has(p)?h.delete(p):h.add(p),h})};return e.jsxs("div",{className:"json-tree-shell",children:[e.jsxs("div",{className:"json-tree-toolbar",children:[e.jsx("button",{type:"button",onClick:()=>r(new Set(s)),children:"Recolher tudo"}),e.jsx("button",{type:"button",onClick:()=>r(new Set),children:"Expandir tudo"})]}),e.jsx("div",{className:"json-tree-view",children:e.jsx(zj,{value:t,path:"root",level:0,isLast:!0,collapsedPaths:n,onToggle:l})})]})}function EA(t){if(t.kind==="rich"&&t.content)return t.content}const $d=["#2563eb","#16a34a","#f59e0b","#dc2626","#7c3aed","#0891b2","#db2777","#475569"];function MA(t){const n=t.chart,s=(Array.isArray(n==null?void 0:n.series)?n.series:[]).map((l,p)=>({label:String(l.label||`Item ${p+1}`),value:Number(l.value)||0,color:String(l.color||$d[p%$d.length])})).filter(l=>l.label);return!n||!s.length?null:{type:String(n.type||t.mode||"bar"),title:String(n.title||t.title||"Grafico"),generatedBy:String(n.generatedBy||""),series:s}}function TA({chart:t}){const n=t.series.reduce((l,p)=>l+Math.max(p.value,0),0)||1,r=Math.max(...t.series.map(l=>l.value),1),s=t.series.reduce((l,p)=>{const m=l.offset,h=m+Math.max(p.value,0)/n*100;return{offset:h,stops:[...l.stops,`${p.color} ${m}% ${h}%`]}},{offset:0,stops:[]}).stops.join(", ");return e.jsxs("div",{className:"dashboard-chart",children:[e.jsxs("div",{className:"dashboard-chart-title",children:[e.jsx("strong",{children:t.title}),t.generatedBy&&e.jsx("span",{children:t.generatedBy==="llm"?"LLM":"auto"})]}),t.type==="pie"?e.jsxs("div",{className:"dashboard-pie-wrap",children:[e.jsx("div",{className:"dashboard-pie",style:{background:`conic-gradient(${s||"#e5e7eb 0% 100%"})`}}),e.jsx("div",{className:"dashboard-legend",children:t.series.map(l=>e.jsxs("div",{children:[e.jsx("i",{style:{background:l.color}}),e.jsx("span",{children:l.label}),e.jsx("strong",{children:l.value})]},l.label))})]}):e.jsx("div",{className:"dashboard-bars",children:t.series.map(l=>e.jsxs("div",{className:"dashboard-bar-row",children:[e.jsx("span",{children:l.label}),e.jsx("div",{className:"dashboard-bar-track",children:e.jsx("div",{style:{width:`${Math.max(4,l.value/r*100)}%`,background:l.color}})}),e.jsx("strong",{children:l.value})]},l.label))})]})}function IA({payload:t}){const n=Array.isArray(t.cards)?t.cards:[],r=Array.isArray(t.rows)?t.rows:[],s=MA(t),l=t.showTable===!0||t.mode==="table",p=r.length?Array.from(new Set(r.slice(0,5).flatMap(m=>Object.keys(m)))).slice(0,5):[];return e.jsxs("div",{className:"dashboard-preview",children:[e.jsxs("div",{className:"dashboard-preview-header",children:[e.jsx("strong",{children:String(t.title||"Dashboard")}),e.jsxs("span",{children:[String(t.source||"trace")," / ",String(t.mode||"summary")]})]}),n.length>0&&e.jsx("div",{className:"dashboard-card-grid",children:n.map((m,h)=>e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:String(m.label||`Metrica ${h+1}`)}),e.jsx("strong",{children:String(m.value??"-")})]},h))}),s&&e.jsx(TA,{chart:s}),l&&r.length>0&&p.length>0&&e.jsx("div",{className:"dashboard-table-wrap",children:e.jsxs("table",{children:[e.jsx("thead",{children:e.jsx("tr",{children:p.map(m=>e.jsx("th",{children:m},m))})}),e.jsx("tbody",{children:r.slice(0,5).map((m,h)=>e.jsx("tr",{children:p.map(f=>e.jsx("td",{children:typeof m[f]=="object"?JSON.stringify(m[f]):String(m[f]??"")},f))},h))})]})})]})}function PA(t){return(Array.isArray(t==null?void 0:t.byTag)?t.byTag:[]).slice(0,12).map((r,s)=>({label:String(r.tag||`Tag ${s+1}`),value:Number(r.count||0),conversations:Number(r.conversations||0),color:$d[s%$d.length]}))}function Nd(t,n,r="count"){return(Array.isArray(t)?t:[]).slice(0,12).map((l,p)=>{const m=n.map(h=>l==null?void 0:l[h]).find(h=>h!=null&&String(h).trim());return{label:String(m||`Item ${p+1}`),value:Number((l==null?void 0:l[r])||0),conversations:Number((l==null?void 0:l.conversations)||0),color:$d[p%$d.length]}})}function Nn(t,n=0){const r=Number(t||0);return Number.isFinite(r)?r.toLocaleString("pt-BR",{maximumFractionDigits:n,minimumFractionDigits:n}):"0"}function _A({mode:t,series:n}){const r=n.reduce((N,C)=>N+Math.max(C.value,0),0)||1,s=Math.max(...n.map(N=>N.value),1),l=n.reduce((N,C)=>{const E=N.offset,T=E+Math.max(C.value,0)/r*100;return{offset:T,stops:[...N.stops,`${C.color} ${E}% ${T}%`]}},{offset:0,stops:[]}).stops.join(", "),p=720,m=240,h=34,f=26,x=n.map((N,C)=>{const E=n.length===1?p/2:h+C/Math.max(n.length-1,1)*(p-h*2),T=m-f-Math.max(N.value,0)/s*(m-f*2);return{...N,x:E,y:T}}),j=x.map(N=>`${N.x},${N.y}`).join(" "),w=x.length?`${h},${m-f} ${j} ${p-h},${m-f}`:"";return n.length?t==="bar"?e.jsxs("div",{className:"dashboard-chart tag-dashboard-chart-panel",children:[e.jsxs("div",{className:"dashboard-chart-title",children:[e.jsx("strong",{children:"Eventos por tag"}),e.jsx("span",{children:"Barras"})]}),e.jsx("div",{className:"dashboard-bars",children:n.map(N=>e.jsxs("div",{className:"dashboard-bar-row",children:[e.jsx("span",{children:N.label}),e.jsx("div",{className:"dashboard-bar-track",children:e.jsx("div",{style:{width:`${Math.max(4,N.value/s*100)}%`,background:N.color}})}),e.jsx("strong",{children:N.value})]},N.label))})]}):t==="pie"?e.jsxs("div",{className:"dashboard-chart tag-dashboard-chart-panel",children:[e.jsxs("div",{className:"dashboard-chart-title",children:[e.jsx("strong",{children:"Distribuição por tag"}),e.jsx("span",{children:"Pizza"})]}),e.jsxs("div",{className:"dashboard-pie-wrap tag-dashboard-pie-wrap",children:[e.jsx("div",{className:"dashboard-pie tag-dashboard-pie",style:{background:`conic-gradient(${l||"#e5e7eb 0% 100%"})`}}),e.jsx("div",{className:"dashboard-legend",children:n.map(N=>e.jsxs("div",{children:[e.jsx("i",{style:{background:N.color}}),e.jsx("span",{children:N.label}),e.jsx("strong",{children:N.value})]},N.label))})]})]}):t==="line"?e.jsxs("div",{className:"dashboard-chart tag-dashboard-chart-panel",children:[e.jsxs("div",{className:"dashboard-chart-title",children:[e.jsx("strong",{children:"Comparativo por tag"}),e.jsx("span",{children:"Gráfico"})]}),e.jsxs("div",{className:"tag-dashboard-line-chart",children:[e.jsxs("svg",{viewBox:`0 0 ${p} ${m}`,role:"img","aria-label":"Gráfico de tags por eventos",children:[e.jsx("line",{x1:h,y1:m-f,x2:p-h,y2:m-f}),e.jsx("line",{x1:h,y1:f,x2:h,y2:m-f}),w&&e.jsx("polygon",{points:w}),j&&e.jsx("polyline",{points:j}),x.map(N=>e.jsxs("g",{children:[e.jsx("circle",{cx:N.x,cy:N.y,r:"5",style:{fill:N.color}}),e.jsx("title",{children:`${N.label}: ${N.value} eventos`})]},N.label))]}),e.jsx("div",{className:"dashboard-legend tag-dashboard-line-legend",children:n.map(N=>e.jsxs("div",{children:[e.jsx("i",{style:{background:N.color}}),e.jsx("span",{children:N.label}),e.jsx("strong",{children:N.value})]},N.label))})]})]}):null:e.jsx("div",{className:"tag-dashboard-chart-empty",children:"Nenhuma tag encontrada para os filtros atuais."})}function Cd({title:t,subtitle:n,series:r,emptyText:s}){const l=Math.max(...r.map(p=>p.value),1);return r.length?e.jsxs("div",{className:"dashboard-chart tag-dashboard-chart-panel",children:[e.jsxs("div",{className:"dashboard-chart-title",children:[e.jsx("strong",{children:t}),e.jsx("span",{children:n})]}),e.jsx("div",{className:"dashboard-bars",children:r.map(p=>e.jsxs("div",{className:"dashboard-bar-row",children:[e.jsx("span",{children:p.label}),e.jsx("div",{className:"dashboard-bar-track",children:e.jsx("div",{style:{width:`${Math.max(4,p.value/l*100)}%`,background:p.color}})}),e.jsx("strong",{children:p.value})]},p.label))})]}):e.jsx("div",{className:"tag-dashboard-chart-empty",children:s})}function OA(t){return String(t.value||t.label||t.title||t.id||"").trim()}function RA(t){return String(t.label||t.title||t.value||t.id||"").trim()}function FA({content:t,disabled:n,onSelect:r}){var l,p,m,h,f,x,j,w,N;const s=C=>{const E=OA(C);!E||n||r==null||r(E,RA(C)||E)};return e.jsxs("div",{className:`rich-message-preview rich-message-preview-${t.type}`,children:[t.text&&e.jsx("p",{children:t.text}),t.type==="image"&&((l=t.media)==null?void 0:l.url)&&e.jsx("img",{className:"rich-preview-media-image",src:t.media.url,alt:t.media.caption||t.text||"Imagem"}),t.type==="document"&&((p=t.media)==null?void 0:p.url)&&e.jsxs("a",{className:"rich-preview-document",href:t.media.url,target:"_blank",rel:"noreferrer",children:[e.jsx("strong",{children:t.media.fileName||"Documento"}),e.jsx("small",{children:t.media.mimeType||"Arquivo anexado"})]}),t.type==="buttons"&&e.jsx("div",{className:"rich-preview-actions",children:(t.buttons||[]).map(C=>e.jsx("button",{type:"button",disabled:n,onClick:()=>s(C),children:C.label},C.id||C.label))}),t.type==="quickReplies"&&e.jsx("div",{className:"rich-preview-quick",children:(t.quickReplies||[]).map(C=>e.jsx("button",{type:"button",disabled:n,onClick:()=>s(C),children:C.label},C.id||C.label))}),t.type==="list"&&e.jsxs("div",{className:"rich-preview-list",children:[e.jsx("strong",{children:((m=t.list)==null?void 0:m.buttonText)||"Ver opções"}),(((h=t.list)==null?void 0:h.sections)||[]).map((C,E)=>e.jsxs("div",{children:[e.jsx("span",{children:C.title}),(C.items||[]).map(T=>e.jsxs("button",{type:"button",className:"rich-preview-list-item",disabled:n,onClick:()=>s(T),children:[e.jsx("strong",{children:T.title}),T.description&&e.jsx("small",{children:T.description})]},T.id||T.title))]},E))]}),t.type==="carousel"&&e.jsx("div",{className:"rich-preview-carousel",children:(((f=t.carousel)==null?void 0:f.cards)||[]).map(C=>e.jsxs("div",{className:"rich-preview-card",children:[C.imageUrl&&e.jsx("img",{src:C.imageUrl,alt:""}),e.jsx("strong",{children:C.title}),C.subtitle&&e.jsx("span",{children:C.subtitle}),e.jsx("div",{className:"rich-preview-actions",children:(C.buttons||[]).map(E=>e.jsx("button",{type:"button",disabled:n,onClick:()=>s(E),children:E.label},E.id||E.label))})]},C.id||C.title))}),t.type==="appointmentFlow"&&e.jsxs("div",{className:"rich-preview-list",children:[e.jsx("strong",{children:((x=t.appointmentFlow)==null?void 0:x.flowCta)||((j=t.appointmentFlow)==null?void 0:j.buttonText)||"Agendar"}),e.jsxs("button",{type:"button",className:"rich-preview-list-item",disabled:n,onClick:()=>{var C,E;return s({id:"appointment_flow",title:((C=t.appointmentFlow)==null?void 0:C.flowCta)||"Agendar",value:((E=t.appointmentFlow)==null?void 0:E.flowCta)||"agendar"})},children:[e.jsx("strong",{children:((w=t.appointmentFlow)==null?void 0:w.headerText)||"Agendamento"}),e.jsx("small",{children:(N=t.appointmentFlow)!=null&&N.flowId?"WhatsApp Flow":"Lista interativa"})]})]}),t.footer&&e.jsx("small",{className:"rich-preview-footer",children:t.footer})]})}function So(t){var n,r,s,l,p,m,h;return{...t,channel:t.channel||"webWidget",llmProvider:t.llmProvider||"openai",agentSpec:{agentsMd:((n=t.agentSpec)==null?void 0:n.agentsMd)||"",guardrails:((r=t.agentSpec)==null?void 0:r.guardrails)||"",blockedTerms:((s=t.agentSpec)==null?void 0:s.blockedTerms)||[],rules:((l=t.agentSpec)==null?void 0:l.rules)||[],skills:((p=t.agentSpec)==null?void 0:p.skills)||[],subagents:((m=t.agentSpec)==null?void 0:m.subagents)||[],mcpServers:((h=t.agentSpec)==null?void 0:h.mcpServers)||[]},isMainFlow:t.isMainFlow===!0,webWidget:Dd(t.webWidget),whatsapp:Kp(t.whatsapp),steps:(t.steps||[]).map(f=>{var E;if(((E=f.component)==null?void 0:E.type)!=="flowRouter")return f;const{flowRouterPersistTarget:x,flowRouterRunMode:j,flowRouterSynchronousModeConfirmed:w,flowRouterSwitchMessage:N,...C}=f.component;return{...f,component:C}})}}function wf(t){return!!(t&&typeof t=="object"&&!Array.isArray(t))}function zA({config:t,flowId:n,flowName:r,agentId:s}){return{kind:"canvas-flow.flow",version:1,exportedAt:new Date().toISOString(),flowId:n||void 0,name:r||t.title||"Fluxo exportado",agentId:s||void 0,config:So(t)}}function LA(t){if(!wf(t))throw new Error("Arquivo inválido. Envie um JSON de fluxo do Canvas Flow.");const n=wf(t.config)?t.config:wf(t.flowConfig)?t.flowConfig:t;if(!Array.isArray(n.steps)||!Array.isArray(n.edges))throw new Error("JSON inválido. O fluxo precisa conter steps e edges.");const r=So(n);return{config:r,name:String(t.name||t.flowName||r.title||"Fluxo importado"),agentId:String(t.agentId||"")}}function yv(t){return(t||"fluxo").normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80)||"fluxo"}function Ch(t){return[...t||[]].sort((n,r)=>Number(r.version||0)-Number(n.version||0))}function Ym(t,n,r){const s=Ch(t).filter(m=>m.config);if(!s.length)return;const l=Number(r||0),p=Number(n||0);return(l?s.find(m=>Number(m.version)===l):void 0)||(p?s.find(m=>Number(m.version)===p):void 0)||s[0]}function DA(t){return[...t||[]].sort((n,r)=>Number(r.release||0)-Number(n.release||0))}function lh(t,n){return Object.entries((t==null?void 0:t.versions)||{}).map(([r,s])=>{var f,x,j;const l=(f=n.find(w=>w._id===r))==null?void 0:f.name,p=(x=t==null?void 0:t.flowNames)==null?void 0:x[r],m=(j=t==null?void 0:t.versionNames)==null?void 0:j[r],h=l||p||r;return{id:r,name:h,packageName:l&&p&&l!==p?p:void 0,versionName:m&&m!==h?m:void 0,version:Number(s)}}).filter(r=>r.version>0).sort((r,s)=>r.name.localeCompare(s.name,"pt-BR"))}function Lj(t,n=!1){return`${t.name} - v${t.version}${t.versionName?` · ${t.versionName}`:""}${t.packageName?` (no pacote: ${t.packageName})`:""}${n?" (produção)":""}`}function $A(t,n,r){return lh(t,n).flatMap(s=>{const l=r[s.id],p=Ch(l==null?void 0:l.versions);return(p.length?p:[{version:s.version,name:s.versionName}]).map(h=>({...s,key:`${s.id}:${h.version}`,flowId:s.id,version:Number(h.version),versionName:h.name&&h.name!==s.name?h.name:void 0,isReleaseSnapshot:Number(h.version)===Number(s.version),isFlowActive:Number(h.version)===Number(l==null?void 0:l.activeVersion)}))})}function jv(t,n){var s;const r=Number(((s=n==null?void 0:n.versions)==null?void 0:s[t.flowId])||0);return r?r===t.version:t.isFlowActive}function bv(t,n=!1){return Lj(t,n)}function Zm(t){if(!t)return"sem data";const n=new Date(t);return Number.isNaN(n.getTime())?"sem data":n.toLocaleString("pt-BR")}function eh(t,n){const r=String(t||"").trim();if(r)return r;const s=String(n||"").trim();return!s||/^[a-f0-9]{24}$/i.test(s)?"sem e-mail registrado":s}function Nf(){return{title:"Novo fluxo",responseName:"newFlow",execute:"firstQuestion",model:"gpt-5.5",llmProvider:"openai",agentSpec:{agentsMd:"",guardrails:"Nunca invente dados. Peça aprovação humana antes de ações sensíveis. Respeite privacidade e dados pessoais.",blockedTerms:[],rules:[],skills:[],subagents:[],mcpServers:[]},channel:"webWidget",isMainFlow:!1,webWidget:Dd(),whatsapp:Kp(),turnHistoricMessages:20,startStepId:"",steps:[],edges:[]}}function BA(t,n="Novo fluxo"){const r=new Set(t.map(s=>String(s.name||"").trim()).filter(Boolean));if(!r.has(n))return n;for(let s=2;s<1e3;s+=1){const l=`${n} ${s}`;if(!r.has(l))return l}return`${n} ${Date.now()}`}function Cf(t,n,r){if(n<0||r<0||n===r||n>=t.length||r>=t.length)return t;const s=[...t],[l]=s.splice(n,1);return s.splice(r,0,l),s}function VA({apiUrl:t,flowId:n,flowName:r,flowResponseName:s,agentId:l,channel:p,webWidget:m,whatsapp:h,whatsappWebhookUrl:f,apiTokenConfigured:x}){const j=`${t}/api/canvas-flow/test`,w=`${t}/api/canvas-flow/mcp/${encodeURIComponent(l)}`,N=(s||r||"nome_da_ferramenta").trim().normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9_-]+/g,"_").replace(/_+/g,"_").replace(/^[_-]+|[_-]+$/g,"").slice(0,80)||"nome_da_ferramenta",C="<CANVAS_FLOW_API_KEY>",E={primaryColor:m.primaryColor,accentColor:m.accentColor,assistantName:m.assistantName,subtitle:m.subtitle,welcomeMessage:m.welcomeMessage,placeholder:m.placeholder,bubbleLabel:m.bubbleLabel,avatarText:m.avatarText,openByDefault:m.openByDefault,position:m.position},T={flowId:n,agentId:l,channel:p,conversationId:`${p}-cliente-123`,text:"Ola, preciso de ajuda.",slots:p==="webWidget"?{webWidget:E}:{}},R=JSON.stringify(T,null,2),D=`curl -X POST "${j}" \\
|
|
612
|
+
-H "Content-Type: application/json" \\
|
|
613
|
+
-H "Authorization: Bearer ${C}" \\
|
|
614
|
+
-d '${R}'`,q=`const response = await fetch("${j}", {
|
|
615
|
+
method: "POST",
|
|
616
|
+
headers: {
|
|
617
|
+
"Content-Type": "application/json",
|
|
618
|
+
"Authorization": "Bearer ${C}"
|
|
619
|
+
},
|
|
620
|
+
body: JSON.stringify(${R})
|
|
621
|
+
});
|
|
622
|
+
|
|
623
|
+
const data = await response.json();
|
|
624
|
+
console.log(data.messages, data.slots);`,F=`<script>
|
|
625
|
+
const canvasFlowWidget = ${JSON.stringify({flowId:n,flowName:r||"<NOME_DO_FLUXO>",agentId:l,channel:"webWidget",userContext:null,theme:E},null,2)};
|
|
626
|
+
const canvasFlowConversationStorageKey =
|
|
627
|
+
"canvasFlowConversationId:" + canvasFlowWidget.agentId + ":" + canvasFlowWidget.flowId;
|
|
628
|
+
const canvasFlowSession = {
|
|
629
|
+
// Anonimo: gere uma vez no browser e guarde.
|
|
630
|
+
// Usuario logado: prefira receber este ID do seu backend/proxy.
|
|
631
|
+
conversationId:
|
|
632
|
+
window.localStorage.getItem(canvasFlowConversationStorageKey) ||
|
|
633
|
+
((window.crypto && crypto.randomUUID) ? crypto.randomUUID() : "web-" + Date.now())
|
|
634
|
+
};
|
|
635
|
+
window.localStorage.setItem(canvasFlowConversationStorageKey, canvasFlowSession.conversationId);
|
|
636
|
+
|
|
637
|
+
async function enviarMensagem(texto) {
|
|
638
|
+
// O proxy deve validar o usuario logado e pode trocar conversationId/userContext
|
|
639
|
+
// por valores confiaveis do seu sistema antes de chamar o Canvas Flow.
|
|
640
|
+
// Produção: chame seu backend/proxy e injete o Authorization no servidor.
|
|
641
|
+
const response = await fetch("/seu-backend/canvas-flow-proxy", {
|
|
642
|
+
method: "POST",
|
|
643
|
+
headers: { "Content-Type": "application/json" },
|
|
644
|
+
body: JSON.stringify({
|
|
645
|
+
flowId: canvasFlowWidget.flowId,
|
|
646
|
+
agentId: canvasFlowWidget.agentId,
|
|
647
|
+
channel: canvasFlowWidget.channel,
|
|
648
|
+
conversationId: canvasFlowSession.conversationId,
|
|
649
|
+
text: texto,
|
|
650
|
+
slots: {
|
|
651
|
+
webWidget: canvasFlowWidget.theme,
|
|
652
|
+
user: canvasFlowWidget.userContext
|
|
653
|
+
}
|
|
654
|
+
})
|
|
655
|
+
});
|
|
656
|
+
const data = await response.json();
|
|
657
|
+
// O backend recupera o checkpoint LangGraph usando conversationId.
|
|
658
|
+
return data;
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
// Use canvasFlowWidget.theme para aplicar cores, textos,
|
|
662
|
+
// posicao e se o chat inicia aberto ou apenas como balao.
|
|
663
|
+
// Use canvasFlowWidget.userContext apenas para dados nao sensiveis.
|
|
664
|
+
<\/script>`,Y=`Authorization: Bearer ${C}
|
|
665
|
+
Header alternativo: x-api-key: ${C}
|
|
666
|
+
|
|
667
|
+
Use uma chave gerada em API Keys. O token master CANVAS_FLOW_API_TOKEN deve ficar reservado para administracao.
|
|
668
|
+
|
|
669
|
+
Backend atual: ${x?"token master configurado":"sem token master no frontend; defina VITE_CANVAS_FLOW_API_TOKEN para gerenciar chaves"}.`,ne=`MCP server exposto pelo Canvas Flow
|
|
670
|
+
Transporte: JSON-RPC 2.0 sobre HTTP POST
|
|
671
|
+
Endpoint: ${w}
|
|
672
|
+
Auth: Authorization: Bearer ${C}
|
|
673
|
+
Header alternativo: x-api-key: ${C}
|
|
674
|
+
|
|
675
|
+
Como um MCP client consome este server:
|
|
676
|
+
1. Envie initialize para negociar capabilities.
|
|
677
|
+
2. Envie tools/list para descobrir as tools disponiveis.
|
|
678
|
+
3. Cada flow salvo deste agente aparece como uma tool MCP.
|
|
679
|
+
4. Use exatamente result.tools[].name no tools/call.
|
|
680
|
+
5. Em arguments, envie text e, se quiser memoria, reutilize conversationId.
|
|
681
|
+
|
|
682
|
+
Initialize:
|
|
683
|
+
curl -X POST "${w}" \\
|
|
684
|
+
-H "Content-Type: application/json" \\
|
|
685
|
+
-H "Authorization: Bearer ${C}" \\
|
|
686
|
+
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"meu-mcp-client","version":"1.0.0"}}}'
|
|
687
|
+
|
|
688
|
+
Listar tools:
|
|
689
|
+
curl -X POST "${w}" \\
|
|
690
|
+
-H "Content-Type: application/json" \\
|
|
691
|
+
-H "Authorization: Bearer ${C}" \\
|
|
692
|
+
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
|
|
693
|
+
|
|
694
|
+
Chamar uma tool:
|
|
695
|
+
curl -X POST "${w}" \\
|
|
696
|
+
-H "Content-Type: application/json" \\
|
|
697
|
+
-H "Authorization: Bearer ${C}" \\
|
|
698
|
+
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"${N}","arguments":{"text":"Preciso de ajuda","conversationId":"mcp-cliente-123","slots":{}}}}'
|
|
699
|
+
|
|
700
|
+
Exemplo minimo de cliente HTTP:
|
|
701
|
+
const endpoint = "${w}";
|
|
702
|
+
const headers = {
|
|
703
|
+
"Content-Type": "application/json",
|
|
704
|
+
"Authorization": "Bearer ${C}"
|
|
705
|
+
};
|
|
706
|
+
|
|
707
|
+
async function mcpRequest(method, params = {}, id = Date.now()) {
|
|
708
|
+
const response = await fetch(endpoint, {
|
|
709
|
+
method: "POST",
|
|
710
|
+
headers,
|
|
711
|
+
body: JSON.stringify({ jsonrpc: "2.0", id, method, params })
|
|
712
|
+
});
|
|
713
|
+
const payload = await response.json();
|
|
714
|
+
if (payload.error) throw new Error(payload.error.message);
|
|
715
|
+
return payload.result;
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
await mcpRequest("initialize", {
|
|
719
|
+
protocolVersion: "2025-06-18",
|
|
720
|
+
capabilities: {},
|
|
721
|
+
clientInfo: { name: "meu-mcp-client", version: "1.0.0" }
|
|
722
|
+
});
|
|
723
|
+
const listed = await mcpRequest("tools/list");
|
|
724
|
+
const toolName = listed.tools[0].name;
|
|
725
|
+
const result = await mcpRequest("tools/call", {
|
|
726
|
+
name: toolName,
|
|
727
|
+
arguments: {
|
|
728
|
+
text: "Preciso de ajuda",
|
|
729
|
+
conversationId: "mcp-cliente-123",
|
|
730
|
+
slots: {}
|
|
731
|
+
}
|
|
732
|
+
});
|
|
733
|
+
console.log(result.content, result.structuredContent);
|
|
734
|
+
|
|
735
|
+
Config generica para um client/proxy MCP HTTP:
|
|
736
|
+
{
|
|
737
|
+
"name": "canvas-flow-${l}",
|
|
738
|
+
"transport": "http-json-rpc-post",
|
|
739
|
+
"url": "${w}",
|
|
740
|
+
"headers": {
|
|
741
|
+
"Authorization": "Bearer ${C}"
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
Observacao: se o seu MCP client aceitar apenas Streamable HTTP/SSE com sessao, use um bridge/proxy MCP que encaminhe JSON-RPC HTTP POST para este endpoint.`,ae=h.provider||"meta",oe=ae==="meta"?`Provedor: API Oficial Meta
|
|
746
|
+
Callback URL: ${f}
|
|
747
|
+
Verify token: ${h.verifyToken||"<PALAVRA_TOKEN>"}
|
|
748
|
+
|
|
749
|
+
GET ${f}
|
|
750
|
+
POST ${f}
|
|
751
|
+
|
|
752
|
+
O backend valida o token no GET e executa o fluxo no POST quando chegar uma mensagem.`:ae==="blip"?`Provedor: Blip
|
|
753
|
+
Callback URL: ${f}
|
|
754
|
+
|
|
755
|
+
Configure a entrada HTTP/webhook no Blip apontando para a URL acima.
|
|
756
|
+
Para envio automatico, configure Contract ID e Authorization key em Provedores > WhatsApp.`:`Provedor: Sinch
|
|
757
|
+
Callback URL: ${f}
|
|
758
|
+
|
|
759
|
+
Configure inbound message webhooks da Sinch Conversation API apontando para a URL acima.
|
|
760
|
+
Para envio automatico, configure Project ID, App ID, regiao e access token.
|
|
761
|
+
Para repasse, use Retornar payload na resposta da API e configure numero, username e token em Provedores > WhatsApp.`;return{endpoint:j,mcpEndpoint:w,auth:Y,payloadJson:R,curl:D,javascript:q,widget:F,whatsapp:oe,mcp:ne}}function Dj(t){var n,r;return{width:Math.max(eg,Number(((n=t.group)==null?void 0:n.width)||520)),height:Math.max(tg,Number(((r=t.group)==null?void 0:r.height)||340))}}function _h(t){var n;return t.type==="group"?(n=t.group)!=null&&n.collapsed?{width:dA,height:pA}:Dj(t):{width:Ej,height:Mj}}function wg(t,n){return{x:t.x,y:t.y,width:n.width,height:n.height,right:t.x+n.width,bottom:t.y+n.height}}function UA(t,n){var m,h;const r=t,s=(t==null?void 0:t.style)||{},l=Number((t==null?void 0:t.width)||((m=r==null?void 0:r.measured)==null?void 0:m.width)||s.width||0),p=Number((t==null?void 0:t.height)||((h=r==null?void 0:r.measured)==null?void 0:h.height)||s.height||0);return{width:Math.max(n.width,Number.isFinite(l)?l:0),height:Math.max(n.height,Number.isFinite(p)?p:0)}}function Qp(t,n){return{x:Math.max(Ij,t),y:Math.max(Tj,n)}}function wv(t,n){return{x:t.x-n,y:t.y-n,width:t.width+n*2,height:t.height+n*2,right:t.right+n,bottom:t.bottom+n}}function $j(t,n){const r=Math.max(0,Math.min(n,t.width/2-1,t.height/2-1));return{x:t.x+r,y:t.y+r,width:Math.max(1,t.width-r*2),height:Math.max(1,t.height-r*2),right:t.right-r,bottom:t.bottom-r}}function Nv(t,n){var l;if(!n.size)return t;const r=new Map(t.steps.map(p=>[p.id,p])),s=t.steps.filter(p=>!n.has(p.id)).map(p=>!p.parentId||!n.has(p.parentId)?p:{...p,parentId:void 0,position:Zi(p,r)});return{...t,steps:s,edges:t.edges.filter(p=>!n.has(p.source)&&!n.has(p.target)),startStepId:n.has(t.startStepId)?((l=s[0])==null?void 0:l.id)||"":t.startStepId}}function Cv(t){return JSON.parse(JSON.stringify(t))}function Zi(t,n){var p,m,h,f;const r={x:((p=t.position)==null?void 0:p.x)||0,y:((m=t.position)==null?void 0:m.y)||0},s=new Set([t.id]);let l=t.parentId;for(;l&&!s.has(l);){s.add(l);const x=n.get(l);if(!x)break;r.x+=((h=x.position)==null?void 0:h.x)||0,r.y+=((f=x.position)==null?void 0:f.y)||0,l=x.parentId}return r}function Up(t,n){const r=Zi(t,n),s=_h(t);return wg(r,s)}function Bj(t,n){return t.x>=n.x&&t.x<=n.right&&t.y>=n.y&&t.y<=n.bottom}function qA(t,n){const r=Math.max(0,Math.min(t.right,n.right)-Math.max(t.x,n.x)),s=Math.max(0,Math.min(t.bottom,n.bottom)-Math.max(t.y,n.y)),l=Math.max(1,t.width*t.height);return r*s/l}function HA(t,n){var l;let r=t.parentId;const s=new Set;for(;r&&!s.has(r);){s.add(r);const p=n.get(r);if(!p)return!1;if(p.type==="group"&&((l=p.group)!=null&&l.collapsed))return!0;r=p.parentId}return!1}function WA(t,n,r){var p;let s=t.parentId;const l=new Set;for(;s&&!l.has(s);){if(r.has(s))return!0;l.add(s),s=(p=n.get(s))==null?void 0:p.parentId}return!1}function Ng(t,n,r){var p;let s=t.parentId;const l=new Set;for(;s&&!l.has(s);){if(s===n)return!0;l.add(s),s=(p=r.get(s))==null?void 0:p.parentId}return!1}function GA(t,n){var l;const r=new Set([t.id]);let s=t.parentId;for(;s;){if(r.has(s))return!0;r.add(s),s=(l=n.get(s))==null?void 0:l.parentId}return!1}function JA(t,n){const r=new Map(t.map(E=>[E.id,E])),s=r.get(n);if(!s||s.type!=="group")return t;const l=t.filter(E=>E.id!==n&&Ng(E,n,r));if(!l.length)return t;const p=Zi(s,r),m=l.reduce((E,T)=>{const R=Up(T,r);return{minX:Math.min(E.minX,R.x-p.x),minY:Math.min(E.minY,R.y-p.y),maxX:Math.max(E.maxX,R.right-p.x),maxY:Math.max(E.maxY,R.bottom-p.y)}},{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}),h=Math.max(0,Ij-m.minX),f=Math.max(0,Tj-m.minY),x=Dj(s),j=Math.max(x.width,Math.ceil(m.maxX+h+hA)),w=Math.max(x.height,Math.ceil(m.maxY+f+fA)),N=h>0||f>0,C=j!==x.width||w!==x.height;return!N&&!C?t:t.map(E=>{var T,R;return E.id===n?{...E,group:{...E.group||{width:x.width,height:x.height},width:j,height:w}}:!N||E.parentId!==n?E:{...E,position:{x:(((T=E.position)==null?void 0:T.x)||0)+h,y:(((R=E.position)==null?void 0:R.y)||0)+f}}})}function Dc(t){const n=new Map(t.map(l=>[l.id,l]));let r=!1;const s=t.map(l=>{var h,f,x,j,w;if(!l.parentId)return l;const p=n.get(l.parentId);if(l.type==="group"||l.parentId===l.id||!p||p.type!=="group"||GA(l,n))return r=!0,{...l,parentId:void 0,position:Zi(l,n)};if(!((h=p.group)!=null&&h.collapsed)){const N=Qp(((f=l.position)==null?void 0:f.x)||0,((x=l.position)==null?void 0:x.y)||0);return Math.abs((((j=l.position)==null?void 0:j.x)||0)-N.x)<.5&&Math.abs((((w=l.position)==null?void 0:w.y)||0)-N.y)<.5?l:(r=!0,{...l,position:N})}return l});return r?s:t}function Vj(t){const n=Dc(t.steps),r=new Map(n.map(h=>[h.id,h])),s=new Map;n.forEach(h=>{var f;h.type!=="group"||!((f=h.group)!=null&&f.collapsed)||(h.group.collapsedChildIds||[]).forEach(x=>{x!==h.id&&r.has(x)&&s.set(x,h.id)})});const l=new Map,p=h=>{var N;const f=l.get(h.id);if(f!==void 0)return f;const x=new Set;let j=h.parentId,w="";for(;j&&!x.has(j);){x.add(j);const C=r.get(j);if(!C)break;const E=l.get(C.id);if(E!==void 0){w=E;break}if(C.type==="group"&&((N=C.group)!=null&&N.collapsed)){w=C.id;break}j=C.parentId}return l.set(h.id,w),w},m=new Map;return n.forEach(h=>{const f=s.get(h.id);if(f){m.set(h.id,f);return}const x=p(h);x&&m.set(h.id,x)}),m}function Cg(t){const n=Dc(t.steps),r=Vj(t),s=new Set(n.filter(l=>!r.has(l.id)).map(l=>l.id));return n.forEach(l=>{var p;l.type==="group"&&((p=l.group)!=null&&p.collapsed)&&s.add(l.id)}),s}function Sv(t,n,r,s){var h,f;if(r.has(t))return t;const l=s.get(t);if(l&&r.has(l))return l;const p=new Set;let m=(h=n.get(t))==null?void 0:h.parentId;for(;m&&!p.has(m);){p.add(m);const x=n.get(m);if(!x)break;if(x.type==="group"&&((f=x.group)!=null&&f.collapsed)&&r.has(x.id))return x.id;m=x.parentId}return r.has(t)?t:""}function KA(t){const n=new Map;return t.forEach(r=>{r.parentId&&n.set(r.parentId,(n.get(r.parentId)||0)+1)}),n}function Sg(t,n,r){var m,h;const s=t.positionAbsolute;if(s)return{x:Number(s.x||0),y:Number(s.y||0)};const l=n.parentId?r.get(n.parentId):void 0,p=l?Zi(l,r):{x:0,y:0};return{x:p.x+(((m=t.position)==null?void 0:m.x)||0),y:p.y+(((h=t.position)==null?void 0:h.y)||0)}}function qp(t,n,r){const s=r.get(t.id),l=s?Sg(s,t,n):Zi(t,n);return wg(l,UA(s,_h(t)))}function kv(t,n,r=Nh){const s={x:t.x+t.width/2,y:t.y+t.height/2};return Bj(s,$j(n,r))}function Uj(t,n,r={}){const s=new Map(t.map(j=>[j.id,j])),l=new Map((r.canvasNodes||[]).map(j=>[j.id,j])),p=s.get(n),m=new Set;if(!p||p.type!=="group")return m;const h=wv(qp(p,s,l),r.margin||0),f=wv(Up(p,s),r.margin||0),x=Math.max(0,Number(r.margin||0)>=Nh?0:Nh-Number(r.margin||0));return t.forEach(j=>{if(j.id===n||j.type==="group"||j.parentId&&!r.includeAttached)return;const w=qp(j,s,l),N=Up(j,s);(kv(w,h,x)||kv(N,f,x))&&m.add(j.id)}),m}function QA(t,n,r,s){var p;const l={x:s.x+s.width/2,y:s.y+s.height/2};return(p=t.filter(m=>{var h;return m.type==="group"&&m.id!==r&&!((h=m.group)!=null&&h.collapsed)&&!HA(m,n)}).map(m=>{const h=Up(m,n),f=$j(h,Nh);return{step:m,bounds:h,ratio:qA(s,h),centerInside:Bj(l,f)}}).filter(m=>m.centerInside).sort((m,h)=>h.ratio!==m.ratio?h.ratio-m.ratio:m.bounds.width*m.bounds.height-h.bounds.width*h.bounds.height)[0])==null?void 0:p.step}function qj(t,n,r={}){const s=new Map(t.map(w=>[w.id,w])),l=new Map((r.canvasNodes||[]).map(w=>[w.id,w])),p=s.get(n);if(!p||p.type!=="group")return t;const m=l.get(n),h=m?Sg(m,p,s):Zi(p,s),f=Uj(t,n,r);let x=!1;const j=t.map(w=>{if(!f.has(w.id)||Ng(w,n,s))return w;x=!0;const N=qp(w,s,l);return{...w,parentId:n,position:Qp(N.x-h.x,N.y-h.y)}});return x?j:t}function XA(t,n,r={}){const s=new Map(t.map(w=>[w.id,w])),l=new Map((r.canvasNodes||[]).map(w=>[w.id,w])),p=s.get(n);if(!p||p.type!=="group")return{steps:t,childIds:[]};const m=qp(p,s,l),h={x:m.x,y:m.y},f=Uj(t,n,r);let x=!1;const j=t.map(w=>{var E,T;if(w.id===n||w.type==="group")return w;const N=f.has(w.id),C=Ng(w,n,s);if(N){const R=qp(w,s,l),D=Qp(R.x-h.x,R.y-h.y);return w.parentId===n&&Math.abs((((E=w.position)==null?void 0:E.x)||0)-D.x)<.5&&Math.abs((((T=w.position)==null?void 0:T.y)||0)-D.y)<.5?w:(x=!0,{...w,parentId:n,position:D})}return C?(x=!0,{...w,parentId:void 0,position:Zi(w,s)}):w});return{steps:x?j:t,childIds:Array.from(f)}}function Av(t,n){if(!n.length)return t;const r=Dc(t.steps),s=new Map(n.map(j=>[j.id,j])),l=new Set(s.keys()),p=new Map(r.map(j=>[j.id,j])),m=[];let h=!1,f=r.map(j=>{var N,C;const w=s.get(j.id);return!w||j.type!=="group"?j:(h=!0,m.push(j.id),{...j,position:{x:((N=w.position)==null?void 0:N.x)||0,y:((C=w.position)==null?void 0:C.y)||0}})});const x=new Map(f.map(j=>[j.id,j]));return f=f.map(j=>{const w=s.get(j.id);if(!w||j.type==="group"||WA(j,p,l))return j;const N=Sg(w,j,x),C=wg(N,_h(j)),E=QA(f,x,j.id,C),T=E?Zi(E,x):{x:0,y:0},R=E?Qp(N.x-T.x,N.y-T.y):N;return h=!0,{...j,parentId:E==null?void 0:E.id,position:R}}),m.forEach(j=>{var N;const w=f.find(C=>C.id===j&&C.type==="group");(N=w==null?void 0:w.group)!=null&&N.collapsed||(f=qj(f,j))}),h?{...t,steps:Dc(f)}:{...t,steps:r}}function wp(t,n){if(!n.length)return t;const r=new Map(n.map(p=>[p.id,p])),s=new Set,l=t.map(p=>{const m=r.get(p.id);return m?(s.add(p.id),{...p,...m,data:m.data||p.data,style:m.style||p.style}):p});return n.forEach(p=>{s.has(p.id)||l.push(p)}),l}function YA(t,n){if(!t.length)return n;const r=new Map(t.map(s=>[s.id,s]));return n.map(s=>{const l=r.get(s.id);return l?{...l,...s,data:{...l.data||{},...s.data||{}},position:s.position||l.position,selected:s.selected,style:s.style,zIndex:s.zIndex}:s})}const ZA=["skills","subagents","mcpServers"];function eE(t){var r;if(t.type!=="component"||((r=t.component)==null?void 0:r.type)!=="openaiGen")return!1;const n=t.component.agentRole||"simple";return n!=="orchestrator"&&n!=="subagent"?!1:(t.component.agentExecutionMode||"auto_tools")!=="flow"}function tE(t){var s;const n=String(t.targetStepId||t.stepId||t.nodeId||"").trim();if(n)return n;const r=String(t.path||"").trim();return r.startsWith("canvas://")&&((s=r.slice(9).split(/[?#]/)[0])==null?void 0:s.trim())||""}function nE(t){const n=new Set;return(t.steps||[]).forEach(r=>{var m,h;if(!eE(r))return;const s=((m=r.component)==null?void 0:m.agentManifest)||{};let l=0,p=0;ZA.forEach(f=>{const x=Array.isArray(s[f])?s[f]||[]:[];p+=x.length,x.forEach(j=>{const w=tE(j);w&&w!==r.id&&(l+=1,n.add(w))})}),p===0&&l===0&&((h=r.component)==null?void 0:h.agentUseWorkspaceCatalog)!==!1&&(t.steps||[]).forEach(f=>{var w,N;if(f.id===r.id||f.type!=="component")return;const x=((w=f.component)==null?void 0:w.type)==="openaiGen"&&f.component.agentRole==="subagent",j=((N=f.component)==null?void 0:N.type)==="mcp";(x||j)&&n.add(f.id)})}),n}function Hj(t,n){const r=nE(n);return t.edgeRole==="manifest"||r.has(t.source)||r.has(t.target)}function Ev(t,n){const r=Dc(t.steps),s=new Set(r.map(f=>f.id)),l=new Set((n==null?void 0:n.selectedStepIds)||[]),p=Cg({...t,steps:r}),m=KA(r);return[...r].sort((f,x)=>f.type==="group"&&x.type!=="group"?-1:f.type!=="group"&&x.type==="group"?1:0).filter(f=>p.has(f.id)).map(f=>{var N;const x=f.type==="group",j=f.parentId&&s.has(f.parentId)&&p.has(f.parentId)?f.parentId:void 0,w=_h(f);return{id:f.id,type:"canvasStep",position:f.position,parentNode:j,selected:l.has(f.id),style:x?{width:w.width,height:w.height}:void 0,zIndex:x?(N=f.group)!=null&&N.collapsed?4:0:j?3:1,data:{step:f,isStart:t.startStepId===f.id,childrenCount:m.get(f.id)||0,...n,editingField:(n==null?void 0:n.editingStepId)===f.id?n.editingField:null}}})}function Mv(t,n={}){const r=Dc(t.steps),s={...t,steps:r},l=Cg(s),p=new Map(r.map(h=>[h.id,h])),m=Vj(s);return t.edges.map(h=>{const f=Sv(h.source,p,l,m),x=Sv(h.target,p,l,m);if(!f||!x||f===x)return null;const j=f!==h.source||x!==h.target,w=Hj(h,s),N=w?"#059669":h.condition?"#8b5cf6":"#94a3b8";return{id:h.id,type:"canvasFlowEdge",source:f,target:x,label:h.label,markerEnd:{type:$p.ArrowClosed,width:11,height:11,color:N},style:{stroke:N,strokeWidth:j?1.3:1.1,opacity:h.condition?.76:.68,strokeDasharray:j?"6 4":void 0},labelStyle:{fill:"#334155",fontWeight:700,fontSize:11},data:{...h,edgeRole:w?"manifest":h.edgeRole,source:f,target:x,originalSource:h.source,originalTarget:h.target,proxied:j,...n}}}).filter(h=>!!h)}function oE(t,n,r){const s=new Set(t.steps.map(p=>p.id)),l=n.length?n:r?[r]:[];return Array.from(new Set(l)).filter(p=>s.has(p))}function aE(t,n){var p;const r=new Set(n),s=t.steps.filter(m=>r.has(m.id)),l=t.edges.filter(m=>r.has(m.source)&&r.has(m.target));return{...t,steps:s,edges:l,startStepId:r.has(t.startStepId)?t.startStepId:((p=s[0])==null?void 0:p.id)||""}}function rE(t,n,r){const s=new Set(r),l=new Map(n.steps.map(m=>[m.id,m])),p=n.edges.filter(m=>s.has(m.source)&&s.has(m.target));return{...t,steps:t.steps.map(m=>{if(!s.has(m.id))return m;const h=l.get(m.id);return h?{...h,id:m.id,position:m.position,parentId:m.parentId,group:m.type==="group"?h.group||m.group:h.group}:m}),edges:[...t.edges.filter(m=>!(s.has(m.source)&&s.has(m.target))),...p],startStepId:t.startStepId}}const sE=[{group:"native",label:"Entrada atual",value:"{{context.input}}",description:"Texto ou payload atual recebido pelo componente."},{group:"native",label:"Ultimo input do usuario",value:"{{context.slots.userInput}}",description:"Ultima mensagem de usuario salva pelo runner."},{group:"native",label:"Input de tool",value:"{{context.slots.autoToolInput}}",description:"Entrada delegada pelo agente pai para subagents/MCP chamados como tool."},{group:"native",label:"Tarefa da tool",value:"{{context.slots.autoToolTask}}",description:"Tarefa enviada pelo agente pai quando houver delegacao agentica."},{group:"native",label:"Input do agente pai",value:"{{context.slots.parentAgentInput}}",description:"Entrada original vista pelo agente que chamou a tool."},{group:"native",label:"Todos os slots",value:"{{context.slots}}",description:"Objeto completo de memoria operacional da conversa."},{group:"native",label:"ID da conversa",value:"{{context.conversationId}}",description:"Identificador da conversa atual."},{group:"native",label:"ID do agente",value:"{{context.agentId}}",description:"Agente em execucao."},{group:"native",label:"ID do fluxo",value:"{{context.flowId}}",description:"Fluxo em execucao quando salvo/versionado."},{group:"native",label:"No atual",value:"{{context.currentStepId}}",description:"ID do no que esta sendo executado."},{group:"native",label:"Agora",value:"{{context.now}}",description:"Data/hora atual disponibilizada no contexto."},{group:"native",label:"Webhook recebido",value:"{{context.slots.webhookEvent}}",description:"Payload bruto de webhook quando o fluxo for iniciado por webhook."}];function iE(t){var n,r;return String(t.responseName||((n=t.api)==null?void 0:n.responseName)||((r=t.component)==null?void 0:r.responseName)||"").trim()}function lE(t,n){var m;const r=t.title||t.id,s={group:"response",source:r},l=[{...s,label:n,value:`{{context.slots.${n}}}`,description:`Valor salvo pelo responseName do no ${r}.`}],p=((m=t.component)==null?void 0:m.type)||t.type;return t.type==="input"||t.type==="condition"?l:t.type==="api"||p==="mcp"?[...l,{...s,label:`${n}.latest.data`,value:`{{context.slots.${n}.latest.data}}`,description:"Dados da ultima resposta HTTP/API."},{...s,label:`${n}.output`,value:`{{context.slots.${n}.output}}`,description:"Saida normalizada para uso nos proximos nos."},{...s,label:`${n}.results`,value:`{{context.slots.${n}.results}}`,description:"Lista de respostas quando houver multiplas chamadas."},{...s,label:`${n}.resultsById`,value:`{{context.slots.${n}.resultsById}}`,description:"Mapa de respostas por ID de request quando configurado."}]:p==="files"?[...l,{...s,label:`${n}.text`,value:`{{context.slots.${n}.text}}`,description:"Texto extraido dos arquivos."},{...s,label:`${n}.documents`,value:`{{context.slots.${n}.documents}}`,description:"Documentos extraidos para RAG/LLM."}]:p==="openaiGen"||p==="azureOpenAI"?[...l,{...s,label:`${n}.text`,value:`{{context.slots.${n}.text}}`,description:"Texto gerado pelo agente/LLM."},{...s,label:`${n}.autoTools`,value:`{{context.slots.${n}.autoTools}}`,description:"Ferramentas chamadas pelo agente quando houver auto tools."}]:p==="agentPlan"?[...l,{...s,label:`${n}.plan`,value:`{{context.slots.${n}.plan}}`,description:"Plano produzido pelo Agent Plan."}]:p==="approval"?[...l,{...s,label:`${n}.decision`,value:`{{context.slots.${n}.decision}}`,description:"Decisao de aprovacao/reprovacao."}]:p==="loop"?[...l,{...s,label:`${n}.iteration`,value:`{{context.slots.${n}.iteration}}`,description:"Iteracao atual do loop, comecando em 1."},{...s,label:`${n}.shouldContinue`,value:`{{context.slots.${n}.shouldContinue}}`,description:"Booleano usado para saber se o loop continua."}]:p==="flowRouter"?[...l,{...s,label:`${n}.targetFlowId`,value:`{{context.slots.${n}.targetFlowId}}`,description:"Fluxo escolhido pelo roteador."},{...s,label:`${n}.reason`,value:`{{context.slots.${n}.reason}}`,description:"Motivo da escolha do roteador."}]:l}function cE(t){const n=[],r=new Set,s=l=>{r.has(l.value)||(r.add(l.value),n.push(l))};return(t.steps||[]).forEach(l=>{const p=iE(l);p&&lE(l,p).forEach(s);const m=String(l.inputValidationReasonResponseName||l.conditionReasonResponseName||"").trim();m&&s({group:"response",label:m,value:`{{context.slots.${m}}}`,description:`Motivo/explicacao salvo pelo no ${l.title||l.id}.`,source:l.title||l.id})}),{native:sE,response:n}}function uE(){var oa,id,_l,bs,Nu,ld,Ws,Cu,Gs,Su,kc,cd,ku,Au,Vo,Js,pr,aa,rp,ud,dd,wm,Ks,sp,pd,Ui,md,qi,ip,lp,hd,Eu;const[t,n]=b.useState(()=>dv()),[r,s]=b.useState("Fluxo IA Gen"),[l,p]=b.useState("default-agent"),[m,h]=b.useState(""),[f,x]=b.useState(""),[j,w]=b.useState([]),[N,C]=b.useState(void 0),[E,T]=b.useState(0),[R,D]=b.useState(!1),[q,I]=b.useState([]),[F,Y]=b.useState([]),[ne,ae]=b.useState(!1),[oe,Q]=b.useState(!1),[fe,xe]=b.useState(!1),[ye,le]=b.useState(""),[M,ee]=b.useState(""),[H,se]=b.useState(""),[G,V]=b.useState(""),[K,P]=b.useState(""),[O,ve]=b.useState(""),[ge,be]=b.useState(""),[Ce,$]=b.useState(null),[z,Z]=b.useState(""),[he,Be]=b.useState(!1),[at,gt]=b.useState(!1),[ht,mt]=b.useState(!1),[Et,Ye]=b.useState(""),[Pe,Ze]=b.useState(""),[Ct,re]=b.useState(()=>Ev(t)),we=b.useRef(Ct),[Me,et]=b.useState(()=>Mv(t)),[it,qe]=b.useState(""),[Re,ot]=b.useState(""),[kt,Fe]=b.useState(""),[Te,rt]=b.useState([]),[pn,An]=b.useState(null),[sa,mn]=b.useState(!1),[Wn,Jo]=b.useState(!1),[fr,Ko]=b.useState(!1),[ia,Ao]=b.useState(""),[la,gr]=b.useState(""),[xr,vr]=b.useState(!1),[Ba,yr]=b.useState("flow"),[Va,Ua]=b.useState("brief"),[ks,Qo]=b.useState([]),[Gn,qa]=b.useState(""),[En,Xr]=b.useState(xv),[Ha,el]=b.useState(!1),[As,Jn]=b.useState(""),[ft,_n]=b.useState(null),[Wa,ni]=b.useState(!1),[tl,jr]=b.useState(!1),[Es,Ga]=b.useState(""),[oi,ca]=b.useState(""),[We,Kn]=b.useState(""),Qn=b.useRef(null),Eo=b.useRef(null),[Yr,ai]=b.useState(!1),[Vl,Zr]=b.useState(!1),[ua,Ja]=b.useState(!1),[_e,en]=b.useState(!1),[Xn,mo]=b.useState(!1),[ho,Ka]=b.useState(!1),[ri,Qa]=b.useState(!1),[Mn,si]=b.useState("agent"),[nl,Ul]=b.useState(!0),[br,wr]=b.useState(""),[ql,an]=b.useState(""),[xt,zt]=b.useState(""),[$t,Cn]=b.useState(!1),[da,$c]=b.useState(null),[Hl,ol]=b.useState(""),[Ms,pa]=b.useState(""),[Xo,Nr]=b.useState(!1),[Mt,ii]=b.useState(null),[tt,Bc]=b.useState("draft"),[L,Yn]=b.useState(""),[Na,li]=b.useState(""),[ci,Vu]=b.useState([]),[Ht,Cr]=b.useState(void 0),[ui,Pt]=b.useState(0),[al,Zn]=b.useState(""),[Wl,ma]=b.useState(!1),[eo,es]=b.useState(""),[Ca,to]=b.useState(""),[Xa,rl]=b.useState({}),[On,Sr]=b.useState(!1),[ts,ha]=b.useState(""),[no,oo]=b.useState(void 0),[Ya,Sa]=b.useState([]),[ns,Za]=b.useState(!1),[Gl,Rn]=b.useState(""),[di,ao]=b.useState(""),[ka,Vc]=b.useState(""),[Vd,kr]=b.useState(""),[Uu,os]=b.useState(""),[pi,Uc]=b.useState(""),[Ud,sl]=b.useState(""),[qd,Mo]=b.useState(!1),[Ts,Ar]=b.useState(!1),[Jl,qc]=b.useState(""),[Wt,qu]=b.useState(null),[fo,mi]=b.useState({dateFrom:"",dateTo:"",flowId:"",conversationId:"",tags:"",limit:100}),[as,Kl]=b.useState("dashboard"),[hi,Ql]=b.useState("table"),[Hu,er]=b.useState(1),[rs,il]=b.useState(50),[Wu,ll]=b.useState(!1),[ss,cl]=b.useState(!1),[Er,Hc]=b.useState(""),[dt,fi]=b.useState(null),[Aa,Mr]=b.useState({dateFrom:"",dateTo:"",flowId:"",conversationId:"",historyLimit:80,traceLimit:600}),[Gu,Xl]=b.useState(!1),[tr,is]=b.useState(!1),[Ju,Fn]=b.useState(""),[go,ro]=b.useState(null),[Wc,Is]=b.useState(!1),[Yl,st]=b.useState("conversation"),[Tn,ls]=b.useState("saved"),[ul,gi]=b.useState("visual"),[Tr,Ps]=b.useState(()=>bp()),[hn,To]=b.useState(()=>jp(bp())),[fa,nr]=b.useState([]),[xi,dl]=b.useState(""),[Ir,vi]=b.useState(""),[yi,Yo]=b.useState("Suite principal"),[_s,ga]=b.useState(""),[Io,ji]=b.useState(!1),[bi,zn]=b.useState(""),[wi,Zl]=b.useState([]),[Ni,ec]=b.useState(null),[tc,Gc]=b.useState(!1),[nc,St]=b.useState(!1),[Xt,Gt]=b.useState(null),[Ci,pl]=b.useState(""),[Pr,_r]=b.useState(!1),[Ea,ml]=b.useState(!1),[Ku,Si]=b.useState(""),[Tt,ki]=b.useState(!1),[or,Os]=b.useState(""),[Jc,jn]=b.useState([{role:"system",text:"Clique em Reiniciar para testar com a IA real, incluindo chamadas httpBatch."}]),[vt,Po]=b.useState("draft"),[xa,va]=b.useState(""),[Or,_o]=b.useState(""),[Kc,Rs]=b.useState({}),[Jt,Rr]=b.useState(null),[hl,Ln]=b.useState({}),[Fr,cs]=b.useState([]),[xo,Ai]=b.useState(null),[Qu,ya]=b.useState(null),[zr,ar]=b.useState(""),[Ei,rn]=b.useState(""),[Fs,sn]=b.useState(""),oc=b.useMemo(()=>sA(),[]),Ma=b.useMemo(()=>t.steps.find(u=>u.id===it),[t.steps,it]),ac=Ct.length>cA||Me.length>uA,Ta=b.useMemo(()=>t.edges.find(u=>u.id===Re),[t.edges,Re]),Oo=b.useMemo(()=>t.edges.find(u=>u.id===kt),[t.edges,kt]),Lr=b.useMemo(()=>oE(t,Te,it),[t,Te,it]),rr=b.useMemo(()=>{const u=new Set(t.steps.map(k=>k.id)),y=xr?ks:Lr;return Array.from(new Set(y)).filter(k=>u.has(k))},[Lr,t.steps,xr,ks]),fl=b.useMemo(()=>t.steps.filter(u=>rr.includes(u.id)),[rr,t.steps]),Ia=b.useMemo(()=>{const u=Gn.trim().toLowerCase();return u?t.steps.filter(y=>{const k=y.component||{},B=y.richMessage||{};return[y.id,y.title,y.type,y.instruction,y.responseName,y.condition,k.type,k.responseName,k.webhookId,k.collectionName,B.text,B.type].filter(Boolean).join(" ").toLowerCase().includes(u)}):t.steps},[t.steps,Gn]),Pa=b.useMemo(()=>cE(t),[t]),Ee=l.trim()||"default-agent",It=!!(f&&m&&Ee!==m.trim()),ja=yA(Ee,f,r||t.responseName||t.title),Dn=b.useMemo(()=>F.some(u=>qo(u)===Ee||Qs(u)===Ee),[F,Ee]),$n=Ee==="default-agent"&&!Dn,fn=$n&&!f,Kt=$n,In=b.useMemo(()=>F.find(u=>qo(u)===Ee)||F.find(u=>Qs(u)===Ee),[F,Ee]),Sn=qo(In||{agentId:Ee,name:Ee}),us=$n?"Nenhum agente":Qs(In||{agentId:Ee,name:Ee}),Qc=b.useMemo(()=>yp(In||{},t),[In,Ee,t]),ds=b.useMemo(()=>{const u=new Map;return F.forEach(y=>u.set(qo(y),y)),f&&!u.has(Ee)&&u.set(Ee,{agentId:Ee,name:Ee,flowCount:q.length}),Array.from(u.values())},[F,q.length,Ee,f]);b.useEffect(()=>{Zl(jA(ja))},[ja]),b.useEffect(()=>{let u=!1;const y=async()=>{var k;try{const B=await Oe.getProviderConfig({agentId:Sn});if(u)return;const te=(k=B.providerStatus)==null?void 0:k.webWidget;Gc(!!(te!=null&&te.configured)),ec(B.settings.webWidget?Dd(B.settings.webWidget):null)}catch{u||(Gc(!1),ec(null))}};return y(),window.addEventListener("canvas-flow-provider-config-updated",y),()=>{u=!0,window.removeEventListener("canvas-flow-provider-config-updated",y)}},[Sn]);const gl=b.useMemo(()=>{const u=M.trim().toLowerCase();return ds.filter(y=>u?`${Qs(y)} ${qo(y)}`.toLowerCase().includes(u):!0)},[M,ds]),_a=b.useMemo(()=>{const u=di.trim().toLowerCase();return Ya.map((y,k)=>({flow:y,index:k})).filter(({flow:y})=>{var k,B;return u?`${y.name} ${((k=y.config)==null?void 0:k.title)||""} ${((B=y.config)==null?void 0:B.responseName)||""}`.toLowerCase().includes(u):!0})},[Ya,di]),xl=nc||!!(Ma||Ta),rc=Ma?Ma.title||"Editar nóde":Ta?"Editar ligação":"Config Padrão";b.useEffect(()=>{if(!xr)return;const u=new Set(t.steps.map(y=>y.id));Qo(y=>{const k=y.filter(B=>u.has(B));return k.length===y.length?y:k})},[t.steps,xr]);const sc=b.useMemo(()=>{const u=la.trim().toLowerCase();return u?gv.filter(y=>`${y.title} ${y.description} ${y.category}`.toLowerCase().includes(u)):gv},[la]),Zo=t.channel||"webWidget",sr=b.useMemo(()=>Dd(tc&&Ni?Ni:t.webWidget),[t.webWidget,Ni,tc]),ps=b.useMemo(()=>Kp(t.whatsapp),[t.whatsapp]),vo=fn?"<AGENTE_ID>":Sn,Mi=b.useMemo(()=>zA({config:t,flowId:f,flowName:r,agentId:fn?"":Sn}),[t,r,f,Sn,fn]),zs=b.useMemo(()=>JSON.stringify(Mi,null,2),[Mi]),Ro=t.isMainFlow?`${zc}/api/canvas-flow/webhook/whatsapp-main/${vo}`:`${zc}/api/canvas-flow/webhook/whatsapp/${f||"<FLOW_ID_SALVO>"}`,Lt=b.useMemo(()=>VA({apiUrl:zc,flowId:f||"<FLOW_ID_SALVO>",flowName:r,flowResponseName:t.responseName,agentId:vo,channel:Zo,webWidget:sr,whatsapp:ps,whatsappWebhookUrl:Ro,apiTokenConfigured:yj}),[vo,Zo,t.responseName,r,f,sr,ps,Ro]),_t=b.useMemo(()=>bA(Ip(t.simulationSuites),wi),[t.simulationSuites,wi]),ea=b.useMemo(()=>fa.map(u=>_t.find(y=>y.id===u)).filter(u=>!!u),[_t,fa]),ir=ea.reduce((u,y)=>u+y.cases.length,0);b.useEffect(()=>{nr(u=>{const y=new Set(_t.map(B=>B.id)),k=u.filter(B=>y.has(B));return k.length?k:_t.map(B=>B.id)})},[_t]);const Ot=b.useMemo(()=>Ch(j),[j]),Qt=b.useMemo(()=>DA(ci),[ci]),Ls=Math.max(E||0,...j.map(u=>Number(u.version||0)))+1,vl=Math.max(ui||0,...ci.map(u=>Number(u.release||0)))+1,bn=Qt.find(u=>String(u.release)===eo),so=b.useMemo(()=>lh(bn,q),[q,bn]),Rt=Qt.find(u=>Number(u.release)===Number(Ht)),yo=f?Number(((oa=Rt==null?void 0:Rt.versions)==null?void 0:oa[f])||N||0):0,ta=b.useMemo(()=>$A(bn,q,{...Xa,...f?{[f]:{activeVersion:N,versions:Ot}}:{}}),[Xa,N,q,f,bn,Ot]),ic=Ot.find(u=>String(u.version)===ts),yl=no?Ot.find(u=>Number(u.version)===Number(no)):void 0,Dr=ho||ri,jo=yl||(f?Ym(Ot,yo||N):void 0),Ti=!!(f&&jo),lc=String((jo==null?void 0:jo.name)||"").trim(),ms=jo?`v${jo.version}${lc?` · ${lc}`:""}`:"",jl=ui||Ht,cc=Number(xa)||0,hs=Number(Or)||0,$r=(Mt==null?void 0:Mt.kind)==="agent"?Qt.filter(u=>Number(u.release)!==Number(Mt.version)):Ot.filter(u=>Number(u.version)!==Number(Mt==null?void 0:Mt.version)),Xc=(Mt==null?void 0:Mt.kind)==="agent"?String(((id=$r[0])==null?void 0:id.release)||""):String(((_l=$r[0])==null?void 0:_l.version)||""),uc=L||Xc,fs=Number(uc)||0,Yc=!!(Mt&&tt==="version"&&!fs),Oa=vt==="agentVersion"&&!cc||vt==="flowVersion"&&!hs||vt!=="draft"&&!f,Ds=b.useMemo(()=>Fr.filter(u=>u&&typeof u=="object"&&["edgeConditionJs","edgeConditionLlm"].includes(String(u.type||""))),[Fr]),$s=Number((xo==null?void 0:xo.total)||Fr.length||0),Ii=Number((xo==null?void 0:xo.dropped)||0),dc=Number((xo==null?void 0:xo.returned)||Fr.length||0),bl=!!(xo!=null&&xo.hasMore),pc=Fr.length>0||$s>0,Bs=Ds.length?`${Ds.length} condição(ões) de ligação avaliadas`:`${dc} evento(s) de trace carregado(s)`,Fo=b.useMemo(()=>JSON.stringify({flowId:f||"<FLOW_ID_SALVO>",agentId:vo,channel:Zo,conversationId:`${Zo}-cliente-123`,text:"oi",slots:{}},null,2),[vo,Zo,f]),Br=b.useMemo(()=>JSON.stringify({flowId:f||"<FLOW_ID_SALVO>",agentId:vo,channel:Zo,agentRelease:jl||"<PACOTE_DE_HOMOLOGACAO>",conversationId:`${Zo}-homolog-123`,text:"Teste de homologação",slots:{}},null,2),[vo,Zo,jl,f]),gs=b.useCallback(()=>{St(!1),qe(""),ot(""),Fe(""),rt([]),Ko(!1)},[]),wl=u=>{n(y=>({...y,...u}))},zo=u=>{n(y=>{var k,B,te,ue,pe,ze,Qe,yn,ra,Bt;return{...y,model:u.model||y.model,llmProvider:u.llmProvider||y.llmProvider||"openai",agentSpec:{...y.agentSpec||{},...u.agentSpec||{},blockedTerms:((k=u.agentSpec)==null?void 0:k.blockedTerms)||((B=y.agentSpec)==null?void 0:B.blockedTerms)||[],rules:((te=u.agentSpec)==null?void 0:te.rules)||((ue=y.agentSpec)==null?void 0:ue.rules)||[],skills:((pe=u.agentSpec)==null?void 0:pe.skills)||((ze=y.agentSpec)==null?void 0:ze.skills)||[],subagents:((Qe=u.agentSpec)==null?void 0:Qe.subagents)||((yn=y.agentSpec)==null?void 0:yn.subagents)||[],mcpServers:((ra=u.agentSpec)==null?void 0:ra.mcpServers)||((Bt=y.agentSpec)==null?void 0:Bt.mcpServers)||[]}}})},Ra=u=>{zo(Qc),Ye(""),Ze(""),Be(!0)},Nl=()=>{var u,y,k,B,te,ue,pe;return{model:t.model,llmProvider:t.llmProvider||"openai",agentSpec:{agentsMd:((u=t.agentSpec)==null?void 0:u.agentsMd)||"",guardrails:((y=t.agentSpec)==null?void 0:y.guardrails)||"",blockedTerms:((k=t.agentSpec)==null?void 0:k.blockedTerms)||[],rules:((B=t.agentSpec)==null?void 0:B.rules)||[],skills:((te=t.agentSpec)==null?void 0:te.skills)||[],subagents:((ue=t.agentSpec)==null?void 0:ue.subagents)||[],mcpServers:((pe=t.agentSpec)==null?void 0:pe.mcpServers)||[]}}},Cl=u=>{Y(y=>y.some(B=>qo(B)===Sn)?y.map(B=>qo(B)===Sn?{...B,...u}:B):[...y,u])},lr=async()=>{if(fn||at)return;const u=Nl();gt(!0),Ye(""),Ze("");try{const y=await Oe.updateAgentConfig(Sn,u);Cl(y),zo(yp(y,t)),Ze("Agent OS salvo no perfil do agente.")}catch(y){Ye(y instanceof Error?y.message:"Nao foi possivel salvar o Agent OS.")}finally{gt(!1)}},Vr=u=>{const y=new Blob([JSON.stringify(u,null,2)],{type:"application/json;charset=utf-8"}),k=URL.createObjectURL(y),B=document.createElement("a");B.href=k,B.download=`${yv(u.agentName||u.agentId||us)}.canvas-flow.workspace.json`,document.body.appendChild(B),B.click(),B.remove(),URL.revokeObjectURL(k)},Sl=async()=>{if(!(fn||ht)){mt(!0),Ye(""),Ze("");try{const u=await Oe.updateAgentConfig(Sn,Nl());Cl(u),zo(yp(u,t));const y=await Oe.getAgentWorkspace(Sn);Vr(y),Ze("Workspace .canvas-flow exportado.")}catch(u){Ye(u instanceof Error?u.message:"Nao foi possivel exportar o workspace.")}finally{mt(!1)}}},Zc=async u=>{if(!(fn||ht)){mt(!0),Ye(""),Ze("");try{const y=JSON.parse(u),k=await Oe.importAgentWorkspace(Sn,y);Cl(k),zo(yp(k,t)),Ze("Workspace .canvas-flow importado para este agente.")}catch(y){Ye(y instanceof Error?y.message:"Nao foi possivel importar o workspace.")}finally{mt(!1)}}},Bn=(u,y)=>{w(Array.isArray(y)?y:Array.isArray(u==null?void 0:u.versions)?u.versions:[]),C(Number.isFinite(Number(u==null?void 0:u.activeVersion))?Number(u==null?void 0:u.activeVersion):void 0),T(Number.isFinite(Number(u==null?void 0:u.latestVersion))?Number(u==null?void 0:u.latestVersion):0)},cr=u=>{Vu(Array.isArray(u==null?void 0:u.releases)?u.releases:[]),Cr(Number.isFinite(Number(u==null?void 0:u.activeRelease))?Number(u==null?void 0:u.activeRelease):void 0),Pt(Number.isFinite(Number(u==null?void 0:u.latestRelease))?Number(u==null?void 0:u.latestRelease):0)},bo=b.useCallback(async(u=Ee)=>{if(!u||u==="default-agent")return cr(null),null;ma(!0);try{const y=await Oe.getAgentReleases(u);return cr(y),y}catch{return cr(null),null}finally{ma(!1)}},[Ee]),Lo=b.useCallback(async(u=f)=>{if(!u)return Bn(null),null;D(!0);try{const y=await Oe.getFlowVersions(u);return Bn(y),y}catch{return Bn(null),null}finally{D(!1)}},[f]);b.useEffect(()=>{Dr&&(f&&Lo(f),bo(Ee))},[Dr,bo,Lo,Ee,f]),b.useEffect(()=>{pl("")},[Xt==null?void 0:Xt.title,Xt==null?void 0:Xt.confirmationText]),b.useEffect(()=>{if(!ho)return;const u=y=>{var k;(k=Eo.current)!=null&&k.contains(y.target)||Ka(!1)};return document.addEventListener("pointerdown",u),()=>document.removeEventListener("pointerdown",u)},[ho]),b.useEffect(()=>{vt==="agentVersion"&&bo(Ee)},[vt,bo,Ee]),b.useEffect(()=>{vt!=="flowVersion"||!f||Ot.length||R||Lo(f)},[vt,f,Ot.length,R,Lo]),b.useEffect(()=>{vt!=="agentVersion"||xa||!Qt.length||va(String(Qt[0].release||""))},[vt,xa,Qt]),b.useEffect(()=>{vt!=="flowVersion"||Or||!Ot.length||_o(String(Ot[0].version||""))},[vt,Or,Ot]),b.useEffect(()=>{if(!Dr)return;if(!Qt.length){eo&&es("");return}Qt.some(y=>String(y.release)===eo)||es("")},[eo,Dr,Qt]),b.useEffect(()=>{if(!Ot.length){ts&&ha("");return}Ot.some(y=>String(y.version)===ts)||ha("")},[ts,Ot]),b.useEffect(()=>{if(!Dr||!so.length){rl({});return}let u=!1;return Promise.all(so.map(async y=>{const k=await Oe.getFlowVersions(y.id).catch(()=>null);return[y.id,{activeVersion:k==null?void 0:k.activeVersion,versions:(k==null?void 0:k.versions)||[]}]})).then(y=>{u||rl(Object.fromEntries(y))}),()=>{u=!0}},[Dr,so]),b.useEffect(()=>{if(!ta.length){Ca&&to("");return}if(ta.some(k=>k.key===Ca))return;const y=ta.find(k=>k.isReleaseSnapshot)||ta[0];to(y.key)},[Ca,ta]);const Pi=(u,y)=>{n(k=>({...k,steps:k.steps.map(B=>{if(B.id!==u)return B;const te={...B,...y};return y.responseName&&te.api&&(te.api={...te.api,responseName:y.responseName}),y.responseName&&te.component&&(te.component={...te.component,responseName:y.responseName}),te})}))},Vs=b.useCallback((u,y)=>{n(k=>({...k,steps:k.steps.map(B=>{if(B.id!==u)return B;const te={...B,...y};return B.type==="condition"&&y.instruction!==void 0&&(te.condition=y.instruction),te})}))},[]),Ur=b.useCallback((u,y)=>{An(y?{stepId:u,field:y}:null)},[]),mc=(u,y)=>{n(k=>({...k,edges:k.edges.map(B=>B.id===u?{...B,...y}:B)}))},xs=b.useCallback((u,y)=>{n(k=>{const te=Dc(k.steps).map(ue=>ue.id===u?{...ue,group:{...ue.group||{width:520,height:340},width:Math.max(eg,Math.round(y.width)),height:Math.max(tg,Math.round(y.height))}}:ue);return{...k,steps:qj(te,u)}})},[]),hc=b.useCallback(u=>{n(y=>{var ze;const k=Dc(y.steps),B=k.find(Qe=>Qe.id===u&&Qe.type==="group"),te=!((ze=B==null?void 0:B.group)!=null&&ze.collapsed),ue=te?XA(k,u,{includeAttached:!0,margin:gA,canvasNodes:we.current}):{steps:k,childIds:[]},pe=ue.steps.map(Qe=>{var yn;return Qe.id===u&&Qe.type==="group"?{...Qe,group:{...Qe.group||{width:520,height:340},collapsed:!((yn=Qe.group)!=null&&yn.collapsed),collapsedChildIds:ue.childIds}}:Qe});return{...y,steps:te?pe:JA(pe,u)}})},[]),kl=b.useCallback(()=>{const u=ko("group");n(y=>{const k=new Map(y.steps.map(Bt=>[Bt.id,Bt])),B=Te.map(Bt=>k.get(Bt)).filter(Bt=>Bt?Bt.type!=="group"&&!Bt.parentId:!1),te=jt("group",y.steps.length);if(te.id=u,!B.length)return te.position={x:120+y.steps.length*38,y:120+y.steps.length*24},{...y,steps:[...y.steps,te],startStepId:y.startStepId||te.id};const ue=B.reduce((Bt,Co)=>{const La=Up(Co,k);return{minX:Math.min(Bt.minX,La.x),minY:Math.min(Bt.minY,La.y),maxX:Math.max(Bt.maxX,La.right),maxY:Math.max(Bt.maxY,La.bottom)}},{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}),pe={x:ue.minX-pv,y:ue.minY-mv},ze=Math.max(eg,ue.maxX-ue.minX+pv*2),Qe=Math.max(tg,ue.maxY-ue.minY+mv+mA);te.position=pe,te.group={width:ze,height:Qe};const yn=new Set(B.map(Bt=>Bt.id)),ra=y.steps.map(Bt=>{if(!yn.has(Bt.id))return Bt;const Co=Zi(Bt,k);return{...Bt,parentId:te.id,position:Qp(Co.x-pe.x,Co.y-pe.y)}});return{...y,steps:[...ra,te],startStepId:y.startStepId||te.id}}),qe(u),ot(""),Fe(""),St(!1)},[Te]),Yt=()=>{const u=Lr;Qo(u),mn(!1),Jn(""),yr(u.length?"selection":"flow"),qa(""),vr(!0)},Al=u=>{Qo(y=>y.includes(u)?y.filter(k=>k!==u):[...y,u]),_n(null),Jn("")},fc=()=>{const u=Gn.trim()?Ia:t.steps;Qo(y=>Array.from(new Set([...y,...u.map(k=>k.id)]))),_n(null),Jn("")},gc=()=>{Qo([]),_n(null),Jn("")},El=async()=>{const u=En.trim();if(!u){Jn("Descreva o fluxo que a IA deve montar.");return}const y=Ba==="selection"?"selection":"flow",k=y==="selection"?rr:[];if(y==="selection"&&!k.length){Jn("Selecione pelo menos um nó no canvas para usar este escopo.");return}el(!0),Jn("");try{const B=So(t),te=y==="selection"?aE(B,k):B,ue=await Oe.generateFlowWithAssistant({instruction:u,sourceType:Va,currentConfig:te,scope:{mode:y==="selection"?"selectedNodes":"fullFlow",selectedStepIds:k},flowName:r,agentId:l,flowId:f||void 0,model:t.model,llmProvider:t.llmProvider||"openai"});_n({...ue,scope:y,selectedStepIds:k})}catch(B){Jn(B instanceof Error?B.message:"Não foi possível gerar o fluxo com IA.")}finally{el(!1)}},xc=()=>{var k,B;if(!(ft!=null&&ft.config))return;const u=So(ft.config),y=ft.scope==="selection"?So(rE(t,u,ft.selectedStepIds||[])):u;n(y),ft.scope!=="selection"&&s(y.title||r||"Fluxo IA"),qe(ft.scope==="selection"?((k=ft.selectedStepIds)==null?void 0:k[0])||"":y.startStepId||((B=y.steps[0])==null?void 0:B.id)||""),ot(""),Fe(""),St(!1),sn(""),rn(""),ar(""),Ln({}),ya(null),jn([{role:"system",text:"Alteração aplicada pelo assistente. Clique em Salvar para persistir."}]),vr(!1)},Do=u=>{if(u==="group"){kl();return}const y=jt(u,t.steps.length);n(k=>({...k,steps:[...k.steps,y],startStepId:k.startStepId||y.id})),qe(y.id),ot(""),Fe(""),St(!1),sn(""),rn(""),Ln({})},Zt=u=>{if(!u)return;const y=jt("component",t.steps.length,u);n(k=>({...k,steps:[...k.steps,y]})),qe(y.id),ot(""),Fe(""),St(!1),mn(!1),gr("")},gn=b.useCallback(u=>{n(y=>Nv(y,new Set([u]))),qe(""),ot(""),Fe(""),rt([])},[]),wn=b.useCallback(u=>{const y=t.steps.find(B=>B.id===u),k=(y==null?void 0:y.type)==="group"?`Deseja realmente excluir "${(y==null?void 0:y.title)||"este encapsulador"}"? Os nós dentro dele serão mantidos no canvas.`:`Deseja realmente excluir "${(y==null?void 0:y.title)||"este nó"}"? As ligações conectadas a ele também serão removidas.`;Gt({title:"Excluir nó?",message:k,confirmLabel:"Excluir nó",onConfirm:()=>gn(u)})},[t.steps,gn]),vs=b.useCallback(u=>{qe(u),ot(""),Fe(""),St(!1)},[]),Us=b.useCallback(u=>{n(y=>{var ue,pe;const k=y.steps.find(ze=>ze.id===u);if(!k)return y;const B=ko(k.type),te={...Cv(k),id:B,title:`${k.title||"Node"} copia`,position:{x:(((ue=k.position)==null?void 0:ue.x)||0)+36,y:(((pe=k.position)==null?void 0:pe.y)||0)+36}};return{...y,steps:[...y.steps,te]}}),qe(""),ot(""),Fe(""),St(!1)},[]),_i=b.useCallback(()=>{const u=new Set(Te);if(!u.size)return;const y=t.steps.filter(pe=>u.has(pe.id));if(!y.length)return;const k=new Map(y.map(pe=>[pe.id,ko(pe.type)])),B=Array.from(k.values()),te=y.map(pe=>{var yn,ra;const ze=k.get(pe.id)||ko(pe.type),Qe=pe.parentId&&k.has(pe.parentId)?k.get(pe.parentId):pe.parentId;return{...Cv(pe),id:ze,title:`${pe.title||"Node"} copia`,parentId:Qe,position:{x:(((yn=pe.position)==null?void 0:yn.x)||0)+36,y:(((ra=pe.position)==null?void 0:ra.y)||0)+36}}}),ue=t.edges.filter(pe=>u.has(pe.source)&&u.has(pe.target)).map(pe=>({...pe,id:ko("edge"),source:k.get(pe.source)||pe.source,target:k.get(pe.target)||pe.target}));n(pe=>({...pe,steps:[...pe.steps,...te],edges:[...pe.edges,...ue]})),qe(""),ot(""),Fe(""),rt(B),St(!1)},[t.edges,t.steps,Te]),eu=b.useCallback(u=>{const y=new Set(u);n(k=>Nv(k,y)),qe(""),ot(""),Fe(""),rt([]),St(!1)},[]),Vn=b.useCallback(()=>{const u=Te.map(y=>t.steps.find(k=>k.id===y)).filter(y=>!!y);u.length&&Gt({title:`Excluir ${u.length} nos?`,message:"As ligacoes conectadas aos nos selecionados tambem serao removidas. Encapsuladores selecionados soltam os nos internos que nao estiverem selecionados.",confirmLabel:"Excluir selecionados",onConfirm:()=>eu(u.map(y=>y.id))})},[t.steps,eu,Te]),Ml=b.useCallback(u=>{n(y=>({...y,edges:y.edges.filter(k=>k.id!==u)})),ot(""),Fe("")},[]),Oi=b.useCallback(u=>{const y=t.edges.find(ue=>ue.id===u),k=t.steps.find(ue=>ue.id===(y==null?void 0:y.source)),B=t.steps.find(ue=>ue.id===(y==null?void 0:y.target)),te=k&&B?`${k.title||k.id} -> ${B.title||B.id}`:"esta ligação";Gt({title:"Excluir ligação?",message:`Deseja realmente excluir ${te}?`,confirmLabel:"Excluir ligação",onConfirm:()=>Ml(u)})},[t.edges,t.steps,Ml]),Tl=b.useCallback(u=>{ot(u),qe(""),Fe(""),St(!1)},[]),Fa=b.useCallback(u=>{!u.source||!u.target||n(y=>{const k={id:ko("edge"),source:u.source,target:u.target};return Hj(k,y)&&(k.edgeRole="manifest"),{...y,edges:[...y.edges,k]}})},[]),io=b.useCallback((u,y)=>{const k=Array.isArray(y)&&y.length?y:[u];if(k.length>1||Te.length<=1||!Te.includes(u.id))return k;const B=new Set(Te);return wp(we.current,[u]).filter(ue=>B.has(ue.id))},[Te]),Ri=b.useCallback((u,y,k)=>{const B=io(y,k);we.current=wp(we.current,B)},[io]),vc=b.useCallback((u,y)=>{we.current=wp(we.current,y)},[]),yc=b.useCallback((u,y,k)=>{const B=io(y,k);we.current=wp(we.current,B),n(te=>Av(te,B))},[io]),tu=b.useCallback((u,y)=>{we.current=wp(we.current,y),n(k=>Av(k,y))},[]),nu=b.useCallback(u=>{const y=u.filter(B=>B.type==="select");y.length&&rt(B=>{const te=new Set(B);return y.forEach(ue=>{ue.selected?te.add(ue.id):te.delete(ue.id)}),Array.from(te)});const k=u.filter(B=>B.type!=="select");k.length&&re(B=>{const te=zy(k,B);return we.current=te,te})},[]),ou=b.useCallback(({nodes:u})=>{rt(u.map(y=>y.id))},[]),au=b.useCallback((u,y)=>{var B,te;const k=u;if(k.ctrlKey||k.metaKey||k.shiftKey){qe(""),ot(""),Fe(""),St(!1);return}if(((te=(B=y.data)==null?void 0:B.step)==null?void 0:te.type)==="group"){gs(),rt([y.id]);return}rt([y.id]),vs(y.id)},[gs,vs]),ru=b.useCallback((u,y)=>{Fe(y.id),ot(""),qe(""),St(!1)},[]),su=b.useCallback(u=>{const y=new Set(u.map(k=>k.id));n(k=>({...k,edges:k.edges.filter(B=>!y.has(B.id))})),ot(k=>y.has(k)?"":k),Fe(k=>y.has(k)?"":k)},[]);b.useEffect(()=>{we.current=Ct},[Ct]),b.useEffect(()=>{const u=Ev(t,{onUpdate:Vs,onEdit:vs,onInlineEdit:Ur,editingStepId:pn==null?void 0:pn.stepId,editingField:(pn==null?void 0:pn.field)||null,onDuplicate:Us,onDelete:wn,onResizeGroup:xs,onToggleGroup:hc,selectedStepIds:Te});re(y=>{const k=YA(y,u);return we.current=k,k})},[t,Us,pn,vs,wn,xs,Te,hc,Ur,Vs]),b.useEffect(()=>{et(Mv(t,{onEdit:Tl,onDelete:Oi}))},[t,Tl,Oi]),b.useEffect(()=>{const u=new Set(t.steps.map(k=>k.id)),y=Cg(t);rt(k=>k.filter(B=>u.has(B)&&y.has(B))),qe(k=>k&&!y.has(k)?"":k),An(k=>k&&!y.has(k.stepId)?null:k)},[t]);const xn=b.useCallback(async(u=Ee)=>{const y=u.trim()||"default-agent";ml(!0),Si("");try{const k=await Oe.listFlows(y);return I(k),k}catch(k){const B=k instanceof Error?k.message:"Nao foi possivel carregar os fluxos.";throw Si(B),k}finally{ml(!1)}},[Ee]),vn=b.useCallback(async()=>{Q(!0),le("");try{const u=await Oe.listAgents();return Y(u),u}catch(u){return le(u instanceof Error?u.message:"Nao foi possivel carregar os agentes."),[]}finally{Q(!1)}},[]);b.useEffect(()=>{vn()},[vn]),b.useEffect(()=>{let u=!1;const y=Ee,k=window.setTimeout(()=>{ml(!0),Oe.listFlows(y).then(B=>{u||(Si(""),I(B))}).catch(B=>{u||Si(B instanceof Error?B.message:"Nao foi possivel carregar os fluxos.")}).finally(()=>{u||ml(!1)})},350);return()=>{u=!0,window.clearTimeout(k)}},[Ee]);const qr=async(u=fo,y=Hu,k=rs)=>{Ar(!0),qc("");try{const B=await Oe.getTagDashboard({...u,agentId:l,flowId:u.flowId||"",tags:yf(u.tags),limit:Number(u.limit||100),historyPage:y,historyLimit:k});qu(B)}catch(B){qc(B instanceof Error?B.message:"Não foi possível carregar o dashboard de tags.")}finally{Ar(!1)}},iu=async()=>{en(!1),Mo(!0),er(1),q.length||await xn().catch(()=>[]),await qr(fo,1,rs)},Il=async()=>{er(1),await qr(fo,1,rs)},Fi=async u=>{const y=Math.max(1,u);er(y),await qr(fo,y,rs)},lu=async u=>{const y=Math.max(10,Math.min(Number(u||50),500));il(y),er(1),await qr(fo,1,y)},Pl=async(u=Aa)=>{cl(!0),Hc("");try{const y=await Oe.getAgentOpsDashboard({...u,agentId:Ee,flowId:u.flowId||"",historyLimit:Math.max(10,Math.min(Number(u.historyLimit||80),500)),traceLimit:Math.max(50,Math.min(Number(u.traceLimit||600),5e3))});fi(y)}catch(y){Hc(y instanceof Error?y.message:"Nao foi possivel carregar o AgentOps.")}finally{cl(!1)}},jc=async()=>{en(!1),ll(!0),q.length||await xn().catch(()=>[]),await Pl(Aa)},cu=async()=>{await Pl(Aa)},c=u=>{const y=u.length?u:[Fu({name:"Novo cenario"})];Ps(y);try{To(jp(y))}catch{}},S=(u,y)=>{const k=Tr.map(B=>B.id===u?{...B,...y}:B);c(k),ro(null)},_=()=>{const u=[...Tr,Fu({name:`Cenario ${Tr.length+1}`})];c(u),ro(null)},W=u=>{const y=Tr.find(B=>B.id===u);if(!y)return;const k=[...Tr,{...y,id:ko("simcase"),name:`${y.name||"Cenario"} copia`}];c(k),ro(null)},je=u=>{const y=Tr.filter(k=>k.id!==u);c(y),ro(null)},ke=()=>{const u=bp();c(u),Fn(""),ro(null)},Ge=()=>{try{const u=hv(hn);c(u.length?u:[Fu({name:"Novo cenario"})]),gi("visual"),Fn(""),ro(null)}catch(u){Fn(u instanceof Error?u.message:"JSON invalido.")}},ut=()=>{try{const u=hv(hn);To(jp(u)),Fn("")}catch(u){Fn(u instanceof Error?u.message:"JSON invalido.")}},yt=()=>{if(Tn==="saved"){if(!fa.length)throw new Error("Selecione pelo menos uma suite salva para rodar.");const y=wA(_t,fa);if(!y.length)throw new Error("As suites selecionadas nao possuem casos.");return To(JSON.stringify(y,null,2)),y}if(ul==="json"){const y=JSON.parse(hn||"[]"),k=Array.isArray(y)?y:y.cases;if(!Array.isArray(k))throw new Error("JSON precisa ser uma lista de casos ou um objeto com cases[].");return k}const u=_j(Tr);return To(JSON.stringify(u,null,2)),u},tn=u=>{nr(y=>y.includes(u)?y.filter(k=>k!==u):[...y,u]),ro(null)},Un=()=>{nr(_t.map(u=>u.id)),ro(null)},Xe=()=>{nr([]),ro(null)},ln=(u,y)=>{!u||!y||u===y||(nr(k=>{const B=k.indexOf(u),te=k.indexOf(y);return B<0||te<0?k:Cf(k,B,te)}),dl(""),ro(null))},wo=u=>{const y=_t.find(B=>B.id===u);if(!y)return;const k=y.cases.map((B,te)=>Pj(B,te));vi(y.id),Yo(y.name||"Suite sem nome"),ga(y.description||""),st(y.mode==="isolated"?"isolated":"conversation"),Ps(k.length?k:[Fu({name:"Novo cenario"})]),To(JSON.stringify(y.cases||[],null,2)),gi("visual"),ls("editor"),Fn(""),zn(`Suite "${y.name}" carregada.`),ro(null)},uu=()=>{const u=bp();vi(""),Yo(`Suite ${_t.length+1}`),ga(""),st("conversation"),Ps(u),To(jp(u)),gi("visual"),ls("editor"),Fn(""),zn(""),ro(null)},du=async(u,y)=>{var pe;const k=Ip(u);fv(ja,k),Zl(k);const B=So({...t,simulationSuites:k});if(n(B),!f)return zn(`${y} Salva localmente; salve o fluxo para enviar ao backend.`),null;const te=await Oe.updateFlow(f,{name:r||B.title,agentId:Ee,config:B});s(te.name),p(te.agentId||Ee),h(te.agentId||Ee),n(So(te.config));const ue=Ip(((pe=te.config)==null?void 0:pe.simulationSuites)||k);return fv(ja,ue),Zl(ue),await xn(te.agentId||Ee),zn(y),te},Xu=async()=>{ji(!0),Fn(""),zn("");try{const u=yt();if(!u.length)throw new Error("Adicione pelo menos um caso com mensagem do usuario.");const y=new Date().toISOString(),k=_t,B=Ir||ko("evalsuite"),te=k.find(ze=>ze.id===B),ue={id:B,name:yi.trim()||(te==null?void 0:te.name)||`Suite ${k.length+1}`,description:_s.trim(),mode:Yl,cases:u,createdAt:(te==null?void 0:te.createdAt)||y,updatedAt:y},pe=te?k.map(ze=>ze.id===B?ue:ze):[...k,ue];vi(ue.id),nr(ze=>ze.includes(ue.id)?ze:[...ze,ue.id]),Yo(ue.name),ga(ue.description||""),await du(pe,`Suite "${ue.name}" salva.`)}catch(u){Fn(u instanceof Error?u.message:"Nao foi possivel salvar a suite.")}finally{ji(!1)}},ba=async()=>{if(!Ir)return;const u=_t.find(y=>y.id===Ir);if(u){ji(!0),Fn(""),zn("");try{const y=_t.filter(B=>B.id!==u.id);await du(y,`Suite "${u.name}" removida.`),nr(B=>B.filter(te=>te!==u.id));const k=bp();vi(""),Yo(`Suite ${y.length+1}`),ga(""),st("conversation"),Ps(k),To(jp(k)),gi("visual"),ro(null)}catch(y){Fn(y instanceof Error?y.message:"Nao foi possivel remover a suite.")}finally{ji(!1)}}},bc=()=>{en(!1),Xl(!0),Fn(""),zn(""),ls(_t.length?"saved":"editor")},ys=async()=>{is(!0),Fn(""),ro(null),Is(!1);try{const u=yt();if(!Array.isArray(u)||!u.length)throw new Error("Informe uma lista JSON com pelo menos um caso.");const y=await Oe.replaySimulation(Zd({flowId:f||void 0,agentId:l,channel:Zo,mode:Yl,cases:u,conversationId:`canvas-flow-sim-${Date.now()}`,traceMode:"compact",traceLimit:120,traceCollectLimit:800}));ro(y)}catch(u){Fn(u instanceof Error?u.message:"Nao foi possivel rodar a simulacao.")}finally{is(!1)}},Xp=()=>{go&&Rr({title:"Estado final da simulacao",payload:{summary:go.summary,mode:go.mode,finalState:go.finalState,generatedAt:go.generatedAt}})},Hd=u=>{Rr({title:`Resultado ${u.index}${u.name?` - ${u.name}`:""}`,payload:{index:u.index,name:u.name,passed:u.passed,input:u.text,output:{lastMessage:u.lastMessage,messages:u.messages||[]},checks:u.checks||[],context:{slots:u.slots||{},currentStepId:u.currentStepId||"",ended:u.ended===!0,conversationId:u.conversationId||""},trace:u.trace||[]}})},Yp=u=>{const y=So(JSON.parse(JSON.stringify(u.config)));x(""),h(""),Bn(null),oo(void 0),s(y.title||u.name),n(y),qe(""),ot(""),Fe(""),rt([]),St(!1),Jo(!1),mn(!1),Po("draft"),va(""),_o(""),sn(""),rn(""),ar(""),Ln({}),cs([]),Ai(null),ya(null),jn([{role:"system",text:`Template "${u.name}" aplicado como rascunho. Salve para criar um fluxo no agente atual.`}])},Wd=async()=>{en(!1),Rn(""),ao(""),Vc(""),kr(""),os("");const u=await xn();Sa(u),mo(!0)},wc=(u,y)=>{!u||!y||u===y||Sa(k=>{const B=k.findIndex(ue=>ue._id===u),te=k.findIndex(ue=>ue._id===y);return Cf(k,B,te)})},Gd=async()=>{Za(!0),Rn("");try{const u=await Oe.reorderFlows(Ya.map(y=>y._id),Ee);I(u),Sa(u)}catch(u){Rn(u instanceof Error?u.message:"Nao foi possivel reordenar os fluxos.")}finally{Za(!1)}},Yu=async u=>{await js(u),mo(!1),ao(""),kr(""),os("")},Zp=async()=>{const u=ka.trim();if(!(!u||ns)){Za(!0),Rn("");try{const y=So({...Nf(),title:u}),k=await Oe.createFlow({name:u,agentId:Ee,config:y});Vc("");const B=await xn(Ee);Sa(B),await vn(),await js(k),mo(!1)}catch(y){Rn(y instanceof Error?y.message:"Nao foi possivel criar o fluxo.")}finally{Za(!1)}}},em=u=>{kr(u._id),os(u.name),Rn("")},Jd=async u=>{const y=Uu.trim();if(!y){Rn("Informe um nome para o fluxo.");return}if(y===u.name||ns){kr(""),os("");return}Za(!0),Rn("");try{const k=await Oe.updateFlow(u._id,{name:y});Sa(B=>B.map(te=>te._id===u._id?{...te,...k}:te)),I(B=>B.map(te=>te._id===u._id?{...te,...k}:te)),f===u._id&&s(k.name),kr(""),os("")}catch(k){Rn(k instanceof Error?k.message:"Nao foi possivel atualizar o fluxo.")}finally{Za(!1)}},tm=async u=>{Za(!0),Rn("");try{await Oe.deleteFlow(u._id);const y=await xn(Ee);Sa(y),await vn(),await bo(Ee),f===u._id&&(y[0]?await js(y[0]):await Nc(Ee,y)&&Sa(await xn(Ee)))}catch(y){Rn(y instanceof Error?y.message:"Nao foi possivel excluir o fluxo.")}finally{Za(!1)}},nm=u=>{Gt({title:"Excluir fluxo?",message:`Deseja realmente excluir o fluxo "${u.name||"sem nome"}"? Esta acao nao pode ser desfeita.`,confirmLabel:"Excluir fluxo",onConfirm:()=>void tm(u)})},js=async(u,y={})=>{const k=typeof u=="string"?u:u._id;if(!k)return;const B=await Oe.getFlow(k),te=B.agentId||l,ue=y.preferVersion===!0||!!y.preferredVersion,pe=ue?await Oe.getFlowVersions(k).catch(()=>null):null,ze=Ch((pe==null?void 0:pe.versions)||[]),Qe=Number(y.preferredVersion||0),yn=Qe?ze.find(La=>Number(La.version)===Qe&&La.config):void 0,ra=ue?ze.find(La=>Number(La.version)===Number(B.activeVersion)&&La.config):void 0,Bt=ue?ze.find(La=>La.config):void 0,Co=yn||ra||Bt;x(B._id),s(B.name),p(te),h(te),n(So((Co==null?void 0:Co.config)||B.config||dv())),Bn(pe||B,(pe==null?void 0:pe.versions)||[]),oo(Co?Number(Co.version):void 0),qe(""),ot(""),rt([]),An(null),Fe(""),Po(Co?"flowVersion":"draft"),va(""),_o(Co?String(Co.version):""),ha(Co?String(Co.version):""),sn(""),rn(""),ar(""),Ln({}),ya(null),jn([{role:"system",text:Co?`Fluxo carregado na v${Co.version}${y.preferredVersionLabel?` (${y.preferredVersionLabel})`:""}. Clique em Reiniciar para testar esta versão.`:"Fluxo carregado. Clique em Reiniciar para testar este rascunho."}]),St(!1)},Kd=async()=>{_r(!0);try{const u=l.trim()||"default-agent",y=no,k={name:r||t.title,agentId:u,config:So(t)},B=f?await Oe.updateFlow(f,k):await Oe.createFlow(k),te=B._id===f?j:[],ue=Ym(te,B.activeVersion,y);return x(B._id),s(B.name),p(B.agentId||u),h(B.agentId||u),n(So(B.config)),Bn(B,te),oo(ue?Number(ue.version):void 0),_o(ue?String(ue.version):""),ha(ue?String(ue.version):""),sn(""),rn(""),Ln({}),await xn(),await vn(),B}finally{_r(!1)}},na=async(u,y)=>{const k=Ym(u.versions||[],u.activeVersion,u.latestVersion);x(u._id),s(u.name),p(u.agentId||Ee),h(u.agentId||Ee),n(So((k==null?void 0:k.config)||u.config)),Bn(u),oo(k?Number(k.version):void 0),Po(k?"flowVersion":"draft"),_o(k?String(k.version):""),ha(k?String(k.version):""),y&&(zt(y),window.setTimeout(()=>zt(""),2200)),await xn(u.agentId||Ee),await bo(u.agentId||Ee)},No=async()=>{Cn(!0),an(""),zt("");try{const u=await Kd(),y=(u==null?void 0:u._id)||f;if(!y)throw new Error("Salve o fluxo antes de criar uma versao.");const k=await Oe.deployFlowVersion(y,{notes:br,activate:!1});wr(""),await na(k,`Versão v${k.latestVersion} criada para homologação.`)}catch(u){an(u instanceof Error?u.message:"Não foi possível criar a versão.")}finally{Cn(!1)}},om=()=>{if(fn){Gt({title:"Crie um agente primeiro",message:"Selecione ou crie um agente antes de criar uma versão do fluxo.",confirmLabel:"Abrir agentes",variant:"primary",onConfirm:()=>{ae(!0),vn()}});return}if(It){Gt({title:"Alterar agente e criar versão?",message:`Este fluxo está salvo no agente "${m}". Para criar uma versão em "${l.trim()}", o fluxo será salvo nesse agente antes.`,confirmLabel:"Salvar e criar versão",variant:"primary",onConfirm:()=>void No()});return}No()},am=async u=>{if(!(!f||!u||$t)){Cn(!0),an(""),zt("");try{const y=await Oe.activateFlowVersion(f,u);await na(y,`Versão v${u} ativada para clientes.`)}catch(y){an(y instanceof Error?y.message:"Não foi possível ativar a versão.")}finally{Cn(!1)}}},rm=u=>{u&&Gt({title:`Ativar v${u} para clientes?`,message:Ht?`Esta versão passa a ser usada em produção. O pacote ativo r${Ht} será atualizado para apontar para a v${u}.`:"Esta versão passa a ser usada em produção.",confirmLabel:`Ativar v${u}`,variant:"primary",onConfirm:()=>void am(u)})},sm=u=>{if(!(u!=null&&u.config)){an(`A versão v${(u==null?void 0:u.version)||""} não possui snapshot para carregar.`);return}n(So(u.config)),oo(Number(u.version)),qe(""),ot(""),rt([]),An(null),Fe(""),sn(""),rn(""),ar(""),Ln({}),ya(null),zt(`v${u.version} carregada no editor. O botão principal agora publica as alterações nesta versão.`),window.setTimeout(()=>zt(""),3200)},Zu=async(u,y=bn)=>{var ze;const k=u.lastIndexOf(":"),B=u.slice(0,k),te=Number(u.slice(k+1)),ue=Number(((ze=y==null?void 0:y.versions)==null?void 0:ze[B])||0);if(!(y!=null&&y.release)||!B||!te)return;const pe=te===ue;to(u),Sr(!0);try{await js(B,{preferVersion:!0,preferredVersion:te,preferredVersionLabel:pe?`pacote r${y.release}`:"histórico do fluxo"}),es(String(y.release)),to(u),pe?(va(String(y.release)),Po("agentVersion")):(_o(String(te)),Po("flowVersion"))}finally{Sr(!1)}},pu=u=>{es(u),va(u),u&&Po("agentVersion");const y=Qt.find(te=>String(te.release)===u),k=lh(y,q)[0],B=k?`${k.id}:${k.version}`:"";to(B),B&&Zu(B,y)},im=u=>{ha(u),_o(u),u&&Po("flowVersion");const y=Ot.find(k=>String(k.version)===u);y&&sm(y)},mu=async(u,y)=>{if(!(!f||!(u!=null&&u.version)||$t)){Cn(!0),an(""),zt("");try{const k=await Oe.overwriteFlowVersion(f,u.version,y?{sourceVersion:y,name:u.currentName}:{config:So(t),name:u.currentName});Bn(k),zt(y?`v${u.version} publicada com a v${y}.`:`v${u.version} publicada com o rascunho atual.`),window.setTimeout(()=>zt(""),3e3),await xn(k.agentId||Ee),await bo(k.agentId||Ee)}catch(k){an(k instanceof Error?k.message:"Não foi possível publicar a versão.")}finally{Cn(!1)}}},lm=async()=>{if(jo&&f){const u={kind:"flow",version:jo.version,isActive:Number(jo.version)===Number(yo),currentName:jo.name||""};if(yl||(oo(Number(jo.version)),_o(String(jo.version)),ha(String(jo.version))),u.isActive){Gt({title:`Publicar em produção v${u.version}?`,message:"Esta versão está ativa para clientes. Publicar agora altera imediatamente o fluxo usado em produção.",confirmLabel:`Publicar v${u.version}`,variant:"danger",confirmationText:`v${u.version}`,confirmationPrompt:`Digite v${u.version} para confirmar a publicação em produção.`,onConfirm:()=>void mu(u)});return}await mu(u);return}await No()},cm=async(u,y)=>{if(!(!(u!=null&&u.version)||$t||fn)){Cn(!0),an(""),zt("");try{y||await Kd();const k=await Oe.overwriteAgentRelease(Ee,u.version,y?{sourceRelease:y,name:u.currentName}:{name:u.currentName});cr(k),zt(y?`r${u.version} sobrescrita com a r${y}.`:`r${u.version} atualizada com as últimas versões criadas dos fluxos.`),window.setTimeout(()=>zt(""),3e3),await vn()}catch(k){an(k instanceof Error?k.message:"Não foi possível sobrescrever a versão do agente.")}finally{Cn(!1)}}},ed=u=>{ii(u),Bc("draft"),Yn(""),li("")},hu=()=>{ii(null),Bc("draft"),Yn(""),li("")},um=async()=>{if(!Mt||$t)return;const u=tt==="version"?fs:void 0;if(tt==="version"&&!u){li("Selecione a versão de origem.");return}hu(),Mt.kind==="agent"?await cm(Mt,u):await mu(Mt,u)},Qd=async u=>{if(!(!f||!(u!=null&&u.version)||$t)){Cn(!0),an(""),zt("");try{const y=await Oe.deleteFlowVersion(f,u.version);Bn(y);const k=Ym(y.versions||[],y.activeVersion,no);k?(oo(Number(k.version)),_o(String(k.version)),ha(String(k.version)),n(So(k.config||y.config))):(oo(void 0),_o(""),ha("")),zt(`v${u.version} excluída.`),window.setTimeout(()=>zt(""),2600)}catch(y){an(y instanceof Error?y.message:"Não foi possível excluir a versão do fluxo.")}finally{Cn(!1)}}},td=u=>{const y=`v${u.version}`;Gt({title:`Excluir ${y}?`,message:"Esta ação remove definitivamente esta versão do fluxo. Para excluir uma versão ativa, ative outra versão antes.",confirmLabel:`Excluir ${y}`,variant:"danger",confirmationText:y,confirmationPrompt:`Digite ${y} para confirmar.`,onConfirm:()=>void Qd(u)})},dm=u=>{$c(u),ol(u.currentName||""),pa("")},fu=()=>{$c(null),ol(""),pa("")},nd=async()=>{if(!da||Xo)return;const u=Hl.trim();if(!u){pa("Informe um nome para a versão.");return}Nr(!0),pa("");try{if(da.kind==="agent"){const y=await Oe.renameAgentRelease(Ee,da.version,{name:u});cr(y),zt(`Versão do agente r${da.version} renomeada para "${u}".`)}else{if(!f)throw new Error("Salve o fluxo antes de renomear a versão.");const y=await Oe.renameFlowVersion(f,da.version,{name:u});Bn(y),zt(`Versão do fluxo v${da.version} renomeada para "${u}".`)}window.setTimeout(()=>zt(""),2600),fu()}catch(y){pa(y instanceof Error?y.message:"Não foi possível renomear a versão.")}finally{Nr(!1)}},pm=async()=>{var u,y,k;if(fn){Gt({title:"Crie um agente primeiro",message:"Selecione ou crie um agente antes de criar uma release do agente.",confirmLabel:"Abrir agentes",variant:"primary",onConfirm:()=>{ae(!0),vn()}});return}Cn(!0),an(""),zt("");try{const B=await Kd(),te=(B==null?void 0:B._id)||f,ue=await Oe.deployAgentRelease(Ee,{notes:al,activate:!1});cr(ue),(u=ue.release)!=null&&u.release&&(es(String(ue.release.release)),va(String(ue.release.release)),Po("agentVersion"));const pe=te&&((y=ue.release)!=null&&y.versions)?ue.release.versions[te]:void 0;if(pe&&(ha(String(pe)),_o(String(pe))),te){const ze=await Oe.getFlow(te),Qe=await Oe.getFlowVersions(te).catch(()=>null),yn=pe?((Qe==null?void 0:Qe.versions)||[]).find(ra=>Number(ra.version)===Number(pe)):void 0;x(ze._id),s(ze.name),p(ze.agentId||Ee),h(ze.agentId||Ee),n(So((yn==null?void 0:yn.config)||ze.config)),Bn(Qe||ze,(Qe==null?void 0:Qe.versions)||[]),oo(yn?Number(yn.version):void 0)}Zn(""),zt(`Pacote r${(k=ue.release)==null?void 0:k.release} criado para homologação usando as últimas versões dos fluxos.`),await vn(),await xn(Ee)}catch(B){an(B instanceof Error?B.message:"Não foi possível criar a versão do agente.")}finally{Cn(!1)}},od=async u=>{if(!(!u||$t||fn)){Cn(!0),an(""),zt("");try{const y=await Oe.activateAgentRelease(Ee,u);cr(y),zt(`Versão do agente r${u} ativada para clientes.`),await vn()}catch(y){an(y instanceof Error?y.message:"Não foi possível ativar a versão do agente.")}finally{Cn(!1)}}},qs=u=>{u&&Gt({title:`Ativar pacote r${u} para clientes?`,message:"Este pacote passa a ser o padrão de produção do agente. Chamadas sem override usarão as versões dos fluxos deste pacote.",confirmLabel:`Ativar r${u}`,variant:"primary",onConfirm:()=>void od(u)})},Oh=async u=>{if(!(!u||$t||fn)){Cn(!0),an(""),zt("");try{const y=await Oe.deleteAgentRelease(Ee,u);cr(y),zt(`Versão do agente r${u} excluída.`),window.setTimeout(()=>zt(""),2600),await vn()}catch(y){an(y instanceof Error?y.message:"Não foi possível excluir a versão do agente.")}finally{Cn(!1)}}},mm=u=>{const y=`r${u}`;Gt({title:`Excluir ${y}?`,message:"Esta ação remove definitivamente esta versão do agente. Para excluir uma versão ativa, ative outra versão antes.",confirmLabel:`Excluir ${y}`,variant:"danger",confirmationText:y,confirmationPrompt:`Digite ${y} para confirmar.`,onConfirm:()=>void Oh(u)})},Nc=async(u=l,y=q)=>{const k=u.trim();if(k&&k!=="default-agent"){const te=BA(y),ue=So({...Nf(),title:te}),pe=await Oe.createFlow({name:te,agentId:k,config:ue}),ze=await Oe.deployFlowVersion(pe._id,{notes:"Versão inicial criada automaticamente.",activate:!1});return await xn(k),await vn(),await js(ze,{preferVersion:!0,preferredVersion:ze.latestVersion}),jn([{role:"system",text:`Fluxo criado e atrelado à v${ze.latestVersion}. Clique em Reiniciar para testar esta versão.`}]),ze}const B=Nf();return x(""),h(""),Bn(null),oo(void 0),p(k||"default-agent"),s(B.title||"Fluxo IA Gen"),n(B),qe(""),ot(""),Fe(""),St(!1),sn(""),rn(""),ar(""),Ln({}),ya(null),jn([{role:"system",text:"Selecione um agente antes de criar um fluxo."}]),null},gu=async u=>{var te;const y=u.trim()||"default-agent";p(y);const k=await xn(y),B=await bo(y);if(ae(!1),ee(""),k[0]){const ue=(te=B==null?void 0:B.releases)==null?void 0:te.find(ze=>Number(ze.release)===Number(B.activeRelease)),pe=ue!=null&&ue.versions?Number(ue.versions[k[0]._id]||0):0;await js(k[0],{preferVersion:!0,preferredVersion:pe,preferredVersionLabel:pe&&(B!=null&&B.activeRelease)?`pacote r${B.activeRelease}`:void 0})}else await Nc(y,k)},hm=async u=>{const y=qo(u);Ye(""),Ze(""),y!==Ee?await gu(y):zo(yp(u,t)),ae(!1),Be(!0)},xu=(u,y)=>{!u||!y||u===y||Y(k=>{const B=new Map;k.forEach(ze=>B.set(qo(ze),ze)),[u,y,Ee].forEach(ze=>{!ze||B.has(ze)||B.set(ze,{agentId:ze,name:ze,flowCount:ze===Ee?q.length:0})});const te=Array.from(B.values()),ue=te.findIndex(ze=>qo(ze)===u),pe=te.findIndex(ze=>qo(ze)===y);return Cf(te,ue,pe)})},$o=async()=>{xe(!0),le("");try{const u=await Oe.reorderAgents(ds.map(y=>qo(y)));Y(u)}catch(u){le(u instanceof Error?u.message:"Nao foi possivel salvar a ordem dos agentes.")}finally{xe(!1)}},fm=async()=>{const u=H.trim();if(!(!u||oe)){Q(!0),le("");try{const y=await Oe.createAgent({name:u});se(""),await vn(),await gu((y==null?void 0:y.agentId)||(y==null?void 0:y.name)||u)}catch(y){le(y instanceof Error?y.message:"Nao foi possivel criar o agente.")}finally{Q(!1)}}},Rh=u=>{V(qo(u)),P(Qs(u)),le("")},vu=async()=>{const u=G.trim(),y=K.trim(),k=Qs(F.find(B=>qo(B)===u));if(!u||!y||k===y||oe){V(""),P("");return}Q(!0),le("");try{await Oe.renameAgent(u,{name:y}),V(""),P(""),await vn(),await xn(Ee)}catch(B){le(B instanceof Error?B.message:"Nao foi possivel renomear o agente.")}finally{Q(!1)}},Bo=u=>{$(u),Z(""),le("")},gm=async()=>{var k;if(!Ce)return;const u=qo(Ce),y=Qs(Ce);if(!(z.trim()!==y||oe)){Q(!0),le("");try{const B=await Oe.deleteAgent(u,{confirmationName:z.trim()});if(Y(B.agents||[]),$(null),Z(""),Ee===u){const te=qo((B.agents||[]).find(ze=>qo(ze)!==u))||"default-agent";p(te);const ue=await xn(te),pe=await bo(te);if(ue[0]){const ze=(k=pe==null?void 0:pe.releases)==null?void 0:k.find(yn=>Number(yn.release)===Number(pe.activeRelease)),Qe=ze!=null&&ze.versions?Number(ze.versions[ue[0]._id]||0):0;await js(ue[0],{preferVersion:!0,preferredVersion:Qe,preferredVersionLabel:Qe&&(pe!=null&&pe.activeRelease)?`pacote r${pe.activeRelease}`:void 0})}else await Nc(te,ue)}else await vn(),await xn(Ee)}catch(B){le(B instanceof Error?B.message:"Nao foi possivel excluir o agente.")}finally{Q(!1)}}},De=async()=>{_r(!0);try{const u=`${r||t.title||"Fluxo"} copia`,y=So({...JSON.parse(JSON.stringify(t)),title:`${t.title||"Fluxo"} copia`,isMainFlow:!1}),k=await Oe.createFlow({name:u,agentId:l,config:y}),B=await Oe.deployFlowVersion(k._id,{notes:"Versão inicial criada automaticamente a partir da cópia.",activate:!1});await js(B,{preferVersion:!0,preferredVersion:B.latestVersion}),sn(""),rn(""),Ln({}),await xn(),await vn()}finally{_r(!1)}},Cc=async()=>{if(!f)return;const u=f,y=Ee;_r(!0);try{await Oe.deleteFlow(u);const k=await xn(y);await vn(),await bo(y),k[0]?await js(k[0]):await Nc(y,k)}finally{_r(!1)}},Xd=()=>{f&&Gt({title:"Excluir fluxo?",message:`Deseja realmente excluir o fluxo "${r||"sem nome"}"? Esta ação não pode ser desfeita.`,confirmLabel:"Excluir fluxo",onConfirm:()=>void Cc()})},Yd=async(u,y)=>{const k=Oe;if(typeof k.streamTestFlow=="function")return k.streamTestFlow(u,y);const B=await Oe.testFlow(u);for(const te of B.messages||[]){const ue=Math.max(0,Number(te.delayBeforeMs||0));ue&&await new Promise(pe=>window.setTimeout(pe,ue)),y(te)}return{...B,messages:[]}},Zd=u=>vt==="active"&&f?u:vt==="agentVersion"&&f&&cc?{...u,agentRelease:cc}:vt==="flowVersion"&&f&&hs?{...u,ignoreAgentRelease:!0,flowVersionMap:{[f]:hs}}:{...u,config:t},yu=async()=>{var y,k;if(Oa){cs([]),Ai(null),jn([{role:"system",text:"Selecione uma versão para iniciar o teste."}]);return}ki(!0);const u=`canvas-flow-test-${Date.now()}`;sn(""),rn(""),Ln({}),cs([]),Ai(null),jn([]);try{let B=0;const te=await Yd(Zd({flowId:f||void 0,agentId:Ee,channel:Zo,conversationId:u,text:"",slots:{},traceMode:"debug",traceLimit:200,traceCollectLimit:1200}),ue=>{B+=1,jn(pe=>[...pe,ue])});ar(te.conversationId||u),rn(te.currentStepId||""),sn(te.activeFlowId||f||""),Ln(te.slots||{}),cs(te.trace||[]),Ai(te.tracePage||null),ya(te.runtime||null),!B&&!((y=te.messages)!=null&&y.length)?jn([{role:"system",text:"Fluxo iniciado."}]):(k=te.messages)!=null&&k.length&&jn(ue=>[...ue,...te.messages||[]]),Rs({})}catch(B){jn([{role:"system",text:(B==null?void 0:B.message)||"Falha ao iniciar teste."}]),Rs({})}finally{ki(!1)}},ju=async(u,y)=>{var B;const k=u.trim();if(!(!k||Tt||Oa)){jn(te=>[...te,{role:"user",text:(y||k).trim()||k}]),ki(!0);try{const te=await Yd(Zd({flowId:f||void 0,activeFlowId:Fs||f||void 0,entryFlowId:f||void 0,agentId:Ee,channel:Zo,conversationId:zr||`canvas-flow-test-${Date.now()}`,currentStepId:Ei||void 0,text:k,slots:hl,traceMode:"debug",traceLimit:200,traceCollectLimit:1200}),ue=>{jn(pe=>[...pe,ue])});ar(te.conversationId||zr),rn(te.currentStepId||""),sn(te.activeFlowId||Fs||f||""),Ln(te.slots||{}),cs(te.trace||[]),Ai(te.tracePage||null),ya(te.runtime||null),(B=te.messages)!=null&&B.length&&jn(ue=>[...ue,...te.messages||[]])}catch(te){jn(ue=>[...ue,{role:"system",text:(te==null?void 0:te.message)||"Falha no teste."}])}finally{ki(!1)}}},ad=async()=>{if(!or.trim()||Tt)return;const u=or.trim();Os(""),await ju(u)},xm=async(u,y)=>{await ju(u,y)},vm=async()=>{await navigator.clipboard.writeText(JSON.stringify(t,null,2))},ep=async u=>{await navigator.clipboard.writeText(u),Ao(u),window.setTimeout(()=>Ao(y=>y===u?"":y),1400)},tp=async()=>{await navigator.clipboard.writeText(zs),Kn("JSON do fluxo copiado."),window.setTimeout(()=>Kn(""),1800)},np=()=>{const u=new Blob([zs],{type:"application/json;charset=utf-8"}),y=URL.createObjectURL(u),k=document.createElement("a");k.href=y,k.download=`${yv(r||t.title||"fluxo")}.canvas-flow.json`,document.body.appendChild(k),k.click(),k.remove(),URL.revokeObjectURL(y),Kn("Arquivo de exportação gerado."),window.setTimeout(()=>Kn(""),1800)},lo=u=>{ca(""),Kn("");try{const y=JSON.parse(u),k=LA(y);x(""),h(""),Bn(null),oo(void 0),k.agentId&&p(k.agentId),s(k.name),n(k.config),qe(""),ot(""),Fe(""),St(!1),sn(""),rn(""),ar(""),Ln({}),ya(null),jn([{role:"system",text:"Fluxo importado como rascunho. Clique em Salvar para criar o registro."}]),Ga(""),Kn("Fluxo importado como rascunho. Revise e clique em Salvar."),jr(!1)}catch(y){ca(y instanceof Error?y.message:"Não foi possível importar o fluxo.")}},Hr=async u=>{var k;const y=(k=u.target.files)==null?void 0:k[0];if(u.target.value="",!!y)try{const B=await y.text();Ga(B),lo(B)}catch(B){ca(B instanceof Error?B.message:"Não foi possível ler o arquivo.")}},zi=b.useCallback(async u=>{var B,te,ue;if(!f)return;const k=(te=(B=(await Oe.getFlow(f)).config)==null?void 0:B.steps)==null?void 0:te.find(pe=>pe.id===u);((ue=k==null?void 0:k.component)==null?void 0:ue.type)==="cron"&&n(pe=>({...pe,steps:pe.steps.map(ze=>{var Qe,yn,ra,Bt;return ze.id!==u||((Qe=ze.component)==null?void 0:Qe.type)!=="cron"?ze:{...ze,component:{...ze.component,cronLastRunAt:(yn=k.component)==null?void 0:yn.cronLastRunAt,cronNextRunAt:(ra=k.component)==null?void 0:ra.cronNextRunAt,cronExecutionLog:((Bt=k.component)==null?void 0:Bt.cronExecutionLog)||[]}}})}))},[f]),rd=Oo?t.steps.find(u=>u.id===Oo.source):void 0,sd=Oo?t.steps.find(u=>u.id===Oo.target):void 0,wa=(Wt==null?void 0:Wt.historyPagination)||{},Li=Number(wa.page||Hu||1),ur=Number(wa.limit||rs||50),Di=Number(wa.total||0),op=Math.max(1,Number(wa.totalPages||(Di?Math.ceil(Di/ur):1))),ym=Di>0?(Li-1)*ur+1:0,jm=Di>0?Math.min(Di,Li*ur):0,bm=PA(Wt),$i=(Wt==null?void 0:Wt.insights)||{},Wr=(Wt==null?void 0:Wt.traceInsights)||{},ap=Nd($i.byFlow,["flowName","flowId"]),dr=Nd($i.byChannel,["channel"]),At=Nd(Wr.byStep,["title","key"]),co=Nd(Wr.calls,["key"]),cn=(dt==null?void 0:dt.summary)||{},qn=(dt==null?void 0:dt.queue)||{},za=(dt==null?void 0:dt.traceInsights)||{},Hs=(dt==null?void 0:dt.capabilities)||{},kn=Array.isArray((bs=dt==null?void 0:dt.readiness)==null?void 0:bs.warnings)?(Nu=dt==null?void 0:dt.readiness)==null?void 0:Nu.warnings:[],bu=Array.isArray(dt==null?void 0:dt.hotNodes)?dt==null?void 0:dt.hotNodes:[],Bi=Array.isArray(dt==null?void 0:dt.errors)?dt==null?void 0:dt.errors:[],wu=Array.isArray(dt==null?void 0:dt.flows)?dt==null?void 0:dt.flows:[],Vi=(dt==null?void 0:dt.releases)||{},Sc=Array.isArray(Vi.items)?Vi.items:Array.isArray(Vi.releases)?Vi.releases:[];return e.jsx(jg,{children:e.jsxs("div",{className:"app-shell",children:[e.jsxs("header",{className:"app-header",children:[e.jsxs("div",{className:"header-title-block",children:[e.jsx("h1",{children:Kt?"Nenhum fluxo aberto":r||t.title}),e.jsx("span",{children:us})]}),e.jsxs("div",{className:"header-actions",children:[e.jsxs("label",{className:`header-field agent-field ${It?"agent-changed":""}`,children:[e.jsx("span",{children:"Agente"}),e.jsxs("button",{type:"button",className:"agent-select-button",onClick:()=>{ae(!0),vn()},title:"Abrir agentes",children:[e.jsx(Ho,{size:15}),e.jsx("strong",{children:us}),e.jsx(Sp,{size:14})]})]}),e.jsxs("label",{className:"header-field agent-os-field",children:[e.jsx("span",{children:"Agent OS"}),e.jsxs("button",{type:"button",disabled:Kt,onClick:()=>Ra(),title:"Configurar modelo, skills, subagents, rules, MCP e guardrails do agente",children:[e.jsx(Zs,{size:16}),"Perfil"]})]}),e.jsxs("label",{className:"header-field channel-field",children:[e.jsx("span",{children:"Canal"}),e.jsxs("select",{className:"channel-select",value:Zo,"aria-label":"Canal",disabled:Kt,onChange:u=>wl({channel:u.target.value}),children:[e.jsx("option",{value:"webWidget",children:"Web widget"}),e.jsx("option",{value:"whatsapp",children:"WhatsApp"})]})]}),e.jsxs("label",{className:"header-field header-action-field",children:[e.jsx("span",{className:"header-spacer-label","aria-hidden":"true",children:" "}),e.jsxs("div",{className:"header-actions-menu",onBlur:u=>{u.currentTarget.contains(u.relatedTarget)||en(!1)},children:[e.jsxs("button",{type:"button",onClick:()=>en(u=>!u),children:[e.jsx(CS,{size:16}),"Ações",e.jsx(Sp,{size:14})]}),_e&&e.jsxs("div",{className:"header-actions-dropdown",children:[e.jsxs("button",{type:"button",onClick:()=>{en(!1),xn()},disabled:Kt||Ea,children:[Ea?e.jsx(Ut,{size:16,className:"spin"}):e.jsx(Sp,{size:16}),"Atualizar fluxos"]}),e.jsxs("button",{type:"button",onClick:()=>void Wd(),disabled:Kt||Ea,children:[e.jsx(jS,{size:16}),"Fluxos do agente"]}),e.jsxs("button",{type:"button",onClick:()=>{en(!1),De()},disabled:Pr||Kt,children:[e.jsx(nn,{size:16}),"Duplicar fluxo"]}),e.jsxs("button",{type:"button",className:"danger-button",onClick:()=>{en(!1),Xd()},disabled:!f||Pr,children:[e.jsx(Nt,{size:16}),"Excluir fluxo"]}),e.jsx("div",{className:"header-actions-separator"}),e.jsxs("button",{type:"button",disabled:Kt,onClick:()=>{en(!1),qe(""),ot(""),Fe(""),St(!0)},children:[e.jsx(yh,{size:16}),"Config Padrão"]}),e.jsxs("button",{type:"button",disabled:Kt,onClick:()=>{en(!1),Ra()},children:[e.jsx(Zs,{size:16}),"Agent OS"]}),e.jsxs("button",{type:"button",onClick:()=>{en(!1),Ja(!0)},children:[e.jsx(Ss,{size:16}),"Provedores"]}),e.jsxs("button",{type:"button",onClick:()=>void iu(),disabled:Kt,children:[e.jsx(xh,{size:16}),"Dashboard"]}),e.jsxs("button",{type:"button",onClick:()=>void jc(),disabled:Kt,children:[e.jsx(Rx,{size:16}),"AgentOps"]}),e.jsxs("button",{type:"button",onClick:bc,disabled:Kt,children:[e.jsx(yd,{size:16}),"Simular/Evals"]}),e.jsxs("button",{type:"button",onClick:()=>{en(!1),ni(!0)},disabled:Kt,children:[e.jsx(Od,{size:16}),"JSON gerado"]}),e.jsxs("button",{type:"button",onClick:()=>{en(!1),jr(!0),ca("")},disabled:Kt,children:[e.jsx(vh,{size:16}),"Importar/Exportar Fluxo"]}),e.jsxs("button",{type:"button",onClick:()=>{en(!1),ai(!0)},disabled:Kt,children:[e.jsx(NS,{size:16}),"API"]}),e.jsxs("button",{type:"button",onClick:()=>{en(!1),Zr(!0)},disabled:Kt,children:[e.jsx(uj,{size:16}),"API Keys"]})]})]})]}),e.jsxs("div",{ref:Eo,className:"header-field header-version-field",children:[e.jsx("span",{children:"Versões"}),e.jsxs("button",{type:"button",title:"Selecionar release ou gerenciar versões",disabled:Kt,onClick:()=>{en(!1),Ka(u=>!u),an("")},children:[e.jsx(Qi,{size:16}),"Versões"]}),ho&&e.jsxs("div",{className:"header-version-popover",children:[e.jsxs("label",{className:"flow-version-select-field",children:[e.jsx("span",{children:"Pacote do agente"}),e.jsxs("select",{value:eo,onChange:u=>pu(u.target.value),disabled:Wl||On||!Qt.length,children:[e.jsx("option",{value:"",children:Qt.length?"Selecione um pacote":"Nenhum pacote criado"}),Qt.map(u=>e.jsxs("option",{value:String(u.release),children:["r",u.release,u.name?` - ${u.name}`:"",Number(u.release)===Number(Ht)?" (produção)":""]},u.release))]})]}),e.jsxs("label",{className:"flow-version-select-field",children:[e.jsx("span",{children:"Versões dos fluxos da release"}),e.jsxs("select",{value:Ca,onChange:u=>void Zu(u.target.value),disabled:On||!ta.length,children:[!ta.length&&e.jsx("option",{value:"",children:eo?"Nenhum snapshot neste pacote":"Selecione um pacote"}),ta.map(u=>e.jsx("option",{value:u.key,children:bv(u,jv(u,Rt))},u.key))]})]}),e.jsxs("button",{type:"button",className:"primary-button header-version-manage-button",onClick:()=>{Ka(!1),Qa(!0),si("agent"),Ul(!0),an("")},children:[e.jsx(yh,{size:16}),"Gerenciar versões"]})]})]}),e.jsxs("label",{className:"header-field header-save-field",children:[e.jsx("span",{className:"header-spacer-label","aria-hidden":"true",children:" "}),e.jsxs("button",{className:"primary-button",title:Ti?`Publicar alterações na ${ms}`:`Criar v${Ls}`,onClick:()=>void lm(),disabled:Kt||Pr||$t||On,children:[Pr||$t||On?e.jsx(Ut,{size:16,className:"spin"}):e.jsx(Ic,{size:16}),On?"Carregando versão...":Ti?`Publicar ${ms}`:`Criar v${Ls}`]})]})]})]}),e.jsx("main",{className:`workspace ${Kt?"workspace-missing-agent":""}`,children:Kt?e.jsx("section",{className:"missing-agent-panel",children:e.jsxs("div",{children:[e.jsx("span",{className:"missing-agent-icon",children:e.jsx(Ho,{size:24})}),e.jsx("strong",{children:"Selecione um agente para começar"}),e.jsx("p",{children:"Nenhum fluxo fica visível ou editável enquanto não houver um agente selecionado. Isso evita alterar um rascunho solto e perder trabalho depois."}),e.jsxs("button",{type:"button",className:"primary-button",onClick:()=>{ae(!0),vn()},children:[e.jsx(Ho,{size:16}),"Abrir agentes"]})]})}):e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"canvas-panel",children:[e.jsxs("div",{className:"toolbar",children:[e.jsxs("button",{className:"templates-button",onClick:()=>{Jo(u=>!u),mn(!1)},children:[e.jsx(Uf,{size:16}),"Templates"]}),e.jsxs("button",{className:"assistant-button",onClick:Yt,children:[e.jsx(Dl,{size:16}),"Assistente IA"]}),e.jsxs("button",{onClick:()=>Do("message"),children:[e.jsx(MS,{size:16}),"Mensagem"]}),e.jsxs("button",{onClick:()=>Do("richMessage"),children:[e.jsx(Uf,{size:16}),"Mensagem rica"]}),e.jsxs("button",{onClick:()=>Do("input"),children:[e.jsx(un,{size:16}),"Input"]}),e.jsxs("button",{onClick:()=>Do("api"),children:[e.jsx(hj,{size:16}),"API"]}),e.jsxs("button",{onClick:()=>Do("condition"),children:[e.jsx(Qi,{size:16}),"Condição"]}),e.jsxs("button",{onClick:()=>Do("end"),children:[e.jsx(un,{size:16}),"Fim"]}),e.jsxs("button",{onClick:()=>Do("group"),children:[e.jsx(Vf,{size:16}),"Encapsulador"]}),e.jsxs("button",{className:"components-button",onClick:()=>{mn(u=>!u),Jo(!1)},children:[e.jsx(Ho,{size:16}),"Componentes"]})]}),e.jsxs("div",{className:"flow-canvas",children:[Wn&&e.jsxs("div",{className:"component-palette template-palette",onMouseDown:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"component-palette-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Templates multi-agente"}),e.jsx("span",{children:"Fluxos prontos com roteamento, governanca e observabilidade"})]}),e.jsx("button",{type:"button",onClick:()=>Jo(!1),"aria-label":"Fechar templates",children:e.jsx(Vt,{size:16})})]}),e.jsx("div",{className:"template-grid",children:oc.map(u=>e.jsxs("button",{type:"button",className:"template-card",onClick:()=>Yp(u),children:[e.jsx("span",{children:u.segment}),e.jsx("strong",{children:u.name}),e.jsx("em",{children:u.description})]},u.id))})]}),sa&&e.jsxs("div",{className:"component-palette",onMouseDown:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"component-palette-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Componentes"}),e.jsx("span",{children:"Escolha um bloco para adicionar ao fluxo"})]}),e.jsx("button",{type:"button",onClick:()=>mn(!1),"aria-label":"Fechar componentes",children:e.jsx(Vt,{size:16})})]}),e.jsxs("div",{className:"component-search",children:[e.jsx(Oc,{size:15}),e.jsx("input",{autoFocus:!0,value:la,placeholder:"Buscar RAG, MongoDB, Dashboard...",onChange:u=>gr(u.target.value)})]}),e.jsxs("div",{className:"component-grid",children:[sc.map(u=>{const y=u.Icon;return e.jsxs("button",{type:"button",className:"component-card",onClick:()=>Zt(u.type),style:{borderColor:`${u.color}40`},children:[e.jsx("span",{className:"component-card-icon",style:{color:u.color,background:`${u.color}12`},children:e.jsx(y,{size:18})}),e.jsxs("span",{className:"component-card-main",children:[e.jsx("strong",{children:u.title}),e.jsx("small",{children:u.category}),e.jsx("em",{children:u.description})]})]},u.type)}),!sc.length&&e.jsx("div",{className:"component-empty",children:"Nenhum componente encontrado."})]})]}),Te.length>0&&e.jsxs("div",{className:"canvas-selection-toolbar nodrag nopan",onMouseDown:u=>u.stopPropagation(),children:[e.jsxs("span",{children:[Te.length," selecionado",Te.length>1?"s":""]}),e.jsxs("button",{type:"button",onClick:_i,children:[e.jsx(nn,{size:14}),"Duplicar"]}),e.jsxs("button",{type:"button",onClick:kl,children:[e.jsx(Vf,{size:14}),"Encapsular"]}),e.jsxs("button",{type:"button",className:"danger-button",onClick:Vn,children:[e.jsx(Nt,{size:14}),"Excluir"]})]}),e.jsxs(Xy,{nodes:Ct,edges:Me,nodeTypes:iA,edgeTypes:lA,onNodesChange:nu,onSelectionChange:ou,onNodeDrag:Ri,onNodeDragStop:yc,onSelectionDrag:vc,onSelectionDragStop:tu,onConnect:Fa,onNodeClick:au,onEdgeClick:ru,onEdgesDelete:su,deleteKeyCode:null,multiSelectionKeyCode:["Control","Meta"],selectionKeyCode:null,panActivationKeyCode:null,onlyRenderVisibleElements:ac,onPaneClick:gs,fitView:!0,children:[fr&&e.jsx(zp,{position:"bottom-left",className:"flow-variable-library-panel",onMouseDown:u=>u.stopPropagation(),onClick:u=>u.stopPropagation(),children:e.jsxs("div",{className:"flow-variable-library-popover",children:[e.jsxs("div",{className:"flow-variable-library-header",children:[e.jsx("strong",{children:"Variaveis do fluxo"}),e.jsx("span",{children:"Copie templates para prompts, headers, body, condicoes e mensagens."})]}),e.jsxs("div",{className:"flow-variable-library-section",children:[e.jsx("span",{className:"flow-variable-library-section-title",children:"Nativas"}),Pa.native.map(u=>e.jsxs("button",{type:"button",className:"flow-variable-library-item",onClick:()=>void ep(u.value),children:[e.jsxs("span",{children:[e.jsx("strong",{children:u.label}),e.jsx("code",{children:u.value}),e.jsx("em",{children:u.description})]}),e.jsx("small",{children:ia===u.value?"Copiado":e.jsx(nn,{size:13})})]},u.value))]}),e.jsxs("div",{className:"flow-variable-library-section",children:[e.jsx("span",{className:"flow-variable-library-section-title",children:"Criadas por responseName"}),Pa.response.length===0&&e.jsx("div",{className:"flow-variable-library-empty",children:"Nenhum responseName configurado ainda."}),Pa.response.map(u=>e.jsxs("button",{type:"button",className:"flow-variable-library-item",onClick:()=>void ep(u.value),children:[e.jsxs("span",{children:[e.jsx("strong",{children:u.label}),e.jsx("code",{children:u.value}),e.jsx("em",{children:u.source?`${u.source}: ${u.description}`:u.description})]}),e.jsx("small",{children:ia===u.value?"Copiado":e.jsx(nn,{size:13})})]},u.value))]})]})}),e.jsx(nS,{children:e.jsxs(Ad,{className:`flow-variable-library-control ${fr?"active":""}`,title:"Lib. Contexto","aria-label":"Lib. Contexto",onClick:()=>Ko(u=>!u),children:[e.jsx(kS,{size:16}),e.jsx("span",{children:"Lib. Contexto"})]})}),!ac&&e.jsx(KC,{pannable:!0,zoomable:!0,nodeColor:NA}),ac&&e.jsx(zp,{position:"top-right",className:"canvas-performance-badge",children:"Modo leve: minimapa oculto"}),e.jsx(lS,{gap:18,color:"#dbeafe"})]})]})]}),e.jsxs("aside",{className:"test-panel",children:[e.jsxs("div",{className:"test-header",children:[e.jsxs("strong",{children:[e.jsx(Ss,{size:16}),"Try it do fluxo"]}),e.jsxs("div",{className:`test-header-actions ${vt==="agentVersion"||vt==="flowVersion"?"has-version-select":""}`,children:[e.jsxs("label",{children:[e.jsx("span",{children:"Modo do teste"}),e.jsxs("select",{value:vt,onChange:u=>{const y=u.target.value;Po(y),y!=="agentVersion"&&va(""),y!=="flowVersion"&&_o(""),jn([{role:"system",text:"Clique em Reiniciar para iniciar o teste neste modo."}]),ar(""),rn(""),sn(""),Ln({}),cs([]),Ai(null),ya(null)},children:[e.jsx("option",{value:"draft",children:"Rascunho do editor"}),e.jsx("option",{value:"active",children:"Ativo para clientes"}),e.jsx("option",{value:"agentVersion",children:"Versão do agente"}),e.jsx("option",{value:"flowVersion",children:"Versão do fluxo"})]})]}),vt==="agentVersion"&&e.jsxs("label",{children:[e.jsx("span",{children:"Versão agente"}),e.jsxs("select",{value:xa,onChange:u=>va(u.target.value),disabled:Wl||!Qt.length,children:[!Qt.length&&e.jsx("option",{value:"",children:"Nenhuma versão"}),Qt.map(u=>e.jsxs("option",{value:String(u.release),children:["r",u.release,Number(u.release)===Number(Ht)?" ativa":""]},u.release))]})]}),vt==="flowVersion"&&e.jsxs("label",{children:[e.jsx("span",{children:"Versão fluxo"}),e.jsxs("select",{value:Or,onChange:u=>_o(u.target.value),disabled:R||!Ot.length,children:[R&&e.jsx("option",{value:"",children:"Carregando versoes..."}),!Ot.length&&e.jsx("option",{value:"",children:"Nenhuma versão"}),Ot.map(u=>e.jsxs("option",{value:String(u.version),children:["v",u.version,Number(u.version)===Number(yo)?" produção":""]},u.version))]})]}),e.jsxs("button",{onClick:yu,disabled:Tt||Oa,children:[e.jsx(yd,{size:15}),"Reiniciar"]})]})]}),Qu&&e.jsx("div",{className:"test-langgraph-summary",title:Qu.threadId,children:e.jsx("strong",{children:"LangGraph"})}),pc&&e.jsxs("div",{className:"test-trace-summary",children:[e.jsx("span",{children:Bs}),(Ii>0||bl)&&e.jsxs("small",{children:[Ii>0?`${Ii} evento(s) antigo(s) descartado(s). `:"",bl?"Há mais eventos no buffer desta execução.":""]}),e.jsxs("button",{type:"button",onClick:()=>Rr({title:"Trace do teste",payload:{page:xo,edgeConditions:Ds,trace:Fr}}),children:[e.jsx(Pu,{size:14}),"Ver trace"]})]}),e.jsxs("div",{className:"messages",children:[Jc.map((u,y)=>{const k=CA(u),B=SA(u),te=EA(u),ue=`${u.role}-${y}`;if(B)return e.jsxs("div",{className:"message dashboard-message",children:[e.jsx("span",{children:u.role}),e.jsx(IA,{payload:B})]},ue);if(k){const pe=Kc[ue]===!0,ze=JSON.stringify(k.payload,null,2);return e.jsxs("div",{className:"message debug-message",children:[e.jsxs("div",{className:"debug-toolbar",children:[e.jsxs("button",{type:"button",className:"debug-toggle",onClick:()=>Rs(Qe=>({...Qe,[ue]:!pe})),children:[e.jsxs("span",{className:"debug-toggle-label",children:[pe?e.jsx(Sp,{size:15}):e.jsx(rj,{size:15}),"Debug"]}),e.jsx("span",{children:k.title})]}),e.jsx("button",{type:"button",className:"debug-open-button",onClick:()=>Rr(k),title:"Abrir JSON em modal",children:e.jsx(Pu,{size:14})})]}),pe&&e.jsx("pre",{className:"debug-json",children:ze})]},ue)}return te?e.jsxs("div",{className:`message ${u.role} rich-message`,children:[e.jsx("span",{children:u.role}),e.jsx(FA,{content:te,disabled:Tt,onSelect:(pe,ze)=>void xm(pe,ze)})]},ue):e.jsxs("div",{className:`message ${u.role}`,children:[e.jsx("span",{children:u.role}),e.jsx("p",{children:u.text})]},ue)}),Tt&&e.jsxs("div",{className:"message system",children:[e.jsx("span",{children:"system"}),e.jsx("p",{children:"Executando..."})]})]}),e.jsxs("div",{className:"test-input-row",children:[e.jsx("input",{value:or,placeholder:"Digite uma mensagem",onChange:u=>Os(u.target.value),onKeyDown:u=>{u.key==="Enter"&&ad()}}),e.jsx("button",{onClick:ad,disabled:Tt||Oa||!or.trim(),children:e.jsx(mj,{size:18})})]})]})]})}),Oo&&e.jsx("div",{className:"modal-backdrop",onMouseDown:()=>Fe(""),children:e.jsxs("div",{className:"edge-action-modal",onMouseDown:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsx("strong",{children:"Ligação selecionada"}),e.jsxs("button",{"aria-label":"Fechar",onClick:()=>Fe(""),children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("div",{className:"edge-action-body",children:[e.jsxs("div",{className:"edge-summary",children:[e.jsxs("div",{className:"edge-summary-box",children:[e.jsx("span",{children:"Origem"}),e.jsx("strong",{children:(rd==null?void 0:rd.title)||Oo.source})]}),e.jsx(rh,{size:18}),e.jsxs("div",{className:"edge-summary-box",children:[e.jsx("span",{children:"Destino"}),e.jsx("strong",{children:(sd==null?void 0:sd.title)||Oo.target})]})]}),e.jsxs("div",{className:"edge-action-grid",children:[e.jsxs("button",{className:"edge-action-card",onClick:()=>{ot(Oo.id),qe(""),Fe(""),St(!1)},children:[e.jsx(Tc,{size:18}),e.jsxs("span",{children:[e.jsx("strong",{children:"Editar"}),e.jsx("small",{children:"Alterar texto da linha ou condição."})]})]}),e.jsxs("button",{className:"edge-action-card danger-edge-action",onClick:()=>{const u=Oo.id;Fe(""),Oi(u)},children:[e.jsx(Nt,{size:18}),e.jsxs("span",{children:[e.jsx("strong",{children:"Excluir"}),e.jsx("small",{children:"Remover esta ligação do fluxo."})]})]})]})]})]})}),xr&&e.jsx("div",{className:"modal-backdrop",onMouseDown:()=>vr(!1),children:e.jsxs("div",{className:"flow-assistant-modal",onMouseDown:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsxs("div",{className:"flow-assistant-title",children:[e.jsx("strong",{children:"Assistente IA"}),e.jsx("span",{children:(ft==null?void 0:ft.model)||t.model})]}),e.jsxs("button",{"aria-label":"Fechar",onClick:()=>vr(!1),children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("div",{className:"flow-assistant-body",children:[e.jsxs("section",{className:"flow-assistant-compose",children:[e.jsxs("div",{className:"flow-assistant-scope",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Escopo"}),e.jsx("span",{children:Ba==="selection"?`${rr.length} nó(s) selecionado(s)`:"Enviar o fluxo inteiro"})]}),e.jsxs("div",{role:"group","aria-label":"Escopo do assistente",children:[e.jsx("button",{type:"button",className:Ba==="flow"?"active":"",onClick:()=>{yr("flow"),_n(null),Jn("")},children:"Fluxo inteiro"}),e.jsx("button",{type:"button",className:Ba==="selection"?"active":"",disabled:!t.steps.length,onClick:()=>{yr("selection"),_n(null),Jn("")},children:"Nós selecionados"})]})]}),Ba==="selection"&&e.jsxs("div",{className:"flow-assistant-selection-panel",children:[e.jsxs("div",{className:"flow-assistant-selection-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Nós que a IA pode alterar"}),e.jsxs("span",{children:[Ia.length," de ",t.steps.length," nó(s)"]})]}),e.jsxs("div",{children:[e.jsx("button",{type:"button",onClick:fc,disabled:!Ia.length,children:Gn.trim()?"Selecionar filtro":"Todos"}),e.jsx("button",{type:"button",onClick:gc,disabled:!rr.length,children:"Limpar"})]})]}),e.jsxs("div",{className:"flow-assistant-node-search",children:[e.jsx(Oc,{size:15}),e.jsx("input",{value:Gn,placeholder:"Buscar por nome, tipo, texto, responseName...",onChange:u=>qa(u.target.value)}),Gn&&e.jsx("button",{type:"button",onClick:()=>qa(""),"aria-label":"Limpar busca",children:e.jsx(Vt,{size:14})})]}),e.jsxs("div",{className:"flow-assistant-node-picker",children:[Ia.map(u=>{var k;const y=rr.includes(u.id);return e.jsxs("label",{className:y?"selected":"",children:[e.jsx("input",{type:"checkbox",checked:y,onChange:()=>Al(u.id)}),e.jsxs("span",{children:[e.jsx("strong",{children:u.title||u.id}),e.jsx("small",{children:u.responseName||((k=u.component)==null?void 0:k.responseName)||u.type})]})]},u.id)}),!t.steps.length&&e.jsx("div",{className:"component-empty",children:"Nenhum nó no fluxo."}),t.steps.length>0&&!Ia.length&&e.jsx("div",{className:"component-empty",children:"Nenhum nó encontrado para esta busca."})]}),e.jsx("div",{className:"flow-assistant-selected-list",children:fl.length>0?fl.map(u=>e.jsx("span",{children:u.title||u.id},u.id)):e.jsx("span",{children:"Nenhum nó selecionado"})})]}),e.jsxs("div",{className:"flow-assistant-scope",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Fonte"}),e.jsx("span",{children:Va==="whatsappTranscript"?"Transcrição WhatsApp":"Brief livre"})]}),e.jsxs("div",{role:"group","aria-label":"Fonte do pedido",children:[e.jsx("button",{type:"button",className:Va==="brief"?"active":"",onClick:()=>{Ua("brief"),_n(null),Jn("")},children:"Brief"}),e.jsx("button",{type:"button",className:Va==="whatsappTranscript"?"active":"",onClick:()=>{Ua("whatsappTranscript"),_n(null),Jn("")},children:"WhatsApp"})]})]}),e.jsxs("div",{className:"flow-assistant-scope",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Motor"}),e.jsxs("span",{children:[((ld=df.find(u=>u.value===(t.llmProvider||"openai")))==null?void 0:ld.label)||"OpenAI"," · ",t.model]})]}),e.jsxs("div",{role:"group","aria-label":"Motor do assistente",children:[e.jsx("select",{value:t.llmProvider||"openai",onChange:u=>{const y=u.target.value;n(k=>({...k,llmProvider:y,model:_u(y)||k.model})),_n(null)},children:df.map(u=>e.jsx("option",{value:u.value,children:u.label},u.value))}),e.jsx("select",{value:t.model,onChange:u=>{n(y=>({...y,model:u.target.value})),_n(null)},children:zx(t.llmProvider||"openai",t.model).map(u=>e.jsx("option",{value:u,children:u},u))})]})]}),e.jsxs("div",{className:"flow-assistant-scope",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Agent OS"}),e.jsxs("span",{children:[(((Ws=t.agentSpec)==null?void 0:Ws.skills)||[]).length," skills - ",(((Cu=t.agentSpec)==null?void 0:Cu.subagents)||[]).length," subagents - ",(((Gs=t.agentSpec)==null?void 0:Gs.rules)||[]).length," rules - ",(((Su=t.agentSpec)==null?void 0:Su.mcpServers)||[]).length," MCP"]})]}),e.jsxs("button",{type:"button",onClick:()=>{vr(!1),Ra()},children:[e.jsx(Zs,{size:15}),"Editar agente"]})]}),e.jsxs("div",{className:"flow-assistant-prompt-field",children:[e.jsx("span",{children:Va==="whatsappTranscript"?"Cole a conversa":"Pedido"}),e.jsx("textarea",{rows:12,value:En,placeholder:Va==="whatsappTranscript"?"Cole a transcricao do WhatsApp com falas do cliente e do operador.":"Descreva o fluxo, alteracao, insercao ou remocao desejada.",onChange:u=>{Xr(u.target.value),_n(null)}}),e.jsx("small",{className:"flow-assistant-prompt-hint",children:"Para Gmail, Google Drive, OneDrive, Notion, GitHub, GitLab ou AWS, descreva a tarefa desejada. O assistente monta Agent Plan, orquestrador, skill especialista e MCP remoto."})]}),As&&e.jsx("div",{className:"auth-error",children:As}),e.jsxs("div",{className:"flow-assistant-actions",children:[e.jsxs("button",{type:"button",onClick:()=>{Xr(xv),_n(null)},disabled:Ha,children:[e.jsx(nn,{size:15}),"Usar exemplo"]}),e.jsxs("button",{className:"primary-button",type:"button",onClick:()=>void El(),disabled:Ha||!En.trim(),children:[Ha?e.jsx(Ut,{size:16,className:"spin"}):e.jsx(Dl,{size:16}),Ba==="selection"?"Gerar ajuste":"Gerar fluxo"]})]})]}),e.jsxs("section",{className:"flow-assistant-result",children:[!ft&&e.jsxs("div",{className:"flow-assistant-empty",children:[e.jsx(Dl,{size:22}),e.jsx("strong",{children:"Nenhum fluxo gerado ainda."})]}),ft&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flow-assistant-summary",children:[e.jsxs("div",{children:[e.jsx("span",{children:"Nós"}),e.jsx("strong",{children:ft.config.steps.length})]}),e.jsxs("div",{children:[e.jsx("span",{children:"Ligações"}),e.jsx("strong",{children:ft.config.edges.length})]}),e.jsxs("div",{children:[e.jsx("span",{children:"Escopo"}),e.jsx("strong",{children:ft.scope==="selection"?"Seleção":"Fluxo"})]})]}),e.jsxs("div",{className:"flow-assistant-notes",children:[e.jsx("strong",{children:ft.config.title||"Fluxo gerado"}),e.jsx("p",{children:ft.summary||"Resultado pronto para aplicar no canvas."})]}),(ft.warnings||[]).length>0&&e.jsx("div",{className:"flow-assistant-warnings",children:(ft.warnings||[]).map((u,y)=>e.jsxs("span",{children:[e.jsx(Vm,{size:14}),u]},`${u}-${y}`))}),e.jsxs("div",{className:"flow-assistant-node-list",children:[ft.config.steps.slice(0,8).map(u=>{var y;return e.jsxs("div",{children:[e.jsx("span",{children:u.type==="component"&&((y=u.component)==null?void 0:y.type)||u.type}),e.jsx("strong",{children:u.title||u.id})]},u.id)}),ft.config.steps.length>8&&e.jsxs("div",{children:[e.jsx("span",{children:"+"}),e.jsxs("strong",{children:[ft.config.steps.length-8," no(s)"]})]})]}),e.jsxs("div",{className:"modal-actions flow-assistant-apply",children:[e.jsx("button",{type:"button",onClick:()=>_n(null),children:"Descartar"}),e.jsxs("button",{className:"primary-button",type:"button",onClick:xc,children:[e.jsx(Rl,{size:16}),ft.scope==="selection"?"Aplicar nos nós":"Aplicar no canvas"]})]})]})]})]})]})}),xl&&e.jsx("div",{className:"modal-backdrop",onMouseDown:gs,children:e.jsxs("div",{className:`inspector-modal ${Ta?"edge-modal":""} ${((kc=Ma==null?void 0:Ma.component)==null?void 0:kc.type)==="cron"?"cron-modal":""} ${((cd=Ma==null?void 0:Ma.component)==null?void 0:cd.type)==="mcp"?"mcp-modal":""}`,onMouseDown:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsx("strong",{children:rc}),e.jsxs("button",{"aria-label":"Fechar",onClick:gs,children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsx(Jk,{config:t,selectedStep:nc?void 0:Ma,selectedEdge:nc?void 0:Ta,flows:q,currentFlowId:f,agentId:Sn,onUpdateConfig:wl,onUpdateStep:Pi,onUpdateEdge:mc,onRefreshCronLog:zi,canRefreshCronLog:!!f})]})}),Wa&&e.jsx("div",{className:"modal-backdrop",onClick:()=>ni(!1),children:e.jsxs("div",{className:"json-modal",onClick:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsx("strong",{children:"JSON gerado"}),e.jsxs("button",{onClick:vm,children:[e.jsx(nn,{size:16}),"Copiar"]})]}),e.jsx("pre",{children:JSON.stringify(t,null,2)})]})}),Jt&&e.jsx("div",{className:"modal-backdrop debug-modal-backdrop",onClick:()=>Rr(null),children:e.jsxs("div",{className:"json-modal wide-modal debug-json-modal",onClick:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Debug JSON"}),e.jsx("span",{children:Jt.title})]}),e.jsxs("div",{className:"debug-modal-actions",children:[e.jsxs("button",{onClick:()=>navigator.clipboard.writeText(JSON.stringify(Jt.payload,null,2)),children:[e.jsx(nn,{size:16}),"Copiar"]}),e.jsxs("button",{onClick:()=>Rr(null),children:[e.jsx(Vt,{size:16}),"Fechar"]})]})]}),e.jsx(AA,{value:Jt.payload})]})}),ri&&e.jsx("div",{className:"modal-backdrop",onMouseDown:()=>Qa(!1),children:e.jsxs("div",{className:"flow-version-modal",onMouseDown:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Publicação"}),e.jsx("span",{children:"Trabalhe com Rascunho, Homologação e Produção sem precisar combinar versões manualmente."})]}),e.jsxs("button",{"aria-label":"Fechar",onClick:()=>Qa(!1),children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("div",{className:"flow-version-body",children:[(ql||xt)&&e.jsx("div",{className:ql?"api-warning flow-transfer-error":"provider-config-success",children:ql||xt}),e.jsxs("section",{className:"publish-environments flow-version-list-panel",children:[e.jsxs("article",{className:vt==="draft"?"selected":"",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Rascunho"}),e.jsx("span",{children:"O que está aberto no editor agora."})]}),e.jsx("button",{type:"button",onClick:()=>{Po("draft")},children:"Testar rascunho"})]}),e.jsxs("article",{className:vt==="agentVersion"||vt==="flowVersion"?"selected":"",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Homologação"}),e.jsx("span",{children:"Escolha um pacote e uma versão dos fluxos incluídos para abrir no editor."})]}),e.jsxs("div",{className:"publish-homolog-grid",children:[e.jsxs("label",{className:"flow-version-select-field",children:[e.jsx("span",{children:"Pacote do agente"}),e.jsxs("select",{value:eo,onChange:u=>pu(u.target.value),disabled:Wl||On||!Qt.length,children:[e.jsx("option",{value:"",children:Qt.length?"Selecione um pacote":"Nenhum pacote criado"}),Qt.map(u=>e.jsxs("option",{value:String(u.release),children:["r",u.release,u.name?` - ${u.name}`:"",Number(u.release)===Number(Ht)?" (produção)":""]},u.release))]})]}),e.jsxs("label",{className:"flow-version-select-field",children:[e.jsx("span",{children:"Versões dos fluxos da release"}),e.jsxs("select",{value:Ca,onChange:u=>void Zu(u.target.value),disabled:On||!ta.length,children:[!ta.length&&e.jsx("option",{value:"",children:eo?"Nenhum snapshot neste pacote":"Selecione um pacote"}),ta.map(u=>e.jsx("option",{value:u.key,children:bv(u,jv(u,Rt))},u.key))]})]})]})]}),e.jsxs("article",{className:vt==="active"?"selected":"",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Produção"}),e.jsx("span",{children:Ht?`Clientes usam o pacote r${Ht}.`:N?`Clientes usam o fluxo v${N}.`:"Nenhuma versão ativa para clientes."})]}),e.jsx("button",{type:"button",onClick:()=>Po("active"),disabled:!f,children:"Testar produção"})]}),e.jsxs("div",{className:"flow-version-summary",children:[e.jsxs("span",{children:["Try it usa: ",e.jsx("strong",{children:vt==="agentVersion"&&xa?`homologação: pacote r${xa}`:vt==="flowVersion"&&Or?`homologação: fluxo v${Or}`:vt==="active"?"produção":"rascunho"})]}),e.jsxs("span",{children:["Fluxo aberto: ",e.jsx("strong",{children:r||t.title})]})]})]}),e.jsxs("details",{className:"publish-advanced flow-version-list-panel",open:nl,onToggle:u=>Ul(u.currentTarget.open),children:[e.jsx("summary",{children:"Gerenciar versões"}),e.jsxs("div",{className:"flow-version-tabs",role:"tablist","aria-label":"Tipo de versionamento",children:[e.jsx("button",{type:"button",role:"tab","aria-selected":Mn==="agent",className:Mn==="agent"?"active":"",onClick:()=>si("agent"),children:"Agente"}),e.jsx("button",{type:"button",role:"tab","aria-selected":Mn==="flow",className:Mn==="flow"?"active":"",onClick:()=>si("flow"),children:"Fluxos"}),e.jsx("button",{type:"button",role:"tab","aria-selected":Mn==="deploy",className:Mn==="deploy"?"active":"",onClick:()=>si("deploy"),children:"API"})]}),Mn==="agent"&&e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"flow-version-panel flow-version-list-panel",children:[e.jsxs("div",{className:"flow-transfer-section-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Novo pacote do agente"}),e.jsxs("span",{children:["Cria r",vl," apontando para a última versão criada de cada fluxo. Se algum fluxo não tiver versão, cria a v1 inicial. Não ativa em produção."]})]}),e.jsxs("button",{type:"button",className:"primary-button",onClick:()=>void pm(),disabled:$t||Pr||fn,children:[$t?e.jsx(Ut,{size:15,className:"spin"}):e.jsx(Qi,{size:15}),"Criar pacote r",vl]})]}),e.jsx("textarea",{value:al,rows:3,placeholder:"Notas opcionais, ex: Login v4 + Área logada v3 para homologação.",onChange:u=>Zn(u.target.value)})]}),e.jsxs("section",{className:"flow-version-panel flow-version-list-panel",children:[e.jsx("div",{className:"flow-transfer-section-header",children:e.jsxs("div",{children:[e.jsx("strong",{children:"Pacotes criados"}),e.jsx("span",{children:Qt.length?`${Qt.length} pacote(s)`:"Nenhum pacote criado ainda."})]})}),e.jsxs("div",{className:"flow-version-list",children:[Qt.map(u=>{const y=Number(u.release)===Number(Ht),k=lh(u,q),B=k.length;return e.jsxs("div",{className:`flow-version-card ${y?"active":""}`,children:[e.jsxs("div",{children:[e.jsxs("strong",{children:["r",u.release]}),e.jsx("span",{children:u.name||`Pacote ${u.release}`}),e.jsxs("span",{children:[B," fluxo(s) versionados"]}),!!k.length&&e.jsx("div",{className:"flow-version-release-map",children:k.map(te=>e.jsx("span",{className:te.id===f?"current":"",children:Lj(te,y)},`${u.release}-${te.id}`))}),e.jsxs("small",{children:["Deploy: ",Zm(u.deployedAt||u.createdAt)," por ",eh(u.deployedByEmail,u.deployedBy)]}),(u.activatedAt||u.activatedByEmail||u.activatedBy)&&e.jsxs("small",{children:["Ativação: ",Zm(u.activatedAt)," por ",eh(u.activatedByEmail,u.activatedBy)]}),u.notes&&e.jsx("p",{children:u.notes})]}),e.jsxs("div",{children:[e.jsxs("button",{type:"button",onClick:()=>ed({kind:"agent",version:u.release,isActive:y,currentName:u.name||""}),disabled:$t||Pr,children:[e.jsx(Ic,{size:15}),"Publicar"]}),e.jsxs("button",{type:"button",onClick:()=>pu(String(u.release)),disabled:$t,children:[e.jsx(yd,{size:15}),"Abrir e testar"]}),y?e.jsx("span",{className:"status-pill active",children:"Ativa"}):e.jsxs("button",{type:"button",onClick:()=>qs(u.release),disabled:$t,children:[e.jsx(Ji,{size:15}),"Ativar"]}),e.jsxs("button",{type:"button",onClick:()=>dm({kind:"agent",version:u.release,currentName:u.name||""}),disabled:$t,children:[e.jsx(Tc,{size:15}),"Renomear"]}),e.jsxs("button",{type:"button",onClick:()=>mm(u.release),disabled:$t||y,title:y?"Ative outra versão antes de excluir esta.":`Excluir r${u.release}`,children:[e.jsx(Nt,{size:15}),"Excluir"]})]})]},u.release)}),!Qt.length&&e.jsx("div",{className:"api-warning",children:"Crie um pacote para homologação. Quando estiver aprovado, ative pela lista acima sem criar outro pacote."})]})]})]}),Mn==="deploy"&&e.jsxs("section",{className:"flow-version-panel flow-version-list-panel",children:[e.jsx("div",{className:"flow-transfer-section-header",children:e.jsxs("div",{children:[e.jsx("strong",{children:"Como a API escolhe a versão"}),e.jsx("span",{children:"Sem override, a chamada usa o pacote ativo do agente. Se não houver pacote ativo, usa a versão ativa do fluxo."})]})}),e.jsxs("div",{className:"flow-version-summary",children:[e.jsxs("span",{children:["Padrão sem override: ",e.jsx("strong",{children:Ht?`pacote r${Ht}`:N?`fluxo v${N}`:"rascunho"})]}),e.jsxs("span",{children:["Teste de pacote: ",e.jsx("strong",{children:bn?`r${bn.release}`:"nenhum selecionado"})]}),e.jsxs("span",{children:["Teste de fluxo: ",e.jsx("strong",{children:ic?`v${ic.version}`:"nenhum selecionado"})]})]})]}),Mn==="deploy"&&e.jsxs("section",{className:"flow-version-panel flow-version-list-panel",children:[e.jsxs("div",{className:"flow-transfer-section-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Payload padrão"}),e.jsx("span",{children:"Não envie agentRelease nem flowVersion para usar o que está ativo para clientes."})]}),e.jsxs("button",{type:"button",onClick:()=>navigator.clipboard.writeText(Fo),children:[e.jsx(nn,{size:15}),"Copiar"]})]}),e.jsx("pre",{children:Fo}),e.jsx("div",{className:"flow-version-subsection",children:e.jsxs("div",{className:"flow-transfer-section-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Payload de teste"}),e.jsx("span",{children:"Envie agentRelease para testar um pacote específico sem alterar o que está ativo para clientes."})]}),e.jsxs("button",{type:"button",onClick:()=>navigator.clipboard.writeText(Br),children:[e.jsx(nn,{size:15}),"Copiar"]})]})}),e.jsx("pre",{children:Br})]}),Mn==="flow"&&e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"flow-version-panel flow-version-list-panel",children:[e.jsxs("div",{className:"flow-transfer-section-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Nova versão deste fluxo"}),e.jsxs("span",{children:["Cria v",Ls," com o que está aberto no editor agora."]})]}),e.jsxs("button",{type:"button",className:"primary-button",onClick:om,disabled:$t||Pr||fn,children:[$t?e.jsx(Ut,{size:15,className:"spin"}):e.jsx(Qi,{size:15}),"Criar v",Ls]})]}),e.jsx("textarea",{value:br,rows:3,placeholder:"Notas opcionais desta versão, ex: ajuste do fallback de CPF para homologação.",onChange:u=>wr(u.target.value)})]}),e.jsxs("section",{className:"flow-version-panel flow-version-list-panel",children:[e.jsx("div",{className:"flow-transfer-section-header",children:e.jsxs("div",{children:[e.jsx("strong",{children:"Versões deste fluxo"}),e.jsx("span",{children:Ot.length?`${Ot.length} versão(ões)`:"Nenhuma versão criada ainda."})]})}),e.jsxs("div",{className:"flow-version-list",children:[Ot.map(u=>{const y=Number(u.version)===Number(N),k=Number(u.version)===Number(yo);return e.jsxs("div",{className:`flow-version-card ${k?"active":""}`,children:[e.jsxs("div",{children:[e.jsxs("strong",{children:["v",u.version]}),e.jsx("span",{children:u.name||`Versão ${u.version}`}),e.jsxs("small",{children:["Deploy: ",Zm(u.deployedAt||u.createdAt)," por ",eh(u.deployedByEmail,u.deployedBy)]}),(u.activatedAt||u.activatedByEmail||u.activatedBy)&&e.jsxs("small",{children:["Ativação: ",Zm(u.activatedAt)," por ",eh(u.activatedByEmail,u.activatedBy)]}),u.notes&&e.jsx("p",{children:u.notes})]}),e.jsxs("div",{children:[e.jsxs("button",{type:"button",onClick:()=>ed({kind:"flow",version:u.version,isActive:k,currentName:u.name||""}),disabled:$t||Pr,children:[e.jsx(Ic,{size:15}),"Publicar"]}),e.jsxs("button",{type:"button",onClick:()=>im(String(u.version)),disabled:$t,children:[e.jsx(yd,{size:15}),"Abrir e testar"]}),k?e.jsx("span",{className:"status-pill active",children:"Produção"}):e.jsxs("button",{type:"button",onClick:()=>rm(u.version),disabled:$t,children:[e.jsx(Ji,{size:15}),"Ativar"]}),e.jsxs("button",{type:"button",onClick:()=>dm({kind:"flow",version:u.version,currentName:u.name||""}),disabled:$t,children:[e.jsx(Tc,{size:15}),"Renomear"]}),e.jsxs("button",{type:"button",onClick:()=>td(u),disabled:$t||y||k,title:k?"Esta versão está em produção.":y?"Ative outra versão antes de excluir esta versão.":`Excluir v${u.version}`,children:[e.jsx(Nt,{size:15}),"Excluir"]})]})]},u.version)}),!Ot.length&&e.jsx("div",{className:"api-warning",children:"Crie uma versão nova para homologação. Quando estiver aprovada, ative pela lista acima."})]})]})]})]})]})]})}),tl&&e.jsx("div",{className:"modal-backdrop",onMouseDown:()=>jr(!1),children:e.jsxs("div",{className:"flow-transfer-modal",onMouseDown:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Importar/Exportar Fluxo"}),e.jsx("span",{children:"Use para mover um fluxo entre ambientes ou criar um rascunho a partir de um JSON."})]}),e.jsxs("button",{"aria-label":"Fechar",onClick:()=>jr(!1),children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("div",{className:"flow-transfer-body",children:[(oi||We)&&e.jsx("div",{className:oi?"api-warning flow-transfer-error":"provider-config-success",children:oi||We}),e.jsxs("section",{className:"flow-transfer-section",children:[e.jsxs("div",{className:"flow-transfer-section-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Exportar fluxo atual"}),e.jsxs("span",{children:[r||t.title," ",f?`· ${f}`:"· rascunho sem flowId"]})]}),e.jsxs("div",{children:[e.jsxs("button",{type:"button",onClick:tp,children:[e.jsx(nn,{size:15}),"Copiar JSON"]}),e.jsxs("button",{type:"button",className:"primary-button",onClick:np,children:[e.jsx(vh,{size:15}),"Baixar arquivo"]})]})]}),e.jsx("textarea",{value:zs,readOnly:!0,rows:18})]}),e.jsxs("section",{className:"flow-transfer-section",children:[e.jsxs("div",{className:"flow-transfer-section-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Importar fluxo"}),e.jsx("span",{children:"O importado entra como rascunho e não sobrescreve o fluxo salvo até clicar em Salvar."})]}),e.jsxs("div",{children:[e.jsx("input",{ref:Qn,type:"file",accept:"application/json,.json",className:"hidden-file-input",onChange:Hr}),e.jsxs("button",{type:"button",onClick:()=>{var u;return(u=Qn.current)==null?void 0:u.click()},children:[e.jsx(Ic,{size:15}),"Escolher arquivo"]})]})]}),e.jsx("textarea",{value:Es,rows:18,placeholder:"Cole aqui o JSON exportado do Canvas Flow.",onChange:u=>{Ga(u.target.value),ca("")}}),e.jsxs("div",{className:"modal-actions",children:[e.jsx("button",{type:"button",onClick:()=>{Ga(""),ca("")},children:"Limpar"}),e.jsxs("button",{type:"button",className:"primary-button",onClick:()=>lo(Es),disabled:!Es.trim(),children:[e.jsx(Ic,{size:15}),"Importar fluxo"]})]})]})]})]})}),Wu&&e.jsx("div",{className:"modal-backdrop",onClick:()=>ll(!1),children:e.jsxs("div",{className:"json-modal wide-modal tag-dashboard-modal agentops-modal",onClick:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"modal-header tag-dashboard-modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"AgentOps"}),e.jsx("small",{children:"Operacao, governanca e saude dos fluxos do agente."})]}),e.jsxs("button",{onClick:()=>ll(!1),children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("div",{className:"tag-dashboard-body",children:[e.jsxs("section",{className:"tag-dashboard-filter-panel",children:[e.jsxs("div",{className:"tag-dashboard-section-title",children:[e.jsx("strong",{children:"Filtros"}),e.jsx("span",{children:"Combine periodo, fluxo e conversa para investigar execucoes."})]}),e.jsxs("div",{className:"tag-dashboard-filters",children:[e.jsxs("label",{children:["Data inicial",e.jsx("input",{type:"datetime-local",value:Aa.dateFrom,onChange:u=>Mr(y=>({...y,dateFrom:u.target.value}))})]}),e.jsxs("label",{children:["Data final",e.jsx("input",{type:"datetime-local",value:Aa.dateTo,onChange:u=>Mr(y=>({...y,dateTo:u.target.value}))})]}),e.jsxs("label",{className:"tag-dashboard-filter-wide",children:["Fluxo",e.jsxs("select",{value:Aa.flowId,onChange:u=>Mr(y=>({...y,flowId:u.target.value})),children:[e.jsx("option",{value:"",children:"Todos os fluxos"}),q.map(u=>e.jsx("option",{value:u._id,children:u.name},u._id))]})]}),e.jsxs("label",{children:["Conversa",e.jsx("input",{value:Aa.conversationId,placeholder:"conversation-id",onChange:u=>Mr(y=>({...y,conversationId:u.target.value}))})]}),e.jsxs("label",{children:["Historico",e.jsx("input",{type:"number",min:10,max:500,value:Aa.historyLimit,onChange:u=>Mr(y=>({...y,historyLimit:Number(u.target.value)||80}))})]}),e.jsxs("label",{children:["Trace",e.jsx("input",{type:"number",min:50,max:5e3,value:Aa.traceLimit,onChange:u=>Mr(y=>({...y,traceLimit:Number(u.target.value)||600}))})]}),e.jsx("div",{className:"tag-dashboard-filter-actions",children:e.jsxs("button",{className:"primary-button tag-dashboard-filter-button",onClick:()=>void cu(),disabled:ss,children:[ss?e.jsx(Ut,{size:16,className:"spin"}):e.jsx(Oc,{size:16}),"Atualizar"]})})]})]}),Er&&e.jsx("div",{className:"api-warning",children:Er}),dt&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"dashboard-card-grid agentops-card-grid",children:[e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Conversas"}),e.jsx("strong",{children:Nn(cn.conversations)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Mensagens"}),e.jsx("strong",{children:Nn(cn.messages)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Execucoes"}),e.jsx("strong",{children:Nn(cn.runs)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Erro %"}),e.jsx("strong",{children:Nn(Number(cn.errorRate||0)*100,1)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Tokens est."}),e.jsx("strong",{children:Nn(cn.estimatedTokens)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Fila SQS"}),e.jsx("strong",{children:Nn(((ku=qn.jobs)==null?void 0:ku.pending)||((Au=qn.jobs)==null?void 0:Au.queued)||qn.activeLocks||0)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"MCP tools"}),e.jsx("strong",{children:Nn(Hs.exposedMcpTools)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Aprovações"}),e.jsx("strong",{children:Nn(Hs.approvalGates)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"RAG/Dados"}),e.jsx("strong",{children:Nn(Hs.ragNodes)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Webhooks"}),e.jsx("strong",{children:Nn(Hs.webhookNodes)})]})]}),kn.length>0&&e.jsxs("section",{className:"tag-dashboard-tab-panel agentops-warning-panel",children:[e.jsxs("div",{className:"tag-dashboard-section-title",children:[e.jsx("strong",{children:"Alertas de prontidao"}),e.jsxs("span",{children:[kn.length," ponto(s) pedem revisao antes de publicar."]})]}),e.jsx("ul",{children:kn.map((u,y)=>e.jsx("li",{children:u},`${u}-${y}`))})]}),e.jsxs("div",{className:"tag-dashboard-insight-grid",children:[e.jsx(Cd,{title:"Nos mais quentes",subtitle:"Execucoes por node",series:Nd(bu,["title","stepId"],"count"),emptyText:"Nenhum node apareceu no trace para estes filtros."}),e.jsx(Cd,{title:"Chamadas por tipo",subtitle:"Componentes e operacoes",series:Nd(za.calls,["key"],"count"),emptyText:"Nenhuma chamada registrada no trace."})]}),e.jsxs("div",{className:"tag-dashboard-insight-grid",children:[e.jsxs("section",{className:"tag-dashboard-tab-panel",children:[e.jsxs("div",{className:"tag-dashboard-section-title",children:[e.jsx("strong",{children:"Erros recentes"}),e.jsx("span",{children:"Falhas capturadas no trace."})]}),e.jsx("div",{className:"dashboard-table-wrap",children:e.jsxs("table",{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Data"}),e.jsx("th",{children:"Tipo"}),e.jsx("th",{children:"No"}),e.jsx("th",{children:"Mensagem"})]})}),e.jsx("tbody",{children:Bi.length>0?Bi.slice(0,8).map((u,y)=>e.jsxs("tr",{children:[e.jsx("td",{children:u.createdAt?new Date(u.createdAt).toLocaleString("pt-BR"):"-"}),e.jsx("td",{children:u.type||"-"}),e.jsx("td",{children:u.stepId||"-"}),e.jsx("td",{children:u.message||"-"})]},`${u.conversationId||"error"}-${y}`)):e.jsx("tr",{children:e.jsx("td",{colSpan:4,children:"Nenhum erro encontrado."})})})]})})]}),e.jsxs("section",{className:"tag-dashboard-tab-panel",children:[e.jsxs("div",{className:"tag-dashboard-section-title",children:[e.jsx("strong",{children:"Publicacao"}),e.jsx("span",{children:"Releases e fluxos disponiveis para o agente."})]}),e.jsxs("div",{className:"agentops-release-summary",children:[e.jsxs("span",{children:["Release ativa: ",e.jsx("strong",{children:Vi.activeRelease||"-"})]}),e.jsxs("span",{children:["Ultima release: ",e.jsx("strong",{children:Vi.latestRelease||"-"})]}),e.jsxs("button",{type:"button",onClick:()=>{ll(!1),Qa(!0),si("agent"),Ul(!0)},children:[e.jsx(Qi,{size:15}),"Abrir publicacao"]})]}),e.jsxs("div",{className:"agentops-flow-list",children:[wu.slice(0,8).map(u=>e.jsxs("span",{children:[u.name||u.id," v",u.activeVersion||u.latestVersion||"-"]},u.id)),!wu.length&&e.jsx("span",{children:"Nenhum fluxo salvo para este agente."})]}),Sc.length>0&&e.jsx("div",{className:"agentops-flow-list compact",children:Sc.slice(0,6).map(u=>e.jsxs("span",{children:["r",u.release,u.active?" ativa":""]},u.release))})]})]})]})]})]})}),Gu&&e.jsx("div",{className:"modal-backdrop",onClick:()=>Xl(!1),children:e.jsxs("div",{className:"json-modal wide-modal simulation-modal",onClick:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Simulação e evals"}),e.jsx("span",{children:"Rode conversas em lote contra rascunho, produção ou versões selecionadas."})]}),e.jsxs("button",{onClick:()=>{Is(!1),Xl(!1)},children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("div",{className:"simulation-body",children:[e.jsx("section",{className:"tag-dashboard-filter-panel",children:e.jsxs("div",{className:"tag-dashboard-filters",children:[e.jsxs("label",{children:["Modo",e.jsxs("select",{value:Yl,onChange:u=>st(u.target.value),children:[e.jsx("option",{value:"conversation",children:"Conversa contínua"}),e.jsx("option",{value:"isolated",children:"Casos isolados"})]})]}),e.jsxs("label",{children:["Runtime",e.jsx("input",{value:vt==="draft"?"Rascunho":vt==="active"?"Produção":vt==="agentVersion"?`Agente r${xa||"?"}`:`Fluxo v${Or||"?"}`,readOnly:!0})]}),e.jsx("div",{className:"tag-dashboard-filter-actions",children:e.jsxs("button",{className:"primary-button tag-dashboard-filter-button",onClick:()=>void ys(),disabled:tr||Oa,children:[tr?e.jsx(Ut,{size:16,className:"spin"}):e.jsx(yd,{size:16}),"Rodar eval"]})})]})}),Oa&&e.jsx("div",{className:"api-warning",children:"Selecione a versão no Try it antes de rodar este modo."}),e.jsxs("div",{className:"simulation-suite-main-tabs",role:"tablist","aria-label":"Suites de simulacao",children:[e.jsx("button",{type:"button",className:Tn==="saved"?"active":"",onClick:()=>ls("saved"),children:"Suites salvas"}),e.jsx("button",{type:"button",className:Tn==="editor"?"active":"",onClick:()=>ls("editor"),children:"Criar suite"})]}),Ju&&e.jsx("div",{className:"api-warning",children:Ju}),bi&&e.jsx("div",{className:"provider-config-success",children:bi}),Tn==="saved"&&e.jsxs("section",{className:"simulation-run-panel",children:[e.jsxs("div",{className:"simulation-run-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Suites para rodar"}),e.jsxs("span",{children:[ea.length," suite(s), ",ir," caso(s) selecionado(s)."]})]}),e.jsxs("div",{children:[e.jsxs("button",{type:"button",onClick:Un,disabled:!_t.length,children:[e.jsx(Ji,{size:15}),"Selecionar todas"]}),e.jsxs("button",{type:"button",onClick:Xe,disabled:!fa.length,children:[e.jsx(Vt,{size:15}),"Limpar"]}),e.jsxs("button",{className:"primary-button",type:"button",onClick:()=>void ys(),disabled:tr||Oa||!fa.length,children:[tr?e.jsx(Ut,{size:15,className:"spin"}):e.jsx(yd,{size:15}),"Rodar selecionadas"]})]})]}),!_t.length&&e.jsx("div",{className:"component-empty",children:"Nenhuma suite salva. Abra a tab Criar suite, monte os casos e salve."}),_t.length>0&&e.jsxs("div",{className:"simulation-run-layout",children:[e.jsx("div",{className:"simulation-run-library",children:_t.map(u=>{const y=fa.includes(u.id);return e.jsxs("article",{className:`simulation-saved-suite ${y?"active":""}`,children:[e.jsxs("div",{className:"simulation-saved-suite-header",children:[e.jsxs("label",{className:"simulation-suite-check",children:[e.jsx("input",{type:"checkbox",checked:y,onChange:()=>tn(u.id)}),e.jsxs("span",{children:[e.jsx("strong",{children:u.name}),e.jsxs("small",{children:[u.cases.length," caso(s)",u.updatedAt?` · ${new Date(u.updatedAt).toLocaleString("pt-BR")}`:""]})]})]}),e.jsxs("button",{type:"button",onClick:()=>wo(u.id),children:[e.jsx(Tc,{size:15}),"Editar"]})]}),u.description&&e.jsx("p",{children:u.description}),e.jsx("div",{className:"simulation-saved-case-list",children:u.cases.map((k,B)=>e.jsx("span",{children:String((k==null?void 0:k.name)||(k==null?void 0:k.title)||(k==null?void 0:k.text)||(k==null?void 0:k.input)||`Caso ${B+1}`).slice(0,90)},`${u.id}-run-${B}`))})]},u.id)})}),e.jsxs("aside",{className:"simulation-run-order",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Ordem da rodada"}),e.jsx("span",{children:"Arraste para mudar a sequencia."})]}),ea.length?ea.map((u,y)=>e.jsxs("div",{className:`simulation-run-order-item ${xi===u.id?"dragging":""}`,draggable:!0,onDragStart:k=>{dl(u.id),k.dataTransfer.effectAllowed="move"},onDragOver:k=>{!xi||xi===u.id||(k.preventDefault(),k.dataTransfer.dropEffect="move")},onDrop:k=>{k.preventDefault(),ln(xi,u.id)},onDragEnd:()=>dl(""),children:[e.jsx(uf,{size:16}),e.jsx("span",{children:y+1}),e.jsx("strong",{children:u.name}),e.jsxs("small",{children:[u.cases.length," caso(s)"]})]},u.id)):e.jsx("div",{className:"component-empty",children:"Selecione suites para montar a ordem."})]})]})]}),Tn==="editor"&&e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"simulation-suite-panel",children:[e.jsxs("div",{className:"tag-dashboard-section-title",children:[e.jsx("strong",{children:"Suite salva"}),e.jsx("span",{children:_t.length?`${_t.length} suite(s) neste fluxo.`:"Nenhuma suite salva neste fluxo ainda."})]}),e.jsxs("div",{className:"simulation-suite-grid",children:[e.jsxs("label",{children:["Carregar",e.jsxs("select",{value:Ir,onChange:u=>{const y=u.target.value;y?wo(y):uu()},children:[e.jsx("option",{value:"",children:"Nova suite"}),_t.map(u=>e.jsx("option",{value:u.id,children:u.name},u.id))]})]}),e.jsxs("label",{children:["Nome",e.jsx("input",{value:yi,placeholder:"Ex: Regressao atendimento WhatsApp",onChange:u=>Yo(u.target.value)})]}),e.jsxs("label",{className:"simulation-suite-description",children:["Descricao",e.jsx("input",{value:_s,placeholder:"Opcional: objetivo da suite",onChange:u=>ga(u.target.value)})]}),e.jsxs("div",{className:"simulation-suite-actions",children:[e.jsxs("button",{type:"button",onClick:uu,disabled:Io,children:[e.jsx(un,{size:15}),"Nova"]}),e.jsxs("button",{type:"button",className:"primary-button",onClick:()=>void Xu(),disabled:Io,children:[Io?e.jsx(Ut,{size:15,className:"spin"}):e.jsx(Rl,{size:15}),"Salvar suite"]}),e.jsxs("button",{type:"button",className:"danger-button",onClick:()=>void ba(),disabled:Io||!Ir,children:[e.jsx(Nt,{size:15}),"Excluir"]})]})]}),_t.length>0&&e.jsx("div",{className:"simulation-saved-list",children:_t.map(u=>e.jsxs("article",{className:`simulation-saved-suite ${Ir===u.id?"active":""}`,children:[e.jsxs("div",{className:"simulation-saved-suite-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:u.name}),e.jsxs("span",{children:[u.cases.length," caso(s)",u.updatedAt?` · atualizado em ${new Date(u.updatedAt).toLocaleString("pt-BR")}`:""]})]}),e.jsxs("button",{type:"button",onClick:()=>wo(u.id),children:[e.jsx(rh,{size:15}),"Carregar"]})]}),u.description&&e.jsx("p",{children:u.description}),e.jsx("div",{className:"simulation-saved-case-list",children:u.cases.map((y,k)=>e.jsx("span",{children:String((y==null?void 0:y.name)||(y==null?void 0:y.title)||(y==null?void 0:y.text)||(y==null?void 0:y.input)||`Caso ${k+1}`).slice(0,90)},`${u.id}-${k}`))})]},u.id))})]}),e.jsxs("div",{className:"simulation-editor-panel",children:[e.jsxs("div",{className:"simulation-editor-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Cenarios"}),e.jsx("span",{children:"Monte casos por campos ou edite o JSON direto."})]}),e.jsxs("div",{className:"simulation-editor-actions",children:[e.jsxs("div",{className:"simulation-editor-tabs",role:"tablist","aria-label":"Editor de cenarios",children:[e.jsx("button",{type:"button",className:ul==="visual"?"active":"",onClick:()=>gi("visual"),children:"Visual"}),e.jsx("button",{type:"button",className:ul==="json"?"active":"",onClick:()=>gi("json"),children:"JSON"})]}),e.jsxs("button",{type:"button",onClick:ke,children:[e.jsx(nn,{size:15}),"Exemplo"]}),e.jsxs("button",{type:"button",className:"primary-button",onClick:_,children:[e.jsx(un,{size:15}),"Novo caso"]})]})]}),ul==="visual"?e.jsx("div",{className:"simulation-builder",children:Tr.map((u,y)=>e.jsxs("section",{className:"simulation-case-card",children:[e.jsxs("div",{className:"simulation-case-header",children:[e.jsxs("div",{children:[e.jsxs("span",{children:["Caso ",y+1]}),e.jsx("input",{value:u.name,placeholder:"Nome do cenario",onChange:k=>S(u.id,{name:k.target.value})})]}),e.jsxs("div",{children:[e.jsx("button",{type:"button",title:"Duplicar caso",onClick:()=>W(u.id),children:e.jsx(nn,{size:15})}),e.jsx("button",{type:"button",title:"Remover caso",onClick:()=>je(u.id),disabled:Tr.length<=1,children:e.jsx(Nt,{size:15})})]})]}),e.jsxs("label",{className:"simulation-field simulation-field-wide",children:["Mensagem do usuario",e.jsx("textarea",{rows:3,value:u.text,placeholder:"Ex: Quero remarcar minha consulta",onChange:k=>S(u.id,{text:k.target.value})})]}),e.jsxs("div",{className:"simulation-case-grid",children:[e.jsxs("label",{className:"simulation-field",children:["Texto esperado",e.jsx("textarea",{rows:3,value:u.expectedContainsText,placeholder:"Uma palavra/frase por linha",onChange:k=>S(u.id,{expectedContainsText:k.target.value})})]}),e.jsxs("label",{className:"simulation-field",children:["Slots esperados JSON",e.jsx("textarea",{rows:3,value:u.expectedSlotsText,placeholder:`{
|
|
762
|
+
"triagem.intencao": "agendamento"
|
|
763
|
+
}`,onChange:k=>S(u.id,{expectedSlotsText:k.target.value})})]}),e.jsxs("label",{className:"simulation-field",children:["Estado final",e.jsxs("select",{value:u.expectedEnded,onChange:k=>S(u.id,{expectedEnded:k.target.value}),children:[e.jsx("option",{value:"any",children:"Indiferente"}),e.jsx("option",{value:"false",children:"Deve continuar"}),e.jsx("option",{value:"true",children:"Deve encerrar"})]})]}),e.jsxs("label",{className:"simulation-checkbox-field",children:[e.jsx("input",{type:"checkbox",checked:u.allowErrors,onChange:k=>S(u.id,{allowErrors:k.target.checked})}),"Permitir erros no trace"]}),e.jsxs("label",{className:"simulation-field",children:["Slots iniciais JSON",e.jsx("textarea",{rows:3,value:u.slotsText,placeholder:`{
|
|
764
|
+
"cpf": "12345678909"
|
|
765
|
+
}`,onChange:k=>S(u.id,{slotsText:k.target.value})})]}),e.jsxs("label",{className:"simulation-field",children:["Aprovacoes JSON",e.jsx("textarea",{rows:3,value:u.approvalsText,placeholder:`{
|
|
766
|
+
"aprovacaoReembolso": "approved"
|
|
767
|
+
}`,onChange:k=>S(u.id,{approvalsText:k.target.value})})]})]})]},u.id))}):e.jsxs("div",{className:"simulation-json-editor",children:[e.jsxs("div",{className:"simulation-json-toolbar",children:[e.jsx("span",{children:"Use text, expectedContains, expectedSlots, expectedEnded, slots e approvals."}),e.jsxs("div",{children:[e.jsxs("button",{type:"button",onClick:ut,children:[e.jsx(Od,{size:15}),"Formatar"]}),e.jsxs("button",{type:"button",onClick:Ge,children:[e.jsx(rh,{size:15}),"Aplicar no visual"]})]})]}),e.jsx("textarea",{rows:12,value:hn,onChange:u=>To(u.target.value)})]})]})]}),go&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"dashboard-card-grid",children:[e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Total"}),e.jsx("strong",{children:Nn((Vo=go.summary)==null?void 0:Vo.total)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Passou"}),e.jsx("strong",{children:Nn((Js=go.summary)==null?void 0:Js.passed)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Falhou"}),e.jsx("strong",{children:Nn((pr=go.summary)==null?void 0:pr.failed)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Taxa"}),e.jsxs("strong",{children:[Nn(Number(((aa=go.summary)==null?void 0:aa.passRate)||0)*100,1),"%"]})]})]}),e.jsxs("div",{className:"dashboard-table-wrap",children:[e.jsxs("div",{className:"simulation-results-title",children:[e.jsx("strong",{children:"Resultados"}),e.jsxs("button",{type:"button",onClick:()=>Is(!0),children:[e.jsx(Pu,{size:15}),"Expandir tudo"]})]}),e.jsxs("table",{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"#"}),e.jsx("th",{children:"Status"}),e.jsx("th",{children:"Entrada"}),e.jsx("th",{children:"Ultima resposta"}),e.jsx("th",{children:"Checks"}),e.jsx("th",{children:"Detalhes"})]})}),e.jsx("tbody",{children:(go.results||[]).map(u=>{var y;return e.jsxs("tr",{children:[e.jsxs("td",{children:[u.index,u.name?` - ${u.name}`:""]}),e.jsx("td",{children:u.passed?"ok":"falhou"}),e.jsx("td",{children:u.text}),e.jsx("td",{children:((y=u.lastMessage)==null?void 0:y.text)||"-"}),e.jsx("td",{children:(u.checks||[]).map(k=>`${k.type}:${k.passed?"ok":"fail"}`).join(", ")||"-"}),e.jsx("td",{children:e.jsxs("button",{type:"button",className:"simulation-result-detail-button",onClick:()=>Hd(u),children:[e.jsx(Pu,{size:14}),"Abrir"]})})]},u.index)})})]})]})]})]})]})}),Wc&&go&&e.jsx("div",{className:"modal-backdrop simulation-results-backdrop",onClick:()=>Is(!1),children:e.jsxs("div",{className:"simulation-results-modal",onClick:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Resultados da simulacao"}),e.jsxs("span",{children:[Nn((rp=go.summary)==null?void 0:rp.total)," caso(s) - ",Nn(Number(((ud=go.summary)==null?void 0:ud.passRate)||0)*100,1),"% passou"]})]}),e.jsxs("div",{className:"debug-modal-actions",children:[e.jsxs("button",{type:"button",onClick:Xp,children:[e.jsx(Od,{size:16}),"Estado final"]}),e.jsxs("button",{type:"button",onClick:()=>Is(!1),children:[e.jsx(Vt,{size:16}),"Fechar"]})]})]}),e.jsx("div",{className:"simulation-results-modal-body",children:e.jsx("div",{className:"dashboard-table-wrap simulation-results-full-table",children:e.jsxs("table",{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"#"}),e.jsx("th",{children:"Status"}),e.jsx("th",{children:"Entrada"}),e.jsx("th",{children:"Ultima resposta"}),e.jsx("th",{children:"Checks"}),e.jsx("th",{children:"Contexto"})]})}),e.jsx("tbody",{children:(go.results||[]).map(u=>{var y;return e.jsxs("tr",{children:[e.jsxs("td",{children:[u.index,u.name?` - ${u.name}`:""]}),e.jsx("td",{children:u.passed?"ok":"falhou"}),e.jsx("td",{children:u.text}),e.jsx("td",{children:((y=u.lastMessage)==null?void 0:y.text)||"-"}),e.jsx("td",{children:(u.checks||[]).map(k=>`${k.type}:${k.passed?"ok":"fail"}`).join(", ")||"-"}),e.jsx("td",{children:e.jsxs("button",{type:"button",className:"simulation-result-detail-button",onClick:()=>Hd(u),children:[e.jsx(Pu,{size:14}),"Abrir"]})})]},`expanded-${u.index}`)})})]})})})]})}),qd&&e.jsx("div",{className:"modal-backdrop",onClick:()=>Mo(!1),children:e.jsxs("div",{className:"json-modal wide-modal tag-dashboard-modal",onClick:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"modal-header tag-dashboard-modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Dashboard"}),e.jsx("small",{children:"Métricas por tag e histórico das conversas do fluxo."})]}),e.jsxs("button",{onClick:()=>Mo(!1),children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("div",{className:"tag-dashboard-body",children:[e.jsxs("section",{className:"tag-dashboard-filter-panel",children:[e.jsxs("div",{className:"tag-dashboard-section-title",children:[e.jsx("strong",{children:"Filtros"}),e.jsx("span",{children:"Use uma ou várias tags separadas por vírgula."})]}),e.jsxs("div",{className:"tag-dashboard-filters",children:[e.jsxs("label",{children:["Data inicial",e.jsx("input",{type:"datetime-local",value:fo.dateFrom,onChange:u=>mi(y=>({...y,dateFrom:u.target.value}))})]}),e.jsxs("label",{children:["Data final",e.jsx("input",{type:"datetime-local",value:fo.dateTo,onChange:u=>mi(y=>({...y,dateTo:u.target.value}))})]}),e.jsxs("label",{className:"tag-dashboard-filter-wide",children:["Fluxo",e.jsxs("select",{value:fo.flowId,onChange:u=>mi(y=>({...y,flowId:u.target.value})),children:[e.jsx("option",{value:"",children:"Todos os fluxos"}),q.map(u=>e.jsx("option",{value:u._id,children:u.name},u._id))]})]}),e.jsxs("label",{children:["Conversa",e.jsx("input",{value:fo.conversationId,placeholder:"whatsapp-5511999999999",onChange:u=>mi(y=>({...y,conversationId:u.target.value}))})]}),e.jsxs("label",{className:"tag-dashboard-filter-wide",children:["Tags",e.jsx("input",{value:fo.tags,placeholder:"lead_qualificado, conversao, abandono",onChange:u=>mi(y=>({...y,tags:u.target.value}))}),e.jsxs("span",{className:"field-hint",children:["Exemplo: ",e.jsx("code",{children:"lead_qualificado, agendamento_confirmado"})]}),yf(fo.tags).length>0&&e.jsx("div",{className:"tag-filter-chips",children:yf(fo.tags).map(u=>e.jsx("span",{children:u},u))})]}),e.jsxs("label",{children:["Limite de eventos",e.jsx("input",{type:"number",min:1,max:500,value:fo.limit,onChange:u=>mi(y=>({...y,limit:Number(u.target.value)||100}))})]}),e.jsx("div",{className:"tag-dashboard-filter-actions",children:e.jsxs("button",{className:"primary-button tag-dashboard-filter-button",onClick:()=>void Il(),disabled:Ts,children:[Ts?e.jsx(Ut,{size:16,className:"spin"}):e.jsx(Oc,{size:16}),"Filtrar"]})})]})]}),e.jsxs("div",{className:"tag-dashboard-tabs",children:[e.jsx("button",{className:as==="dashboard"?"active":"",onClick:()=>Kl("dashboard"),children:"Dashboard"}),e.jsx("button",{className:as==="insights"?"active":"",onClick:()=>Kl("insights"),children:"Insights"}),e.jsx("button",{className:as==="trace"?"active":"",onClick:()=>Kl("trace"),children:"Dados do trace"}),e.jsx("button",{className:as==="history"?"active":"",onClick:()=>Kl("history"),children:"Histórico de mensagens"})]}),Jl&&e.jsx("div",{className:"api-warning",children:Jl}),Wt&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"dashboard-card-grid",children:[e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Eventos"}),e.jsx("strong",{children:String(((dd=Wt.summary)==null?void 0:dd.total)||0)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Conversas"}),e.jsx("strong",{children:String(((wm=Wt.summary)==null?void 0:wm.conversations)||0)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Tags"}),e.jsx("strong",{children:String(((Ks=Wt.summary)==null?void 0:Ks.tags)||0)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Fluxos"}),e.jsx("strong",{children:String(((sp=Wt.summary)==null?void 0:sp.flows)||0)})]})]}),as==="dashboard"&&e.jsxs("div",{className:"tag-dashboard-tab-panel",children:[e.jsxs("div",{className:"tag-dashboard-view-toolbar",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Tags mais usadas"}),e.jsx("span",{children:"Escolha como visualizar a distribuição dos eventos."})]}),e.jsxs("div",{className:"tag-dashboard-view-toggle",role:"group","aria-label":"Formato do dashboard de tags",children:[e.jsxs("button",{className:hi==="table"?"active":"",onClick:()=>Ql("table"),children:[e.jsx(RS,{size:15}),"Tabela"]}),e.jsxs("button",{className:hi==="bar"?"active":"",onClick:()=>Ql("bar"),children:[e.jsx(xh,{size:15}),"Barras"]}),e.jsxs("button",{className:hi==="pie"?"active":"",onClick:()=>Ql("pie"),children:[e.jsx(wS,{size:15}),"Pizza"]}),e.jsxs("button",{className:hi==="line"?"active":"",onClick:()=>Ql("line"),children:[e.jsx(Rx,{size:15}),"Gráfico"]})]})]}),hi==="table"?e.jsxs("div",{className:"dashboard-table-wrap",children:[e.jsx("strong",{children:"Tags mais usadas"}),e.jsxs("table",{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Tag"}),e.jsx("th",{children:"Eventos"}),e.jsx("th",{children:"Conversas"})]})}),e.jsx("tbody",{children:(Wt.byTag||[]).length>0?(Wt.byTag||[]).map(u=>e.jsxs("tr",{children:[e.jsx("td",{children:u.tag}),e.jsx("td",{children:u.count}),e.jsx("td",{children:u.conversations})]},u.tag)):e.jsx("tr",{children:e.jsx("td",{colSpan:3,children:"Nenhuma tag encontrada para os filtros atuais."})})})]})]}):e.jsx(_A,{mode:hi,series:bm}),e.jsxs("div",{className:"dashboard-table-wrap tag-dashboard-events-table",children:[e.jsx("strong",{children:"Eventos recentes"}),e.jsxs("table",{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Data"}),e.jsx("th",{children:"Tag"}),e.jsx("th",{children:"Nó"}),e.jsx("th",{children:"Fluxo"}),e.jsx("th",{children:"Conversa"}),e.jsx("th",{children:"Valor"})]})}),e.jsx("tbody",{children:(Wt.events||[]).map(u=>e.jsxs("tr",{children:[e.jsx("td",{children:u.createdAt?new Date(u.createdAt).toLocaleString("pt-BR"):""}),e.jsx("td",{children:u.tag}),e.jsx("td",{children:u.stepTitle||u.stepId}),e.jsx("td",{children:u.flowName||u.flowId}),e.jsx("td",{children:u.conversationId}),e.jsx("td",{children:typeof u.value=="object"?JSON.stringify(u.value):String(u.value??"")})]},u._id))})]})]})]}),as==="insights"&&e.jsxs("div",{className:"tag-dashboard-tab-panel",children:[e.jsxs("div",{className:"dashboard-card-grid",children:[e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Mensagens"}),e.jsx("strong",{children:Nn((pd=$i.summary)==null?void 0:pd.totalMessages)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Usuarios"}),e.jsx("strong",{children:Nn((Ui=$i.summary)==null?void 0:Ui.userMessages)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Media por conversa"}),e.jsx("strong",{children:Nn((md=$i.summary)==null?void 0:md.avgMessagesPerConversation,1)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Conversas longas"}),e.jsx("strong",{children:Nn((qi=$i.summary)==null?void 0:qi.longConversations)})]})]}),e.jsxs("div",{className:"tag-dashboard-insight-grid",children:[e.jsx(Cd,{title:"Acesso por fluxo",subtitle:"Mensagens registradas",series:ap,emptyText:"Nenhum dado de mensagem encontrado para os filtros atuais."}),e.jsx(Cd,{title:"Canais",subtitle:"Origem das conversas",series:dr,emptyText:"Nenhum canal encontrado para os filtros atuais."})]}),e.jsxs("div",{className:"dashboard-table-wrap",children:[e.jsx("strong",{children:"Conversas com mais friccao"}),e.jsxs("table",{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Conversa"}),e.jsx("th",{children:"Mensagens"}),e.jsx("th",{children:"Usuario"}),e.jsx("th",{children:"Assistente"}),e.jsx("th",{children:"Ultima interacao"})]})}),e.jsx("tbody",{children:($i.topConversations||[]).length>0?($i.topConversations||[]).map(u=>e.jsxs("tr",{children:[e.jsx("td",{children:u.conversationId}),e.jsx("td",{children:u.messages}),e.jsx("td",{children:u.userMessages}),e.jsx("td",{children:u.assistantMessages}),e.jsx("td",{children:u.lastAt?new Date(u.lastAt).toLocaleString("pt-BR"):""})]},u.conversationId)):e.jsx("tr",{children:e.jsx("td",{colSpan:5,children:"Nenhuma conversa encontrada para os filtros atuais."})})})]})]})]}),as==="trace"&&e.jsxs("div",{className:"tag-dashboard-tab-panel",children:[e.jsxs("div",{className:"dashboard-card-grid",children:[e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Execucoes"}),e.jsx("strong",{children:Nn((ip=Wr.summary)==null?void 0:ip.runs)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Eventos de trace"}),e.jsx("strong",{children:Nn((lp=Wr.summary)==null?void 0:lp.totalEvents)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Erros"}),e.jsx("strong",{children:Nn((hd=Wr.summary)==null?void 0:hd.errorCount)})]}),e.jsxs("div",{className:"dashboard-card",children:[e.jsx("span",{children:"Nos tocados"}),e.jsx("strong",{children:Nn((Eu=Wr.summary)==null?void 0:Eu.nodesTouched)})]})]}),e.jsxs("div",{className:"tag-dashboard-insight-grid",children:[e.jsx(Cd,{title:"Nos mais acessados",subtitle:"Contagem por step",series:At,emptyText:"Nenhum dado de no encontrado no trace."}),e.jsx(Cd,{title:"Chamadas e componentes",subtitle:"Eventos por tipo",series:co,emptyText:"Nenhuma chamada registrada no trace."})]}),e.jsxs("div",{className:"dashboard-table-wrap",children:[e.jsx("strong",{children:"Erros recentes do trace"}),e.jsxs("table",{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Data"}),e.jsx("th",{children:"Tipo"}),e.jsx("th",{children:"No"}),e.jsx("th",{children:"Conversa"}),e.jsx("th",{children:"Mensagem"})]})}),e.jsx("tbody",{children:(Wr.errors||[]).length>0?(Wr.errors||[]).map((u,y)=>e.jsxs("tr",{children:[e.jsx("td",{children:u.createdAt?new Date(u.createdAt).toLocaleString("pt-BR"):""}),e.jsx("td",{children:u.type}),e.jsx("td",{children:u.stepId||"-"}),e.jsx("td",{children:u.conversationId||"-"}),e.jsx("td",{children:u.message})]},`${u.conversationId||"trace"}-${y}`)):e.jsx("tr",{children:e.jsx("td",{colSpan:5,children:"Nenhum erro de trace encontrado para os filtros atuais."})})})]})]})]}),as==="history"&&e.jsxs("div",{className:"tag-dashboard-history-panel",children:[e.jsxs("div",{className:"tag-dashboard-pagination",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Histórico de mensagens"}),e.jsx("span",{children:Di>0?`Mostrando ${ym}-${jm} de ${Di}`:"Nenhuma mensagem encontrada"})]}),e.jsxs("div",{className:"tag-dashboard-page-controls",children:[e.jsxs("label",{children:["Por página",e.jsxs("select",{value:rs,onChange:u=>void lu(Number(u.target.value)),disabled:Ts,children:[e.jsx("option",{value:20,children:"20"}),e.jsx("option",{value:50,children:"50"}),e.jsx("option",{value:100,children:"100"}),e.jsx("option",{value:200,children:"200"})]})]}),e.jsx("button",{onClick:()=>void Fi(Li-1),disabled:Ts||Li<=1,children:"Anterior"}),e.jsxs("span",{children:["Página ",Li," de ",op]}),e.jsx("button",{onClick:()=>void Fi(Li+1),disabled:Ts||Li>=op||Di===0,children:"Próxima"})]})]}),e.jsx("div",{className:"dashboard-table-wrap tag-dashboard-history-table",children:e.jsxs("table",{children:[e.jsxs("colgroup",{children:[e.jsx("col",{className:"history-date-col"}),e.jsx("col",{className:"history-conversation-col"}),e.jsx("col",{className:"history-role-col"}),e.jsx("col",{className:"history-message-col"})]}),e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Data"}),e.jsx("th",{children:"Conversa"}),e.jsx("th",{children:"Papel"}),e.jsx("th",{children:"Mensagem"})]})}),e.jsx("tbody",{children:(Wt.history||[]).length>0?(Wt.history||[]).map(u=>e.jsxs("tr",{children:[e.jsx("td",{children:u.createdAt?new Date(u.createdAt).toLocaleString("pt-BR"):""}),e.jsx("td",{children:u.conversationId}),e.jsx("td",{children:u.role}),e.jsx("td",{children:u.content})]},u._id)):e.jsx("tr",{children:e.jsx("td",{colSpan:4,children:"Nenhuma mensagem encontrada para os filtros atuais."})})})]})})]})]})]})]})}),ne&&e.jsx("div",{className:"modal-backdrop",onMouseDown:()=>ae(!1),children:e.jsxs("div",{className:"agents-modal",onMouseDown:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Agentes"}),e.jsx("span",{children:"Escolha o agente antes de criar ou editar fluxos."})]}),e.jsxs("button",{"aria-label":"Fechar",onClick:()=>ae(!1),children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("div",{className:"agents-body",children:[e.jsxs("div",{className:"component-search",children:[e.jsx(Oc,{size:16}),e.jsx("input",{value:M,placeholder:"Filtrar agente",onChange:u=>ee(u.target.value)})]}),e.jsxs("div",{className:"agent-create-row",children:[e.jsx("input",{value:H,placeholder:"Novo agente, ex: clinica-medica",onChange:u=>se(u.target.value),onKeyDown:u=>{u.key==="Enter"&&fm()}}),e.jsxs("button",{type:"button",className:"primary-button",onClick:()=>void fm(),disabled:oe||!H.trim(),children:[e.jsx(un,{size:16}),"Criar agente"]})]}),ye&&e.jsx("div",{className:"auth-error",children:ye}),e.jsxs("div",{className:"agent-grid",children:[oe&&gl.length===0&&e.jsx("div",{className:"component-empty",children:"Carregando agentes..."}),!oe&&gl.length===0&&e.jsx("div",{className:"component-empty",children:"Nenhum agente encontrado."}),gl.map(u=>{const y=qo(u),k=Qs(u),B=y===Ee,te=G===y;return e.jsxs("div",{className:`agent-card ${B?"active":""} ${O===y?"dragging":""} ${ge===y&&O!==y?"drag-over":""}`,role:"button",tabIndex:te?-1:0,"aria-current":B?"true":void 0,title:B?"Agente atual":`Entrar no agente ${k}`,onDragOver:ue=>{!O||O===y||(ue.preventDefault(),ue.dataTransfer.dropEffect="move",be(y))},onDrop:ue=>{O&&(ue.preventDefault(),ue.stopPropagation(),xu(O,y),ve(""),be(""))},onClick:()=>{!te&&(!B||It)&&gu(y)},onKeyDown:ue=>{te||(ue.key==="Enter"||ue.key===" ")&&(ue.preventDefault(),(!B||It)&&gu(y))},children:[e.jsx("div",{className:"agent-card-icon",children:e.jsx(Ho,{size:20})}),e.jsxs("div",{className:"agent-card-main",children:[te?e.jsx("input",{value:K,autoFocus:!0,onChange:ue=>P(ue.target.value),onKeyDown:ue=>{ue.key==="Enter"&&vu(),ue.key==="Escape"&&(V(""),P(""))}}):e.jsx("strong",{children:k}),e.jsxs("small",{children:["ID: ",y]}),e.jsxs("span",{children:[u.flowCount||0," fluxo",Number(u.flowCount||0)===1?"":"s"]})]}),e.jsx("div",{className:"agent-card-actions",children:te?e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",title:"Salvar nome",onClick:ue=>{ue.stopPropagation(),vu()},disabled:oe,children:e.jsx(Ji,{size:15})}),e.jsx("button",{type:"button",title:"Cancelar",onClick:ue=>{ue.stopPropagation(),V(""),P("")},children:e.jsx(Vt,{size:15})})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"drag-handle",title:"Arraste para ordenar",draggable:!oe&&!fe,onClick:ue=>ue.stopPropagation(),onDragStart:ue=>{ue.stopPropagation(),ue.dataTransfer.effectAllowed="move",ue.dataTransfer.setData("text/plain",y),ve(y),be("")},onDragEnd:()=>{ve(""),be("")},children:e.jsx(uf,{size:15})}),e.jsx("button",{type:"button",title:"Configurar Agent OS",onClick:ue=>{ue.stopPropagation(),hm(u)},children:e.jsx(Zs,{size:15})}),e.jsx("button",{type:"button",title:"Editar nome",onClick:ue=>{ue.stopPropagation(),Rh(u)},children:e.jsx(Tc,{size:15})}),e.jsx("button",{type:"button",className:"danger-button",title:"Excluir agente",onClick:ue=>{ue.stopPropagation(),Bo(u)},children:e.jsx(Nt,{size:15})})]})})]},y)})]})]}),e.jsxs("div",{className:"modal-actions agent-order-actions",children:[e.jsx("button",{type:"button",onClick:()=>ae(!1),children:"Fechar"}),e.jsxs("button",{className:"primary-button",type:"button",onClick:()=>void $o(),disabled:fe||ds.length===0,children:[fe?e.jsx(Ut,{size:15,className:"spin"}):e.jsx(Rl,{size:15}),"Salvar ordem"]})]})]})}),Ce&&e.jsx("div",{className:"modal-backdrop",onMouseDown:()=>$(null),children:e.jsxs("div",{className:"agent-delete-modal",onMouseDown:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"confirm-body",children:[e.jsx("div",{className:"confirm-icon",children:e.jsx(Vm,{size:20})}),e.jsxs("div",{children:[e.jsx("strong",{children:"Excluir agente?"}),e.jsxs("p",{children:["Esta acao remove o agente ",e.jsx("code",{children:Qs(Ce)})," e todos os ",Ce.flowCount||0," fluxo",Number(Ce.flowCount||0)===1?"":"s"," dele. Para confirmar, digite o nome exato do agente."]})]})]}),e.jsxs("label",{className:"agent-delete-confirm",children:["Nome do agente",e.jsx("input",{value:z,autoFocus:!0,placeholder:Qs(Ce),onChange:u=>Z(u.target.value),onKeyDown:u=>{u.key==="Enter"&&gm(),u.key==="Escape"&&$(null)}})]}),e.jsxs("div",{className:"modal-actions",children:[e.jsx("button",{type:"button",onClick:()=>{$(null),Z("")},children:"Cancelar"}),e.jsxs("button",{type:"button",className:"danger-button",onClick:()=>void gm(),disabled:oe||z.trim()!==Qs(Ce),children:[e.jsx(Nt,{size:16}),"Excluir agente"]})]})]})}),Yr&&e.jsx("div",{className:"modal-backdrop",onClick:()=>ai(!1),children:e.jsxs("div",{className:"api-modal",onClick:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsx("strong",{children:"Consumir API do fluxo"}),e.jsxs("button",{onClick:()=>ai(!1),children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("div",{className:"api-docs",children:[!f&&e.jsxs("div",{className:"api-warning",children:["Salve o fluxo para gerar um ",e.jsx("strong",{children:"flowId"})," real. Enquanto isso o exemplo usa"," ",e.jsx("code",{children:"<FLOW_ID_SALVO>"}),"."]}),e.jsxs("div",{className:"api-endpoint",children:[e.jsx("span",{children:"Endpoint"}),e.jsx("code",{children:Lt.endpoint})]}),e.jsxs("div",{className:"api-warning",children:["Use o ",e.jsx("strong",{children:"agentId estavel"})," no payload:"," ",e.jsx("code",{children:vo}),us!==vo?e.jsxs(e.Fragment,{children:[" ",e.jsx("span",{children:"Nome exibido: "}),e.jsx("code",{children:us}),"."]}):null]}),e.jsxs("div",{className:"api-doc-section",children:[e.jsxs("div",{className:"api-doc-section-header",children:[e.jsx("strong",{children:"Autenticação"}),e.jsxs("button",{onClick:()=>navigator.clipboard.writeText(Lt.auth),children:[e.jsx(nn,{size:15}),"Copiar"]})]}),e.jsx("pre",{children:Lt.auth})]}),e.jsxs("div",{className:"api-doc-section",children:[e.jsxs("div",{className:"api-doc-section-header",children:[e.jsx("strong",{children:"Payload base"}),e.jsxs("button",{onClick:()=>navigator.clipboard.writeText(Lt.payloadJson),children:[e.jsx(nn,{size:15}),"Copiar"]})]}),e.jsx("pre",{children:Lt.payloadJson})]}),e.jsxs("div",{className:"api-doc-section",children:[e.jsxs("div",{className:"api-doc-section-header",children:[e.jsx("strong",{children:"cURL"}),e.jsxs("button",{onClick:()=>navigator.clipboard.writeText(Lt.curl),children:[e.jsx(nn,{size:15}),"Copiar"]})]}),e.jsx("pre",{children:Lt.curl})]}),e.jsxs("div",{className:"api-doc-section",children:[e.jsxs("div",{className:"api-doc-section-header",children:[e.jsx("strong",{children:"JavaScript"}),e.jsxs("button",{onClick:()=>navigator.clipboard.writeText(Lt.javascript),children:[e.jsx(nn,{size:15}),"Copiar"]})]}),e.jsx("pre",{children:Lt.javascript})]}),e.jsxs("div",{className:"api-doc-section",children:[e.jsxs("div",{className:"api-doc-section-header",children:[e.jsx("strong",{children:"Web widget"}),e.jsxs("button",{onClick:()=>navigator.clipboard.writeText(Lt.widget),children:[e.jsx(nn,{size:15}),"Copiar"]})]}),e.jsx("pre",{children:Lt.widget})]}),e.jsxs("div",{className:"api-doc-section",children:[e.jsxs("div",{className:"api-doc-section-header",children:[e.jsx("strong",{children:"WhatsApp adapter"}),e.jsxs("button",{onClick:()=>navigator.clipboard.writeText(Lt.whatsapp),children:[e.jsx(nn,{size:15}),"Copiar"]})]}),e.jsx("pre",{children:Lt.whatsapp})]}),e.jsxs("div",{className:"api-doc-section",children:[e.jsxs("div",{className:"api-doc-section-header",children:[e.jsx("strong",{children:"Flow-to-MCP"}),e.jsxs("button",{onClick:()=>navigator.clipboard.writeText(Lt.mcp),children:[e.jsx(nn,{size:15}),"Copiar"]})]}),e.jsx("pre",{children:Lt.mcp})]})]})]})}),Vl&&e.jsx("div",{className:"modal-backdrop",onMouseDown:()=>Zr(!1),children:e.jsxs("div",{className:"api-keys-modal",onMouseDown:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsx("strong",{children:"API Keys"}),e.jsxs("button",{"aria-label":"Fechar",onClick:()=>Zr(!1),children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsx(YS,{flowId:f||void 0,flowName:r,agentId:Sn})]})}),Xn&&e.jsx("div",{className:"modal-backdrop",onMouseDown:()=>mo(!1),children:e.jsxs("div",{className:"flow-order-modal",onMouseDown:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Fluxos do agente"}),e.jsx("span",{children:Ee})]}),e.jsxs("button",{"aria-label":"Fechar",onClick:()=>mo(!1),children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("div",{className:"flow-order-body",children:[e.jsxs("div",{className:"component-search",children:[e.jsx(Oc,{size:16}),e.jsx("input",{value:di,placeholder:"Filtrar fluxo",onChange:u=>ao(u.target.value)})]}),e.jsxs("div",{className:"flow-create-row",children:[e.jsx("input",{value:ka,placeholder:"Novo fluxo, ex: boas-vindas",onChange:u=>Vc(u.target.value),onKeyDown:u=>{u.key==="Enter"&&Zp()}}),e.jsxs("button",{type:"button",className:"primary-button",onClick:()=>void Zp(),disabled:ns||!ka.trim(),children:[e.jsx(un,{size:16}),"Criar fluxo"]})]}),Gl&&e.jsx("div",{className:"auth-error",children:Gl}),e.jsxs("div",{className:"flow-grid",children:[Ea&&Ya.length===0&&e.jsx("div",{className:"component-empty",children:"Carregando fluxos..."}),!Ea&&Ya.length===0&&e.jsx("div",{className:"component-empty",children:"Nenhum fluxo salvo."}),!Ea&&Ya.length>0&&_a.length===0&&e.jsx("div",{className:"component-empty",children:"Nenhum fluxo encontrado."}),_a.map(({flow:u,index:y})=>{var te,ue;const k=u._id===f,B=Vd===u._id;return e.jsxs("div",{className:`flow-card ${k?"active":""} ${pi===u._id?"dragging":""} ${Ud===u._id&&pi!==u._id?"drag-over":""}`,role:"button",tabIndex:B?-1:0,"aria-current":k?"true":void 0,title:k?"Fluxo atual":`Abrir fluxo ${u.name}`,onDragOver:pe=>{!pi||pi===u._id||(pe.preventDefault(),pe.dataTransfer.dropEffect="move",sl(u._id))},onDrop:pe=>{pi&&(pe.preventDefault(),pe.stopPropagation(),wc(pi,u._id),Uc(""),sl(""))},onClick:()=>{B||Yu(u)},onKeyDown:pe=>{B||(pe.key==="Enter"||pe.key===" ")&&(pe.preventDefault(),Yu(u))},children:[e.jsx("span",{className:"flow-card-index",children:y+1}),e.jsxs("div",{className:"flow-card-main",children:[B?e.jsx("input",{value:Uu,autoFocus:!0,onClick:pe=>pe.stopPropagation(),onChange:pe=>os(pe.target.value),onKeyDown:pe=>{pe.key==="Enter"&&Jd(u),pe.key==="Escape"&&(kr(""),os(""))}}):e.jsx("strong",{children:u.name}),e.jsx("span",{children:((te=u.config)==null?void 0:te.title)||((ue=u.config)==null?void 0:ue.responseName)||"Fluxo salvo"})]}),e.jsx("div",{className:"flow-card-actions",children:B?e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",title:"Salvar nome",onClick:pe=>{pe.stopPropagation(),Jd(u)},disabled:ns,children:e.jsx(Ji,{size:15})}),e.jsx("button",{type:"button",title:"Cancelar",onClick:pe=>{pe.stopPropagation(),kr(""),os("")},children:e.jsx(Vt,{size:15})})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"drag-handle",title:"Arraste para ordenar",draggable:!ns,onClick:pe=>pe.stopPropagation(),onDragStart:pe=>{pe.stopPropagation(),pe.dataTransfer.effectAllowed="move",pe.dataTransfer.setData("text/plain",u._id),Uc(u._id),sl("")},onDragEnd:()=>{Uc(""),sl("")},children:e.jsx(uf,{size:15})}),e.jsx("button",{type:"button",title:"Editar nome",onClick:pe=>{pe.stopPropagation(),em(u)},children:e.jsx(Tc,{size:15})}),e.jsx("button",{type:"button",className:"danger-button",title:"Excluir fluxo",onClick:pe=>{pe.stopPropagation(),nm(u)},children:e.jsx(Nt,{size:15})})]})})]},u._id)})]})]}),e.jsxs("div",{className:"modal-actions flow-order-actions",children:[e.jsx("button",{onClick:()=>mo(!1),children:"Cancelar"}),e.jsxs("button",{className:"primary-button",onClick:()=>void Gd(),disabled:ns||Ya.length===0,children:[ns?e.jsx(Ut,{size:15,className:"spin"}):e.jsx(Rl,{size:15}),"Salvar ordem"]})]})]})}),he&&e.jsx(GS,{agentId:Sn,agentName:us,config:{model:t.model,llmProvider:t.llmProvider||"openai",agentSpec:t.agentSpec},providerOptions:df,modelOptions:zx(t.llmProvider||"openai",t.model),saving:at,workspaceBusy:ht,error:Et,message:Pe,onChange:u=>{Ze(""),wl(u)},onSave:()=>void lr(),onExportWorkspace:()=>void Sl(),onImportWorkspace:u=>void Zc(u),onClose:()=>Be(!1),onOpenProviders:()=>{Be(!1),Ja(!0)},onOpenAgentOps:()=>{Be(!1),jc()}}),ua&&e.jsx("div",{className:"modal-backdrop",onMouseDown:()=>Ja(!1),children:e.jsxs("div",{className:"provider-config-modal",onMouseDown:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsx("strong",{children:"Provedores"}),e.jsxs("button",{"aria-label":"Fechar",onClick:()=>Ja(!1),children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsx(Yk,{agentId:fn?void 0:Sn,flowId:f||void 0,flowName:r,onClose:()=>Ja(!1)})]})}),da&&e.jsx("div",{className:"modal-backdrop",onMouseDown:fu,children:e.jsxs("div",{className:"confirm-modal",onMouseDown:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"confirm-body",children:[e.jsx("div",{className:"confirm-icon primary",children:e.jsx(Tc,{size:20})}),e.jsxs("div",{children:[e.jsxs("strong",{children:["Renomear ",da.kind==="agent"?`r${da.version}`:`v${da.version}`]}),e.jsx("p",{children:"Use nomes como dev, hml ou prd para identificar melhor cada versão."})]})]}),e.jsxs("label",{className:"confirm-text-input",children:[e.jsx("span",{children:"Nome da versão"}),e.jsx("input",{value:Hl,autoFocus:!0,placeholder:da.kind==="agent"?"Ex: hml agente":"Ex: hml",onChange:u=>ol(u.target.value),onKeyDown:u=>{u.key==="Enter"&&nd(),u.key==="Escape"&&fu()}})]}),Ms&&e.jsx("div",{className:"api-warning flow-transfer-error",children:Ms}),e.jsxs("div",{className:"modal-actions",children:[e.jsx("button",{onClick:fu,children:"Cancelar"}),e.jsxs("button",{className:"primary-button",onClick:()=>void nd(),disabled:Xo||!Hl.trim(),children:[Xo?e.jsx(Ut,{size:16,className:"spin"}):e.jsx(Rl,{size:16}),"Salvar nome"]})]})]})}),Mt&&e.jsx("div",{className:"modal-backdrop",onMouseDown:hu,children:e.jsxs("div",{className:"confirm-modal version-overwrite-modal",onMouseDown:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"confirm-body",children:[e.jsx("div",{className:"confirm-icon",children:e.jsx(Vm,{size:20})}),e.jsxs("div",{children:[e.jsxs("strong",{children:["Publicar ",Mt.kind==="agent"?`r${Mt.version}`:`v${Mt.version}`]}),e.jsx("p",{children:Mt.kind==="agent"?"Escolha se esta versão do agente será atualizada com as últimas versões criadas dos fluxos ou por outra versão do agente.":"Escolha se esta versão do fluxo será publicada com o rascunho atual do editor ou substituída por outra versão do fluxo."})]})]}),Mt.isActive&&e.jsx("div",{className:"api-warning flow-transfer-error",children:"Esta versão está ativa. Publicar nela altera o que os clientes recebem."}),e.jsxs("label",{className:"confirm-text-input",children:[e.jsx("span",{children:Mt.kind==="agent"?"Origem da atualização":"Origem da publicação"}),e.jsxs("select",{value:tt,onChange:u=>{Bc(u.target.value),Yn(""),li("")},children:[e.jsx("option",{value:"draft",children:Mt.kind==="agent"?"Últimas versões criadas dos fluxos":"Rascunho atual do editor"}),e.jsx("option",{value:"version",children:Mt.kind==="agent"?"Outra versão do agente":"Outra versão do fluxo"})]})]}),tt==="version"&&e.jsxs("label",{className:"confirm-text-input",children:[e.jsx("span",{children:"Versão de origem"}),e.jsxs("select",{value:uc,onChange:u=>{Yn(u.target.value),li("")},disabled:!$r.length,children:[!$r.length&&e.jsx("option",{value:"",children:"Nenhuma versão disponível"}),$r.map(u=>{const y=Mt.kind==="agent"?u.release:u.version,k=Mt.kind==="agent"?`r${y}`:`v${y}`;return e.jsxs("option",{value:String(y),children:[k,u.name?` - ${u.name}`:""]},k)})]})]}),Na&&e.jsx("div",{className:"api-warning flow-transfer-error",children:Na}),e.jsxs("div",{className:"modal-actions",children:[e.jsx("button",{onClick:hu,children:"Cancelar"}),e.jsxs("button",{className:"danger-button",onClick:()=>void um(),disabled:$t||Yc,children:[$t?e.jsx(Ut,{size:16,className:"spin"}):e.jsx(Ic,{size:16}),"Publicar"]})]})]})}),Xt&&e.jsx("div",{className:"modal-backdrop",onMouseDown:()=>Gt(null),children:e.jsxs("div",{className:"confirm-modal",onMouseDown:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"confirm-body",children:[e.jsx("div",{className:"confirm-icon",children:e.jsx(Vm,{size:20})}),e.jsxs("div",{children:[e.jsx("strong",{children:Xt.title}),e.jsx("p",{children:Xt.message})]})]}),Xt.confirmationText&&e.jsxs("label",{className:"confirm-text-input",children:[e.jsx("span",{children:Xt.confirmationPrompt||`Digite ${Xt.confirmationText} para confirmar.`}),e.jsx("input",{value:Ci,autoFocus:!0,onChange:u=>pl(u.target.value),onKeyDown:u=>{if(u.key==="Enter"&&Ci.trim()===Xt.confirmationText){const y=Xt;Gt(null),y.onConfirm()}}})]}),e.jsxs("div",{className:"modal-actions",children:[e.jsx("button",{onClick:()=>Gt(null),children:"Cancelar"}),e.jsxs("button",{className:Xt.variant==="primary"?"primary-button":"danger-button",disabled:!!(Xt.confirmationText&&Ci.trim()!==Xt.confirmationText),onClick:()=>{const u=Xt;Gt(null),u.onConfirm()},children:[Xt.confirmLabel.toLowerCase().startsWith("ativar")?e.jsx(Ji,{size:16}):Xt.variant==="primary"?e.jsx(Rl,{size:16}):Xt.confirmLabel.toLowerCase().startsWith("excluir")?e.jsx(Nt,{size:16}):e.jsx(Ic,{size:16}),Xt.confirmLabel]})]})]})})]})})}function dE({children:t}){const[n,r]=b.useState(!0),[s,l]=b.useState(KS),[p,m]=b.useState(!0),[h,f]=b.useState("login"),[x,j]=b.useState(null),[w,N]=b.useState(""),[C,E]=b.useState(""),[T,R]=b.useState(""),[D,q]=b.useState(""),[I,F]=b.useState(""),[Y,ne]=b.useState(""),[ae,oe]=b.useState(!1),[Q,fe]=b.useState(!1),[xe,ye]=b.useState(!1),[le,M]=b.useState(""),[ee,H]=b.useState(""),[se,G]=b.useState(""),[V,K]=b.useState("member"),[P,O]=b.useState(""),[ve,ge]=b.useState(""),[be,Ce]=b.useState(!1),[$,z]=b.useState(!1),[Z,he]=b.useState(""),[Be,at]=b.useState(""),[gt,ht]=b.useState(""),[mt,Et]=b.useState(""),[Ye,Pe]=b.useState(""),[Ze,Ct]=b.useState(""),[re,we]=b.useState(!1);b.useEffect(()=>{let Fe=!0;return(async()=>{try{const rt=await Oe.authConfig();if(!Fe)return;if(l(rt.loginRequired),m(rt.hasUsers),f(rt.hasUsers?"login":"createOrg"),!rt.loginRequired){r(!1);return}try{const pn=await Oe.me();Fe&&j(pn.user)}catch{Jm("")}}catch(rt){Fe&&ne(rt instanceof TypeError?"Nao foi possivel conectar ao backend.":rt instanceof Error?rt.message:"Falha ao carregar login.")}finally{Fe&&r(!1)}})(),()=>{Fe=!1}},[]);const Me=async Fe=>{Fe.preventDefault(),oe(!0),ne("");try{const rt=!p||h==="createOrg"?p?await Oe.createOrganization({organizationName:w,organizationSlug:C,name:T,email:D,password:I}):await Oe.bootstrap({organizationName:w,organizationSlug:C,name:T,email:D,password:I}):await Oe.login({email:D,password:I,organizationSlug:C});Jm(rt.token),j(rt.user),m(!0),f("login"),F("")}catch(Te){ne(Te instanceof TypeError?"Nao foi possivel conectar ao backend.":Te instanceof Error?Te.message:"Nao foi possivel entrar.")}finally{oe(!1)}},et=()=>{Jm(""),j(null),fe(!1),ye(!1),z(!1),f("login"),F("")},it=()=>{et(),E(""),ne("")},qe=()=>{fe(!1),he(""),at(""),ht((x==null?void 0:x.name)||""),Et((x==null?void 0:x.email)||""),Pe(""),Ct(""),z(!0)},Re=async Fe=>{Fe.preventDefault(),we(!0),Ct("");try{const Te=await Oe.createOrganization({organizationName:Z,organizationSlug:Be,name:gt,email:mt,password:Ye});Jm(Te.token),j(Te.user),m(!0),z(!1),Pe("")}catch(Te){Ct(Te instanceof TypeError?"Nao foi possivel conectar ao backend.":Te instanceof Error?Te.message:"Nao foi possivel criar a organizacao.")}finally{we(!1)}},ot=async Fe=>{Fe.preventDefault(),Ce(!0),ge(""),O("");try{const Te=await Oe.createOrganizationUser({name:le,email:ee,password:se,role:V});M(""),H(""),G(""),K("member"),O(`Usuario ${Te.email} criado na organizacao.`)}catch(Te){ge(Te instanceof Error?Te.message:"Nao foi possivel criar o usuario.")}finally{Ce(!1)}};if(n)return e.jsx("div",{className:"auth-shell",children:e.jsx(Ut,{className:"spin",size:22})});if(!s)return e.jsx(e.Fragment,{children:t});if(x){const Fe=x.role==="owner"||x.role==="admin";return e.jsxs(e.Fragment,{children:[t,e.jsxs("div",{className:"auth-session-menu",onBlur:Te=>{Te.currentTarget.contains(Te.relatedTarget)||fe(!1)},children:[e.jsxs("button",{type:"button",className:"auth-session-button",onClick:()=>fe(Te=>!Te),children:[e.jsx(Bm,{size:15}),e.jsx("span",{children:x.organizationSlug||x.organizationName})]}),Q&&e.jsxs("div",{className:"auth-session-dropdown",children:[e.jsxs("div",{className:"auth-session-user",children:[e.jsx("strong",{children:x.name||x.email}),e.jsx("span",{children:x.email}),e.jsxs("small",{children:[x.organizationName," - ",x.role]})]}),e.jsxs("button",{type:"button",onClick:qe,children:[e.jsx(Bm,{size:15}),"Nova organizacao"]}),Fe&&e.jsxs("button",{type:"button",onClick:()=>{fe(!1),ye(!0)},children:[e.jsx(Fx,{size:15}),"Novo usuario"]}),e.jsxs("button",{type:"button",onClick:it,children:[e.jsx(Bm,{size:15}),"Trocar organizacao"]}),e.jsxs("button",{type:"button",className:"danger-button",onClick:et,children:[e.jsx(ES,{size:15}),"Sair"]})]})]}),xe&&e.jsx("div",{className:"modal-backdrop",onMouseDown:()=>ye(!1),children:e.jsxs("form",{className:"auth-user-modal",onSubmit:ot,onMouseDown:Te=>Te.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Novo usuario"}),e.jsx("span",{children:x.organizationName})]}),e.jsxs("button",{type:"button",onClick:()=>ye(!1),children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("label",{children:["Nome",e.jsx("input",{value:le,onChange:Te=>M(Te.target.value),required:!0})]}),e.jsxs("label",{children:["Email",e.jsx("input",{type:"email",value:ee,onChange:Te=>H(Te.target.value),required:!0})]}),e.jsxs("label",{children:["Senha",e.jsx("input",{type:"password",minLength:8,value:se,onChange:Te=>G(Te.target.value),required:!0})]}),e.jsxs("label",{children:["Perfil",e.jsxs("select",{value:V,onChange:Te=>K(Te.target.value),children:[e.jsx("option",{value:"member",children:"Membro"}),e.jsx("option",{value:"admin",children:"Admin"})]})]}),ve&&e.jsx("div",{className:"auth-error",children:ve}),P&&e.jsx("div",{className:"auth-success",children:P}),e.jsxs("div",{className:"modal-actions",children:[e.jsx("button",{type:"button",onClick:()=>ye(!1),children:"Cancelar"}),e.jsxs("button",{type:"submit",className:"primary-button",disabled:be,children:[be?e.jsx(Ut,{size:15,className:"spin"}):e.jsx(Fx,{size:15}),"Criar usuario"]})]})]})}),$&&e.jsx("div",{className:"modal-backdrop",onMouseDown:()=>z(!1),children:e.jsxs("form",{className:"auth-user-modal",onSubmit:Re,onMouseDown:Te=>Te.stopPropagation(),children:[e.jsxs("div",{className:"modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Nova organizacao"}),e.jsx("span",{children:"Voce entrara nela como owner."})]}),e.jsxs("button",{type:"button",onClick:()=>z(!1),children:[e.jsx(Vt,{size:16}),"Fechar"]})]}),e.jsxs("label",{children:["Organizacao",e.jsx("input",{value:Z,onChange:Te=>he(Te.target.value),required:!0})]}),e.jsxs("label",{children:["Identificador da organizacao",e.jsx("input",{value:Be,onChange:Te=>at(Te.target.value),placeholder:"minha-empresa"}),e.jsx("span",{className:"auth-hint",children:"Precisa ser unico. Use algo curto, como o nome da empresa."})]}),e.jsxs("label",{children:["Seu nome",e.jsx("input",{value:gt,onChange:Te=>ht(Te.target.value),required:!0})]}),e.jsxs("label",{children:["Email",e.jsx("input",{type:"email",value:mt,onChange:Te=>Et(Te.target.value),required:!0})]}),e.jsxs("label",{children:["Senha",e.jsx("input",{type:"password",minLength:8,value:Ye,onChange:Te=>Pe(Te.target.value),required:!0})]}),Ze&&e.jsx("div",{className:"auth-error",children:Ze}),e.jsxs("div",{className:"modal-actions",children:[e.jsx("button",{type:"button",onClick:()=>z(!1),children:"Cancelar"}),e.jsxs("button",{type:"submit",className:"primary-button",disabled:re,children:[re?e.jsx(Ut,{size:15,className:"spin"}):e.jsx(Bm,{size:15}),"Criar organizacao"]})]})]})})]})}const kt=!p||h==="createOrg";return e.jsx("div",{className:"auth-shell",children:e.jsxs("form",{className:"auth-card",onSubmit:Me,children:[e.jsxs("div",{className:"auth-card-title",children:[e.jsx(Zs,{size:22}),e.jsxs("div",{children:[e.jsx("strong",{children:kt?"Criar organizacao":"Login Canvas Flow"}),e.jsx("span",{children:kt?"Crie uma organizacao e entre como owner.":"Entre com seu usuario da organizacao."})]})]}),kt&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["Organizacao",e.jsx("input",{value:w,onChange:Fe=>N(Fe.target.value),required:!0})]}),e.jsxs("label",{children:["Identificador da organizacao",e.jsx("input",{value:C,onChange:Fe=>E(Fe.target.value),placeholder:"minha-empresa"}),e.jsx("span",{className:"auth-hint",children:"Precisa ser unico. Se ficar em branco, sera gerado pelo nome."})]}),e.jsxs("label",{children:["Nome",e.jsx("input",{value:T,onChange:Fe=>R(Fe.target.value),required:!0})]})]}),!kt&&e.jsxs("label",{children:["Identificador da organizacao",e.jsx("input",{value:C,onChange:Fe=>E(Fe.target.value),placeholder:"minha-empresa"}),e.jsx("span",{className:"auth-hint",children:"Use o identificador unico da organizacao, nao o nome fantasia. Obrigatorio quando seu email existe em mais de uma organizacao."})]}),e.jsxs("label",{children:["Email",e.jsx("input",{type:"email",value:D,onChange:Fe=>q(Fe.target.value),required:!0})]}),e.jsxs("label",{children:["Senha",e.jsx("input",{type:"password",minLength:8,value:I,onChange:Fe=>F(Fe.target.value),required:!0})]}),Y&&e.jsx("div",{className:"auth-error",children:Y}),e.jsxs("button",{type:"submit",className:"primary-button",disabled:ae,children:[ae?e.jsx(Ut,{size:15,className:"spin"}):e.jsx(AS,{size:15}),kt?"Criar e entrar":"Entrar"]}),p&&e.jsx("button",{type:"button",className:"auth-link-button",onClick:()=>{ne(""),f(kt?"login":"createOrg")},children:kt?"Ja tenho uma organizacao":"Criar nova organizacao"})]})})}cb.createRoot(document.getElementById("root")).render(e.jsx(me.StrictMode,{children:e.jsx(dE,{children:e.jsx(uE,{})})}));
|