var BankmlSpaceUIF=function(di){"use strict";var Eu={exports:{}},fi={},Cu={exports:{}},K={};/** * @license React * react.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var fr=Symbol.for("react.element"),Bf=Symbol.for("react.portal"),Wf=Symbol.for("react.fragment"),bf=Symbol.for("react.strict_mode"),Vf=Symbol.for("react.profiler"),Qf=Symbol.for("react.provider"),Yf=Symbol.for("react.context"),Kf=Symbol.for("react.forward_ref"),Xf=Symbol.for("react.suspense"),Gf=Symbol.for("react.memo"),Jf=Symbol.for("react.lazy"),Nu=Symbol.iterator;function Zf(e){return e===null||typeof e!="object"?null:(e=Nu&&e[Nu]||e["@@iterator"],typeof e=="function"?e:null)}var ju={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_u=Object.assign,Pu={};function Rn(e,t,n){this.props=e,this.context=t,this.refs=Pu,this.updater=n||ju}Rn.prototype.isReactComponent={},Rn.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=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,e,t,"setState")},Rn.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function $u(){}$u.prototype=Rn.prototype;function bo(e,t,n){this.props=e,this.context=t,this.refs=Pu,this.updater=n||ju}var Vo=bo.prototype=new $u;Vo.constructor=bo,_u(Vo,Rn.prototype),Vo.isPureReactComponent=!0;var Lu=Array.isArray,Tu=Object.prototype.hasOwnProperty,Qo={current:null},Ru={key:!0,ref:!0,__self:!0,__source:!0};function zu(e,t,n){var r,i={},o=null,l=null;if(t!=null)for(r in t.ref!==void 0&&(l=t.ref),t.key!==void 0&&(o=""+t.key),t)Tu.call(t,r)&&!Ru.hasOwnProperty(r)&&(i[r]=t[r]);var s=arguments.length-2;if(s===1)i.children=n;else if(1>>1,ae=I[ee];if(0>>1;eei(je,V))_ei(ge,je)?(I[ee]=ge,I[_e]=V,ee=_e):(I[ee]=je,I[We]=V,ee=We);else if(_ei(ge,V))I[ee]=ge,I[_e]=V,ee=_e;else break e}}return b}function i(I,b){var V=I.sortIndex-b.sortIndex;return V!==0?V:I.id-b.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var l=Date,s=l.now();e.unstable_now=function(){return l.now()-s}}var u=[],p=[],g=1,y=null,f=3,v=!1,w=!1,E=!1,k=typeof setTimeout=="function"?setTimeout:null,a=typeof clearTimeout=="function"?clearTimeout:null,d=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function m(I){for(var b=n(p);b!==null;){if(b.callback===null)r(p);else if(b.startTime<=I)r(p),b.sortIndex=b.expirationTime,t(u,b);else break;b=n(p)}}function x(I){if(E=!1,m(I),!w)if(n(u)!==null)w=!0,me(N);else{var b=n(p);b!==null&&J(x,b.startTime-I)}}function N(I,b){w=!1,E&&(E=!1,a(L),L=-1),v=!0;var V=f;try{for(m(b),y=n(u);y!==null&&(!(y.expirationTime>b)||I&&!Q());){var ee=y.callback;if(typeof ee=="function"){y.callback=null,f=y.priorityLevel;var ae=ee(y.expirationTime<=b);b=e.unstable_now(),typeof ae=="function"?y.callback=ae:y===n(u)&&r(u),m(b)}else r(u);y=n(u)}if(y!==null)var rt=!0;else{var We=n(p);We!==null&&J(x,We.startTime-b),rt=!1}return rt}finally{y=null,f=V,v=!1}}var _=!1,j=null,L=-1,C=5,D=-1;function Q(){return!(e.unstable_now()-DI||125ee?(I.sortIndex=V,t(p,I),n(u)===null&&I===n(p)&&(E?(a(L),L=-1):E=!0,J(x,V-ee))):(I.sortIndex=ae,t(u,I),w||v||(w=!0,me(N))),I},e.unstable_shouldYield=Q,e.unstable_wrapCallback=function(I){var b=f;return function(){var V=f;f=b;try{return I.apply(this,arguments)}finally{f=V}}}})(Au),Fu.exports=Au;var ap=Fu.exports;/** * @license React * react-dom.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var cp=h,Je=ap;function M(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Go=Object.prototype.hasOwnProperty,dp=/^[: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]*$/,Uu={},Bu={};function fp(e){return Go.call(Bu,e)?!0:Go.call(Uu,e)?!1:dp.test(e)?Bu[e]=!0:(Uu[e]=!0,!1)}function pp(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function mp(e,t,n,r){if(t===null||typeof t>"u"||pp(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Ae(e,t,n,r,i,o,l){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=l}var Le={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Le[e]=new Ae(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Le[t]=new Ae(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){Le[e]=new Ae(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Le[e]=new Ae(e,2,!1,e,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(e){Le[e]=new Ae(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){Le[e]=new Ae(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){Le[e]=new Ae(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){Le[e]=new Ae(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){Le[e]=new Ae(e,5,!1,e.toLowerCase(),null,!1,!1)});var Jo=/[\-:]([a-z])/g;function Zo(e){return e[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(e){var t=e.replace(Jo,Zo);Le[t]=new Ae(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Jo,Zo);Le[t]=new Ae(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Jo,Zo);Le[t]=new Ae(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){Le[e]=new Ae(e,1,!1,e.toLowerCase(),null,!1,!1)}),Le.xlinkHref=new Ae("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){Le[e]=new Ae(e,1,!1,e.toLowerCase(),null,!0,!0)});function qo(e,t,n,r){var i=Le.hasOwnProperty(t)?Le[t]:null;(i!==null?i.type!==0:r||!(2s||i[l]!==o[s]){var u=` `+i[l].replace(" at new "," at ");return e.displayName&&u.includes("")&&(u=u.replace("",e.displayName)),u}while(1<=l&&0<=s);break}}}finally{sl=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?hr(e):""}function hp(e){switch(e.tag){case 5:return hr(e.type);case 16:return hr("Lazy");case 13:return hr("Suspense");case 19:return hr("SuspenseList");case 0:case 2:case 15:return e=ul(e.type,!1),e;case 11:return e=ul(e.type.render,!1),e;case 1:return e=ul(e.type,!0),e;default:return""}}function al(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Dn:return"Fragment";case Mn:return"Portal";case tl:return"Profiler";case el:return"StrictMode";case rl:return"Suspense";case il:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case bu:return(e.displayName||"Context")+".Consumer";case Wu:return(e._context.displayName||"Context")+".Provider";case nl:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ol:return t=e.displayName||null,t!==null?t:al(e.type)||"Memo";case At:t=e._payload,e=e._init;try{return al(e(t))}catch{}}return null}function gp(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return al(t);case 8:return t===el?"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 t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Ht(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Yu(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function yp(e){var t=Yu(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(l){r=""+l,o.call(this,l)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(l){r=""+l},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function yi(e){e._valueTracker||(e._valueTracker=yp(e))}function Ku(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Yu(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function vi(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function cl(e,t){var n=t.checked;return ce({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Xu(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Ht(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Gu(e,t){t=t.checked,t!=null&&qo(e,"checked",t,!1)}function dl(e,t){Gu(e,t);var n=Ht(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?fl(e,t.type,n):t.hasOwnProperty("defaultValue")&&fl(e,t.type,Ht(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Ju(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function fl(e,t,n){(t!=="number"||vi(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var gr=Array.isArray;function On(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=wi.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function yr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var vr={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},vp=["Webkit","ms","Moz","O"];Object.keys(vr).forEach(function(e){vp.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),vr[t]=vr[e]})});function ra(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||vr.hasOwnProperty(e)&&vr[e]?(""+t).trim():t+"px"}function ia(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=ra(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var wp=ce({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 hl(e,t){if(t){if(wp[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(M(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(M(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(M(61))}if(t.style!=null&&typeof t.style!="object")throw Error(M(62))}}function gl(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){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 yl=null;function vl(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var wl=null,In=null,Fn=null;function oa(e){if(e=Hr(e)){if(typeof wl!="function")throw Error(M(280));var t=e.stateNode;t&&(t=Bi(t),wl(e.stateNode,e.type,t))}}function la(e){In?Fn?Fn.push(e):Fn=[e]:In=e}function sa(){if(In){var e=In,t=Fn;if(Fn=In=null,oa(e),t)for(e=0;e>>=0,e===0?32:31-(Lp(e)/Tp|0)|0}var Ci=64,Ni=4194304;function Sr(e){switch(e&-e){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 e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function ji(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,o=e.pingedLanes,l=n&268435455;if(l!==0){var s=l&~i;s!==0?r=Sr(s):(o&=l,o!==0&&(r=Sr(o)))}else l=n&~i,l!==0?r=Sr(l):o!==0&&(r=Sr(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&i)&&(i=r&-r,o=t&-t,i>=o||i===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Er(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-ct(t),e[t]=n}function Dp(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Tr),Da=" ",Oa=!1;function Ia(e,t){switch(e){case"keyup":return am.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Fa(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Un=!1;function dm(e,t){switch(e){case"compositionend":return Fa(t);case"keypress":return t.which!==32?null:(Oa=!0,Da);case"textInput":return e=t.data,e===Da&&Oa?null:e;default:return null}}function fm(e,t){if(Un)return e==="compositionend"||!Il&&Ia(e,t)?(e=$a(),Ti=Tl=Vt=null,Un=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Va(n)}}function Ya(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Ya(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Ka(){for(var e=window,t=vi();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=vi(e.document)}return t}function Hl(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function xm(e){var t=Ka(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Ya(n.ownerDocument.documentElement,n)){if(r!==null&&Hl(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=n.textContent.length,o=Math.min(r.start,i);r=r.end===void 0?o:Math.min(r.end,i),!e.extend&&o>r&&(i=r,r=o,o=i),i=Qa(n,o);var l=Qa(n,r);i&&l&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==l.node||e.focusOffset!==l.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(l.node,l.offset)):(t.setEnd(l.node,l.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Bn=null,Ul=null,Dr=null,Bl=!1;function Xa(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Bl||Bn==null||Bn!==vi(r)||(r=Bn,"selectionStart"in r&&Hl(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Dr&&Mr(Dr,r)||(Dr=r,r=Ai(Ul,"onSelect"),0Yn||(e.current=es[Yn],es[Yn]=null,Yn--)}function oe(e,t){Yn++,es[Yn]=e.current,e.current=t}var Xt={},ze=Kt(Xt),be=Kt(!1),mn=Xt;function Kn(e,t){var n=e.type.contextTypes;if(!n)return Xt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in n)i[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function Ve(e){return e=e.childContextTypes,e!=null}function Wi(){se(be),se(ze)}function cc(e,t,n){if(ze.current!==Xt)throw Error(M(168));oe(ze,t),oe(be,n)}function dc(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(M(108,gp(e)||"Unknown",i));return ce({},n,r)}function bi(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Xt,mn=ze.current,oe(ze,e),oe(be,be.current),!0}function fc(e,t,n){var r=e.stateNode;if(!r)throw Error(M(169));n?(e=dc(e,t,mn),r.__reactInternalMemoizedMergedChildContext=e,se(be),se(ze),oe(ze,e)):se(be),oe(be,n)}var $t=null,Vi=!1,ts=!1;function pc(e){$t===null?$t=[e]:$t.push(e)}function zm(e){Vi=!0,pc(e)}function Gt(){if(!ts&&$t!==null){ts=!0;var e=0,t=ne;try{var n=$t;for(ne=1;e>=l,i-=l,Lt=1<<32-ct(t)+i|n<L?(C=j,j=null):C=j.sibling;var D=f(a,j,m[L],x);if(D===null){j===null&&(j=C);break}e&&j&&D.alternate===null&&t(a,j),d=o(D,d,L),_===null?N=D:_.sibling=D,_=D,j=C}if(L===m.length)return n(a,j),ue&&gn(a,L),N;if(j===null){for(;LL?(C=j,j=null):C=j.sibling;var Q=f(a,j,D.value,x);if(Q===null){j===null&&(j=C);break}e&&j&&Q.alternate===null&&t(a,j),d=o(Q,d,L),_===null?N=Q:_.sibling=Q,_=Q,j=C}if(D.done)return n(a,j),ue&&gn(a,L),N;if(j===null){for(;!D.done;L++,D=m.next())D=y(a,D.value,x),D!==null&&(d=o(D,d,L),_===null?N=D:_.sibling=D,_=D);return ue&&gn(a,L),N}for(j=r(a,j);!D.done;L++,D=m.next())D=v(j,a,L,D.value,x),D!==null&&(e&&D.alternate!==null&&j.delete(D.key===null?L:D.key),d=o(D,d,L),_===null?N=D:_.sibling=D,_=D);return e&&j.forEach(function(F){return t(a,F)}),ue&&gn(a,L),N}function k(a,d,m,x){if(typeof m=="object"&&m!==null&&m.type===Dn&&m.key===null&&(m=m.props.children),typeof m=="object"&&m!==null){switch(m.$$typeof){case gi:e:{for(var N=m.key,_=d;_!==null;){if(_.key===N){if(N=m.type,N===Dn){if(_.tag===7){n(a,_.sibling),d=i(_,m.props.children),d.return=a,a=d;break e}}else if(_.elementType===N||typeof N=="object"&&N!==null&&N.$$typeof===At&&wc(N)===_.type){n(a,_.sibling),d=i(_,m.props),d.ref=Ur(a,_,m),d.return=a,a=d;break e}n(a,_);break}else t(a,_);_=_.sibling}m.type===Dn?(d=Cn(m.props.children,a.mode,x,m.key),d.return=a,a=d):(x=ko(m.type,m.key,m.props,null,a.mode,x),x.ref=Ur(a,d,m),x.return=a,a=x)}return l(a);case Mn:e:{for(_=m.key;d!==null;){if(d.key===_)if(d.tag===4&&d.stateNode.containerInfo===m.containerInfo&&d.stateNode.implementation===m.implementation){n(a,d.sibling),d=i(d,m.children||[]),d.return=a,a=d;break e}else{n(a,d);break}else t(a,d);d=d.sibling}d=Zs(m,a.mode,x),d.return=a,a=d}return l(a);case At:return _=m._init,k(a,d,_(m._payload),x)}if(gr(m))return w(a,d,m,x);if(mr(m))return E(a,d,m,x);Xi(a,m)}return typeof m=="string"&&m!==""||typeof m=="number"?(m=""+m,d!==null&&d.tag===6?(n(a,d.sibling),d=i(d,m),d.return=a,a=d):(n(a,d),d=Js(m,a.mode,x),d.return=a,a=d),l(a)):n(a,d)}return k}var Zn=kc(!0),xc=kc(!1),Gi=Kt(null),Ji=null,qn=null,ss=null;function us(){ss=qn=Ji=null}function as(e){var t=Gi.current;se(Gi),e._currentValue=t}function cs(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function er(e,t){Ji=e,ss=qn=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(Qe=!0),e.firstContext=null)}function lt(e){var t=e._currentValue;if(ss!==e)if(e={context:e,memoizedValue:t,next:null},qn===null){if(Ji===null)throw Error(M(308));qn=e,Ji.dependencies={lanes:0,firstContext:e}}else qn=qn.next=e;return t}var yn=null;function ds(e){yn===null?yn=[e]:yn.push(e)}function Sc(e,t,n,r){var i=t.interleaved;return i===null?(n.next=n,ds(t)):(n.next=i.next,i.next=n),t.interleaved=n,Rt(e,r)}function Rt(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var Jt=!1;function fs(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Ec(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function zt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Zt(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,Z&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,Rt(e,n)}return i=r.interleaved,i===null?(t.next=t,ds(r)):(t.next=i.next,i.next=t),r.interleaved=t,Rt(e,n)}function Zi(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,jl(e,n)}}function Cc(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,o=null;if(n=n.firstBaseUpdate,n!==null){do{var l={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};o===null?i=o=l:o=o.next=l,n=n.next}while(n!==null);o===null?i=o=t:o=o.next=t}else i=o=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:o,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function qi(e,t,n,r){var i=e.updateQueue;Jt=!1;var o=i.firstBaseUpdate,l=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var u=s,p=u.next;u.next=null,l===null?o=p:l.next=p,l=u;var g=e.alternate;g!==null&&(g=g.updateQueue,s=g.lastBaseUpdate,s!==l&&(s===null?g.firstBaseUpdate=p:s.next=p,g.lastBaseUpdate=u))}if(o!==null){var y=i.baseState;l=0,g=p=u=null,s=o;do{var f=s.lane,v=s.eventTime;if((r&f)===f){g!==null&&(g=g.next={eventTime:v,lane:0,tag:s.tag,payload:s.payload,callback:s.callback,next:null});e:{var w=e,E=s;switch(f=t,v=n,E.tag){case 1:if(w=E.payload,typeof w=="function"){y=w.call(v,y,f);break e}y=w;break e;case 3:w.flags=w.flags&-65537|128;case 0:if(w=E.payload,f=typeof w=="function"?w.call(v,y,f):w,f==null)break e;y=ce({},y,f);break e;case 2:Jt=!0}}s.callback!==null&&s.lane!==0&&(e.flags|=64,f=i.effects,f===null?i.effects=[s]:f.push(s))}else v={eventTime:v,lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},g===null?(p=g=v,u=y):g=g.next=v,l|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;f=s,s=f.next,f.next=null,i.lastBaseUpdate=f,i.shared.pending=null}}while(!0);if(g===null&&(u=y),i.baseState=u,i.firstBaseUpdate=p,i.lastBaseUpdate=g,t=i.shared.interleaved,t!==null){i=t;do l|=i.lane,i=i.next;while(i!==t)}else o===null&&(i.shared.lanes=0);kn|=l,e.lanes=l,e.memoizedState=y}}function Nc(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=ys.transition;ys.transition={};try{e(!1),t()}finally{ne=n,ys.transition=r}}function bc(){return st().memoizedState}function Im(e,t,n){var r=nn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Vc(e))Qc(t,n);else if(n=Sc(e,t,n,r),n!==null){var i=Ue();gt(n,e,r,i),Yc(n,t,r)}}function Fm(e,t,n){var r=nn(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Vc(e))Qc(t,i);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var l=t.lastRenderedState,s=o(l,n);if(i.hasEagerState=!0,i.eagerState=s,dt(s,l)){var u=t.interleaved;u===null?(i.next=i,ds(t)):(i.next=u.next,u.next=i),t.interleaved=i;return}}catch{}finally{}n=Sc(e,t,i,r),n!==null&&(i=Ue(),gt(n,e,r,i),Yc(n,t,r))}}function Vc(e){var t=e.alternate;return e===fe||t!==null&&t===fe}function Qc(e,t){Vr=no=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Yc(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,jl(e,n)}}var oo={readContext:lt,useCallback:Me,useContext:Me,useEffect:Me,useImperativeHandle:Me,useInsertionEffect:Me,useLayoutEffect:Me,useMemo:Me,useReducer:Me,useRef:Me,useState:Me,useDebugValue:Me,useDeferredValue:Me,useTransition:Me,useMutableSource:Me,useSyncExternalStore:Me,useId:Me,unstable_isNewReconciler:!1},Am={readContext:lt,useCallback:function(e,t){return St().memoizedState=[e,t===void 0?null:t],e},useContext:lt,useEffect:Oc,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,ro(4194308,4,Ac.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ro(4194308,4,e,t)},useInsertionEffect:function(e,t){return ro(4,2,e,t)},useMemo:function(e,t){var n=St();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=St();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Im.bind(null,fe,e),[r.memoizedState,e]},useRef:function(e){var t=St();return e={current:e},t.memoizedState=e},useState:Mc,useDebugValue:Cs,useDeferredValue:function(e){return St().memoizedState=e},useTransition:function(){var e=Mc(!1),t=e[0];return e=Om.bind(null,e[1]),St().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=fe,i=St();if(ue){if(n===void 0)throw Error(M(407));n=n()}else{if(n=t(),Ne===null)throw Error(M(349));wn&30||$c(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,Oc(Tc.bind(null,r,o,e),[e]),r.flags|=2048,Kr(9,Lc.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=St(),t=Ne.identifierPrefix;if(ue){var n=Tt,r=Lt;n=(r&~(1<<32-ct(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Qr++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=l.createElement(n,{is:r.is}):(e=l.createElement(n),n==="select"&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,n),e[kt]=t,e[Ar]=r,pd(e,t,!1,!1),t.stateNode=e;e:{switch(l=gl(n,r),n){case"dialog":le("cancel",e),le("close",e),i=r;break;case"iframe":case"object":case"embed":le("load",e),i=r;break;case"video":case"audio":for(i=0;ior&&(t.flags|=128,r=!0,Xr(o,!1),t.lanes=4194304)}else{if(!r)if(e=eo(l),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Xr(o,!0),o.tail===null&&o.tailMode==="hidden"&&!l.alternate&&!ue)return De(t),null}else 2*he()-o.renderingStartTime>or&&n!==1073741824&&(t.flags|=128,r=!0,Xr(o,!1),t.lanes=4194304);o.isBackwards?(l.sibling=t.child,t.child=l):(n=o.last,n!==null?n.sibling=l:t.child=l,o.last=l)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=he(),t.sibling=null,n=de.current,oe(de,r?n&1|2:n&1),t):(De(t),null);case 22:case 23:return Ks(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?tt&1073741824&&(De(t),t.subtreeFlags&6&&(t.flags|=8192)):De(t),null;case 24:return null;case 25:return null}throw Error(M(156,t.tag))}function Ym(e,t){switch(rs(t),t.tag){case 1:return Ve(t.type)&&Wi(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return tr(),se(be),se(ze),gs(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return ms(t),null;case 13:if(se(de),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(M(340));Jn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return se(de),null;case 4:return tr(),null;case 10:return as(t.type._context),null;case 22:case 23:return Ks(),null;case 24:return null;default:return null}}var ao=!1,Oe=!1,Km=typeof WeakSet=="function"?WeakSet:Set,B=null;function rr(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){pe(e,t,r)}else n.current=null}function Os(e,t,n){try{n()}catch(r){pe(e,t,r)}}var gd=!1;function Xm(e,t){if(Kl=$i,e=Ka(),Hl(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var l=0,s=-1,u=-1,p=0,g=0,y=e,f=null;t:for(;;){for(var v;y!==n||i!==0&&y.nodeType!==3||(s=l+i),y!==o||r!==0&&y.nodeType!==3||(u=l+r),y.nodeType===3&&(l+=y.nodeValue.length),(v=y.firstChild)!==null;)f=y,y=v;for(;;){if(y===e)break t;if(f===n&&++p===i&&(s=l),f===o&&++g===r&&(u=l),(v=y.nextSibling)!==null)break;y=f,f=y.parentNode}y=v}n=s===-1||u===-1?null:{start:s,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(Xl={focusedElem:e,selectionRange:n},$i=!1,B=t;B!==null;)if(t=B,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,B=e;else for(;B!==null;){t=B;try{var w=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var E=w.memoizedProps,k=w.memoizedState,a=t.stateNode,d=a.getSnapshotBeforeUpdate(t.elementType===t.type?E:pt(t.type,E),k);a.__reactInternalSnapshotBeforeUpdate=d}break;case 3:var m=t.stateNode.containerInfo;m.nodeType===1?m.textContent="":m.nodeType===9&&m.documentElement&&m.removeChild(m.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(M(163))}}catch(x){pe(t,t.return,x)}if(e=t.sibling,e!==null){e.return=t.return,B=e;break}B=t.return}return w=gd,gd=!1,w}function Gr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&e)===e){var o=i.destroy;i.destroy=void 0,o!==void 0&&Os(t,n,o)}i=i.next}while(i!==r)}}function co(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Is(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function yd(e){var t=e.alternate;t!==null&&(e.alternate=null,yd(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[kt],delete t[Ar],delete t[ql],delete t[Tm],delete t[Rm])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function vd(e){return e.tag===5||e.tag===3||e.tag===4}function wd(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||vd(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Fs(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Ui));else if(r!==4&&(e=e.child,e!==null))for(Fs(e,t,n),e=e.sibling;e!==null;)Fs(e,t,n),e=e.sibling}function As(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(As(e,t,n),e=e.sibling;e!==null;)As(e,t,n),e=e.sibling}var Te=null,mt=!1;function qt(e,t,n){for(n=n.child;n!==null;)kd(e,t,n),n=n.sibling}function kd(e,t,n){if(wt&&typeof wt.onCommitFiberUnmount=="function")try{wt.onCommitFiberUnmount(Ei,n)}catch{}switch(n.tag){case 5:Oe||rr(n,t);case 6:var r=Te,i=mt;Te=null,qt(e,t,n),Te=r,mt=i,Te!==null&&(mt?(e=Te,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Te.removeChild(n.stateNode));break;case 18:Te!==null&&(mt?(e=Te,n=n.stateNode,e.nodeType===8?Zl(e.parentNode,n):e.nodeType===1&&Zl(e,n),Pr(e)):Zl(Te,n.stateNode));break;case 4:r=Te,i=mt,Te=n.stateNode.containerInfo,mt=!0,qt(e,t,n),Te=r,mt=i;break;case 0:case 11:case 14:case 15:if(!Oe&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var o=i,l=o.destroy;o=o.tag,l!==void 0&&(o&2||o&4)&&Os(n,t,l),i=i.next}while(i!==r)}qt(e,t,n);break;case 1:if(!Oe&&(rr(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){pe(n,t,s)}qt(e,t,n);break;case 21:qt(e,t,n);break;case 22:n.mode&1?(Oe=(r=Oe)||n.memoizedState!==null,qt(e,t,n),Oe=r):qt(e,t,n);break;default:qt(e,t,n)}}function xd(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Km),t.forEach(function(r){var i=ih.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function ht(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=l),r&=~o}if(r=i,r=he()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Jm(r/1960))-r,10e?16:e,tn===null)var r=!1;else{if(e=tn,tn=null,go=0,Z&6)throw Error(M(331));var i=Z;for(Z|=4,B=e.current;B!==null;){var o=B,l=o.child;if(B.flags&16){var s=o.deletions;if(s!==null){for(var u=0;uhe()-Bs?Sn(e,0):Us|=n),Ke(e,t)}function Md(e,t){t===0&&(e.mode&1?(t=Ni,Ni<<=1,!(Ni&130023424)&&(Ni=4194304)):t=1);var n=Ue();e=Rt(e,t),e!==null&&(Er(e,t,n),Ke(e,n))}function rh(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Md(e,n)}function ih(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(M(314))}r!==null&&r.delete(t),Md(e,n)}var Dd;Dd=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||be.current)Qe=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Qe=!1,Vm(e,t,n);Qe=!!(e.flags&131072)}else Qe=!1,ue&&t.flags&1048576&&mc(t,Yi,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;uo(e,t),e=t.pendingProps;var i=Kn(t,ze.current);er(t,n),i=ws(null,t,r,e,i,n);var o=ks();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ve(r)?(o=!0,bi(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,fs(t),i.updater=lo,t.stateNode=i,i._reactInternals=t,js(t,r,e,n),t=Ls(null,t,r,!0,o,n)):(t.tag=0,ue&&o&&ns(t),He(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(uo(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=lh(r),e=pt(r,e),i){case 0:t=$s(null,t,r,e,n);break e;case 1:t=sd(null,t,r,e,n);break e;case 11:t=nd(null,t,r,e,n);break e;case 14:t=rd(null,t,r,pt(r.type,e),n);break e}throw Error(M(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:pt(r,i),$s(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:pt(r,i),sd(e,t,r,i,n);case 3:e:{if(ud(t),e===null)throw Error(M(387));r=t.pendingProps,o=t.memoizedState,i=o.element,Ec(e,t),qi(t,r,null,n);var l=t.memoizedState;if(r=l.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){i=nr(Error(M(423)),t),t=ad(e,t,r,n,i);break e}else if(r!==i){i=nr(Error(M(424)),t),t=ad(e,t,r,n,i);break e}else for(et=Yt(t.stateNode.containerInfo.firstChild),qe=t,ue=!0,ft=null,n=xc(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Jn(),r===i){t=Mt(e,t,n);break e}He(e,t,r,n)}t=t.child}return t;case 5:return jc(t),e===null&&os(t),r=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,l=i.children,Gl(r,i)?l=null:o!==null&&Gl(r,o)&&(t.flags|=32),ld(e,t),He(e,t,l,n),t.child;case 6:return e===null&&os(t),null;case 13:return cd(e,t,n);case 4:return ps(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Zn(t,null,r,n):He(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:pt(r,i),nd(e,t,r,i,n);case 7:return He(e,t,t.pendingProps,n),t.child;case 8:return He(e,t,t.pendingProps.children,n),t.child;case 12:return He(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,o=t.memoizedProps,l=i.value,oe(Gi,r._currentValue),r._currentValue=l,o!==null)if(dt(o.value,l)){if(o.children===i.children&&!be.current){t=Mt(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var s=o.dependencies;if(s!==null){l=o.child;for(var u=s.firstContext;u!==null;){if(u.context===r){if(o.tag===1){u=zt(-1,n&-n),u.tag=2;var p=o.updateQueue;if(p!==null){p=p.shared;var g=p.pending;g===null?u.next=u:(u.next=g.next,g.next=u),p.pending=u}}o.lanes|=n,u=o.alternate,u!==null&&(u.lanes|=n),cs(o.return,n,t),s.lanes|=n;break}u=u.next}}else if(o.tag===10)l=o.type===t.type?null:o.child;else if(o.tag===18){if(l=o.return,l===null)throw Error(M(341));l.lanes|=n,s=l.alternate,s!==null&&(s.lanes|=n),cs(l,n,t),l=o.sibling}else l=o.child;if(l!==null)l.return=o;else for(l=o;l!==null;){if(l===t){l=null;break}if(o=l.sibling,o!==null){o.return=l.return,l=o;break}l=l.return}o=l}He(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,er(t,n),i=lt(i),r=r(i),t.flags|=1,He(e,t,r,n),t.child;case 14:return r=t.type,i=pt(r,t.pendingProps),i=pt(r.type,i),rd(e,t,r,i,n);case 15:return id(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:pt(r,i),uo(e,t),t.tag=1,Ve(r)?(e=!0,bi(t)):e=!1,er(t,n),Xc(t,r,i),js(t,r,i,n),Ls(null,t,r,!0,e,n);case 19:return fd(e,t,n);case 22:return od(e,t,n)}throw Error(M(156,t.tag))};function Od(e,t){return ha(e,t)}function oh(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function at(e,t,n,r){return new oh(e,t,n,r)}function Gs(e){return e=e.prototype,!(!e||!e.isReactComponent)}function lh(e){if(typeof e=="function")return Gs(e)?1:0;if(e!=null){if(e=e.$$typeof,e===nl)return 11;if(e===ol)return 14}return 2}function on(e,t){var n=e.alternate;return n===null?(n=at(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function ko(e,t,n,r,i,o){var l=2;if(r=e,typeof e=="function")Gs(e)&&(l=1);else if(typeof e=="string")l=5;else e:switch(e){case Dn:return Cn(n.children,i,o,t);case el:l=8,i|=8;break;case tl:return e=at(12,n,t,i|2),e.elementType=tl,e.lanes=o,e;case rl:return e=at(13,n,t,i),e.elementType=rl,e.lanes=o,e;case il:return e=at(19,n,t,i),e.elementType=il,e.lanes=o,e;case Vu:return xo(n,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Wu:l=10;break e;case bu:l=9;break e;case nl:l=11;break e;case ol:l=14;break e;case At:l=16,r=null;break e}throw Error(M(130,e==null?e:typeof e,""))}return t=at(l,n,t,i),t.elementType=e,t.type=r,t.lanes=o,t}function Cn(e,t,n,r){return e=at(7,e,r,t),e.lanes=n,e}function xo(e,t,n,r){return e=at(22,e,r,t),e.elementType=Vu,e.lanes=n,e.stateNode={isHidden:!1},e}function Js(e,t,n){return e=at(6,e,null,t),e.lanes=n,e}function Zs(e,t,n){return t=at(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function sh(e,t,n,r,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Nl(0),this.expirationTimes=Nl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Nl(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function qs(e,t,n,r,i,o,l,s,u){return e=new sh(e,t,n,s,u),t===1?(t=1,o===!0&&(t|=8)):t=0,o=at(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},fs(o),e}function uh(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Bd)}catch(e){console.error(e)}}Bd(),Iu.exports=Ge;var ln=Iu.exports,Wd=ln;Xo.createRoot=Wd.createRoot,Xo.hydrateRoot=Wd.hydrateRoot;function Be(e,t){try{const n=window.localStorage.getItem(e);return n?JSON.parse(n):t}catch{return t}}function nt(e,t){try{window.localStorage.setItem(e,JSON.stringify(t))}catch{}}function Po(e,t){if(!(t in e))return e;const{[t]:n,...r}=e;return r}function bd(e){return e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"action"}function ru(e){return{id:e.id,label:e.label,icon:e.icon,command:e.command??bd(e.label),description:e.kind==="send"?`send "${e.payload}"`:`run "${e.payload}"`,run(t){const n=t.args.length?" "+t.args.join(" "):"";e.kind==="send"?t.send(e.payload+n):e.payload.split(";").forEach(r=>r.trim()&&t.runCommand(r.trim()+n))}}}function ph(e={}){const t=e.storageKey?`uif:${e.storageKey}:actions`:null,r={...{order:[],hidden:[],custom:[],floating:{}},...t?Be(t,{}):{}},i=new Map;let o=[...r.order],l=[...r.hidden],s=[...r.custom],u={...r.floating};const p=[],g=new Set;let y=0;const f=()=>{t&&nt(t,{order:o,hidden:l,custom:s,floating:u})},v=()=>{y++,f(),g.forEach(k=>k())},w=k=>{!p.includes(k.id)&&!s.some(a=>a.id===k.id)&&p.push(k.id),!(o.includes(k.id)||l.includes(k.id)||u[k.id])&&(k.defaultHidden?l.push(k.id):o.push(k.id))},E={register(k){i.set(k.id,k),w(k),v()},unregister(k){i.delete(k),v()},get:k=>i.get(k),find(k){var d;const a=k.toLowerCase();for(const m of i.values())if(m.command.toLowerCase()===a||(d=m.aliases)!=null&&d.some(x=>x.toLowerCase()===a))return m},all:()=>[...i.values()],visible:()=>o.map(k=>i.get(k)).filter(k=>!!k),hidden:()=>l.map(k=>i.get(k)).filter(k=>!!k),reorder(k,a){const d=E.visible().map(N=>N.id);if(k<0||k>=d.length||a<0||a>=d.length||k===a)return;const[m]=d.splice(k,1);d.splice(a,0,m);const x=o.filter(N=>!i.has(N));o=[...d,...x],v()},hide(k){!o.includes(k)&&!u[k]||(o=o.filter(a=>a!==k),u=Po(u,k),l=[...l.filter(a=>a!==k),k],v())},show(k,a){l=l.filter(m=>m!==k),u=Po(u,k);const d=E.visible().map(m=>m.id).filter(m=>m!==k);d.splice(a??d.length,0,k),o=[...d,...o.filter(m=>!i.has(m)&&m!==k)],v()},addCustom(k){const a=bd(k.label);let d=a;for(let N=2;E.find(d);N++)d=`${a}-${N}`;const m={id:`custom-${d}-${Date.now().toString(36)}`,label:k.label.trim(),command:d,icon:k.icon||void 0,kind:k.kind??"command",payload:k.payload};s=[...s,m];const x=ru(m);return i.set(x.id,x),o.push(x.id),v(),x},removeCustom(k){s=s.filter(a=>a.id!==k),i.delete(k),o=o.filter(a=>a!==k),l=l.filter(a=>a!==k),u=Po(u,k),v()},floating:()=>Object.entries(u).map(([k,a])=>({action:i.get(k),at:a})).filter(k=>!!k.action),float(k,a){i.has(k)&&(o=o.filter(d=>d!==k),l=l.filter(d=>d!==k),u={...Po(u,k),[k]:{x:Math.round(a.x),y:Math.round(a.y)}},v())},dockAt(k,a){i.has(k)&&E.show(k,a)},snapshot:()=>({order:[...o],hidden:[...l],custom:s.map(k=>({...k})),floating:Object.fromEntries(Object.entries(u).map(([k,a])=>[k,{...a}]))}),restore(k){for(const a of s)i.delete(a.id);s=k.custom.map(a=>({...a}));for(const a of s)i.set(a.id,ru(a));o=[...k.order],l=[...k.hidden],u={...k.floating};for(const a of p){const d=i.get(a);d&&w(d)}v()},reset(){const k=p.filter(a=>i.has(a));o=k.filter(a=>{var d;return!((d=i.get(a))!=null&&d.defaultHidden)}),l=[...k.filter(a=>{var d;return(d=i.get(a))==null?void 0:d.defaultHidden}),...s.map(a=>a.id)],u={},v()},isCustom:k=>s.some(a=>a.id===k),subscribe(k){return g.add(k),()=>g.delete(k)},version:()=>y};for(const k of s)i.set(k.id,ru(k));for(const k of e.actions??[])i.set(k.id,k),w(k);return E}function mh(e,t){const n=e.snapshot(),r=t.filter(i=>!(i in n.floating));return{...n,order:r,hidden:e.all().map(i=>i.id).filter(i=>!r.includes(i)&&!(i in n.floating))}}const hh=["top","bottom","left","right"];function ti(e,t){const n=e.outputs.resolve(e.args[0]);return n||e.print(`${t}: no output ${e.args[0]?`"${e.args[0]}"`:"is active"}`,"err"),n}const gh=[{id:"spawn",label:"Spawn output",command:"spawn",aliases:["new"],icon:"⊞",description:"spawn [title] [--window] [--screen N] [--present] [--speak] - open a new output, here or on another monitor, display or the speakers",builtin:!0,async run(e){const t=[],n={};for(let i=0;is.id===i))==null?void 0:l.speak;e.print(e.outputs.setSpeak(i,n?n==="on":!o))}},{id:"present",label:"Present output",command:"present",aliases:["cast"],icon:"📺",description:"present [output] - show an output on another display or cast device (Presentation API)",builtin:!0,defaultHidden:!0,async run(e){const t=e.outputs.resolve(e.args.join(" ")||void 0);if(!t)return e.print("present: no output is active","err");e.print(await e.outputs.present(t))}},{id:"popout",label:"Pop out",command:"popout",aliases:["pop"],icon:"⧉",description:"popout [output] [--screen N] - move an output into its own window, on monitor N if given",builtin:!0,defaultHidden:!0,run(e){const t=e.args.indexOf("--screen"),n=t>=0?Number(e.args[t+1]):void 0;if(t>=0&&(!Number.isInteger(n)||n<1))return e.print("popout: --screen needs a monitor number","err");const r=(t>=0?[...e.args.slice(0,t),...e.args.slice(t+2)]:e.args).join(" "),i=e.outputs.resolve(r||void 0);if(!i)return e.print(`popout: no output ${r?`"${r}"`:"is active"}`,"err");const o=e.outputs.popOut(i,{screen:n});o&&e.print(o,"err")}},{id:"close",label:"Close output",command:"close",icon:"⊠",description:"close [output|all] - close an output field, or every one",builtin:!0,defaultHidden:!0,run(e){if(e.args[0]==="all"){const n=e.outputs.list().length;return e.outputs.closeAll(),e.print(`closed ${n} output${n===1?"":"s"}`)}const t=ti(e,"close");t&&e.outputs.close(t)}},{id:"max",label:"Fill the screen",command:"max",aliases:["maximize"],icon:"⤢",description:"max [output] - fill the screen with an output, or shrink it back (double-click its header does the same)",builtin:!0,defaultHidden:!0,run(e){const t=ti(e,"max");t&&e.outputs.maximize(t)}},{id:"tile",label:"Tile outputs",command:"tile",icon:"▦",description:"tile - arrange the outputs in a grid that fills the screen",builtin:!0,defaultHidden:!0,run(e){e.outputs.tile()}},{id:"cascade",label:"Cascade outputs",command:"cascade",icon:"◪",description:"cascade - stack the outputs, each a step down and right",builtin:!0,defaultHidden:!0,run(e){e.outputs.cascade()}},{id:"rename",label:"Rename output",command:"rename",icon:"✎",description:"rename - rename an output field",builtin:!0,defaultHidden:!0,run(e){const[t,...n]=e.args,r=n.join(" ").trim();if(!t||!r)return e.print("rename: usage rename ","err");const i=e.outputs.resolve(t);if(!i)return e.print(`rename: no output "${t}"`,"err");e.outputs.rename(i,r),e.print(`renamed ${t} to ${r}`)}},{id:"ping",label:"Ping output",command:"ping",icon:"◎",description:"ping [output] - flash an output so you can find it",builtin:!0,defaultHidden:!0,run(e){const t=ti(e,"ping");t&&e.outputs.ping(t)}},{id:"outputs",label:"List outputs",command:"outputs",aliases:["ls"],icon:"☷",description:"outputs - list output fields",builtin:!0,defaultHidden:!0,run(e){const t=e.outputs.list();if(!t.length)return e.print("no outputs");t.forEach((n,r)=>e.print(`${r+1} ${n.id} ${n.title} [${n.placement}]${n.id===e.outputs.activeId?" *":""}`))}},{id:"screens",label:"Screens",command:"screens",icon:"▭",description:"screens - allow pop-outs to open on other monitors",builtin:!0,defaultHidden:!0,async run(e){await e.requestScreens();const t=e.outputs.screens();t==null||t.forEach(n=>e.print(`${n.index} ${n.label} ${n.width}×${n.height}${n.primary?" primary":""}${n.current?" (this window)":""}`)),t&&e.print("spawn --screen N opens an output on monitor N")}},{id:"mode",label:"Toggle mode",command:"mode",aliases:["chat","t"],icon:"T",description:"mode [chat|terminal|persona] - switch between chat (generic), terminal and the persona mode",builtin:!0,defaultHidden:!0,run(e){const t=e.args[0];e.setMode(t==="chat"?"chat":t==="terminal"?"terminal":t==="persona"?"persona":"toggle")}},{id:"clear",label:"Clear",command:"clear",aliases:["cls"],icon:"⌫",description:"clear [output|all] - clear the terminal log, an output, or every output",builtin:!0,defaultHidden:!0,run(e){if(!e.args[0])return e.clearLog();if(e.args[0]==="all")return e.outputs.clearAll();const t=ti(e,"clear");t&&e.outputs.clear(t)}},{id:"profile",label:"Layouts",command:"profile",aliases:["layout"],icon:"▦",description:"profile [list|save <name>|load <name>|delete <name>|export [name]] - saved layouts (.profile)",builtin:!0,defaultHidden:!0,run(e){const[t="list",...n]=e.args,r=n.join(" ").trim(),{layout:i}=e;switch(t){case"list":{const o=i.list();e.print(o.length?o.map(l=>l===i.active?`* ${l}`:` ${l}`).join(` `):"no saved layouts");return}case"save":if(!r)return e.print("profile: usage profile save <name>","err");e.print(`saved "${i.save(r).name}"`);return;case"load":return r?i.load(r)?e.print(`loaded "${r}"`):e.print(`profile: no layout "${r}"`,"err"):e.print("profile: usage profile load <name>","err");case"delete":return i.remove(r)?e.print(`deleted "${r}"`):e.print(`profile: no layout "${r}"`,"err");case"export":i.exportProfile(r||void 0),e.print(`exported ${r||"the current layout"}`);return;default:return i.load(e.args.join(" "))?e.print(`loaded "${e.args.join(" ")}"`):e.print(`profile: unknown "${t}"`,"err")}}},{id:"reset",label:"Reset layout",command:"reset",icon:"↺",description:"reset - back to the standard layout (saved layouts are kept)",builtin:!0,defaultHidden:!0,run(e){e.layout.reset(),e.print("reset to the standard layout")}},{id:"remember",label:"Remember",command:"remember",icon:"◈",description:"remember <text> - add a note to .memory",builtin:!0,defaultHidden:!0,async run(e){const t=e.args.join(" ").trim();if(!t)return e.print("remember: usage remember <text>","err");await e.remember(t),e.print("remembered")}},{id:"actions",label:"List actions",command:"actions",icon:"≡",description:"actions - list every action and its command",builtin:!0,defaultHidden:!0,run(e){const t=new Set(e.registry.visible().map(n=>n.id));e.registry.all().forEach(n=>e.print(`${t.has(n.id)?"●":"○"} ${n.command.padEnd(10)} ${n.label}`))}},{id:"help",label:"Help",command:"help",aliases:["?"],icon:"?",description:"help - list commands",builtin:!0,defaultHidden:!0,run(e){e.registry.all().forEach(t=>e.print(t.description??`${t.command} - ${t.label}`)),e.print("hold any button to rearrange; drag it off the bar to hide it")}}],yh={chat:["spawn","strings","home","dock","popout","rename","clear","outputs"],terminal:["ping","diag","outputs","screens","close","clear","win-history","win-memory","win-prompt"]};function vh(e){const t=[],n=/"((?:[^"\\]|\\.)*)"|'((?:[^'\\]|\\.)*)'|(\S+)/g;let r;for(;r=n.exec(e);){const i=r[1]??r[2];t.push(i!==void 0?i.replace(/\\(.)/g,"$1"):r[3])}return t}function wh(e,t){const n=vh(e.trim().replace(/^\//,""));if(!n.length)return null;const[r,...i]=n;return{name:r,args:i,action:t.find(r)}}const $o=(e,t,n)=>Math.max(t,Math.min(n,e)),iu=60;function Lo(e,t){return{x:$o(e.x,iu-t,window.innerWidth-iu),y:$o(e.y,0,window.innerHeight-iu/2)}}function Vd(e,t,n,r,i){const{minWidth:o,minHeight:l}=i,s=i.maxWidth??1/0,u=i.maxHeight??1/0,p=t==="tl"||t==="bl",g=t==="tl"||t==="tr",y=p?e.x+e.width:window.innerWidth-e.x,f=g?e.y+e.height:window.innerHeight-e.y,v=$o(e.width+(p?-n:n),o,Math.max(o,Math.min(s,y))),w=$o(e.height+(g?-r:r),l,Math.max(l,Math.min(u,f)));return{x:p?e.x+e.width-v:e.x,y:g?e.y+e.height-w:e.y,width:v,height:w}}const kh=10,xh=50,Sh={ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1],ArrowDown:[0,1]},To="Arrow keys move; Alt+arrow keys resize; hold Shift for larger steps";function Ro(e){const[t,n]=h.useState(()=>Lo(e.initialPosition,e.initialSize.width)),[r,i]=h.useState(e.initialSize),[o,l]=h.useState(null),s=h.useRef({opts:e,position:t,size:r});s.current={opts:e,position:t,size:r};const u=h.useCallback((y,f)=>{if(s.current.opts.draggable===!1||y.button!==0)return;const{position:v,size:w}=s.current;f&&n(f),l({kind:"drag",startX:y.clientX,startY:y.clientY,...v,...f??{},...w}),y.preventDefault()},[]),p=h.useCallback((y,f)=>{if(s.current.opts.resizable===!1)return;const{position:v,size:w}=s.current;l({kind:"resize",corner:f,startX:y.clientX,startY:y.clientY,...v,...w}),y.stopPropagation(),y.preventDefault()},[]);h.useEffect(()=>{if(!o)return;const y=v=>{const w=v.clientX-o.startX,E=v.clientY-o.startY;if(o.kind==="drag"){n(Lo({x:o.x+w,y:o.y+E},o.width));return}const k=Vd(o,o.corner??"br",w,E,s.current.opts);i({width:k.width,height:k.height}),n({x:k.x,y:k.y})},f=()=>{var k;l(null);const{position:v,size:w,opts:E}=s.current;(k=E.onCommit)==null||k.call(E,{...v,...w},o.kind)};return document.addEventListener("pointermove",y),document.addEventListener("pointerup",f),()=>{document.removeEventListener("pointermove",y),document.removeEventListener("pointerup",f)}},[o]);const g=h.useCallback(y=>{var x;const f=Sh[y.key];if(!f||y.ctrlKey||y.metaKey)return;const{opts:v,position:w,size:E}=s.current,k=y.shiftKey?xh:kh,[a,d]=[f[0]*k,f[1]*k];let m;if(y.altKey){if(v.resizable===!1)return;m=Vd({...w,...E},"br",a,d,v)}else{if(v.draggable===!1)return;m={...Lo({x:w.x+a,y:w.y+d},E.width),...E}}y.preventDefault(),n({x:m.x,y:m.y}),i({width:m.width,height:m.height}),(x=v.onCommit)==null||x.call(v,m,"key")},[]);return h.useEffect(()=>{const y=()=>n(f=>{const v=Lo(f,s.current.size.width);return v.x===f.x&&v.y===f.y?f:v});return window.addEventListener("resize",y),()=>window.removeEventListener("resize",y)},[]),{position:t,size:r,setPosition:n,setSize:i,isDragging:(o==null?void 0:o.kind)==="drag",isResizing:(o==null?void 0:o.kind)==="resize",startDrag:u,startResize:p,onHandleKeyDown:g}}const Qd=({children:e,onClick:t,className:n="",disabled:r,variant:i="default",size:o="default",...l})=>{const s="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",u={default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},p={default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"};return c.jsx("button",{onClick:t,disabled:r,className:`${s} ${u[i]} ${p[o]} ${n}`,...l,children:e})},Eh=()=>c.jsx("span",{className:"inline-block w-4 h-4 text-current",style:{transform:"rotate(90deg)"},children:"➤"}),Ch=()=>c.jsx("span",{className:"inline-block w-4 h-4 text-green-400 font-mono font-bold",children:">"}),Nh=()=>c.jsx("span",{className:"inline-block w-4 h-4 text-blue-600 font-bold",children:"T"}),jh=6,_h=3;function Yd(e,t){return document.elementsFromPoint(e,t).some(n=>{var r;return((r=n.dataset)==null?void 0:r.uifTrash)!==void 0})}function Kd(e,t,n,r=-1){let i=0;return e.querySelectorAll("[data-uif-item]").forEach(o=>{if(Number(o.dataset.uifItem)===r)return;const l=o.getBoundingClientRect();l.width===0&&l.height===0||(n>l.bottom||n>=l.top&&t>l.left+l.width/2)&&i++}),i}function Ph({containerRef:e,onReorder:t,onRemove:n,onDropOutside:r,holdMs:i=400,removeDistance:o=40}){const[l,s]=h.useState(!1),[u,p]=h.useState(null),g=h.useRef(l);g.current=l;const y=h.useRef(!1),f=h.useRef(),v=h.useRef({onReorder:t,onRemove:n,onDropOutside:r});v.current={onReorder:t,onRemove:n,onDropOutside:r},h.useEffect(()=>()=>{var m;return(m=f.current)==null?void 0:m.call(f)},[]);const w=h.useCallback((m,x,N)=>{const _=e.current,j=Yd(m,x);if(!_)return{target:0,outside:!1,overTrash:j};const L=_.getBoundingClientRect(),C=m<L.left-o||m>L.right+o||x<L.top-o||x>L.bottom+o;return{target:Kd(_,m,x,N),outside:C,overTrash:j}},[e,o]),E=h.useCallback((m,x)=>{var me;if(m.button!==0)return;(me=f.current)==null||me.call(f);const _=m.currentTarget.getBoundingClientRect(),j={x:m.clientX,y:m.clientY};let L=g.current,C=!1,D=j;const Q=()=>{C=!0,y.current=!0,p({index:x,x:D.x,y:D.y,offsetX:j.x-_.left,offsetY:j.y-_.top,width:_.width,height:_.height,...w(D.x,D.y,x)})},F=L?void 0:window.setTimeout(()=>{var J;L=!0,y.current=!0,s(!0),(J=navigator.vibrate)==null||J.call(navigator,15)},i),H=J=>{D={x:J.clientX,y:J.clientY};const I=Math.hypot(D.x-j.x,D.y-j.y);if(!L){I>jh&&(clearTimeout(F),X());return}if(!C){I>_h&&Q();return}J.preventDefault(),p(b=>b&&{...b,x:D.x,y:D.y,...w(D.x,D.y,x)})},A=()=>{if(clearTimeout(F),X(),!C)return;const J=w(D.x,D.y,x);p(null);const{onDropOutside:I,onRemove:b,onReorder:V}=v.current;J.overTrash?b(x):J.outside?I?I(x,{x:D.x-(j.x-_.left),y:D.y-(j.y-_.top)}):b(x):J.target!==x&&V(x,J.target)},X=()=>{document.removeEventListener("pointermove",H),document.removeEventListener("pointerup",A),document.removeEventListener("pointercancel",A),f.current=void 0};document.addEventListener("pointermove",H,{passive:!1}),document.addEventListener("pointerup",A),document.addEventListener("pointercancel",A),f.current=()=>{clearTimeout(F),X()}},[i,w]),k=h.useCallback(m=>{if(y.current){y.current=!1;return}g.current||m()},[]),a=h.useCallback(m=>requestAnimationFrame(()=>{var x,N;return(N=(x=e.current)==null?void 0:x.querySelector(`[data-uif-item="${m}"]`))==null?void 0:N.focus()}),[e]),d=h.useCallback((m,x,N)=>{if(!g.current)return;const _=m.key==="ArrowLeft"||m.key==="ArrowUp"?-1:m.key==="ArrowRight"||m.key==="ArrowDown"?1:0;if(_){const j=x+_;j>=0&&j<N&&(v.current.onReorder(x,j),a(j))}else if(m.key==="Delete"||m.key==="Backspace")v.current.onRemove(x),a(Math.max(0,x-1));else if(m.key==="Escape"||m.key==="Enter")s(!1);else return;m.preventDefault()},[a]);return{arranging:l,setArranging:s,drag:u,onPointerDown:E,onKeyDown:d,guardClick:k}}function Xd(e){const t=new Set,n=typeof BroadcastChannel<"u"?new BroadcastChannel(`uif:${e}`):null;return n&&(n.onmessage=r=>t.forEach(i=>i(r.data))),{post:r=>n==null?void 0:n.postMessage(r),on(r){return t.add(r),()=>t.delete(r)},close:()=>n==null?void 0:n.close()}}const zo="uif-output",ou="uif-key";function Gd(){return typeof window<"u"&&new URLSearchParams(window.location.search).has(zo)}const Jd=/^[a-z][\w.-]{0,40}$/;function $h(e){return{id:`win-${e.id}`,label:e.file,command:e.id,aliases:e.file.startsWith(".")?[e.file]:[],icon:e.icon,description:`${e.id} [open|close] - the ${e.file} window: ${e.summary.toLowerCase()}`,builtin:!0,defaultHidden:!0,run(t){const n=t.args[0];n==="open"?t.windows.show(e.id):n==="close"?t.windows.hide(e.id):t.windows.toggle(e.id)}}}function Lh(e){const t=new Set,n=[];for(const r of e)for(const i of r.windows??[]){if(!Jd.test(i.id))throw new Error(`module ${r.id}: window id "${i.id}" is not valid (a-z, digits, _ . -)`);if(t.has(i.id))throw new Error(`module ${r.id}: window id "${i.id}" is already taken`);t.add(i.id),n.push(i)}return n}const Nn="standard",sr=".profile",Th=["chat","terminal","persona"],Rh=["top","bottom","left","right"],ur=e=>typeof e=="number"&&Number.isFinite(e),sn=e=>typeof e=="string",Zd=e=>Array.isArray(e)&&e.every(sn),Ot=e=>!!e&&typeof e=="object"&&!Array.isArray(e);function zh(e){return!Ot(e)||!sn(e.id)||!sn(e.label)||!sn(e.payload)||e.kind!=="command"&&e.kind!=="send"?null:{id:e.id,label:e.label,payload:e.payload,kind:e.kind,command:sn(e.command)?e.command:void 0,icon:sn(e.icon)?e.icon:void 0}}function Mh(e,t="imported"){const n=f=>{throw new Error(`not a valid ${sr} file: ${f}`)};if(!Ot(e))return n("expected a JSON object");if(e["uif.profile"]!==1)return n('missing "uif.profile": 1');const r=Ot(e.actions)?e.actions:n('missing "actions"');if(!Zd(r.order)||!Zd(r.hidden))return n('"actions.order" and "actions.hidden" must be string lists');const i=Array.isArray(r.custom)?r.custom.map(zh):[];if(i.some(f=>f===null))return n("a custom action is malformed");const o={};if(Ot(r.floating))for(const[f,v]of Object.entries(r.floating)){if(!Ot(v)||!ur(v.x)||!ur(v.y))return n(`floating position for "${f}" is malformed`);o[f]={x:v.x,y:v.y}}const l=Ot(e.hub)?e.hub:n('missing "hub"');if(![l.x,l.y,l.width,l.height].every(ur))return n('"hub" needs numeric x, y, width, height');const s=Th.includes(l.mode)?l.mode:"chat",u=Rh.includes(l.docked)?l.docked:null,p=["auto","stacked","sideways"].find(f=>f===l.arrange)??"auto";let g=null;if(Ot(l.isolated)){const f=l.isolated;if(!ur(f.x)||!ur(f.y))return n('"hub.isolated" needs numeric x and y');g={x:f.x,y:f.y,vertical:f.vertical===!0}}const y={};if(Ot(e.windows)){for(const[f,v]of Object.entries(e.windows))if(Jd.test(f)){if(!Ot(v)||![v.x,v.y,v.width,v.height].every(ur))return n(`window "${f}" is malformed`);y[f]={x:v.x,y:v.y,width:v.width,height:v.height}}}return{"uif.profile":1,name:sn(e.name)&&e.name.trim()?e.name.trim():t,savedAt:sn(e.savedAt)?e.savedAt:new Date().toISOString(),actions:{order:r.order,hidden:r.hidden,custom:i,floating:o},hub:{x:l.x,y:l.y,width:l.width,height:l.height,mode:s,docked:u,arrange:p,isolated:g},strings:e.strings===!0,windows:y}}function Dh(e){return(e.trim().replace(/[^\w.-]+/g,"-").replace(/^-+|-+$/g,"")||"layout")+sr}function Oh(e){return JSON.stringify(e,null,2)+` `}const Ih=[{corner:"tl",label:"top-left"},{corner:"tr",label:"top-right"},{corner:"bl",label:"bottom-left"},{corner:"br",label:"bottom-right"}];function lu({onStart:e}){return c.jsx(c.Fragment,{children:Ih.map(({corner:t,label:n})=>c.jsx("div",{className:`uif-corner corner-tab ${t}`,onPointerDown:r=>e(r,t),title:`Resize from the ${n} corner`,"aria-hidden":"true"},t))})}function qd({field:e,active:t,flash:n,popped:r,onHeaderPointerDown:i,onHeaderKeyDown:o,onRename:l,onSubmit:s,onRemember:u,onPopOut:p,onSpeak:g,onHome:y,onMaximize:f,onClose:v}){const[w,E]=h.useState({}),k=h.useRef(null),[a,d]=h.useState(!1),[m,x]=h.useState(""),N=e.messages.some(C=>C.pending),_=C=>{d(!1),C!==null&&C.trim()&&C.trim()!==e.title&&(l==null||l(C))},j=C=>{C.preventDefault(),!(!m.trim()||N)&&(s==null||s(m),x(""))},L=e.messages[e.messages.length-1];return h.useEffect(()=>{const C=k.current;C&&(C.scrollTop=C.scrollHeight)},[e.messages.length,L==null?void 0:L.text]),c.jsxs(c.Fragment,{children:[n>0&&c.jsx("div",{className:"uif-flash",style:{"--uif-color":e.color}},n),c.jsxs("div",{className:`uif-output-header ${N?"is-busy":""}`,onPointerDown:a?void 0:i,onKeyDown:a?void 0:o,onDoubleClick:C=>{!a&&f&&!C.target.closest(".uif-output-title, .uif-output-buttons")&&f()},tabIndex:o?0:void 0,role:o?"group":void 0,"aria-label":o?`${e.title} output. ${To}`:void 0,children:[c.jsx("span",{className:"uif-output-dot",style:{background:e.color}}),c.jsx("span",{className:"uif-output-avatar","aria-hidden":"true"}),a?c.jsx("input",{className:"uif-output-rename",defaultValue:e.title,"aria-label":"Output name",autoFocus:!0,onFocus:C=>C.currentTarget.select(),onPointerDown:C=>C.stopPropagation(),onKeyDown:C=>{C.stopPropagation(),C.key==="Enter"&&_(C.currentTarget.value),C.key==="Escape"&&_(null)},onBlur:C=>_(C.currentTarget.value)}):c.jsx("span",{className:"uif-output-title",title:l?"Double-click to rename":void 0,onDoubleClick:l?()=>d(!0):void 0,children:e.title}),t&&c.jsx("span",{className:"uif-output-badge",children:"active"}),c.jsxs("span",{className:"uif-output-buttons",onPointerDown:C=>C.stopPropagation(),children:[g&&c.jsx("button",{type:"button",className:e.speak?"is-on":"",title:e.speak?"Stop reading replies aloud":"Read replies aloud","aria-pressed":!!e.speak,onClick:g,children:e.speak?"🔊":"🔈"}),p&&c.jsx("button",{type:"button",title:"Pop out to a window",onClick:p,children:"⧉"}),y&&c.jsx("button",{type:"button",title:r?"Call home":"Back beside the field",onClick:y,children:"⌂"}),f&&c.jsx("button",{type:"button",title:e.maximized?"Shrink back (or double-click the header, or Esc)":"Fill the screen (or double-click the header)","aria-pressed":!!e.maximized,onClick:f,children:e.maximized?"⤡":"⤢"}),c.jsx("button",{type:"button",title:"Close",onClick:v,children:"✕"})]})]}),c.jsxs("div",{className:"uif-output-body",ref:k,children:[e.messages.length===0&&c.jsx("div",{className:"uif-output-empty",children:"No messages yet."}),e.messages.map(C=>{if(C.role==="system"&&!C.text&&!C.pending)return null;const D=u&&C.role==="assistant"&&!C.pending&&C.text,Q=c.jsxs("div",{className:`uif-msg uif-msg-${C.role}`,children:[C.text,C.pending&&c.jsx("span",{className:"uif-caret",children:"▍"}),C.media&&c.jsxs("span",{className:"uif-msg-media",children:[C.media.kind==="video"?c.jsx("video",{src:C.media.url,controls:!0,playsInline:!0,loop:!0,className:"uif-media","aria-label":C.text||"video"}):c.jsx("img",{src:C.media.url,alt:C.text||"image",className:"uif-media"}),c.jsx("a",{className:"uif-media-save",href:C.media.url,download:C.media.name||(C.media.kind==="video"?"video.mp4":"image.png"),children:"⤓ save"})]}),C.silent&&e.speak&&c.jsxs("span",{className:"uif-msg-silent",title:"Not read aloud: the engine did not vouch for this reply","aria-label":"not read aloud",children:[" ","🔇"]})]},C.id);return D?c.jsxs("div",{className:"uif-msg-row",children:[Q,c.jsx("button",{type:"button",className:`uif-msg-keep ${w[C.id]?"is-kept":""}`,title:w[C.id]?"Kept in .memory":"Keep this reply in .memory","aria-label":"Remember this reply",disabled:w[C.id],onClick:()=>{u(C.text),E(F=>({...F,[C.id]:!0}))},children:"◈"})]},C.id):Q})]}),s&&c.jsxs("form",{className:"uif-output-reply",onSubmit:j,children:[c.jsx("input",{value:m,onChange:C=>x(C.target.value),placeholder:`Reply in ${e.title}…`,"aria-label":`Message ${e.title}`,className:"uif-output-reply-input"}),c.jsx("button",{type:"submit",disabled:!m.trim()||N,"aria-label":"Send",children:"➤"})]})]})}function Fh({field:e}){const{outputs:t,setRect:n,flashes:r,raise:i,zIndexOf:o,sendTo:l,context:s}=Ct(),{position:u,size:p,setPosition:g,setSize:y,startDrag:f,startResize:v,onHandleKeyDown:w,isDragging:E}=Ro({initialPosition:{x:e.rect.x,y:e.rect.y},initialSize:{width:e.rect.width,height:e.rect.height},minWidth:220,minHeight:120,onCommit:d=>n(e.id,d)});h.useEffect(()=>{g({x:e.rect.x,y:e.rect.y}),y({width:e.rect.width,height:e.rect.height})},[e.rect,g,y]);const k=t.activeId===e.id,a=!!e.maximized;return h.useEffect(()=>{if(!a)return;const d=m=>{m.key==="Escape"&&t.activeId===e.id&&t.maximize(e.id,!1)};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[a,e.id,t]),c.jsxs("div",{className:`uif-output ${k?"is-active":""} ${E?"is-dragging":""} ${a?"is-maximized":""}`,"data-uif-output":e.id,style:{left:a?0:u.x,top:a?0:u.y,width:a?"100vw":p.width,height:a?"100vh":p.height,zIndex:o(e.id),"--uif-color":e.color},onPointerDownCapture:()=>{t.setActive(e.id),i(e.id)},children:[c.jsx(qd,{field:e,active:k,flash:r[e.id]??0,onHeaderPointerDown:a?void 0:f,onHeaderKeyDown:w,onMaximize:()=>t.maximize(e.id),onRename:d=>t.rename(e.id,d),onSubmit:d=>l(d,e.id),onRemember:d=>void s.remember(d,"response"),onPopOut:()=>t.popOut(e.id),onSpeak:()=>t.setSpeak(e.id,!e.speak),onClose:()=>t.close(e.id)}),!a&&c.jsx(lu,{onStart:v})]})}const ar=28;function ef(e,t,n,r){const i=(n-e)*.5;return`M${e},${t} C${e+i},${t} ${n-i},${r} ${n},${r}`}function Ah(e,t){const n=window.innerWidth,r=window.innerHeight,i=n/2,o=r/2,l=Math.atan2(t-o,e-i);if(e>=ar&&e<=n-ar&&t>=ar&&t<=r-ar)return{x:e,y:t,angle:l};const s=e-i,u=t-o,p=Math.min(s?(i-ar)/Math.abs(s):1/0,u?(o-ar)/Math.abs(u):1/0);return{x:i+s*p,y:o+u*p,angle:l}}function Hh(){const{fields:e,hubRef:t,outputs:n}=Ct(),[r,i]=h.useState([]),[o,l]=h.useState([]),s=h.useRef(e);return s.current=e,h.useEffect(()=>{let u=0,p="";const g=()=>{var m;u=requestAnimationFrame(g);const y=(m=t.current)==null?void 0:m.getBoundingClientRect();if(!y)return;const f=y.left+y.width/2,v=y.top+y.height/2,w=[],E=[],k=window.screenX+(window.outerWidth-window.innerWidth)/2,a=window.screenY+(window.outerHeight-window.innerHeight);s.current.forEach((x,N)=>{if(x.placement==="inline"){const _=document.querySelector(`[data-uif-output="${x.id}"]`);if(!_)return;const j=_.getBoundingClientRect(),L=j.left+j.width/2<f,C=L?y.left:y.right,D=L?j.right:j.left;w.push({id:x.id,color:x.color,d:ef(C,v,D,j.top+16)})}else{const _=x.screenGeom,j=_?_.x+_.width/2-k:window.innerWidth+400,L=_?_.y+_.height/2-a:window.innerHeight/2+N*40,C=Ah(j,L);E.push({id:x.id,title:x.title,color:x.color,...C}),w.push({id:x.id,color:x.color,d:ef(f,v,C.x,C.y),dashed:!0})}});const d=JSON.stringify([w,E]);d!==p&&(p=d,i(w),l(E))};return g(),()=>cancelAnimationFrame(u)},[t]),c.jsxs(c.Fragment,{children:[c.jsx("svg",{className:"uif-tethers","aria-hidden":"true",children:r.map(u=>c.jsx("path",{d:u.d,stroke:u.color,strokeDasharray:u.dashed?"6 6":void 0,className:u.dashed?"uif-tether is-remote":"uif-tether"},u.id))}),o.map(u=>c.jsxs("button",{type:"button",className:"uif-beacon",style:{left:u.x,top:u.y,"--uif-color":u.color},title:`${u.title}: click to find it, double-click to call it home`,onClick:()=>n.ping(u.id),onDoubleClick:()=>n.callHome(u.id),children:[c.jsx("span",{className:"uif-beacon-arrow",style:{transform:`rotate(${u.angle}rad)`},children:"➤"}),c.jsx("span",{className:"uif-beacon-label",children:u.title})]},u.id))]})}const Uh=` MEMORY — notes the operator kept from earlier conversations. They are context, not evidence: cite them as the operator's notes, never as findings. `,Bh=2400;function Wh(e,t=Bh){if(!e.some(i=>i.source.kind!=="delivery"))return"";const n=[];let r=0;for(const i of[...e].filter(o=>o.source.kind!=="delivery").sort((o,l)=>l.ts-o.ts)){const o=`- ${i.text.replace(/\s+/g," ").trim()}`;if(r+o.length+1>t)break;n.push(o),r+=o.length+1}return n.length?Uh+n.join(` `):""}async function bh(e,t,n=Date.now()/1e3){const r=typeof e.ts=="number"?e.ts:n,i=t.replace(/\s+/g," ").trim();return JSON.stringify({...e,ts:r,at:new Date(r*1e3).toISOString(),text:i,sha256:await uu(i),source:{kind:"delivery"}})}function Mo(e){let t;try{t=JSON.parse(e)}catch{throw new Error("not a valid .persona file: it is not JSON")}if(!t||typeof t!="object"||Array.isArray(t))throw new Error("not a valid .persona file: expected a JSON object");const n=t;if(n.system_prompt!==void 0&&typeof n.system_prompt!="string")throw new Error('not a valid .persona file: "system_prompt" must be text');if(n.behavioral_traits!==void 0&&!(Array.isArray(n.behavioral_traits)&&n.behavioral_traits.every(r=>typeof r=="string")))throw new Error('not a valid .persona file: "behavioral_traits" must be a list of text');return n}const Vh=new Set(["high","critical"]);function Qh(e){const t=e.awareness,n=t&&typeof t=="object"?t.facts:void 0;return Array.isArray(n)?n.map(r=>typeof r=="string"?r:r&&typeof r=="object"?r.fact:void 0).filter(r=>typeof r=="string"&&!!r.trim()).map(r=>r.trim()):[]}function tf(e){var o;const t=[];(o=e.behavioral_traits)!=null&&o.length&&t.push(`Behavioural traits: ${e.behavioral_traits.join(", ")}`);const n=Object.entries(e.beliefs??{}).filter(([,l])=>l===!0).map(([l])=>l.replace(/_/g," "));n.length&&t.push(`Operating beliefs: ${n.join(", ")}`);const r=Object.entries(e.desires??{}).filter(([,l])=>{const s=typeof l=="string"?l:l&&typeof l=="object"?l.priority:void 0;return typeof s=="string"&&Vh.has(s.toLowerCase())}).map(([l])=>l.replace(/_/g," "));r.length&&t.push(`Priorities: ${r.join(", ")}`);const i=Qh(e);return i.length&&t.push(`What I know about myself: ${i.map(l=>`- ${l}`).join(` `)}`),t}const Yh=["general","reasoning","code_generation","simple_chat"],Kh=`model_facet: uif.default task_class: general # general | reasoning | code_generation | simple_chat logical_model: auto pinned: false `;function Xh(e){const t=e.trim();if(t==="true")return!0;if(t==="false")return!1;if(t==="null"||t==="~"||t==="")return null;if(/^-?\d+(\.\d+)?$/.test(t))return Number(t);const n=/^(['"])(.*)\1$/.exec(t);return n?n[2]:t}function nf(e){const t={};let n=null,r=[];const i=()=>{n&&(t[n]=r.join(` `)),n=null,r=[]};for(const o of e.split(/\r?\n/)){if(/^\s*(#.*)?$/.test(o))continue;if(/^\s/.test(o)){n&&r.push(o);continue}i();const l=/^([A-Za-z_][\w.-]*)\s*:\s*(.*)$/.exec(o);if(!l)throw new Error(`not a valid .model file: cannot read "${o.trim()}"`);const s=l[2].replace(/\s+#.*$/,"");s.trim()===""?n=l[1]:t[l[1]]=Xh(s)}return i(),t}function Gh(e,t,n){const r=String(n),i=new RegExp(`^(${t.replace(/[.]/g,"\\.")}\\s*:\\s*)([^#\\n]*?)(\\s*#.*)?$`,"m");return i.test(e)?e.replace(i,(o,l,s,u)=>`${l}${r}${u??""}`):`${e.replace(/\s*$/,` `)}${t}: ${r} `}function su(e){const t=typeof e.logical_model=="string"&&e.logical_model?e.logical_model:"auto";return e.pinned?`${t} (pinned)`:`${t} · ${e.task_class??"general"}`}function Do(e,t,n){const r=[];return e.split(/\r?\n/).forEach((i,o)=>{if(!i.trim())return;let l;try{l=JSON.parse(i)}catch{throw new Error(`not a valid ${t} file: line ${o+1} is not JSON`)}const s=l&&typeof l=="object"&&!Array.isArray(l)?n(l):null;if(!s)throw new Error(`not a valid ${t} file: line ${o+1} is missing required fields`);r.push(s)}),r}const rf=e=>typeof e.user=="string"&&typeof e.assistant=="string"?{...e,ts:typeof e.ts=="number"?e.ts:Date.now()/1e3}:null,of=e=>{if(typeof e.text!="string")return null;const t=typeof e.ts=="number"?e.ts:Date.now()/1e3,n=e.source&&typeof e.source=="object"?e.source:{kind:"typed"};return{ts:t,at:typeof e.at=="string"?e.at:new Date(t*1e3).toISOString(),text:e.text,sha256:typeof e.sha256=="string"?e.sha256:"",source:n.kind==="response"||n.kind==="delivery"?n:{...n,kind:"typed"}}},lf=new TextEncoder;async function uu(e){const t=typeof e=="string"?lf.encode(e):e,n=await crypto.subtle.digest("SHA-256",t);return[...new Uint8Array(n)].map(r=>r.toString(16).padStart(2,"0")).join("")}async function sf(...e){const t=new Uint8Array(e.reduce((r,i)=>r+i.length,0));let n=0;for(const r of e)t.set(r,n),n+=r.length;return new Uint8Array(await crypto.subtle.digest("SHA-256",t))}const Jh="rfc6962-sha256";async function Zh(e){const t=o=>[...o].map(l=>l.toString(16).padStart(2,"0")).join(""),n=e.filter(o=>o.trim());if(!n.length)return null;const r=await Promise.all(n.map(o=>sf(new Uint8Array([0]),lf.encode(o)))),i=async o=>{if(o.length===1)return o[0];let l=1;for(;l*2<o.length;)l*=2;const[s,u]=await Promise.all([i(o.slice(0,l)),i(o.slice(l))]);return sf(new Uint8Array([1]),s,u)};return t(await i(r))}async function qh(e,t){const n=t.filter(r=>r.trim());return{file:e,records:n.length,merkle_root:await Zh(n),scheme:Jh,file_sha256:n.length?await uu(n.map(r=>r+` `).join("")):null}}const eg=12,tg=4e3,uf=(e,t=tg)=>e.length>t?e.slice(0,t)+"…":e;function af(e){var g;const{prompt:t,persona:n,source:r,memory:i}=e,o=(g=n==null?void 0:n.system_prompt)==null?void 0:g.trim();let l,s;r==="persona"&&o?(l=o,s="persona.system_prompt"):t.trim()?(l=t.trim(),s=".prompt"):o?(l=o,s="persona.system_prompt"):(l="",s="none");const u=n?tf(n):[];return{system:([l,...u].filter(Boolean).join(` `)+Wh(i)).trim(),promptSource:s}}function ng(e,t,n,r=eg){const i=[];e&&i.push({role:"system",content:e});for(const o of t.slice(-r))i.push({role:"user",content:uf(o.user)},{role:"assistant",content:uf(o.assistant)});return i.push({role:"user",content:n}),i}const rg=["history","memory","prompt","persona","model"],au={history:{file:".history",icon:"⟲",summary:"Every message sent and received, across outputs"},memory:{file:".memory",icon:"◈",summary:"Long-term notes given to the model with every message"},prompt:{file:".prompt",icon:"¶",summary:"The system prompt sent with every message"},persona:{file:".persona",icon:"☺",summary:"Who the model speaks as"},model:{file:".model",icon:"⚙",summary:"Which model answers, and its settings"}},ig={width:420,height:360};function og({info:e,rect:t,onRect:n,onClose:r,children:i}){const{raise:o,zIndexOf:l}=Ct(),s=e.id,u=`win:${s}`,[p,g]=h.useState(null),y=h.useMemo(()=>function({children:N}){return p?ln.createPortal(N,p):null},[p]),{position:f,size:v,setPosition:w,setSize:E,startDrag:k,startResize:a,onHandleKeyDown:d,isDragging:m}=Ro({initialPosition:{x:t.x,y:t.y},initialSize:{width:t.width,height:t.height},minWidth:280,minHeight:180,onCommit:n});return h.useEffect(()=>{w({x:t.x,y:t.y}),E({width:t.width,height:t.height})},[t,w,E]),c.jsxs("section",{className:`uif-window uif-window-${s} ${m?"is-dragging":""}`,"data-uif-window":s,"aria-label":e.file,style:{left:f.x,top:f.y,width:v.width,height:v.height,zIndex:l(u)},onPointerDownCapture:()=>o(u),onKeyDown:x=>{x.key==="Escape"&&x.target===x.currentTarget.querySelector(".uif-window-title")&&r()},children:[c.jsxs("header",{className:"uif-window-title",onPointerDown:k,onKeyDown:d,tabIndex:0,"aria-label":`${e.file} window. ${To}. Escape closes.`,children:[c.jsx("span",{className:"uif-window-icon","aria-hidden":"true",children:e.icon}),c.jsx("span",{className:"uif-window-name",children:e.file}),c.jsx("span",{className:"uif-window-summary",children:e.summary}),c.jsxs("span",{className:"uif-window-tools",onPointerDown:x=>x.stopPropagation(),children:[c.jsx("span",{className:"uif-window-tools-slot",ref:g}),c.jsx("button",{type:"button",title:"Close","aria-label":`Close ${e.file}`,onClick:r,children:"✕"})]})]}),c.jsx("div",{className:"uif-window-body",children:i(y)}),c.jsx(lu,{onStart:a})]})}const lg={history:".history,.jsonl,application/json",memory:".memory,.jsonl,application/json",prompt:".prompt,.txt,text/plain",persona:".persona,.json,application/json",model:".model,.yaml,.yml,text/plain"};function sg(e,t){const n=URL.createObjectURL(new Blob([t],{type:"text/plain"})),r=document.createElement("a");r.href=n,r.download=e,document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}function ug(){const e=Ct(),{windows:t}=e;return c.jsx(c.Fragment,{children:t.defs.filter(n=>t.open[n.id]).map(n=>{const r=()=>t.hide(n.id);return c.jsx(og,{info:n,rect:t.open[n.id],onRect:i=>t.setRect(n.id,i),onClose:r,children:i=>c.jsx(n.Body,{uif:e,close:r,Tools:i})},n.id)})})}function ag({kind:e,Tools:t}){const{context:n,storageKey:r}=Ct(),[i,o]=h.useState(null),l=h.useRef(null),s=`${r}${au[e].file}`;h.useEffect(()=>{if(!i)return;const p=setTimeout(()=>o(null),4e3);return()=>clearTimeout(p)},[i]);const u=async p=>{var y;const g=(y=p.target.files)==null?void 0:y[0];if(p.target.value="",!!g)try{o({text:n.importText(e,await g.text())})}catch(f){o({text:f.message,error:!0})}};return c.jsxs(c.Fragment,{children:[c.jsxs(t,{children:[c.jsx("button",{type:"button",title:`Import a ${au[e].file} file`,"aria-label":"Import",onClick:()=>{var p;return(p=l.current)==null?void 0:p.click()},children:"⤒"}),c.jsx("button",{type:"button",title:`Download ${s}`,"aria-label":"Export",onClick:()=>sg(s,n.fileText(e)),children:"⤓"}),c.jsx("input",{ref:l,type:"file",accept:lg[e],hidden:!0,onChange:u,"data-uif-import":e})]}),e==="history"&&c.jsx(fg,{context:n}),e==="memory"&&c.jsx(pg,{context:n}),e==="prompt"&&c.jsx(mg,{context:n}),e==="persona"&&c.jsx(hg,{context:n}),e==="model"&&c.jsx(gg,{context:n}),i&&c.jsx("p",{className:`uif-window-note ${i.error?"is-error":""}`,role:"status",children:i.text})]})}const cg={id:"context",label:"Context",windows:rg.map(e=>({id:e,...au[e],Body:({Tools:t})=>c.jsx(ag,{kind:e,Tools:t}),detail:t=>{const n=t.context;switch(e){case"history":return`${n.history.length} exchange${n.history.length===1?"":"s"}`;case"memory":return`${n.memory.length} note${n.memory.length===1?"":"s"}`;case"prompt":return n.prompt.trim()?`${n.prompt.trim().length} chars`:"empty";case"persona":return n.persona?String(n.persona.name??n.persona.persona??"set"):"none";case"model":return String(n.model.logical_model??"auto")}}}))};function cf({file:e,lines:t}){const[n,r]=h.useState(null);return h.useEffect(()=>{let i=!0;return qh(e,t).then(o=>i&&r(o)).catch(()=>i&&r(null)),()=>{i=!1}},[e,t]),n?c.jsxs("footer",{className:"uif-window-commit",title:"Merkle root over the JSONL lines (rfc6962-sha256), the same commitment bankml computes",children:[n.records," record",n.records===1?"":"s",n.merkle_root&&c.jsxs(c.Fragment,{children:[" · root ",c.jsxs("code",{"data-uif-root":n.merkle_root,children:[n.merkle_root.slice(0,16),"…"]}),c.jsx("button",{type:"button",className:"uif-link",onClick:()=>{var i;return(i=navigator.clipboard)==null?void 0:i.writeText(n.merkle_root)},children:"copy"})]})]}):null}function df({label:e,onConfirm:t}){const[n,r]=h.useState(!1);return h.useEffect(()=>{if(!n)return;const i=setTimeout(()=>r(!1),3e3);return()=>clearTimeout(i)},[n]),c.jsx("button",{type:"button",className:`uif-button is-quiet ${n?"is-danger":""}`,onClick:()=>{n?(r(!1),t()):r(!0)},children:n?`Really ${e.toLowerCase()}?`:e})}function dg(e){return new Date(e*1e3).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function fg({context:e}){const[t,n]=h.useState(""),r=h.useRef(null),i=h.useMemo(()=>{const o=t.trim().toLowerCase(),l=e.history.map((s,u)=>({h:s,i:u}));return o?l.filter(({h:s})=>`${s.user} ${s.assistant} ${s.output??""}`.toLowerCase().includes(o)):l},[e.history,t]);return h.useEffect(()=>{const o=r.current;o&&!t&&(o.scrollTop=o.scrollHeight)},[i.length,t]),c.jsxs("div",{className:"uif-window-stack",children:[c.jsxs("div",{className:"uif-window-row",children:[c.jsx("input",{className:"uif-input",value:t,onChange:o=>n(o.target.value),placeholder:"Search .history…","aria-label":"Search history"}),c.jsx(df,{label:"Clear",onConfirm:e.clearHistory})]}),i.length===0?c.jsx("p",{className:"uif-window-empty",children:t?"Nothing matches.":"No exchanges yet. Messages you send in chat are recorded here."}):c.jsx("ol",{className:"uif-history",ref:r,children:i.map(({h:o,i:l})=>c.jsxs("li",{className:"uif-history-item",children:[c.jsxs("div",{className:"uif-history-meta",children:[dg(o.ts),o.output&&c.jsxs("span",{children:[" · ",o.output]}),o.model&&c.jsxs("span",{children:[" · ",o.model]}),o.receipt!==void 0&&c.jsxs("span",{className:"uif-history-receipt",title:JSON.stringify(o.receipt,null,2),children:[" ","· receipt"]})]}),c.jsx("div",{className:"uif-msg uif-msg-user",children:o.user}),c.jsx("div",{className:"uif-msg uif-msg-assistant",children:o.assistant})]},l))}),c.jsx(cf,{file:".history",lines:e.historyLines})]})}function pg({context:e}){const[t,n]=h.useState(""),r=e.memory.map((o,l)=>({n:o,i:l})).reverse(),i=async o=>{o.preventDefault(),t.trim()&&(await e.remember(t),n(""))};return c.jsxs("div",{className:"uif-window-stack",children:[c.jsxs("form",{className:"uif-window-row",onSubmit:i,children:[c.jsx("input",{className:"uif-input",value:t,onChange:o=>n(o.target.value),placeholder:"Add a note to remember…","aria-label":"New memory note"}),c.jsx("button",{type:"submit",className:"uif-button",disabled:!t.trim(),children:"Remember"})]}),r.length===0?c.jsx("p",{className:"uif-window-empty",children:"No notes. Add one here, or press ◈ on a reply to keep it."}):c.jsx("ul",{className:"uif-memory",children:r.map(({n:o,i:l})=>c.jsxs("li",{className:"uif-memory-item",children:[c.jsx("span",{className:`uif-memory-kind is-${o.source.kind}`,title:o.source.kind==="delivery"?"how an answer was delivered: kept, never sent to the model":o.source.kind==="response"?"kept from a reply":"typed",children:o.source.kind==="delivery"?"⏱":o.source.kind==="response"?"◈":"✎"}),c.jsx("span",{className:"uif-memory-text",children:o.text}),c.jsx("button",{type:"button",className:"uif-link",title:"Forget this note","aria-label":"Forget",onClick:()=>e.forget(l),children:"✕"})]},`${o.sha256}-${l}`))}),c.jsxs("div",{className:"uif-window-row is-end",children:[c.jsx("span",{className:"uif-window-hint",children:"Notes (✎ ◈) are sent with every message, newest first, up to 2,400 characters; deliveries (⏱) are kept, never sent."}),c.jsx(df,{label:"Clear",onConfirm:e.clearMemory})]}),c.jsx(cf,{file:".memory",lines:e.memoryLines})]})}function mg({context:e}){var o,l;const[t,n]=h.useState(!1),r=!!((l=(o=e.persona)==null?void 0:o.system_prompt)!=null&&l.trim()),i=af({prompt:e.prompt,persona:e.persona,source:e.promptSource,memory:e.memory});return c.jsxs("div",{className:"uif-window-stack",children:[c.jsx("textarea",{className:"uif-input uif-window-text",value:e.prompt,onChange:s=>e.setPrompt(s.target.value),placeholder:"You are … (the system prompt sent with every message)","aria-label":"System prompt",spellCheck:!0}),c.jsxs("fieldset",{className:"uif-window-choice",children:[c.jsx("legend",{children:"When the persona has its own system prompt"}),c.jsxs("label",{children:[c.jsx("input",{type:"radio",name:"uif-prompt-source",checked:e.promptSource==="persona",onChange:()=>e.setPromptSource("persona")}),"use the persona's",r?"":" (none set)"]}),c.jsxs("label",{children:[c.jsx("input",{type:"radio",name:"uif-prompt-source",checked:e.promptSource==="prompt",onChange:()=>e.setPromptSource("prompt")}),"use this .prompt"]})]}),c.jsxs("button",{type:"button",className:"uif-link is-left",onClick:()=>n(s=>!s),"aria-expanded":t,children:[t?"▾":"▸"," What the model receives (",i.promptSource,e.memory.length?" + memory":"",")"]}),t&&c.jsx("pre",{className:"uif-window-preview",children:i.system||"(empty: no system prompt)"})]})}function hg({context:e}){const[t,n]=h.useState(e.personaText),[r,i]=h.useState(null);h.useEffect(()=>n(e.personaText),[e.personaText]);const o=e.persona,l=t!==e.personaText,s=p=>{if(n(p),!p.trim())return i(null);try{Mo(p),i(null)}catch(g){i(g.message)}},u=()=>{try{e.setPersonaText(t),i(null)}catch(p){i(p.message)}};return c.jsxs("div",{className:"uif-window-stack",children:[o?c.jsxs("div",{className:"uif-persona-card",children:[c.jsx("strong",{children:o.name??o.persona??"Unnamed persona"}),o.role&&c.jsx("span",{className:"uif-persona-role",children:o.role}),o.description&&c.jsx("p",{children:o.description}),tf(o).map(p=>c.jsx("p",{className:"uif-persona-line",children:p},p)),c.jsx("p",{className:"uif-window-hint",children:o.system_prompt?"Has its own system prompt.":"No system prompt of its own; the .prompt is used."})]}):c.jsx("p",{className:"uif-window-empty",children:"No persona. Import a .persona file (mindX v1 or boardroom) or paste its JSON below."}),c.jsx("textarea",{className:`uif-input uif-window-text is-code ${r?"is-invalid":""}`,value:t,onChange:p=>s(p.target.value),placeholder:'{ "name": "Savante", "system_prompt": "You are …" }',"aria-label":"Persona JSON","aria-invalid":!!r,spellCheck:!1}),r&&c.jsx("p",{className:"uif-window-note is-error",children:r}),c.jsxs("div",{className:"uif-window-row is-end",children:[c.jsx("button",{type:"button",className:"uif-button is-quiet",disabled:!l,onClick:()=>s(e.personaText),children:"Revert"}),c.jsx("button",{type:"button",className:"uif-button",disabled:!l||!!r,onClick:u,children:t.trim()?"Apply":"Clear persona"})]})]})}function gg({context:e}){const t=e.model,n=(r,i)=>e.setModelText(Gh(e.modelText,r,i));return c.jsxs("div",{className:"uif-window-stack",children:[c.jsxs("div",{className:"uif-model-grid",children:[c.jsxs("label",{children:["logical_model",c.jsx("input",{className:"uif-input",value:String(t.logical_model??""),onChange:r=>n("logical_model",r.target.value||"auto")})]}),c.jsxs("label",{children:["task_class",c.jsx("select",{className:"uif-input",value:String(t.task_class??"general"),onChange:r=>n("task_class",r.target.value),children:Yh.map(r=>c.jsx("option",{children:r},r))})]}),c.jsxs("label",{children:["model_facet",c.jsx("input",{className:"uif-input",value:String(t.model_facet??""),onChange:r=>n("model_facet",r.target.value)})]}),c.jsxs("label",{className:"uif-model-pin",children:[c.jsx("input",{type:"checkbox",checked:t.pinned===!0,onChange:r=>n("pinned",r.target.checked)}),"pinned"]})]}),c.jsx("p",{className:"uif-window-hint",children:e.modelError?c.jsx("span",{className:"is-error",children:e.modelError}):c.jsxs(c.Fragment,{children:["Messages go out as ",c.jsx("b",{children:su(t)}),". Your onSend reads this from meta.context.model."]})}),c.jsx("textarea",{className:`uif-input uif-window-text is-code ${e.modelError?"is-invalid":""}`,value:e.modelText,onChange:r=>e.setModelText(r.target.value),"aria-label":".model YAML",spellCheck:!1})]})}function ff(e){return e.split(/\r?\n/).filter(t=>t.trim())}function yg(e){const t=x=>`uif:${e}:${x}`,[n,r]=h.useState(()=>Be(t("history"),[])),[i,o]=h.useState(()=>Be(t("memory"),[])),[l,s]=h.useState(()=>Be(t("prompt"),"")),[u,p]=h.useState(()=>Be(t("promptSource"),"persona")),[g,y]=h.useState(()=>Be(t("persona"),"")),[f,v]=h.useState(()=>Be(t("model"),Kh)),w=h.useCallback((x,N)=>_=>{N(_),nt(`uif:${e}:${x}`,_)},[e]),E=h.useMemo(()=>{try{return Do(n.join(` `),".history",rf)}catch{return[]}},[n]),k=h.useMemo(()=>{try{return Do(i.join(` `),".memory",of)}catch{return[]}},[i]),a=h.useMemo(()=>{if(!g.trim())return null;try{return Mo(g)}catch{return null}},[g]),{model:d,modelError:m}=h.useMemo(()=>{try{return{model:nf(f),modelError:null}}catch(x){return{model:{},modelError:x.message}}},[f]);return h.useMemo(()=>{const x=w("history",r),N=w("memory",o),_=w("prompt",s),j=w("promptSource",p),L=w("persona",y),C=w("model",v),D=F=>r(H=>{const A=[...H,...F].slice(-2e3);return nt(t("history"),A),A}),Q=F=>o(H=>{const A=[...H,...F].slice(-500);return nt(t("memory"),A),A});return{history:E,historyLines:n,appendHistory:F=>D([JSON.stringify(F)]),clearHistory:()=>x([]),memory:k,memoryLines:i,async remember(F,H="typed"){const A=F.trim();if(!A)return;const X=Date.now()/1e3,me={ts:X,at:new Date(X*1e3).toISOString(),text:A,sha256:await uu(A),source:{kind:H}};Q([JSON.stringify(me)])},async keep(F,H){Q([await bh(F,H)])},clearMemory:()=>N([]),forget(F){o(H=>{const A=H.filter((X,me)=>me!==F);return nt(t("memory"),A),A})},prompt:l,setPrompt:_,promptSource:u,setPromptSource:j,personaText:g,persona:a,setPersonaText(F){F.trim()&&Mo(F),L(F)},modelText:f,model:d,modelError:m,setModelText:C,forSend(F,H){const{system:A,promptSource:X}=af({prompt:l,persona:a,source:u,memory:k}),J=E.filter(I=>I.output_id===H).slice(-12);return{system:A,messages:ng(A,J,F),promptSource:X,prompt:l,persona:a,memory:k,model:d,modelText:f,history:J}},fileText(F){switch(F){case"history":return n.length?n.join(` `)+` `:"";case"memory":return i.length?i.join(` `)+` `:"";case"prompt":return l;case"persona":return g;case"model":return f}},importText(F,H){switch(F){case"history":{const A=Do(H,".history",rf);return D(ff(H)),`added ${A.length} exchange(s)`}case"memory":{const A=Do(H,".memory",of);return Q(ff(H)),`added ${A.length} note(s)`}case"prompt":return _(H),"prompt replaced";case"persona":{const A=Mo(H);return L(H),`persona set to ${A.name??A.persona??"unnamed"}`}case"model":{const A=nf(H);return C(H),`model set to ${su(A)}`}}}}},[E,n,k,i,l,u,g,a,f,d,m,w])}const pf=["#22d3ee","#f472b6","#a3e635","#fbbf24","#a78bfa","#fb923c"],cu={width:360,height:240},Oo="__hub",vg=1e3,du=h.createContext(null);function Ct(){const e=h.useContext(du);if(!e)throw new Error("useUIF must be used inside <UIFProvider> or <UltimateBar>");return e}function wg(){return h.useContext(du)}function kg(e){return h.useSyncExternalStore(e.subscribe,e.version,e.version)}let xg=0;const mf=e=>`${e}${Date.now().toString(36)}${(xg++).toString(36)}`;function Sg(e){return Be(`uif:${e}:outputs`,[]).map(t=>({...t,messages:t.messages.map(n=>({...n,pending:!1}))}))}function hf({children:e,storageKey:t="default",popoutUrl:n,defaultStrings:r=!1,actions:i,modules:o}){const l=h.useMemo(()=>[cg,...o??[]],[]),s=h.useMemo(()=>Lh(l),[l]),u=h.useMemo(()=>ph({actions:[...gh,...s.map($h),...l.flatMap(S=>S.actions??[]),...i??[]],storageKey:t}),[t]),p=h.useMemo(()=>Xd(t),[t]);h.useEffect(()=>()=>p.close(),[p]);const[g,y]=h.useState(()=>Sg(t)),f=h.useRef(g),v=h.useCallback(S=>{f.current=typeof S=="function"?S(f.current):S,y(f.current)},[]),w=h.useCallback((S,P)=>v(R=>R.map(z=>z.id===S?P(z):z)),[v]),[E,k]=h.useState(()=>{var S;return((S=g[g.length-1])==null?void 0:S.id)??null}),a=h.useRef(E);a.current=E;const[d,m]=h.useState(()=>Be(`uif:${t}:strings`,r)),x=h.useCallback(S=>m(P=>{const R=S==="toggle"?!P:S;return nt(`uif:${t}:strings`,R),R}),[t]),[N,_]=h.useState({}),[j,L]=h.useState(()=>[...g.map(S=>S.id),Oo]),C=h.useCallback(S=>L(P=>P[P.length-1]===S?P:[...P.filter(R=>R!==S),S]),[]),D=h.useCallback(S=>vg+Math.max(0,j.indexOf(S)),[j]),Q=h.useRef(null),F=h.useRef(new Map),H=h.useRef(null),A=h.useRef(new Map),X=h.useRef(new Set),me=h.useCallback(S=>{var Ee;const P=((Ee=Q.current)==null?void 0:Ee.getBoundingClientRect())??{left:window.innerWidth/2-300,right:window.innerWidth/2+300},{width:R,height:z}=cu,$=12,U=Math.max(1,Math.floor((window.innerHeight-$)/(z+$))),W=Math.floor(S/U),q=S%U,G=Math.max(0,Math.floor((window.innerWidth-P.right-24)/(R+$)));let ie=W<G?P.right+24+W*(R+$):P.left-24-R-(W-G)*(R+$);ie=Math.max(8,Math.min(ie,window.innerWidth-R-8));const we=Math.max(8,Math.min($+q*(z+$),window.innerHeight-z-8));return{x:ie,y:we,width:R,height:z}},[]),J=h.useCallback(S=>{const P=S==="all"?f.current.map(z=>z.id):[S],R=S==="all"?0:f.current.filter(z=>z.placement==="inline"&&z.id!==S).length;P.forEach((z,$)=>{var q;const U=R+$;p.post({type:"out:home",id:z}),(q=F.current.get(z))==null||q.close(),F.current.delete(z);const W=A.current.get(z);A.current.delete(z),W&&W.state!=="terminated"&&W.terminate(),w(z,G=>({...G,placement:"inline",presented:!1,screenGeom:void 0,rect:me(U)}))}),_(z=>Object.fromEntries([...Object.entries(z),...P.map($=>[$,(z[$]??0)+1])]))},[p,w,me]),I=h.useRef(null),b=h.useRef(null),V=h.useMemo(()=>({list:()=>f.current,get activeId(){return a.current},setActive:S=>k(S),spawn(S,P){const R=f.current.length,z=mf("o");return v($=>[...$,{id:z,title:S||`Output ${R+1}`,color:pf[R%pf.length],placement:"inline",rect:me($.filter(U=>U.placement==="inline").length),messages:[]}]),k(z),a.current=z,C(z),P&&queueMicrotask(()=>{var $,U,W;P.speak&&(($=I.current)==null||$.setSpeak(z,!0)),P.present?(U=I.current)==null||U.present(z):(P.screen!==void 0||P.window)&&((W=I.current)==null||W.popOut(z,{screen:P.screen}))}),z},close(S){var R,z;p.post({type:"out:home",id:S}),(R=F.current.get(S))==null||R.close(),F.current.delete(S);const P=A.current.get(S);if(A.current.delete(S),P&&P.state!=="terminated"&&P.terminate(),v($=>$.filter(U=>U.id!==S)),L($=>$.filter(U=>U!==S)),a.current===S){const $=f.current;k(((z=$[$.length-1])==null?void 0:z.id)??null)}},popOut(S,P){if(!f.current.find($e=>$e.id===S))return;const z=f.current.filter($e=>$e.placement==="popout").length,{width:$,height:U}=cu;let W=window.screenX+window.outerWidth+20+z*30,q=window.screenY+60+z*30;const G=H.current;let ie;if((P==null?void 0:P.screen)!==void 0){const $e=G==null?void 0:G.screens[P.screen-1];$e?(W=$e.availLeft+40+z*30,q=$e.availTop+40+z*30):ie=G?`there is no screen ${P.screen} (this machine has ${G.screens.length}); it opened beside this window`:`screen ${P.screen} needs screen access first (run "screens"); it opened beside this window`}else if(G){const $e=G.currentScreen,ii=G.screens.filter(oi=>oi.availLeft!==$e.availLeft||oi.availTop!==$e.availTop),an=ii[z%Math.max(ii.length,1)]??$e;W=an.availLeft+40+z*30,q=an.availTop+40+z*30}const we=new URL(n??window.location.href,window.location.href);we.searchParams.set(zo,S),we.searchParams.set(ou,t);const Ee=window.open(we.toString(),`uif-${t}-${S}`,`popup,width=${$+40},height=${U+120},left=${Math.round(W)},top=${Math.round(q)}`);return Ee?(F.current.set(S,Ee),w(S,$e=>({...$e,placement:"popout"})),ie):"the browser blocked the window (allow pop-ups for this page)"},async present(S){const P=window.PresentationRequest;if(!P)return"this browser cannot present to another display (the Presentation API is missing; Chrome has it)";if(!f.current.some(z=>z.id===S))return"no such output";const R=new URL(n??window.location.href,window.location.href);R.searchParams.set(zo,S),R.searchParams.set(ou,t);try{const z=await new P([R.toString()]).start();A.current.set(S,z),w(S,U=>({...U,placement:"popout",presented:!0}));const $=()=>{A.current.get(S)===z&&(A.current.delete(S),J(S))};return z.addEventListener("terminate",$),z.addEventListener("close",$),z.addEventListener("message",U=>{var W;try{(W=b.current)==null||W.call(b,JSON.parse(String(U.data)))}catch{}}),"presented on the chosen display"}catch(z){return`not presented: ${z.message||z}`}},setSpeak(S,P){var z;if(P&&!("speechSynthesis"in window))return"this browser cannot speak (no speech synthesis)";const R=f.current.find($=>$.id===S);return R?(P?R.messages.forEach($=>X.current.add($.id)):(z=window.speechSynthesis)==null||z.cancel(),w(S,$=>({...$,speak:P})),P?`replies in ${R.title} will be read aloud`:`${R.title} is quiet`):"no such output"},screens(){const S=H.current;return S?S.screens.map((P,R)=>({index:R+1,label:P.label||`screen ${R+1}`,primary:!!P.isPrimary,current:P.availLeft===S.currentScreen.availLeft&&P.availTop===S.currentScreen.availTop,width:P.availWidth,height:P.availHeight})):null},callHome:J,closeAll(){var P;for(const R of[...f.current])p.post({type:"out:home",id:R.id}),(P=F.current.get(R.id))==null||P.close(),F.current.delete(R.id);const S=new Set(f.current.map(R=>R.id));v(()=>[]),L(R=>R.filter(z=>!S.has(z))),k(null),a.current=null},clearAll(){v(S=>S.map(P=>({...P,messages:[]})))},maximize(S,P){w(S,R=>({...R,maximized:P??!R.maximized})),C(S)},tile(){const S=f.current.filter(q=>q.placement==="inline"),P=S.length;if(!P)return;const R=8,z=Math.ceil(Math.sqrt(P*window.innerWidth/Math.max(1,window.innerHeight))),$=Math.ceil(P/z),U=Math.floor((window.innerWidth-R*(z+1))/z),W=Math.floor((window.innerHeight-R*($+1))/$);S.forEach((q,G)=>w(q.id,ie=>({...ie,maximized:!1,rect:{x:R+G%z*(U+R),y:R+Math.floor(G/z)*(W+R),width:U,height:W}})))},cascade(){const S=f.current.filter($=>$.placement==="inline"),{width:P,height:R}=cu,z=32;S.forEach(($,U)=>{const W=U%Math.max(1,Math.floor((window.innerHeight-R)/z));w($.id,q=>({...q,maximized:!1,rect:{x:16+W*z,y:16+W*z,width:P,height:R}})),C($.id)})},ping(S){var P;_(R=>({...R,[S]:(R[S]??0)+1})),p.post({type:"out:ping",id:S}),(P=F.current.get(S))==null||P.focus()},clear(S){w(S,P=>({...P,messages:[]}))},rename(S,P){const R=P.trim();R&&w(S,z=>({...z,title:R}))},append(S,P){const R=mf("m");return w(S,z=>({...z,messages:[...z.messages,{...P,id:R}]})),R},update(S,P,R){w(S,z=>({...z,messages:z.messages.map($=>$.id===P?{...$,...R}:$)}))},resolve(S){var z,$,U;const P=f.current;if(!S)return a.current??((z=P[P.length-1])==null?void 0:z.id);if(/^\d+$/.test(S))return($=P[Number(S)-1])==null?void 0:$.id;const R=S.toLowerCase();return(U=P.find(W=>W.id===S)??P.find(W=>W.title.toLowerCase()===R))==null?void 0:U.id}}),[p,J,v,w,n,C,me,t]);I.current=V;const ee=h.useRef(null),ae=h.useCallback(S=>(ee.current=S,()=>{ee.current===S&&(ee.current=null)}),[]),rt=h.useCallback((S,P)=>{S.trim()&&(ee.current?ee.current(S,P):V.append(P,{role:"user",text:S}))},[V]),We=yg(t),[je,_e]=h.useState(()=>{const S=Be(`uif:${t}:windows`,{});return Object.fromEntries(Object.entries(S).filter(([P])=>s.some(R=>R.id===P)))});h.useEffect(()=>nt(`uif:${t}:windows`,je),[je,t]);const ge=h.useRef(je);ge.current=je;const ni=h.useCallback(S=>{const{width:P,height:R}=ig,z=12,$=Math.max(1,Math.floor((window.innerWidth-z)/(P+z))),U=Math.max(1,Math.floor((window.innerHeight-z)/(R+z))),W=G=>S.some(ie=>G.x<ie.x+ie.width&&ie.x<G.x+G.width&&G.y<ie.y+ie.height&&ie.y<G.y+G.height);for(let G=0;G<U;G++)for(let ie=0;ie<$;ie++){const we={x:z+ie*(P+z),y:z+G*(R+z),width:P,height:R};if(!W(we))return we}const q=S.length;return{x:Math.min(z+q*32,window.innerWidth-P-z),y:Math.min(z+q*32,window.innerHeight-R-z),width:P,height:R}},[]),Fo=h.useMemo(()=>({defs:s,open:je,isOpen:S=>!!je[S],show:S=>{C(`win:${S}`),_e(P=>P[S]?P:{...P,[S]:ni(Object.values(P))})},hide:S=>_e(P=>{if(!P[S])return P;const R={...P};return delete R[S],R}),toggle:S=>{je[S]||C(`win:${S}`),_e(P=>{if(P[S]){const R={...P};return delete R[S],R}return{...P,[S]:ni(Object.values(P))}})},setRect:(S,P)=>_e(R=>R[S]?{...R,[S]:P}:R)}),[je,C,ni,s]),yt=h.useRef(null),It=h.useCallback(S=>(yt.current=S,()=>{yt.current===S&&(yt.current=null)}),[]),[te,gu]=h.useState(()=>Be(`uif:${t}:profiles`,{})),[ye,cr]=h.useState(()=>Be(`uif:${t}:profile`,null)),Pe=h.useRef(te);Pe.current=te;const ri=h.useRef(d);ri.current=d;const Ie=h.useCallback(S=>{Pe.current=S,gu(S),nt(`uif:${t}:profiles`,S)},[t]),vt=h.useCallback(S=>{cr(S),nt(`uif:${t}:profile`,S)},[t]),dr=h.useMemo(()=>{const S=$=>{var U;return{"uif.profile":1,name:$,savedAt:new Date().toISOString(),actions:u.snapshot(),hub:((U=yt.current)==null?void 0:U.get())??{x:0,y:0,width:600,height:120,mode:"chat",docked:null},strings:ri.current,windows:ge.current}},P=$=>{var U;u.restore($.actions),(U=yt.current)==null||U.set($.hub),x($.strings),_e($.windows??{})},R=()=>{var $;u.reset(),($=yt.current)==null||$.set(null),x(r),_e({}),vt(Nn)},z=$=>{const U=URL.createObjectURL(new Blob([Oh($)],{type:"application/json"})),W=document.createElement("a");W.href=U,W.download=Dh($.name),document.body.appendChild(W),W.click(),W.remove(),setTimeout(()=>URL.revokeObjectURL(U),1e3)};return{list:()=>Object.keys(Pe.current).sort(),active:ye,capture:S,save($){const U=$.trim();if(!U||U===Nn)throw new Error(`"${Nn}" is the built-in layout; pick another name`);const W=S(U);return Ie({...Pe.current,[U]:W}),vt(U),W},load($){if($===Nn)return R(),!0;const U=Pe.current[$];return U?(P(U),vt($),!0):!1},remove($){if(!Pe.current[$])return!1;const{[$]:U,...W}=Pe.current;return Ie(W),ye===$&&vt(null),!0},reset:R,exportProfile($){const U=$?Pe.current[$]:void 0;if($&&!U&&$!==ye)throw new Error(`no profile "${$}"`);z(U??S($??ye??"layout"))},importProfile($,U){let W;try{W=JSON.parse($)}catch{throw new Error("not a valid .profile file: it is not JSON")}const q=(U==null?void 0:U.replace(/\.profile$|\.json$/i,""))||"imported",G=Mh(W,q),ie=G.name===Nn?`${Nn}-imported`:G.name,we={...G,name:ie};return Ie({...Pe.current,[ie]:we}),P(we),vt(ie),ie}}},[ye,r,vt,u,x,Ie]),Ao=h.useCallback((S,P)=>w(S,R=>({...R,rect:P})),[w]),_n=h.useCallback(async()=>{const S=window;if(!S.getScreenDetails)return"this browser cannot place windows on other screens";try{return H.current=await S.getScreenDetails(),`${H.current.screens.length} screen(s) available for pop-outs`}catch{return"screen access was denied"}},[]);h.useEffect(()=>{!window.getScreenDetails||!navigator.permissions||navigator.permissions.query({name:"window-management"}).then(P=>{P.state==="granted"&&_n()}).catch(()=>{})},[_n]),h.useEffect(()=>{const S=setTimeout(()=>nt(`uif:${t}:outputs`,g.map(P=>({...P,messages:P.messages.slice(-200)}))),300);return()=>clearTimeout(S)},[g,t]),h.useEffect(()=>{g.filter(S=>S.placement==="popout").forEach(S=>{const P={type:"out:state",id:S.id,field:S,active:S.id===E};p.post(P);const R=A.current.get(S.id);(R==null?void 0:R.state)==="connected"&&R.send(JSON.stringify(P))})},[g,E,p]),h.useEffect(()=>{const S=typeof window<"u"?window.speechSynthesis:void 0;if(S){for(const P of g)if(P.speak)for(const R of P.messages)R.role!=="assistant"||R.pending||R.silent||!R.text.trim()||X.current.has(R.id)||(X.current.add(R.id),S.speak(new SpeechSynthesisUtterance(R.text)))}},[g]),h.useEffect(()=>{const S=new Set,P=$=>{if(!("id"in $))return;const U=f.current.find(W=>W.id===$.id);switch($.type){case"out:hello":{S.add($.id);const W=(U==null?void 0:U.placement)==="popout"?{type:"out:state",id:$.id,field:U,active:$.id===a.current}:{type:"out:home",id:$.id};p.post(W);const q=A.current.get($.id);(q==null?void 0:q.state)==="connected"&&q.send(JSON.stringify(W));break}case"out:geom":{S.add($.id);const W=U==null?void 0:U.screenGeom;U&&(!W||W.x!==$.geom.x||W.y!==$.geom.y||W.width!==$.geom.width||W.height!==$.geom.height)&&w($.id,q=>({...q,screenGeom:$.geom}));break}case"out:bye":setTimeout(()=>{const W=f.current.find(G=>G.id===$.id),q=F.current.get($.id);(W==null?void 0:W.placement)==="popout"&&(!q||q.closed)&&J($.id)},300);break;case"out:request-home":J($.id);break;case"out:request-close":V.close($.id);break;case"out:request-rename":V.rename($.id,$.title);break;case"out:input":rt($.text,$.id);break;case"out:remember":We.remember($.text,"response");break}},R=p.on(P);b.current=P,p.post({type:"hub:hello"});const z=setTimeout(()=>{f.current.filter($=>$.placement==="popout"&&!S.has($.id)&&!F.current.has($.id)).forEach($=>J($.id))},1500);return()=>{R(),clearTimeout(z)}},[p,J,V,w,rt,We]);const yu=h.useMemo(()=>({registry:u,outputs:V,fields:g,strings:d,setStrings:x,hubRef:Q,flashes:N,setRect:Ao,requestScreens:_n,bus:p,storageKey:t,raise:C,zIndexOf:D,sendTo:rt,registerSender:ae,layout:dr,windows:Fo,context:We,registerHubLayout:It}),[u,V,g,d,x,N,Ao,_n,p,t,C,D,rt,ae,dr,Fo,We,It]);return c.jsxs(du.Provider,{value:yu,children:[e,g.filter(S=>S.placement==="inline").map(S=>c.jsx(Fh,{field:S},S.id)),c.jsx(ug,{}),d&&c.jsx(Hh,{})]})}const Eg=400,Cg=6,gf=36,Ng=10,jg=50;function fu(e){return{x:Math.max(0,Math.min(e.x,window.innerWidth-gf)),y:Math.max(0,Math.min(e.y,window.innerHeight-gf))}}function _g(e,t,n,r=24){if(!e)return!1;const i=e.getBoundingClientRect();return t>=i.left-r&&t<=i.right+r&&n>=i.top-r&&n<=i.bottom+r}function Pg(e){const t=e.registry.floating(),[,n]=h.useState(0);return h.useEffect(()=>{const r=()=>n(i=>i+1);return window.addEventListener("resize",r),()=>window.removeEventListener("resize",r)},[]),t.length?ln.createPortal(c.jsx(c.Fragment,{children:t.map(({action:r,at:i})=>c.jsx($g,{action:r,at:fu(i),...e},r.id))}),document.body):null}function $g({action:e,at:t,registry:n,barRef:r,arranging:i,pressed:o,onRun:l,onDragChange:s,zIndex:u}){const[p,g]=h.useState(null),[y,f]=h.useState({overBar:!1,overTrash:!1}),v=h.useRef(!1),w=h.useRef(),E=h.useRef(s);E.current=s,h.useEffect(()=>()=>{var m;return(m=w.current)==null?void 0:m.call(w)},[]);const k=m=>{var A;if(m.button!==0)return;(A=w.current)==null||A.call(w);const x={x:m.clientX,y:m.clientY},N={x:x.x-t.x,y:x.y-t.y};let _=i,j=!1,L=x;const C=_?void 0:window.setTimeout(()=>{var X;_=!0,v.current=!0,(X=navigator.vibrate)==null||X.call(navigator,15)},Eg),D=X=>({overBar:_g(r.current,X.x,X.y),overTrash:Yd(X.x,X.y)}),Q=X=>{L={x:X.clientX,y:X.clientY};const me=Math.hypot(L.x-x.x,L.y-x.y);if(!_){me>Cg&&(clearTimeout(C),H());return}if(!j&&me<=3)return;j=!0,v.current=!0,X.preventDefault();const J=D(L);g({x:L.x-N.x,y:L.y-N.y}),f(J),E.current({id:e.id,...J})},F=()=>{if(clearTimeout(C),H(),!j)return;const X=D(L);g(null),f({overBar:!1,overTrash:!1}),E.current(null),X.overTrash?n.hide(e.id):X.overBar&&r.current?n.dockAt(e.id,Kd(r.current,L.x,L.y)):n.float(e.id,fu({x:L.x-N.x,y:L.y-N.y}))},H=()=>{document.removeEventListener("pointermove",Q),document.removeEventListener("pointerup",F),document.removeEventListener("pointercancel",F),w.current=void 0};document.addEventListener("pointermove",Q,{passive:!1}),document.addEventListener("pointerup",F),document.addEventListener("pointercancel",F),w.current=()=>{clearTimeout(C),H()}},a=m=>{const x=m.shiftKey?jg:Ng,N={ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1],ArrowDown:[0,1]};if(N[m.key])n.float(e.id,fu({x:t.x+N[m.key][0]*x,y:t.y+N[m.key][1]*x}));else if(m.key==="Delete"||m.key==="Backspace")n.hide(e.id);else if(m.key==="Home")n.dockAt(e.id);else return;m.preventDefault()},d=p??t;return c.jsx("button",{type:"button",className:["uif-action","uif-action-floating",i?"is-arranging":"",p?"is-moving":"",y.overTrash?"is-removing":"",y.overBar?"is-docking":"",o[e.id]?"is-pressed":""].filter(Boolean).join(" "),style:{left:d.x,top:d.y,zIndex:u},"aria-pressed":e.id in o?!!o[e.id]:void 0,"aria-label":e.label,title:`${e.label} (${e.command}) - hold to move; arrow keys move, Home returns it to the bar, Delete hides it`,"data-uif-floating":e.id,onPointerDown:k,onKeyDown:a,onClick:()=>{if(v.current){v.current=!1;return}l(e)},onContextMenu:m=>m.preventDefault(),children:c.jsx("span",{className:"uif-action-icon",children:e.icon??e.label.slice(0,1).toUpperCase()})})}function Lg({layout:e}){const[t,n]=h.useState(""),[r,i]=h.useState(null),o=h.useRef(null),l=e.list(),s=g=>{try{i({text:g()})}catch(y){i({text:y.message,error:!0})}},u=g=>{g.preventDefault(),t.trim()&&s(()=>{const y=e.save(t);return n(""),`saved "${y.name}"`})},p=async g=>{var v;const y=(v=g.target.files)==null?void 0:v[0];if(g.target.value="",!y)return;const f=await y.text();s(()=>`imported and applied "${e.importProfile(f,y.name)}"`)};return c.jsxs("div",{className:"uif-palette-layout",role:"tabpanel",children:[c.jsxs("div",{className:"uif-palette-row",children:[c.jsx("strong",{children:"Layout"}),c.jsx("span",{className:"uif-palette-active",children:e.active?`active: ${e.active}`:"not saved yet"})]}),l.length>0&&c.jsx("ul",{className:"uif-palette-list",children:l.map(g=>c.jsxs("li",{className:g===e.active?"is-active":"",children:[c.jsxs("button",{type:"button",className:"uif-palette-item",title:"Apply this layout",onClick:()=>s(()=>(e.load(g),`loaded "${g}"`)),children:[c.jsx("span",{children:g}),c.jsx("code",{children:sr})]}),c.jsx("button",{type:"button",className:"uif-link",title:`Download ${g}${sr}`,onClick:()=>s(()=>(e.exportProfile(g),`exported "${g}"`)),children:"⤓"}),c.jsx("button",{type:"button",className:"uif-link",title:"Delete this layout",onClick:()=>s(()=>(e.remove(g),`deleted "${g}"`)),children:"✕"})]},g))}),c.jsxs("form",{className:"uif-palette-fields",onSubmit:u,children:[c.jsx("input",{value:t,onChange:g=>n(g.target.value),placeholder:"Save layout as…","aria-label":"Layout name",className:"uif-input"}),c.jsx("button",{type:"submit",className:"uif-button",disabled:!t.trim(),children:"Save"})]}),c.jsxs("div",{className:"uif-palette-fields",children:[c.jsxs("button",{type:"button",className:"uif-button is-quiet",onClick:()=>{var g;return(g=o.current)==null?void 0:g.click()},children:["Import ",sr]}),c.jsx("button",{type:"button",className:"uif-button is-quiet",onClick:()=>s(()=>(e.exportProfile(),"exported the current layout")),children:"Export current"}),c.jsx("button",{type:"button",className:"uif-button is-quiet",title:"Put every button, the field and the strings back to the standard layout. Saved layouts are kept.",onClick:()=>s(()=>(e.reset(),`reset to the ${Nn} layout`)),children:"Reset"})]}),c.jsx("input",{ref:o,type:"file",accept:`${sr},application/json,.json`,hidden:!0,onChange:p}),r&&c.jsx("p",{className:`uif-palette-note ${r.error?"is-error":""}`,role:"status",children:r.text})]})}const yf=1900;function pu({action:e}){return c.jsx("span",{className:"uif-action-icon",children:e.icon??e.label.slice(0,1).toUpperCase()})}function Tg({registry:e,layout:t,onRun:n,pressed:r={},vertical:i=!1,rolling:o=!1}){kg(e);const l=e.visible(),s=h.useRef(null),u=h.useRef(null),[p,g]=h.useState(!1);h.useEffect(()=>{const C=u.current;if(!C||typeof ResizeObserver>"u")return;const D=()=>g(C.scrollWidth>C.clientWidth+1),Q=new ResizeObserver(D);return Q.observe(C),D(),()=>Q.disconnect()});const[y,f]=h.useState(!1),[v,w]=h.useState(null),{arranging:E,setArranging:k,drag:a,onPointerDown:d,onKeyDown:m,guardClick:x}=Ph({containerRef:s,onReorder:(C,D)=>e.reorder(C,D),onRemove:C=>{const D=l[C];D&&e.hide(D.id)},onDropOutside:(C,D)=>{const Q=l[C];Q&&e.float(Q.id,D)}});h.useEffect(()=>{if(!y&&!E)return;const C=D=>{var Q;(Q=s.current)!=null&&Q.contains(D.target)||(f(!1),k(!1))};return document.addEventListener("pointerdown",C),()=>document.removeEventListener("pointerdown",C)},[y,E,k]);const N=l.map((C,D)=>c.jsx("button",{type:"button","data-uif-item":D,className:`uif-action ${E?"is-arranging":""} ${(a==null?void 0:a.index)===D?"is-dragged":""} ${r[C.id]?"is-pressed":""}`,"aria-pressed":C.id in r?!!r[C.id]:void 0,title:`${C.label} (${C.command})${E?"":" - hold to rearrange"}`,"aria-label":C.label,onPointerDown:Q=>d(Q,D),onKeyDown:Q=>m(Q,D,l.length),onClick:()=>x(()=>n(C)),onContextMenu:Q=>Q.preventDefault(),children:c.jsx(pu,{action:C})},C.id));if(a&&!a.outside&&!a.overTrash){const D=N.filter((F,H)=>H!==a.index)[a.target],Q=D?N.indexOf(D):N.length;N.splice(Q,0,c.jsx("span",{className:"uif-action-slot",style:{width:a.width}},"__slot"))}const _=a?l[a.index]:void 0,j=!!a||!!v,L=a!=null&&a.overTrash?"release to hide":a!=null&&a.outside?"release to place it here":"drag to move · drop anywhere to place · drop on the trash to hide";return c.jsxs("div",{className:`uif-actionbar ${E?"is-arranging":""} ${v!=null&&v.overBar?"is-drop-target":""} ${i?"is-vertical":""} ${o?"is-rolling":""}`,ref:s,role:"toolbar","aria-label":"Actions","aria-orientation":i?"vertical":"horizontal",children:[c.jsx("div",{className:`uif-actionbar-items ${p?"is-overflowing":""}`,ref:u,children:N}),E?c.jsx("button",{type:"button",className:"uif-action uif-action-done",onClick:()=>k(!1),children:"Done"}):c.jsx("button",{type:"button",className:"uif-action uif-action-add",title:"Add actions, arrange, layouts","aria-expanded":y,onClick:()=>f(C=>!C),children:"+"}),E&&c.jsx("span",{className:"uif-arrange-hint",children:L}),_&&a&&ln.createPortal(c.jsx("div",{className:`uif-action uif-action-ghost ${a.overTrash?"is-removing":a.outside?"is-placing":""}`,style:{left:a.x-a.offsetX,top:a.y-a.offsetY,width:a.width,height:a.height},children:c.jsx(pu,{action:_})}),document.body),j&&ln.createPortal(c.jsx("div",{"data-uif-trash":"",className:`uif-trash ${a!=null&&a.overTrash||v!=null&&v.overTrash?"is-hot":""}`,style:{zIndex:yf+1},children:"🗑 Drop here to hide"}),document.body),c.jsx(Pg,{registry:e,barRef:s,arranging:E,pressed:r,onRun:n,onDragChange:w,zIndex:yf}),y&&!E&&c.jsx(zg,{registry:e,layout:t,onArrange:()=>{f(!1),k(!0)},onClose:()=>f(!1)})]})}const Rg=[["actions","Actions"],["new","New"],["layout","Layout"]];let vf="actions";function zg({registry:e,layout:t,onArrange:n,onClose:r}){const i=e.hidden(),[o,l]=h.useState(vf),s=a=>{vf=a,l(a)},[u,p]=h.useState(""),[g,y]=h.useState(""),[f,v]=h.useState("command"),[w,E]=h.useState(""),k=a=>{a.preventDefault(),!(!u.trim()||!w.trim())&&(e.addCustom({label:u,icon:g.trim(),kind:f,payload:w.trim()}),p(""),y(""),E(""))};return c.jsxs("div",{className:"uif-palette",onKeyDown:a=>a.key==="Escape"&&r(),children:[c.jsx("div",{className:"uif-palette-tabs",role:"tablist","aria-label":"Palette",children:Rg.map(([a,d])=>c.jsx("button",{type:"button",role:"tab","aria-selected":o===a,className:`uif-palette-tab ${o===a?"is-active":""}`,onClick:()=>s(a),children:d},a))}),o==="actions"&&c.jsxs("div",{role:"tabpanel",className:"uif-palette-panel",children:[c.jsxs("div",{className:"uif-palette-row",children:[c.jsx("strong",{children:"Actions"}),c.jsx("button",{type:"button",className:"uif-link",onClick:n,children:"Arrange…"})]}),i.length>0?c.jsx("ul",{className:"uif-palette-list",children:i.map(a=>c.jsxs("li",{children:[c.jsxs("button",{type:"button",className:"uif-palette-item",onClick:()=>e.show(a.id),title:"Add to the bar",children:[c.jsx(pu,{action:a}),c.jsx("span",{children:a.label}),c.jsx("code",{children:a.command})]}),e.isCustom(a.id)&&c.jsx("button",{type:"button",className:"uif-link",title:"Delete this action",onClick:()=>e.removeCustom(a.id),children:"✕"})]},a.id))}):c.jsx("p",{className:"uif-palette-note",children:"Every action is on the bar."})]}),o==="new"&&c.jsx("div",{role:"tabpanel",className:"uif-palette-panel",children:c.jsxs("form",{className:"uif-palette-form",onSubmit:k,children:[c.jsxs("div",{className:"uif-palette-fields",children:[c.jsx("input",{value:g,onChange:a=>y(a.target.value),placeholder:"★",maxLength:2,"aria-label":"Icon",className:"uif-input uif-input-icon"}),c.jsx("input",{value:u,onChange:a=>p(a.target.value),placeholder:"Label","aria-label":"Label",className:"uif-input",autoFocus:!0})]}),c.jsxs("div",{className:"uif-palette-fields",children:[c.jsxs("select",{value:f,onChange:a=>v(a.target.value),"aria-label":"Kind",className:"uif-input",children:[c.jsx("option",{value:"command",children:"runs command"}),c.jsx("option",{value:"send",children:"sends text"})]}),c.jsx("input",{value:w,onChange:a=>E(a.target.value),placeholder:f==="command"?"spawn logs; strings on":"Summarize the last reply","aria-label":f==="command"?"Command":"Text",className:"uif-input"})]}),c.jsx("button",{type:"submit",className:"uif-button",disabled:!u.trim()||!w.trim(),children:"Add to bar"})]})}),o==="layout"&&c.jsx(Lg,{layout:t})]})}function Mg(){const e=Ct(),{windows:t}=e,[n,r]=h.useState(!1),i=h.useRef(null);return h.useEffect(()=>{if(!n)return;const o=l=>{var s;(s=i.current)!=null&&s.contains(l.target)||r(!1)};return document.addEventListener("pointerdown",o),()=>document.removeEventListener("pointerdown",o)},[n]),c.jsxs("div",{className:"uif-windows-menu",ref:i,children:[c.jsx("button",{type:"button",className:`uif-windows-toggle ${n?"is-open":""}`,"aria-haspopup":"menu","aria-expanded":n,"aria-label":"Windows",title:`Windows: ${t.defs.map(o=>o.file).join(" ")}`,onClick:()=>r(o=>!o),children:"▤"}),n&&c.jsx("div",{className:"uif-windows-list",role:"menu","aria-label":"Windows",onKeyDown:o=>o.key==="Escape"&&r(!1),children:t.defs.map(({id:o,icon:l,file:s,detail:u})=>c.jsxs("button",{type:"button",role:"menuitemcheckbox","aria-checked":t.isOpen(o),className:`uif-windows-item ${t.isOpen(o)?"is-open":""}`,onClick:()=>{t.toggle(o),r(!1)},children:[c.jsx("span",{className:"uif-windows-icon","aria-hidden":"true",children:l}),c.jsx("span",{className:"uif-windows-file",children:s}),c.jsx("span",{className:"uif-windows-detail",children:(u==null?void 0:u(e))??""}),c.jsx("span",{className:"uif-windows-check","aria-hidden":"true",children:t.isOpen(o)?"●":""})]},o))})]})}const wf="uif:responses:settings",Dg={textSize:"m",answerIn:"active",openMaximized:!1,details:!1},Og={s:"12.5px",m:"14px",l:"16px",xl:"19px"};let jn={...Dg,...Be(wf,{})};const mu=new Set;function kf(e){typeof document<"u"&&document.documentElement.style.setProperty("--uif-output-font",Og[e.textSize])}kf(jn);const un={get:()=>jn,set(e){jn={...jn,...e},nt(wf,jn),kf(jn),mu.forEach(t=>t(jn))},subscribe(e){return mu.add(e),()=>void mu.delete(e)}};function Ig(){const{outputs:e}=Ct(),[t,n]=h.useState(!1),[r,i]=h.useState(un.get()),o=h.useRef(null);h.useEffect(()=>un.subscribe(i),[]),h.useEffect(()=>{if(!t)return;const f=v=>{var w;(w=o.current)!=null&&w.contains(v.target)||n(!1)};return document.addEventListener("pointerdown",f),()=>document.removeEventListener("pointerdown",f)},[t]);const l=e.list(),s=l.length,u=l.find(f=>f.id===e.activeId),p=f=>()=>{f(),n(!1)},g=f=>un.set(f),y=(f,v,w,E=!1,k=!1)=>c.jsxs("button",{type:"button",role:"menuitem",className:`uif-windows-item ${k?"is-danger":""}`,disabled:E,onClick:p(w),children:[c.jsx("span",{className:"uif-windows-file",children:f}),c.jsx("span",{className:"uif-windows-detail",children:v})]});return c.jsxs("div",{className:"uif-windows-menu uif-responses-menu",ref:o,children:[c.jsxs("button",{type:"button",className:`uif-windows-toggle ${t?"is-open":""}`,"aria-haspopup":"menu","aria-expanded":t,"aria-label":`Response windows (${s})`,title:`Response windows: ${s} open — tile, cascade, close all, settings`,onClick:()=>n(f=>!f),children:["❏",s>0&&c.jsx("span",{className:"uif-responses-count",children:s})]}),t&&c.jsxs("div",{className:"uif-windows-list uif-responses-list",role:"menu","aria-label":"Response windows",onKeyDown:f=>f.key==="Escape"&&n(!1),children:[c.jsxs("div",{className:"uif-menu-head",children:["Response windows · ",s," open"]}),y("New window","spawn",()=>{const f=e.spawn();r.openMaximized&&e.maximize(f,!0)}),y("Tile","fill the screen, side by side",()=>e.tile(),s===0),y("Cascade","stacked, a step apart",()=>e.cascade(),s===0),y("Call all home","back beside the field",()=>e.callHome("all"),s===0),y(u!=null&&u.maximized?"Shrink back":"Fill the screen",u?`the active one: ${u.title}`:"no active window",()=>u&&e.maximize(u.id),!u),y("Clear all","empty every window",()=>e.clearAll(),s===0),y("Close all",`${s} window${s===1?"":"s"}`,()=>e.closeAll(),s===0,!0),c.jsx("div",{className:"uif-menu-head",children:"Settings"}),c.jsxs("div",{className:"uif-menu-row",role:"group","aria-label":"Text size",children:[c.jsx("span",{children:"Text"}),["s","m","l","xl"].map(f=>c.jsx("button",{type:"button","aria-pressed":r.textSize===f,className:r.textSize===f?"is-on":"",onClick:()=>g({textSize:f}),children:f.toUpperCase()},f))]}),c.jsxs("div",{className:"uif-menu-row",role:"group","aria-label":"Answers go",children:[c.jsx("span",{children:"Answers"}),c.jsx("button",{type:"button","aria-pressed":r.answerIn==="active",className:r.answerIn==="active"?"is-on":"",onClick:()=>g({answerIn:"active"}),children:"active window"}),c.jsx("button",{type:"button","aria-pressed":r.answerIn==="new",className:r.answerIn==="new"?"is-on":"",onClick:()=>g({answerIn:"new"}),children:"new window each"})]}),c.jsxs("label",{className:"uif-menu-row uif-menu-check",children:[c.jsx("input",{type:"checkbox",checked:r.openMaximized,onChange:f=>g({openMaximized:f.target.checked})})," new windows fill the screen"]}),c.jsxs("label",{className:"uif-menu-row uif-menu-check",title:"Off: the details are still kept in .memory and in the T-mode log (last)",children:[c.jsx("input",{type:"checkbox",checked:r.details,onChange:f=>g({details:f.target.checked})})," show delivery details under answers"]}),c.jsx("div",{className:"uif-menu-foot",children:"double-click a window's header: fill the screen / shrink back · Esc shrinks · T mode: close all, tile, cascade, max"})]})]})}const Fg=6;function Ag({holdMs:e=400,onMove:t,onDrop:n,onTap:r}){const[i,o]=h.useState(null),l=h.useRef({onMove:t,onDrop:n,onTap:r});l.current={onMove:t,onDrop:n,onTap:r};const s=h.useRef();return h.useEffect(()=>()=>{var p;return(p=s.current)==null?void 0:p.call(s)},[]),{onPointerDown:h.useCallback(p=>{var x;if(p.button!==0)return;p.preventDefault(),p.stopPropagation(),(x=s.current)==null||x.call(s);const g=p.currentTarget.getBoundingClientRect(),y={x:p.clientX,y:p.clientY},f={offsetX:y.x-g.left,offsetY:y.y-g.top};let v=e===0,w=!1,E=y;const k=v?void 0:window.setTimeout(()=>{var _,j,L;v=!0,(_=navigator.vibrate)==null||_.call(navigator,15);const N={...E,...f};o(N),(L=(j=l.current).onMove)==null||L.call(j,N)},e),a=N=>{var j,L;if(E={x:N.clientX,y:N.clientY},!v){Math.hypot(E.x-y.x,E.y-y.y)>Fg&&(clearTimeout(k),w=!0,m());return}N.preventDefault();const _={...E,...f};o(_),(L=(j=l.current).onMove)==null||L.call(j,_)},d=()=>{var N,_;clearTimeout(k),m(),v?(o(null),l.current.onDrop({...E,...f})):w||(_=(N=l.current).onTap)==null||_.call(N)},m=()=>{document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",d),document.removeEventListener("pointercancel",d),s.current=void 0};document.addEventListener("pointermove",a,{passive:!1}),document.addEventListener("pointerup",d),document.addEventListener("pointercancel",d),s.current=()=>{clearTimeout(k),m()}},[e]),dragging:i}}const hu="__bar";function Hg({state:e,onChange:t,children:n}){const{hubRef:r,raise:i,zIndexOf:o}=Ct(),{position:l,setPosition:s,startDrag:u,onHandleKeyDown:p,isDragging:g}=Ro({initialPosition:{x:e.x,y:e.y},initialSize:{width:60,height:60},minWidth:60,maxWidth:4e3,minHeight:40,maxHeight:4e3,resizable:!1,onCommit:v=>{var a;const w=(a=r.current)==null?void 0:a.getBoundingClientRect(),E=v.x+20,k=v.y+20;w&&E>=w.left&&E<=w.right&&k>=w.top&&k<=w.bottom?t(null):t({...e,x:Math.round(v.x),y:Math.round(v.y)})}});h.useEffect(()=>{s({x:e.x,y:e.y})},[e.x,e.y,s]),h.useEffect(()=>i(hu),[i]);const y=h.useRef(null),f=()=>{const v=y.current;if(!v||g)return;const w=v.getBoundingClientRect(),E=Math.max(4,Math.min(w.left,window.innerWidth-w.width-4)),k=Math.max(4,Math.min(w.top,window.innerHeight-w.height-4));(Math.abs(E-w.left)>.5||Math.abs(k-w.top)>.5)&&s({x:E,y:k})};return h.useLayoutEffect(f),h.useEffect(()=>(window.addEventListener("resize",f),()=>window.removeEventListener("resize",f))),ln.createPortal(c.jsxs("div",{ref:y,className:`uif-isolated-bar ${e.vertical?"is-vertical":""} ${g?"is-dragging":""}`,style:{left:l.x,top:l.y,zIndex:o(hu)},onPointerDownCapture:()=>i(hu),role:"toolbar","aria-label":"Button row, taken out of the field",children:[c.jsxs("span",{className:"uif-isolated-tools",children:[c.jsx("button",{type:"button",className:"uif-bar-grip",onPointerDown:u,onKeyDown:p,title:"Drag to move; drop it on the field to put it back. Arrow keys move it.","aria-label":"Move the button row (drop on the field to join it)",children:"⠿"}),c.jsx("button",{type:"button",className:"uif-bar-tool",title:e.vertical?"Lay it flat":"Stand it up (sideways)","aria-label":e.vertical?"Horizontal button row":"Vertical button row",onClick:()=>t({...e,vertical:!e.vertical}),children:e.vertical?"⇆":"⇅"}),c.jsx("button",{type:"button",className:"uif-bar-tool",title:"Put it back in the field","aria-label":"Join the field",onClick:()=>t(null),children:"⤓"})]}),n]}),document.body)}const Ug=28;function xf(e,t,n=Ug){const r=[["top",e.y],["bottom",t.height-(e.y+e.height)],["left",e.x],["right",t.width-(e.x+e.width)]];let i=null;for(const o of r)o[1]<=n&&(!i||o[1]<i[1])&&(i=o);return i?i[0]:null}const Bg=104,Sf="(max-width: 640px), (pointer: coarse) and (max-width: 900px)";function Wg(){const e=()=>{var r;return{width:typeof window<"u"?window.innerWidth:1024,handheld:typeof window<"u"&&!!((r=window.matchMedia)!=null&&r.call(window,Sf).matches)}},[t,n]=h.useState(e);return h.useEffect(()=>{const r=()=>n(e());return window.addEventListener("resize",r),()=>window.removeEventListener("resize",r)},[]),t}function bg(e){return!!e&&typeof e[Symbol.asyncIterator]=="function"}const Vg=e=>wg()?c.jsx(Ef,{...e}):c.jsx(hf,{storageKey:e.storageKey,popoutUrl:e.popoutUrl,defaultStrings:e.defaultStrings,modules:e.modules,children:c.jsx(Ef,{...e})}),Ef=({value:e,onChange:t,onSend:n,onCommand:r,onAction:i,onModeChange:o,actions:l,isLoading:s=!1,className:u="",placeholder:p,terminalPlaceholder:g,disabled:y=!1,mode:f="chat",initialPosition:v,initialSize:w={width:600,height:120},minWidth:E=300,maxWidth:k,minHeight:a=60,maxHeight:d,draggable:m=!0,resizable:x=!0,dockable:N=!0,modeBar:_,persona:j,glowEffect:L=!0,glassEffect:C=!0,left:D,right:Q})=>{var Af,Hf;const F=Ct(),{registry:H,outputs:A,strings:X,setStrings:me,hubRef:J,requestScreens:I,storageKey:b,raise:V,zIndexOf:ee,registerSender:ae,layout:rt,registerHubLayout:We,context:je}=F,_e=`uif:${b}:hub`,[ge]=h.useState(()=>Be(_e,{})),[ni,Fo]=h.useState(""),yt=e??ni,It=h.useCallback(T=>{e===void 0&&Fo(T),t==null||t(T)},[e,t]),[te,gu]=h.useState(ge.mode??(f==="text"?"chat":f)),[ye,cr]=h.useState(ge.docked!==void 0?ge.docked:typeof window<"u"&&((Af=window.matchMedia)!=null&&Af.call(window,Sf).matches)&&N?"bottom":null),[Pe,ri]=h.useState(ge.arrange??"auto"),[Ie,vt]=h.useState(ge.isolated??null),dr=Wg(),[Ao,_n]=h.useState(!1),[yu,S]=h.useState(!1),[P,R]=h.useState([]),[z,$]=h.useState(null),U=h.useRef([]),W=h.useRef(-1),q=h.useRef(null),G=h.useRef(null),ie=h.useRef(0),{position:we,size:Ee,setPosition:$e,setSize:ii,isDragging:an,isResizing:oi,startDrag:Cf,startResize:ty,onHandleKeyDown:ny}=Ro({initialPosition:ge.x!==void 0&&ge.y!==void 0?{x:ge.x,y:ge.y}:v??{x:window.innerWidth/2-w.width/2,y:window.innerHeight/2-w.height/2},initialSize:ge.width&&ge.height?{width:ge.width,height:ge.height}:w,minWidth:E,maxWidth:k,minHeight:a,maxHeight:d,draggable:m,resizable:x,onCommit:(T,O)=>Nf.current(T,O)}),Nf=h.useRef(()=>{});h.useEffect(()=>{an||oi||nt(_e,{x:we.x,y:we.y,width:Ee.width,height:Ee.height,mode:te,docked:ye,arrange:Pe,isolated:Ie})},[_e,we,Ee,te,ye,Pe,Ie,an,oi]),h.useEffect(()=>(l==null||l.forEach(T=>H.register(T)),()=>l==null?void 0:l.forEach(T=>H.unregister(T.id))),[l,H]);const li=h.useRef(null),[ry,jf]=h.useState(!1);h.useEffect(()=>H.subscribe(()=>{li.current&&nt(`uif:${b}:bar:${li.current}`,H.snapshot())}),[H,b]),h.useEffect(()=>{if(li.current===te)return;const T=li.current===null,O=Be(`uif:${b}:bar:${te}`,null);if(li.current=te,H.restore(O?{...O,custom:H.snapshot().custom}:mh(H,(_==null?void 0:_[te])??yh[te==="terminal"?"terminal":"chat"])),T)return;jf(!0);const Y=setTimeout(()=>jf(!1),720);return()=>clearTimeout(Y)},[te,H,b]),h.useEffect(()=>{var T;(T=q.current)==null||T.focus()},[te]),h.useEffect(()=>{const T=G.current;T&&(T.scrollTop=T.scrollHeight)},[P]),h.useEffect(()=>{if(!z)return;const T=setTimeout(()=>$(null),3500);return()=>clearTimeout(T)},[z]);const Nt=h.useCallback((T,O="out")=>{const Y={id:ie.current++,kind:O,text:T};R(re=>[...re.slice(-299),Y]),O!=="cmd"&&$(Y)},[]),_f=h.useCallback((T,O)=>{const Y={id:ie.current++,kind:"out",text:T,sections:O};R(re=>[...re.slice(-299),Y])},[]),Pf=h.useRef("chat"),$f=h.useRef("chat"),vu=h.useCallback(()=>{L&&(_n(!0),setTimeout(()=>_n(!1),500))},[L]),Ft=h.useCallback(T=>{gu(O=>{O!=="terminal"&&(Pf.current=O);const Y=T==="toggle"?O==="terminal"?Pf.current:"terminal":T==="persona"&&!j?O:T;return Y!==O&&(o==null||o(Y)),Y})},[o,j]),Lf=h.useCallback(T=>{N&&(cr(T),T===null&&$e({x:window.innerWidth/2-Ee.width/2,y:window.innerHeight/2-Ee.height/2}))},[N,$e,Ee.width,Ee.height]);Nf.current=(T,O)=>{if(O!=="drag"||!N)return;const Y=xf(T,{width:window.innerWidth,height:window.innerHeight});Y&&cr(Y)};const Ho=an&&N?xf({...we,...Ee},{width:dr.width,height:window.innerHeight}):null,si=h.useCallback(async(T,O)=>{if(!T.trim())return;const Y=O?null:/^@(\S+)\s+([\s\S]+)$/.exec(T);let re=O;if(re)A.setActive(re);else if(Y)T=Y[2],re=A.resolve(Y[1])??A.spawn(Y[1]),A.setActive(re),V(re);else{const ke=un.get().answerIn==="new";re=(ke?void 0:A.resolve(void 0))??A.spawn(),(ke||!A.list().some(Tn=>Tn.id===re&&Tn.messages.length))&&un.get().openMaximized&&A.maximize(re,!0)}A.append(re,{role:"user",text:T}),vu();const $n=je.forSend(T,re),cn=re,Uf={},ku=ke=>{var Tn;return ke&&je.appendHistory({ts:Date.now()/1e3,session:b,output:(Tn=A.list().find(cy=>cy.id===cn))==null?void 0:Tn.title,output_id:cn,user:T,assistant:ke,prompt:$n.promptSource,model:su($n.model),...Uf})},xu={};let Su=null;const ay=ke=>{Object.assign(xu,ke),Su&&A.update(cn,Su,ke)},Ln=n==null?void 0:n(T,{outputId:re,mode:$f.current,context:$n,annotate:ke=>Object.assign(Uf,ke),markReply:ay});if(Ln===void 0)return;if(typeof Ln=="string"){A.append(re,{role:"assistant",text:Ln,...xu}),ku(Ln);return}const ci=A.append(re,{role:"assistant",text:"",pending:!0,...xu});Su=ci,S(!0);try{if(bg(Ln)){let ke="";for await(const Tn of Ln)ke+=Tn,A.update(re,ci,{text:ke});A.update(re,ci,{pending:!1}),ku(ke)}else{const ke=await Ln;A.update(re,ci,{text:ke??"",pending:!1}),ku(ke??"")}}catch(ke){A.update(re,ci,{text:`Error: ${ke.message??ke}`,pending:!1})}finally{S(!1)}},[n,A,V,vu,je,b]);h.useEffect(()=>ae((T,O)=>void si(T,O)),[ae,si]);const Tf=h.useRef({position:we,size:Ee,mode:te,docked:ye,arrangement:Pe,isolated:Ie});Tf.current={position:we,size:Ee,mode:te,docked:ye,arrangement:Pe,isolated:Ie};const Rf=f==="text"?"chat":f;h.useEffect(()=>We({get:()=>{const T=Tf.current;return{...T.position,...T.size,mode:T.mode,docked:T.docked,arrange:T.arrangement,isolated:T.isolated}},set:T=>{const O=T??{...v??{x:window.innerWidth/2-w.width/2,y:window.innerHeight/2-w.height/2},...w,mode:Rf,docked:null,arrange:"auto",isolated:null};ii({width:O.width,height:O.height}),$e({x:Math.max(60-O.width,Math.min(O.x,window.innerWidth-60)),y:Math.max(0,Math.min(O.y,window.innerHeight-30))}),cr(N?O.docked:null),Ft(O.mode),ri(O.arrange??"auto"),vt(O.isolated??null)}}),[We,v,w,Rf,$e,ii,Ft,N]);const zf=h.useRef(null),Uo=h.useCallback((T,O)=>{var cn;const Y=(cn=J.current)==null?void 0:cn.getBoundingClientRect(),re=(O==null?void 0:O.x)??(Y?Y.left:16),$n=(O==null?void 0:O.y)??(Y?Math.max(8,Y.top-56):16);vt({x:Math.round(Math.max(0,re)),y:Math.round(Math.max(0,$n)),vertical:T})},[J]),Pn=Ag({onDrop:T=>{var re;const O=(re=J.current)==null?void 0:re.getBoundingClientRect();O&&T.x>=O.left-24&&T.x<=O.right+24&&T.y>=O.top-24&&T.y<=O.bottom+24||Uo(!1,{x:T.x-T.offsetX,y:T.y-T.offsetY})},onTap:()=>Nt("hold the grip, then drag the button row out of the field (or type: isolate)")}),Mf=h.useRef(()=>{}),Bo=h.useCallback(T=>({args:T,print:Nt,printSections:_f,clearLog:()=>R([]),send:O=>void si(O),runCommand:O=>Mf.current(O),mode:te,setMode:Ft,docked:ye,dock:Lf,strings:X,setStrings:me,outputs:A,registry:H,layout:rt,windows:F.windows,remember:O=>je.remember(O),bar:{isolated:!!Ie,isolate:O=>Uo((O==null?void 0:O.vertical)??!1),join:()=>vt(null),arrangement:Pe,arrange:ri},requestScreens:async()=>Nt(await I())}),[Nt,_f,si,te,Ft,ye,Lf,X,me,A,H,rt,F.windows,je,I,Ie,Pe,Uo]),wu=h.useCallback(async(T,O=[])=>{try{await T.run(Bo(O)),i==null||i(T,O)}catch(Y){Nt(`${T.command}: ${Y.message??Y}`,"err")}},[Bo,i,Nt]),Df=h.useCallback(T=>{Nt(`❯ ${T}`,"cmd");const O=wh(T,H);if(!O)return;if(O.action)return void wu(O.action,O.args);const Y=r==null?void 0:r(O.name,O.args,Bo(O.args));typeof Y=="string"?Nt(Y):r||Nt(`unknown command: ${O.name} (try help)`,"err")},[Bo,r,Nt,H,wu]);Mf.current=Df;const Of=()=>{const T=yt;if(T.trim()){if(te!=="terminal"&&T.trim()==="T"||te==="terminal"&&T.trim()===">"){Ft("toggle"),It("");return}if(j&&T.trim().toLowerCase()===j.label.toLowerCase()&&te!=="persona"){Ft("persona"),It("");return}if(te==="persona"&&T.trim()===">"){Ft("chat"),It("");return}te==="terminal"||T.startsWith("/")?(U.current=[...U.current.filter(O=>O!==T),T].slice(-100),W.current=-1,Df(T.trim()),vu()):si(T),It("")}},iy=T=>{if(T.key==="Enter"&&!T.shiftKey){T.preventDefault(),Of();return}if(te!=="terminal"||yt.includes(` `)||T.key!=="ArrowUp"&&T.key!=="ArrowDown")return;const O=U.current;if(!O.length)return;T.preventDefault();let Y=W.current;T.key==="ArrowUp"?Y=Y===-1?O.length-1:Math.max(0,Y-1):Y=Y===-1||Y+1>=O.length?-1:Y+1,W.current=Y,It(Y===-1?"":O[Y])},oy=h.useCallback(T=>{J.current=T},[J]);let ui={left:we.x,top:we.y};ye==="top"&&(ui={top:0,left:"50%",transform:"translateX(-50%)"}),ye==="bottom"&&(ui={bottom:0,left:"50%",transform:"translateX(-50%)"}),ye==="left"&&(ui={left:0,top:"50%",transform:"translateY(-50%)"}),ye==="right"&&(ui={right:0,top:"50%",transform:"translateY(-50%)"});const ly=s||yu,Xe=te==="terminal";$f.current=te;const sy=Pe==="sideways"||Pe==="auto"&&Ee.height<Bg,Wo=Math.max(200,dr.width-16),[ai,If]=h.useState(!1);h.useEffect(()=>{if(!ai)return;const T=O=>{O.key==="Escape"&&If(!1)};return document.addEventListener("keydown",T),()=>document.removeEventListener("keydown",T)},[ai]);const uy=["ultimate-input-field",Ao?"animate-glow":"",ye?`transition-all is-docked docked-${ye}`:"",Ho?`is-drawn-${Ho}`:"",ai?"is-maximized":"",Xe?"terminal-glass":C?"glass-effect":"",Xe?"is-terminal":"is-chat",te==="persona"?"is-persona":"",sy?"is-sideways":"is-stacked",dr.handheld?"is-handheld":"",Ie?"has-isolated-bar":"",u].filter(Boolean).join(" "),Ff=T=>c.jsx(Tg,{registry:H,layout:rt,onRun:O=>void wu(O),vertical:T,rolling:ry,pressed:{strings:X,dock:!!ye,...Object.fromEntries(F.windows.defs.map(O=>[`win-${O.id}`,F.windows.isOpen(O.id)]))}});return c.jsxs("div",{ref:oy,className:uy,style:ai?{left:0,top:0,right:"auto",bottom:"auto",transform:"none",width:"100vw",height:"100vh",maxWidth:"none",zIndex:ee(Oo)}:{...ui,width:Math.min(Ee.width,Wo),height:Ee.height,minWidth:Math.min(E,Wo),maxWidth:k===void 0?Wo:Math.min(k,Wo),minHeight:a,zIndex:ee(Oo)},onPointerDownCapture:()=>V(Oo),children:[Xe&&c.jsxs("div",{className:"uif-termlog",ref:G,role:"log","aria-live":"polite",children:[P.length===0&&c.jsx("div",{className:"uif-termline is-dim",children:"T mode: type a command, or help"}),P.map(T=>{var O;return c.jsxs("div",{className:`uif-termline is-${T.kind} ${T.sections?"is-report":""}`,children:[T.text,(O=T.sections)==null?void 0:O.map((Y,re)=>c.jsxs("details",{className:`uif-termsection is-${Y.level??"ok"}`,open:Y.open,children:[c.jsxs("summary",{children:[c.jsx("span",{className:"uif-termmark","aria-hidden":"true",children:Y.level==="bad"?"✗":Y.level==="warn"?"!":"✓"}),Y.title,c.jsx("span",{className:"uif-termhint",children:Y.level??"ok"})]}),Y.lines.map(($n,cn)=>c.jsx("div",{className:"uif-termsub",children:$n},cn))]},re))]},T.id)})]}),Ho&&ln.createPortal(c.jsx("div",{className:`uif-dock-hint is-${Ho}`,"aria-hidden":"true"}),document.body),m&&c.jsx("div",{className:`drag-handle ${an?"dragging":""}`,onPointerDown:ai?void 0:T=>{if(!ye)return Cf(T);const O=T.currentTarget.closest(".ultimate-input-field").getBoundingClientRect();cr(null),Cf(T,{x:O.left,y:O.top})},onDoubleClick:()=>If(T=>!T),onKeyDown:ny,tabIndex:0,role:"group","aria-label":`Input field. ${To}; double-click to fill the screen or shrink back`,title:`${To}. Double-click: fill the screen / shrink back (Esc)`,children:c.jsx("div",{className:"drag-indicator"})}),c.jsxs("div",{className:"uif-row",children:[D&&c.jsx("div",{className:"uif-modules uif-modules-left",children:D}),c.jsxs("div",{className:"uif-core",children:[c.jsxs("div",{className:"uif-prompt",children:[Xe&&c.jsx("span",{className:"uif-prompt-sigil",children:"❯"}),c.jsx("textarea",{ref:q,value:yt,onChange:T=>It(T.target.value),onKeyDown:iy,placeholder:Xe?g||"Enter a command — help · > for ask mode":te==="persona"&&j?j.placeholder||`${j.label} mode · > for the generic ask · T for terminal mode`:p||"Message… @output to target · /command to run · T for terminal mode",disabled:y,spellCheck:!Xe,className:`ultimate-textarea ${Xe?"terminal-mode":"text-mode"} ${an?"pointer-events-none":""}`})]}),c.jsxs("div",{className:"ultimate-controls",children:[c.jsxs("div",{className:"ultimate-controls-left",children:[c.jsx(Qd,{variant:"ghost",size:"icon",className:`uif-mode-toggle ${Xe?"is-terminal":""}`,onClick:()=>Ft("toggle"),type:"button",title:Xe?"> : back to ask mode":"T : terminal mode","aria-label":Xe?"Switch to ask mode":"Switch to terminal mode",children:Xe?c.jsx(Ch,{}):c.jsx(Nh,{})}),j&&c.jsx("button",{type:"button",className:`uif-persona-toggle ${te==="persona"?"is-on":""}`,"aria-pressed":te==="persona",onClick:()=>Ft(te==="persona"?"chat":"persona"),title:te==="persona"?`${j.label} mode · press for the generic ask mode (or type >)`:j.title||`${j.label} mode (or type ${j.label})`,children:j.label}),c.jsx(Mg,{}),c.jsx(Ig,{}),!Ie&&c.jsxs(c.Fragment,{children:[c.jsx("button",{type:"button",className:`uif-bar-grip ${Pn.dragging?"is-dragging":""}`,onPointerDown:Pn.onPointerDown,onKeyDown:T=>{(T.key==="Enter"||T.key===" ")&&(T.preventDefault(),Uo(!1))},title:"Hold, then drag the button row out of the field","aria-label":"Button row: hold and drag to take it out of the field (Enter does it)",children:"⠿"}),c.jsx("div",{className:"uif-bar-slot",ref:zf,children:Ff(!1)})]})]}),z&&!Xe&&c.jsx("span",{className:`uif-status is-${z.kind}`,children:z.text}),c.jsx(Qd,{variant:"default",size:"icon",className:"uif-send",onClick:Of,disabled:y||ly&&!Xe||!yt.trim(),type:"button","aria-label":Xe?"Run":"Send",children:c.jsx(Eh,{})})]})]}),Q&&c.jsx("div",{className:"uif-modules uif-modules-right",children:Q})]}),!ye&&x&&c.jsx(lu,{onStart:ty}),Ie&&c.jsx(Hg,{state:Ie,onChange:vt,children:Ff(Ie.vertical)}),Pn.dragging&&ln.createPortal(c.jsx("div",{className:"uif-bar-ghost",style:{left:Pn.dragging.x-Pn.dragging.offsetX,top:Pn.dragging.y-Pn.dragging.offsetY,width:((Hf=zf.current)==null?void 0:Hf.offsetWidth)??200},children:"button row"}),document.body)]})};function Qg({storageKey:e,popoutUrl:t,defaultStrings:n,modules:r,children:i,...o}){return c.jsxs(hf,{storageKey:e,popoutUrl:t,defaultStrings:n,modules:r,children:[c.jsx(Vg,{...o}),i]})}function Yg(){const e=h.useMemo(()=>new URLSearchParams(window.location.search),[]),t=e.get(zo)??"",n=h.useMemo(()=>Xd(e.get(ou)??"default"),[e]),[r,i]=h.useState(null),[o,l]=h.useState(!1),[s,u]=h.useState(0),[p,g]=h.useState(!1),y=h.useRef([]),f=h.useCallback(v=>{n.post(v),y.current.forEach(w=>w.state!=="closed"&&w.state!=="terminated"&&w.send(JSON.stringify(v)))},[n]);return h.useEffect(()=>{var _;const v=(_=navigator.presentation)==null?void 0:_.receiver,w=j=>L=>{const C=L;y.current.push(C),C.addEventListener("message",D=>{try{j(JSON.parse(String(D.data)))}catch{}}),C.send(JSON.stringify({type:"out:hello",id:t}))},E=n.on(j=>k(j));v==null||v.connectionList.then(j=>{j.connections.forEach(w(k)),j.addEventListener("connectionavailable",L=>w(k)(L.connection))});function k(j){if(j.type==="hub:hello")return f({type:"out:hello",id:t});!("id"in j)||j.id!==t||(j.type==="out:state"?(i(j.field),l(j.active),g(!1)):j.type==="out:home"?window.close():j.type==="out:ping"&&(u(L=>L+1),window.focus()))}f({type:"out:hello",id:t});let a="";const d=()=>{const j={x:window.screenX,y:window.screenY,width:window.outerWidth,height:window.outerHeight},L=JSON.stringify(j);L!==a&&(a=L,f({type:"out:geom",id:t,geom:j}))};d();const m=setInterval(d,500),x=setTimeout(()=>g(!0),2e3),N=()=>f({type:"out:bye",id:t});return window.addEventListener("pagehide",N),()=>{E(),clearInterval(m),clearTimeout(x),window.removeEventListener("pagehide",N),n.close()}},[n,t,f]),h.useEffect(()=>{r&&(document.title=r.title)},[r==null?void 0:r.title]),r?c.jsx("div",{className:`uif-output uif-output-window ${o?"is-active":""}`,style:{"--uif-color":r.color},children:c.jsx(qd,{field:r,active:o,flash:s,popped:!0,onRename:v=>f({type:"out:request-rename",id:t,title:v}),onSubmit:v=>f({type:"out:input",id:t,text:v}),onRemember:v=>f({type:"out:remember",id:t,text:v}),onHome:()=>f({type:"out:request-home",id:t}),onClose:()=>f({type:"out:request-close",id:t})})}):c.jsx("div",{className:"uif-output uif-output-window",children:c.jsx("div",{className:"uif-output-empty",children:p?"The input field this output belongs to is not open.":"Connecting…"})})}function Kg(e,t){const n=e.width<640,r=n?e.width-16:Math.min(760,e.width-24),i=n?132:120,o=e.height-(n?150:170),l=t?Math.min(t.bottom+12,e.height-i-8):o;return{narrow:n,width:r,height:i,x:Math.max(8,(e.width-r)/2),y:Math.max(n?8:80,Math.round(l))}}function Xg(e,t){return e?{"--uif-avatar":`url("${new URL(e,t).href.replace(/["\\\n]/g,encodeURIComponent)}")`,"--uif-avatar-display":"inline-block"}:{"--uif-avatar":"none","--uif-avatar-display":"none"}}function Gg({into:e,context:t}){const n=Ct();return e.current=n.outputs,t.current=n.context,null}const Jg={idle:"receipt —",ok:"✓ receipt",bad:"✗ receipt"},Io=[];function Zg(e){const t=[{id:"details",label:"Delivery details",command:"details",icon:"ⓘ",builtin:!0,defaultHidden:!0,description:"details [on|off] - show how each answer was delivered under it (off: kept in .memory and the log)",run(n){const r=n.args[0]==="on"?!0:n.args[0]==="off"?!1:!un.get().details;un.set({details:r}),n.print(`delivery details under answers: ${r?"shown":"hidden (kept in .memory; `last` prints them)"}`)}},{id:"last",label:"Last deliveries",command:"last",aliases:["deliveries"],icon:"⏱",builtin:!0,defaultHidden:!0,description:"last [n] - how the last n answers were delivered (default 1)",run(n){const r=Math.max(1,Math.min(20,Number(n.args[0])||1)),i=Io.slice(-r);if(!i.length)return n.print("no answers yet");for(const o of i)n.print(o.details||o.line,o.ok?"out":"err")}}];return e.ping&&t.push({id:"ping",label:"Ping the engine",command:"ping",icon:"◎",builtin:!0,description:"ping [output] - time round trips to whoever answers (or flash an output)",async run(n){if(n.args[0]){const i=n.outputs.resolve(n.args[0]);i?n.outputs.ping(i):n.print(`ping: no output "${n.args[0]}"`,"err");return}const r=await e.ping();n.print(r.line,r.ok?"out":"err")}}),e.diag&&t.push({id:"diag",label:"Diagnostics",command:"diag",aliases:["sys","hw"],icon:"⚕",builtin:!0,description:"diag - this computer and the engine: cores, threads, memory, storage, speed",async run(n){const r=await e.diag();n.printSections(r.title,r.sections.map(i=>({...i,open:i.level!=="ok"})))}}),t}function qg({engine:e,placeholder:t,terminalPlaceholder:n,anchor:r,modeBar:i,storageKey:o="bankml-space",persona:l,mode:s,pill:u=Jg}){const p=h.useRef(null),g=h.useRef(null),[y]=h.useState(()=>[...Zg(e),...e.actions??[]]),f=h.useRef(new Map),[v,w]=h.useState(null),[E,k]=h.useState(e.status());h.useEffect(()=>{var _;(_=e.onStatus)==null||_.call(e,()=>k(e.status()));const N=setInterval(()=>k(e.status()),3e3);return()=>clearInterval(N)},[e]);const a=N=>{let _=f.current.get(N);return _||f.current.set(N,_=[]),_},[d]=h.useState(()=>Kg({width:window.innerWidth,height:window.innerHeight},r==null?void 0:r.getBoundingClientRect())),{narrow:m,width:x}=d;return c.jsx(Qg,{storageKey:m?`${o}-narrow`:o,actions:y,onSend:(N,{outputId:_,mode:j})=>{var D,Q;let L=null;const C=F=>{const H=p.current;H&&(L?H.update(_,L,{text:F}):L=H.append(_,{role:"system",text:F}))};return e.ask(a(_),N,F=>{var X;w(F),Io.push(F),Io.length>50&&Io.shift();const H=p.current,A=un.get().details?F.details||F.line:"";H&&L?H.update(_,L,{text:A}):H&&A&&H.append(_,{role:"system",text:A}),H&&F.media&&H.append(_,{role:"assistant",text:F.media.caption??"",media:{kind:F.media.kind,url:F.media.url,name:F.media.name}}),F.record&&((X=g.current)==null||X.keep({...F.record,question:F.record.question??N},F.line))},(Q=(D=p.current)==null?void 0:D.list().find(F=>F.id===_))==null?void 0:Q.title,C,j==="persona"?"persona":"chat")},placeholder:t,terminalPlaceholder:n,modeBar:i,persona:l,mode:s,initialSize:{width:x,height:d.height},minWidth:m?260:300,initialPosition:{x:d.x,y:d.y},left:m?void 0:c.jsx("span",{className:"bk-uif-pill",title:E,children:E}),right:m?void 0:c.jsx("span",{className:"bk-uif-pill "+(v?v.ok?"ok":"bad":""),title:(v==null?void 0:v.line)||"no answer yet",children:v?v.ok?u.ok:u.bad:u.idle}),children:c.jsx(Gg,{into:p,context:g})})}function ey(e,t,n={}){for(const[i,o]of Object.entries(Xg(n.avatar,location.href)))document.documentElement.style.setProperty(i,o);const r=Xo.createRoot(e);return r.render(Gd()?c.jsx(Yg,{}):c.jsx(qg,{engine:t,placeholder:n.placeholder||"Ask bankML",terminalPlaceholder:n.terminalPlaceholder,anchor:n.anchor,modeBar:n.modeBar,storageKey:n.storageKey,persona:n.persona,mode:n.mode,pill:n.pill})),r}return di.isOutputWindow=Gd,di.mount=ey,Object.defineProperty(di,Symbol.toStringTag,{value:"Module"}),di}({});