@igoruehara/canvas-flow 0.1.13 → 0.1.14
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/README.md +15 -0
- package/bin/canvas-flow.js +61 -3
- package/package.json +1 -1
- package/public/assets/index-BUVXJRGV.js +767 -0
- package/public/assets/{index-PCQkqMUe.css → index-D-m2588h.css} +1 -1
- package/public/index.html +2 -2
- package/server/provider-config/provider-config-controller.d.ts +35 -0
- package/server/provider-config/provider-config-controller.js +15 -0
- package/server/provider-config/provider-config-controller.js.map +1 -1
- package/server/provider-config/provider-config-service.d.ts +54 -0
- package/server/provider-config/provider-config-service.js +251 -11
- package/server/provider-config/provider-config-service.js.map +1 -1
- package/server/queue/sqs-transition-service.js +6 -0
- package/server/queue/sqs-transition-service.js.map +1 -1
- package/server/rag/rag-service.d.ts +4 -2
- package/server/rag/rag-service.js +44 -25
- package/server/rag/rag-service.js.map +1 -1
- package/server/runner/runner-controller.d.ts +8 -0
- package/server/runner/runner-service.d.ts +20 -0
- package/server/runner/runner-service.js +295 -13
- package/server/runner/runner-service.js.map +1 -1
- package/templates/config.example.json +11 -0
- package/templates/config.production.example.json +11 -0
- package/public/assets/index-CAYKh0bn.js +0 -767
|
@@ -1,767 +0,0 @@
|
|
|
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 _g;function ob(){if(_g)return bt;_g=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 Og;function Hp(){return Og||(Og=1,qh.exports=ob()),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 Rg;function ab(){if(Rg)return up;Rg=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 Fg;function rb(){return Fg||(Fg=1,Uh.exports=ab()),Uh.exports}var e=rb(),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 zg;function sb(){return zg||(zg=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 Lg;function ib(){return Lg||(Lg=1,Wh.exports=sb()),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 Dg;function lb(){if(Dg)return mr;Dg=1;var t=Hp(),n=ib();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(nb){return a(ie,nb)}),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=Ag(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,Ag(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=Kj(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 Ag(o,a){return Es(o,a)}function Jj(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 Jj(o,a,i,d)}function Fh(o){return o=o.prototype,!(!o||!o.isReactComponent)}function Kj(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 Qj(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 Qj(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 Xj(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 Eg(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 Mg(o,a,i,d,g,v,A,U,J){return o=Dh(i,d,!0,o,g,v,A,U,J),o.context=Eg(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=Eg(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 Tg(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){Tg(o,a),(o=o.alternate)&&Tg(o,a)}function Yj(){return null}var Ig=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 Pg(){}function Zj(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=Mg(a,d,o,0,null,!1,!1,"",Pg);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,"",Pg);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=Zj(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 eb={usingClientEntryPoint:!1,Events:[Oo,Lr,rr,gr,xr,pd]},cp={findFiberByHostInstance:Ta,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},tb={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||Yj,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(tb),ua=Tm}catch{}}return mr.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=eb,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 Xj(o,a,null,i)},mr.createRoot=function(o,a){if(!Vh(o))throw Error(r(299));var i=!1,d="",g=Ig;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=Ig;if(i!=null&&(i.unstable_strictMode===!0&&(g=!0),i.identifierPrefix!==void 0&&(v=i.identifierPrefix),i.onRecoverableError!==void 0&&(A=i.onRecoverableError)),a=Mg(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 $g;function Iv(){if($g)return Hh.exports;$g=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=lb(),Hh.exports}var Bg;function cb(){if(Bg)return Im;Bg=1;var t=Iv();return Im.createRoot=t.createRoot,Im.hydrateRoot=t.hydrateRoot,Im}var ub=cb();const db=ng(ub);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 Vg;function pb(){if(Vg)return Xh;Vg=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 Ug;function mb(){return Ug||(Ug=1,Qh.exports=pb()),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 qg;function hb(){if(qg)return Kh;qg=1;var t=Hp(),n=mb();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 Hg;function fb(){return Hg||(Hg=1,Jh.exports=hb()),Jh.exports}var gb=fb();const xb=ng(gb),vb={},Wg=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:()=>{(vb?"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},yb=t=>t?Wg(t):Wg,{useDebugValue:jb}=me,{useSyncExternalStoreWithSelector:bb}=xb,wb=t=>t;function Pv(t,n=wb,r){const s=bb(t.subscribe,t.getState,t.getServerState||t.getInitialState,n,r);return jb(s),s}const Gg=(t,n)=>{const r=yb(t),s=(l,p=n)=>Pv(r,l,p);return Object.assign(s,r),s},Nb=(t,n)=>t?Gg(t,n):Gg;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 Cb={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 Sb(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=Sb(t+"",r),l,p=-1,m=s.length;if(arguments.length<2){for(;++p<m;)if((l=(t=s[p]).type)&&(l=kb(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]=Jg(r[l],t.name,n);else if(n==null)for(l in r)r[l]=Jg(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 kb(t,n){for(var r=0,s=t.length,l;r<s;++r)if((l=t[r]).name===n)return l.value}function Jg(t,n,r){for(var s=0,l=t.length;s<l;++s)if(t[s].name===n){t[s]=Cb,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 Kg={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)),Kg.hasOwnProperty(n)?{space:Kg[n],local:t}:t}function Ab(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 Eb(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function _v(t){var n=kh(t);return(n.local?Eb:Ab)(n)}function Mb(){}function og(t){return t==null?Mb:function(){return this.querySelector(t)}}function Tb(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 Ib(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function Pb(){return[]}function Ov(t){return t==null?Pb:function(){return this.querySelectorAll(t)}}function _b(t){return function(){return Ib(t.apply(this,arguments))}}function Ob(t){typeof t=="function"?t=_b(t):t=Ov(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 Rv(t){return function(){return this.matches(t)}}function Fv(t){return function(n){return n.matches(t)}}var Rb=Array.prototype.find;function Fb(t){return function(){return Rb.call(this.children,t)}}function zb(){return this.firstElementChild}function Lb(t){return this.select(t==null?zb:Fb(typeof t=="function"?t:Fv(t)))}var Db=Array.prototype.filter;function $b(){return Array.from(this.children)}function Bb(t){return function(){return Db.call(this.children,t)}}function Vb(t){return this.selectAll(t==null?$b:Bb(typeof t=="function"?t:Fv(t)))}function Ub(t){typeof t!="function"&&(t=Rv(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 zv(t){return new Array(t.length)}function qb(){return new Qr(this._enter||this._groups.map(zv),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 Hb(t){return function(){return t}}function Wb(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 Gb(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 Jb(t){return t.__data__}function Kb(t,n){if(!arguments.length)return Array.from(this,Jb);var r=n?Gb:Wb,s=this._parents,l=this._groups;typeof t!="function"&&(t=Hb(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=Qb(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 Qb(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function Xb(){return new Qr(this._exit||this._groups.map(zv),this._parents)}function Yb(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 Zb(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 e0(){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 t0(t){t||(t=n0);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 n0(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function o0(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function a0(){return Array.from(this)}function r0(){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 s0(){let t=0;for(const n of this)++t;return t}function i0(){return!this.node()}function l0(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 c0(t){return function(){this.removeAttribute(t)}}function u0(t){return function(){this.removeAttributeNS(t.space,t.local)}}function d0(t,n){return function(){this.setAttribute(t,n)}}function p0(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function m0(t,n){return function(){var r=n.apply(this,arguments);r==null?this.removeAttribute(t):this.setAttribute(t,r)}}function h0(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 f0(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?u0:c0:typeof n=="function"?r.local?h0:m0:r.local?p0:d0)(r,n))}function Lv(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function g0(t){return function(){this.style.removeProperty(t)}}function x0(t,n,r){return function(){this.style.setProperty(t,n,r)}}function v0(t,n,r){return function(){var s=n.apply(this,arguments);s==null?this.style.removeProperty(t):this.style.setProperty(t,s,r)}}function y0(t,n,r){return arguments.length>1?this.each((n==null?g0:typeof n=="function"?v0:x0)(t,n,r??"")):Fd(this.node(),t)}function Fd(t,n){return t.style.getPropertyValue(n)||Lv(t).getComputedStyle(t,null).getPropertyValue(n)}function j0(t){return function(){delete this[t]}}function b0(t,n){return function(){this[t]=n}}function w0(t,n){return function(){var r=n.apply(this,arguments);r==null?delete this[t]:this[t]=r}}function N0(t,n){return arguments.length>1?this.each((n==null?j0:typeof n=="function"?w0:b0)(t,n)):this.node()[t]}function Dv(t){return t.trim().split(/^|\s+/)}function ag(t){return t.classList||new $v(t)}function $v(t){this._node=t,this._names=Dv(t.getAttribute("class")||"")}$v.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 Bv(t,n){for(var r=ag(t),s=-1,l=n.length;++s<l;)r.add(n[s])}function Vv(t,n){for(var r=ag(t),s=-1,l=n.length;++s<l;)r.remove(n[s])}function C0(t){return function(){Bv(this,t)}}function S0(t){return function(){Vv(this,t)}}function k0(t,n){return function(){(n.apply(this,arguments)?Bv:Vv)(this,t)}}function A0(t,n){var r=Dv(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"?k0:n?C0:S0)(r,n))}function E0(){this.textContent=""}function M0(t){return function(){this.textContent=t}}function T0(t){return function(){var n=t.apply(this,arguments);this.textContent=n??""}}function I0(t){return arguments.length?this.each(t==null?E0:(typeof t=="function"?T0:M0)(t)):this.node().textContent}function P0(){this.innerHTML=""}function _0(t){return function(){this.innerHTML=t}}function O0(t){return function(){var n=t.apply(this,arguments);this.innerHTML=n??""}}function R0(t){return arguments.length?this.each(t==null?P0:(typeof t=="function"?O0:_0)(t)):this.node().innerHTML}function F0(){this.nextSibling&&this.parentNode.appendChild(this)}function z0(){return this.each(F0)}function L0(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function D0(){return this.each(L0)}function $0(t){var n=typeof t=="function"?t:_v(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})}function B0(){return null}function V0(t,n){var r=typeof t=="function"?t:_v(t),s=n==null?B0:typeof n=="function"?n:og(n);return this.select(function(){return this.insertBefore(r.apply(this,arguments),s.apply(this,arguments)||null)})}function U0(){var t=this.parentNode;t&&t.removeChild(this)}function q0(){return this.each(U0)}function H0(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function W0(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function G0(t){return this.select(t?W0:H0)}function J0(t){return arguments.length?this.property("__data__",t):this.node().__data__}function K0(t){return function(n){t.call(this,n,this.__data__)}}function Q0(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 X0(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 Y0(t,n,r){return function(){var s=this.__on,l,p=K0(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 Z0(t,n,r){var s=Q0(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?Y0:X0,l=0;l<p;++l)this.each(h(s[l],n,r));return this}function Uv(t,n,r){var s=Lv(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 ew(t,n){return function(){return Uv(this,t,n)}}function tw(t,n){return function(){return Uv(this,t,n.apply(this,arguments))}}function nw(t,n){return this.each((typeof n=="function"?tw:ew)(t,n))}function*ow(){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 qv=[null];function Qr(t,n){this._groups=t,this._parents=n}function Wp(){return new Qr([[document.documentElement]],qv)}function aw(){return this}Qr.prototype=Wp.prototype={constructor:Qr,select:Tb,selectAll:Ob,selectChild:Lb,selectChildren:Vb,filter:Ub,data:Kb,enter:qb,exit:Xb,join:Yb,merge:Zb,selection:aw,order:e0,sort:t0,call:o0,nodes:a0,node:r0,size:s0,empty:i0,each:l0,attr:f0,style:y0,property:N0,classed:A0,text:I0,html:R0,raise:z0,lower:D0,append:$0,insert:V0,remove:q0,clone:G0,datum:J0,on:Z0,dispatch:nw,[Symbol.iterator]:ow};function Kr(t){return typeof t=="string"?new Qr([[document.querySelector(t)]],[document.documentElement]):new Qr([[t]],qv)}function rw(t){let n;for(;n=t.sourceEvent;)t=n;return t}function Xs(t,n){if(t=rw(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 sw={passive:!1},Pp={capture:!0,passive:!1};function Yh(t){t.stopImmediatePropagation()}function Td(t){t.preventDefault(),t.stopImmediatePropagation()}function Hv(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 Wv(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 iw(t){return!t.ctrlKey&&!t.button}function lw(){return this.parentNode}function cw(t,n){return n??{x:t.x,y:t.y}}function uw(){return navigator.maxTouchPoints||"ontouchstart"in this}function Gv(){var t=iw,n=lw,r=cw,s=uw,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,sw).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),Hv(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),Wv(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 Jv(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*",dw=/^#([0-9a-f]{3,8})$/,pw=new RegExp(`^rgb\\(${Id},${Id},${Id}\\)$`),mw=new RegExp(`^rgb\\(${Xi},${Xi},${Xi}\\)$`),hw=new RegExp(`^rgba\\(${Id},${Id},${Id},${Op}\\)$`),fw=new RegExp(`^rgba\\(${Xi},${Xi},${Xi},${Op}\\)$`),gw=new RegExp(`^hsl\\(${Op},${Xi},${Xi}\\)$`),xw=new RegExp(`^hsla\\(${Op},${Xi},${Xi},${Op}\\)$`),Qg={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:Xg,formatHex:Xg,formatHex8:vw,formatHsl:yw,formatRgb:Yg,toString:Yg});function Xg(){return this.rgb().formatHex()}function vw(){return this.rgb().formatHex8()}function yw(){return Kv(this).formatHsl()}function Yg(){return this.rgb().formatRgb()}function Rp(t){var n,r;return t=(t+"").trim().toLowerCase(),(n=dw.exec(t))?(r=n[1].length,n=parseInt(n[1],16),r===6?Zg(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=pw.exec(t))?new hr(n[1],n[2],n[3],1):(n=mw.exec(t))?new hr(n[1]*255/100,n[2]*255/100,n[3]*255/100,1):(n=hw.exec(t))?_m(n[1],n[2],n[3],n[4]):(n=fw.exec(t))?_m(n[1]*255/100,n[2]*255/100,n[3]*255/100,n[4]):(n=gw.exec(t))?nx(n[1],n[2]/100,n[3]/100,1):(n=xw.exec(t))?nx(n[1],n[2]/100,n[3]/100,n[4]):Qg.hasOwnProperty(t)?Zg(Qg[t]):t==="transparent"?new hr(NaN,NaN,NaN,0):null}function Zg(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 jw(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?jw(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,Jv(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:ex,formatHex:ex,formatHex8:bw,formatRgb:tx,toString:tx}));function ex(){return`#${Ou(this.r)}${Ou(this.g)}${Ou(this.b)}`}function bw(){return`#${Ou(this.r)}${Ou(this.g)}${Ou(this.b)}${Ou((isNaN(this.opacity)?1:this.opacity)*255)}`}function tx(){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 nx(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 Kv(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 ww(t,n,r,s){return arguments.length===1?Kv(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,ww,Jv(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(ox(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("}${ox(this.h)}, ${Om(this.s)*100}%, ${Om(this.l)*100}%${t===1?")":`, ${t})`}`}}));function ox(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 Qv=t=>()=>t;function Nw(t,n){return function(r){return t+r*n}}function Cw(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 Sw(t){return(t=+t)==1?Xv:function(n,r){return r-n?Cw(n,r,t):Qv(isNaN(n)?r:n)}}function Xv(t,n){var r=n-t;return r?Nw(t,r):Qv(isNaN(t)?n:t)}const ax=(function t(n){var r=Sw(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=Xv(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 kw(t){return function(){return t}}function Aw(t){return function(n){return t(n)+""}}function Ew(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]?Aw(f[0].x):kw(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 rx=180/Math.PI,Mf={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Yv(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)*rx,skewX:Math.atan(f)*rx,scaleX:m,scaleY:h}}var Rm;function Mw(t){const n=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?Mf:Yv(n.a,n.b,n.c,n.d,n.e,n.f)}function Tw(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,Yv(t.a,t.b,t.c,t.d,t.e,t.f))}function Zv(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 Iw=Zv(Mw,"px, ","px)","deg)"),Pw=Zv(Tw,", ",")",")"),_w=1e-12;function sx(t){return((t=Math.exp(t))+1/t)/2}function Ow(t){return((t=Math.exp(t))-1/t)/2}function Rw(t){return((t=Math.exp(2*t))-1)/(t+1)}const Fw=(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<_w)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=sx(Y),fe=x/(r*q)*(Q*Rw(n*oe+Y)-Ow(Y));return[h+fe*C,f+fe*E,x*Q/sx(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,ey=1e3,ph,Cp,mh=0,$u=0,Ah=0,Fp=typeof performance=="object"&&performance.now?performance:Date,ty=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function sg(){return $u||(ty(zw),$u=Fp.now()+Ah)}function zw(){$u=0}function hh(){this._call=this._time=this._next=null}hh.prototype=ny.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 ny(t,n,r){var s=new hh;return s.restart(t,n,r),s}function Lw(){sg(),++zd;for(var t=ph,n;t;)(n=$u-t._time)>=0&&t._call.call(void 0,n),t=t._next;--zd}function ix(){$u=(mh=Fp.now())+Ah,zd=Np=0;try{Lw()}finally{zd=0,$w(),$u=0}}function Dw(){var t=Fp.now(),n=t-mh;n>ey&&(Ah-=n,mh=t)}function $w(){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(ix,t-Fp.now()-Ah)),dp&&(dp=clearInterval(dp))):(dp||(mh=Fp.now(),dp=setInterval(Dw,ey)),zd=1,ty(ix))}}function lx(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 Bw=Sh("start","end","cancel","interrupt"),Vw=[],oy=0,cx=1,If=2,nh=3,ux=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;Uw(t,r,{name:n,index:s,group:l,on:Bw,tween:Vw,time:p.time,delay:p.delay,duration:p.duration,ease:p.ease,timer:null,state:oy})}function ig(t,n){var r=ti(t,n);if(r.state>oy)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 Uw(t,n,r){var s=t.__transition,l;s[n]=r,r.timer=ny(p,0,r.time);function p(x){r.state=cx,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!==cx)return f();for(j in s)if(C=s[j],C.name===r.name){if(C.state===nh)return lx(m);C.state===ux?(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(lx(function(){r.state===nh&&(r.state=ux,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 qw(t){return this.each(function(){ah(this,t)})}function Hw(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 Ww(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 Gw(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?Hw:Ww)(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 ay(t,n){var r;return(typeof n=="number"?Pc:n instanceof Rp?ax:(r=Rp(n))?(n=r,ax):Ew)(t,n)}function Jw(t){return function(){this.removeAttribute(t)}}function Kw(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Qw(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 Xw(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 Yw(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 Zw(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 eN(t,n){var r=kh(t),s=r==="transform"?Pw:ay;return this.attrTween(t,typeof n=="function"?(r.local?Zw:Yw)(r,s,lg(this,"attr."+t,n)):n==null?(r.local?Kw:Jw)(r):(r.local?Xw:Qw)(r,s,n))}function tN(t,n){return function(r){this.setAttribute(t,n.call(this,r))}}function nN(t,n){return function(r){this.setAttributeNS(t.space,t.local,n.call(this,r))}}function oN(t,n){var r,s;function l(){var p=n.apply(this,arguments);return p!==s&&(r=(s=p)&&nN(t,p)),r}return l._value=n,l}function aN(t,n){var r,s;function l(){var p=n.apply(this,arguments);return p!==s&&(r=(s=p)&&tN(t,p)),r}return l._value=n,l}function rN(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?oN:aN)(s,n))}function sN(t,n){return function(){ig(this,t).delay=+n.apply(this,arguments)}}function iN(t,n){return n=+n,function(){ig(this,t).delay=n}}function lN(t){var n=this._id;return arguments.length?this.each((typeof t=="function"?sN:iN)(n,t)):ti(this.node(),n).delay}function cN(t,n){return function(){Yi(this,t).duration=+n.apply(this,arguments)}}function uN(t,n){return n=+n,function(){Yi(this,t).duration=n}}function dN(t){var n=this._id;return arguments.length?this.each((typeof t=="function"?cN:uN)(n,t)):ti(this.node(),n).duration}function pN(t,n){if(typeof n!="function")throw new Error;return function(){Yi(this,t).ease=n}}function mN(t){var n=this._id;return arguments.length?this.each(pN(n,t)):ti(this.node(),n).ease}function hN(t,n){return function(){var r=n.apply(this,arguments);if(typeof r!="function")throw new Error;Yi(this,t).ease=r}}function fN(t){if(typeof t!="function")throw new Error;return this.each(hN(this._id,t))}function gN(t){typeof t!="function"&&(t=Rv(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 xN(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 vN(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 yN(t,n,r){var s,l,p=vN(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 jN(t,n){var r=this._id;return arguments.length<2?ti(this.node(),r).on.on(t):this.each(yN(r,t,n))}function bN(t){return function(){var n=this.parentNode;for(var r in this.__transition)if(+r!==t)return;n&&n.removeChild(this)}}function wN(){return this.on("end.remove",bN(this._id))}function NN(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 CN(t){var n=this._name,r=this._id;typeof t!="function"&&(t=Ov(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 SN=Wp.prototype.constructor;function kN(){return new SN(this._groups,this._parents)}function AN(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 ry(t){return function(){this.style.removeProperty(t)}}function EN(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 MN(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 TN(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=ry(n)):void 0;(x!==r||l!==j)&&(s=(r=x).copy()).on(m,l=j),f.on=s}}function IN(t,n,r){var s=(t+="")=="transform"?Iw:ay;return n==null?this.styleTween(t,AN(t,s)).on("end.style."+t,ry(t)):typeof n=="function"?this.styleTween(t,MN(t,s,lg(this,"style."+t,n))).each(TN(this._id,t)):this.styleTween(t,EN(t,s,n),r).on("end.style."+t,null)}function PN(t,n,r){return function(s){this.style.setProperty(t,n.call(this,s),r)}}function _N(t,n,r){var s,l;function p(){var m=n.apply(this,arguments);return m!==l&&(s=(l=m)&&PN(t,m,r)),s}return p._value=n,p}function ON(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,_N(t,n,r??""))}function RN(t){return function(){this.textContent=t}}function FN(t){return function(){var n=t(this);this.textContent=n??""}}function zN(t){return this.tween("text",typeof t=="function"?FN(lg(this,"text",t)):RN(t==null?"":t+""))}function LN(t){return function(n){this.textContent=t.call(this,n)}}function DN(t){var n,r;function s(){var l=t.apply(this,arguments);return l!==r&&(n=(r=l)&&LN(l)),n}return s._value=t,s}function $N(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,DN(t))}function BN(){for(var t=this._name,n=this._id,r=sy(),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 VN(){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 UN=0;function $l(t,n,r,s){this._groups=t,this._parents=n,this._name=r,this._id=s}function sy(){return++UN}var Ol=Wp.prototype;$l.prototype={constructor:$l,select:NN,selectAll:CN,selectChild:Ol.selectChild,selectChildren:Ol.selectChildren,filter:gN,merge:xN,selection:kN,transition:BN,call:Ol.call,nodes:Ol.nodes,node:Ol.node,size:Ol.size,empty:Ol.empty,each:Ol.each,on:jN,attr:eN,attrTween:rN,style:IN,styleTween:ON,text:zN,textTween:$N,remove:wN,tween:Gw,delay:lN,duration:dN,ease:mN,easeVarying:fN,end:VN,[Symbol.iterator]:Ol[Symbol.iterator]};function qN(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var HN={time:null,delay:0,duration:250,ease:qN};function WN(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 GN(t){var n,r;t instanceof $l?(n=t._id,t=t._name):(n=sy(),(r=HN).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||WN(f,n));return new $l(s,this._parents,t,n)}Wp.prototype.interrupt=qw;Wp.prototype.transition=GN;const Fm=t=>()=>t;function JN(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 KN(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function QN(){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 dx(){return this.__zoom||Ll}function XN(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function YN(){return navigator.maxTouchPoints||"ontouchstart"in this}function ZN(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 iy(){var t=KN,n=QN,r=ZN,s=XN,l=YN,p=[0,1/0],m=[[-1/0,-1/0],[1/0,1/0]],h=250,f=Fw,x=Sh("start","zoom","end"),j,w,N,C=500,E=150,T=0,R=10;function D(M){M.property("__zoom",dx).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",dx),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 JN(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;Hv(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),Wv(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 e1=Iv();const Mh=b.createContext(null),t1=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.`},ly=Bl.error001();function on(t,n){const r=b.useContext(Mh);if(r===null)throw new Error(ly);return Pv(r,t,n)}const po=()=>{const t=b.useContext(Mh);if(t===null)throw new Error(ly);return b.useMemo(()=>({getState:t.getState,setState:t.setState,subscribe:t.subscribe,destroy:t.destroy}),[t])},n1=t=>t.userSelectionActive?"none":"all";function zp({position:t,children:n,className:r,style:s,...l}){const p=on(n1),m=`${t}`.split("-");return me.createElement("div",{className:Go(["react-flow__panel",r,...m]),style:{...s,pointerEvents:p},...l},n)}function o1({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 a1=({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 r1=b.memo(a1);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])}),px=(t,n,r)=>t<n?Lc(Math.abs(t-n),1,50)/50:t>r?-Lc(Math.abs(t-r),1,50)/50:0,cy=(t,n)=>{const r=px(t.x,35,n.width-35)*20,s=px(t.y,35,n.height-35)*20;return[r,s]},uy=t=>{var n;return((n=t.getRootNode)==null?void 0:n.call(t))||(window==null?void 0:window.document)},dy=(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}),py=({x:t,y:n,x2:r,y2:s})=>({x:t,y:n,width:r-t,height:s-n}),mx=t=>({...t.positionAbsolute||{x:0,y:0},width:t.width||0,height:t.height||0}),s1=(t,n)=>py(dy(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)},i1=t=>Cs(t.width)&&Cs(t.height)&&Cs(t.x)&&Cs(t.y),Cs=t=>!isNaN(t)&&isFinite(t),Pn=Symbol.for("internals"),my=["Enter"," ","Escape"],l1=(t,n)=>{},c1=t=>"nativeEvent"in t;function Of(t){var l,p;const n=c1(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 hy=t=>"clientX"in t,Fc=(t,n)=>{var p,m;const r=hy(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(r1,{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 fy({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 gy({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 hx({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 xy({sourceX:t,sourceY:n,sourcePosition:r=nt.Bottom,targetX:s,targetY:l,targetPosition:p=nt.Top}){const[m,h]=hx({pos:r,x1:t,y1:n,x2:s,y2:l}),[f,x]=hx({pos:p,x1:s,y1:l,x2:t,y2:n}),[j,w,N,C]=gy({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]=xy({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 fx={[nt.Left]:{x:-1,y:0},[nt.Right]:{x:1,y:0},[nt.Top]:{x:0,y:-1},[nt.Bottom]:{x:0,y:1}},u1=({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},gx=(t,n)=>Math.sqrt(Math.pow(n.x-t.x,2)+Math.pow(n.y-t.y,2));function d1({source:t,sourcePosition:n=nt.Bottom,target:r,targetPosition:s=nt.Top,center:l,offset:p}){const m=fx[n],h=fx[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=u1({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]=fy({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 p1(t,n,r,s){const l=Math.min(gx(t,n)/2,gx(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]=d1({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=p1(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 m1({sourceX:t,sourceY:n,targetX:r,targetY:s}){const[l,p,m,h]=fy({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]=m1({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 xx({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]=xx({pos:r,x1:t,y1:n,x2:s,y2:l,c:m}),[x,j]=xx({pos:p,x1:s,y1:l,x2:t,y2:n,c:m}),[w,N,C,E]=gy({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),h1=fg.Provider;fg.Consumer;const vy=()=>b.useContext(fg),f1=t=>"id"in t&&"source"in t&&"target"in t,g1=({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("&")}`,x1=(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)),v1=(t,n)=>{if(!t.source||!t.target)return n;let r;return f1(t)?r={...t}:r={...t,id:g1(t)},x1(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},yy=({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 dy(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 py(r)},jy=(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},by=(t,n)=>{const r=t.map(s=>s.id);return n.filter(s=>r.includes(s.source)||r.includes(s.target))},wy=(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 vx(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 y1(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:Ny()};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 j1={source:null,target:null,sourceHandle:null,targetHandle:null},Ny=()=>({handleDomNode:null,isValid:!1,connection:j1,endHandle:null});function Cy(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={...Ny(),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 b1({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=vx(p,m,"source",`${n}-${r}-${s}`),f=vx(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 w1(t,n){let r=null;return n?r="valid":t&&!n&&(r="invalid"),r}function Sy({event:t,handleId:n,nodeId:r,onConnect:s,isTarget:l,getState:p,setState:m,isValidConnection:h,edgeUpdaterType:f,onReconnectEnd:x}){const j=uy(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=b1({nodes:D(),nodeId:r,handleId:n,handleType:oe}),se=()=>{if(!C)return;const[K,P]=cy(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}=y1(K,j,zf(xe,P,!1,[1,1]),E,H,ge=>Cy(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?yy({x:F.x,y:F.y},P):xe,connectionStatus:w1(!!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 yx=()=>!0,N1=t=>({connectionStartHandle:t.connectionStartHandle,connectOnClick:t.connectOnClick,noPanClassName:t.noPanClassName}),C1=(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}},ky=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=vy(),{connectOnClick:q,noPanClassName:I}=on(N1,Wo),{connecting:F,clickConnecting:Y}=on(C1(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(v1(ee,H))}le==null||le(ee),h==null||h(ee)},ae=xe=>{if(!D)return;const ye=hy(xe);l&&(ye&&xe.button===0||!ye)&&Sy({event:xe,handleId:E,nodeId:D,onConnect:ne,isTarget:T,getState:R.getState,setState:R.setState,isValidConnection:r||R.getState().isValidConnection||yx}),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=uy(xe.target),G=r||H||yx,{connection:V,isValid:K}=Cy({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)});ky.displayName="Handle";var Ld=b.memo(ky);const Ay=({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}));Ay.displayName="DefaultNode";var Lf=b.memo(Ay);const Ey=({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}));Ey.displayName="InputNode";var My=b.memo(Ey);const Ty=({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);Ty.displayName="OutputNode";var Iy=b.memo(Ty);const xg=()=>null;xg.displayName="GroupNode";const S1=t=>({selectedNodes:t.getNodes().filter(n=>n.selected),selectedEdges:t.edges.filter(n=>n.selected).map(n=>({...n}))}),Lm=t=>t.id;function k1(t,n){return Wo(t.selectedNodes.map(Lm),n.selectedNodes.map(Lm))&&Wo(t.selectedEdges.map(Lm),n.selectedEdges.map(Lm))}const Py=b.memo(({onSelectionChange:t})=>{const n=po(),{selectedNodes:r,selectedEdges:s}=on(S1,k1);return b.useEffect(()=>{const l={nodes:r,edges:s};t==null||t(l),n.getState().onSelectionChange.forEach(p=>p(l))},[r,s,t]),null});Py.displayName="SelectionListener";const A1=t=>!!t.onSelectionChange;function E1({onSelectionChange:t}){const n=on(A1);return t||n?me.createElement(Py,{onSelectionChange:t}):null}const M1=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 T1=({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(M1,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},jx={display:"none"},I1={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},_y="react-flow__node-desc",Oy="react-flow__edge-desc",P1="react-flow__aria-live",_1=t=>t.ariaLiveMessage;function O1({rfId:t}){const n=on(_1);return me.createElement("div",{id:`${P1}-${t}`,"aria-live":"assertive","aria-atomic":"true",style:I1},n)}function R1({rfId:t,disableKeyboardA11y:n}){return me.createElement(me.Fragment,null,me.createElement("div",{id:`${_y}-${t}`,style:jx},"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:`${Oy}-${t}`,style:jx},"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."),!n&&me.createElement(O1,{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=wx(C.code,h);p.current.add(C[T]),bx(m,p.current,!1)&&(C.preventDefault(),s(!0))},w=C=>{if((!l.current||l.current&&!n.actInsideInputWithModifier)&&Of(C))return!1;const T=wx(C.code,h);bx(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 bx(t,n,r){return t.filter(s=>r||s.length===n.size).some(s=>s.every(l=>n.has(l)))}function wx(t,n){return n.includes(t)?"code":"key"}function Ry(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 Ry(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 Fy(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}=Ry(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)}),Fy(l,r,p),l}function zy(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}=wy(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 F1(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 z1(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:F1(t,l)}),m==null||m(t)),n!=null&&n.length&&(x&&s({edges:z1(n,p)}),h==null||h(n))}const gd=()=>{},L1={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},D1=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection}),$1=()=>{const t=po(),{d3Zoom:n,d3Selection:r}=on(D1,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=>zy(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}=wy(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=yy(l,p);return{x:x.x+h,y:x.y+f}},viewportInitialized:!0}:L1,[n,r])};function vg(){const t=$1(),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=by(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=i1(T),D=R?null:n.getState().nodeInternals.get(T.id);return!R&&!D?[null,null,R]:[R?T:mx(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=mx(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 B1={actInsideInputWithModifier:!1};var V1=({deleteKeyCode:t,multiSelectionKeyCode:n})=>{const r=po(),{deleteElements:s}=vg(),l=Bp(t,B1),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 U1(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},q1=(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}`),Nx=(t,n)=>n===2&&Array.isArray(t)&&t.includes(2),Cx=t=>{const n=t.ctrlKey&&fh()?10:1;return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*n},H1=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection,d3ZoomHandler:t.d3ZoomHandler,userSelectionActive:t.userSelectionActive}),W1=({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(H1,Wo),ee=Bp(R),H=b.useRef(0),se=b.useRef(!1),G=b.useRef();return U1(Q),b.useEffect(()=>{if(Q.current){const V=Q.current.getBoundingClientRect(),K=iy().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(Cx),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=Cx(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&&Nx(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&&Nx(w,H.current??0)&&!oe.current&&s(V.sourceEvent),oe.current=!1,(r||K)&&q1(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)},G1=t=>({userSelectionActive:t.userSelectionActive,userSelectionRect:t.userSelectionRect});function J1(){const{userSelectionActive:t,userSelectionRect:n}=on(G1,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 Sx(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 K1(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&&Sx(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&&Sx(s,m);break}case"remove":return s}return s.push(m),s},r)}function Ly(t,n){return K1(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))},Q1=t=>({userSelectionActive:t.userSelectionActive,elementsSelectable:t.elementsSelectable,dragging:t.paneDragging}),Dy=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(Q1,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(),$=jy(ee,be,se,n===Dp.Partial,!0,K),z=by($,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(J1,null))});Dy.displayName="Pane";function $y(t,n){const r=t.parentNode||t.parentId;if(!r)return!1;const s=n.get(r);return s?s.selected?!0:$y(s,n):!1}function kx(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 X1(t,n,r,s){return Array.from(t.values()).filter(l=>(l.selected||l.id===s)&&(!l.parentNode||l.parentId||!$y(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 Y1(t,n){return!n||n==="parent"?n:[n[0],[n[1][0]-(t.width||0),n[1][1]-(t.height||0)]]}function By(t,n,r,s,l=[0,0],p){const m=Y1(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 Ax=(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 Vy(){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 Uy({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=Vy();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=By(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]=cy(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=X1(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=Gv().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||!kx(fe,`.${r}`,t))&&(!s||kx(fe,s,t))});return F.call(oe),()=>{F.on(".drag",null)}}}},[t,n,r,s,p,h,l,m,I]),f}function qy(){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}=By(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=qy(),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(my.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=Uy({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:`${_y}-${V}`,"aria-label":G},me.createElement(h1,{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 Z1=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 eC({onSelectionContextMenu:t,noPanClassName:n,disableKeyboardA11y:r}){const s=po(),{width:l,height:p,x:m,y:h,transformString:f,userSelectionActive:x}=on(Z1,Wo),j=qy(),w=b.useRef(null);if(b.useEffect(()=>{var E;r||(E=w.current)==null||E.focus({preventScroll:!0})},[r]),Uy({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 tC=b.memo(eC);const nC=t=>t.nodesSelectionActive,Hy=({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(nC),P=Bp(w),O=Bp(D),ve=O||fe,ge=O||ne,be=P||N&&ve!==!0;return V1({deleteKeyCode:h,multiSelectionKeyCode:R}),me.createElement(W1,{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(Dy,{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(tC,{onSelectionContextMenu:H,noPanClassName:G,disableKeyboardA11y:V})))};Hy.displayName="FlowRenderer";var oC=b.memo(Hy);function aC(t){return on(b.useCallback(r=>t?jy(r.nodeInternals,{x:0,y:0,width:r.width,height:r.height},r.transform,!0):r.getNodes(),[t]))}function rC(t){const n={input:fp(t.input||My),default:fp(t.default||Lf),output:fp(t.output||Iy),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 sC=({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]},iC=t=>({nodesDraggable:t.nodesDraggable,nodesConnectable:t.nodesConnectable,nodesFocusable:t.nodesFocusable,elementsSelectable:t.elementsSelectable,updateNodeDimensions:t.updateNodeDimensions,onError:t.onError}),Wy=t=>{const{nodesDraggable:n,nodesConnectable:r,nodesFocusable:s,elementsSelectable:l,updateNodeDimensions:p,onError:m}=on(iC,Wo),h=aC(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=sC({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)})}))};Wy.displayName="NodeRenderer";var lC=b.memo(Wy);const cC=(t,n,r)=>r===nt.Left?t-n:r===nt.Right?t+n:t,uC=(t,n,r)=>r===nt.Top?t-n:r===nt.Bottom?t+n:t,Ex="react-flow__edgeupdater",Mx=({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([Ex,`${Ex}-${h}`]),cx:cC(n,s,t),cy:uC(r,s,t),r:s,stroke:"transparent",fill:"transparent"}),dC=()=>!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||dC,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)};Sy({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&&my.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?`${Oy}-${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(Mx,{position:ae,centerX:I,centerY:F,radius:se,onMouseDown:it,onMouseEnter:Re,onMouseOut:ot,type:"source"}),(Ce==="target"||Ce===!0)&&me.createElement(Mx,{position:oe,centerX:Y,centerY:ne,radius:se,onMouseDown:qe,onMouseEnter:Re,onMouseOut:ot,type:"target"})))};return n.displayName="EdgeWrapper",b.memo(n)};function pC(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 Tx(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 Ix(t,n){return t?t.length===1||!n?t[0]:n&&t.find(r=>r.id===n)||null:null}const mC=(t,n,r,s,l,p)=>{const m=Tx(r,t,n),h=Tx(p,s,l);return{sourceX:m.x,sourceY:m.y,targetX:h.x,targetY:h.y}};function hC({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 Px(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 fC=[{level:0,isMaxLevel:!0,edges:[]}];function gC(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?fC:p}function xC(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)&&hC({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 gC(s,n,r)}const vC=({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"}),yC=({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"}),_x={[$p.Arrow]:vC,[$p.ArrowClosed]:yC};function jC(t){const n=po();return b.useMemo(()=>{var l,p;return Object.prototype.hasOwnProperty.call(_x,t)?_x[t]:((p=(l=n.getState()).onError)==null||p.call(l,"009",Bl.error009(t)),null)},[t])}const bC=({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=jC(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},wC=({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))},Gy=({defaultColor:t,rfId:n})=>{const r=on(b.useCallback(wC({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(bC,{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})))};Gy.displayName="MarkerDefinitions";var NC=b.memo(Gy);const CC=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}),Jy=({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(CC,Wo),fe=xC(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(NC,{defaultColor:t,rfId:s}),me.createElement("g",null,ye.map(M=>{const[ee,H,se]=Px(oe.get(M.source)),[G,V,K]=Px(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=Ix(H.source,M.sourceHandle),be=Ix(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}=mC(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};Jy.displayName="EdgeRenderer";var SC=b.memo(Jy);const kC=t=>`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`;function AC({children:t}){const n=on(kC);return me.createElement("div",{className:"react-flow__viewport react-flow__container",style:{transform:n}},t)}function EC(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 MC={[nt.Left]:nt.Right,[nt.Right]:nt.Left,[nt.Top]:nt.Bottom,[nt.Bottom]:nt.Top},Ky=({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?MC[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]=xy(Y):F=`M${R},${D} ${f},${x}`,me.createElement("path",{d:F,fill:"none",className:"react-flow__connection-path",style:r})};Ky.displayName="ConnectionLine";const TC=t=>({nodeId:t.connectionNodeId,handleType:t.connectionHandleType,nodesConnectable:t.nodesConnectable,connectionStatus:t.connectionStatus,width:t.width,height:t.height});function IC({containerStyle:t,style:n,type:r,component:s}){const{nodeId:l,handleType:p,nodesConnectable:m,width:h,height:f,connectionStatus:x}=on(TC,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(Ky,{nodeId:l,handleType:p,style:n,type:r,CustomComponent:s,connectionStatus:x})))}function Ox(t,n){return b.useRef(null),po(),b.useMemo(()=>n(t),[t])}const Qy=({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=Ox(t,rC),Te=Ox(n,pC);return EC(p),me.createElement(oC,{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(AC,null,me.createElement(SC,{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(IC,{style:q,type:D,component:I,containerStyle:F})),me.createElement("div",{className:"react-flow__edgelabel-renderer"}),me.createElement(lC,{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})))};Qy.displayName="GraphView";var PC=b.memo(Qy);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:l1,isValidConnection:void 0},_C=()=>Nb((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:Ax(".source",R.nodeElement,N,x),target:Ax(".target",R.nodeElement,N,x)}},...q}),T.push({id:D.id,type:"dimensions",dimensions:q}))}return T},[]);Fy(l,x);const E=m||p&&!m&&zy(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=Ly(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=_C()),me.createElement(t1,{value:n.current},t)};jg.displayName="ReactFlowProvider";const Xy=({children:t})=>b.useContext(Mh)?me.createElement(me.Fragment,null,t):me.createElement(jg,null,t);Xy.displayName="ReactFlowWrapper";const OC={input:My,default:Lf,output:Iy,group:xg},RC={default:gh,straight:mg,step:pg,smoothstep:Th,simplebezier:dg},FC=[0,0],zC=[15,15],LC={x:0,y:0,zoom:1},DC={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},Yy=b.forwardRef(({nodes:t,edges:n,defaultNodes:r,defaultEdges:s,className:l,nodeTypes:p=OC,edgeTypes:m=RC,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=zC,onlyRenderVisibleElements:gt=!1,selectNodesOnDrag:ht=!0,nodesDraggable:mt,nodesConnectable:Et,nodesFocusable:Ye,nodeOrigin:Pe=FC,edgesFocusable:Ze,edgesUpdatable:Ct,elementsSelectable:re,defaultViewport:we=LC,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,...DC},ref:ua,className:Go(["react-flow",l]),"data-testid":"rf__wrapper",id:ai},me.createElement(Xy,null,me.createElement(PC,{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(T1,{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(E1,{onSelectionChange:ye}),Ao,me.createElement(o1,{proOptions:tl,position:ni}),me.createElement(R1,{rfId:Ja,disableKeyboardA11y:oi})))});Yy.displayName="ReactFlow";const $C=t=>{var n;return(n=t.domNode)==null?void 0:n.querySelector(".react-flow__edgelabel-renderer")};function BC({children:t}){const n=on($C);return n?e1.createPortal(t,n):null}const Zy=({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})};Zy.displayName="MiniMapNode";var VC=b.memo(Zy);const UC=t=>t.nodeOrigin,qC=t=>t.getNodes().filter(n=>!n.hidden&&n.width&&n.height),lf=t=>t instanceof Function?t:()=>t;function HC({nodeStrokeColor:t="transparent",nodeColor:n="#e2e2e2",nodeClassName:r="",nodeBorderRadius:s=5,nodeStrokeWidth:l=2,nodeComponent:p=VC,onClick:m}){const h=on(qC,Wo),f=on(UC),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 WC=b.memo(HC);const GC=200,JC=150,KC=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?s1(Ih(n,t.nodeOrigin),r):r,rfId:t.rfId}},QC="react-flow__minimap-desc";function ej({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(KC,Wo),Q=(t==null?void 0:t.width)??GC,fe=(t==null?void 0:t.height)??JC,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=`${QC}-${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=iy().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(WC,{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"})))}ej.displayName="MiniMap";var XC=b.memo(ej);function YC(){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 ZC(){return me.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},me.createElement("path",{d:"M0 0h32v4.2H0z"}))}function eS(){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 tS(){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 nS(){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 oS=t=>({isInteractive:t.nodesDraggable||t.nodesConnectable||t.elementsSelectable,minZoomReached:t.transform[2]<=t.minZoom,maxZoomReached:t.transform[2]>=t.maxZoom}),tj=({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(oS,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(YC,null)),me.createElement(Ad,{onClick:ne,className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:R},me.createElement(ZC,null))),r&&me.createElement(Ad,{className:"react-flow__controls-fitview",onClick:ae,title:"fit view","aria-label":"fit view"},me.createElement(eS,null)),s&&me.createElement(Ad,{className:"react-flow__controls-interactive",onClick:oe,title:"toggle interactivity","aria-label":"toggle interactivity"},T?me.createElement(nS,null):me.createElement(tS,null)),j)};tj.displayName="Controls";var aS=b.memo(tj),ei;(function(t){t.Lines="lines",t.Dots="dots",t.Cross="cross"})(ei||(ei={}));function rS({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 sS({color:t,radius:n}){return me.createElement("circle",{cx:n,cy:n,r:n,fill:t})}const iS={[ei.Dots]:"#91919a",[ei.Lines]:"#eee",[ei.Cross]:"#e2e2e2"},lS={[ei.Dots]:1,[ei.Lines]:1,[ei.Cross]:6},cS=t=>({transform:t.transform,patternId:`pattern-${t.rfId}`});function nj({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(cS,Wo),N=m||iS[n],C=s||lS[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(sS,{color:N,radius:q/p}):me.createElement(rS,{dimensions:I,color:N,lineWidth:l})),me.createElement("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${w+t})`}))}nj.displayName="Background";var uS=b.memo(nj),_d;(function(t){t.Line="line",t.Handle="handle"})(_d||(_d={}));function dS({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 oj={width:0,height:0,x:0,y:0},pS={...oj,pointerX:0,pointerY:0,aspectRatio:1};function mS({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=vy(),D=typeof t=="string"?t:R,q=po(),I=b.useRef(null),F=b.useRef(pS),Y=b.useRef(oj),ne=Vy(),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=Gv().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=dS({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 Rx=b.memo(mS);const hS=["top-left","top-right","bottom-left","bottom-right"],fS=["top","right","bottom","left"];function gS({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,fS.map(R=>me.createElement(Rx,{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})),hS.map(R=>me.createElement(Rx,{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 xS=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),aj=(...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 vS={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 yS=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,...vS,width:n,height:n,stroke:t,strokeWidth:s?Number(r)*24/Number(n):r,className:aj("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(yS,{ref:p,iconNode:n,className:aj(`lucide-${xS(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 jS=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 bS=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 wS=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 NS=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 rj=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 Fx=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 CS=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 sj=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 ij=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 SS=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 kS=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 lj=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 AS=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 cj=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 uj=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 dj=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 ES=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 MS=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 TS=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 pj=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 IS=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 PS=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 _S=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 OS=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 RS=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 FS=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 mj=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 hj=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 fj=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 zS=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 LS=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 zx=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 gj=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 DS=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 $S({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(BC,{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 BS=180,VS=156,xj={message:{label:"Mensagem",color:"#2563eb",Icon:PS},richMessage:{label:"Mensagem rica",color:"#0891b2",Icon:Uf},input:{label:"Input",color:"#0f766e",Icon:LS},api:{label:"API",color:"#ea580c",Icon:Bf},condition:{label:"Condição",color:"#7c3aed",Icon:bg},end:{label:"Fim",color:"#475569",Icon:AS},group:{label:"Encapsulador",color:"#0d9488",Icon:cj},component:{label:"Componente",color:"#2563eb",Icon:Ho}};function US(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:rj}:((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:cj}:((x=t.component)==null?void 0:x.type)==="files"?{label:"Arquivos",color:"#0f766e",Icon:lj}:((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:ij}:((E=t.component)==null?void 0:E.type)==="loop"?{label:"Loop",color:"#0ea5e9",Icon:mj}:((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:gj}:((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}:xj.component}function Hi(t){t.stopPropagation()}function qS({data:t,selected:n}){var ae;const r=t.step,s=r.type==="component"?US(r):xj[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(gS,{isVisible:!m,minWidth:BS,minHeight:VS,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(_S,{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 HS(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 vj=b.memo(qS,HS);vj.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 Lx(t,n){const r=Mp(t).map(s=>s.value);return Array.from(new Set([n,...r].filter(Boolean)))}const WS={agentsMd:"",guardrails:"",blockedTerms:[],rules:[],skills:[],subagents:[],mcpServers:[]},GS=[{id:"profile",label:"Perfil",icon:Ho},{id:"guardrails",label:"Guardrails",icon:Zs},{id:"manifest",label:"Manifest",icon:Od},{id:"skills",label:"Skills",icon:DS},{id:"subagents",label:"Subagents",icon:Qi},{id:"rules",label:"Rules",icon:bg},{id:"mcp",label:"MCP",icon:RS}],JS=[{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 Dx(t,n){try{const r=JSON.parse(t);return r&&typeof r=="object"&&!Array.isArray(r)?r:n}catch{return n}}function $x(t){const n=t&&typeof t=="object"&&!Array.isArray(t)?t:{};return JSON.stringify(n,null,2)}function KS({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={...WS,...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:$x(he.inputSchema),onChange:Be=>le(z,Z,{inputSchema:Dx(Be.target.value,he.inputSchema||{})})})]}),e.jsxs("label",{children:["Output schema",e.jsx("textarea",{rows:6,spellCheck:!1,value:$x(he.outputSchema),onChange:Be=>le(z,Z,{outputSchema:Dx(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:JS.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:GS.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="",yj="",QS="false".toLowerCase()==="true",Hf="canvas_flow_auth_token";let wg="";const zc=typeof window<"u"?window.location.origin:"",XS=QS;function jj(){return localStorage.getItem(Hf)||""}function Jm(t){t?localStorage.setItem(Hf,t):localStorage.removeItem(Hf)}function bj(){return!!(jj()||wg||yj)}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=jj()||wg||yj;return t?{Authorization:`Bearer ${t}`}:{}}function YS(t){!t.loginRequired&&t.apiToken&&(wg=t.apiToken)}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").then(t=>(YS(t),t))},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 ZS(t){return t.flowId?"Fluxo":"Todos"}function ek({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(FS,{size:15}),"Atualizar"]})]}),!bj()&&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(dj,{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:[ZS(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 wj(t){return sh.find(n=>n.serverUrl===String(t||"").trim())}function tk(t){var n,r;return((r=(n=wj(t))==null?void 0:n.oauthScopes)==null?void 0:r.join(" "))||""}function Bx(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 Vx(t,n){return String(t.name||t.label||t.title||Ap(t,n)).trim()||n}function Ux(t){return String(t.description||t.role||t.instructions||t.instruction||t.action||"").trim()}function nk(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 ok(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 qx(t){const n=String(t||"").trim();if(!n)return"";if(ok(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 ak(t,n){var r,s;return!!((r=t.openai)!=null&&r.enabled||n["openai.apiKey"]||(s=t.openai)!=null&&s.apiKey)}function rk(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 sk(t,n,r){var s,l,p,m,h,f,x,j,w;return t==="openai"?ak(n,r):t==="azure_openai"?rk(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 Nj(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=Nj(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 ik(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 lk(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 ck(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 uk(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 dk(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 pk(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+=dk(t.slice(s,p)),s=p}return r||" "}function mk(){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 Hx=[{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"}],hk=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 Cj(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 fk(t,n){const r=Cj(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 gk(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 xk(t){const r=Cj(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 Wx(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"],vk=[{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"}],yk=[{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"}],jk=[{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"}],bk=new Set(["find","findOne","updateOne","updateMany","upsertOne","deleteOne","deleteMany","count","aggregate"]),wk=new Set(["insertOne","insertMany"]),Nk=new Set(["updateOne","updateMany","upsertOne"]),Ck=new Set(["find","findOne"]),Sk=new Set(["find","findOne"]),kk=new Set(["find","aggregate","insertMany"]),Ak=new Set(["find","aggregate"]),Ek=new Set(["find","findOne","updateOne","updateMany","upsertOne","deleteOne","deleteMany","count","aggregate"]),Gx=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},Mk=[{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"}],Jx={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 Kx(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 Qx(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 Tk(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 Ik(t){try{return JSON.stringify(t)}catch{return String(t)}}function Pk(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 _k(t){const n=String(t||"").trim();if(!n)return"";const r=Pk(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||Ik(n)}${h}`}return`${r+1}. ${String(n)}`}).join(`
|
|
429
|
-
`)}function Xx(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 Sj(t){return Array.isArray(t)?"array":typeof t=="boolean"?"boolean":typeof t=="number"?"number":"text"}function kj(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 Ok(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 Rk(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=Sj(f),w=kj(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 Yx(){return{method:"GET",url:"https://example.com",headers:{},params:{},bodyType:"none"}}function Fk(){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]||Yx(),...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,Yx()]),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:{...Fk(),...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 zk({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 Lk({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 Dk({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 $k({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=Jx[re])==null?void 0:we.title)||"campo"}`,onClick:Me=>{Me.preventDefault(),Me.stopPropagation(),D(et=>et===re?"":re)},children:"?"})},ge=re=>{const we=Jx[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=Tk(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(uj,{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(hk,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:Mk.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,". ",Kx(re,H,se)]}),e.jsx("small",{children:Qx(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(NS,{size:14})}),e.jsx("button",{type:"button","aria-label":"Descer etapa",onClick:()=>Z(we,1),disabled:we===G.length-1,children:e.jsx(jS,{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=Qx(re,we);return e.jsxs("option",{value:Me,children:[Kx(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?pk(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 Zx({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 Bk({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 Vk=[{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 Uk(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 ev({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=Sj(f.value),w=kj(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 qk(){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 tv({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,...qk()]),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 Aj=["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":Aj.includes(h)?h:"string",required:s.has(l),enumValues:j,description:String(m.description||"")}})}catch{return[]}}function Hk(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 Wk(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 Gk(t){const n={},r=[];t.forEach(l=>{const p=l.name.trim();if(!p)return;const m=Wk(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 Ej(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<${Ej(r)}>`}return Array.isArray(t.enum)&&t.enum.length?`${n} enum`:n}function Mj(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?Mj(w,j?`${f}[]`:f,x):[];return[{path:f,type:Ej(h),required:x,description:String(h.description||"")},...N]})}function Jk(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 nv(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 ov(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 av(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 Kk({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 rv({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:Aj.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 Qk({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,sk(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:tk(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=Nj(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=xk(W),Ge=gk(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=_k(r.condition||""),Un=(Xe,ln)=>{const wo={conditionValidationPath:Xe,conditionValidationType:ln||void 0};ln&&(wo.conditionMode="js",wo.condition=fk(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"}),yk.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(Zx,{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:Wx(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=wj((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:Jk(_),mcpInputSchema:nv(_),...W&&Object.keys(W).length?{mcpOutputSchema:nv(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:Vx(S,je),description:Ux(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:Bx(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.",_=nk(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=Vx(ke,ut),tn=Ux(ke),Un=Vc(c,ke,Ge),Xe=!!Un,ln=Bx((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=Uk(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:mk(),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"?qx(Mr):"",tr=T==="json"?Aa:Mr,is=T==="json"?Gr(tr):T==="js"?qx(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=Xx(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=Ok(((Dr=n.component)==null?void 0:Dr.extraFieldsFilter)||{},(jo=n.component)==null?void 0:jo.extraFieldsFilterRules),Ir=c=>{L({extraFieldsFilterRules:c,extraFieldsFilter:Rk(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=ik({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=lk(ga,Io,ji,bi,ec),Gc=ck(l,_s),nc=uk(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)?Mj(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]:Gk(W)})},_o=c=>{Or(c,S=>[...S,Hk(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=bk.has(Jt),hl=wk.has(Jt),Ln=Nk.has(Jt),Fr=Ck.has(Jt),cs=Sk.has(Jt),xo=kk.has(Jt),Ai=Ak.has(Jt),Qu=Ek.has(Jt),ya=Gx.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(zk,{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:vk.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,_=Xx(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(Lk,{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(Dk,{cards:((hc=st.carousel)==null?void 0:hc.cards)||[],onChange:c=>Tn({carousel:{cards:c}})}),!hn&&st.type==="appointmentFlow"&&e.jsx($k,{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:Vk.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(rv,{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(rv,{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,_=ov(((W=n.component)==null?void 0:W.mcpApiRequestsJson)||"[]");L({mcpApiCallMode:S,...S==="multi"&&_.length===0?{mcpApiRequestsJson:av([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(Kk,{requests:ov(n.component.mcpApiRequestsJson||"[]"),responseName:((Tl=n.component)==null?void 0:Tl.responseName)||n.responseName||"mcp",executionMode:n.component.mcpApiExecutionMode||"sequential",onChange:c=>L({mcpApiRequestsJson:av(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(uj,{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(Hx,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(tv,{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(ev,{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:Wx(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(Hx,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(tv,{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(ev,{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,...Gx.has(S)?{mongoLlmMode:"full"}:{}})},children:jk.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(Bk,{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(Zx,{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:""}},sv=Array.from(new Map(Object.values(jh).flat().map(t=>[t.value,t])).values()),iv=[{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"}],lv=[{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:OS,color:"#2563eb"},{id:"whatsapp",title:"WhatsApp",subtitle:"Canal e entrega",Icon:pj,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 cv(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 Xk(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 uv(t,n){return!n||t.some(r=>r.value===n)?t:[{value:n,label:`${n} (atual)`},...t]}function Yk(t){return t.slice(0,3).toUpperCase()}function Zk(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 eA({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(()=>lv.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(()=>Zk(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:cv(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:uv(sv,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:uv(iv,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:Yk(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(hj,{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(pj,{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:sv.map($=>e.jsx("option",{value:$.value},$.value))}),e.jsx("datalist",{id:"provider-embedding-model-options",children:iv.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:lv.map($=>{const z=$.Icon,Z=cv($.id,l,m),he=Xk($.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(bS,{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 tA={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{...tA,...t||{}}}const dv={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{...dv,...t||{},sinchApiMode:n.sinchApiMode==="broker"?"relay":n.sinchApiMode||dv.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 pv(){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 nA(){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 oA(){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 aA(){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 rA(){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 sA(){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 iA(){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 lA(){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:nA()},{id:"scheduling-whatsapp",name:"Agendamento inteligente",segment:"Atendimento",description:"Coleta CPF, consulta disponibilidade via MCP/API e renderiza opcoes interativas.",channel:"whatsapp",config:oA()},{id:"backoffice-agentops",name:"Backoffice agentico",segment:"Operacoes",description:"Cron, API, MongoDB e dashboard para rotinas internas com rastreabilidade.",channel:"webWidget",config:aA()},{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:rA()},{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:sA()},{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:iA()}]}const cA={canvasStep:vj},uA={canvasFlowEdge:$S},Tj=108,Ij=72,dA=120,pA=180,eg=180,tg=156,mA=Tj,hA=Ij,mv=36,hv=74,fA=36,Pj=58,_j=18,gA=18,xA=18,Nh=18,vA=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 yA(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 Oj(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 Rj(t){return t.map((n,r)=>{const s=yA(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(Rj(t),null,2)}function fv(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)=>Oj(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 jA="canvas_flow_eval_suites_v1";function bA(t,n,r){return`${jA}:${t}:${n||r||"draft"}`}function wA(t){try{return typeof localStorage>"u"?[]:Ip(JSON.parse(localStorage.getItem(t)||"[]"))}catch{return[]}}function gv(t,n){try{if(typeof localStorage>"u")return;localStorage.setItem(t,JSON.stringify(Ip(n)))}catch{}}function NA(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 CA(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 xv=[{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:lj,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:gj,color:"#dc2626"},{type:"mcp",title:"MCP",description:"Contrato de ferramenta com schema, LLM e chamada API externa opcional.",category:"Acoes",Icon:fj,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:mj,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:ij,color:"#0f766e"},{type:"debug",title:"Debug",description:"Registra um snapshot do contexto atual do fluxo.",category:"Dev",Icon:rj,color:"#f59e0b"}],vv=['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 SA(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 yv(t){try{return JSON.parse(t)}catch{return null}}function kA(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?yv(n.slice(s+1)):null;if(p)return{title:l||"Debug",payload:p}}const r=yv(n);return r&&typeof r=="object"&&("stepId"in r||"slots"in r)?{title:typeof r.title=="string"?r.title:"Debug",payload:r}:null}function AA(t){return t.kind==="dashboard"&&t.debug&&typeof t.debug=="object"?t.debug:null}function Fj(t){return!!(t&&typeof t=="object"&&!Array.isArray(t))}function zj(t){return Array.isArray(t)?t.map((n,r)=>[String(r),n]):Fj(t)?Object.entries(t):[]}function Lj(t,n="root"){return!t||typeof t!="object"?[]:[n,...zj(t).flatMap(([r,s])=>Lj(s,`${n}.${r}`))]}function EA({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 Dj({name:t,value:n,path:r,level:s,isLast:l,collapsedPaths:p,onToggle:m}){const h=Array.isArray(n),f=Fj(n),x=h||f,j=zj(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(sj,{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(Dj,{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(EA,{value:n}),!l&&e.jsx("span",{className:"json-punctuation",children:","})]})}function MA({value:t}){const[n,r]=b.useState(new Set),s=b.useMemo(()=>Lj(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(Dj,{value:t,path:"root",level:0,isLast:!0,collapsedPaths:n,onToggle:l})})]})}function TA(t){if(t.kind==="rich"&&t.content)return t.content}const $d=["#2563eb","#16a34a","#f59e0b","#dc2626","#7c3aed","#0891b2","#db2777","#475569"];function IA(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 PA({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 _A({payload:t}){const n=Array.isArray(t.cards)?t.cards:[],r=Array.isArray(t.rows)?t.rows:[],s=IA(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(PA,{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 OA(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 RA({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 FA(t){return String(t.value||t.label||t.title||t.id||"").trim()}function zA(t){return String(t.label||t.title||t.value||t.id||"").trim()}function LA({content:t,disabled:n,onSelect:r}){var l,p,m,h,f,x,j,w,N;const s=C=>{const E=FA(C);!E||n||r==null||r(E,zA(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 DA({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 $A(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 jv(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 BA(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 $j(t,n=!1){return`${t.name} - v${t.version}${t.versionName?` · ${t.versionName}`:""}${t.packageName?` (no pacote: ${t.packageName})`:""}${n?" (produção)":""}`}function VA(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 bv(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 wv(t,n=!1){return $j(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 UA(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 qA({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 Bj(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:mA,height:hA}:Bj(t):{width:Tj,height:Ij}}function Ng(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 HA(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(_j,t),y:Math.max(Pj,n)}}function Nv(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 Vj(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 Cv(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 Sv(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 Ng(r,s)}function Uj(t,n){return t.x>=n.x&&t.x<=n.right&&t.y>=n.y&&t.y<=n.bottom}function WA(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 GA(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 JA(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 Cg(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 KA(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 QA(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&&Cg(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,_j-m.minX),f=Math.max(0,Pj-m.minY),x=Bj(s),j=Math.max(x.width,Math.ceil(m.maxX+h+gA)),w=Math.max(x.height,Math.ceil(m.maxY+f+xA)),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"||KA(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 qj(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 Sg(t){const n=Dc(t.steps),r=qj(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 kv(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 XA(t){const n=new Map;return t.forEach(r=>{r.parentId&&n.set(r.parentId,(n.get(r.parentId)||0)+1)}),n}function kg(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?kg(s,t,n):Zi(t,n);return Ng(l,HA(s,_h(t)))}function Av(t,n,r=Nh){const s={x:t.x+t.width/2,y:t.y+t.height/2};return Uj(s,Vj(n,r))}function Hj(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=Nv(qp(p,s,l),r.margin||0),f=Nv(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);(Av(w,h,x)||Av(N,f,x))&&m.add(j.id)}),m}function YA(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)&&!GA(m,n)}).map(m=>{const h=Up(m,n),f=Vj(h,Nh);return{step:m,bounds:h,ratio:WA(s,h),centerInside:Uj(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 Wj(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?kg(m,p,s):Zi(p,s),f=Hj(t,n,r);let x=!1;const j=t.map(w=>{if(!f.has(w.id)||Cg(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 ZA(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=Hj(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=Cg(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 Ev(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"||JA(j,p,l))return j;const N=kg(w,j,x),C=Ng(N,_h(j)),E=YA(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=Wj(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 eE(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 tE=["skills","subagents","mcpServers"];function nE(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 oE(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 aE(t){const n=new Set;return(t.steps||[]).forEach(r=>{var m,h;if(!nE(r))return;const s=((m=r.component)==null?void 0:m.agentManifest)||{};let l=0,p=0;tE.forEach(f=>{const x=Array.isArray(s[f])?s[f]||[]:[];p+=x.length,x.forEach(j=>{const w=oE(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 Gj(t,n){const r=aE(n);return t.edgeRole==="manifest"||r.has(t.source)||r.has(t.target)}function Mv(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=Sg({...t,steps:r}),m=XA(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 Tv(t,n={}){const r=Dc(t.steps),s={...t,steps:r},l=Sg(s),p=new Map(r.map(h=>[h.id,h])),m=qj(s);return t.edges.map(h=>{const f=kv(h.source,p,l,m),x=kv(h.target,p,l,m);if(!f||!x||f===x)return null;const j=f!==h.source||x!==h.target,w=Gj(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 rE(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 sE(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 iE(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 lE=[{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 cE(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 uE(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 dE(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=cE(l);p&&uE(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:lE,response:n}}function pE(){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(()=>pv()),[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(()=>Mv(t)),we=b.useRef(Ct),[Me,et]=b.useState(()=>Tv(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(vv),[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(()=>lA(),[]),Ma=b.useMemo(()=>t.steps.find(u=>u.id===it),[t.steps,it]),ac=Ct.length>dA||Me.length>pA,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(()=>rE(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(()=>dE(t),[t]),Ee=l.trim()||"default-agent",It=!!(f&&m&&Ee!==m.trim()),ja=bA(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(wA(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?xv.filter(y=>`${y.title} ${y.description} ${y.category}`.toLowerCase().includes(u)):xv},[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(()=>DA({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(()=>qA({apiUrl:zc,flowId:f||"<FLOW_ID_SALVO>",flowName:r,flowResponseName:t.responseName,agentId:vo,channel:Zo,webWidget:sr,whatsapp:ps,whatsappWebhookUrl:Ro,apiTokenConfigured:bj()}),[vo,Zo,t.responseName,r,f,sr,ps,Ro]),_t=b.useMemo(()=>NA(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(()=>BA(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(()=>VA(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=`${jv(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:Wj(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?ZA(k,u,{includeAttached:!0,margin:vA,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:QA(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-mv,y:ue.minY-hv},ze=Math.max(eg,ue.maxX-ue.minX+mv*2),Qe=Math.max(tg,ue.maxY-ue.minY+hv+fA);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"?sE(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(iE(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=>Cv(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={...Sv(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{...Sv(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=>Cv(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 Gj(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=>Ev(te,B))},[io]),tu=b.useCallback((u,y)=>{we.current=wp(we.current,y),n(k=>Ev(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=Ly(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=Mv(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=eE(y,u);return we.current=k,k})},[t,Us,pn,vs,wn,xs,Te,hc,Ur,Vs]),b.useEffect(()=>{et(Tv(t,{onEdit:Tl,onDelete:Oi}))},[t,Tl,Oi]),b.useEffect(()=>{const u=new Set(t.steps.map(k=>k.id)),y=Sg(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=fv(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=fv(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=CA(_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=Rj(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)=>Oj(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);gv(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 gv(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||pv())),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=UA(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=`${jv(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=$A(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=OA(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(kS,{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(wS,{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(Fx,{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(SS,{size:16}),"API"]}),e.jsxs("button",{type:"button",onClick:()=>{en(!1),Zr(!0)},disabled:Kt,children:[e.jsx(dj,{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:wv(u,bv(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(IS,{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(fj,{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(Yy,{nodes:Ct,edges:Me,nodeTypes:cA,edgeTypes:uA,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(aS,{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(ES,{size:16}),e.jsx("span",{children:"Lib. Contexto"})]})}),!ac&&e.jsx(XC,{pannable:!0,zoomable:!0,nodeColor:SA}),ac&&e.jsx(zp,{position:"top-right",className:"canvas-performance-badge",children:"Modo leve: minimapa oculto"}),e.jsx(uS,{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=kA(u),B=AA(u),te=TA(u),ue=`${u.role}-${y}`;if(B)return e.jsxs("div",{className:"message dashboard-message",children:[e.jsx("span",{children:u.role}),e.jsx(_A,{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(sj,{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(LA,{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(hj,{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:Lx(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(vv),_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(Qk,{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(MA,{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:wv(u,bv(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:$j(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(zS,{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(CS,{size:15}),"Pizza"]}),e.jsxs("button",{className:hi==="line"?"active":"",onClick:()=>Ql("line"),children:[e.jsx(Fx,{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(RA,{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(ek,{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(KS,{agentId:Sn,agentName:us,config:{model:t.model,llmProvider:t.llmProvider||"openai",agentSpec:t.agentSpec},providerOptions:df,modelOptions:Lx(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(eA,{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 mE({children:t}){const[n,r]=b.useState(!0),[s,l]=b.useState(XS),[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(zx,{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(TS,{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(zx,{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(MS,{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"})]})})}db.createRoot(document.getElementById("root")).render(e.jsx(me.StrictMode,{children:e.jsx(mE,{children:e.jsx(pE,{})})}));
|