@oonacode/linux-x64 0.3.237 → 0.3.239
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/oona +2 -2
- package/package.json +1 -1
- package/registry.json +10 -115
- package/web-ui/assets/index-Blhel_0X.js +175 -0
- package/web-ui/assets/index-Ddsdfrwc.css +2 -0
- package/web-ui/index.html +2 -2
- package/web-ui/assets/index-BRZqaYqt.js +0 -175
- package/web-ui/assets/index-HSkOyuo2.css +0 -2
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var u=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`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`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function D(e,t){return E(e.type,t,e.props)}function O(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function k(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var A=/\/+/g;function j(e,t){return typeof e==`object`&&e&&e.key!=null?k(``+e.key):t.toString(36)}function M(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function N(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,N(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+j(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(A,`$&/`)+`/`),N(o,r,i,``,function(e){return e})):o!=null&&(O(o)&&(o=D(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(A,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u<e.length;u++)a=e[u],s=l+j(a,u),c+=N(a,r,i,s,o);else if(u=m(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+j(a,u++),c+=N(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return N(M(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function ee(e,t,n){if(e==null)return e;var r=[],i=0;return N(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function P(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t)},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var F=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},I={map:ee,forEach:function(e,t,n){ee(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return ee(e,function(){t++}),t},toArray:function(e){return ee(e,function(e){return e})||[]},only:function(e){if(!O(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=I,e.Component=v,e.Fragment=r,e.Profiler=a,e.PureComponent=b,e.StrictMode=i,e.Suspense=l,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=w,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return w.H.useMemoCache(e)}},e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=g({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!T.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return E(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)T.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return E(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=O,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:P}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=function(e){var t=w.T,n={};w.T=n;try{var r=e(),i=w.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(C,F)}catch(e){F(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),w.T=t}},e.unstable_useCacheRefresh=function(){return w.H.useCacheRefresh()},e.use=function(e){return w.H.use(e)},e.useActionState=function(e,t,n){return w.H.useActionState(e,t,n)},e.useCallback=function(e,t){return w.H.useCallback(e,t)},e.useContext=function(e){return w.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return w.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return w.H.useEffect(e,t)},e.useEffectEvent=function(e){return w.H.useEffectEvent(e)},e.useId=function(){return w.H.useId()},e.useImperativeHandle=function(e,t,n){return w.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return w.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return w.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return w.H.useMemo(e,t)},e.useOptimistic=function(e,t){return w.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return w.H.useReducer(e,t,n)},e.useRef=function(e){return w.H.useRef(e)},e.useState=function(e){return w.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return w.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return w.H.useTransition()},e.version=`19.2.8`})),d=o(((e,t)=>{t.exports=u()})),f=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,S||(S=!0,O());else{var t=n(l);t!==null&&j(x,t.startTime-e)}}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-T<w)}function D(){if(g=!1,S){var t=e.unstable_now();T=t;var i=!0;try{a:{m=!1,h&&(h=!1,v(C),C=-1),p=!0;var a=f;try{b:{for(b(t),d=n(c);d!==null&&!(d.expirationTime>t&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&j(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var k=new MessageChannel,A=k.port2;k.port1.onmessage=D,O=function(){A.postMessage(null)}}else O=function(){_(D,0)};function j(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):w=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_requestPaint=function(){g=!0},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,j(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,O()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),p=o(((e,t)=>{t.exports=f()})),m=o((e=>{var t=d();function n(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function r(){}var i={d:{f:r,r:function(){throw Error(n(522))},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},a=Symbol.for(`react.portal`);function o(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:a,key:r==null?null:``+r,children:e,containerInfo:t,implementation:n}}var s=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function c(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,e.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(n(299));return o(e,t,null,r)},e.flushSync=function(e){var t=s.T,n=i.p;try{if(s.T=null,i.p=2,e)return e()}finally{s.T=t,i.p=n,i.d.f()}},e.preconnect=function(e,t){typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,i.d.C(e,t))},e.prefetchDNS=function(e){typeof e==`string`&&i.d.D(e)},e.preinit=function(e,t){if(typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=c(n,t.crossOrigin),a=typeof t.integrity==`string`?t.integrity:void 0,o=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?i.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:a,fetchPriority:o}):n===`script`&&i.d.X(e,{crossOrigin:r,integrity:a,fetchPriority:o,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},e.preinitModule=function(e,t){if(typeof e==`string`){if(typeof t==`object`&&t){if(t.as==null||t.as===`script`){var n=c(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0})}}else t??i.d.M(e)}},e.preload=function(e,t){if(typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){var n=t.as,r=c(n,t.crossOrigin);i.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},e.preloadModule=function(e,t){if(typeof e==`string`){if(t){var n=c(t.as,t.crossOrigin);i.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0})}else i.d.m(e)}},e.requestFormReset=function(e){i.d.r(e)},e.unstable_batchedUpdates=function(e,t){return e(t)},e.useFormState=function(e,t,n){return s.H.useFormState(e,t,n)},e.useFormStatus=function(){return s.H.useHostTransitionStatus()},e.version=`19.2.8`})),h=o(((e,t)=>{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=m()})),g=o((e=>{var t=p(),n=d(),r=h();function i(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function a(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function o(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,t.flags&4098&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function s(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function c(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function l(e){if(o(e)!==e)throw Error(i(188))}function u(e){var t=e.alternate;if(!t){if(t=o(e),t===null)throw Error(i(188));return t===e?e:null}for(var n=e,r=t;;){var a=n.return;if(a===null)break;var s=a.alternate;if(s===null){if(r=a.return,r!==null){n=r;continue}break}if(a.child===s.child){for(s=a.child;s;){if(s===n)return l(a),e;if(s===r)return l(a),t;s=s.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=s;else{for(var c=!1,u=a.child;u;){if(u===n){c=!0,n=a,r=s;break}if(u===r){c=!0,r=a,n=s;break}u=u.sibling}if(!c){for(u=s.child;u;){if(u===n){c=!0,n=s,r=a;break}if(u===r){c=!0,r=s,n=a;break}u=u.sibling}if(!c)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(n.tag!==3)throw Error(i(188));return n.stateNode.current===n?e:t}function f(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=f(e),t!==null)return t;e=e.sibling}return null}var m=Object.assign,g=Symbol.for(`react.element`),_=Symbol.for(`react.transitional.element`),v=Symbol.for(`react.portal`),y=Symbol.for(`react.fragment`),b=Symbol.for(`react.strict_mode`),x=Symbol.for(`react.profiler`),S=Symbol.for(`react.consumer`),C=Symbol.for(`react.context`),w=Symbol.for(`react.forward_ref`),T=Symbol.for(`react.suspense`),E=Symbol.for(`react.suspense_list`),D=Symbol.for(`react.memo`),O=Symbol.for(`react.lazy`),k=Symbol.for(`react.activity`),A=Symbol.for(`react.memo_cache_sentinel`),j=Symbol.iterator;function M(e){return typeof e!=`object`||!e?null:(e=j&&e[j]||e[`@@iterator`],typeof e==`function`?e:null)}var N=Symbol.for(`react.client.reference`);function ee(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===N?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case y:return`Fragment`;case x:return`Profiler`;case b:return`StrictMode`;case T:return`Suspense`;case E:return`SuspenseList`;case k:return`Activity`}if(typeof e==`object`)switch(e.$$typeof){case v:return`Portal`;case C:return e.displayName||`Context`;case S:return(e._context.displayName||`Context`)+`.Consumer`;case w:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case D:return t=e.displayName||null,t===null?ee(e.type)||`Memo`:t;case O:t=e._payload,e=e._init;try{return ee(e(t))}catch{}}return null}var P=Array.isArray,F=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,I=r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,te={pending:!1,data:null,method:null,action:null},ne=[],re=-1;function L(e){return{current:e}}function R(e){0>re||(e.current=ne[re],ne[re]=null,re--)}function z(e,t){re++,ne[re]=e.current,e.current=t}var B=L(null),ie=L(null),ae=L(null),oe=L(null);function se(e,t){switch(z(ae,t),z(ie,e),z(B,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Xd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Xd(t),e=Zd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}R(B),z(B,e)}function ce(){R(B),R(ie),R(ae)}function le(e){e.memoizedState!==null&&z(oe,e);var t=B.current,n=Zd(t,e.type);t!==n&&(z(ie,e),z(B,n))}function ue(e){ie.current===e&&(R(B),R(ie)),oe.current===e&&(R(oe),sp._currentValue=te)}var de,fe;function pe(e){if(de===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);de=t&&t[1]||``,fe=-1<e.stack.indexOf(`
|
|
2
|
+
at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return`
|
|
3
|
+
`+de+e+fe}var me=!1;function he(e,t){if(!e||me)return``;me=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),typeof Reflect==`object`&&Reflect.construct){try{Reflect.construct(n,[])}catch(e){var r=e}Reflect.construct(e,[],n)}else{try{n.call()}catch(e){r=e}e.call(n.prototype)}}else{try{throw Error()}catch(e){r=e}(n=e())&&typeof n.catch==`function`&&n.catch(function(){})}}catch(e){if(e&&r&&typeof e.stack==`string`)return[e.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName=`DetermineComponentFrameRoot`;var i=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,`name`);i&&i.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,"name",{value:`DetermineComponentFrameRoot`});var a=r.DetermineComponentFrameRoot(),o=a[0],s=a[1];if(o&&s){var c=o.split(`
|
|
4
|
+
`),l=s.split(`
|
|
5
|
+
`);for(i=r=0;r<c.length&&!c[r].includes(`DetermineComponentFrameRoot`);)r++;for(;i<l.length&&!l[i].includes(`DetermineComponentFrameRoot`);)i++;if(r===c.length||i===l.length)for(r=c.length-1,i=l.length-1;1<=r&&0<=i&&c[r]!==l[i];)i--;for(;1<=r&&0<=i;r--,i--)if(c[r]!==l[i]){if(r!==1||i!==1)do if(r--,i--,0>i||c[r]!==l[i]){var u=`
|
|
6
|
+
`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(`<anonymous>`)&&(u=u.replace(`<anonymous>`,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{me=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?pe(n):``}function ge(e,t){switch(e.tag){case 26:case 27:case 5:return pe(e.type);case 16:return pe(`Lazy`);case 13:return e.child!==t&&t!==null?pe(`Suspense Fallback`):pe(`Suspense`);case 19:return pe(`SuspenseList`);case 0:case 15:return he(e.type,!1);case 11:return he(e.type.render,!1);case 1:return he(e.type,!0);case 31:return pe(`Activity`);default:return``}}function _e(e){try{var t=``,n=null;do t+=ge(e,n),n=e,e=e.return;while(e);return t}catch(e){return`
|
|
7
|
+
Error generating stack: `+e.message+`
|
|
8
|
+
`+e.stack}}var ve=Object.prototype.hasOwnProperty,ye=t.unstable_scheduleCallback,be=t.unstable_cancelCallback,xe=t.unstable_shouldYield,Se=t.unstable_requestPaint,Ce=t.unstable_now,we=t.unstable_getCurrentPriorityLevel,Te=t.unstable_ImmediatePriority,Ee=t.unstable_UserBlockingPriority,De=t.unstable_NormalPriority,Oe=t.unstable_LowPriority,ke=t.unstable_IdlePriority,Ae=t.log,je=t.unstable_setDisableYieldValue,Me=null,Ne=null;function Pe(e){if(typeof Ae==`function`&&je(e),Ne&&typeof Ne.setStrictMode==`function`)try{Ne.setStrictMode(Me,e)}catch{}}var Fe=Math.clz32?Math.clz32:V,Ie=Math.log,Le=Math.LN2;function V(e){return e>>>=0,e===0?32:31-(Ie(e)/Le|0)|0}var Re=256,ze=262144,Be=4194304;function Ve(e){var t=e&42;if(t!==0)return t;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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function He(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=Ve(n))):i=Ve(o):i=Ve(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=Ve(n))):i=Ve(o)):i=Ve(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function Ue(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function H(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32: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 t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function We(){var e=Be;return Be<<=1,!(Be&62914560)&&(Be=4194304),e}function Ge(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ke(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function qe(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0<n;){var u=31-Fe(n),d=1<<u;s[u]=0,c[u]=-1;var f=l[u];if(f!==null)for(l[u]=null,u=0;u<f.length;u++){var p=f[u];p!==null&&(p.lane&=-536870913)}n&=~d}r!==0&&Je(e,r,0),a!==0&&i===0&&e.tag!==0&&(e.suspendedLanes|=a&~(o&~t))}function Je(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-Fe(t);e.entangledLanes|=t,e.entanglements[r]=e.entanglements[r]|1073741824|n&261930}function Ye(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-Fe(n),i=1<<r;i&t|e[r]&t&&(e[r]|=t),n&=~i}}function Xe(e,t){var n=t&-t;return n=n&42?1:Ze(n),(n&(e.suspendedLanes|t))===0?n:0}function Ze(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function Qe(e){return e&=-e,2<e?8<e?e&134217727?32:268435456:8:2}function $e(){var e=I.p;return e===0?(e=window.event,e===void 0?32:Cp(e.type)):e}function et(e,t){var n=I.p;try{return I.p=e,t()}finally{I.p=n}}var tt=Math.random().toString(36).slice(2),nt=`__reactFiber$`+tt,rt=`__reactProps$`+tt,it=`__reactContainer$`+tt,at=`__reactEvents$`+tt,ot=`__reactListeners$`+tt,st=`__reactHandles$`+tt,ct=`__reactResources$`+tt,lt=`__reactMarker$`+tt;function ut(e){delete e[nt],delete e[rt],delete e[at],delete e[ot],delete e[st]}function dt(e){var t=e[nt];if(t)return t;for(var n=e.parentNode;n;){if(t=n[it]||n[nt]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=bf(e);e!==null;){if(n=e[nt])return n;e=bf(e)}return t}e=n,n=e.parentNode}return null}function ft(e){if(e=e[nt]||e[it]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function pt(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(i(33))}function mt(e){var t=e[ct];return t||=e[ct]={hoistableStyles:new Map,hoistableScripts:new Map},t}function ht(e){e[lt]=!0}var gt=new Set,_t={};function vt(e,t){yt(e,t),yt(e+`Capture`,t)}function yt(e,t){for(_t[e]=t,e=0;e<t.length;e++)gt.add(t[e])}var bt=RegExp(`^[: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]*$`),xt={},St={};function Ct(e){return ve.call(St,e)?!0:ve.call(xt,e)?!1:bt.test(e)?St[e]=!0:(xt[e]=!0,!1)}function wt(e,t,n){if(Ct(t)){if(n===null)e.removeAttribute(t);else{switch(typeof n){case`undefined`:case`function`:case`symbol`:e.removeAttribute(t);return;case`boolean`:var r=t.toLowerCase().slice(0,5);if(r!==`data-`&&r!==`aria-`){e.removeAttribute(t);return}}e.setAttribute(t,``+n)}}}function Tt(e,t,n){if(n===null)e.removeAttribute(t);else{switch(typeof n){case`undefined`:case`function`:case`symbol`:case`boolean`:e.removeAttribute(t);return}e.setAttribute(t,``+n)}}function Et(e,t,n,r){if(r===null)e.removeAttribute(n);else{switch(typeof r){case`undefined`:case`function`:case`symbol`:case`boolean`:e.removeAttribute(n);return}e.setAttributeNS(t,n,``+r)}}function Dt(e){switch(typeof e){case`bigint`:case`boolean`:case`number`:case`string`:case`undefined`:return e;case`object`:return e;default:return``}}function Ot(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()===`input`&&(t===`checkbox`||t===`radio`)}function kt(e,t,n){var r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&r!==void 0&&typeof r.get==`function`&&typeof r.set==`function`){var i=r.get,a=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){n=``+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(e){n=``+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function At(e){if(!e._valueTracker){var t=Ot(e)?`checked`:`value`;e._valueTracker=kt(e,t,``+e[t])}}function jt(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r=``;return e&&(r=Ot(e)?e.checked?`true`:`false`:e.value),e=r,e!==n&&(t.setValue(e),!0)}function Mt(e){if(e||=typeof document<`u`?document:void 0,e===void 0)return null;try{return e.activeElement||e.body}catch{return e.body}}var Nt=/[\n"\\]/g;function Pt(e){return e.replace(Nt,function(e){return`\\`+e.charCodeAt(0).toString(16)+` `})}function Ft(e,t,n,r,i,a,o,s){e.name=``,o!=null&&typeof o!=`function`&&typeof o!=`symbol`&&typeof o!=`boolean`?e.type=o:e.removeAttribute(`type`),t==null?o!==`submit`&&o!==`reset`||e.removeAttribute(`value`):o===`number`?(t===0&&e.value===``||e.value!=t)&&(e.value=``+Dt(t)):e.value!==``+Dt(t)&&(e.value=``+Dt(t)),t==null?n==null?r!=null&&e.removeAttribute(`value`):Lt(e,o,Dt(n)):Lt(e,o,Dt(t)),i==null&&a!=null&&(e.defaultChecked=!!a),i!=null&&(e.checked=i&&typeof i!=`function`&&typeof i!=`symbol`),s!=null&&typeof s!=`function`&&typeof s!=`symbol`&&typeof s!=`boolean`?e.name=``+Dt(s):e.removeAttribute(`name`)}function It(e,t,n,r,i,a,o,s){if(a!=null&&typeof a!=`function`&&typeof a!=`symbol`&&typeof a!=`boolean`&&(e.type=a),t!=null||n!=null){if(!(a!==`submit`&&a!==`reset`||t!=null)){At(e);return}n=n==null?``:``+Dt(n),t=t==null?n:``+Dt(t),s||t===e.value||(e.value=t),e.defaultValue=t}r??=i,r=typeof r!=`function`&&typeof r!=`symbol`&&!!r,e.checked=s?e.checked:!!r,e.defaultChecked=!!r,o!=null&&typeof o!=`function`&&typeof o!=`symbol`&&typeof o!=`boolean`&&(e.name=o),At(e)}function Lt(e,t,n){t===`number`&&Mt(e.ownerDocument)===e||e.defaultValue===``+n||(e.defaultValue=``+n)}function Rt(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t[`$`+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty(`$`+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=``+Dt(n),t=null,i=0;i<e.length;i++){if(e[i].value===n){e[i].selected=!0,r&&(e[i].defaultSelected=!0);return}t!==null||e[i].disabled||(t=e[i])}t!==null&&(t.selected=!0)}}function zt(e,t,n){if(t!=null&&(t=``+Dt(t),t!==e.value&&(e.value=t),n==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=n==null?``:``+Dt(n)}function Bt(e,t,n,r){if(t==null){if(r!=null){if(n!=null)throw Error(i(92));if(P(r)){if(1<r.length)throw Error(i(93));r=r[0]}n=r}n??=``,t=n}n=Dt(t),e.defaultValue=n,r=e.textContent,r===n&&r!==``&&r!==null&&(e.value=r),At(e)}function Vt(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Ht=new Set(`animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp`.split(` `));function Ut(e,t,n){var r=t.indexOf(`--`)===0;n==null||typeof n==`boolean`||n===``?r?e.setProperty(t,``):t===`float`?e.cssFloat=``:e[t]=``:r?e.setProperty(t,n):typeof n!=`number`||n===0||Ht.has(t)?t===`float`?e.cssFloat=n:e[t]=(``+n).trim():e[t]=n+`px`}function Wt(e,t,n){if(t!=null&&typeof t!=`object`)throw Error(i(62));if(e=e.style,n!=null){for(var r in n)!n.hasOwnProperty(r)||t!=null&&t.hasOwnProperty(r)||(r.indexOf(`--`)===0?e.setProperty(r,``):r===`float`?e.cssFloat=``:e[r]=``);for(var a in t)r=t[a],t.hasOwnProperty(a)&&n[a]!==r&&Ut(e,a,r)}else for(var o in t)t.hasOwnProperty(o)&&Ut(e,o,t[o])}function Gt(e){if(e.indexOf(`-`)===-1)return!1;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 Kt=new Map([[`acceptCharset`,`accept-charset`],[`htmlFor`,`for`],[`httpEquiv`,`http-equiv`],[`crossOrigin`,`crossorigin`],[`accentHeight`,`accent-height`],[`alignmentBaseline`,`alignment-baseline`],[`arabicForm`,`arabic-form`],[`baselineShift`,`baseline-shift`],[`capHeight`,`cap-height`],[`clipPath`,`clip-path`],[`clipRule`,`clip-rule`],[`colorInterpolation`,`color-interpolation`],[`colorInterpolationFilters`,`color-interpolation-filters`],[`colorProfile`,`color-profile`],[`colorRendering`,`color-rendering`],[`dominantBaseline`,`dominant-baseline`],[`enableBackground`,`enable-background`],[`fillOpacity`,`fill-opacity`],[`fillRule`,`fill-rule`],[`floodColor`,`flood-color`],[`floodOpacity`,`flood-opacity`],[`fontFamily`,`font-family`],[`fontSize`,`font-size`],[`fontSizeAdjust`,`font-size-adjust`],[`fontStretch`,`font-stretch`],[`fontStyle`,`font-style`],[`fontVariant`,`font-variant`],[`fontWeight`,`font-weight`],[`glyphName`,`glyph-name`],[`glyphOrientationHorizontal`,`glyph-orientation-horizontal`],[`glyphOrientationVertical`,`glyph-orientation-vertical`],[`horizAdvX`,`horiz-adv-x`],[`horizOriginX`,`horiz-origin-x`],[`imageRendering`,`image-rendering`],[`letterSpacing`,`letter-spacing`],[`lightingColor`,`lighting-color`],[`markerEnd`,`marker-end`],[`markerMid`,`marker-mid`],[`markerStart`,`marker-start`],[`overlinePosition`,`overline-position`],[`overlineThickness`,`overline-thickness`],[`paintOrder`,`paint-order`],[`panose-1`,`panose-1`],[`pointerEvents`,`pointer-events`],[`renderingIntent`,`rendering-intent`],[`shapeRendering`,`shape-rendering`],[`stopColor`,`stop-color`],[`stopOpacity`,`stop-opacity`],[`strikethroughPosition`,`strikethrough-position`],[`strikethroughThickness`,`strikethrough-thickness`],[`strokeDasharray`,`stroke-dasharray`],[`strokeDashoffset`,`stroke-dashoffset`],[`strokeLinecap`,`stroke-linecap`],[`strokeLinejoin`,`stroke-linejoin`],[`strokeMiterlimit`,`stroke-miterlimit`],[`strokeOpacity`,`stroke-opacity`],[`strokeWidth`,`stroke-width`],[`textAnchor`,`text-anchor`],[`textDecoration`,`text-decoration`],[`textRendering`,`text-rendering`],[`transformOrigin`,`transform-origin`],[`underlinePosition`,`underline-position`],[`underlineThickness`,`underline-thickness`],[`unicodeBidi`,`unicode-bidi`],[`unicodeRange`,`unicode-range`],[`unitsPerEm`,`units-per-em`],[`vAlphabetic`,`v-alphabetic`],[`vHanging`,`v-hanging`],[`vIdeographic`,`v-ideographic`],[`vMathematical`,`v-mathematical`],[`vectorEffect`,`vector-effect`],[`vertAdvY`,`vert-adv-y`],[`vertOriginX`,`vert-origin-x`],[`vertOriginY`,`vert-origin-y`],[`wordSpacing`,`word-spacing`],[`writingMode`,`writing-mode`],[`xmlnsXlink`,`xmlns:xlink`],[`xHeight`,`x-height`]]),qt=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Jt(e){return qt.test(``+e)?`javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')`:e}function Yt(){}var Xt=null;function Zt(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Qt=null,$t=null;function en(e){var t=ft(e);if(t&&(e=t.stateNode)){var n=e[rt]||null;a:switch(e=t.stateNode,t.type){case`input`:if(Ft(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,n.type===`radio`&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll(`input[name="`+Pt(``+t)+`"][type="radio"]`),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=r[rt]||null;if(!a)throw Error(i(90));Ft(r,a.value,a.defaultValue,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name)}}for(t=0;t<n.length;t++)r=n[t],r.form===e.form&&jt(r)}break a;case`textarea`:zt(e,n.value,n.defaultValue);break a;case`select`:t=n.value,t!=null&&Rt(e,!!n.multiple,t,!1)}}}var tn=!1;function nn(e,t,n){if(tn)return e(t,n);tn=!0;try{return e(t)}finally{if(tn=!1,(Qt!==null||$t!==null)&&(Eu(),Qt&&(t=Qt,e=$t,$t=Qt=null,en(t),e)))for(t=0;t<e.length;t++)en(e[t])}}function rn(e,t){var n=e.stateNode;if(n===null)return null;var r=n[rt]||null;if(r===null)return null;n=r[t];a:switch(t){case`onClick`:case`onClickCapture`:case`onDoubleClick`:case`onDoubleClickCapture`:case`onMouseDown`:case`onMouseDownCapture`:case`onMouseMove`:case`onMouseMoveCapture`:case`onMouseUp`:case`onMouseUpCapture`:case`onMouseEnter`:(r=!r.disabled)||(e=e.type,r=e!==`button`&&e!==`input`&&e!==`select`&&e!==`textarea`),e=!r;break a;default:e=!1}if(e)return null;if(n&&typeof n!=`function`)throw Error(i(231,t,typeof n));return n}var an=!(typeof window>`u`||window.document===void 0||window.document.createElement===void 0),on=!1;if(an)try{var sn={};Object.defineProperty(sn,"passive",{get:function(){on=!0}}),window.addEventListener(`test`,sn,sn),window.removeEventListener(`test`,sn,sn)}catch{on=!1}var cn=null,ln=null,un=null;function dn(){if(un)return un;var e,t=ln,n=t.length,r,i=`value`in cn?cn.value:cn.textContent,a=i.length;for(e=0;e<n&&t[e]===i[e];e++);var o=n-e;for(r=1;r<=o&&t[n-r]===i[a-r];r++);return un=i.slice(e,1<r?1-r:void 0)}function fn(e){var t=e.keyCode;return`charCode`in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function pn(){return!0}function mn(){return!1}function hn(e){function t(t,n,r,i,a){for(var o in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=i,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(o)&&(t=e[o],this[o]=t?t(i):i[o]);return this.isDefaultPrevented=(i.defaultPrevented==null?!1===i.returnValue:i.defaultPrevented)?pn:mn,this.isPropagationStopped=mn,this}return m(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():typeof e.returnValue!=`unknown`&&(e.returnValue=!1),this.isDefaultPrevented=pn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():typeof e.cancelBubble!=`unknown`&&(e.cancelBubble=!0),this.isPropagationStopped=pn)},persist:function(){},isPersistent:pn}),t}var gn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},_n=hn(gn),vn=m({},gn,{view:0,detail:0}),yn=hn(vn),bn,xn,Sn,Cn=m({},vn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Pn,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return`movementX`in e?e.movementX:(e!==Sn&&(Sn&&e.type===`mousemove`?(bn=e.screenX-Sn.screenX,xn=e.screenY-Sn.screenY):xn=bn=0,Sn=e),bn)},movementY:function(e){return`movementY`in e?e.movementY:xn}}),wn=hn(Cn),Tn=hn(m({},Cn,{dataTransfer:0})),En=hn(m({},vn,{relatedTarget:0})),Dn=hn(m({},gn,{animationName:0,elapsedTime:0,pseudoElement:0})),On=hn(m({},gn,{clipboardData:function(e){return`clipboardData`in e?e.clipboardData:window.clipboardData}})),kn=hn(m({},gn,{data:0})),An={Esc:`Escape`,Spacebar:` `,Left:`ArrowLeft`,Up:`ArrowUp`,Right:`ArrowRight`,Down:`ArrowDown`,Del:`Delete`,Win:`OS`,Menu:`ContextMenu`,Apps:`ContextMenu`,Scroll:`ScrollLock`,MozPrintableKey:`Unidentified`},jn={8:`Backspace`,9:`Tab`,12:`Clear`,13:`Enter`,16:`Shift`,17:`Control`,18:`Alt`,19:`Pause`,20:`CapsLock`,27:`Escape`,32:` `,33:`PageUp`,34:`PageDown`,35:`End`,36:`Home`,37:`ArrowLeft`,38:`ArrowUp`,39:`ArrowRight`,40:`ArrowDown`,45:`Insert`,46:`Delete`,112:`F1`,113:`F2`,114:`F3`,115:`F4`,116:`F5`,117:`F6`,118:`F7`,119:`F8`,120:`F9`,121:`F10`,122:`F11`,123:`F12`,144:`NumLock`,145:`ScrollLock`,224:`Meta`},Mn={Alt:`altKey`,Control:`ctrlKey`,Meta:`metaKey`,Shift:`shiftKey`};function Nn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=Mn[e])?!!t[e]:!1}function Pn(){return Nn}var Fn=hn(m({},vn,{key:function(e){if(e.key){var t=An[e.key]||e.key;if(t!==`Unidentified`)return t}return e.type===`keypress`?(e=fn(e),e===13?`Enter`:String.fromCharCode(e)):e.type===`keydown`||e.type===`keyup`?jn[e.keyCode]||`Unidentified`:``},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Pn,charCode:function(e){return e.type===`keypress`?fn(e):0},keyCode:function(e){return e.type===`keydown`||e.type===`keyup`?e.keyCode:0},which:function(e){return e.type===`keypress`?fn(e):e.type===`keydown`||e.type===`keyup`?e.keyCode:0}})),In=hn(m({},Cn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Ln=hn(m({},vn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Pn})),Rn=hn(m({},gn,{propertyName:0,elapsedTime:0,pseudoElement:0})),zn=hn(m({},Cn,{deltaX:function(e){return`deltaX`in e?e.deltaX:`wheelDeltaX`in e?-e.wheelDeltaX:0},deltaY:function(e){return`deltaY`in e?e.deltaY:`wheelDeltaY`in e?-e.wheelDeltaY:`wheelDelta`in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0})),Bn=hn(m({},gn,{newState:0,oldState:0})),Vn=[9,13,27,32],Hn=an&&`CompositionEvent`in window,Un=null;an&&`documentMode`in document&&(Un=document.documentMode);var Wn=an&&`TextEvent`in window&&!Un,Gn=an&&(!Hn||Un&&8<Un&&11>=Un),Kn=` `,qn=!1;function Jn(e,t){switch(e){case`keyup`:return Vn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function Yn(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var Xn=!1;function Zn(e,t){switch(e){case`compositionend`:return Yn(t);case`keypress`:return t.which===32?(qn=!0,Kn):null;case`textInput`:return e=t.data,e===Kn&&qn?null:e;default:return null}}function Qn(e,t){if(Xn)return e===`compositionend`||!Hn&&Jn(e,t)?(e=dn(),un=ln=cn=null,Xn=!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.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case`compositionend`:return Gn&&t.locale!==`ko`?null:t.data;default:return null}}var $n={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function er(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t===`input`?!!$n[e.type]:t===`textarea`}function tr(e,t,n,r){Qt?$t?$t.push(r):$t=[r]:Qt=r,t=Pd(t,`onChange`),0<t.length&&(n=new _n(`onChange`,`change`,null,n,r),e.push({event:n,listeners:t}))}var nr=null,rr=null;function ir(e){Ed(e,0)}function ar(e){if(jt(pt(e)))return e}function or(e,t){if(e===`change`)return t}var sr=!1;if(an){var cr;if(an){var lr=`oninput`in document;if(!lr){var ur=document.createElement(`div`);ur.setAttribute(`oninput`,`return;`),lr=typeof ur.oninput==`function`}cr=lr}else cr=!1;sr=cr&&(!document.documentMode||9<document.documentMode)}function dr(){nr&&(nr.detachEvent(`onpropertychange`,fr),rr=nr=null)}function fr(e){if(e.propertyName===`value`&&ar(rr)){var t=[];tr(t,rr,e,Zt(e)),nn(ir,t)}}function pr(e,t,n){e===`focusin`?(dr(),nr=t,rr=n,nr.attachEvent(`onpropertychange`,fr)):e===`focusout`&&dr()}function mr(e){if(e===`selectionchange`||e===`keyup`||e===`keydown`)return ar(rr)}function hr(e,t){if(e===`click`)return ar(t)}function gr(e,t){if(e===`input`||e===`change`)return ar(t)}function _r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var vr=typeof Object.is==`function`?Object.is:_r;function yr(e,t){if(vr(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var i=n[r];if(!ve.call(t,i)||!vr(e[i],t[i]))return!1}return!0}function br(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function xr(e,t){var n=br(e);e=0;for(var r;n;){if(n.nodeType===3){if(r=e+n.textContent.length,e<=t&&r>=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=br(n)}}function Sr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Sr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Cr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Mt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Mt(e.document)}return t}function wr(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`)}var Tr=an&&`documentMode`in document&&11>=document.documentMode,Er=null,Dr=null,Or=null,kr=!1;function Ar(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;kr||Er==null||Er!==Mt(r)||(r=Er,`selectionStart`in r&&wr(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}),Or&&yr(Or,r)||(Or=r,r=Pd(Dr,`onSelect`),0<r.length&&(t=new _n(`onSelect`,`select`,null,t,n),e.push({event:t,listeners:r}),t.target=Er)))}function jr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[`Webkit`+e]=`webkit`+t,n[`Moz`+e]=`moz`+t,n}var Mr={animationend:jr(`Animation`,`AnimationEnd`),animationiteration:jr(`Animation`,`AnimationIteration`),animationstart:jr(`Animation`,`AnimationStart`),transitionrun:jr(`Transition`,`TransitionRun`),transitionstart:jr(`Transition`,`TransitionStart`),transitioncancel:jr(`Transition`,`TransitionCancel`),transitionend:jr(`Transition`,`TransitionEnd`)},Nr={},Pr={};an&&(Pr=document.createElement(`div`).style,`AnimationEvent`in window||(delete Mr.animationend.animation,delete Mr.animationiteration.animation,delete Mr.animationstart.animation),`TransitionEvent`in window||delete Mr.transitionend.transition);function Fr(e){if(Nr[e])return Nr[e];if(!Mr[e])return e;var t=Mr[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in Pr)return Nr[e]=t[n];return e}var Ir=Fr(`animationend`),Lr=Fr(`animationiteration`),Rr=Fr(`animationstart`),zr=Fr(`transitionrun`),Br=Fr(`transitionstart`),Vr=Fr(`transitioncancel`),Hr=Fr(`transitionend`),Ur=new Map,Wr=`abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel`.split(` `);Wr.push(`scrollEnd`);function Gr(e,t){Ur.set(e,t),vt(t,[e])}var Kr=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},qr=[],Jr=0,Yr=0;function Xr(){for(var e=Jr,t=Yr=Jr=0;t<e;){var n=qr[t];qr[t++]=null;var r=qr[t];qr[t++]=null;var i=qr[t];qr[t++]=null;var a=qr[t];if(qr[t++]=null,r!==null&&i!==null){var o=r.pending;o===null?i.next=i:(i.next=o.next,o.next=i),r.pending=i}a!==0&&ei(n,i,a)}}function Zr(e,t,n,r){qr[Jr++]=e,qr[Jr++]=t,qr[Jr++]=n,qr[Jr++]=r,Yr|=r,e.lanes|=r,e=e.alternate,e!==null&&(e.lanes|=r)}function Qr(e,t,n,r){return Zr(e,t,n,r),ti(e)}function $r(e,t){return Zr(e,null,null,t),ti(e)}function ei(e,t,n){e.lanes|=n;var r=e.alternate;r!==null&&(r.lanes|=n);for(var i=!1,a=e.return;a!==null;)a.childLanes|=n,r=a.alternate,r!==null&&(r.childLanes|=n),a.tag===22&&(e=a.stateNode,e===null||e._visibility&1||(i=!0)),e=a,a=a.return;return e.tag===3?(a=e.stateNode,i&&t!==null&&(i=31-Fe(n),e=a.hiddenUpdates,r=e[i],r===null?e[i]=[t]:r.push(t),t.lane=n|536870912),a):null}function ti(e){if(50<_u)throw _u=0,vu=null,Error(i(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var ni={};function ri(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.refCleanup=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 ii(e,t,n,r){return new ri(e,t,n,r)}function ai(e){return e=e.prototype,!(!e||!e.isReactComponent)}function oi(e,t){var n=e.alternate;return n===null?(n=ii(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&65011712,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.refCleanup=e.refCleanup,n}function si(e,t){e.flags&=65011714;var n=e.alternate;return n===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function ci(e,t,n,r,a,o){var s=0;if(r=e,typeof e==`function`)ai(e)&&(s=1);else if(typeof e==`string`)s=Qf(e,n,B.current)?26:e===`html`||e===`head`||e===`body`?27:5;else a:switch(e){case k:return e=ii(31,n,t,a),e.elementType=k,e.lanes=o,e;case y:return li(n.children,a,o,t);case b:s=8,a|=24;break;case x:return e=ii(12,n,t,a|2),e.elementType=x,e.lanes=o,e;case T:return e=ii(13,n,t,a),e.elementType=T,e.lanes=o,e;case E:return e=ii(19,n,t,a),e.elementType=E,e.lanes=o,e;default:if(typeof e==`object`&&e)switch(e.$$typeof){case C:s=10;break a;case S:s=9;break a;case w:s=11;break a;case D:s=14;break a;case O:s=16,r=null;break a}s=29,n=Error(i(130,e===null?`null`:typeof e,``)),r=null}return t=ii(s,n,t,a),t.elementType=e,t.type=r,t.lanes=o,t}function li(e,t,n,r){return e=ii(7,e,r,t),e.lanes=n,e}function ui(e,t,n){return e=ii(6,e,null,t),e.lanes=n,e}function di(e){var t=ii(18,null,null,0);return t.stateNode=e,t}function fi(e,t,n){return t=ii(4,e.children===null?[]:e.children,e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var pi=new WeakMap;function mi(e,t){if(typeof e==`object`&&e){var n=pi.get(e);return n===void 0?(t={value:e,source:t,stack:_e(t)},pi.set(e,t),t):n}return{value:e,source:t,stack:_e(t)}}var hi=[],gi=0,_i=null,vi=0,yi=[],bi=0,xi=null,Si=1,Ci=``;function wi(e,t){hi[gi++]=vi,hi[gi++]=_i,_i=e,vi=t}function Ti(e,t,n){yi[bi++]=Si,yi[bi++]=Ci,yi[bi++]=xi,xi=e;var r=Si;e=Ci;var i=32-Fe(r)-1;r&=~(1<<i),n+=1;var a=32-Fe(t)+i;if(30<a){var o=i-i%5;a=(r&(1<<o)-1).toString(32),r>>=o,i-=o,Si=1<<32-Fe(t)+i|n<<i|r,Ci=a+e}else Si=1<<a|n<<i|r,Ci=e}function Ei(e){e.return!==null&&(wi(e,1),Ti(e,1,0))}function Di(e){for(;e===_i;)_i=hi[--gi],hi[gi]=null,vi=hi[--gi],hi[gi]=null;for(;e===xi;)xi=yi[--bi],yi[bi]=null,Ci=yi[--bi],yi[bi]=null,Si=yi[--bi],yi[bi]=null}function Oi(e,t){yi[bi++]=Si,yi[bi++]=Ci,yi[bi++]=xi,Si=t.id,Ci=t.overflow,xi=e}var ki=null,Ai=null,ji=!1,Mi=null,Ni=!1,Pi=Error(i(519));function Fi(e){throw Vi(mi(Error(i(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?`text`:`HTML`,``)),e)),Pi}function Ii(e){var t=e.stateNode,n=e.type,r=e.memoizedProps;switch(t[nt]=e,t[rt]=r,n){case`dialog`:Dd(`cancel`,t),Dd(`close`,t);break;case`iframe`:case`object`:case`embed`:Dd(`load`,t);break;case`video`:case`audio`:for(n=0;n<wd.length;n++)Dd(wd[n],t);break;case`source`:Dd(`error`,t);break;case`img`:case`image`:case`link`:Dd(`error`,t),Dd(`load`,t);break;case`details`:Dd(`toggle`,t);break;case`input`:Dd(`invalid`,t),It(t,r.value,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name,!0);break;case`select`:Dd(`invalid`,t);break;case`textarea`:Dd(`invalid`,t),Bt(t,r.value,r.defaultValue,r.children)}n=r.children,typeof n!=`string`&&typeof n!=`number`&&typeof n!=`bigint`||t.textContent===``+n||!0===r.suppressHydrationWarning||Bd(t.textContent,n)?(r.popover!=null&&(Dd(`beforetoggle`,t),Dd(`toggle`,t)),r.onScroll!=null&&Dd(`scroll`,t),r.onScrollEnd!=null&&Dd(`scrollend`,t),r.onClick!=null&&(t.onclick=Yt),t=!0):t=!1,t||Fi(e,!0)}function Li(e){for(ki=e.return;ki;)switch(ki.tag){case 5:case 31:case 13:Ni=!1;return;case 27:case 3:Ni=!0;return;default:ki=ki.return}}function Ri(e){if(e!==ki)return!1;if(!ji)return Li(e),ji=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=n===`form`||n===`button`||Qd(e.type,e.memoizedProps)),n=!n),n&&Ai&&Fi(e),Li(e),t===13){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));Ai=yf(e)}else if(t===31){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));Ai=yf(e)}else t===27?(t=Ai,sf(e.type)?(e=vf,vf=null,Ai=e):Ai=t):Ai=ki?_f(e.stateNode.nextSibling):null;return!0}function zi(){Ai=ki=null,ji=!1}function Bi(){var e=Mi;return e!==null&&(ru===null?ru=e:ru.push.apply(ru,e),Mi=null),e}function Vi(e){Mi===null?Mi=[e]:Mi.push(e)}var Hi=L(null),Ui=null,Wi=null;function Gi(e,t,n){z(Hi,t._currentValue),t._currentValue=n}function Ki(e){e._currentValue=Hi.current,R(Hi)}function qi(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)===t?r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t):(e.childLanes|=t,r!==null&&(r.childLanes|=t)),e===n)break;e=e.return}}function Ji(e,t,n,r){var a=e.child;for(a!==null&&(a.return=e);a!==null;){var o=a.dependencies;if(o!==null){var s=a.child;o=o.firstContext;a:for(;o!==null;){var c=o;o=a;for(var l=0;l<t.length;l++)if(c.context===t[l]){o.lanes|=n,c=o.alternate,c!==null&&(c.lanes|=n),qi(o.return,n,e),r||(s=null);break a}o=c.next}}else if(a.tag===18){if(s=a.return,s===null)throw Error(i(341));s.lanes|=n,o=s.alternate,o!==null&&(o.lanes|=n),qi(s,n,e),s=null}else s=a.child;if(s!==null)s.return=a;else for(s=a;s!==null;){if(s===e){s=null;break}if(a=s.sibling,a!==null){a.return=s.return,s=a;break}s=s.return}a=s}}function Yi(e,t,n,r){e=null;for(var a=t,o=!1;a!==null;){if(!o){if(a.flags&524288)o=!0;else if(a.flags&262144)break}if(a.tag===10){var s=a.alternate;if(s===null)throw Error(i(387));if(s=s.memoizedProps,s!==null){var c=a.type;vr(a.pendingProps.value,s.value)||(e===null?e=[c]:e.push(c))}}else if(a===oe.current){if(s=a.alternate,s===null)throw Error(i(387));s.memoizedState.memoizedState!==a.memoizedState.memoizedState&&(e===null?e=[sp]:e.push(sp))}a=a.return}e!==null&&Ji(t,e,n,r),t.flags|=262144}function Xi(e){for(e=e.firstContext;e!==null;){if(!vr(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function Zi(e){Ui=e,Wi=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function Qi(e){return ea(Ui,e)}function $i(e,t){return Ui===null&&Zi(e),ea(e,t)}function ea(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},Wi===null){if(e===null)throw Error(i(308));Wi=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else Wi=Wi.next=t;return n}var ta=typeof AbortController<`u`?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},na=t.unstable_scheduleCallback,ra=t.unstable_NormalPriority,ia={$$typeof:C,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function aa(){return{controller:new ta,data:new Map,refCount:0}}function oa(e){e.refCount--,e.refCount===0&&na(ra,function(){e.controller.abort()})}var sa=null,ca=0,la=0,ua=null;function da(e,t){if(sa===null){var n=sa=[];ca=0,la=vd(),ua={status:`pending`,value:void 0,then:function(e){n.push(e)}}}return ca++,t.then(fa,fa),t}function fa(){if(--ca===0&&sa!==null){ua!==null&&(ua.status=`fulfilled`);var e=sa;sa=null,la=0,ua=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function pa(e,t){var n=[],r={status:`pending`,value:null,reason:null,then:function(e){n.push(e)}};return e.then(function(){r.status=`fulfilled`,r.value=t;for(var e=0;e<n.length;e++)(0,n[e])(t)},function(e){for(r.status=`rejected`,r.reason=e,e=0;e<n.length;e++)(0,n[e])(void 0)}),r}var ma=F.S;F.S=function(e,t){ou=Ce(),typeof t==`object`&&t&&typeof t.then==`function`&&da(e,t),ma!==null&&ma(e,t)};var ha=L(null);function ga(){var e=ha.current;return e===null?Vl.pooledCache:e}function _a(e,t){t===null?z(ha,ha.current):z(ha,t.pool)}function va(){var e=ga();return e===null?null:{parent:ia._currentValue,pool:e}}var ya=Error(i(460)),ba=Error(i(474)),xa=Error(i(542)),Sa={then:function(){}};function Ca(e){return e=e.status,e===`fulfilled`||e===`rejected`}function wa(e,t,n){switch(n=e[n],n===void 0?e.push(t):n!==t&&(t.then(Yt,Yt),t=n),t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,Oa(e),e;default:if(typeof t.status==`string`)t.then(Yt,Yt);else{if(e=Vl,e!==null&&100<e.shellSuspendCounter)throw Error(i(482));e=t,e.status=`pending`,e.then(function(e){if(t.status===`pending`){var n=t;n.status=`fulfilled`,n.value=e}},function(e){if(t.status===`pending`){var n=t;n.status=`rejected`,n.reason=e}})}switch(t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,Oa(e),e}throw Ea=t,ya}}function Ta(e){try{var t=e._init;return t(e._payload)}catch(e){throw typeof e==`object`&&e&&typeof e.then==`function`?(Ea=e,ya):e}}var Ea=null;function Da(){if(Ea===null)throw Error(i(459));var e=Ea;return Ea=null,e}function Oa(e){if(e===ya||e===xa)throw Error(i(483))}var ka=null,Aa=0;function ja(e){var t=Aa;return Aa+=1,ka===null&&(ka=[]),wa(ka,e,t)}function Ma(e,t){t=t.props.ref,e.ref=t===void 0?null:t}function Na(e,t){throw t.$$typeof===g?Error(i(525)):(e=Object.prototype.toString.call(t),Error(i(31,e===`[object Object]`?`object with keys {`+Object.keys(t).join(`, `)+`}`:e)))}function Pa(e){function t(t,n){if(e){var r=t.deletions;r===null?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;r!==null;)t(n,r),r=r.sibling;return null}function r(e){for(var t=new Map;e!==null;)e.key===null?t.set(e.index,e):t.set(e.key,e),e=e.sibling;return t}function a(e,t){return e=oi(e,t),e.index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?(r=t.alternate,r===null?(t.flags|=67108866,n):(r=r.index,r<n?(t.flags|=67108866,n):r)):(t.flags|=1048576,n)}function s(t){return e&&t.alternate===null&&(t.flags|=67108866),t}function c(e,t,n,r){return t===null||t.tag!==6?(t=ui(n,e.mode,r),t.return=e,t):(t=a(t,n),t.return=e,t)}function l(e,t,n,r){var i=n.type;return i===y?d(e,t,n.props.children,r,n.key):t!==null&&(t.elementType===i||typeof i==`object`&&i&&i.$$typeof===O&&Ta(i)===t.type)?(t=a(t,n.props),Ma(t,n),t.return=e,t):(t=ci(n.type,n.key,n.props,null,e.mode,r),Ma(t,n),t.return=e,t)}function u(e,t,n,r){return t===null||t.tag!==4||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?(t=fi(n,e.mode,r),t.return=e,t):(t=a(t,n.children||[]),t.return=e,t)}function d(e,t,n,r,i){return t===null||t.tag!==7?(t=li(n,e.mode,r,i),t.return=e,t):(t=a(t,n),t.return=e,t)}function f(e,t,n){if(typeof t==`string`&&t!==``||typeof t==`number`||typeof t==`bigint`)return t=ui(``+t,e.mode,n),t.return=e,t;if(typeof t==`object`&&t){switch(t.$$typeof){case _:return n=ci(t.type,t.key,t.props,null,e.mode,n),Ma(n,t),n.return=e,n;case v:return t=fi(t,e.mode,n),t.return=e,t;case O:return t=Ta(t),f(e,t,n)}if(P(t)||M(t))return t=li(t,e.mode,n,null),t.return=e,t;if(typeof t.then==`function`)return f(e,ja(t),n);if(t.$$typeof===C)return f(e,$i(e,t),n);Na(e,t)}return null}function p(e,t,n,r){var i=t===null?null:t.key;if(typeof n==`string`&&n!==``||typeof n==`number`||typeof n==`bigint`)return i===null?c(e,t,``+n,r):null;if(typeof n==`object`&&n){switch(n.$$typeof){case _:return n.key===i?l(e,t,n,r):null;case v:return n.key===i?u(e,t,n,r):null;case O:return n=Ta(n),p(e,t,n,r)}if(P(n)||M(n))return i===null?d(e,t,n,r,null):null;if(typeof n.then==`function`)return p(e,t,ja(n),r);if(n.$$typeof===C)return p(e,t,$i(e,n),r);Na(e,n)}return null}function m(e,t,n,r,i){if(typeof r==`string`&&r!==``||typeof r==`number`||typeof r==`bigint`)return e=e.get(n)||null,c(t,e,``+r,i);if(typeof r==`object`&&r){switch(r.$$typeof){case _:return e=e.get(r.key===null?n:r.key)||null,l(t,e,r,i);case v:return e=e.get(r.key===null?n:r.key)||null,u(t,e,r,i);case O:return r=Ta(r),m(e,t,n,r,i)}if(P(r)||M(r))return e=e.get(n)||null,d(t,e,r,i,null);if(typeof r.then==`function`)return m(e,t,n,ja(r),i);if(r.$$typeof===C)return m(e,t,n,$i(t,r),i);Na(t,r)}return null}function h(i,a,s,c){for(var l=null,u=null,d=a,h=a=0,g=null;d!==null&&h<s.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),ji&&wi(i,h),l;if(d===null){for(;h<s.length;h++)d=f(i,s[h],c),d!==null&&(a=o(d,a,h),u===null?l=d:u.sibling=d,u=d);return ji&&wi(i,h),l}for(d=r(d);h<s.length;h++)g=m(d,i,h,s[h],c),g!==null&&(e&&g.alternate!==null&&d.delete(g.key===null?h:g.key),a=o(g,a,h),u===null?l=g:u.sibling=g,u=g);return e&&d.forEach(function(e){return t(i,e)}),ji&&wi(i,h),l}function g(a,s,c,l){if(c==null)throw Error(i(151));for(var u=null,d=null,h=s,g=s=0,_=null,v=c.next();h!==null&&!v.done;g++,v=c.next()){h.index>g?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),ji&&wi(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return ji&&wi(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),ji&&wi(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===O&&Ta(l)===r.type){n(e,r.sibling),c=a(r,o.props),Ma(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===y?(c=li(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=ci(o.type,o.key,o.props,null,e.mode,c),Ma(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=fi(o,e.mode,c),c.return=e,e=c}return s(e);case O:return o=Ta(o),b(e,r,o,c)}if(P(o))return h(e,r,o,c);if(M(o)){if(l=M(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,ja(o),c);if(o.$$typeof===C)return b(e,r,$i(e,o),c);Na(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=ui(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{Aa=0;var i=b(e,t,n,r);return ka=null,i}catch(t){if(t===ya||t===xa)throw t;var a=ii(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Fa=Pa(!0),Ia=Pa(!1),La=!1;function Ra(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function za(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Ba(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Va(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,Bl&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=ti(e),ei(e,null,n),t}return Zr(e,r,t,n),ti(e)}function Ha(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ye(e,n)}}function Ua(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Wa=!1;function Ga(){if(Wa){var e=ua;if(e!==null)throw e}}function Ka(e,t,n,r){Wa=!1;var i=e.updateQueue;La=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Ul&f)===f:(r&f)===f){f!==0&&f===la&&(Wa=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var h=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(h=g.payload,typeof h==`function`){d=h.call(_,d,f);break a}d=h;break a;case 3:h.flags=h.flags&-65537|128;case 0:if(h=g.payload,f=typeof h==`function`?h.call(_,d,f):h,f==null)break a;d=m({},d,f);break a;case 2:La=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Zl|=o,e.lanes=o,e.memoizedState=d}}function qa(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Ja(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)qa(n[e],t)}var Ya=L(null),Xa=L(0);function Za(e,t){e=Yl,z(Xa,e),z(Ya,t),Yl=e|t.baseLanes}function Qa(){z(Xa,Yl),z(Ya,Ya.current)}function $a(){Yl=Xa.current,R(Ya),R(Xa)}var eo=L(null),to=null;function no(e){var t=e.alternate;z(so,so.current&1),z(eo,e),to===null&&(t===null||Ya.current!==null||t.memoizedState!==null)&&(to=e)}function ro(e){z(so,so.current),z(eo,e),to===null&&(to=e)}function io(e){e.tag===22?(z(so,so.current),z(eo,e),to===null&&(to=e)):ao(e)}function ao(){z(so,so.current),z(eo,eo.current)}function oo(e){R(eo),to===e&&(to=null),R(so)}var so=L(0);function co(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||mf(n)||hf(n)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder===`forwards`||t.memoizedProps.revealOrder===`backwards`||t.memoizedProps.revealOrder===`unstable_legacy-backwards`||t.memoizedProps.revealOrder===`together`)){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var lo=0,U=null,uo=null,fo=null,W=!1,po=!1,mo=!1,ho=0,go=0,_o=null,vo=0;function yo(){throw Error(i(321))}function bo(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!vr(e[n],t[n]))return!1;return!0}function xo(e,t,n,r,i,a){return lo=a,U=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,F.H=e===null||e.memoizedState===null?Rs:zs,mo=!1,a=n(r,i),mo=!1,po&&(a=Co(t,n,r,i)),So(e),a}function So(e){F.H=Ls;var t=uo!==null&&uo.next!==null;if(lo=0,fo=uo=U=null,W=!1,go=0,_o=null,t)throw Error(i(300));e===null||nc||(e=e.dependencies,e!==null&&Xi(e)&&(nc=!0))}function Co(e,t,n,r){U=e;var a=0;do{if(po&&(_o=null),go=0,po=!1,25<=a)throw Error(i(301));if(a+=1,fo=uo=null,e.updateQueue!=null){var o=e.updateQueue;o.lastEffect=null,o.events=null,o.stores=null,o.memoCache!=null&&(o.memoCache.index=0)}F.H=Bs,o=t(n,r)}while(po);return o}function wo(){var e=F.H,t=e.useState()[0];return t=typeof t.then==`function`?jo(t):t,e=e.useState()[0],(uo===null?null:uo.memoizedState)!==e&&(U.flags|=1024),t}function To(){var e=ho!==0;return ho=0,e}function Eo(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function Do(e){if(W){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}W=!1}lo=0,fo=uo=U=null,po=!1,go=ho=0,_o=null}function Oo(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return fo===null?U.memoizedState=fo=e:fo=fo.next=e,fo}function ko(){if(uo===null){var e=U.alternate;e=e===null?null:e.memoizedState}else e=uo.next;var t=fo===null?U.memoizedState:fo.next;if(t!==null)fo=t,uo=e;else{if(e===null)throw U.alternate===null?Error(i(467)):Error(i(310));uo=e,e={memoizedState:uo.memoizedState,baseState:uo.baseState,baseQueue:uo.baseQueue,queue:uo.queue,next:null},fo===null?U.memoizedState=fo=e:fo=fo.next=e}return fo}function Ao(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function jo(e){var t=go;return go+=1,_o===null&&(_o=[]),e=wa(_o,e,t),t=U,(fo===null?t.memoizedState:fo.next)===null&&(t=t.alternate,F.H=t===null||t.memoizedState===null?Rs:zs),e}function Mo(e){if(typeof e==`object`&&e){if(typeof e.then==`function`)return jo(e);if(e.$$typeof===C)return Qi(e)}throw Error(i(438,String(e)))}function No(e){var t=null,n=U.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var r=U.alternate;r!==null&&(r=r.updateQueue,r!==null&&(r=r.memoCache,r!=null&&(t={data:r.data.map(function(e){return e.slice()}),index:0})))}if(t??={data:[],index:0},n===null&&(n=Ao(),U.updateQueue=n),n.memoCache=t,n=t.data[t.index],n===void 0)for(n=t.data[t.index]=Array(e),r=0;r<e;r++)n[r]=A;return t.index++,n}function Po(e,t){return typeof t==`function`?t(e):t}function Fo(e){return Io(ko(),uo,e)}function Io(e,t,n){var r=e.queue;if(r===null)throw Error(i(311));r.lastRenderedReducer=n;var a=e.baseQueue,o=r.pending;if(o!==null){if(a!==null){var s=a.next;a.next=o.next,o.next=s}t.baseQueue=a=o,r.pending=null}if(o=e.baseState,a===null)e.memoizedState=o;else{t=a.next;var c=s=null,l=null,u=t,d=!1;do{var f=u.lane&-536870913;if(f===u.lane?(lo&f)===f:(Ul&f)===f){var p=u.revertLane;if(p===0)l!==null&&(l=l.next={lane:0,revertLane:0,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),f===la&&(d=!0);else if((lo&p)===p){u=u.next,p===la&&(d=!0);continue}else f={lane:0,revertLane:u.revertLane,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},l===null?(c=l=f,s=o):l=l.next=f,U.lanes|=p,Zl|=p;f=u.action,mo&&n(o,f),o=u.hasEagerState?u.eagerState:n(o,f)}else p={lane:f,revertLane:u.revertLane,gesture:u.gesture,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},l===null?(c=l=p,s=o):l=l.next=p,U.lanes|=f,Zl|=f;u=u.next}while(u!==null&&u!==t);if(l===null?s=o:l.next=c,!vr(o,e.memoizedState)&&(nc=!0,d&&(n=ua,n!==null)))throw n;e.memoizedState=o,e.baseState=s,e.baseQueue=l,r.lastRenderedState=o}return a===null&&(r.lanes=0),[e.memoizedState,r.dispatch]}function Lo(e){var t=ko(),n=t.queue;if(n===null)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(a!==null){n.pending=null;var s=a=a.next;do o=e(o,s.action),s=s.next;while(s!==a);vr(o,t.memoizedState)||(nc=!0),t.memoizedState=o,t.baseQueue===null&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function Ro(e,t,n){var r=U,a=ko(),o=ji;if(o){if(n===void 0)throw Error(i(407));n=n()}else n=t();var s=!vr((uo||a).memoizedState,n);if(s&&(a.memoizedState=n,nc=!0),a=a.queue,ls(Vo.bind(null,r,a,e),[e]),a.getSnapshot!==t||s||fo!==null&&fo.memoizedState.tag&1){if(r.flags|=2048,is(9,{destroy:void 0},Bo.bind(null,r,a,n,t),null),Vl===null)throw Error(i(349));o||lo&127||zo(r,t,n)}return n}function zo(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=U.updateQueue,t===null?(t=Ao(),U.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function Bo(e,t,n,r){t.value=n,t.getSnapshot=r,Ho(t)&&Uo(e)}function Vo(e,t,n){return n(function(){Ho(t)&&Uo(e)})}function Ho(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!vr(e,n)}catch{return!0}}function Uo(e){var t=$r(e,2);t!==null&&xu(t,e,2)}function Wo(e){var t=Oo();if(typeof e==`function`){var n=e;if(e=n(),mo){Pe(!0);try{n()}finally{Pe(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Po,lastRenderedState:e},t}function Go(e,t,n,r){return e.baseState=n,Io(e,uo,typeof r==`function`?r:Po)}function Ko(e,t,n,r,a){if(Ps(e))throw Error(i(485));if(e=t.action,e!==null){var o={payload:a,action:e,next:null,isTransition:!0,status:`pending`,value:null,reason:null,listeners:[],then:function(e){o.listeners.push(e)}};F.T===null?o.isTransition=!1:n(!0),r(o),n=t.pending,n===null?(o.next=t.pending=o,qo(t,o)):(o.next=n.next,t.pending=n.next=o)}}function qo(e,t){var n=t.action,r=t.payload,i=e.state;if(t.isTransition){var a=F.T,o={};F.T=o;try{var s=n(i,r),c=F.S;c!==null&&c(o,s),Jo(e,t,s)}catch(n){Xo(e,t,n)}finally{a!==null&&o.types!==null&&(a.types=o.types),F.T=a}}else try{a=n(i,r),Jo(e,t,a)}catch(n){Xo(e,t,n)}}function Jo(e,t,n){typeof n==`object`&&n&&typeof n.then==`function`?n.then(function(n){Yo(e,t,n)},function(n){return Xo(e,t,n)}):Yo(e,t,n)}function Yo(e,t,n){t.status=`fulfilled`,t.value=n,Zo(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,qo(e,n)))}function Xo(e,t,n){var r=e.pending;if(e.pending=null,r!==null){r=r.next;do t.status=`rejected`,t.reason=n,Zo(t),t=t.next;while(t!==r)}e.action=null}function Zo(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function Qo(e,t){return t}function $o(e,t){if(ji){var n=Vl.formState;if(n!==null){a:{var r=U;if(ji){if(Ai){b:{for(var i=Ai,a=Ni;i.nodeType!==8;){if(!a){i=null;break b}if(i=_f(i.nextSibling),i===null){i=null;break b}}a=i.data,i=a===`F!`||a===`F`?i:null}if(i){Ai=_f(i.nextSibling),r=i.data===`F!`;break a}}Fi(r)}r=!1}r&&(t=n[0])}}return n=Oo(),n.memoizedState=n.baseState=t,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Qo,lastRenderedState:t},n.queue=r,n=js.bind(null,U,r),r.dispatch=n,r=Wo(!1),a=Ns.bind(null,U,!1,r.queue),r=Oo(),i={state:t,dispatch:null,action:e,pending:null},r.queue=i,n=Ko.bind(null,U,i,a,n),i.dispatch=n,r.memoizedState=e,[t,n,!1]}function es(e){return ts(ko(),uo,e)}function ts(e,t,n){if(t=Io(e,t,Qo)[0],e=Fo(Po)[0],typeof t==`object`&&t&&typeof t.then==`function`)try{var r=jo(t)}catch(e){throw e===ya?xa:e}else r=t;t=ko();var i=t.queue,a=i.dispatch;return n!==t.memoizedState&&(U.flags|=2048,is(9,{destroy:void 0},ns.bind(null,i,n),null)),[r,a,e]}function ns(e,t){e.action=t}function rs(e){var t=ko(),n=uo;if(n!==null)return ts(t,n,e);ko(),t=t.memoizedState,n=ko();var r=n.queue.dispatch;return n.memoizedState=e,[t,r,!1]}function is(e,t,n,r){return e={tag:e,create:n,deps:r,inst:t,next:null},t=U.updateQueue,t===null&&(t=Ao(),U.updateQueue=t),n=t.lastEffect,n===null?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function as(){return ko().memoizedState}function os(e,t,n,r){var i=Oo();U.flags|=e,i.memoizedState=is(1|t,{destroy:void 0},n,r===void 0?null:r)}function ss(e,t,n,r){var i=ko();r=r===void 0?null:r;var a=i.memoizedState.inst;uo!==null&&r!==null&&bo(r,uo.memoizedState.deps)?i.memoizedState=is(t,a,n,r):(U.flags|=e,i.memoizedState=is(1|t,a,n,r))}function cs(e,t){os(8390656,8,e,t)}function ls(e,t){ss(2048,8,e,t)}function us(e){U.flags|=4;var t=U.updateQueue;if(t===null)t=Ao(),U.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function ds(e){var t=ko().memoizedState;return us({ref:t,nextImpl:e}),function(){if(Bl&2)throw Error(i(440));return t.impl.apply(void 0,arguments)}}function fs(e,t){return ss(4,2,e,t)}function ps(e,t){return ss(4,4,e,t)}function ms(e,t){if(typeof t==`function`){e=e();var n=t(e);return function(){typeof n==`function`?n():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function hs(e,t,n){n=n==null?null:n.concat([e]),ss(4,4,ms.bind(null,t,e),n)}function gs(){}function _s(e,t){var n=ko();t=t===void 0?null:t;var r=n.memoizedState;return t!==null&&bo(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function vs(e,t){var n=ko();t=t===void 0?null:t;var r=n.memoizedState;if(t!==null&&bo(t,r[1]))return r[0];if(r=e(),mo){Pe(!0);try{e()}finally{Pe(!1)}}return n.memoizedState=[r,t],r}function ys(e,t,n){return n===void 0||lo&1073741824&&!(Ul&261930)?e.memoizedState=t:(e.memoizedState=n,e=bu(),U.lanes|=e,Zl|=e,n)}function bs(e,t,n,r){return vr(n,t)?n:Ya.current===null?!(lo&42)||lo&1073741824&&!(Ul&261930)?(nc=!0,e.memoizedState=n):(e=bu(),U.lanes|=e,Zl|=e,t):(e=ys(e,n,r),vr(e,t)||(nc=!0),e)}function xs(e,t,n,r,i){var a=I.p;I.p=a!==0&&8>a?a:8;var o=F.T,s={};F.T=s,Ns(e,!1,t,n);try{var c=i(),l=F.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?Ms(e,t,pa(c,r),yu(e)):Ms(e,t,r,yu(e))}catch(n){Ms(e,t,{then:function(){},status:`rejected`,reason:n},yu())}finally{I.p=a,o!==null&&s.types!==null&&(o.types=s.types),F.T=o}}function Ss(){}function Cs(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=ws(e).queue;xs(e,a,t,te,n===null?Ss:function(){return Ts(e),n(r)})}function ws(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:te,baseState:te,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Po,lastRenderedState:te},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Po,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Ts(e){var t=ws(e);t.next===null&&(t=e.alternate.memoizedState),Ms(e,t.next.queue,{},yu())}function Es(){return Qi(sp)}function Ds(){return ko().memoizedState}function Os(){return ko().memoizedState}function ks(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=yu();e=Ba(n);var r=Va(t,e,n);r!==null&&(xu(r,t,n),Ha(r,t,n)),t={cache:aa()},e.payload=t;return}t=t.return}}function As(e,t,n){var r=yu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Ps(e)?Fs(t,n):(n=Qr(e,t,n,r),n!==null&&(xu(n,e,r),Is(n,t,r)))}function js(e,t,n){Ms(e,t,n,yu())}function Ms(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ps(e))Fs(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,vr(s,o))return Zr(e,t,i,0),Vl===null&&Xr(),!1}catch{}if(n=Qr(e,t,i,r),n!==null)return xu(n,e,r),Is(n,t,r),!0}return!1}function Ns(e,t,n,r){if(r={lane:2,revertLane:vd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Ps(e)){if(t)throw Error(i(479))}else t=Qr(e,n,r,2),t!==null&&xu(t,e,2)}function Ps(e){var t=e.alternate;return e===U||t!==null&&t===U}function Fs(e,t){po=W=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Is(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ye(e,n)}}var Ls={readContext:Qi,use:Mo,useCallback:yo,useContext:yo,useEffect:yo,useImperativeHandle:yo,useLayoutEffect:yo,useInsertionEffect:yo,useMemo:yo,useReducer:yo,useRef:yo,useState:yo,useDebugValue:yo,useDeferredValue:yo,useTransition:yo,useSyncExternalStore:yo,useId:yo,useHostTransitionStatus:yo,useFormState:yo,useActionState:yo,useOptimistic:yo,useMemoCache:yo,useCacheRefresh:yo};Ls.useEffectEvent=yo;var Rs={readContext:Qi,use:Mo,useCallback:function(e,t){return Oo().memoizedState=[e,t===void 0?null:t],e},useContext:Qi,useEffect:cs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),os(4194308,4,ms.bind(null,t,e),n)},useLayoutEffect:function(e,t){return os(4194308,4,e,t)},useInsertionEffect:function(e,t){os(4,2,e,t)},useMemo:function(e,t){var n=Oo();t=t===void 0?null:t;var r=e();if(mo){Pe(!0);try{e()}finally{Pe(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Oo();if(n!==void 0){var i=n(t);if(mo){Pe(!0);try{n(t)}finally{Pe(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=As.bind(null,U,e),[r.memoizedState,e]},useRef:function(e){var t=Oo();return e={current:e},t.memoizedState=e},useState:function(e){e=Wo(e);var t=e.queue,n=js.bind(null,U,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:gs,useDeferredValue:function(e,t){return ys(Oo(),e,t)},useTransition:function(){var e=Wo(!1);return e=xs.bind(null,U,e.queue,!0,!1),Oo().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=U,a=Oo();if(ji){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),Vl===null)throw Error(i(349));Ul&127||zo(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,cs(Vo.bind(null,r,o,e),[e]),r.flags|=2048,is(9,{destroy:void 0},Bo.bind(null,r,o,n,t),null),n},useId:function(){var e=Oo(),t=Vl.identifierPrefix;if(ji){var n=Ci,r=Si;n=(r&~(1<<32-Fe(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=ho++,0<n&&(t+=`H`+n.toString(32)),t+=`_`}else n=vo++,t=`_`+t+`r_`+n.toString(32)+`_`;return e.memoizedState=t},useHostTransitionStatus:Es,useFormState:$o,useActionState:$o,useOptimistic:function(e){var t=Oo();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=Ns.bind(null,U,!0,n),n.dispatch=t,[e,t]},useMemoCache:No,useCacheRefresh:function(){return Oo().memoizedState=ks.bind(null,U)},useEffectEvent:function(e){var t=Oo(),n={impl:e};return t.memoizedState=n,function(){if(Bl&2)throw Error(i(440));return n.impl.apply(void 0,arguments)}}},zs={readContext:Qi,use:Mo,useCallback:_s,useContext:Qi,useEffect:ls,useImperativeHandle:hs,useInsertionEffect:fs,useLayoutEffect:ps,useMemo:vs,useReducer:Fo,useRef:as,useState:function(){return Fo(Po)},useDebugValue:gs,useDeferredValue:function(e,t){return bs(ko(),uo.memoizedState,e,t)},useTransition:function(){var e=Fo(Po)[0],t=ko().memoizedState;return[typeof e==`boolean`?e:jo(e),t]},useSyncExternalStore:Ro,useId:Ds,useHostTransitionStatus:Es,useFormState:es,useActionState:es,useOptimistic:function(e,t){return Go(ko(),uo,e,t)},useMemoCache:No,useCacheRefresh:Os};zs.useEffectEvent=ds;var Bs={readContext:Qi,use:Mo,useCallback:_s,useContext:Qi,useEffect:ls,useImperativeHandle:hs,useInsertionEffect:fs,useLayoutEffect:ps,useMemo:vs,useReducer:Lo,useRef:as,useState:function(){return Lo(Po)},useDebugValue:gs,useDeferredValue:function(e,t){var n=ko();return uo===null?ys(n,e,t):bs(n,uo.memoizedState,e,t)},useTransition:function(){var e=Lo(Po)[0],t=ko().memoizedState;return[typeof e==`boolean`?e:jo(e),t]},useSyncExternalStore:Ro,useId:Ds,useHostTransitionStatus:Es,useFormState:rs,useActionState:rs,useOptimistic:function(e,t){var n=ko();return uo===null?(n.baseState=e,[e,n.queue.dispatch]):Go(n,uo,e,t)},useMemoCache:No,useCacheRefresh:Os};Bs.useEffectEvent=ds;function Vs(e,t,n,r){t=e.memoizedState,n=n(r,t),n=n==null?t:m({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var Hs={enqueueSetState:function(e,t,n){e=e._reactInternals;var r=yu(),i=Ba(r);i.payload=t,n!=null&&(i.callback=n),t=Va(e,i,r),t!==null&&(xu(t,e,r),Ha(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=yu(),i=Ba(r);i.tag=1,i.payload=t,n!=null&&(i.callback=n),t=Va(e,i,r),t!==null&&(xu(t,e,r),Ha(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=yu(),r=Ba(n);r.tag=2,t!=null&&(r.callback=t),t=Va(e,r,n),t!==null&&(xu(t,e,n),Ha(t,e,n))}};function Us(e,t,n,r,i,a,o){return e=e.stateNode,typeof e.shouldComponentUpdate==`function`?e.shouldComponentUpdate(r,a,o):t.prototype&&t.prototype.isPureReactComponent?!yr(n,r)||!yr(i,a):!0}function Ws(e,t,n,r){e=t.state,typeof t.componentWillReceiveProps==`function`&&t.componentWillReceiveProps(n,r),typeof t.UNSAFE_componentWillReceiveProps==`function`&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&Hs.enqueueReplaceState(t,t.state,null)}function Gs(e,t){var n=t;if(`ref`in t)for(var r in n={},t)r!==`ref`&&(n[r]=t[r]);if(e=e.defaultProps)for(var i in n===t&&(n=m({},n)),e)n[i]===void 0&&(n[i]=e[i]);return n}function Ks(e){Kr(e)}function qs(e){console.error(e)}function Js(e){Kr(e)}function Ys(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(e){setTimeout(function(){throw e})}}function Xs(e,t,n){try{var r=e.onCaughtError;r(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function Zs(e,t,n){return n=Ba(n),n.tag=3,n.payload={element:null},n.callback=function(){Ys(e,t)},n}function Qs(e){return e=Ba(e),e.tag=3,e}function $s(e,t,n,r){var i=n.type.getDerivedStateFromError;if(typeof i==`function`){var a=r.value;e.payload=function(){return i(a)},e.callback=function(){Xs(t,n,r)}}var o=n.stateNode;o!==null&&typeof o.componentDidCatch==`function`&&(e.callback=function(){Xs(t,n,r),typeof i!=`function`&&(lu===null?lu=new Set([this]):lu.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:e===null?``:e})})}function ec(e,t,n,r,a){if(n.flags|=32768,typeof r==`object`&&r&&typeof r.then==`function`){if(t=n.alternate,t!==null&&Yi(t,n,a,!0),n=eo.current,n!==null){switch(n.tag){case 31:case 13:return to===null?Nu():n.alternate===null&&Xl===0&&(Xl=3),n.flags&=-257,n.flags|=65536,n.lanes=a,r===Sa?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([r]):t.add(r),Qu(e,r,a)),!1;case 22:return n.flags|=65536,r===Sa?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([r])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([r]):n.add(r)),Qu(e,r,a)),!1}throw Error(i(435,n.tag))}return Qu(e,r,a),Nu(),!1}if(ji)return t=eo.current,t===null?(r!==Pi&&(t=Error(i(423),{cause:r}),Vi(mi(t,n))),e=e.current.alternate,e.flags|=65536,a&=-a,e.lanes|=a,r=mi(r,n),a=Zs(e.stateNode,r,a),Ua(e,a),Xl!==4&&(Xl=2)):(!(t.flags&65536)&&(t.flags|=256),t.flags|=65536,t.lanes=a,r!==Pi&&(e=Error(i(422),{cause:r}),Vi(mi(e,n)))),!1;var o=Error(i(520),{cause:r});if(o=mi(o,n),nu===null?nu=[o]:nu.push(o),Xl!==4&&(Xl=2),t===null)return!0;r=mi(r,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=a&-a,n.lanes|=e,e=Zs(n.stateNode,r,e),Ua(n,e),!1;case 1:if(t=n.type,o=n.stateNode,!(n.flags&128)&&(typeof t.getDerivedStateFromError==`function`||o!==null&&typeof o.componentDidCatch==`function`&&(lu===null||!lu.has(o))))return n.flags|=65536,a&=-a,n.lanes|=a,a=Qs(a),$s(a,e,n,r),Ua(n,a),!1}n=n.return}while(n!==null);return!1}var tc=Error(i(461)),nc=!1;function rc(e,t,n,r){t.child=e===null?Ia(t,null,n,r):Fa(t,e.child,n,r)}function ic(e,t,n,r,i){n=n.render;var a=t.ref;if(`ref`in r){var o={};for(var s in r)s!==`ref`&&(o[s]=r[s])}else o=r;return Zi(t),r=xo(e,t,n,o,a,i),s=To(),e!==null&&!nc?(Eo(e,t,i),Oc(e,t,i)):(ji&&s&&Ei(t),t.flags|=1,rc(e,t,r,i),t.child)}function ac(e,t,n,r,i){if(e===null){var a=n.type;return typeof a==`function`&&!ai(a)&&a.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=a,oc(e,t,a,r,i)):(e=ci(n.type,null,r,t,t.mode,i),e.ref=t.ref,e.return=t,t.child=e)}if(a=e.child,!kc(e,i)){var o=a.memoizedProps;if(n=n.compare,n=n===null?yr:n,n(o,r)&&e.ref===t.ref)return Oc(e,t,i)}return t.flags|=1,e=oi(a,r),e.ref=t.ref,e.return=t,t.child=e}function oc(e,t,n,r,i){if(e!==null){var a=e.memoizedProps;if(yr(a,r)&&e.ref===t.ref){if(nc=!1,t.pendingProps=r=a,kc(e,i))e.flags&131072&&(nc=!0);else return t.lanes=e.lanes,Oc(e,t,i)}}return mc(e,t,n,r,i)}function sc(e,t,n,r){var i=r.children,a=e===null?null:e.memoizedState;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),r.mode===`hidden`){if(t.flags&128){if(a=a===null?n:a.baseLanes|n,e!==null){for(r=t.child=e.child,i=0;r!==null;)i=i|r.lanes|r.childLanes,r=r.sibling;r=i&~a}else r=0,t.child=null;return lc(e,t,a,n,r)}if(n&536870912)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&_a(t,a===null?null:a.cachePool),a===null?Qa():Za(t,a),io(t);else return r=t.lanes=536870912,lc(e,t,a===null?n:a.baseLanes|n,n,r)}else a===null?(e!==null&&_a(t,null),Qa(),ao(t)):(_a(t,a.cachePool),Za(t,a),ao(t),t.memoizedState=null);return rc(e,t,i,n),t.child}function cc(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function lc(e,t,n,r,i){var a=ga();return a=a===null?null:{parent:ia._currentValue,pool:a},t.memoizedState={baseLanes:n,cachePool:a},e!==null&&_a(t,null),Qa(),io(t),e!==null&&Yi(e,t,r,!0),t.childLanes=i,null}function uc(e,t){return t=Cc({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function dc(e,t,n){return Fa(t,e.child,null,n),e=uc(t,t.pendingProps),e.flags|=2,oo(t),t.memoizedState=null,e}function fc(e,t,n){var r=t.pendingProps,a=!!(t.flags&128);if(t.flags&=-129,e===null){if(ji){if(r.mode===`hidden`)return e=uc(t,r),t.lanes=536870912,cc(null,e);if(ro(t),(e=Ai)?(e=pf(e,Ni),e=e!==null&&e.data===`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:xi===null?null:{id:Si,overflow:Ci},retryLane:536870912,hydrationErrors:null},n=di(e),n.return=t,t.child=n,ki=t,Ai=null)):e=null,e===null)throw Fi(t);return t.lanes=536870912,null}return uc(t,r)}var o=e.memoizedState;if(o!==null){var s=o.dehydrated;if(ro(t),a){if(t.flags&256)t.flags&=-257,t=dc(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(i(558))}else if(nc||Yi(e,t,n,!1),a=(n&e.childLanes)!==0,nc||a){if(r=Vl,r!==null&&(s=Xe(r,n),s!==0&&s!==o.retryLane))throw o.retryLane=s,$r(e,s),xu(r,e,s),tc;Nu(),t=dc(e,t,n)}else e=o.treeContext,Ai=_f(s.nextSibling),ki=t,ji=!0,Mi=null,Ni=!1,e!==null&&Oi(t,e),t=uc(t,r),t.flags|=4096;return t}return e=oi(e.child,{mode:r.mode,children:r.children}),e.ref=t.ref,t.child=e,e.return=t,e}function pc(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!=`function`&&typeof n!=`object`)throw Error(i(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function mc(e,t,n,r,i){return Zi(t),n=xo(e,t,n,r,void 0,i),r=To(),e!==null&&!nc?(Eo(e,t,i),Oc(e,t,i)):(ji&&r&&Ei(t),t.flags|=1,rc(e,t,n,i),t.child)}function hc(e,t,n,r,i,a){return Zi(t),t.updateQueue=null,n=Co(t,r,n,i),So(e),r=To(),e!==null&&!nc?(Eo(e,t,a),Oc(e,t,a)):(ji&&r&&Ei(t),t.flags|=1,rc(e,t,n,a),t.child)}function gc(e,t,n,r,i){if(Zi(t),t.stateNode===null){var a=ni,o=n.contextType;typeof o==`object`&&o&&(a=Qi(o)),a=new n(r,a),t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,a.updater=Hs,t.stateNode=a,a._reactInternals=t,a=t.stateNode,a.props=r,a.state=t.memoizedState,a.refs={},Ra(t),o=n.contextType,a.context=typeof o==`object`&&o?Qi(o):ni,a.state=t.memoizedState,o=n.getDerivedStateFromProps,typeof o==`function`&&(Vs(t,n,o,r),a.state=t.memoizedState),typeof n.getDerivedStateFromProps==`function`||typeof a.getSnapshotBeforeUpdate==`function`||typeof a.UNSAFE_componentWillMount!=`function`&&typeof a.componentWillMount!=`function`||(o=a.state,typeof a.componentWillMount==`function`&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount==`function`&&a.UNSAFE_componentWillMount(),o!==a.state&&Hs.enqueueReplaceState(a,a.state,null),Ka(t,r,a,i),Ga(),a.state=t.memoizedState),typeof a.componentDidMount==`function`&&(t.flags|=4194308),r=!0}else if(e===null){a=t.stateNode;var s=t.memoizedProps,c=Gs(n,s);a.props=c;var l=a.context,u=n.contextType;o=ni,typeof u==`object`&&u&&(o=Qi(u));var d=n.getDerivedStateFromProps;u=typeof d==`function`||typeof a.getSnapshotBeforeUpdate==`function`,s=t.pendingProps!==s,u||typeof a.UNSAFE_componentWillReceiveProps!=`function`&&typeof a.componentWillReceiveProps!=`function`||(s||l!==o)&&Ws(t,a,r,o),La=!1;var f=t.memoizedState;a.state=f,Ka(t,r,a,i),Ga(),l=t.memoizedState,s||f!==l||La?(typeof d==`function`&&(Vs(t,n,d,r),l=t.memoizedState),(c=La||Us(t,n,c,r,f,l,o))?(u||typeof a.UNSAFE_componentWillMount!=`function`&&typeof a.componentWillMount!=`function`||(typeof a.componentWillMount==`function`&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount==`function`&&a.UNSAFE_componentWillMount()),typeof a.componentDidMount==`function`&&(t.flags|=4194308)):(typeof a.componentDidMount==`function`&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),a.props=r,a.state=l,a.context=o,r=c):(typeof a.componentDidMount==`function`&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,za(e,t),o=t.memoizedProps,u=Gs(n,o),a.props=u,d=t.pendingProps,f=a.context,l=n.contextType,c=ni,typeof l==`object`&&l&&(c=Qi(l)),s=n.getDerivedStateFromProps,(l=typeof s==`function`||typeof a.getSnapshotBeforeUpdate==`function`)||typeof a.UNSAFE_componentWillReceiveProps!=`function`&&typeof a.componentWillReceiveProps!=`function`||(o!==d||f!==c)&&Ws(t,a,r,c),La=!1,f=t.memoizedState,a.state=f,Ka(t,r,a,i),Ga();var p=t.memoizedState;o!==d||f!==p||La||e!==null&&e.dependencies!==null&&Xi(e.dependencies)?(typeof s==`function`&&(Vs(t,n,s,r),p=t.memoizedState),(u=La||Us(t,n,u,r,f,p,c)||e!==null&&e.dependencies!==null&&Xi(e.dependencies))?(l||typeof a.UNSAFE_componentWillUpdate!=`function`&&typeof a.componentWillUpdate!=`function`||(typeof a.componentWillUpdate==`function`&&a.componentWillUpdate(r,p,c),typeof a.UNSAFE_componentWillUpdate==`function`&&a.UNSAFE_componentWillUpdate(r,p,c)),typeof a.componentDidUpdate==`function`&&(t.flags|=4),typeof a.getSnapshotBeforeUpdate==`function`&&(t.flags|=1024)):(typeof a.componentDidUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=p),a.props=r,a.state=p,a.context=c,r=u):(typeof a.componentDidUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),r=!1)}return a=r,pc(e,t),r=!!(t.flags&128),a||r?(a=t.stateNode,n=r&&typeof n.getDerivedStateFromError!=`function`?null:a.render(),t.flags|=1,e!==null&&r?(t.child=Fa(t,e.child,null,i),t.child=Fa(t,null,n,i)):rc(e,t,n,i),t.memoizedState=a.state,e=t.child):e=Oc(e,t,i),e}function _c(e,t,n,r){return zi(),t.flags|=256,rc(e,t,n,r),t.child}var vc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function yc(e){return{baseLanes:e,cachePool:va()}}function bc(e,t,n){return e=e===null?0:e.childLanes&~n,t&&(e|=eu),e}function xc(e,t,n){var r=t.pendingProps,a=!1,o=!!(t.flags&128),s;if((s=o)||(s=e!==null&&e.memoizedState===null?!1:!!(so.current&2)),s&&(a=!0,t.flags&=-129),s=!!(t.flags&32),t.flags&=-33,e===null){if(ji){if(a?no(t):ao(t),(e=Ai)?(e=pf(e,Ni),e=e!==null&&e.data!==`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:xi===null?null:{id:Si,overflow:Ci},retryLane:536870912,hydrationErrors:null},n=di(e),n.return=t,t.child=n,ki=t,Ai=null)):e=null,e===null)throw Fi(t);return hf(e)?t.lanes=32:t.lanes=536870912,null}var c=r.children;return r=r.fallback,a?(ao(t),a=t.mode,c=Cc({mode:`hidden`,children:c},a),r=li(r,a,n,null),c.return=t,r.return=t,c.sibling=r,t.child=c,r=t.child,r.memoizedState=yc(n),r.childLanes=bc(e,s,n),t.memoizedState=vc,cc(null,r)):(no(t),Sc(t,c))}var l=e.memoizedState;if(l!==null&&(c=l.dehydrated,c!==null)){if(o)t.flags&256?(no(t),t.flags&=-257,t=wc(e,t,n)):t.memoizedState===null?(ao(t),c=r.fallback,a=t.mode,r=Cc({mode:`visible`,children:r.children},a),c=li(c,a,n,null),c.flags|=2,r.return=t,c.return=t,r.sibling=c,t.child=r,Fa(t,e.child,null,n),r=t.child,r.memoizedState=yc(n),r.childLanes=bc(e,s,n),t.memoizedState=vc,t=cc(null,r)):(ao(t),t.child=e.child,t.flags|=128,t=null);else if(no(t),hf(c)){if(s=c.nextSibling&&c.nextSibling.dataset,s)var u=s.dgst;s=u,r=Error(i(419)),r.stack=``,r.digest=s,Vi({value:r,source:null,stack:null}),t=wc(e,t,n)}else if(nc||Yi(e,t,n,!1),s=(n&e.childLanes)!==0,nc||s){if(s=Vl,s!==null&&(r=Xe(s,n),r!==0&&r!==l.retryLane))throw l.retryLane=r,$r(e,r),xu(s,e,r),tc;mf(c)||Nu(),t=wc(e,t,n)}else mf(c)?(t.flags|=192,t.child=e.child,t=null):(e=l.treeContext,Ai=_f(c.nextSibling),ki=t,ji=!0,Mi=null,Ni=!1,e!==null&&Oi(t,e),t=Sc(t,r.children),t.flags|=4096);return t}return a?(ao(t),c=r.fallback,a=t.mode,l=e.child,u=l.sibling,r=oi(l,{mode:`hidden`,children:r.children}),r.subtreeFlags=l.subtreeFlags&65011712,u===null?(c=li(c,a,n,null),c.flags|=2):c=oi(u,c),c.return=t,r.return=t,r.sibling=c,t.child=r,cc(null,r),r=t.child,c=e.child.memoizedState,c===null?c=yc(n):(a=c.cachePool,a===null?a=va():(l=ia._currentValue,a=a.parent===l?a:{parent:l,pool:l}),c={baseLanes:c.baseLanes|n,cachePool:a}),r.memoizedState=c,r.childLanes=bc(e,s,n),t.memoizedState=vc,cc(e.child,r)):(no(t),n=e.child,e=n.sibling,n=oi(n,{mode:`visible`,children:r.children}),n.return=t,n.sibling=null,e!==null&&(s=t.deletions,s===null?(t.deletions=[e],t.flags|=16):s.push(e)),t.child=n,t.memoizedState=null,n)}function Sc(e,t){return t=Cc({mode:`visible`,children:t},e.mode),t.return=e,e.child=t}function Cc(e,t){return e=ii(22,e,null,t),e.lanes=0,e}function wc(e,t,n){return Fa(t,e.child,null,n),e=Sc(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Tc(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),qi(e.return,t,n)}function Ec(e,t,n,r,i,a){var o=e.memoizedState;o===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:i,treeForkCount:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=i,o.treeForkCount=a)}function Dc(e,t,n){var r=t.pendingProps,i=r.revealOrder,a=r.tail;r=r.children;var o=so.current,s=!!(o&2);if(s?(o=o&1|2,t.flags|=128):o&=1,z(so,o),rc(e,t,r,n),r=ji?vi:0,!s&&e!==null&&e.flags&128)a:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Tc(e,n,t);else if(e.tag===19)Tc(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break a;for(;e.sibling===null;){if(e.return===null||e.return===t)break a;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(i){case`forwards`:for(n=t.child,i=null;n!==null;)e=n.alternate,e!==null&&co(e)===null&&(i=n),n=n.sibling;n=i,n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),Ec(t,!1,i,n,a,r);break;case`backwards`:case`unstable_legacy-backwards`:for(n=null,i=t.child,t.child=null;i!==null;){if(e=i.alternate,e!==null&&co(e)===null){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}Ec(t,!0,n,null,a,r);break;case`together`:Ec(t,!1,null,null,void 0,r);break;default:t.memoizedState=null}return t.child}function Oc(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),Zl|=t.lanes,(n&t.childLanes)===0){if(e!==null){if(Yi(e,t,n,!1),(n&t.childLanes)===0)return null}else return null}if(e!==null&&t.child!==e.child)throw Error(i(153));if(t.child!==null){for(e=t.child,n=oi(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=oi(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function kc(e,t){return(e.lanes&t)!==0||(e=e.dependencies,!!(e!==null&&Xi(e)))}function Ac(e,t,n){switch(t.tag){case 3:se(t,t.stateNode.containerInfo),Gi(t,ia,e.memoizedState.cache),zi();break;case 27:case 5:le(t);break;case 4:se(t,t.stateNode.containerInfo);break;case 10:Gi(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,ro(t),null;break;case 13:var r=t.memoizedState;if(r!==null)return r.dehydrated===null?(n&t.child.childLanes)===0?(no(t),e=Oc(e,t,n),e===null?null:e.sibling):xc(e,t,n):(no(t),t.flags|=128,null);no(t);break;case 19:var i=!!(e.flags&128);if(r=(n&t.childLanes)!==0,r||=(Yi(e,t,n,!1),(n&t.childLanes)!==0),i){if(r)return Dc(e,t,n);t.flags|=128}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),z(so,so.current),r)break;return null;case 22:return t.lanes=0,sc(e,t,n,t.pendingProps);case 24:Gi(t,ia,e.memoizedState.cache)}return Oc(e,t,n)}function jc(e,t,n){if(e!==null){if(e.memoizedProps!==t.pendingProps)nc=!0;else{if(!kc(e,n)&&!(t.flags&128))return nc=!1,Ac(e,t,n);nc=!!(e.flags&131072)}}else nc=!1,ji&&t.flags&1048576&&Ti(t,vi,t.index);switch(t.lanes=0,t.tag){case 16:a:{var r=t.pendingProps;if(e=Ta(t.elementType),t.type=e,typeof e==`function`)ai(e)?(r=Gs(e,r),t.tag=1,t=gc(null,t,e,r,n)):(t.tag=0,t=mc(null,t,e,r,n));else{if(e!=null){var a=e.$$typeof;if(a===w){t.tag=11,t=ic(null,t,e,r,n);break a}if(a===D){t.tag=14,t=ac(null,t,e,r,n);break a}}throw t=ee(e)||e,Error(i(306,t,``))}}return t;case 0:return mc(e,t,t.type,t.pendingProps,n);case 1:return r=t.type,a=Gs(r,t.pendingProps),gc(e,t,r,a,n);case 3:a:{if(se(t,t.stateNode.containerInfo),e===null)throw Error(i(387));r=t.pendingProps;var o=t.memoizedState;a=o.element,za(e,t),Ka(t,r,null,n);var s=t.memoizedState;if(r=s.cache,Gi(t,ia,r),r!==o.cache&&Ji(t,[ia],n,!0),Ga(),r=s.element,o.isDehydrated){if(o={element:r,isDehydrated:!1,cache:s.cache},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){t=_c(e,t,r,n);break a}if(r!==a){a=mi(Error(i(424)),t),Vi(a),t=_c(e,t,r,n);break a}switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName===`HTML`?e.ownerDocument.body:e}for(Ai=_f(e.firstChild),ki=t,ji=!0,Mi=null,Ni=!0,n=Ia(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling}else{if(zi(),r===a){t=Oc(e,t,n);break a}rc(e,t,r,n)}t=t.child}return t;case 26:return pc(e,t),e===null?(n=Rf(t.type,null,t.pendingProps,null))?t.memoizedState=n:ji||(n=t.type,e=t.pendingProps,r=Yd(ae.current).createElement(n),r[nt]=t,r[rt]=e,Ud(r,n,e),ht(r),t.stateNode=r):t.memoizedState=Rf(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return le(t),e===null&&ji&&(r=t.stateNode=xf(t.type,t.pendingProps,ae.current),ki=t,Ni=!0,a=Ai,sf(t.type)?(vf=a,Ai=_f(r.firstChild)):Ai=a),rc(e,t,t.pendingProps.children,n),pc(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&ji&&((a=r=Ai)&&(r=df(r,t.type,t.pendingProps,Ni),r===null?a=!1:(t.stateNode=r,ki=t,Ai=_f(r.firstChild),Ni=!1,a=!0)),a||Fi(t)),le(t),a=t.type,o=t.pendingProps,s=e===null?null:e.memoizedProps,r=o.children,Qd(a,o)?r=null:s!==null&&Qd(a,s)&&(t.flags|=32),t.memoizedState!==null&&(a=xo(e,t,wo,null,null,n),sp._currentValue=a),pc(e,t),rc(e,t,r,n),t.child;case 6:return e===null&&ji&&((e=n=Ai)&&(n=ff(n,t.pendingProps,Ni),n===null?e=!1:(t.stateNode=n,ki=t,Ai=null,e=!0)),e||Fi(t)),null;case 13:return xc(e,t,n);case 4:return se(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Fa(t,null,r,n):rc(e,t,r,n),t.child;case 11:return ic(e,t,t.type,t.pendingProps,n);case 7:return rc(e,t,t.pendingProps,n),t.child;case 8:return rc(e,t,t.pendingProps.children,n),t.child;case 12:return rc(e,t,t.pendingProps.children,n),t.child;case 10:return r=t.pendingProps,Gi(t,t.type,r.value),rc(e,t,r.children,n),t.child;case 9:return a=t.type._context,r=t.pendingProps.children,Zi(t),a=Qi(a),r=r(a),t.flags|=1,rc(e,t,r,n),t.child;case 14:return ac(e,t,t.type,t.pendingProps,n);case 15:return oc(e,t,t.type,t.pendingProps,n);case 19:return Dc(e,t,n);case 31:return fc(e,t,n);case 22:return sc(e,t,n,t.pendingProps);case 24:return Zi(t),r=Qi(ia),e===null?(a=ga(),a===null&&(a=Vl,o=aa(),a.pooledCache=o,o.refCount++,o!==null&&(a.pooledCacheLanes|=n),a=o),t.memoizedState={parent:r,cache:a},Ra(t),Gi(t,ia,a)):((e.lanes&n)!==0&&(za(e,t),Ka(t,null,null,n),Ga()),a=e.memoizedState,o=t.memoizedState,a.parent===r?(r=o.cache,Gi(t,ia,r),r!==a.cache&&Ji(t,[ia],n,!0)):(a={parent:r,cache:r},t.memoizedState=a,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=a),Gi(t,ia,r))),rc(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(i(156,t.tag))}function Mc(e){e.flags|=4}function Nc(e,t,n,r,i){if((t=!!(e.mode&32))&&(t=!1),t){if(e.flags|=16777216,(i&335544128)===i){if(e.stateNode.complete)e.flags|=8192;else if(Au())e.flags|=8192;else throw Ea=Sa,ba}}else e.flags&=-16777217}function Pc(e,t){if(t.type!==`stylesheet`||t.state.loading&4)e.flags&=-16777217;else if(e.flags|=16777216,!$f(t)){if(Au())e.flags|=8192;else throw Ea=Sa,ba}}function Fc(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag===22?536870912:We(),e.lanes|=t,tu|=t)}function Ic(e,t){if(!ji)switch(e.tailMode){case`hidden`:t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case`collapsed`:n=e.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Lc(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags&65011712,r|=i.flags&65011712,i.return=e,i=i.sibling;else for(i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags,r|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Rc(e,t,n){var r=t.pendingProps;switch(Di(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Lc(t),null;case 1:return Lc(t),null;case 3:return n=t.stateNode,r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),Ki(ia),ce(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(Ri(t)?Mc(t):e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Bi())),Lc(t),null;case 26:var a=t.type,o=t.memoizedState;return e===null?(Mc(t),o===null?(Lc(t),Nc(t,a,null,r,n)):(Lc(t),Pc(t,o))):o?o===e.memoizedState?(Lc(t),t.flags&=-16777217):(Mc(t),Lc(t),Pc(t,o)):(e=e.memoizedProps,e!==r&&Mc(t),Lc(t),Nc(t,a,e,r,n)),null;case 27:if(ue(t),n=ae.current,a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&Mc(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return Lc(t),null}e=B.current,Ri(t)?Ii(t,e):(e=xf(a,r,n),t.stateNode=e,Mc(t))}return Lc(t),null;case 5:if(ue(t),a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&Mc(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return Lc(t),null}if(o=B.current,Ri(t))Ii(t,o);else{var s=Yd(ae.current);switch(o){case 1:o=s.createElementNS(`http://www.w3.org/2000/svg`,a);break;case 2:o=s.createElementNS(`http://www.w3.org/1998/Math/MathML`,a);break;default:switch(a){case`svg`:o=s.createElementNS(`http://www.w3.org/2000/svg`,a);break;case`math`:o=s.createElementNS(`http://www.w3.org/1998/Math/MathML`,a);break;case`script`:o=s.createElement(`div`),o.innerHTML=`<script><\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[nt]=t,o[rt]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Ud(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Mc(t)}}return Lc(t),Nc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Mc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=ae.current,Ri(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=ki,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[nt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Bd(e.nodeValue,n)),e||Fi(t,!0)}else e=Yd(e).createTextNode(r),e[nt]=t,t.stateNode=e}return Lc(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Ri(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[nt]=t}else zi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Lc(t),e=!1}else n=Bi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(oo(t),t):(oo(t),null);if(t.flags&128)throw Error(i(558))}return Lc(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Ri(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[nt]=t}else zi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Lc(t),a=!1}else a=Bi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(oo(t),t):(oo(t),null)}return oo(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Fc(t,t.updateQueue),Lc(t),null);case 4:return ce(),e===null&&Ad(t.stateNode.containerInfo),Lc(t),null;case 10:return Ki(t.type),Lc(t),null;case 19:if(R(so),r=t.memoizedState,r===null)return Lc(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null){if(a)Ic(r,!1);else{if(Xl!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=co(e),o!==null){for(t.flags|=128,Ic(r,!1),e=o.updateQueue,t.updateQueue=e,Fc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)si(n,e),n=n.sibling;return z(so,so.current&1|2),ji&&wi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Ce()>su&&(t.flags|=128,a=!0,Ic(r,!1),t.lanes=4194304)}}else{if(!a){if(e=co(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Fc(t,e),Ic(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!ji)return Lc(t),null}else 2*Ce()-r.renderingStartTime>su&&n!==536870912&&(t.flags|=128,a=!0,Ic(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(Lc(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Ce(),e.sibling=null,n=so.current,z(so,a?n&1|2:n&1),ji&&wi(t,r.treeForkCount),e);case 22:case 23:return oo(t),$a(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Lc(t),t.subtreeFlags&6&&(t.flags|=8192)):Lc(t),n=t.updateQueue,n!==null&&Fc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&R(ha),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Ki(ia),Lc(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function zc(e,t){switch(Di(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ki(ia),ce(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ue(t),null;case 31:if(t.memoizedState!==null){if(oo(t),t.alternate===null)throw Error(i(340));zi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(oo(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));zi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return R(so),null;case 4:return ce(),null;case 10:return Ki(t.type),null;case 22:case 23:return oo(t),$a(),e!==null&&R(ha),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Ki(ia),null;case 25:return null;default:return null}}function Bc(e,t){switch(Di(t),t.tag){case 3:Ki(ia),ce();break;case 26:case 27:case 5:ue(t);break;case 4:ce();break;case 31:t.memoizedState!==null&&oo(t);break;case 13:oo(t);break;case 19:R(so);break;case 10:Ki(t.type);break;case 22:case 23:oo(t),$a(),e!==null&&R(ha);break;case 24:Ki(ia)}}function Vc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Zu(t,t.return,e)}}function Hc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Zu(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Zu(t,t.return,e)}}function Uc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Ja(t,n)}catch(t){Zu(e,e.return,t)}}}function Wc(e,t,n){n.props=Gs(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Zu(e,t,n)}}function Gc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Zu(e,t,n)}}function Kc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Zu(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Zu(e,t,n)}else n.current=null}}function qc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Zu(e,e.return,t)}}function Jc(e,t,n){try{var r=e.stateNode;Wd(r,e.type,n,t),r[rt]=t}catch(t){Zu(e,e.return,t)}}function Yc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&sf(e.type)||e.tag===4}function Xc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Yc(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.tag===27&&sf(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Zc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Yt));else if(r!==4&&(r===27&&sf(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Zc(e,t,n),e=e.sibling;e!==null;)Zc(e,t,n),e=e.sibling}function Qc(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&&(r===27&&sf(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Qc(e,t,n),e=e.sibling;e!==null;)Qc(e,t,n),e=e.sibling}function $c(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Ud(t,r,n),t[nt]=e,t[rt]=n}catch(t){Zu(e,e.return,t)}}var el=!1,tl=!1,nl=!1,rl=typeof WeakSet==`function`?WeakSet:Set,il=null;function al(e,t){if(e=e.containerInfo,qd=gp,e=Cr(e),wr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(Jd={focusedElem:e,selectionRange:n},gp=!1,il=t;il!==null;)if(t=il,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,il=e;else for(;il!==null;){switch(t=il,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n<e.length;n++)a=e[n],a.ref.impl=a.nextImpl;break;case 11:case 15:break;case 1:if(e&1024&&o!==null){e=void 0,n=t,a=o.memoizedProps,o=o.memoizedState,r=n.stateNode;try{var h=Gs(n.type,a);e=r.getSnapshotBeforeUpdate(h,o),r.__reactInternalSnapshotBeforeUpdate=e}catch(e){Zu(n,n.return,e)}}break;case 3:if(e&1024){if(e=t.stateNode.containerInfo,n=e.nodeType,n===9)uf(e);else if(n===1)switch(e.nodeName){case`HEAD`:case`HTML`:case`BODY`:uf(e);break;default:e.textContent=``}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if(e&1024)throw Error(i(163))}if(e=t.sibling,e!==null){e.return=t.return,il=e;break}il=t.return}}function ol(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:xl(e,n),r&4&&Vc(5,n);break;case 1:if(xl(e,n),r&4){if(e=n.stateNode,t===null)try{e.componentDidMount()}catch(e){Zu(n,n.return,e)}else{var i=Gs(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(i,t,e.__reactInternalSnapshotBeforeUpdate)}catch(e){Zu(n,n.return,e)}}}r&64&&Uc(n),r&512&&Gc(n,n.return);break;case 3:if(xl(e,n),r&64&&(e=n.updateQueue,e!==null)){if(t=null,n.child!==null)switch(n.child.tag){case 27:case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}try{Ja(e,t)}catch(e){Zu(n,n.return,e)}}break;case 27:t===null&&r&4&&$c(n);case 26:case 5:xl(e,n),t===null&&r&4&&qc(n),r&512&&Gc(n,n.return);break;case 12:xl(e,n);break;case 31:xl(e,n),r&4&&fl(e,n);break;case 13:xl(e,n),r&4&&pl(e,n),r&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(n=td.bind(null,n),gf(e,n))));break;case 22:if(r=n.memoizedState!==null||el,!r){t=t!==null&&t.memoizedState!==null||tl,i=el;var a=tl;el=r,(tl=t)&&!a?Cl(e,n,!!(n.subtreeFlags&8772)):xl(e,n),el=i,tl=a}break;case 30:break;default:xl(e,n)}}function sl(e){var t=e.alternate;t!==null&&(e.alternate=null,sl(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&ut(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var cl=null,ll=!1;function ul(e,t,n){for(n=n.child;n!==null;)dl(e,t,n),n=n.sibling}function dl(e,t,n){if(Ne&&typeof Ne.onCommitFiberUnmount==`function`)try{Ne.onCommitFiberUnmount(Me,n)}catch{}switch(n.tag){case 26:tl||Kc(n,t),ul(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode,n.parentNode.removeChild(n));break;case 27:tl||Kc(n,t);var r=cl,i=ll;sf(n.type)&&(cl=n.stateNode,ll=!1),ul(e,t,n),Sf(n.stateNode),cl=r,ll=i;break;case 5:tl||Kc(n,t);case 6:if(r=cl,i=ll,cl=null,ul(e,t,n),cl=r,ll=i,cl!==null){if(ll)try{(cl.nodeType===9?cl.body:cl.nodeName===`HTML`?cl.ownerDocument.body:cl).removeChild(n.stateNode)}catch(e){Zu(n,t,e)}else try{cl.removeChild(n.stateNode)}catch(e){Zu(n,t,e)}}break;case 18:cl!==null&&(ll?(e=cl,cf(e.nodeType===9?e.body:e.nodeName===`HTML`?e.ownerDocument.body:e,n.stateNode),Hp(e)):cf(cl,n.stateNode));break;case 4:r=cl,i=ll,cl=n.stateNode.containerInfo,ll=!0,ul(e,t,n),cl=r,ll=i;break;case 0:case 11:case 14:case 15:Hc(2,n,t),tl||Hc(4,n,t),ul(e,t,n);break;case 1:tl||(Kc(n,t),r=n.stateNode,typeof r.componentWillUnmount==`function`&&Wc(n,t,r)),ul(e,t,n);break;case 21:ul(e,t,n);break;case 22:tl=(r=tl)||n.memoizedState!==null,ul(e,t,n),tl=r;break;default:ul(e,t,n)}}function fl(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Hp(e)}catch(e){Zu(t,t.return,e)}}}function pl(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Hp(e)}catch(e){Zu(t,t.return,e)}}function ml(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new rl),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new rl),t;default:throw Error(i(435,e.tag))}}function hl(e,t){var n=ml(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=nd.bind(null,e,t);t.then(r,r)}})}function gl(e,t){var n=t.deletions;if(n!==null)for(var r=0;r<n.length;r++){var a=n[r],o=e,s=t,c=s;a:for(;c!==null;){switch(c.tag){case 27:if(sf(c.type)){cl=c.stateNode,ll=!1;break a}break;case 5:cl=c.stateNode,ll=!1;break a;case 3:case 4:cl=c.stateNode.containerInfo,ll=!0;break a}c=c.return}if(cl===null)throw Error(i(160));dl(o,s,a),cl=null,ll=!1,o=a.alternate,o!==null&&(o.return=null),a.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)vl(t,e),t=t.sibling}var _l=null;function vl(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:gl(t,e),yl(e),r&4&&(Hc(3,e,e.return),Vc(3,e),Hc(5,e,e.return));break;case 1:gl(t,e),yl(e),r&512&&(tl||n===null||Kc(n,n.return)),r&64&&el&&(e=e.updateQueue,e!==null&&(r=e.callbacks,r!==null&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=n===null?r:n.concat(r))));break;case 26:var a=_l;if(gl(t,e),yl(e),r&512&&(tl||n===null||Kc(n,n.return)),r&4){var o=n===null?null:n.memoizedState;if(r=e.memoizedState,n===null){if(r===null){if(e.stateNode===null){a:{r=e.type,n=e.memoizedProps,a=a.ownerDocument||a;b:switch(r){case`title`:o=a.getElementsByTagName(`title`)[0],(!o||o[lt]||o[nt]||o.namespaceURI===`http://www.w3.org/2000/svg`||o.hasAttribute(`itemprop`))&&(o=a.createElement(r),a.head.insertBefore(o,a.querySelector(`head > title`))),Ud(o,r,n),o[nt]=e,ht(o),r=o;break a;case`link`:var s=Xf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;c<s.length;c++)if(o=s[c],o.getAttribute(`href`)===(n.href==null||n.href===``?null:n.href)&&o.getAttribute(`rel`)===(n.rel==null?null:n.rel)&&o.getAttribute(`title`)===(n.title==null?null:n.title)&&o.getAttribute(`crossorigin`)===(n.crossOrigin==null?null:n.crossOrigin)){s.splice(c,1);break b}}o=a.createElement(r),Ud(o,r,n),a.head.appendChild(o);break;case`meta`:if(s=Xf(`meta`,`content`,a).get(r+(n.content||``))){for(c=0;c<s.length;c++)if(o=s[c],o.getAttribute(`content`)===(n.content==null?null:``+n.content)&&o.getAttribute(`name`)===(n.name==null?null:n.name)&&o.getAttribute(`property`)===(n.property==null?null:n.property)&&o.getAttribute(`http-equiv`)===(n.httpEquiv==null?null:n.httpEquiv)&&o.getAttribute(`charset`)===(n.charSet==null?null:n.charSet)){s.splice(c,1);break b}}o=a.createElement(r),Ud(o,r,n),a.head.appendChild(o);break;default:throw Error(i(468,r))}o[nt]=e,ht(o),r=o}e.stateNode=r}else Zf(a,e.type,e.stateNode)}else e.stateNode=Gf(a,r,e.memoizedProps)}else o===r?r===null&&e.stateNode!==null&&Jc(e,e.memoizedProps,n.memoizedProps):(o===null?n.stateNode!==null&&(n=n.stateNode,n.parentNode.removeChild(n)):o.count--,r===null?Zf(a,e.type,e.stateNode):Gf(a,r,e.memoizedProps))}break;case 27:gl(t,e),yl(e),r&512&&(tl||n===null||Kc(n,n.return)),n!==null&&r&4&&Jc(e,e.memoizedProps,n.memoizedProps);break;case 5:if(gl(t,e),yl(e),r&512&&(tl||n===null||Kc(n,n.return)),e.flags&32){a=e.stateNode;try{Vt(a,``)}catch(t){Zu(e,e.return,t)}}r&4&&e.stateNode!=null&&(a=e.memoizedProps,Jc(e,a,n===null?a:n.memoizedProps)),r&1024&&(nl=!0);break;case 6:if(gl(t,e),yl(e),r&4){if(e.stateNode===null)throw Error(i(162));r=e.memoizedProps,n=e.stateNode;try{n.nodeValue=r}catch(t){Zu(e,e.return,t)}}break;case 3:if(Yf=null,a=_l,_l=Tf(t.containerInfo),gl(t,e),_l=a,yl(e),r&4&&n!==null&&n.memoizedState.isDehydrated)try{Hp(t.containerInfo)}catch(t){Zu(e,e.return,t)}nl&&(nl=!1,bl(e));break;case 4:r=_l,_l=Tf(e.stateNode.containerInfo),gl(t,e),yl(e),_l=r;break;case 12:gl(t,e),yl(e);break;case 31:gl(t,e),yl(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,hl(e,r)));break;case 13:gl(t,e),yl(e),e.child.flags&8192&&e.memoizedState!==null!=(n!==null&&n.memoizedState!==null)&&(au=Ce()),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,hl(e,r)));break;case 22:a=e.memoizedState!==null;var l=n!==null&&n.memoizedState!==null,u=el,d=tl;if(el=u||a,tl=d||l,gl(t,e),tl=d,el=u,yl(e),r&8192)a:for(t=e.stateNode,t._visibility=a?t._visibility&-2:t._visibility|1,a&&(n===null||l||el||tl||Sl(e)),n=null,t=e;;){if(t.tag===5||t.tag===26){if(n===null){l=n=t;try{if(o=l.stateNode,a)s=o.style,typeof s.setProperty==`function`?s.setProperty(`display`,`none`,`important`):s.display=`none`;else{c=l.stateNode;var f=l.memoizedProps.style,p=f!=null&&f.hasOwnProperty(`display`)?f.display:null;c.style.display=p==null||typeof p==`boolean`?``:(``+p).trim()}}catch(e){Zu(l,l.return,e)}}}else if(t.tag===6){if(n===null){l=t;try{l.stateNode.nodeValue=a?``:l.memoizedProps}catch(e){Zu(l,l.return,e)}}}else if(t.tag===18){if(n===null){l=t;try{var m=l.stateNode;a?lf(m,!0):lf(l.stateNode,!1)}catch(e){Zu(l,l.return,e)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break a;for(;t.sibling===null;){if(t.return===null||t.return===e)break a;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}r&4&&(r=e.updateQueue,r!==null&&(n=r.retryQueue,n!==null&&(r.retryQueue=null,hl(e,n))));break;case 19:gl(t,e),yl(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,hl(e,r)));break;case 30:break;case 21:break;default:gl(t,e),yl(e)}}function yl(e){var t=e.flags;if(t&2){try{for(var n,r=e.return;r!==null;){if(Yc(r)){n=r;break}r=r.return}if(n==null)throw Error(i(160));switch(n.tag){case 27:var a=n.stateNode;Qc(e,Xc(e),a);break;case 5:var o=n.stateNode;n.flags&32&&(Vt(o,``),n.flags&=-33),Qc(e,Xc(e),o);break;case 3:case 4:var s=n.stateNode.containerInfo;Zc(e,Xc(e),s);break;default:throw Error(i(161))}}catch(t){Zu(e,e.return,t)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function bl(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;bl(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function xl(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)ol(e,t.alternate,t),t=t.sibling}function Sl(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:Hc(4,t,t.return),Sl(t);break;case 1:Kc(t,t.return);var n=t.stateNode;typeof n.componentWillUnmount==`function`&&Wc(t,t.return,n),Sl(t);break;case 27:Sf(t.stateNode);case 26:case 5:Kc(t,t.return),Sl(t);break;case 22:t.memoizedState===null&&Sl(t);break;case 30:Sl(t);break;default:Sl(t)}e=e.sibling}}function Cl(e,t,n){for(n&&=!!(t.subtreeFlags&8772),t=t.child;t!==null;){var r=t.alternate,i=e,a=t,o=a.flags;switch(a.tag){case 0:case 11:case 15:Cl(i,a,n),Vc(4,a);break;case 1:if(Cl(i,a,n),r=a,i=r.stateNode,typeof i.componentDidMount==`function`)try{i.componentDidMount()}catch(e){Zu(r,r.return,e)}if(r=a,i=r.updateQueue,i!==null){var s=r.stateNode;try{var c=i.shared.hiddenCallbacks;if(c!==null)for(i.shared.hiddenCallbacks=null,i=0;i<c.length;i++)qa(c[i],s)}catch(e){Zu(r,r.return,e)}}n&&o&64&&Uc(a),Gc(a,a.return);break;case 27:$c(a);case 26:case 5:Cl(i,a,n),n&&r===null&&o&4&&qc(a),Gc(a,a.return);break;case 12:Cl(i,a,n);break;case 31:Cl(i,a,n),n&&o&4&&fl(i,a);break;case 13:Cl(i,a,n),n&&o&4&&pl(i,a);break;case 22:a.memoizedState===null&&Cl(i,a,n),Gc(a,a.return);break;case 30:break;default:Cl(i,a,n)}t=t.sibling}}function wl(e,t){var n=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==n&&(e!=null&&e.refCount++,n!=null&&oa(n))}function Tl(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&oa(e))}function El(e,t,n,r){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)Dl(e,t,n,r),t=t.sibling}function Dl(e,t,n,r){var i=t.flags;switch(t.tag){case 0:case 11:case 15:El(e,t,n,r),i&2048&&Vc(9,t);break;case 1:El(e,t,n,r);break;case 3:El(e,t,n,r),i&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&oa(e)));break;case 12:if(i&2048){El(e,t,n,r),e=t.stateNode;try{var a=t.memoizedProps,o=a.id,s=a.onPostCommit;typeof s==`function`&&s(o,t.alternate===null?`mount`:`update`,e.passiveEffectDuration,-0)}catch(e){Zu(t,t.return,e)}}else El(e,t,n,r);break;case 31:El(e,t,n,r);break;case 13:El(e,t,n,r);break;case 23:break;case 22:a=t.stateNode,o=t.alternate,t.memoizedState===null?a._visibility&2?El(e,t,n,r):(a._visibility|=2,Ol(e,t,n,r,!!(t.subtreeFlags&10256)||!1)):a._visibility&2?El(e,t,n,r):kl(e,t),i&2048&&wl(o,t);break;case 24:El(e,t,n,r),i&2048&&Tl(t.alternate,t);break;default:El(e,t,n,r)}}function Ol(e,t,n,r,i){for(i&&=!!(t.subtreeFlags&10256)||!1,t=t.child;t!==null;){var a=e,o=t,s=n,c=r,l=o.flags;switch(o.tag){case 0:case 11:case 15:Ol(a,o,s,c,i),Vc(8,o);break;case 23:break;case 22:var u=o.stateNode;o.memoizedState===null?(u._visibility|=2,Ol(a,o,s,c,i)):u._visibility&2?Ol(a,o,s,c,i):kl(a,o),i&&l&2048&&wl(o.alternate,o);break;case 24:Ol(a,o,s,c,i),i&&l&2048&&Tl(o.alternate,o);break;default:Ol(a,o,s,c,i)}t=t.sibling}}function kl(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var n=e,r=t,i=r.flags;switch(r.tag){case 22:kl(n,r),i&2048&&wl(r.alternate,r);break;case 24:kl(n,r),i&2048&&Tl(r.alternate,r);break;default:kl(n,r)}t=t.sibling}}var Al=8192;function jl(e,t,n){if(e.subtreeFlags&Al)for(e=e.child;e!==null;)Ml(e,t,n),e=e.sibling}function Ml(e,t,n){switch(e.tag){case 26:jl(e,t,n),e.flags&Al&&e.memoizedState!==null&&ep(n,_l,e.memoizedState,e.memoizedProps);break;case 5:jl(e,t,n);break;case 3:case 4:var r=_l;_l=Tf(e.stateNode.containerInfo),jl(e,t,n),_l=r;break;case 22:e.memoizedState===null&&(r=e.alternate,r!==null&&r.memoizedState!==null?(r=Al,Al=16777216,jl(e,t,n),Al=r):jl(e,t,n));break;default:jl(e,t,n)}}function Nl(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function Pl(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];il=r,Ll(r,e)}Nl(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)Fl(e),e=e.sibling}function Fl(e){switch(e.tag){case 0:case 11:case 15:Pl(e),e.flags&2048&&Hc(9,e,e.return);break;case 3:Pl(e);break;case 12:Pl(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Il(e)):Pl(e);break;default:Pl(e)}}function Il(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];il=r,Ll(r,e)}Nl(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:Hc(8,t,t.return),Il(t);break;case 22:n=t.stateNode,n._visibility&2&&(n._visibility&=-3,Il(t));break;default:Il(t)}e=e.sibling}}function Ll(e,t){for(;il!==null;){var n=il;switch(n.tag){case 0:case 11:case 15:Hc(8,n,t);break;case 23:case 22:if(n.memoizedState!==null&&n.memoizedState.cachePool!==null){var r=n.memoizedState.cachePool.pool;r!=null&&r.refCount++}break;case 24:oa(n.memoizedState.cache)}if(r=n.child,r!==null)r.return=n,il=r;else a:for(n=e;il!==null;){r=il;var i=r.sibling,a=r.return;if(sl(r),r===n){il=null;break a}if(i!==null){i.return=a,il=i;break a}il=a}}}var Rl={getCacheForType:function(e){var t=Qi(ia),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return Qi(ia).controller.signal}},zl=typeof WeakMap==`function`?WeakMap:Map,Bl=0,Vl=null,Hl=null,Ul=0,Wl=0,Gl=null,Kl=!1,ql=!1,Jl=!1,Yl=0,Xl=0,Zl=0,Ql=0,$l=0,eu=0,tu=0,nu=null,ru=null,iu=!1,au=0,ou=0,su=1/0,cu=null,lu=null,uu=0,du=null,fu=null,pu=0,mu=0,hu=null,gu=null,_u=0,vu=null;function yu(){return Bl&2&&Ul!==0?Ul&-Ul:F.T===null?$e():vd()}function bu(){if(eu===0){if(!(Ul&536870912)||ji){var e=ze;ze<<=1,!(ze&3932160)&&(ze=262144),eu=e}else eu=536870912}return e=eo.current,e!==null&&(e.flags|=32),eu}function xu(e,t,n){(e===Vl&&(Wl===2||Wl===9)||e.cancelPendingCommit!==null)&&(Ou(e,0),Tu(e,Ul,eu,!1)),Ke(e,n),(!(Bl&2)||e!==Vl)&&(e===Vl&&(!(Bl&2)&&(Ql|=n),Xl===4&&Tu(e,Ul,eu,!1)),ud(e))}function Su(e,t,n){if(Bl&6)throw Error(i(327));var r=!n&&!(t&127)&&(t&e.expiredLanes)===0||Ue(e,t),a=r?Iu(e,t):Pu(e,t,!0),o=r;do{if(a===0){ql&&!r&&Tu(e,t,0,!1);break}if(n=e.current.alternate,o&&!wu(n)){a=Pu(e,t,!1),o=!1;continue}if(a===2){if(o=t,e.errorRecoveryDisabledLanes&o)var s=0;else s=e.pendingLanes&-536870913,s=s===0?s&536870912?536870912:0:s;if(s!==0){t=s;a:{var c=e;a=nu;var l=c.current.memoizedState.isDehydrated;if(l&&(Ou(c,s).flags|=256),s=Pu(c,s,!1),s!==2){if(Jl&&!l){c.errorRecoveryDisabledLanes|=o,Ql|=o,a=4;break a}o=ru,ru=a,o!==null&&(ru===null?ru=o:ru.push.apply(ru,o))}a=s}if(o=!1,a!==2)continue}}if(a===1){Ou(e,0),Tu(e,t,0,!0);break}a:{switch(r=e,o=a,o){case 0:case 1:throw Error(i(345));case 4:if((t&4194048)!==t)break;case 6:Tu(r,t,eu,!Kl);break a;case 2:ru=null;break;case 3:case 5:break;default:throw Error(i(329))}if((t&62914560)===t&&(a=au+300-Ce(),10<a)){if(Tu(r,t,eu,!Kl),He(r,0,!0)!==0)break a;pu=t,r.timeoutHandle=tf(Cu.bind(null,r,n,ru,cu,iu,t,eu,Ql,tu,Kl,o,`Throttled`,-0,0),a);break a}Cu(r,n,ru,cu,iu,t,eu,Ql,tu,Kl,o,null,-0,0)}break}while(1);ud(e)}function Cu(e,t,n,r,i,a,o,s,c,l,u,d,f,p){if(e.timeoutHandle=-1,d=t.subtreeFlags,d&8192||(d&16785408)==16785408){d={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:Yt},Ml(t,a,d);var m=(a&62914560)===a?au-Ce():(a&4194048)===a?ou-Ce():0;if(m=np(d,m),m!==null){pu=a,e.cancelPendingCommit=m(Uu.bind(null,e,t,a,n,r,i,o,s,c,u,d,null,f,p)),Tu(e,a,o,!l);return}}Uu(e,t,a,n,r,i,o,s,c)}function wu(e){for(var t=e;;){var n=t.tag;if((n===0||n===11||n===15)&&t.flags&16384&&(n=t.updateQueue,n!==null&&(n=n.stores,n!==null)))for(var r=0;r<n.length;r++){var i=n[r],a=i.getSnapshot;i=i.value;try{if(!vr(a(),i))return!1}catch{return!1}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function Tu(e,t,n,r){t&=~$l,t&=~Ql,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var i=t;0<i;){var a=31-Fe(i),o=1<<a;r[a]=-1,i&=~o}n!==0&&Je(e,n,t)}function Eu(){return Bl&6?!0:(dd(0,!1),!1)}function Du(){if(Hl!==null){if(Wl===0)var e=Hl.return;else e=Hl,Wi=Ui=null,Do(e),ka=null,Aa=0,e=Hl;for(;e!==null;)Bc(e.alternate,e),e=e.return;Hl=null}}function Ou(e,t){var n=e.timeoutHandle;n!==-1&&(e.timeoutHandle=-1,nf(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),pu=0,Du(),Vl=e,Hl=n=oi(e.current,null),Ul=t,Wl=0,Gl=null,Kl=!1,ql=Ue(e,t),Jl=!1,tu=eu=$l=Ql=Zl=Xl=0,ru=nu=null,iu=!1,t&8&&(t|=t&32);var r=e.entangledLanes;if(r!==0)for(e=e.entanglements,r&=t;0<r;){var i=31-Fe(r),a=1<<i;t|=e[i],r&=~a}return Yl=t,Xr(),n}function ku(e,t){U=null,F.H=Ls,t===ya||t===xa?(t=Da(),Wl=3):t===ba?(t=Da(),Wl=4):Wl=t===tc?8:typeof t==`object`&&t&&typeof t.then==`function`?6:1,Gl=t,Hl===null&&(Xl=1,Ys(e,mi(t,e.current)))}function Au(){var e=eo.current;return e===null?!0:(Ul&4194048)===Ul?to===null:(Ul&62914560)===Ul||Ul&536870912?e===to:!1}function ju(){var e=F.H;return F.H=Ls,e===null?Ls:e}function Mu(){var e=F.A;return F.A=Rl,e}function Nu(){Xl=4,Kl||(Ul&4194048)!==Ul&&eo.current!==null||(ql=!0),!(Zl&134217727)&&!(Ql&134217727)||Vl===null||Tu(Vl,Ul,eu,!1)}function Pu(e,t,n){var r=Bl;Bl|=2;var i=ju(),a=Mu();(Vl!==e||Ul!==t)&&(cu=null,Ou(e,t)),t=!1;var o=Xl;a:do try{if(Wl!==0&&Hl!==null){var s=Hl,c=Gl;switch(Wl){case 8:Du(),o=6;break a;case 3:case 2:case 9:case 6:eo.current===null&&(t=!0);var l=Wl;if(Wl=0,Gl=null,Bu(e,s,c,l),n&&ql){o=0;break a}break;default:l=Wl,Wl=0,Gl=null,Bu(e,s,c,l)}}Fu(),o=Xl;break}catch(t){ku(e,t)}while(1);return t&&e.shellSuspendCounter++,Wi=Ui=null,Bl=r,F.H=i,F.A=a,Hl===null&&(Vl=null,Ul=0,Xr()),o}function Fu(){for(;Hl!==null;)Ru(Hl)}function Iu(e,t){var n=Bl;Bl|=2;var r=ju(),a=Mu();Vl!==e||Ul!==t?(cu=null,su=Ce()+500,Ou(e,t)):ql=Ue(e,t);a:do try{if(Wl!==0&&Hl!==null){t=Hl;var o=Gl;b:switch(Wl){case 1:Wl=0,Gl=null,Bu(e,t,o,1);break;case 2:case 9:if(Ca(o)){Wl=0,Gl=null,zu(t);break}t=function(){Wl!==2&&Wl!==9||Vl!==e||(Wl=7),ud(e)},o.then(t,t);break a;case 3:Wl=7;break a;case 4:Wl=5;break a;case 7:Ca(o)?(Wl=0,Gl=null,zu(t)):(Wl=0,Gl=null,Bu(e,t,o,7));break;case 5:var s=null;switch(Hl.tag){case 26:s=Hl.memoizedState;case 5:case 27:var c=Hl;if(s?$f(s):c.stateNode.complete){Wl=0,Gl=null;var l=c.sibling;if(l!==null)Hl=l;else{var u=c.return;u===null?Hl=null:(Hl=u,Vu(u))}break b}}Wl=0,Gl=null,Bu(e,t,o,5);break;case 6:Wl=0,Gl=null,Bu(e,t,o,6);break;case 8:Du(),Xl=6;break a;default:throw Error(i(462))}}Lu();break}catch(t){ku(e,t)}while(1);return Wi=Ui=null,F.H=r,F.A=a,Bl=n,Hl===null?(Vl=null,Ul=0,Xr(),Xl):0}function Lu(){for(;Hl!==null&&!xe();)Ru(Hl)}function Ru(e){var t=jc(e.alternate,e,Yl);e.memoizedProps=e.pendingProps,t===null?Vu(e):Hl=t}function zu(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=hc(n,t,t.pendingProps,t.type,void 0,Ul);break;case 11:t=hc(n,t,t.pendingProps,t.type.render,t.ref,Ul);break;case 5:Do(t);default:Bc(n,t),t=Hl=si(t,Yl),t=jc(n,t,Yl)}e.memoizedProps=e.pendingProps,t===null?Vu(e):Hl=t}function Bu(e,t,n,r){Wi=Ui=null,Do(t),ka=null,Aa=0;var i=t.return;try{if(ec(e,i,t,n,Ul)){Xl=1,Ys(e,mi(n,e.current)),Hl=null;return}}catch(t){if(i!==null)throw Hl=i,t;Xl=1,Ys(e,mi(n,e.current)),Hl=null;return}t.flags&32768?(ji||r===1?e=!0:ql||Ul&536870912?e=!1:(Kl=e=!0,(r===2||r===9||r===3||r===6)&&(r=eo.current,r!==null&&r.tag===13&&(r.flags|=16384))),Hu(t,e)):Vu(t)}function Vu(e){var t=e;do{if(t.flags&32768){Hu(t,Kl);return}e=t.return;var n=Rc(t.alternate,t,Yl);if(n!==null){Hl=n;return}if(t=t.sibling,t!==null){Hl=t;return}Hl=t=e}while(t!==null);Xl===0&&(Xl=5)}function Hu(e,t){do{var n=zc(e.alternate,e);if(n!==null){n.flags&=32767,Hl=n;return}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){Hl=e;return}Hl=e=n}while(e!==null);Xl=6,Hl=null}function Uu(e,t,n,r,a,o,s,c,l){e.cancelPendingCommit=null;do Ju();while(uu!==0);if(Bl&6)throw Error(i(327));if(t!==null){if(t===e.current)throw Error(i(177));if(o=t.lanes|t.childLanes,o|=Yr,qe(e,n,o,s,c,l),e===Vl&&(Hl=Vl=null,Ul=0),fu=t,du=e,pu=n,mu=o,hu=a,gu=r,t.subtreeFlags&10256||t.flags&10256?(e.callbackNode=null,e.callbackPriority=0,rd(De,function(){return Yu(),null})):(e.callbackNode=null,e.callbackPriority=0),r=!!(t.flags&13878),t.subtreeFlags&13878||r){r=F.T,F.T=null,a=I.p,I.p=2,s=Bl,Bl|=4;try{al(e,t,n)}finally{Bl=s,I.p=a,F.T=r}}uu=1,Wu(),Gu(),Ku()}}function Wu(){if(uu===1){uu=0;var e=du,t=fu,n=!!(t.flags&13878);if(t.subtreeFlags&13878||n){n=F.T,F.T=null;var r=I.p;I.p=2;var i=Bl;Bl|=4;try{vl(t,e);var a=Jd,o=Cr(e.containerInfo),s=a.focusedElem,c=a.selectionRange;if(o!==s&&s&&s.ownerDocument&&Sr(s.ownerDocument.documentElement,s)){if(c!==null&&wr(s)){var l=c.start,u=c.end;if(u===void 0&&(u=l),`selectionStart`in s)s.selectionStart=l,s.selectionEnd=Math.min(u,s.value.length);else{var d=s.ownerDocument||document,f=d&&d.defaultView||window;if(f.getSelection){var p=f.getSelection(),m=s.textContent.length,h=Math.min(c.start,m),g=c.end===void 0?h:Math.min(c.end,m);!p.extend&&h>g&&(o=g,g=h,h=o);var _=xr(s,h),v=xr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;s<d.length;s++){var b=d[s];b.element.scrollLeft=b.left,b.element.scrollTop=b.top}}gp=!!qd,Jd=qd=null}finally{Bl=i,I.p=r,F.T=n}}e.current=t,uu=2}}function Gu(){if(uu===2){uu=0;var e=du,t=fu,n=!!(t.flags&8772);if(t.subtreeFlags&8772||n){n=F.T,F.T=null;var r=I.p;I.p=2;var i=Bl;Bl|=4;try{ol(e,t.alternate,t)}finally{Bl=i,I.p=r,F.T=n}}uu=3}}function Ku(){if(uu===4||uu===3){uu=0,Se();var e=du,t=fu,n=pu,r=gu;t.subtreeFlags&10256||t.flags&10256?uu=5:(uu=0,fu=du=null,qu(e,e.pendingLanes));var i=e.pendingLanes;if(i===0&&(lu=null),Qe(n),t=t.stateNode,Ne&&typeof Ne.onCommitFiberRoot==`function`)try{Ne.onCommitFiberRoot(Me,t,void 0,(t.current.flags&128)==128)}catch{}if(r!==null){t=F.T,i=I.p,I.p=2,F.T=null;try{for(var a=e.onRecoverableError,o=0;o<r.length;o++){var s=r[o];a(s.value,{componentStack:s.stack})}}finally{F.T=t,I.p=i}}pu&3&&Ju(),ud(e),i=e.pendingLanes,n&261930&&i&42?e===vu?_u++:(_u=0,vu=e):_u=0,dd(0,!1)}}function qu(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,oa(t)))}function Ju(){return Wu(),Gu(),Ku(),Yu()}function Yu(){if(uu!==5)return!1;var e=du,t=mu;mu=0;var n=Qe(pu),r=F.T,a=I.p;try{I.p=32>n?32:n,F.T=null,n=hu,hu=null;var o=du,s=pu;if(uu=0,fu=du=null,pu=0,Bl&6)throw Error(i(331));var c=Bl;if(Bl|=4,Fl(o.current),Dl(o,o.current,s,n),Bl=c,dd(0,!1),Ne&&typeof Ne.onPostCommitFiberRoot==`function`)try{Ne.onPostCommitFiberRoot(Me,o)}catch{}return!0}finally{I.p=a,F.T=r,qu(e,t)}}function Xu(e,t,n){t=mi(n,t),t=Zs(e.stateNode,t,2),e=Va(e,t,2),e!==null&&(Ke(e,2),ud(e))}function Zu(e,t,n){if(e.tag===3)Xu(e,e,n);else for(;t!==null;){if(t.tag===3){Xu(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(lu===null||!lu.has(r))){e=mi(n,e),n=Qs(2),r=Va(t,n,2),r!==null&&($s(n,r,t,e),Ke(r,2),ud(r));break}}t=t.return}}function Qu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new zl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Jl=!0,i.add(n),e=$u.bind(null,e,t,n),t.then(e,e))}function $u(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Vl===e&&(Ul&n)===n&&(Xl===4||Xl===3&&(Ul&62914560)===Ul&&300>Ce()-au?!(Bl&2)&&Ou(e,0):$l|=n,tu===Ul&&(tu=0)),ud(e)}function ed(e,t){t===0&&(t=We()),e=$r(e,t),e!==null&&(Ke(e,t),ud(e))}function td(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),ed(e,n)}function nd(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),ed(e,n)}function rd(e,t){return ye(e,t)}var id=null,ad=null,od=!1,sd=!1,cd=!1,ld=0;function ud(e){e!==ad&&e.next===null&&(ad===null?id=ad=e:ad=ad.next=e),sd=!0,od||(od=!0,_d())}function dd(e,t){if(!cd&&sd){cd=!0;do for(var n=!1,r=id;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Fe(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,gd(r,a))}else a=Ul,a=He(r,r===Vl?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||Ue(r,a)||(n=!0,gd(r,a))}r=r.next}while(n);cd=!1}}function fd(){pd()}function pd(){sd=od=!1;var e=0;ld!==0&&ef()&&(e=ld);for(var t=Ce(),n=null,r=id;r!==null;){var i=r.next,a=md(r,t);a===0?(r.next=null,n===null?id=i:n.next=i,i===null&&(ad=n)):(n=r,(e!==0||a&3)&&(sd=!0)),r=i}uu!==0&&uu!==5||dd(e,!1),ld!==0&&(ld=0)}function md(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0<a;){var o=31-Fe(a),s=1<<o,c=i[o];c===-1?((s&n)===0||(s&r)!==0)&&(i[o]=H(s,t)):c<=t&&(e.expiredLanes|=s),a&=~s}if(t=Vl,n=Ul,n=He(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r=e.callbackNode,n===0||e===t&&(Wl===2||Wl===9)||e.cancelPendingCommit!==null)return r!==null&&r!==null&&be(r),e.callbackNode=null,e.callbackPriority=0;if(!(n&3)||Ue(e,n)){if(t=n&-n,t===e.callbackPriority)return t;switch(r!==null&&be(r),Qe(n)){case 2:case 8:n=Ee;break;case 32:n=De;break;case 268435456:n=ke;break;default:n=De}return r=hd.bind(null,e),n=ye(n,r),e.callbackPriority=t,e.callbackNode=n,t}return r!==null&&r!==null&&be(r),e.callbackPriority=2,e.callbackNode=null,2}function hd(e,t){if(uu!==0&&uu!==5)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(Ju()&&e.callbackNode!==n)return null;var r=Ul;return r=He(e,e===Vl?r:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r===0?null:(Su(e,r,t),md(e,Ce()),e.callbackNode!=null&&e.callbackNode===n?hd.bind(null,e):null)}function gd(e,t){if(Ju())return null;Su(e,t,!0)}function _d(){af(function(){Bl&6?ye(Te,fd):pd()})}function vd(){if(ld===0){var e=la;e===0&&(e=Re,Re<<=1,!(Re&261888)&&(Re=256)),ld=e}return ld}function yd(e){return e==null||typeof e==`symbol`||typeof e==`boolean`?null:typeof e==`function`?e:Jt(``+e)}function bd(e,t){var n=t.ownerDocument.createElement(`input`);return n.name=t.name,n.value=t.value,e.id&&n.setAttribute(`form`,e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}function xd(e,t,n,r,i){if(t===`submit`&&n&&n.stateNode===i){var a=yd((i[rt]||null).action),o=r.submitter;o&&(t=(t=o[rt]||null)?yd(t.formAction):o.getAttribute(`formAction`),t!==null&&(a=t,o=null));var s=new _n(`action`,`action`,null,r,i);e.push({event:s,listeners:[{instance:null,listener:function(){if(r.defaultPrevented){if(ld!==0){var e=o?bd(i,o):new FormData(i);Cs(n,{pending:!0,data:e,method:i.method,action:a},null,e)}}else typeof a==`function`&&(s.preventDefault(),e=o?bd(i,o):new FormData(i),Cs(n,{pending:!0,data:e,method:i.method,action:a},a,e))},currentTarget:i}]})}}for(var Sd=0;Sd<Wr.length;Sd++){var Cd=Wr[Sd];Gr(Cd.toLowerCase(),`on`+(Cd[0].toUpperCase()+Cd.slice(1)))}Gr(Ir,`onAnimationEnd`),Gr(Lr,`onAnimationIteration`),Gr(Rr,`onAnimationStart`),Gr(`dblclick`,`onDoubleClick`),Gr(`focusin`,`onFocus`),Gr(`focusout`,`onBlur`),Gr(zr,`onTransitionRun`),Gr(Br,`onTransitionStart`),Gr(Vr,`onTransitionCancel`),Gr(Hr,`onTransitionEnd`),yt(`onMouseEnter`,[`mouseout`,`mouseover`]),yt(`onMouseLeave`,[`mouseout`,`mouseover`]),yt(`onPointerEnter`,[`pointerout`,`pointerover`]),yt(`onPointerLeave`,[`pointerout`,`pointerover`]),vt(`onChange`,`change click focusin focusout input keydown keyup selectionchange`.split(` `)),vt(`onSelect`,`focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange`.split(` `)),vt(`onBeforeInput`,[`compositionend`,`keypress`,`textInput`,`paste`]),vt(`onCompositionEnd`,`compositionend focusout keydown keypress keyup mousedown`.split(` `)),vt(`onCompositionStart`,`compositionstart focusout keydown keypress keyup mousedown`.split(` `)),vt(`onCompositionUpdate`,`compositionupdate focusout keydown keypress keyup mousedown`.split(` `));var wd=`abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting`.split(` `),Td=new Set(`beforetoggle cancel close invalid load scroll scrollend toggle`.split(` `).concat(wd));function Ed(e,t){t=!!(t&4);for(var n=0;n<e.length;n++){var r=e[n],i=r.event;r=r.listeners;a:{var a=void 0;if(t)for(var o=r.length-1;0<=o;o--){var s=r[o],c=s.instance,l=s.currentTarget;if(s=s.listener,c!==a&&i.isPropagationStopped())break a;a=s,i.currentTarget=l;try{a(i)}catch(e){Kr(e)}i.currentTarget=null,a=c}else for(o=0;o<r.length;o++){if(s=r[o],c=s.instance,l=s.currentTarget,s=s.listener,c!==a&&i.isPropagationStopped())break a;a=s,i.currentTarget=l;try{a(i)}catch(e){Kr(e)}i.currentTarget=null,a=c}}}}function Dd(e,t){var n=t[at];n===void 0&&(n=t[at]=new Set);var r=e+`__bubble`;n.has(r)||(jd(t,e,2,!1),n.add(r))}function Od(e,t,n){var r=0;t&&(r|=4),jd(n,e,r,t)}var kd=`_reactListening`+Math.random().toString(36).slice(2);function Ad(e){if(!e[kd]){e[kd]=!0,gt.forEach(function(t){t!==`selectionchange`&&(Td.has(t)||Od(t,!1,e),Od(t,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[kd]||(t[kd]=!0,Od(`selectionchange`,!1,t))}}function jd(e,t,n,r){switch(Cp(t)){case 2:var i=_p;break;case 8:i=vp;break;default:i=yp}n=i.bind(null,t,n,e),i=void 0,!on||t!==`touchstart`&&t!==`touchmove`&&t!==`wheel`||(i=!0),r?i===void 0?e.addEventListener(t,n,!0):e.addEventListener(t,n,{capture:!0,passive:i}):i===void 0?e.addEventListener(t,n,!1):e.addEventListener(t,n,{passive:i})}function Md(e,t,n,r,i){var a=r;if(!(t&1)&&!(t&2)&&r!==null)a:for(;;){if(r===null)return;var s=r.tag;if(s===3||s===4){var c=r.stateNode.containerInfo;if(c===i)break;if(s===4)for(s=r.return;s!==null;){var l=s.tag;if((l===3||l===4)&&s.stateNode.containerInfo===i)return;s=s.return}for(;c!==null;){if(s=dt(c),s===null)return;if(l=s.tag,l===5||l===6||l===26||l===27){r=a=s;continue a}c=c.parentNode}}r=r.return}nn(function(){var r=a,i=Zt(n),s=[];a:{var c=Ur.get(e);if(c!==void 0){var l=_n,u=e;switch(e){case`keypress`:if(fn(n)===0)break a;case`keydown`:case`keyup`:l=Fn;break;case`focusin`:u=`focus`,l=En;break;case`focusout`:u=`blur`,l=En;break;case`beforeblur`:case`afterblur`:l=En;break;case`click`:if(n.button===2)break a;case`auxclick`:case`dblclick`:case`mousedown`:case`mousemove`:case`mouseup`:case`mouseout`:case`mouseover`:case`contextmenu`:l=wn;break;case`drag`:case`dragend`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`dragstart`:case`drop`:l=Tn;break;case`touchcancel`:case`touchend`:case`touchmove`:case`touchstart`:l=Ln;break;case Ir:case Lr:case Rr:l=Dn;break;case Hr:l=Rn;break;case`scroll`:case`scrollend`:l=yn;break;case`wheel`:l=zn;break;case`copy`:case`cut`:case`paste`:l=On;break;case`gotpointercapture`:case`lostpointercapture`:case`pointercancel`:case`pointerdown`:case`pointermove`:case`pointerout`:case`pointerover`:case`pointerup`:l=In;break;case`toggle`:case`beforetoggle`:l=Bn}var d=!!(t&4),f=!d&&(e===`scroll`||e===`scrollend`),p=d?c===null?null:c+`Capture`:c;d=[];for(var m=r,h;m!==null;){var g=m;if(h=g.stateNode,g=g.tag,g!==5&&g!==26&&g!==27||h===null||p===null||(g=rn(m,p),g!=null&&d.push(Nd(m,g,h))),f)break;m=m.return}0<d.length&&(c=new l(c,u,null,n,i),s.push({event:c,listeners:d}))}}if(!(t&7)){a:{if(c=e===`mouseover`||e===`pointerover`,l=e===`mouseout`||e===`pointerout`,c&&n!==Xt&&(u=n.relatedTarget||n.fromElement)&&(dt(u)||u[it]))break a;if((l||c)&&(c=i.window===i?i:(c=i.ownerDocument)?c.defaultView||c.parentWindow:window,l?(u=n.relatedTarget||n.toElement,l=r,u=u?dt(u):null,u!==null&&(f=o(u),d=u.tag,u!==f||d!==5&&d!==27&&d!==6)&&(u=null)):(l=null,u=r),l!==u)){if(d=wn,g=`onMouseLeave`,p=`onMouseEnter`,m=`mouse`,(e===`pointerout`||e===`pointerover`)&&(d=In,g=`onPointerLeave`,p=`onPointerEnter`,m=`pointer`),f=l==null?c:pt(l),h=u==null?c:pt(u),c=new d(g,m+`leave`,l,n,i),c.target=f,c.relatedTarget=h,g=null,dt(i)===r&&(d=new d(p,m+`enter`,u,n,i),d.target=h,d.relatedTarget=f,g=d),f=g,l&&u)b:{for(d=Fd,p=l,m=u,h=0,g=p;g;g=d(g))h++;g=0;for(var _=m;_;_=d(_))g++;for(;0<h-g;)p=d(p),h--;for(;0<g-h;)m=d(m),g--;for(;h--;){if(p===m||m!==null&&p===m.alternate){d=p;break b}p=d(p),m=d(m)}d=null}else d=null;l!==null&&Id(s,c,l,d,!1),u!==null&&f!==null&&Id(s,f,u,d,!0)}}a:{if(c=r?pt(r):window,l=c.nodeName&&c.nodeName.toLowerCase(),l===`select`||l===`input`&&c.type===`file`)var v=or;else if(er(c)){if(sr)v=gr;else{v=mr;var y=pr}}else l=c.nodeName,!l||l.toLowerCase()!==`input`||c.type!==`checkbox`&&c.type!==`radio`?r&&Gt(r.elementType)&&(v=or):v=hr;if(v&&=v(e,r)){tr(s,v,n,i);break a}y&&y(e,c,r),e===`focusout`&&r&&c.type===`number`&&r.memoizedProps.value!=null&&Lt(c,`number`,c.value)}switch(y=r?pt(r):window,e){case`focusin`:(er(y)||y.contentEditable===`true`)&&(Er=y,Dr=r,Or=null);break;case`focusout`:Or=Dr=Er=null;break;case`mousedown`:kr=!0;break;case`contextmenu`:case`mouseup`:case`dragend`:kr=!1,Ar(s,n,i);break;case`selectionchange`:if(Tr)break;case`keydown`:case`keyup`:Ar(s,n,i)}var b;if(Hn)b:{switch(e){case`compositionstart`:var x=`onCompositionStart`;break b;case`compositionend`:x=`onCompositionEnd`;break b;case`compositionupdate`:x=`onCompositionUpdate`;break b}x=void 0}else Xn?Jn(e,n)&&(x=`onCompositionEnd`):e===`keydown`&&n.keyCode===229&&(x=`onCompositionStart`);x&&(Gn&&n.locale!==`ko`&&(Xn||x!==`onCompositionStart`?x===`onCompositionEnd`&&Xn&&(b=dn()):(cn=i,ln=`value`in cn?cn.value:cn.textContent,Xn=!0)),y=Pd(r,x),0<y.length&&(x=new kn(x,e,null,n,i),s.push({event:x,listeners:y}),b?x.data=b:(b=Yn(n),b!==null&&(x.data=b)))),(b=Wn?Zn(e,n):Qn(e,n))&&(x=Pd(r,`onBeforeInput`),0<x.length&&(y=new kn(`onBeforeInput`,`beforeinput`,null,n,i),s.push({event:y,listeners:x}),y.data=b)),xd(s,e,r,n,i)}Ed(s,t)})}function Nd(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Pd(e,t){for(var n=t+`Capture`,r=[];e!==null;){var i=e,a=i.stateNode;if(i=i.tag,i!==5&&i!==26&&i!==27||a===null||(i=rn(e,n),i!=null&&r.unshift(Nd(e,i,a)),i=rn(e,t),i!=null&&r.push(Nd(e,i,a))),e.tag===3)return r;e=e.return}return[]}function Fd(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Id(e,t,n,r,i){for(var a=t._reactName,o=[];n!==null&&n!==r;){var s=n,c=s.alternate,l=s.stateNode;if(s=s.tag,c!==null&&c===r)break;s!==5&&s!==26&&s!==27||l===null||(c=l,i?(l=rn(n,a),l!=null&&o.unshift(Nd(n,l,c))):i||(l=rn(n,a),l!=null&&o.push(Nd(n,l,c)))),n=n.return}o.length!==0&&e.push({event:t,listeners:o})}var Ld=/\r\n?/g,Rd=/\u0000|\uFFFD/g;function zd(e){return(typeof e==`string`?e:``+e).replace(Ld,`
|
|
9
|
+
`).replace(Rd,``)}function Bd(e,t){return t=zd(t),zd(e)===t}function Vd(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Vt(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Vt(e,``+r);break;case`className`:Tt(e,`class`,r);break;case`tabIndex`:Tt(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:Tt(e,n,r);break;case`style`:Wt(e,r,o);break;case`data`:if(t!==`object`){Tt(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)){e.removeAttribute(n);break}if(r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=Jt(``+r),e.setAttribute(n,r);break;case`action`:case`formAction`:if(typeof r==`function`){e.setAttribute(n,`javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')`);break}if(typeof o==`function`&&(n===`formAction`?(t!==`input`&&Vd(e,t,`name`,a.name,a,null),Vd(e,t,`formEncType`,a.formEncType,a,null),Vd(e,t,`formMethod`,a.formMethod,a,null),Vd(e,t,`formTarget`,a.formTarget,a,null)):(Vd(e,t,`encType`,a.encType,a,null),Vd(e,t,`method`,a.method,a,null),Vd(e,t,`target`,a.target,a,null))),r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=Jt(``+r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=Yt);break;case`onScroll`:r!=null&&Dd(`scroll`,e);break;case`onScrollEnd`:r!=null&&Dd(`scrollend`,e);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`multiple`:e.multiple=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`muted`:e.muted=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`ref`:break;case`autoFocus`:break;case`xlinkHref`:if(r==null||typeof r==`function`||typeof r==`boolean`||typeof r==`symbol`){e.removeAttribute(`xlink:href`);break}n=Jt(``+r),e.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,n);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``+r):e.removeAttribute(n);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:r&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``):e.removeAttribute(n);break;case`capture`:case`download`:!0===r?e.setAttribute(n,``):!1!==r&&r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`cols`:case`rows`:case`size`:case`span`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case`rowSpan`:case`start`:r==null||typeof r==`function`||typeof r==`symbol`||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case`popover`:Dd(`beforetoggle`,e),Dd(`toggle`,e),wt(e,`popover`,r);break;case`xlinkActuate`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:Et(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:Et(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:Et(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:Et(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:wt(e,`is`,r);break;case`innerText`:case`textContent`:break;default:(!(2<n.length)||n[0]!==`o`&&n[0]!==`O`||n[1]!==`n`&&n[1]!==`N`)&&(n=Kt.get(n)||n,wt(e,n,r))}}function Hd(e,t,n,r,a,o){switch(n){case`style`:Wt(e,r,o);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`children`:typeof r==`string`?Vt(e,r):(typeof r==`number`||typeof r==`bigint`)&&Vt(e,``+r);break;case`onScroll`:r!=null&&Dd(`scroll`,e);break;case`onScrollEnd`:r!=null&&Dd(`scrollend`,e);break;case`onClick`:r!=null&&(e.onclick=Yt);break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`innerHTML`:case`ref`:break;case`innerText`:case`textContent`:break;default:if(!_t.hasOwnProperty(n))a:{if(n[0]===`o`&&n[1]===`n`&&(a=n.endsWith(`Capture`),t=n.slice(2,a?n.length-7:void 0),o=e[rt]||null,o=o==null?null:o[n],typeof o==`function`&&e.removeEventListener(t,o,a),typeof r==`function`)){typeof o!=`function`&&o!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,r,a);break a}n in e?e[n]=r:!0===r?e.setAttribute(n,``):wt(e,n,r)}}}function Ud(e,t,n){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`img`:Dd(`error`,e),Dd(`load`,e);var r=!1,a=!1,o;for(o in n)if(n.hasOwnProperty(o)){var s=n[o];if(s!=null)switch(o){case`src`:r=!0;break;case`srcSet`:a=!0;break;case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:Vd(e,t,o,s,n,null)}}a&&Vd(e,t,`srcSet`,n.srcSet,n,null),r&&Vd(e,t,`src`,n.src,n,null);return;case`input`:Dd(`invalid`,e);var c=o=s=a=null,l=null,u=null;for(r in n)if(n.hasOwnProperty(r)){var d=n[r];if(d!=null)switch(r){case`name`:a=d;break;case`type`:s=d;break;case`checked`:l=d;break;case`defaultChecked`:u=d;break;case`value`:o=d;break;case`defaultValue`:c=d;break;case`children`:case`dangerouslySetInnerHTML`:if(d!=null)throw Error(i(137,t));break;default:Vd(e,t,r,d,n,null)}}It(e,o,c,l,u,s,a,!1);return;case`select`:for(a in Dd(`invalid`,e),r=s=o=null,n)if(n.hasOwnProperty(a)&&(c=n[a],c!=null))switch(a){case`value`:o=c;break;case`defaultValue`:s=c;break;case`multiple`:r=c;default:Vd(e,t,a,c,n,null)}t=o,n=s,e.multiple=!!r,t==null?n!=null&&Rt(e,!!r,n,!0):Rt(e,!!r,t,!1);return;case`textarea`:for(s in Dd(`invalid`,e),o=a=r=null,n)if(n.hasOwnProperty(s)&&(c=n[s],c!=null))switch(s){case`value`:r=c;break;case`defaultValue`:a=c;break;case`children`:o=c;break;case`dangerouslySetInnerHTML`:if(c!=null)throw Error(i(91));break;default:Vd(e,t,s,c,n,null)}Bt(e,r,a,o);return;case`option`:for(l in n)if(n.hasOwnProperty(l)&&(r=n[l],r!=null))switch(l){case`selected`:e.selected=r&&typeof r!=`function`&&typeof r!=`symbol`;break;default:Vd(e,t,l,r,n,null)}return;case`dialog`:Dd(`beforetoggle`,e),Dd(`toggle`,e),Dd(`cancel`,e),Dd(`close`,e);break;case`iframe`:case`object`:Dd(`load`,e);break;case`video`:case`audio`:for(r=0;r<wd.length;r++)Dd(wd[r],e);break;case`image`:Dd(`error`,e),Dd(`load`,e);break;case`details`:Dd(`toggle`,e);break;case`embed`:case`source`:case`link`:Dd(`error`,e),Dd(`load`,e);case`area`:case`base`:case`br`:case`col`:case`hr`:case`keygen`:case`meta`:case`param`:case`track`:case`wbr`:case`menuitem`:for(u in n)if(n.hasOwnProperty(u)&&(r=n[u],r!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:Vd(e,t,u,r,n,null)}return;default:if(Gt(t)){for(d in n)n.hasOwnProperty(d)&&(r=n[d],r!==void 0&&Hd(e,t,d,r,n,void 0));return}}for(c in n)n.hasOwnProperty(c)&&(r=n[c],r!=null&&Vd(e,t,c,r,n,null))}function Wd(e,t,n,r){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`input`:var a=null,o=null,s=null,c=null,l=null,u=null,d=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&f!=null)switch(m){case`checked`:break;case`value`:break;case`defaultValue`:l=f;default:r.hasOwnProperty(m)||Vd(e,t,m,null,r,f)}}for(var p in r){var m=r[p];if(f=n[p],r.hasOwnProperty(p)&&(m!=null||f!=null))switch(p){case`type`:o=m;break;case`name`:a=m;break;case`checked`:u=m;break;case`defaultChecked`:d=m;break;case`value`:s=m;break;case`defaultValue`:c=m;break;case`children`:case`dangerouslySetInnerHTML`:if(m!=null)throw Error(i(137,t));break;default:m!==f&&Vd(e,t,p,m,r,f)}}Ft(e,s,c,l,u,d,o,a);return;case`select`:for(o in m=s=c=p=null,n)if(l=n[o],n.hasOwnProperty(o)&&l!=null)switch(o){case`value`:break;case`multiple`:m=l;default:r.hasOwnProperty(o)||Vd(e,t,o,null,r,l)}for(a in r)if(o=r[a],l=n[a],r.hasOwnProperty(a)&&(o!=null||l!=null))switch(a){case`value`:p=o;break;case`defaultValue`:c=o;break;case`multiple`:s=o;default:o!==l&&Vd(e,t,a,o,r,l)}t=c,n=s,r=m,p==null?!!r!=!!n&&(t==null?Rt(e,!!n,n?[]:``,!1):Rt(e,!!n,t,!0)):Rt(e,!!n,p,!1);return;case`textarea`:for(c in m=p=null,n)if(a=n[c],n.hasOwnProperty(c)&&a!=null&&!r.hasOwnProperty(c))switch(c){case`value`:break;case`children`:break;default:Vd(e,t,c,null,r,a)}for(s in r)if(a=r[s],o=n[s],r.hasOwnProperty(s)&&(a!=null||o!=null))switch(s){case`value`:p=a;break;case`defaultValue`:m=a;break;case`children`:break;case`dangerouslySetInnerHTML`:if(a!=null)throw Error(i(91));break;default:a!==o&&Vd(e,t,s,a,r,o)}zt(e,p,m);return;case`option`:for(var h in n)if(p=n[h],n.hasOwnProperty(h)&&p!=null&&!r.hasOwnProperty(h))switch(h){case`selected`:e.selected=!1;break;default:Vd(e,t,h,null,r,p)}for(l in r)if(p=r[l],m=n[l],r.hasOwnProperty(l)&&p!==m&&(p!=null||m!=null))switch(l){case`selected`:e.selected=p&&typeof p!=`function`&&typeof p!=`symbol`;break;default:Vd(e,t,l,p,r,m)}return;case`img`:case`link`:case`area`:case`base`:case`br`:case`col`:case`embed`:case`hr`:case`keygen`:case`meta`:case`param`:case`source`:case`track`:case`wbr`:case`menuitem`:for(var g in n)p=n[g],n.hasOwnProperty(g)&&p!=null&&!r.hasOwnProperty(g)&&Vd(e,t,g,null,r,p);for(u in r)if(p=r[u],m=n[u],r.hasOwnProperty(u)&&p!==m&&(p!=null||m!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:if(p!=null)throw Error(i(137,t));break;default:Vd(e,t,u,p,r,m)}return;default:if(Gt(t)){for(var _ in n)p=n[_],n.hasOwnProperty(_)&&p!==void 0&&!r.hasOwnProperty(_)&&Hd(e,t,_,void 0,r,p);for(d in r)p=r[d],m=n[d],!r.hasOwnProperty(d)||p===m||p===void 0&&m===void 0||Hd(e,t,d,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&p!=null&&!r.hasOwnProperty(v)&&Vd(e,t,v,null,r,p);for(f in r)p=r[f],m=n[f],!r.hasOwnProperty(f)||p===m||p==null&&m==null||Vd(e,t,f,p,r,m)}function Gd(e){switch(e){case`css`:case`script`:case`font`:case`img`:case`image`:case`input`:case`link`:return!0;default:return!1}}function Kd(){if(typeof performance.getEntriesByType==`function`){for(var e=0,t=0,n=performance.getEntriesByType(`resource`),r=0;r<n.length;r++){var i=n[r],a=i.transferSize,o=i.initiatorType,s=i.duration;if(a&&s&&Gd(o)){for(o=0,s=i.responseEnd,r+=1;r<n.length;r++){var c=n[r],l=c.startTime;if(l>s)break;var u=c.transferSize,d=c.initiatorType;u&&Gd(d)&&(c=c.responseEnd,o+=u*(c<s?1:(s-l)/(c-l)))}if(--r,t+=8*(a+o)/(i.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e==`number`)?e:5}var qd=null,Jd=null;function Yd(e){return e.nodeType===9?e:e.ownerDocument}function Xd(e){switch(e){case`http://www.w3.org/2000/svg`:return 1;case`http://www.w3.org/1998/Math/MathML`:return 2;default:return 0}}function Zd(e,t){if(e===0)switch(t){case`svg`:return 1;case`math`:return 2;default:return 0}return e===1&&t===`foreignObject`?0:e}function Qd(e,t){return e===`textarea`||e===`noscript`||typeof t.children==`string`||typeof t.children==`number`||typeof t.children==`bigint`||typeof t.dangerouslySetInnerHTML==`object`&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var $d=null;function ef(){var e=window.event;return e&&e.type===`popstate`?e!==$d&&($d=e,!0):($d=null,!1)}var tf=typeof setTimeout==`function`?setTimeout:void 0,nf=typeof clearTimeout==`function`?clearTimeout:void 0,rf=typeof Promise==`function`?Promise:void 0,af=typeof queueMicrotask==`function`?queueMicrotask:rf===void 0?tf:function(e){return rf.resolve(null).then(e).catch(of)};function of(e){setTimeout(function(){throw e})}function sf(e){return e===`head`}function cf(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8){if(n=i.data,n===`/$`||n===`/&`){if(r===0){e.removeChild(i),Hp(t);return}r--}else if(n===`$`||n===`$?`||n===`$~`||n===`$!`||n===`&`)r++;else if(n===`html`)Sf(e.ownerDocument.documentElement);else if(n===`head`){n=e.ownerDocument.head,Sf(n);for(var a=n.firstChild;a;){var o=a.nextSibling,s=a.nodeName;a[lt]||s===`SCRIPT`||s===`STYLE`||s===`LINK`&&a.rel.toLowerCase()===`stylesheet`||n.removeChild(a),a=o}}else n===`body`&&Sf(e.ownerDocument.body)}n=i}while(n);Hp(t)}function lf(e,t){var n=e;e=0;do{var r=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display=`none`):(n.style.display=n._stashedDisplay||``,n.getAttribute(`style`)===``&&n.removeAttribute(`style`)):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=``):n.nodeValue=n._stashedText||``),r&&r.nodeType===8){if(n=r.data,n===`/$`){if(e===0)break;e--}else n!==`$`&&n!==`$?`&&n!==`$~`&&n!==`$!`||e++}n=r}while(n)}function uf(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case`HTML`:case`HEAD`:case`BODY`:uf(n),ut(n);continue;case`SCRIPT`:case`STYLE`:continue;case`LINK`:if(n.rel.toLowerCase()===`stylesheet`)continue}e.removeChild(n)}}function df(e,t,n,r){for(;e.nodeType===1;){var i=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&(e.nodeName!==`INPUT`||e.type!==`hidden`))break}else if(!r){if(t===`input`&&e.type===`hidden`){var a=i.name==null?null:``+i.name;if(i.type===`hidden`&&e.getAttribute(`name`)===a)return e}else return e}else if(!e[lt])switch(t){case`meta`:if(!e.hasAttribute(`itemprop`))break;return e;case`link`:if(a=e.getAttribute(`rel`),a===`stylesheet`&&e.hasAttribute(`data-precedence`)||a!==i.rel||e.getAttribute(`href`)!==(i.href==null||i.href===``?null:i.href)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin)||e.getAttribute(`title`)!==(i.title==null?null:i.title))break;return e;case`style`:if(e.hasAttribute(`data-precedence`))break;return e;case`script`:if(a=e.getAttribute(`src`),(a!==(i.src==null?null:i.src)||e.getAttribute(`type`)!==(i.type==null?null:i.type)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin))&&a&&e.hasAttribute(`async`)&&!e.hasAttribute(`itemprop`))break;return e;default:return e}if(e=_f(e.nextSibling),e===null)break}return null}function ff(e,t,n){if(t===``)return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!n||(e=_f(e.nextSibling),e===null))return null;return e}function pf(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!t||(e=_f(e.nextSibling),e===null))return null;return e}function mf(e){return e.data===`$?`||e.data===`$~`}function hf(e){return e.data===`$!`||e.data===`$?`&&e.ownerDocument.readyState!==`loading`}function gf(e,t){var n=e.ownerDocument;if(e.data===`$~`)e._reactRetry=t;else if(e.data!==`$?`||n.readyState!==`loading`)t();else{var r=function(){t(),n.removeEventListener(`DOMContentLoaded`,r)};n.addEventListener(`DOMContentLoaded`,r),e._reactRetry=r}}function _f(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t===`$`||t===`$!`||t===`$?`||t===`$~`||t===`&`||t===`F!`||t===`F`)break;if(t===`/$`||t===`/&`)return null}}return e}var vf=null;function yf(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`/$`||n===`/&`){if(t===0)return _f(e.nextSibling);t--}else n!==`$`&&n!==`$!`&&n!==`$?`&&n!==`$~`&&n!==`&`||t++}e=e.nextSibling}return null}function bf(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`$`||n===`$!`||n===`$?`||n===`$~`||n===`&`){if(t===0)return e;t--}else n!==`/$`&&n!==`/&`||t++}e=e.previousSibling}return null}function xf(e,t,n){switch(t=Yd(n),e){case`html`:if(e=t.documentElement,!e)throw Error(i(452));return e;case`head`:if(e=t.head,!e)throw Error(i(453));return e;case`body`:if(e=t.body,!e)throw Error(i(454));return e;default:throw Error(i(451))}}function Sf(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);ut(e)}var Cf=new Map,wf=new Set;function Tf(e){return typeof e.getRootNode==`function`?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var Ef=I.d;I.d={f:Df,r:Of,D:jf,C:Mf,L:Nf,m:Pf,X:If,S:Ff,M:Lf};function Df(){var e=Ef.f(),t=Eu();return e||t}function Of(e){var t=ft(e);t!==null&&t.tag===5&&t.type===`form`?Ts(t):Ef.r(e)}var kf=typeof document>`u`?null:document;function Af(e,t,n){var r=kf;if(r&&typeof t==`string`&&t){var i=Pt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),wf.has(i)||(wf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Ud(t,`link`,e),ht(t),r.head.appendChild(t)))}}function jf(e){Ef.D(e),Af(`dns-prefetch`,e,null)}function Mf(e,t){Ef.C(e,t),Af(`preconnect`,e,t)}function Nf(e,t,n){Ef.L(e,t,n);var r=kf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Pt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Pt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Pt(n.imageSizes)+`"]`)):i+=`[href="`+Pt(e)+`"]`;var a=i;switch(t){case`style`:a=zf(e);break;case`script`:a=Uf(e)}Cf.has(a)||(e=m({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),Cf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Bf(a))||t===`script`&&r.querySelector(Wf(a))||(t=r.createElement(`link`),Ud(t,`link`,e),ht(t),r.head.appendChild(t)))}}function Pf(e,t){Ef.m(e,t);var n=kf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Pt(r)+`"][href="`+Pt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Uf(e)}if(!Cf.has(a)&&(e=m({rel:`modulepreload`,href:e},t),Cf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Wf(a)))return}r=n.createElement(`link`),Ud(r,`link`,e),ht(r),n.head.appendChild(r)}}}function Ff(e,t,n){Ef.S(e,t,n);var r=kf;if(r&&e){var i=mt(r).hoistableStyles,a=zf(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Bf(a)))s.loading=5;else{e=m({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=Cf.get(a))&&qf(e,n);var c=o=r.createElement(`link`);ht(c),Ud(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Kf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function If(e,t){Ef.X(e,t);var n=kf;if(n&&e){var r=mt(n).hoistableScripts,i=Uf(e),a=r.get(i);a||(a=n.querySelector(Wf(i)),a||(e=m({src:e,async:!0},t),(t=Cf.get(i))&&Jf(e,t),a=n.createElement(`script`),ht(a),Ud(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Lf(e,t){Ef.M(e,t);var n=kf;if(n&&e){var r=mt(n).hoistableScripts,i=Uf(e),a=r.get(i);a||(a=n.querySelector(Wf(i)),a||(e=m({src:e,async:!0,type:`module`},t),(t=Cf.get(i))&&Jf(e,t),a=n.createElement(`script`),ht(a),Ud(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Rf(e,t,n,r){var a=(a=ae.current)?Tf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=zf(n.href),n=mt(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=zf(n.href);var o=mt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Bf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),Cf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Cf.set(e,n),o||Hf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Uf(n),n=mt(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function zf(e){return`href="`+Pt(e)+`"`}function Bf(e){return`link[rel="stylesheet"][`+e+`]`}function Vf(e){return m({},e,{"data-precedence":e.precedence,precedence:null})}function Hf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Ud(t,`link`,n),ht(t),e.head.appendChild(t))}function Uf(e){return`[src="`+Pt(e)+`"]`}function Wf(e){return`script[async]`+e}function Gf(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Pt(n.href)+`"]`);if(r)return t.instance=r,ht(r),r;var a=m({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),ht(r),Ud(r,`style`,a),Kf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=zf(n.href);var o=e.querySelector(Bf(a));if(o)return t.state.loading|=4,t.instance=o,ht(o),o;r=Vf(n),(a=Cf.get(a))&&qf(r,a),o=(e.ownerDocument||e).createElement(`link`),ht(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Ud(o,`link`,r),t.state.loading|=4,Kf(o,n.precedence,e),t.instance=o;case`script`:return o=Uf(n.src),(a=e.querySelector(Wf(o)))?(t.instance=a,ht(a),a):(r=n,(a=Cf.get(o))&&(r=m({},n),Jf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),ht(a),Ud(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Kf(r,n.precedence,e));return t.instance}function Kf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o<r.length;o++){var s=r[o];if(s.dataset.precedence===t)a=s;else if(a!==i)break}a?a.parentNode.insertBefore(e,a.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function qf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.title??=t.title}function Jf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.integrity??=t.integrity}var Yf=null;function Xf(e,t,n){if(Yf===null){var r=new Map,i=Yf=new Map;i.set(n,r)}else i=Yf,r=i.get(n),r||(r=new Map,i.set(n,r));if(r.has(e))return r;for(r.set(e,null),n=n.getElementsByTagName(e),i=0;i<n.length;i++){var a=n[i];if(!(a[lt]||a[nt]||e===`link`&&a.getAttribute(`rel`)===`stylesheet`)&&a.namespaceURI!==`http://www.w3.org/2000/svg`){var o=a.getAttribute(t)||``;o=e+o;var s=r.get(o);s?s.push(a):r.set(o,[a])}}return r}function Zf(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t===`title`?e.querySelector(`head > title`):null)}function Qf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function $f(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function ep(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=zf(r.href),a=t.querySelector(Bf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=rp.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,ht(a);return}a=t.ownerDocument||t,r=Vf(r),(i=Cf.get(i))&&qf(r,i),a=a.createElement(`link`),ht(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Ud(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=rp.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var tp=0;function np(e,t){return e.stylesheets&&e.count===0&&ap(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var r=setTimeout(function(){if(e.stylesheets&&ap(e,e.stylesheets),e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}},6e4+t);0<e.imgBytes&&tp===0&&(tp=62500*Kd());var i=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&ap(e,e.stylesheets),e.unsuspend)){var t=e.unsuspend;e.unsuspend=null,t()}},(e.imgBytes>tp?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function rp(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)ap(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var ip=null;function ap(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ip=new Map,t.forEach(op,e),ip=null,rp.call(e))}function op(e,t){if(!(t.state.loading&4)){var n=ip.get(e);if(n)var r=n.get(null);else{n=new Map,ip.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a<i.length;a++){var o=i[a];(o.nodeName===`LINK`||o.getAttribute(`media`)!==`not all`)&&(n.set(o.dataset.precedence,o),r=o)}r&&n.set(null,r)}i=t.instance,o=i.getAttribute(`data-precedence`),a=n.get(o)||r,a===r&&n.set(null,i),n.set(o,i),this.count++,r=rp.bind(this),i.addEventListener(`load`,r),i.addEventListener(`error`,r),a?a.parentNode.insertBefore(i,a.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(i,e.firstChild)),t.state.loading|=4}}var sp={$$typeof:C,Provider:null,Consumer:null,_currentValue:te,_currentValue2:te,_threadCount:0};function cp(e,t,n,r,i,a,o,s,c){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Ge(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ge(0),this.hiddenUpdates=Ge(null),this.identifierPrefix=r,this.onUncaughtError=i,this.onCaughtError=a,this.onRecoverableError=o,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=c,this.incompleteTransitions=new Map}function lp(e,t,n,r,i,a,o,s,c,l,u,d){return e=new cp(e,t,n,o,c,l,u,d,s),t=1,!0===a&&(t|=24),a=ii(3,null,null,t),e.current=a,a.stateNode=e,t=aa(),t.refCount++,e.pooledCache=t,t.refCount++,a.memoizedState={element:r,isDehydrated:n,cache:t},Ra(a),e}function up(e){return e?(e=ni,e):ni}function dp(e,t,n,r,i,a){i=up(i),r.context===null?r.context=i:r.pendingContext=i,r=Ba(t),r.payload={element:n},a=a===void 0?null:a,a!==null&&(r.callback=a),n=Va(e,r,t),n!==null&&(xu(n,e,t),Ha(n,e,t))}function fp(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function pp(e,t){fp(e,t),(e=e.alternate)&&fp(e,t)}function mp(e){if(e.tag===13||e.tag===31){var t=$r(e,67108864);t!==null&&xu(t,e,67108864),pp(e,67108864)}}function hp(e){if(e.tag===13||e.tag===31){var t=yu();t=Ze(t);var n=$r(e,t);n!==null&&xu(n,e,t),pp(e,t)}}var gp=!0;function _p(e,t,n,r){var i=F.T;F.T=null;var a=I.p;try{I.p=2,yp(e,t,n,r)}finally{I.p=a,F.T=i}}function vp(e,t,n,r){var i=F.T;F.T=null;var a=I.p;try{I.p=8,yp(e,t,n,r)}finally{I.p=a,F.T=i}}function yp(e,t,n,r){if(gp){var i=bp(r);if(i===null)Md(e,t,r,xp,n),Mp(e,r);else if(Pp(i,e,t,n,r))r.stopPropagation();else if(Mp(e,r),t&4&&-1<jp.indexOf(e)){for(;i!==null;){var a=ft(i);if(a!==null)switch(a.tag){case 3:if(a=a.stateNode,a.current.memoizedState.isDehydrated){var o=Ve(a.pendingLanes);if(o!==0){var s=a;for(s.pendingLanes|=2,s.entangledLanes|=2;o;){var c=1<<31-Fe(o);s.entanglements[1]|=c,o&=~c}ud(a),!(Bl&6)&&(su=Ce()+500,dd(0,!1))}}break;case 31:case 13:s=$r(a,2),s!==null&&xu(s,a,2),Eu(),pp(a,2)}if(a=bp(r),a===null&&Md(e,t,r,xp,n),a===i)break;i=a}i!==null&&r.stopPropagation()}else Md(e,t,r,null,n)}}function bp(e){return e=Zt(e),Sp(e)}var xp=null;function Sp(e){if(xp=null,e=dt(e),e!==null){var t=o(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=s(t),e!==null)return e;e=null}else if(n===31){if(e=c(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return xp=e,null}function Cp(e){switch(e){case`beforetoggle`:case`cancel`:case`click`:case`close`:case`contextmenu`:case`copy`:case`cut`:case`auxclick`:case`dblclick`:case`dragend`:case`dragstart`:case`drop`:case`focusin`:case`focusout`:case`input`:case`invalid`:case`keydown`:case`keypress`:case`keyup`:case`mousedown`:case`mouseup`:case`paste`:case`pause`:case`play`:case`pointercancel`:case`pointerdown`:case`pointerup`:case`ratechange`:case`reset`:case`resize`:case`seeked`:case`submit`:case`toggle`:case`touchcancel`:case`touchend`:case`touchstart`:case`volumechange`:case`change`:case`selectionchange`:case`textInput`:case`compositionstart`:case`compositionend`:case`compositionupdate`:case`beforeblur`:case`afterblur`:case`beforeinput`:case`blur`:case`fullscreenchange`:case`focus`:case`hashchange`:case`popstate`:case`select`:case`selectstart`:return 2;case`drag`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`mousemove`:case`mouseout`:case`mouseover`:case`pointermove`:case`pointerout`:case`pointerover`:case`scroll`:case`touchmove`:case`wheel`:case`mouseenter`:case`mouseleave`:case`pointerenter`:case`pointerleave`:return 8;case`message`:switch(we()){case Te:return 2;case Ee:return 8;case De:case Oe:return 32;case ke:return 268435456;default:return 32}default:return 32}}var wp=!1,Tp=null,Ep=null,Dp=null,Op=new Map,kp=new Map,Ap=[],jp=`mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset`.split(` `);function Mp(e,t){switch(e){case`focusin`:case`focusout`:Tp=null;break;case`dragenter`:case`dragleave`:Ep=null;break;case`mouseover`:case`mouseout`:Dp=null;break;case`pointerover`:case`pointerout`:Op.delete(t.pointerId);break;case`gotpointercapture`:case`lostpointercapture`:kp.delete(t.pointerId)}}function Np(e,t,n,r,i,a){return e===null||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[i]},t!==null&&(t=ft(t),t!==null&&mp(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function Pp(e,t,n,r,i){switch(t){case`focusin`:return Tp=Np(Tp,e,t,n,r,i),!0;case`dragenter`:return Ep=Np(Ep,e,t,n,r,i),!0;case`mouseover`:return Dp=Np(Dp,e,t,n,r,i),!0;case`pointerover`:var a=i.pointerId;return Op.set(a,Np(Op.get(a)||null,e,t,n,r,i)),!0;case`gotpointercapture`:return a=i.pointerId,kp.set(a,Np(kp.get(a)||null,e,t,n,r,i)),!0}return!1}function Fp(e){var t=dt(e.target);if(t!==null){var n=o(t);if(n!==null){if(t=n.tag,t===13){if(t=s(n),t!==null){e.blockedOn=t,et(e.priority,function(){hp(n)});return}}else if(t===31){if(t=c(n),t!==null){e.blockedOn=t,et(e.priority,function(){hp(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Ip(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=bp(e.nativeEvent);if(n===null){n=e.nativeEvent;var r=new n.constructor(n.type,n);Xt=r,n.target.dispatchEvent(r),Xt=null}else return t=ft(n),t!==null&&mp(t),e.blockedOn=n,!1;t.shift()}return!0}function Lp(e,t,n){Ip(e)&&n.delete(t)}function Rp(){wp=!1,Tp!==null&&Ip(Tp)&&(Tp=null),Ep!==null&&Ip(Ep)&&(Ep=null),Dp!==null&&Ip(Dp)&&(Dp=null),Op.forEach(Lp),kp.forEach(Lp)}function zp(e,n){e.blockedOn===n&&(e.blockedOn=null,wp||(wp=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,Rp)))}var Bp=null;function Vp(e){Bp!==e&&(Bp=e,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){Bp===e&&(Bp=null);for(var t=0;t<e.length;t+=3){var n=e[t],r=e[t+1],i=e[t+2];if(typeof r!=`function`){if(Sp(r||n)===null)continue;break}var a=ft(n);a!==null&&(e.splice(t,3),t-=3,Cs(a,{pending:!0,data:i,method:n.method,action:r},r,i))}}))}function Hp(e){function t(t){return zp(t,e)}Tp!==null&&zp(Tp,e),Ep!==null&&zp(Ep,e),Dp!==null&&zp(Dp,e),Op.forEach(t),kp.forEach(t);for(var n=0;n<Ap.length;n++){var r=Ap[n];r.blockedOn===e&&(r.blockedOn=null)}for(;0<Ap.length&&(n=Ap[0],n.blockedOn===null);)Fp(n),n.blockedOn===null&&Ap.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(r=0;r<n.length;r+=3){var i=n[r],a=n[r+1],o=i[rt]||null;if(typeof a==`function`)o||Vp(n);else if(o){var s=null;if(a&&a.hasAttribute(`formAction`)){if(i=a,o=a[rt]||null)s=o.formAction;else if(Sp(i)!==null)continue}else s=o.action;typeof s==`function`?n[r+1]=s:(n.splice(r,3),r-=3),Vp(n)}}}function Up(){function e(e){e.canIntercept&&e.info===`react-transition`&&e.intercept({handler:function(){return new Promise(function(e){return i=e})},focusReset:`manual`,scroll:`manual`})}function t(){i!==null&&(i(),i=null),r||setTimeout(n,20)}function n(){if(!r&&!navigation.transition){var e=navigation.currentEntry;e&&e.url!=null&&navigation.navigate(e.url,{state:e.getState(),info:`react-transition`,history:`replace`})}}if(typeof navigation==`object`){var r=!1,i=null;return navigation.addEventListener(`navigate`,e),navigation.addEventListener(`navigatesuccess`,t),navigation.addEventListener(`navigateerror`,t),setTimeout(n,100),function(){r=!0,navigation.removeEventListener(`navigate`,e),navigation.removeEventListener(`navigatesuccess`,t),navigation.removeEventListener(`navigateerror`,t),i!==null&&(i(),i=null)}}}function Wp(e){this._internalRoot=e}Gp.prototype.render=Wp.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(i(409));var n=t.current;dp(n,yu(),e,t,null,null)},Gp.prototype.unmount=Wp.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;dp(e.current,2,null,e,null,null),Eu(),t[it]=null}};function Gp(e){this._internalRoot=e}Gp.prototype.unstable_scheduleHydration=function(e){if(e){var t=$e();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Ap.length&&t!==0&&t<Ap[n].priority;n++);Ap.splice(n,0,e),n===0&&Fp(e)}};var Kp=n.version;if(Kp!==`19.2.8`)throw Error(i(527,Kp,`19.2.8`));I.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render==`function`?Error(i(188)):(e=Object.keys(e).join(`,`),Error(i(268,e)));return e=u(t),e=e===null?null:f(e),e=e===null?null:e.stateNode,e};var qp={bundleType:0,version:`19.2.8`,rendererPackageName:`react-dom`,currentDispatcherRef:F,reconcilerVersion:`19.2.8`};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`){var Jp=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Jp.isDisabled&&Jp.supportsFiber)try{Me=Jp.inject(qp),Ne=Jp}catch{}}e.createRoot=function(e,t){if(!a(e))throw Error(i(299));var n=!1,r=``,o=Ks,s=qs,c=Js;return t!=null&&(!0===t.unstable_strictMode&&(n=!0),t.identifierPrefix!==void 0&&(r=t.identifierPrefix),t.onUncaughtError!==void 0&&(o=t.onUncaughtError),t.onCaughtError!==void 0&&(s=t.onCaughtError),t.onRecoverableError!==void 0&&(c=t.onRecoverableError)),t=lp(e,1,!1,null,null,n,r,null,o,s,c,Up),e[it]=t.current,Ad(e),new Wp(t)}})),_=o(((e,t)=>{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=g()})),v=d(),y=_(),b=`/api/v1/ws`,x=S()??`https://api.oonacode.oonak.ai`;function S(){return typeof OONACODE_GATEWAY_ORIGIN==`string`&&OONACODE_GATEWAY_ORIGIN.trim().length>0?OONACODE_GATEWAY_ORIGIN.trim().replace(/\/+$/,``):null}var C=[],w=`oonacode`;function T(e){return!C.includes(e)}var E=[`openrouter`,`azure-openai`,`ollama`,`kimi`];function D(e){return E.includes(e)}function O(e){return`${e===1?`one chat is`:`${e} chats are`} filed under this project — move or delete ${e===1?`it`:`them`} first`}function k(e){return e===`unverified`||e===`pending`||e===`verified`}function A(e){if(typeof e!=`object`||!e)return!1;let t=e.error;if(typeof t!=`object`||!t)return!1;let{code:n,details:r}=t;if(n!==`email_not_verified`||typeof r!=`object`||!r)return!1;let i=r;return k(i.verification)&&typeof i.email==`string`&&typeof i.resendAfterSec==`number`&&Number.isFinite(i.resendAfterSec)}var j=[{id:`build`,label:`Build`,mode:`default`},{id:`plan`,label:`Plan`,mode:`plan`},{id:`ask`,label:`Ask first`,mode:`default`},{id:`auto`,label:`Autonomous`,mode:`acceptEdits`}],M=`build`;function N(e){return e===`build`||e===`plan`||e===`ask`||e===`auto`}function ee(e){return j.find(t=>t.id===e)?.mode??`default`}function P(e){return j.find(t=>t.id===e)?.label??`Build`}function F(e){return e===`plan`?`plan`:e===`acceptEdits`?`auto`:M}function I(e,t){return N(e)&&ee(e)===(t??`default`)?e:null}function te(e){return e?I(e.posture,e.permissionMode)??F(e.permissionMode):M}function ne(e){return e===`ask`}function re(e){return e.type===`stream_event`}var L=`This session is being continued from a previous conversation`;function R(e){return typeof e==`string`&&e.length>0&&e!==`<synthetic>`}function z(e){return e.trimStart().startsWith(L)}var B=`Your response above was cut off mid-stream`;function ie(e){return e.trimStart().startsWith(B)}function ae(e){return/^\[Request interrupted by user[^\]]*\]\s*$/.test(e.trim())}var oe=[`Continue from where you left off.`,`Ultracode is on`,`workflow-authoring`,`# Workflow authoring reference`,`<system-reminder>`,`Base directory for this skill:`];function se(e){let t=e.trimStart();return oe.some(e=>t.startsWith(e))}var ce=[`This chat is longer than the model's context window`,`This chat grew longer than the model's context window`,`The model's context window could not hold this chat's recent history`];function le(e){let t=e.trim(),n=ce.find(e=>t.startsWith(e));if(!n)return null;let r=/^[^.]*, so (\d+) earlier messages? were left out/.exec(t),i=r?Number(r[1]):null,a;return a=n===ce[0]?i===null?`Older messages left out of this request`:i===1?`1 earlier message left out of this request`:`${i.toLocaleString(`en-US`)} earlier messages left out of this request`:n===ce[1]?`Chat hit the context window — resumed shorter`:`Message resent with a shorter window`,{title:a,dropped:i}}function ue(e){let t=e.split(`
|
|
10
|
+
`).map(e=>e.trim()).find(e=>e.length>0);if(!t)return`Engine note`;if(t.startsWith(`Base directory for this skill:`)){let e=t.slice(30).trim().replace(/[\\/]+$/,``).split(/[\\/]/).pop()??``;return e?`Skill instructions — ${e}`:`Skill instructions`}let n=t.replace(/^#+\s*/,``).replace(/^<system-reminder>\s*/,``);return n.length>96?`${n.slice(0,95)}…`:n||`Engine note`}var de=/\[Image: (?:source: [^\]\n]+?|original \d+x\d+, displayed at \d+x\d+\. Multiply coordinates by \d+(?:\.\d+)? to map to original image\.)(?:, original \d+x\d+, displayed at \d+x\d+\. Multiply coordinates by \d+(?:\.\d+)? to map to original image\.)?\]/g;function fe(e){return e.includes(`[Image: `)?e.replace(de,``):e}function pe(e){if(typeof e!=`object`||!e)return null;let t=e;return t.type!==`queue-operation`||t.operation!==`remove`||typeof t.content!=`string`||t.content.length===0?null:{text:t.content,deliveredAt:typeof t.timestamp==`string`?t.timestamp:null}}function me(e){if(typeof e!=`object`||!e)return null;let t=e;if(t.type!==`attachment`||t.attachment?.type!==`queued_command`)return null;let n=t.attachment.prompt,r;if(typeof n==`string`)r=n;else if(Array.isArray(n))r=fe(n.filter(e=>typeof e==`object`&&!!e&&e.type===`text`&&typeof e.text==`string`).map(e=>e.text).join(`
|
|
11
|
+
`)).trim();else return null;let i=t.attachment.timestamp??t.timestamp;return{text:r,content:n,sourceUuid:typeof t.attachment.source_uuid==`string`?t.attachment.source_uuid:null,timestamp:typeof i==`string`?i:null}}var he=`<task-notification>`;function ge(e){return e.trimStart().startsWith(he)}function _e(e,t){let n=RegExp(`<${t}>([\\s\\S]*?)</${t}>`).exec(e);return(n?n[1].trim():``)||null}function ve(e){let t=[he];return e.taskId&&t.push(`<task-id>${e.taskId}</task-id>`),e.toolUseId&&t.push(`<tool-use-id>${e.toolUseId}</tool-use-id>`),e.status&&t.push(`<status>${e.status}</status>`),e.summary&&t.push(`<summary>${e.summary}</summary>`),t.push(`</task-notification>`),t.join(`
|
|
12
|
+
`)}function ye(e){return{taskId:_e(e,`task-id`),toolUseId:_e(e,`tool-use-id`),status:_e(e,`status`),summary:_e(e,`summary`),note:_e(e,`note`)}}var be=[`low`,`medium`,`high`,`xhigh`,`max`,`ultracode`],xe=[`low`,`medium`,`high`,`xhigh`,`max`];function Se(e){return typeof e==`string`&&be.includes(e)}function Ce(e,t){if(Se(e)&&!(!t||!t.includes(e)))return e}function we(e){if(e)return Ce(e.defaultEffort,Te(e))}function Te(e){return e?Array.isArray(e.effortLevels)?e.effortLevels:e.supportsThinking===!1?[]:xe:[]}function Ee(e){return e?.supportsTools!==!1}function De(e){return e.trim().replace(/\s+/g,` `).toLowerCase()}function Oe(e){return e.replace(/\s+/g,` `).toLowerCase()}function ke(e){let t=e.split(` `).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)).join(`\\s+`);return new RegExp(t,`gi`)}function Ae(e,t={}){let n=e.trim().replace(/\s+/g,` `);if(n===``)return null;let r=n.split(` `).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)).join(`\\s+`),i=t.wholeWord?`(?<![\\p{L}\\p{N}_])${r}(?![\\p{L}\\p{N}_])`:r;return new RegExp(i,t.caseSensitive?`gu`:`giu`)}function je(e,t,n={}){let r=Ae(t,n);return r!==null&&r.test(e)}function Me(e,t,n){let r=De(t);if(r===``)return[];let i=[];for(let t=0;t<e.length;t++){let a=n(e[t]);a!==``&&Oe(a).includes(r)&&i.push(t)}return i}function Ne(e,t,n){return n<=0?-1:e<0||e>=n?t>=0?0:n-1:((e+t)%n+n)%n}function Pe(e,t){return t<=0?`no matches`:`${e<0||e>=t?0:e+1}/${t}`}var Fe={label:`Send now`,warning:`Stops what the agent is doing right now and sends this message immediately. The step that is running is cut.`,alreadyRead:`The agent has already read this message — there is nothing to hurry.`},Ie={toolPacks:`tool_packs`,conversations:`conversations`,chatAbout:`chat_about`,scheduledTasks:`scheduled_tasks`,promptAck:`prompt_ack`,voiceSummaries:`voice_summaries`,reach:`reach`};function Le(e){return typeof e==`object`&&!!e&&typeof e.type==`string`}var V={health:`/api/v1/health`,info:`/api/v1/info`,sessions:`/api/v1/sessions`,adoptLegacySessions:`/api/v1/sessions/adopt-legacy`,session:e=>`/api/v1/sessions/${e}`,sessionEntries:e=>`/api/v1/sessions/${e}/entries`,sessionSearch:`/api/v1/sessions/search`,agentTools:`/api/v1/agent-tools`,connectors:`/api/v1/connectors`,connector:e=>`/api/v1/connectors/${e}`,connectorSignIn:e=>`/api/v1/connectors/${e}/sign-in`,connectorSkills:e=>`/api/v1/connectors/${e}/skills`,mcpServers:`/api/v1/mcp-servers`,mcpServer:e=>`/api/v1/mcp-servers/${e}`,mcpServerTest:e=>`/api/v1/mcp-servers/${e}/test`,mcpServerTestDraft:`/api/v1/mcp-servers/test`,commands:`/api/v1/commands`,sessionCommands:e=>`/api/v1/sessions/${e}/commands`,skills:`/api/v1/skills`,skill:e=>`/api/v1/skills/${encodeURIComponent(e)}`,importClaudeSkills:`/api/v1/skills/import/claude`,modelSkills:`/api/v1/model-skills`,sessionModelSkills:e=>`/api/v1/sessions/${e}/model-skills`,sessionMessages:e=>`/api/v1/sessions/${e}/messages`,sessionPrompt:e=>`/api/v1/sessions/${e}/prompt`,sessionInterrupt:e=>`/api/v1/sessions/${e}/interrupt`,sessionQueued:(e,t)=>`/api/v1/sessions/${e}/queued/${encodeURIComponent(t)}`,sessionQueuedNow:(e,t)=>`/api/v1/sessions/${e}/queued/${encodeURIComponent(t)}/now`,sessionFork:e=>`/api/v1/sessions/${e}/fork`,sessionExport:e=>`/api/v1/sessions/${e}/export`,sessionsExportArchive:`/api/v1/sessions/export`,sessionProject:e=>`/api/v1/sessions/${e}/project`,importClaude:`/api/v1/import/claude`,importSearch:`/api/v1/import/search`,sessionLink:e=>`/api/v1/sessions/${e}/link`,sessionSyncDown:e=>`/api/v1/sessions/${e}/sync-down`,projects:`/api/v1/projects`,projectInspect:`/api/v1/projects/inspect`,vaultProjects:`/api/v1/vault/projects`,vaultProject:e=>`/api/v1/vault/projects/${e}`,vaultNotes:`/api/v1/vault/notes`,vaultNote:e=>`/api/v1/vault/notes/${e}`,scheduledTasks:`/api/v1/scheduled-tasks`,scheduledTask:e=>`/api/v1/scheduled-tasks/${e}`,conversations:`/api/v1/conversations`,conversation:e=>`/api/v1/conversations/${e}`,conversationAction:(e,t)=>`/api/v1/conversations/${e}/${t}`,conversationsStopAll:`/api/v1/conversations/stop-all`,chatMessage:e=>`/api/v1/chat-messages/${e}`,sessionAbout:e=>`/api/v1/sessions/${e}/about`,agyStatus:`/api/v1/agy/status`,agyInstall:`/api/v1/agy/install`,agyLogin:`/api/v1/agy/login`,agyLoginCode:`/api/v1/agy/login/code`,museSetup:`/api/v1/muse/setup`,museLogin:`/api/v1/muse/login`,agyRequests:e=>`/api/v1/sessions/${e}/agy/requests`,agyRequestBody:(e,t)=>`/api/v1/sessions/${e}/agy/requests/${t}`,sessionAboutRegenerate:e=>`/api/v1/sessions/${e}/about/regenerate`,chatAbouts:`/api/v1/chat-abouts`,chatAboutsGenerateAll:`/api/v1/chat-abouts/generate-all`,chatAboutsGenerateAllStop:`/api/v1/chat-abouts/generate-all/stop`,chatAboutsGenerate:`/api/v1/chat-abouts/generate`,chatAboutsTranslationPlan:`/api/v1/chat-abouts/translation-plan`,sessionAboutTranslation:e=>`/api/v1/sessions/${e}/about/translation`,sessionVoiceSummaries:e=>`/api/v1/sessions/${e}/voice-summaries`,sessionVoiceSummary:(e,t)=>`/api/v1/sessions/${e}/voice-summaries/${t}`,sessionVoiceSummaryTranslations:(e,t)=>`/api/v1/sessions/${e}/voice-summaries/${t}/translations`,nextPrompts:`/api/v1/next-prompts`,nextPromptsReview:`/api/v1/next-prompts/review`,nextPromptsReviewStop:`/api/v1/next-prompts/review/stop`,sessionNextPrompt:e=>`/api/v1/sessions/${e}/next-prompt`,sessionNextPromptSent:e=>`/api/v1/sessions/${e}/next-prompt/sent`,sessionSeen:e=>`/api/v1/sessions/${e}/seen`,githubLink:`/api/v1/git/github`,githubLinkStart:`/api/v1/git/github/link`,providers:`/api/v1/providers`,providersActive:`/api/v1/providers/active`,providerTest:e=>`/api/v1/providers/${e}/test`,providerProbe:e=>`/api/v1/providers/${e}/probe`,providerSecret:e=>`/api/v1/providers/${e}/secret`,models:`/api/v1/models`,settings:`/api/v1/settings`,account:`/api/v1/account`,accountLogin:`/api/v1/account/login`,accountLogout:`/api/v1/account/logout`,accountRemoveHost:`/api/v1/account/remove-host`,accountUnlock:`/api/v1/account/unlock`,accountPlan:`/api/v1/account/plan`,accountUsage:`/api/v1/account/usage`,accountLock:`/api/v1/account/lock`,accountResendVerification:`/api/v1/account/resend-verification`,accountLinkStart:`/api/v1/account/link/start`,accountLinkStatus:`/api/v1/account/link`,accountLinkCancel:`/api/v1/account/link/cancel`,accountApiKey:`/api/v1/account/api-key`,credentials:`/api/v1/credentials`,credential:e=>`/api/v1/credentials/${e}`,credentialTest:e=>`/api/v1/credentials/${e}/test`,syncNow:`/api/v1/sync/now`,subscriptionClaudeLogin:`/api/v1/subscription/claude/login`,subscriptionClaudeLoginState:`/api/v1/subscription/claude/login/state`,subscriptionClaudeLoginCode:`/api/v1/subscription/claude/login/code`,subscriptionClaudeLoginCancel:`/api/v1/subscription/claude/login/cancel`,subscriptionClaudeStatus:`/api/v1/subscription/claude`,subscriptionOauthLogin:e=>`/api/v1/subscription/oauth/${e}/login`,subscriptionOauthLoginState:e=>`/api/v1/subscription/oauth/${e}/login/state`,subscriptionOauthLoginCancel:e=>`/api/v1/subscription/oauth/${e}/login/cancel`,doctor:`/api/v1/doctor`,hostShutdown:`/api/v1/host/shutdown`,hostVaultUnlock:e=>`/api/v1/hosts/${encodeURIComponent(e)}/vault-unlock`,hosts:`/api/v1/hosts`,host:e=>`/api/v1/hosts/${e}`,hostSessions:e=>`/api/v1/hosts/${e}/sessions`,hostSessionEntries:(e,t)=>`/api/v1/hosts/${e}/sessions/${t}/entries`,hostSession:(e,t)=>`/api/v1/hosts/${e}/sessions/${t}`,remoteWs:`/api/v1/relay/ws`,errorReport:`/api/v1/errors`,bugReport:`/api/v1/bug-reports`,sandboxRunToken:`/api/v1/sandbox/run-token`,sessionFiles:e=>`/api/v1/sessions/${e}/files`,sessionFile:e=>`/api/v1/sessions/${e}/files/content`,sessionLocalFile:e=>`/api/v1/sessions/${e}/local-file`,sessionLocalFileGrant:e=>`/api/v1/sessions/${e}/local-file/grant`,sessionLocalFileStat:e=>`/api/v1/sessions/${e}/local-file/stat`,sessionMedia:e=>`/api/v1/sessions/${e}/media`,sessionMediaContent:(e,t)=>`/api/v1/sessions/${e}/media/${t}/content`,sessionMediaGrant:e=>`/api/v1/sessions/${e}/media/grant`,sessionTmpFile:e=>`/api/v1/sessions/${e}/tmp-file`,saveTmpFile:`/api/v1/tmp-file`,sandboxRestore:`/api/v1/sandbox/restore`};function Re(e){return e.enabled&&e.nextRunAt!==null}function ze(e){if(Re(e)||!e.updatedAt)return null;let t=Date.parse(e.updatedAt);return Number.isFinite(t)?new Date(t+864e6).toISOString():null}var Be={health:`GET`,info:`GET`,listSessions:`GET`,createSession:`POST`,getSession:`GET`,updateSession:`PATCH`,deleteSession:`DELETE`,listEntries:`GET`,listMessages:`GET`,prompt:`POST`,interrupt:`POST`,cancelQueued:`DELETE`,sendQueuedNow:`POST`,fork:`POST`,export:`GET`,exportArchive:`POST`,attachSessionProject:`POST`,listProjects:`GET`,scanClaudeSessions:`GET`,importClaudeSessions:`POST`,searchImportChats:`GET`,sessionLink:`GET`,syncSessionDown:`POST`,inspectProject:`GET`,listVaultProjects:`GET`,createVaultProject:`POST`,updateVaultProject:`PATCH`,deleteVaultProject:`DELETE`,listStickyNotes:`GET`,createStickyNote:`POST`,updateStickyNote:`PATCH`,deleteStickyNote:`DELETE`,listScheduledTasks:`GET`,createScheduledTask:`POST`,updateScheduledTask:`PATCH`,deleteScheduledTask:`DELETE`,listConversations:`GET`,getConversation:`GET`,conversationAction:`POST`,stopAllConversations:`POST`,cancelChatMessage:`DELETE`,getChatAbout:`GET`,updateChatAbout:`PATCH`,regenerateChatAbout:`POST`,listChatAbouts:`GET`,generateAllChatAbouts:`POST`,stopGenerateAllChatAbouts:`POST`,generateChatAbouts:`POST`,planChatAboutTranslations:`POST`,translateChatAbout:`POST`,listVoiceSummaries:`GET`,createVoiceSummary:`POST`,deleteVoiceSummary:`DELETE`,translateVoiceSummary:`POST`,listNextPrompts:`GET`,reviewNextPrompts:`POST`,stopNextPromptReview:`POST`,getNextPrompt:`GET`,suggestNextPrompt:`POST`,markNextPromptSent:`POST`,markSessionSeen:`POST`,searchEntries:`GET`,getGithubLink:`GET`,startGithubLink:`POST`,cancelGithubLink:`DELETE`,unlinkGithub:`DELETE`,listProviders:`GET`,setActiveProvider:`PUT`,providerTest:`POST`,providerProbe:`POST`,revealCredential:`GET`,listModels:`GET`,getSettings:`GET`,updateSettings:`PATCH`,getAccount:`GET`,login:`POST`,logout:`POST`,removeHostFromAccount:`POST`,unlock:`POST`,resendVerification:`POST`,linkStart:`POST`,linkStatus:`GET`,linkCancel:`POST`,listCredentials:`GET`,addCredential:`POST`,deleteCredential:`DELETE`,credentialTest:`POST`,syncNow:`POST`,claudeLogin:`POST`,claudeLoginState:`GET`,claudeLoginCode:`POST`,claudeLoginCancel:`POST`,claudeStatus:`GET`,oauthLogin:`POST`,oauthLoginState:`GET`,oauthLoginCancel:`POST`,doctor:`GET`,hostShutdown:`POST`,listHosts:`GET`,getHost:`GET`,updateHost:`PATCH`,listHostSessions:`GET`,deleteHostSession:`DELETE`,listHostSessionEntries:`GET`,errorReport:`POST`,bugReport:`POST`,listSessionFiles:`GET`,readSessionFile:`GET`,deleteSessionFile:`DELETE`,readLocalFile:`GET`,grantLocalFile:`POST`,statLocalPaths:`POST`,listChatMedia:`GET`,readChatMedia:`GET`,grantChatMedia:`POST`,listCommands:`GET`,listSessionCommands:`GET`,listSkills:`GET`,deleteSkill:`DELETE`,scanClaudeSkills:`GET`,importClaudeSkills:`POST`,listChatSkills:`GET`,listSessionChatSkills:`GET`};function Ve(e){return typeof e==`object`&&!!e&&typeof e.type==`string`}function He(e){return e===`attached`}var Ue;function H(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;e<a.length;e++){let t=a[e];t in n||(n[t]=i[t].bind(n))}}let i=n?.Parent??Object;class a extends i{}Object.defineProperty(a,"name",{value:e});function o(e){var t;let i=n?.Parent?new a:this;r(i,e),(t=i._zod).deferred??(t.deferred=[]);for(let e of i._zod.deferred)e();return i}return Object.defineProperty(o,"init",{value:r}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>n?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}var We=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Ge=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Ue=globalThis).__zod_globalConfig??(Ue.__zod_globalConfig={});var Ke=globalThis.__zod_globalConfig;function qe(e){return e&&Object.assign(Ke,e),Ke}function Je(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function Ye(e,t){return typeof t==`bigint`?t.toString():t}function Xe(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function Ze(e){return e==null}function Qe(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function $e(e,t){let n=e/t,r=Math.round(n),i=2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r)<i?0:n-r}var et=Symbol(`evaluating`);function tt(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==et)return r===void 0&&(r=et,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function nt(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function rt(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function it(e){return JSON.stringify(e)}function at(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var ot=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function st(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var ct=Xe(()=>{if(Ke.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function lt(e){if(st(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return st(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function ut(e){return lt(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var dt=new Set([`string`,`number`,`symbol`]);function ft(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function pt(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function mt(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function ht(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}var gt={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function _t(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return pt(e,rt(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return nt(this,`shape`,e),e},checks:[]}))}function vt(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return pt(e,rt(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return nt(this,`shape`,r),r},checks:[]}))}function yt(e,t){if(!lt(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return pt(e,rt(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return nt(this,`shape`,n),n}}))}function bt(e,t){if(!lt(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return pt(e,rt(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return nt(this,`shape`,n),n}}))}function xt(e,t){if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return pt(e,rt(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return nt(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function St(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return pt(t,rt(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return nt(this,`shape`,i),i},checks:[]}))}function Ct(e,t,n){return pt(t,rt(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return nt(this,`shape`,i),i}}))}function wt(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function Tt(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function Et(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function Dt(e){return typeof e==`string`?e:e?.message}function Ot(e,t,n){let r=e.message?e.message:Dt(e.inst?._zod.def?.error?.(e))??Dt(t?.error?.(e))??Dt(n.customError?.(e))??Dt(n.localeError?.(e))??`Invalid input`,{inst:i,continue:a,input:o,...s}=e;return s.path??=[],s.message=r,t?.reportInput&&(s.input=o),s}function kt(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function At(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var jt=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,Ye,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Mt=H(`$ZodError`,jt),Nt=H(`$ZodError`,jt,{Parent:Error});function Pt(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Ft(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i<e.length;){let n=e[i];i===e.length-1?(r[n]=r[n]||{_errors:[]},r[n]._errors.push(t(a))):r[n]=r[n]||{_errors:[]},r=r[n],i++}}}};return r(e),n}var It=e=>(t,n,r,i)=>{let a=r?{...r,async:!1}:{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new We;if(o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>Ot(e,a,qe())));throw ot(t,i?.callee),t}return o.value},Lt=e=>async(t,n,r,i)=>{let a=r?{...r,async:!0}:{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>Ot(e,a,qe())));throw ot(t,i?.callee),t}return o.value},Rt=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new We;return a.issues.length?{success:!1,error:new(e??Mt)(a.issues.map(e=>Ot(e,i,qe())))}:{success:!0,data:a.value}},zt=Rt(Nt),Bt=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>Ot(e,i,qe())))}:{success:!0,data:a.value}},Vt=Bt(Nt),Ht=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return It(e)(t,n,i)},Ut=e=>(t,n,r)=>It(e)(t,n,r),Wt=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Lt(e)(t,n,i)},Gt=e=>async(t,n,r)=>Lt(e)(t,n,r),Kt=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Rt(e)(t,n,i)},qt=e=>(t,n,r)=>Rt(e)(t,n,r),Jt=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Bt(e)(t,n,i)},Yt=e=>async(t,n,r)=>Bt(e)(t,n,r),Xt=/^[cC][0-9a-z]{6,}$/,Zt=/^[0-9a-z]+$/,Qt=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,$t=/^[0-9a-vA-V]{20}$/,en=/^[A-Za-z0-9]{27}$/,tn=/^[a-zA-Z0-9_-]{21}$/,nn=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,rn=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,an=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,on=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,sn=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function cn(){return new RegExp(sn,`u`)}var ln=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,un=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,dn=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,fn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,pn=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,mn=/^[A-Za-z0-9_-]*$/,hn=/^https?$/,gn=/^\+[1-9]\d{6,14}$/,_n=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,vn=RegExp(`^${_n}$`);function yn(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function bn(e){return RegExp(`^${yn(e)}$`)}function xn(e){let t=yn({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${_n}T(?:${r})$`)}var Sn=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},Cn=/^-?\d+$/,wn=/^-?\d+(?:\.\d+)?$/,Tn=/^(?:true|false)$/i,En=/^[^A-Z]*$/,Dn=/^[^a-z]*$/,On=H(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),kn={number:`number`,bigint:`bigint`,object:`date`},An=H(`$ZodCheckLessThan`,(e,t)=>{On.init(e,t);let n=kn[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value<r&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:n,code:`too_big`,maximum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),jn=H(`$ZodCheckGreaterThan`,(e,t)=>{On.init(e,t);let n=kn[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Mn=H(`$ZodCheckMultipleOf`,(e,t)=>{On.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?n.value%t.value===BigInt(0):$e(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Nn=H(`$ZodCheckNumberFormat`,(e,t)=>{On.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=gt[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=Cn)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}s<i&&o.issues.push({origin:`number`,input:s,code:`too_small`,minimum:i,inclusive:!0,inst:e,continue:!t.abort}),s>a&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Pn=H(`$ZodCheckMaxLength`,(e,t)=>{var n;On.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Ze(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let r=n.value;if(r.length<=t.maximum)return;let i=kt(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Fn=H(`$ZodCheckMinLength`,(e,t)=>{var n;On.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Ze(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=kt(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),In=H(`$ZodCheckLengthEquals`,(e,t)=>{var n;On.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Ze(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=kt(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Ln=H(`$ZodCheckStringFormat`,(e,t)=>{var n,r;On.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),Rn=H(`$ZodCheckRegex`,(e,t)=>{Ln.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),zn=H(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=En,Ln.init(e,t)}),Bn=H(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Dn,Ln.init(e,t)}),Vn=H(`$ZodCheckIncludes`,(e,t)=>{On.init(e,t);let n=ft(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Hn=H(`$ZodCheckStartsWith`,(e,t)=>{On.init(e,t);let n=RegExp(`^${ft(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Un=H(`$ZodCheckEndsWith`,(e,t)=>{On.init(e,t);let n=RegExp(`.*${ft(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Wn=H(`$ZodCheckOverwrite`,(e,t)=>{On.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),Gn=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(`
|
|
13
|
+
`).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.args,n=[...(this?.content??[``]).map(e=>` ${e}`)];return new e(...t,n.join(`
|
|
14
|
+
`))}},Kn={major:4,minor:4,patch:3},qn=H(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Kn;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=wt(e),i;for(let a of t){if(a._zod.def.when){if(Tt(e)||!a._zod.def.when(e))continue}else if(r)continue;let t=e.issues.length,o=a._zod.check(e);if(o instanceof Promise&&n?.async===!1)throw new We;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(r||=wt(e,t))});else{if(e.issues.length===t)continue;r||=wt(e,t)}}return i?i.then(()=>e):e},n=(n,i,a)=>{if(wt(n))return n.aborted=!0,n;let o=t(i,r,a);if(o instanceof Promise){if(a.async===!1)throw new We;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction===`backward`){let t=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,i,a)):n(t,i,a)}let o=e._zod.parse(i,a);if(o instanceof Promise){if(a.async===!1)throw new We;return o.then(e=>t(e,r,a))}return t(o,r,a)}}tt(e,`~standard`,()=>({validate:t=>{try{let n=zt(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return Vt(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}))}),Jn=H(`$ZodString`,(e,t)=>{qn.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??Sn(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),Yn=H(`$ZodStringFormat`,(e,t)=>{Ln.init(e,t),Jn.init(e,t)}),Xn=H(`$ZodGUID`,(e,t)=>{t.pattern??=rn,Yn.init(e,t)}),Zn=H(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=an(e)}else t.pattern??=an();Yn.init(e,t)}),Qn=H(`$ZodEmail`,(e,t)=>{t.pattern??=on,Yn.init(e,t)}),$n=H(`$ZodURL`,(e,t)=>{Yn.init(e,t),e._zod.check=n=>{try{let r=n.value.trim();if(!t.normalize&&t.protocol?.source===hn.source&&!/^https?:\/\//i.test(r)){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}let i=new URL(r);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(i.hostname)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(i.protocol.endsWith(`:`)?i.protocol.slice(0,-1):i.protocol)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),n.value=t.normalize?i.href:r;return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),er=H(`$ZodEmoji`,(e,t)=>{t.pattern??=cn(),Yn.init(e,t)}),tr=H(`$ZodNanoID`,(e,t)=>{t.pattern??=tn,Yn.init(e,t)}),nr=H(`$ZodCUID`,(e,t)=>{t.pattern??=Xt,Yn.init(e,t)}),rr=H(`$ZodCUID2`,(e,t)=>{t.pattern??=Zt,Yn.init(e,t)}),ir=H(`$ZodULID`,(e,t)=>{t.pattern??=Qt,Yn.init(e,t)}),ar=H(`$ZodXID`,(e,t)=>{t.pattern??=$t,Yn.init(e,t)}),or=H(`$ZodKSUID`,(e,t)=>{t.pattern??=en,Yn.init(e,t)}),sr=H(`$ZodISODateTime`,(e,t)=>{t.pattern??=xn(t),Yn.init(e,t)}),cr=H(`$ZodISODate`,(e,t)=>{t.pattern??=vn,Yn.init(e,t)}),lr=H(`$ZodISOTime`,(e,t)=>{t.pattern??=bn(t),Yn.init(e,t)}),ur=H(`$ZodISODuration`,(e,t)=>{t.pattern??=nn,Yn.init(e,t)}),dr=H(`$ZodIPv4`,(e,t)=>{t.pattern??=ln,Yn.init(e,t),e._zod.bag.format=`ipv4`}),fr=H(`$ZodIPv6`,(e,t)=>{t.pattern??=un,Yn.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}}),pr=H(`$ZodCIDRv4`,(e,t)=>{t.pattern??=dn,Yn.init(e,t)}),mr=H(`$ZodCIDRv6`,(e,t)=>{t.pattern??=fn,Yn.init(e,t),e._zod.check=n=>{let r=n.value.split(`/`);try{if(r.length!==2)throw Error();let[e,t]=r;if(!t)throw Error();let n=Number(t);if(`${n}`!==t||n<0||n>128)throw Error();new URL(`http://[${e}]`)}catch{n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}}});function hr(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var gr=H(`$ZodBase64`,(e,t)=>{t.pattern??=pn,Yn.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{hr(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function _r(e){if(!mn.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return hr(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var vr=H(`$ZodBase64URL`,(e,t)=>{t.pattern??=mn,Yn.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{_r(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),yr=H(`$ZodE164`,(e,t)=>{t.pattern??=gn,Yn.init(e,t)});function br(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var xr=H(`$ZodJWT`,(e,t)=>{Yn.init(e,t),e._zod.check=n=>{br(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),Sr=H(`$ZodNumber`,(e,t)=>{qn.init(e,t),e._zod.pattern=e._zod.bag.pattern??wn,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:`Infinity`:void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),Cr=H(`$ZodNumberFormat`,(e,t)=>{Nn.init(e,t),Sr.init(e,t)}),wr=H(`$ZodBoolean`,(e,t)=>{qn.init(e,t),e._zod.pattern=Tn,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),Tr=H(`$ZodUnknown`,(e,t)=>{qn.init(e,t),e._zod.parse=e=>e}),Er=H(`$ZodNever`,(e,t)=>{qn.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function Dr(e,t,n){e.issues.length&&t.issues.push(...Et(n,e.issues)),t.value[n]=e.value}var Or=H(`$ZodArray`,(e,t)=>{qn.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;e<i.length;e++){let o=i[e],s=t.element._zod.run({value:o,issues:[]},r);s instanceof Promise?a.push(s.then(t=>Dr(t,n,e))):Dr(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function kr(e,t,n,r,i,a){let o=n in r;if(e.issues.length){if(i&&a&&!o)return;t.issues.push(...Et(n,e.issues))}if(!o&&!i){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?o&&(t.value[n]=void 0):t.value[n]=e.value}function Ar(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=ht(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function jr(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin===`optional`,d=c.optout===`optional`;for(let i in t){if(i===`__proto__`||s.has(i))continue;if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>kr(e,n,i,t,u,d))):kr(a,n,i,t,u,d)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}var Mr=H(`$ZodObject`,(e,t)=>{if(qn.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,"shape",{get:()=>{let n={...e};return Object.defineProperty(t,"shape",{value:n}),n}})}let n=Xe(()=>Ar(t));tt(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=st,i=t.catchall,a;e._zod.parse=(t,o)=>{a??=n.value;let s=t.value;if(!r(s))return t.issues.push({expected:`object`,code:`invalid_type`,input:s,inst:e}),t;t.value={};let c=[],l=a.shape;for(let e of a.keys){let n=l[e],r=n._zod.optin===`optional`,i=n._zod.optout===`optional`,a=n._zod.run({value:s[e],issues:[]},o);a instanceof Promise?c.push(a.then(n=>kr(n,t,e,s,r,i))):kr(a,t,e,s,r,i)}return i?jr(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),Nr=H(`$ZodObjectJIT`,(e,t)=>{Mr.init(e,t);let n=e._zod.parse,r=Xe(()=>Ar(t)),i=e=>{let t=new Gn([`shape`,`payload`,`ctx`]),n=r.value,i=e=>{let t=it(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let a=Object.create(null),o=0;for(let e of n.keys)a[e]=`key_${o++}`;t.write(`const newResult = {};`);for(let r of n.keys){let n=a[r],o=it(r),s=e[r],c=s?._zod?.optin===`optional`,l=s?._zod?.optout===`optional`;t.write(`const ${n} = ${i(r)};`),c&&l?t.write(`
|
|
15
|
+
if (${n}.issues.length) {
|
|
16
|
+
if (${o} in input) {
|
|
17
|
+
payload.issues = payload.issues.concat(${n}.issues.map(iss => ({
|
|
18
|
+
...iss,
|
|
19
|
+
path: iss.path ? [${o}, ...iss.path] : [${o}]
|
|
20
|
+
})));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (${n}.value === undefined) {
|
|
25
|
+
if (${o} in input) {
|
|
26
|
+
newResult[${o}] = undefined;
|
|
27
|
+
}
|
|
28
|
+
} else {
|
|
29
|
+
newResult[${o}] = ${n}.value;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
`):c?t.write(`
|
|
33
|
+
if (${n}.issues.length) {
|
|
34
|
+
payload.issues = payload.issues.concat(${n}.issues.map(iss => ({
|
|
35
|
+
...iss,
|
|
36
|
+
path: iss.path ? [${o}, ...iss.path] : [${o}]
|
|
37
|
+
})));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (${n}.value === undefined) {
|
|
41
|
+
if (${o} in input) {
|
|
42
|
+
newResult[${o}] = undefined;
|
|
43
|
+
}
|
|
44
|
+
} else {
|
|
45
|
+
newResult[${o}] = ${n}.value;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
`):t.write(`
|
|
49
|
+
const ${n}_present = ${o} in input;
|
|
50
|
+
if (${n}.issues.length) {
|
|
51
|
+
payload.issues = payload.issues.concat(${n}.issues.map(iss => ({
|
|
52
|
+
...iss,
|
|
53
|
+
path: iss.path ? [${o}, ...iss.path] : [${o}]
|
|
54
|
+
})));
|
|
55
|
+
}
|
|
56
|
+
if (!${n}_present && !${n}.issues.length) {
|
|
57
|
+
payload.issues.push({
|
|
58
|
+
code: "invalid_type",
|
|
59
|
+
expected: "nonoptional",
|
|
60
|
+
input: undefined,
|
|
61
|
+
path: [${o}]
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (${n}_present) {
|
|
66
|
+
if (${n}.value === undefined) {
|
|
67
|
+
newResult[${o}] = undefined;
|
|
68
|
+
} else {
|
|
69
|
+
newResult[${o}] = ${n}.value;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
`)}t.write(`payload.value = newResult;`),t.write(`return payload;`);let s=t.compile();return(t,n)=>s(e,t,n)},a,o=st,s=!Ke.jitless,c=s&&ct.value,l=t.catchall,u;e._zod.parse=(d,f)=>{u??=r.value;let p=d.value;return o(p)?s&&c&&f?.async===!1&&f.jitless!==!0?(a||=i(t.shape),d=a(d,f),l?jr([],p,d,f,u,e):d):n(d,f):(d.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),d)}});function Pr(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!wt(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>Ot(e,r,qe())))}),t)}var Fr=H(`$ZodUnion`,(e,t)=>{qn.init(e,t),tt(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),tt(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),tt(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),tt(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>Qe(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>Pr(t,r,e,i)):Pr(o,r,e,i)}}),Ir=H(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,Fr.init(e,t);let n=e._zod.parse;tt(e._zod,`propValues`,()=>{let e={};for(let n of t.options){let r=n._zod.propValues;if(!r||Object.keys(r).length===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(n)}"`);for(let[t,n]of Object.entries(r)){e[t]||(e[t]=new Set);for(let r of n)e[t].add(r)}}return e});let r=Xe(()=>{let e=t.options,n=new Map;for(let r of e){let e=r._zod.propValues?.[t.discriminator];if(!e||e.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(r)}"`);for(let t of e){if(n.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);n.set(t,r)}}return n});e._zod.parse=(i,a)=>{let o=i.value;if(!st(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=r.value.get(o?.[t.discriminator]);return s?s._zod.run(i,a):t.unionFallback||a.direction===`backward`?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,options:Array.from(r.value.keys()),input:o,path:[t.discriminator],inst:e}),i)}}),Lr=H(`$ZodIntersection`,(e,t)=>{qn.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>zr(e,t,n)):zr(e,i,a)}});function Rr(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(lt(e)&<(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=Rr(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=Rr(i,a);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function zr(e,t,n){let r=new Map,i;for(let n of t.issues)if(n.code===`unrecognized_keys`){i??=n;for(let e of n.keys)r.has(e)||r.set(e,{}),r.get(e).l=!0}else e.issues.push(n);for(let t of n.issues)if(t.code===`unrecognized_keys`)for(let e of t.keys)r.has(e)||r.set(e,{}),r.get(e).r=!0;else e.issues.push(t);let a=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(a.length&&i&&e.issues.push({...i,keys:a}),wt(e))return e;let o=Rr(t.value,n.value);if(!o.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}var Br=H(`$ZodRecord`,(e,t)=>{qn.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!lt(i))return n.issues.push({expected:`record`,code:`invalid_type`,input:i,inst:e}),n;let a=[],o=t.keyType._zod.values;if(o){n.value={};let s=new Set;for(let c of o)if(typeof c==`string`||typeof c==`number`||typeof c==`symbol`){s.add(typeof c==`number`?c.toString():c);let o=t.keyType._zod.run({value:c,issues:[]},r);if(o instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(o.issues.length){n.issues.push({code:`invalid_key`,origin:`record`,issues:o.issues.map(e=>Ot(e,r,qe())),input:c,path:[c],inst:e});continue}let l=o.value,u=t.valueType._zod.run({value:i[c],issues:[]},r);u instanceof Promise?a.push(u.then(e=>{e.issues.length&&n.issues.push(...Et(c,e.issues)),n.value[l]=e.value})):(u.issues.length&&n.issues.push(...Et(c,u.issues)),n.value[l]=u.value)}let c;for(let e in i)s.has(e)||(c??=[],c.push(e));c&&c.length>0&&n.issues.push({code:`unrecognized_keys`,input:i,inst:e,keys:c})}else{n.value={};for(let o of Reflect.ownKeys(i)){if(o===`__proto__`||!Object.prototype.propertyIsEnumerable.call(i,o))continue;let s=t.keyType._zod.run({value:o,issues:[]},r);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof o==`string`&&wn.test(o)&&s.issues.length){let e=t.keyType._zod.run({value:Number(o),issues:[]},r);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(s=e)}if(s.issues.length){t.mode===`loose`?n.value[o]=i[o]:n.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>Ot(e,r,qe())),input:o,path:[o],inst:e});continue}let c=t.valueType._zod.run({value:i[o],issues:[]},r);c instanceof Promise?a.push(c.then(e=>{e.issues.length&&n.issues.push(...Et(o,e.issues)),n.value[s.value]=e.value})):(c.issues.length&&n.issues.push(...Et(o,c.issues)),n.value[s.value]=c.value)}}return a.length?Promise.all(a).then(()=>n):n}}),Vr=H(`$ZodEnum`,(e,t)=>{qn.init(e,t);let n=Je(t.entries),r=new Set(n);e._zod.values=r,e._zod.pattern=RegExp(`^(${n.filter(e=>dt.has(typeof e)).map(e=>typeof e==`string`?ft(e):e.toString()).join(`|`)})$`),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),Hr=H(`$ZodLiteral`,(e,t)=>{if(qn.init(e,t),t.values.length===0)throw Error(`Cannot create literal schema with no valid values`);let n=new Set(t.values);e._zod.values=n,e._zod.pattern=RegExp(`^(${t.values.map(e=>typeof e==`string`?ft(e):e?ft(e.toString()):String(e)).join(`|`)})$`),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),Ur=H(`$ZodTransform`,(e,t)=>{qn.init(e,t),e._zod.optin=`optional`,e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Ge(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n.fallback=!0,n));if(i instanceof Promise)throw new We;return n.value=i,n.fallback=!0,n}});function Wr(e,t){return t===void 0&&(e.issues.length||e.fallback)?{issues:[],value:void 0}:e}var Gr=H(`$ZodOptional`,(e,t)=>{qn.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,tt(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),tt(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${Qe(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(t.innerType._zod.optin===`optional`){let r=e.value,i=t.innerType._zod.run(e,n);return i instanceof Promise?i.then(e=>Wr(e,r)):Wr(i,r)}return e.value===void 0?e:t.innerType._zod.run(e,n)}}),Kr=H(`$ZodExactOptional`,(e,t)=>{Gr.init(e,t),tt(e._zod,`values`,()=>t.innerType._zod.values),tt(e._zod,`pattern`,()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),qr=H(`$ZodNullable`,(e,t)=>{qn.init(e,t),tt(e._zod,`optin`,()=>t.innerType._zod.optin),tt(e._zod,`optout`,()=>t.innerType._zod.optout),tt(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${Qe(e.source)}|null)$`):void 0}),tt(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),Jr=H(`$ZodDefault`,(e,t)=>{qn.init(e,t),e._zod.optin=`optional`,tt(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>Yr(e,t)):Yr(r,t)}});function Yr(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var Xr=H(`$ZodPrefault`,(e,t)=>{qn.init(e,t),e._zod.optin=`optional`,tt(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),Zr=H(`$ZodNonOptional`,(e,t)=>{qn.init(e,t),tt(e._zod,`values`,()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>Qr(t,e)):Qr(i,e)}});function Qr(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}var $r=H(`$ZodCatch`,(e,t)=>{qn.init(e,t),e._zod.optin=`optional`,tt(e._zod,`optout`,()=>t.innerType._zod.optout),tt(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(r=>(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>Ot(e,n,qe()))},input:e.value}),e.issues=[],e.fallback=!0),e)):(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>Ot(e,n,qe()))},input:e.value}),e.issues=[],e.fallback=!0),e)}}),ei=H(`$ZodPipe`,(e,t)=>{qn.init(e,t),tt(e._zod,`values`,()=>t.in._zod.values),tt(e._zod,`optin`,()=>t.in._zod.optin),tt(e._zod,`optout`,()=>t.out._zod.optout),tt(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>ti(e,t.in,n)):ti(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>ti(e,t.out,n)):ti(r,t.out,n)}});function ti(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},n)}var ni=H(`$ZodReadonly`,(e,t)=>{qn.init(e,t),tt(e._zod,`propValues`,()=>t.innerType._zod.propValues),tt(e._zod,`values`,()=>t.innerType._zod.values),tt(e._zod,`optin`,()=>t.innerType?._zod?.optin),tt(e._zod,`optout`,()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(ri):ri(r)}});function ri(e){return e.value=Object.freeze(e.value),e}var ii=H(`$ZodCustom`,(e,t)=>{On.init(e,t),qn.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>ai(t,n,r,e));ai(i,n,r,e)}});function ai(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(At(e))}}var oi,si=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function ci(){return new si}(oi=globalThis).__zod_globalRegistry??(oi.__zod_globalRegistry=ci());var li=globalThis.__zod_globalRegistry;function ui(e,t){return new e({type:`string`,...mt(t)})}function di(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...mt(t)})}function fi(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...mt(t)})}function pi(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...mt(t)})}function mi(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...mt(t)})}function hi(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...mt(t)})}function gi(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...mt(t)})}function _i(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...mt(t)})}function vi(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...mt(t)})}function yi(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...mt(t)})}function bi(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...mt(t)})}function xi(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...mt(t)})}function Si(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...mt(t)})}function Ci(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...mt(t)})}function wi(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...mt(t)})}function Ti(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...mt(t)})}function Ei(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...mt(t)})}function Di(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...mt(t)})}function Oi(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...mt(t)})}function ki(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...mt(t)})}function Ai(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...mt(t)})}function ji(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...mt(t)})}function Mi(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...mt(t)})}function Ni(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...mt(t)})}function Pi(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...mt(t)})}function Fi(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...mt(t)})}function Ii(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...mt(t)})}function Li(e,t){return new e({type:`number`,checks:[],...mt(t)})}function Ri(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...mt(t)})}function zi(e,t){return new e({type:`boolean`,...mt(t)})}function Bi(e){return new e({type:`unknown`})}function Vi(e,t){return new e({type:`never`,...mt(t)})}function Hi(e,t){return new An({check:`less_than`,...mt(t),value:e,inclusive:!1})}function Ui(e,t){return new An({check:`less_than`,...mt(t),value:e,inclusive:!0})}function Wi(e,t){return new jn({check:`greater_than`,...mt(t),value:e,inclusive:!1})}function Gi(e,t){return new jn({check:`greater_than`,...mt(t),value:e,inclusive:!0})}function Ki(e,t){return new Mn({check:`multiple_of`,...mt(t),value:e})}function qi(e,t){return new Pn({check:`max_length`,...mt(t),maximum:e})}function Ji(e,t){return new Fn({check:`min_length`,...mt(t),minimum:e})}function Yi(e,t){return new In({check:`length_equals`,...mt(t),length:e})}function Xi(e,t){return new Rn({check:`string_format`,format:`regex`,...mt(t),pattern:e})}function Zi(e){return new zn({check:`string_format`,format:`lowercase`,...mt(e)})}function Qi(e){return new Bn({check:`string_format`,format:`uppercase`,...mt(e)})}function $i(e,t){return new Vn({check:`string_format`,format:`includes`,...mt(t),includes:e})}function ea(e,t){return new Hn({check:`string_format`,format:`starts_with`,...mt(t),prefix:e})}function ta(e,t){return new Un({check:`string_format`,format:`ends_with`,...mt(t),suffix:e})}function na(e){return new Wn({check:`overwrite`,tx:e})}function ra(e){return na(t=>t.normalize(e))}function ia(){return na(e=>e.trim())}function aa(){return na(e=>e.toLowerCase())}function oa(){return na(e=>e.toUpperCase())}function sa(){return na(e=>at(e))}function ca(e,t,n){return new e({type:`array`,element:t,...mt(n)})}function la(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...mt(n)})}function ua(e,t){let n=da(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(At(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,r.input??=t.value,r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(At(r))}},e(t.value,t)),t);return n}function da(e,t){let n=new On({check:`custom`,...mt(t)});return n._zod.check=e,n}function fa(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??li,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,external:e?.external??void 0}}function pa(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o);let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,pa(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&Object.assign(o.schema,c),t.io===`input`&&ga(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function ma(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${a}`}}if(t[1]===n)return{ref:`#`};let i=`#/${r}/`,a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+a}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/<root>
|
|
74
|
+
|
|
75
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}}function ha(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Object.assign(i,s),Object.assign(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};for(let t of[...e.seen.entries()].reverse())r(t[0]);let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Object.assign(i,n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,o[e.defId]=e.def)}e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:va(t,`input`,e.processors),output:va(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function ga(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return ga(r.element,n);if(r.type===`set`)return ga(r.valueType,n);if(r.type===`lazy`)return ga(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`)return ga(r.innerType,n);if(r.type===`intersection`)return ga(r.left,n)||ga(r.right,n);if(r.type===`record`||r.type===`map`)return ga(r.keyType,n)||ga(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:ga(r.in,n)||ga(r.out,n);if(r.type===`object`){for(let e in r.shape)if(ga(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(ga(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(ga(e,n))return!0;return!!(r.rest&&ga(r.rest,n))}return!1}var _a=(e,t={})=>n=>{let r=fa({...n,processors:t});return pa(e,r),ma(r,e),ha(r,e)},va=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=fa({...i??{},target:a,io:t,processors:n});return pa(e,o),ma(o,e),ha(o,e)},ya={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},ba=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=ya[s]??s,i.format===``&&delete i.format,s===`time`&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},xa=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;i.type=typeof s==`string`&&s.includes(`int`)?`integer`:`number`;let d=typeof u==`number`&&u>=(a??-1/0),f=typeof l==`number`&&l<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;d?p?(i.minimum=u,i.exclusiveMinimum=!0):i.exclusiveMinimum=u:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l:typeof o==`number`&&(i.maximum=o),typeof c==`number`&&(i.multipleOf=c)},Sa=(e,t,n,r)=>{n.type=`boolean`},Ca=(e,t,n,r)=>{n.not={}},wa=(e,t,n,r)=>{let i=e._zod.def,a=Je(i.entries);a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},Ta=(e,t,n,r)=>{let i=e._zod.def,a=[];for(let e of i.values)if(e===void 0){if(t.unrepresentable===`throw`)throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof e==`bigint`){if(t.unrepresentable===`throw`)throw Error(`BigInt literals cannot be represented in JSON Schema`);a.push(Number(e))}else a.push(e);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},Ea=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Custom types cannot be represented in JSON Schema`)},Da=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Transforms cannot be represented in JSON Schema`)},Oa=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=pa(a.element,t,{...r,path:[...r.path,`items`]})},ka=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`,i.properties={};let o=a.shape;for(let e in o)i.properties[e]=pa(o[e],t,{...r,path:[...r.path,`properties`,e]});let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e]._zod;return t.io===`input`?n.optin===void 0:n.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=pa(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},Aa=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>pa(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},ja=(e,t,n,r)=>{let i=e._zod.def,a=pa(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=pa(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1;n.allOf=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]]},Ma=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=o._zod.bag?.patterns;if(a.mode===`loose`&&s&&s.size>0){let e=pa(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)i.patternProperties[t.source]=e}else(t.target===`draft-07`||t.target===`draft-2020-12`)&&(i.propertyNames=pa(a.keyType,t,{...r,path:[...r.path,`propertyNames`]})),i.additionalProperties=pa(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]});let c=o._zod.values;if(c){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e)}},Na=(e,t,n,r)=>{let i=e._zod.def,a=pa(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},Pa=(e,t,n,r)=>{let i=e._zod.def;pa(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Fa=(e,t,n,r)=>{let i=e._zod.def;pa(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.default=JSON.parse(JSON.stringify(i.defaultValue))},Ia=(e,t,n,r)=>{let i=e._zod.def;pa(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,t.io===`input`&&(n._prefault=JSON.parse(JSON.stringify(i.defaultValue)))},La=(e,t,n,r)=>{let i=e._zod.def;pa(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{throw Error(`Dynamic catch values are not supported in JSON Schema`)}n.default=o},Ra=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;pa(o,t,r);let s=t.seen.get(e);s.ref=o},za=(e,t,n,r)=>{let i=e._zod.def;pa(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Ba=(e,t,n,r)=>{let i=e._zod.def;pa(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Va=H(`ZodISODateTime`,(e,t)=>{sr.init(e,t),po.init(e,t)});function Ha(e){return Ni(Va,e)}var Ua=H(`ZodISODate`,(e,t)=>{cr.init(e,t),po.init(e,t)});function Wa(e){return Pi(Ua,e)}var Ga=H(`ZodISOTime`,(e,t)=>{lr.init(e,t),po.init(e,t)});function Ka(e){return Fi(Ga,e)}var qa=H(`ZodISODuration`,(e,t)=>{ur.init(e,t),po.init(e,t)});function Ja(e){return Ii(qa,e)}var Ya=H(`ZodError`,(e,t)=>{Mt.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>Ft(e,t)},flatten:{value:t=>Pt(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,Ye,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,Ye,2)}},isEmpty:{get(){return e.issues.length===0}}})},{Parent:Error}),Xa=It(Ya),Za=Lt(Ya),Qa=Rt(Ya),$a=Bt(Ya),eo=Ht(Ya),to=Ut(Ya),no=Wt(Ya),ro=Gt(Ya),io=Kt(Ya),ao=qt(Ya),oo=Jt(Ya),so=Yt(Ya),co=new WeakMap;function lo(e,t,n){let r=Object.getPrototypeOf(e),i=co.get(r);if(i||(i=new Set,co.set(r,i)),!i.has(t)){i.add(t);for(let e in n){let t=n[e];Object.defineProperty(r,e,{configurable:!0,enumerable:!1,get(){let n=t.bind(this);return Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:n}),n},set(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:t})}})}}}var U=H(`ZodType`,(e,t)=>(qn.init(e,t),Object.assign(e[`~standard`],{jsonSchema:{input:va(e,`input`),output:va(e,`output`)}}),e.toJSONSchema=_a(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.parse=(t,n)=>Xa(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>Qa(e,t,n),e.parseAsync=async(t,n)=>Za(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>$a(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>eo(e,t,n),e.decode=(t,n)=>to(e,t,n),e.encodeAsync=async(t,n)=>no(e,t,n),e.decodeAsync=async(t,n)=>ro(e,t,n),e.safeEncode=(t,n)=>io(e,t,n),e.safeDecode=(t,n)=>ao(e,t,n),e.safeEncodeAsync=async(t,n)=>oo(e,t,n),e.safeDecodeAsync=async(t,n)=>so(e,t,n),lo(e,`ZodType`,{check(...e){let t=this.def;return this.clone(rt(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return pt(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(Es(e,t))},superRefine(e,t){return this.check(Ds(e,t))},overwrite(e){return this.check(na(e))},optional(){return cs(this)},exactOptional(){return us(this)},nullable(){return fs(this)},nullish(){return cs(fs(this))},nonoptional(e){return vs(this,e)},array(){return Wo(this)},or(e){return Jo([this,e])},and(e){return Qo(this,e)},transform(e){return Ss(this,os(e))},default(e){return ms(this,e)},prefault(e){return gs(this,e)},catch(e){return bs(this,e)},pipe(e){return Ss(this,e)},readonly(){return ws(this)},describe(e){let t=this.clone();return li.add(t,{description:e}),t},meta(...e){if(e.length===0)return li.get(this);let t=this.clone();return li.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e){return e(this)}}),Object.defineProperty(e,"description",{get(){return li.get(e)?.description},configurable:!0}),e)),uo=H(`_ZodString`,(e,t)=>{Jn.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ba(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,lo(e,`_ZodString`,{regex(...e){return this.check(Xi(...e))},includes(...e){return this.check($i(...e))},startsWith(...e){return this.check(ea(...e))},endsWith(...e){return this.check(ta(...e))},min(...e){return this.check(Ji(...e))},max(...e){return this.check(qi(...e))},length(...e){return this.check(Yi(...e))},nonempty(...e){return this.check(Ji(1,...e))},lowercase(e){return this.check(Zi(e))},uppercase(e){return this.check(Qi(e))},trim(){return this.check(ia())},normalize(...e){return this.check(ra(...e))},toLowerCase(){return this.check(aa())},toUpperCase(){return this.check(oa())},slugify(){return this.check(sa())}})}),fo=H(`ZodString`,(e,t)=>{Jn.init(e,t),uo.init(e,t),e.email=t=>e.check(di(mo,t)),e.url=t=>e.check(_i(_o,t)),e.jwt=t=>e.check(Mi(Mo,t)),e.emoji=t=>e.check(vi(vo,t)),e.guid=t=>e.check(fi(ho,t)),e.uuid=t=>e.check(pi(go,t)),e.uuidv4=t=>e.check(mi(go,t)),e.uuidv6=t=>e.check(hi(go,t)),e.uuidv7=t=>e.check(gi(go,t)),e.nanoid=t=>e.check(yi(yo,t)),e.guid=t=>e.check(fi(ho,t)),e.cuid=t=>e.check(bi(bo,t)),e.cuid2=t=>e.check(xi(xo,t)),e.ulid=t=>e.check(Si(So,t)),e.base64=t=>e.check(ki(ko,t)),e.base64url=t=>e.check(Ai(Ao,t)),e.xid=t=>e.check(Ci(Co,t)),e.ksuid=t=>e.check(wi(wo,t)),e.ipv4=t=>e.check(Ti(To,t)),e.ipv6=t=>e.check(Ei(Eo,t)),e.cidrv4=t=>e.check(Di(Do,t)),e.cidrv6=t=>e.check(Oi(Oo,t)),e.e164=t=>e.check(ji(jo,t)),e.datetime=t=>e.check(Ha(t)),e.date=t=>e.check(Wa(t)),e.time=t=>e.check(Ka(t)),e.duration=t=>e.check(Ja(t))});function W(e){return ui(fo,e)}var po=H(`ZodStringFormat`,(e,t)=>{Yn.init(e,t),uo.init(e,t)}),mo=H(`ZodEmail`,(e,t)=>{Qn.init(e,t),po.init(e,t)}),ho=H(`ZodGUID`,(e,t)=>{Xn.init(e,t),po.init(e,t)}),go=H(`ZodUUID`,(e,t)=>{Zn.init(e,t),po.init(e,t)}),_o=H(`ZodURL`,(e,t)=>{$n.init(e,t),po.init(e,t)}),vo=H(`ZodEmoji`,(e,t)=>{er.init(e,t),po.init(e,t)}),yo=H(`ZodNanoID`,(e,t)=>{tr.init(e,t),po.init(e,t)}),bo=H(`ZodCUID`,(e,t)=>{nr.init(e,t),po.init(e,t)}),xo=H(`ZodCUID2`,(e,t)=>{rr.init(e,t),po.init(e,t)}),So=H(`ZodULID`,(e,t)=>{ir.init(e,t),po.init(e,t)}),Co=H(`ZodXID`,(e,t)=>{ar.init(e,t),po.init(e,t)}),wo=H(`ZodKSUID`,(e,t)=>{or.init(e,t),po.init(e,t)}),To=H(`ZodIPv4`,(e,t)=>{dr.init(e,t),po.init(e,t)}),Eo=H(`ZodIPv6`,(e,t)=>{fr.init(e,t),po.init(e,t)}),Do=H(`ZodCIDRv4`,(e,t)=>{pr.init(e,t),po.init(e,t)}),Oo=H(`ZodCIDRv6`,(e,t)=>{mr.init(e,t),po.init(e,t)}),ko=H(`ZodBase64`,(e,t)=>{gr.init(e,t),po.init(e,t)}),Ao=H(`ZodBase64URL`,(e,t)=>{vr.init(e,t),po.init(e,t)}),jo=H(`ZodE164`,(e,t)=>{yr.init(e,t),po.init(e,t)}),Mo=H(`ZodJWT`,(e,t)=>{xr.init(e,t),po.init(e,t)}),No=H(`ZodNumber`,(e,t)=>{Sr.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xa(e,t,n,r),lo(e,`ZodNumber`,{gt(e,t){return this.check(Wi(e,t))},gte(e,t){return this.check(Gi(e,t))},min(e,t){return this.check(Gi(e,t))},lt(e,t){return this.check(Hi(e,t))},lte(e,t){return this.check(Ui(e,t))},max(e,t){return this.check(Ui(e,t))},int(e){return this.check(Io(e))},safe(e){return this.check(Io(e))},positive(e){return this.check(Wi(0,e))},nonnegative(e){return this.check(Gi(0,e))},negative(e){return this.check(Hi(0,e))},nonpositive(e){return this.check(Ui(0,e))},multipleOf(e,t){return this.check(Ki(e,t))},step(e,t){return this.check(Ki(e,t))},finite(){return this}});let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null});function Po(e){return Li(No,e)}var Fo=H(`ZodNumberFormat`,(e,t)=>{Cr.init(e,t),No.init(e,t)});function Io(e){return Ri(Fo,e)}var Lo=H(`ZodBoolean`,(e,t)=>{wr.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Sa(e,t,n,r)});function Ro(e){return zi(Lo,e)}var zo=H(`ZodUnknown`,(e,t)=>{Tr.init(e,t),U.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function Bo(){return Bi(zo)}var Vo=H(`ZodNever`,(e,t)=>{Er.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ca(e,t,n,r)});function Ho(e){return Vi(Vo,e)}var Uo=H(`ZodArray`,(e,t)=>{Or.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Oa(e,t,n,r),e.element=t.element,lo(e,`ZodArray`,{min(e,t){return this.check(Ji(e,t))},nonempty(e){return this.check(Ji(1,e))},max(e,t){return this.check(qi(e,t))},length(e,t){return this.check(Yi(e,t))},unwrap(){return this.element}})});function Wo(e,t){return ca(Uo,e,t)}var Go=H(`ZodObject`,(e,t)=>{Nr.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ka(e,t,n,r),tt(e,`shape`,()=>t.shape),lo(e,`ZodObject`,{keyof(){return ns(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:Bo()})},loose(){return this.clone({...this._zod.def,catchall:Bo()})},strict(){return this.clone({...this._zod.def,catchall:Ho()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return yt(this,e)},safeExtend(e){return bt(this,e)},merge(e){return xt(this,e)},pick(e){return _t(this,e)},omit(e){return vt(this,e)},partial(...e){return St(ss,this,e[0])},required(...e){return Ct(_s,this,e[0])}})});function Ko(e,t){return new Go({type:`object`,shape:e??{},...mt(t)})}var qo=H(`ZodUnion`,(e,t)=>{Fr.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Aa(e,t,n,r),e.options=t.options});function Jo(e,t){return new qo({type:`union`,options:e,...mt(t)})}var Yo=H(`ZodDiscriminatedUnion`,(e,t)=>{qo.init(e,t),Ir.init(e,t)});function Xo(e,t,n){return new Yo({type:`union`,options:t,discriminator:e,...mt(n)})}var Zo=H(`ZodIntersection`,(e,t)=>{Lr.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ja(e,t,n,r)});function Qo(e,t){return new Zo({type:`intersection`,left:e,right:t})}var $o=H(`ZodRecord`,(e,t)=>{Br.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ma(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function es(e,t,n){return!t||!t._zod?new $o({type:`record`,keyType:W(),valueType:e,...mt(t)}):new $o({type:`record`,keyType:e,valueType:t,...mt(n)})}var ts=H(`ZodEnum`,(e,t)=>{Vr.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>wa(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new ts({...t,checks:[],...mt(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new ts({...t,checks:[],...mt(r),entries:i})}});function ns(e,t){return new ts({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...mt(t)})}var rs=H(`ZodLiteral`,(e,t)=>{Hr.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ta(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function is(e,t){return new rs({type:`literal`,values:Array.isArray(e)?e:[e],...mt(t)})}var as=H(`ZodTransform`,(e,t)=>{Ur.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Da(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Ge(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(At(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=n.value,t.inst??=e,n.issues.push(At(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n.fallback=!0,n)):(n.value=i,n.fallback=!0,n)}});function os(e){return new as({type:`transform`,transform:e})}var ss=H(`ZodOptional`,(e,t)=>{Gr.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ba(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function cs(e){return new ss({type:`optional`,innerType:e})}var ls=H(`ZodExactOptional`,(e,t)=>{Kr.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ba(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function us(e){return new ls({type:`optional`,innerType:e})}var ds=H(`ZodNullable`,(e,t)=>{qr.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Na(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function fs(e){return new ds({type:`nullable`,innerType:e})}var ps=H(`ZodDefault`,(e,t)=>{Jr.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Fa(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function ms(e,t){return new ps({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():ut(t)}})}var hs=H(`ZodPrefault`,(e,t)=>{Xr.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ia(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function gs(e,t){return new hs({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():ut(t)}})}var _s=H(`ZodNonOptional`,(e,t)=>{Zr.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Pa(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function vs(e,t){return new _s({type:`nonoptional`,innerType:e,...mt(t)})}var ys=H(`ZodCatch`,(e,t)=>{$r.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>La(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function bs(e,t){return new ys({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}var xs=H(`ZodPipe`,(e,t)=>{ei.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ra(e,t,n,r),e.in=t.in,e.out=t.out});function Ss(e,t){return new xs({type:`pipe`,in:e,out:t})}var Cs=H(`ZodReadonly`,(e,t)=>{ni.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>za(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function ws(e){return new Cs({type:`readonly`,innerType:e})}var Ts=H(`ZodCustom`,(e,t)=>{ii.init(e,t),U.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ea(e,t,n,r)});function Es(e,t={}){return la(Ts,e,t)}function Ds(e,t){return ua(e,t)}var Os={artificial_analysis_intelligence_index:{label:`Intelligence index`,scale:`index`},artificial_analysis_coding_index:{label:`Coding index`,scale:`index`},artificial_analysis_math_index:{label:`Math index`,scale:`index`},gpqa:{label:`GPQA Diamond`,scale:`fraction`},hle:{label:`Humanity's Last Exam`,scale:`fraction`},lcr:{label:`Long-context reasoning`,scale:`fraction`},livecodebench:{label:`LiveCodeBench`,scale:`fraction`},scicode:{label:`SciCode`,scale:`fraction`},math_500:{label:`MATH-500`,scale:`fraction`},aime:{label:`AIME`,scale:`fraction`},aime_25:{label:`AIME 2025`,scale:`fraction`},ifbench:{label:`IFBench`,scale:`fraction`},mmlu_pro:{label:`MMLU Pro`,scale:`fraction`},tau2:{label:`τ²-bench (agentic)`,scale:`fraction`},tau_banking:{label:`τ-bench banking`,scale:`fraction`},terminalbench_hard:{label:`Terminal-Bench Hard`,scale:`fraction`},terminalbench_v2_1:{label:`Terminal-Bench 2.1`,scale:`fraction`}};function ks(e){return(e.credentialVariants??[]).filter(e=>!e.operatorOnly)}function As(e){let t=new Set(e.map(e=>e.definition.id));return e.filter(e=>!e.definition.clientGroup||e.definition.clientGroup===e.definition.id||!t.has(e.definition.clientGroup))}function js(e,t){return e.filter(e=>e.definition.id===t||e.definition.clientGroup===t&&e.definition.id!==t)}function Ms(e){return As(e).filter(e=>e.definition.enabled&&e.definition.credentialClass!==`none`&&e.definition.poolOnly!==!0&&T(e.definition.id)&&!D(e.definition.id))}function Ns(e){if(!e)return!1;try{let t=new URL(e).hostname.toLowerCase();return t===`127.0.0.1`||t===`localhost`||t===`::1`||t===`[::1]`}catch{return!1}}function Ps(e,t={}){let n=e.displayName,r=t.credentialClass??e.credentialClass,i=t.baseUrl??e.baseUrl;return e.id===`oonacode`?{kind:`pool`,badge:`via OonaCode`,detail:`Runs on OonaCode's own provider accounts, through the OonaCode gateway. Priced models are billed to your account in credits; free models cost nothing on any plan.`,viaGateway:!0}:e.engine===`agy`?{kind:`subscription-direct`,badge:`agy · direct to Google`,detail:`Runs on Google’s own agy CLI on this PC, with your Google plan. Each request is recorded here and goes straight from this PC to Google — never through the OonaCode gateway, and OonaCode does not translate it.`,viaGateway:!1}:e.route===`direct`?{kind:`subscription-direct`,badge:`direct to provider`,detail:`Your ${n} subscription runs straight from this PC to the provider — it never passes through the OonaCode gateway.`,viaGateway:!1}:r===`api_key`&&e.kind!==`anthropic-passthrough`?{kind:`own-key-translated`,badge:`direct to provider`,detail:`Your ${n} key stays on this PC: OonaCode translates the request here and calls ${n} from this machine. The gateway sees neither the key nor the traffic.`,viaGateway:!1}:Ns(i)?{kind:`local-server`,badge:`on this machine`,detail:`Runs against ${n} on this machine (${i}) — the request never leaves the PC.`,viaGateway:!1}:r===`api_key`&&e.kind===`anthropic-passthrough`&&e.directCapable===!0?{kind:`own-key-direct`,badge:`direct to provider`,detail:`Your ${n} key runs straight from this PC to ${n} — the OonaCode gateway is not in the path.`,viaGateway:!1}:{kind:`gateway`,badge:`via OonaCode`,detail:`Routed to ${n} through the OonaCode gateway.`,viaGateway:!0}}var Fs=Xo(`type`,[Ko({type:is(`oauth-device`),deviceAuthorizationUrl:W().url(),tokenUrl:W().url(),clientId:W().min(1),scopes:Wo(W().min(1)).min(1),signInLabel:W().min(1).optional(),referrer:W().min(1).optional()}),Ko({type:is(`openai-device`),deviceAuthorizationUrl:W().url(),pollUrl:W().url(),tokenUrl:W().url(),verificationUri:W().url(),redirectUri:W().url(),clientId:W().min(1),signInLabel:W().min(1).optional()})]),Is=Ko({type:is(`google-loopback`),authorizationUrl:W().url(),tokenUrl:W().url(),redirectUri:W().url(),scopes:Wo(W().min(1)).min(1),clientIdSetting:W().min(1),clientSecretSetting:W().min(1),userinfoUrl:W().url().optional(),signInLabel:W().min(1).optional()}),Ls=Ko({id:W().min(1),displayName:W().min(1),upstreamId:W().min(1).optional(),servedBy:Wo(W().min(1)).optional(),subscriptionServedBy:Wo(W().min(1)).optional(),contextWindow:Po().int().positive().optional(),maxOutputTokens:Po().int().positive().optional(),supportsTools:Ro().optional(),supportsThinking:Ro().optional(),effortLevels:Wo(ns(be)).optional(),defaultEffort:ns(be).optional(),helperModel:W().min(1).optional(),supportsVision:Ro().optional(),inputPricePerM:Po().nonnegative().optional(),outputPricePerM:Po().nonnegative().optional(),creditsPerM:Ko({input:Po().nonnegative(),output:Po().nonnegative(),maxInput:Po().nonnegative().optional(),maxOutput:Po().nonnegative().optional()}).optional(),notes:W().optional(),free:Ro().optional(),aaIntelligence:Po().optional(),aaCoding:Po().optional(),aaOutputTps:Po().optional(),aaTtft:Po().optional(),aa:Ko({fetchedAt:W(),creator:W().optional(),releaseDate:W().optional(),benchmarks:es(W(),Po()).optional()}).loose().optional()}).loose(),Rs=Ko({id:W().regex(/^[a-z0-9][a-z0-9-]{1,40}$/,`provider id must be lowercase kebab-case`),displayName:W().min(1),kind:ns([`anthropic-passthrough`,`openai-compatible`,`gemini`]),route:ns([`gateway`,`direct`]),credentialClass:ns([`api_key`,`subscription`,`none`]),baseUrl:W().url(),messagesPath:W().startsWith(`/`).optional(),modelsPath:W().startsWith(`/`).optional(),auth:Ko({header:ns([`x-api-key`,`authorization-bearer`,`api-key`,`none`]),extraHeaders:es(W(),W()).optional()}),models:Wo(Ls),defaultModel:W().min(1),modelAliases:es(W(),W()).optional(),helperModel:W().min(1).optional(),capabilities:Ko({streaming:Ro(),tools:Ro(),thinking:Ro(),vision:Ro(),countTokens:Ro(),promptCaching:Ro(),promptCacheTtlSec:Po().int().positive().optional()}),translate:Ko({maxTokensParam:ns([`max_tokens`,`max_completion_tokens`]).optional(),reasoningEffortFromBudget:Ro().optional(),reasoningContentField:W().nullable().optional(),supportsParallelToolCalls:Ro().optional(),systemRole:ns([`system`,`developer`]).optional(),streamIncludeUsage:Ro().optional(),wire:ns([`chat`,`responses`,`gemini-code-assist`]).optional()}).optional(),passthrough:Ko({stripCacheControl:Ro().optional(),cacheChain:Ro().optional(),toolSchemaRequiredArray:Ro().optional(),toolDescriptionRequired:Ro().optional(),keepOutputConfig:Ro().optional(),allowedBetas:Wo(W()).optional(),anthropicVersion:W().optional()}).optional(),userBaseUrl:Ro().optional(),engineEnv:es(W(),W()).optional(),directCapable:Ro().optional(),subscriptionLogin:Fs.optional(),museCliLogin:Ko({type:is(`muse-cli`),signInLabel:W().min(1).optional()}).optional(),poolOnly:Ro().optional(),contributorMode:Ko({suffix:W().min(1),summary:W().min(1)}).optional(),phase:Jo([is(1),is(2)]),enabled:Ro(),docsUrl:W().url().optional(),notes:W().optional(),references:Wo(Ko({label:W().min(1),url:W().url(),kind:ns([`docs`,`pricing`,`models`,`console`,`status`,`keys`,`signup`,`other`]).optional()})).optional(),keyFormat:W().optional(),credentialVariants:Wo(Ko({id:W().min(1),label:W().min(1),header:ns([`x-api-key`,`authorization-bearer`,`api-key`,`none`]).optional(),extraHeaders:es(W(),W()).optional(),operatorOnly:Ro().optional(),requiresClaudeCodeIdentity:Ro().optional(),subscriptionLogin:Fs.optional(),loopbackLogin:Is.optional(),agyLogin:Ko({type:is(`agy-server`),signInLabel:W().optional()}).optional(),codexLogin:Ko({type:is(`codex-server`),signInLabel:W().optional()}).optional(),museLogin:Ko({type:is(`muse-server`),signInLabel:W().optional()}).optional(),claudeCodeShape:Ko({betas:W().min(1),userAgent:W().min(1),billingHeader:W().min(1),headers:es(W(),W()).optional()}).optional(),baseUrl:W().url().optional(),keyFormat:W().optional(),notes:W().optional()})).optional(),adminGroup:W().optional(),clientGroup:W().optional(),recordLabel:W().optional(),engine:is(`agy`).optional(),effortLevels:Wo(ns(be)).optional(),defaultEffort:ns(be).optional()});Ko({version:Po().int().positive(),updatedAt:W(),providers:Wo(Rs)});function zs(e,t){return Bs(e,Ys(e,t))}function Bs(e,t){return e.models.find(e=>e.id===t)?.upstreamId??t}function Vs(e){return/^claude-/i.test(e)}function Hs(e){return/^claude-.+-\d{8}$/i.test(e)?e.replace(/-\d{8}$/,``):null}function Us(e){return e.replace(/\[1m\]$/i,``)}var Ws=new Set([`opus`,`sonnet`,`haiku`,`fable`]);function Gs(e){return Ws.has(e.toLowerCase())}function Ks(e,t){let n=Us(t);if(Gs(n)||e.models.some(e=>e.id===n))return null;let r=e.modelAliases;if(!r)return null;let i=Hs(n);if(i!==null&&e.models.some(e=>e.id===i))return null;let a=r[n]??(i===null?void 0:r[i]);return a!==void 0&&e.models.some(e=>e.id===a)?a:null}function qs(e,t){return{images:e.models.find(e=>e.id===t)?.supportsVision??e.capabilities.vision,documents:Vs(t)}}function Js(e,t,n){let r=qs(e,t),i=new Set;for(let e of n){let t=e?.type;(t===`image`||t===`document`)&&i.add(t)}let a=e.models.find(e=>e.id===t)?.displayName??t;return i.size>0&&e.engine===`agy`&&(!r.images||!r.documents)?`${a} runs on Google's agy, which takes text only — no pictures or PDFs on any agy model. Pick a model of another provider (OonaCode, Claude, …) to send it.`:i.has(`image`)&&!r.images?`${a} cannot read images. Remove the image, or pick a model that can — the model details say which.`:i.has(`document`)&&!r.documents?`${a} cannot read PDF documents — only Anthropic's Claude models take a PDF. Attach it as text, or pick a Claude model.`:null}function Ys(e,t){if(!t)return e.defaultModel;if(e.models.some(e=>e.id===t))return t;let n=e.modelAliases?.[t];if(n)return n;let r=Ks(e,t);if(r)return r;let i=t.toLowerCase(),a=i.includes(`haiku`)?`haiku`:i.includes(`opus`)?`opus`:i.includes(`sonnet`)?`sonnet`:i.includes(`fable`)?`fable`:null;if(a){if(e.modelAliases?.[a])return e.modelAliases[a];let t=e.models.find(e=>e.id.toLowerCase().includes(a));if(t)return t.id}return e.defaultModel}var Xs={messages:`/v1/messages`,countTokens:`/v1/messages/count_tokens`,models:`/v1/models`,providerMessages:e=>`/p/${e}/v1/messages`,providerCountTokens:e=>`/p/${e}/v1/messages/count_tokens`,providerModels:e=>`/p/${e}/v1/models`,voiceTranslation:`/v1/oonacode/voice-translation`,health:`/api/health`,streamCheck:`/api/stream-check`,register:`/api/auth/register`,login:`/api/auth/login`,refresh:`/api/auth/refresh`,logout:`/api/auth/logout`,me:`/api/auth/me`,prelogin:`/api/auth/prelogin`,tokens:`/api/me/tokens`,token:e=>`/api/me/tokens/${e}`,tokenPurge:e=>`/api/me/tokens/${e}/purge`,tokenUsage:e=>`/api/me/tokens/${e}/usage`,providers:`/api/me/providers`,provider:e=>`/api/me/providers/${e}`,providerTest:e=>`/api/me/providers/${e}/test`,routing:`/api/me/routing`,usage:`/api/me/usage`,usageSession:e=>`/api/me/usage/sessions/${e}`,usageBreakdown:`/api/me/usage/breakdown`,devices:`/api/me/devices`,pushToken:`/api/me/push-token`,hostNotify:`/api/me/hosts/notify`,device:e=>`/api/me/devices/${e}`,hosts:`/api/me/hosts`,hostHeartbeat:`/api/me/hosts/heartbeat`,hostVaultUnlock:e=>`/api/me/hosts/${encodeURIComponent(e)}/vault-unlock`,host:e=>`/api/me/hosts/${encodeURIComponent(e)}`,vault:`/api/me/vault`,vaultEvents:`/api/me/vault/events`,registry:`/api/registry`,agentTools:`/api/agent-tools`,agentToolCalls:`/api/me/agent-tools/calls`,poolReleaseSession:`/api/me/pool/release-session`,poolAutoRoute:`/api/me/pool/auto-route`,releasesLatest:`/api/releases/latest`,releasesHistory:`/api/releases`,team:`/api/me/team`,teamInvites:`/api/me/team/invites`,teamInvite:e=>`/api/me/team/invites/${e}`,teamInviteLookup:`/api/team/invites/lookup`,teamInviteDecline:`/api/team/invites/decline`,teamJoin:`/api/me/team/join`,teamInvitations:`/api/me/team/invitations`,teamInvitationAccept:e=>`/api/me/team/invitations/${e}/accept`,teamInvitationDecline:e=>`/api/me/team/invitations/${e}/decline`,teamMember:e=>`/api/me/team/members/${e}`,teamLeave:`/api/me/team/leave`,teamTransfer:`/api/me/team/transfer`,teamAudit:`/api/me/team/audit`,teamCheckout:`/api/me/team/checkout`,teamTopup:`/api/me/team/topup`,teamSeats:`/api/me/team/seats`,googleConfig:`/api/auth/google/config`,googleStart:`/api/auth/google/start`,googleCallback:`/api/auth/google/callback`,githubConfig:`/api/auth/github/config`,githubStart:`/api/auth/github/start`,githubCallback:`/api/auth/github/callback`,googleUnlink:`/api/me/google`,telegramConfig:`/api/auth/telegram/config`,telegramAuth:`/api/auth/telegram`,telegram:`/api/me/telegram`,telegramWebhook:`/api/webhooks/telegram`,passphraseSetup:`/api/auth/passphrase/setup`,passphraseRekey:`/api/me/passphrase/rekey`,recovery:`/api/me/recovery`,recoveryChallenge:`/api/auth/recovery/challenge`,recoveryConsume:`/api/auth/recovery/consume`,deviceApprovals:`/api/me/device-approvals`,deviceApproval:e=>`/api/me/device-approvals/${e}`,deviceApprovalApprove:e=>`/api/me/device-approvals/${e}/approve`,deviceApprovalDeny:e=>`/api/me/device-approvals/${e}/deny`,passwordResetRequest:`/api/auth/password-reset/request`,passwordResetConfirm:`/api/auth/password-reset/confirm`,vaultRekeyComplete:`/api/me/vault/rekey-complete`,vaultRekeyPending:`/api/me/vault/rekey-pending`,emailVerifySend:`/api/auth/email/verify/send`,emailVerifyConfirm:`/api/auth/email/verify/confirm`,emailVerifyWatch:`/api/auth/email/verify/watch`,twoFactor:`/api/me/2fa`,twoFactorEnroll:`/api/me/2fa/enroll`,twoFactorConfirm:`/api/me/2fa/confirm`,twoFactorDisable:`/api/me/2fa/disable`,twoFactorDisableRequest:`/api/me/2fa/disable/request`,twoFactorRecoveryCodes:`/api/me/2fa/recovery-codes`,twoFactorVerify:`/api/auth/2fa/verify`,deviceLinkStart:`/api/auth/device/start`,deviceLinkPoll:`/api/auth/device/poll`,deviceLinks:`/api/me/device-links`,deviceLink:e=>`/api/me/device-links/${e}`,deviceLinkApprove:e=>`/api/me/device-links/${e}/approve`,deviceLinkDeny:e=>`/api/me/device-links/${e}/deny`,hostLogs:`/api/me/hosts/logs`,errorReport:`/api/me/errors`,bugReports:`/api/me/bug-reports`,plans:`/api/plans`,myPlan:`/api/me/plan`,checkout:`/api/me/plan/checkout`,creditsTopup:`/api/me/credits/topup`,billing:`/api/me/billing`},Zs=2048,Qs=16384,$s=8e3,ec=5242880,tc=12582912;new Set(`BCDFGHJKLMNPQRSTVWXZ`.split(``));var nc=`discard-my-vault-and-history`,rc=`Anyone who can use this device can use your saved provider keys without your passphrase. Turn this off on shared or public computers. You can revoke it any time from Devices.`,ic={notes:100,title:80,text:1e5,totalText:1e6},ac={name:120,instructions:2e4,goal:2e3,repositories:50,repositoryUrl:500,memory:2e4,minIntervalFloor:1,minIntervalCeiling:10080},oc=`⏰ Scheduled task "`;function sc(e){if(!e.startsWith(oc))return null;let t=e.indexOf(`"
|
|
76
|
+
|
|
77
|
+
`,18);return t<0?null:{title:e.slice(18,t),prompt:e.slice(t+3)}}Object.freeze({tengu_amber_sentinel:!0,tengu_groovy_eclipse:!0,tengu_humble_hammock:!0});function cc(e){return e===null||!Number.isFinite(e)?`neutral`:e>30?`ok`:e>10?`warn`:`danger`}var lc=[`mon`,`tue`,`wed`,`thu`,`fri`,`sat`,`sun`],uc=/^([01]\d|2[0-3]):[0-5]\d$/;Ko({tz:W().min(1),windows:Wo(Ko({from:W().regex(uc,`HH:MM`),to:W().regex(uc,`HH:MM`),days:Wo(ns(lc)).optional(),kind:ns([`peak`,`offpeak`])})),offpeakDiscount:Po().nonnegative().max(1).optional()});var dc=[`priceInputCacheMissPeak`,`priceInputCacheMissOffpeak`,`priceInputCacheHitPeak`,`priceInputCacheHitOffpeak`,`priceCacheWritePeak`,`priceCacheWriteOffpeak`,`priceOutputPeak`,`priceOutputOffpeak`],fc=Ko({inputCacheMiss:Po().nonnegative(),inputCacheHit:Po().nonnegative().optional(),cacheWrite:Po().nonnegative().optional(),output:Po().nonnegative()});Ko({by:is(`prompt_tokens`),tiers:Wo(Ko({upToPromptTokens:Po().int().positive().optional(),price:fc.optional(),cost:fc.optional()})).min(1),note:W().optional()}).superRefine((e,t)=>{let n=0;e.tiers.forEach((r,i)=>{!r.cost&&!r.price&&t.addIssue({code:`custom`,message:`a tier needs its cost (the provider’s rates; retail is cost × the record’s ratio)`,path:[`tiers`,i,`cost`]});let a=r.upToPromptTokens;if(a===void 0){i!==e.tiers.length-1&&t.addIssue({code:`custom`,message:`only the LAST tier may omit upToPromptTokens`,path:[`tiers`,i]});return}a<=n&&t.addIssue({code:`custom`,message:`tiers must ascend: ${a} does not exceed ${n}`,path:[`tiers`,i,`upToPromptTokens`]}),n=a})}),[...dc];var pc={realtime:`/v1/realtime`,translations:`/v1/realtime/translations`,live:`/v1/live/sessions`,speechStream:`/v1/audio/speech/stream`,transcriptionStream:`/v1/audio/transcriptions/stream`,clientSecrets:`/v1/realtime/client_secrets`,translationClientSecrets:`/v1/realtime/translations/client_secrets`};pc.realtime,pc.translations,pc.live,pc.speechStream,pc.transcriptionStream;var mc=`M0.72 12a11.28 11.28 0 1 0 22.56 0a11.28 11.28 0 1 0 -22.56 0ZM4.8 12a7.2 7.2 0 1 0 14.4 0a7.2 7.2 0 1 0 -14.4 0ZM7.44 12a4.56 4.56 0 1 0 9.12 0a4.56 4.56 0 1 0 -9.12 0Z`,hc=`M14.234 10.162 22.977 0h-2.072l-7.591 8.824L7.251 0H.258l9.168 13.343L.258 24H2.33l8.016-9.318L16.749 24h6.993zm-2.837 3.299-.929-1.329L3.076 1.56h3.182l5.965 8.532.929 1.329 7.754 11.09h-3.182z`,gc=`M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z`,_c=`M11.04 19.32Q12 21.51 12 24q0-2.49.93-4.68.96-2.19 2.58-3.81t3.81-2.55Q21.51 12 24 12q-2.49 0-4.68-.93a12.3 12.3 0 0 1-3.81-2.58 12.3 12.3 0 0 1-2.58-3.81Q12 2.49 12 0q0 2.49-.96 4.68-.93 2.19-2.55 3.81a12.3 12.3 0 0 1-3.81 2.58Q2.49 12 0 12q2.49 0 4.68.96 2.19.93 3.81 2.55t2.55 3.81`,vc={oonacode:{hex:`#000000`,owner:`OonaCode`,d:mc,fillRule:`evenodd`},anthropic:{hex:`#D97757`,owner:`Anthropic`,d:`m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578 1.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.0182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z`},"anthropic-subscription":{hex:`#D97757`,owner:`Anthropic`,d:`m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578 1.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.0182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z`},openai:{hex:`#000000`,owner:`OpenAI`,d:gc},xai:{hex:`#000000`,owner:`xAI`,d:hc},deepseek:{hex:`#5786FE`,owner:`DeepSeek`,d:`M23.748 4.651c-.254-.124-.364.113-.512.233-.051.04-.094.09-.137.137-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.155-.708-.311-.955-.65-.172-.24-.219-.509-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.094.172.187.129.323-.082.28-.18.553-.266.833-.055.179-.137.218-.328.14a5.5 5.5 0 0 1-1.737-1.179c-.857-.828-1.631-1.743-2.597-2.46a12 12 0 0 0-.689-.47c-.985-.957.13-1.743.387-1.836.27-.098.094-.433-.778-.428-.872.003-1.67.295-2.687.685a3 3 0 0 1-.465.136 9.6 9.6 0 0 0-2.883-.101c-1.885.21-3.39 1.1-4.497 2.622C.082 8.776-.231 10.854.152 13.02c.403 2.284 1.568 4.175 3.36 5.653 1.857 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.132-.284 4.994-1.86.47.234.962.328 1.78.398.629.058 1.235-.031 1.705-.129.735-.155.684-.836.418-.961-2.155-1.004-1.682-.595-2.112-.926 1.095-1.295 2.768-3.598 3.284-6.733.05-.346.115-.834.108-1.114-.004-.171.035-.238.23-.257a4.2 4.2 0 0 0 1.545-.475c1.397-.763 1.96-2.016 2.093-3.517.02-.23-.004-.467-.247-.588M11.58 18.168c-2.088-1.642-3.101-2.183-3.52-2.16-.39.024-.32.472-.234.763.09.288.207.487.371.74.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.168-1.361-.801-2.5-1.86-3.301-3.306-.775-1.393-1.225-2.888-1.299-4.482-.02-.385.094-.522.477-.592a4.7 4.7 0 0 1 1.53-.038c2.131.311 3.946 1.264 5.467 2.774.868.86 1.525 1.887 2.202 2.89.72 1.066 1.494 2.082 2.48 2.915.348.291.626.513.892.677-.802.09-2.14.109-3.055-.615zm1.001-6.44a.306.306 0 0 1 .415-.287.3.3 0 0 1 .113.074.3.3 0 0 1 .086.214c0 .17-.136.307-.308.307a.303.303 0 0 1-.306-.307m3.11 1.596c-.2.081-.4.151-.591.16a1.25 1.25 0 0 1-.798-.254c-.274-.23-.47-.358-.551-.758a1.7 1.7 0 0 1 .015-.588c.07-.327-.007-.537-.238-.727-.188-.156-.426-.199-.689-.199a.6.6 0 0 1-.254-.078.253.253 0 0 1-.114-.358 1 1 0 0 1 .192-.21c.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.392.451.462.576.685.915.176.264.336.536.446.848.066.194-.02.353-.25.45`},qwen:{hex:`#6950EF`,owner:`Alibaba`,d:`M23.919 14.545 20.817 9.17l1.47-2.544a.56.56 0 0 0 0-.566l-1.633-2.83a.57.57 0 0 0-.49-.283h-6.207L12.487.402a.57.57 0 0 0-.49-.284H8.732a.56.56 0 0 0-.49.284L5.139 5.775h-2.94a.56.56 0 0 0-.49.284L.077 8.887a.56.56 0 0 0 0 .567L3.18 14.83l-1.47 2.545a.56.56 0 0 0 0 .566l1.634 2.83a.57.57 0 0 0 .49.283h6.205l1.47 2.545a.57.57 0 0 0 .49.284h3.266a.57.57 0 0 0 .49-.284l3.104-5.375h2.94a.57.57 0 0 0 .49-.283l1.634-2.828a.55.55 0 0 0-.004-.568M8.733.686l1.634 2.828-1.634 2.828H21.8L20.164 9.17H7.425L5.63 6.06Zm1.306 19.801-6.205-.002 1.634-2.83h3.265L2.201 6.344h3.267q3.182 5.517 6.367 11.032zm10.124-5.66L18.53 12l-6.532 11.315-1.634-2.83c2.129-3.673 4.25-7.351 6.373-11.028h3.592l3.102 5.374z`},"xai-subscription":{hex:`#000000`,owner:`xAI`,d:hc},"openai-subscription":{hex:`#000000`,owner:`OpenAI`,d:gc},"openai-codex":{hex:`#000000`,owner:`OpenAI`,d:gc},"google-agy":{hex:`#8E75B2`,owner:`Google`,d:_c},antigravity:{hex:`#8E75B2`,owner:`Google`,d:_c},glm:{hex:`#2D2D2D`,owner:`Z.ai`,d:`M12.606 1.806l-1.677 2.388c-0.258 0.374-0.697 0.606-1.161 0.606h-9.162V1.794C0.594 1.806 12.606 1.806 12.606 1.806zM24 1.806L9.6 22.206 0 22.206 14.4 1.806zM11.394 22.206l1.69-2.4c0.258-0.374 0.697-0.606 1.161-0.606h9.149v3.006H11.394z`},mimo:{hex:`#FF6900`,owner:`Xiaomi`,d:`M12 0C8.016 0 4.756.255 2.493 2.516.23 4.776 0 8.033 0 12.012c0 3.98.23 7.235 2.494 9.497C4.757 23.77 8.017 24 12 24c3.983 0 7.243-.23 9.506-2.491C23.77 19.247 24 15.99 24 12.012c0-3.984-.233-7.243-2.502-9.504C19.234.252 15.978 0 12 0zM4.906 7.405h5.624c1.47 0 3.007.068 3.764.827.746.746.827 2.233.83 3.676v4.54a.15.15 0 0 1-.152.147h-1.947a.15.15 0 0 1-.152-.148V11.83c-.002-.806-.048-1.634-.464-2.051-.358-.36-1.026-.441-1.72-.458H7.158a.15.15 0 0 0-.151.147v6.98a.15.15 0 0 1-.152.148H4.906a.15.15 0 0 1-.15-.148V7.554a.15.15 0 0 1 .15-.149zm12.131 0h1.949a.15.15 0 0 1 .15.15v8.892a.15.15 0 0 1-.15.148h-1.949a.15.15 0 0 1-.151-.148V7.554a.15.15 0 0 1 .151-.149zM8.92 10.948h2.046c.083 0 .15.066.15.147v5.352a.15.15 0 0 1-.15.148H8.92a.15.15 0 0 1-.152-.148v-5.352a.15.15 0 0 1 .152-.147Z`}};function yc(e){return vc[e]??null}function bc(e){let t=e.replace(/\(.*?\)/g,` `).split(/[\s/_-]+/).filter(Boolean);return t.length===0?`?`:t.length===1?t[0].slice(0,2).toUpperCase():`${t[0][0]}${t[1][0]}`.toUpperCase()}var xc=9230,Sc=1024,Cc=65534,wc=`127.0.0.1`;Object.freeze({enabled:!1,port:xc,inspectMain:!1}),Object.freeze({port:null,listening:!1,fromCommandLine:!1,inspectPort:null,inspectProblem:null});function Tc(e){return e+1}function Ec(e){return typeof e==`number`&&Number.isInteger(e)}function Dc(e){return!Ec(e)||e<1024||e>65534?`The port must be a whole number from ${Sc.toLocaleString(`en-US`)} to ${Cc.toLocaleString(`en-US`)} (the main-process inspector takes the next one).`:null}function Oc(e){return e.port!==null||e.inspectPort!==null}function kc(e,t){let n=e.enabled?e.port:null,r=e.enabled&&e.inspectMain?Tc(e.port):null;return!t.fromCommandLine&&t.port!==n||t.inspectPort!==r}function Ac(e){let t=[];return e.port!==null&&t.push(`${wc}:${e.port}`),e.inspectPort!==null&&t.push(`${wc}:${e.inspectPort}`),t.length===2?`${t[0]} (windows) and ${t[1]} (main process)`:e.inspectPort===null?t[0]??``:`${t[0]} (main process)`}var jc=[`stable`,`dev`];function Mc(e){return typeof e==`string`&&jc.includes(e)}function Nc(e){if(typeof e!=`string`)return null;let t=e.trim().toLowerCase();return Mc(t)?t:null}var Pc=[`win32`,`linux`,`darwin`],Fc=[`x64`,`arm64`];function Ic(e,t){let n=Nc(e)??`stable`,r=[];return n!==`stable`&&r.push(`channel=${encodeURIComponent(n)}`),t&&Pc.includes(t.platform)&&(r.push(`platform=${t.platform}`),t.arch&&Fc.includes(t.arch)&&r.push(`arch=${t.arch}`)),r.length>0?`${Xs.releasesLatest}?${r.join(`&`)}`:Xs.releasesLatest}function Lc(e,t){let n=Nc(t)??`stable`;return n===`stable`?e:`${e} (${n})`}var Rc={safeguards:`safeguards`,safety_filters:`safety filters`},zc=[{vendor:`Alibaba (Model Studio / DashScope — Qwen, and the DeepSeek/GLM it hosts)`,seenAs:`400 {"error":{"code":"data_inspection_failed","message":"Input data may contain inappropriate content."}}`,pattern:/data[_ ]?inspection[_ ]?failed|may contain inappropriate content/i},{vendor:`Zhipu (GLM)`,seenAs:`400 {"error":{"code":"1301","message":"系统检测到输入或生成内容可能包含不安全或敏感内容…"}} (contentFilter)`,pattern:/"code"\s*:\s*"?1301"?|不安全或敏感内容|unsafe or sensitive content|contentFilter/i},{vendor:`DeepSeek`,seenAs:`400 {"error":{"message":"Content Exists Risk","type":"invalid_request_error"}}`,pattern:/content exists risk/i},{vendor:`Moonshot (Kimi)`,seenAs:`400 {"error":{"type":"content_filter","message":"The request was rejected because it was considered high risk"}}`,pattern:/"type"\s*:\s*"content_filter"|considered high risk/i},{vendor:`xAI (Grok)`,seenAs:`400 "Content violates usage guidelines. Failed check: SAFETY_CHECK_TYPE_…"`,pattern:/content violates usage guidelines|SAFETY_CHECK_TYPE_/i},{vendor:`OpenAI (and Azure-style filters)`,seenAs:`400 {"error":{"code":"content_filter" | "content_policy_violation" | "moderation_blocked"}}`,pattern:/"code"\s*:\s*"(?:content_filter|content_policy_violation|moderation_blocked)"/i},{vendor:`Google (Gemini)`,seenAs:`This request was blocked by Gemini's filters. They can occasionally trigger by mistake on safe coding, security, or biology-related queries.`,pattern:/blocked by Gemini(?:'s)? filters|Gemini(?:'s)? filters/i}],Bc=/blocked by (?:the )?(?:content[ -]safety|Gemini(?:'s)?) filters?|content safety filters?|blocked by Gemini(?:'s)? filters?/i,Vc=/blocked by Gemini(?:'s)? filters|Gemini(?:'s)? filters\.? They can occasionally trigger/i;function Hc(e){return typeof e==`string`&&Vc.test(e)}function Uc(e){return typeof e!=`string`||e===``||!/^\s*(?:Failed to authenticate\.\s*)?API Error\b/i.test(e)?null:zc.find(t=>t.pattern.test(e))??null}function Wc(e){return typeof e==`string`&&(Hc(e)||Bc.test(e)&&/blocked/i.test(e))}var Gc=`:free`;function Kc(e){return e.endsWith(Gc)}function qc(e){return Kc(e)?e.slice(0,-5):e}var Jc=`model_refusal_fallback`,Yc=`model_refusal_no_fallback`;function Xc(e){return typeof e==`string`&&e.trim()!==``?e.trim():null}function Zc(e,t,n){return Xc(e[t])??Xc(e[n])}function Qc(e){if(typeof e!=`object`||!e)return null;let t=e,n=t.subtype,r=n===`model_refusal_fallback`?`fallback`:n===`model_refusal_no_fallback`?`no_fallback`:t.kind===`fallback`||t.kind===`no_fallback`?t.kind:null;if(!r||t.type!==void 0&&t.type!==`system`)return null;let i=t.retracted_message_uuids??t.retractedMessageUuids??t.retractedUuids;return{kind:r,scope:t.scope===`local`?`local`:`session`,originalModel:Zc(t,`original_model`,`originalModel`),fallbackModel:r===`fallback`?Zc(t,`fallback_model`,`fallbackModel`):null,category:Zc(t,`api_refusal_category`,`apiRefusalCategory`)??Xc(t.category),explanation:Zc(t,`api_refusal_explanation`,`apiRefusalExplanation`)??Xc(t.explanation),text:typeof t.content==`string`?t.content.trim():Xc(t.text)??``,retractedUuids:Array.isArray(i)?i.filter(e=>typeof e==`string`):[]}}function $c(e,t){switch(t.type){case`notice`:return t.notice.kind!==`fallback`||t.notice.scope!==`session`?e:{notice:t.notice,at:t.at,live:t.live};case`engine_start`:case`model_change`:return null}}function el(e,t){return!e||t.alive===!1||!e.live&&t.since!==null&&e.at!==null&&e.at<t.since?null:e}function tl(e){let t=Us(e.trim()),n=t.slice(t.lastIndexOf(`/`)+1),r=e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase(),i=n.split(`-`);if(i[0]?.toLowerCase()!==`claude`)return t;let a=i.slice(1).filter(e=>!/^\d{6,}$/.test(e)),o=a.filter(e=>!/^\d+$/.test(e)),s=a.filter(e=>/^\d+$/.test(e));return o.length!==1||s.length===0?t:`${r(o[0])} ${s.join(`.`)}`}function nl(e,t=[]){let n=Us(e.trim()),r=null;for(let e of t)for(let t of e.definition.models){if(t.id===n||Us(t.id)===n)return t.displayName;r===null&&(t.upstreamId===n||qc(t.id)===n)&&(r=t.displayName)}return r??tl(n)}function rl(e){return`${e} (safeguard)`}var il=`none`,al={mode:`auto`,model:null,perModel:{}};function ol(e){if(typeof e!=`string`)return null;let t=e.trim();return t.length>0&&t.length<=200&&/^[A-Za-z0-9._:@/[\]-]+$/.test(t)?t:null}function sl(e){return Us(e.trim()).toLowerCase()}function cl(e){let t=typeof e==`object`&&e&&!Array.isArray(e)?e:{},n=ol(t.model),r=t.mode,i=r===`off`?`off`:r===`model`&&n!==null?`model`:`auto`,a={},o=t.perModel;if(typeof o==`object`&&o&&!Array.isArray(o))for(let[e,t]of Object.entries(o)){let n=ol(e),r=t===`none`?il:ol(t);if(n!==null&&r!==null&&sl(n)!==sl(r)&&(a[sl(n)]=r,Object.keys(a).length>=64))break}return{mode:i,model:i===`model`?n:null,perModel:a}}function ll(e){return e===w}var ul=`oona settings safeguard-fallback auto`;function dl(e,t=[]){if(!e)return`the model`;let n=sl(e);return t.find(e=>sl(e.id)===n||e.upstreamId&&sl(e.upstreamId)===n)?.displayName??tl(e)}function fl(e,t=e=>dl(e)){let n=`blocked by ${Rc[e.reason]}`;if(e.outcome===`retried`)return`${n} → retried on ${e.retriedOn?t(e.retriedOn):`another model`}`;switch(e.blocked){case`off`:return`${n} · fallback off (${ul})`;case`no_model`:return`${n} · no fallback model`;case`unavailable`:return`${n} · fallback not available here`;case`refused_again`:return`${n} · fallback refused too`;case`not_retryable`:return`${n} · not retried`;default:return n}}var pl=5e4,ml=6,hl=[`bg`,`surface`,`surface-2`,`surface-3`,`border`,`fg`,`fg-muted`,`fg-faint`,`accent`,`accent-fg`,`accent-soft`,`project`,`ok`,`ok-soft`,`warn`,`warn-soft`,`danger`,`danger-soft`,`think`,`think-soft`,`code-bg`,`user-bubble`],gl={agentFinished:!1,permissionRequired:!0,errorOccurred:!0},_l={autoAcceptPermissions:!1,safeguardFallback:al,showReasoningSummaries:!0,notifications:gl,showAgentPicker:!0,transcriptWindowSize:500,openTabs:[],draftTabs:[],draftTitles:{},activeTab:null,editorLayout:null,remoteTabs:{},sessionPanelOpen:!1,explorerOpen:!1,sidebarWidth:288,sidebarPinned:!0,dismissedUpdateVersion:null,lastSeenReleaseNotes:null,claudeImportOffered:!1,claudeImportOffers:0,collapsedProjects:[],themeColors:{light:{},dark:{}},pinned:[],sidebarView:`recent`};function vl(e){return Math.min(Math.max(typeof e==`number`&&Number.isFinite(e)?Math.floor(e):0,0),3)}function yl(e){return Math.min(640,Math.max(200,typeof e==`number`&&Number.isFinite(e)?Math.round(e):288))}function bl(e){return Math.min(pl,Math.max(100,typeof e==`number`&&Number.isFinite(e)?Math.round(e):500))}function xl(e,t){return typeof e==`boolean`?e:t}function Sl(e){return typeof e==`string`&&e.length>0&&e.length<=64?e:null}function Cl(e,t=50){if(!Array.isArray(e))return[];let n=[];for(let r of e)if(!(typeof r!=`string`||r.length===0||r.length>200)&&!n.includes(r)&&(n.push(r),n.length>=t))break;return n}function wl(e,t=50){if(typeof e!=`object`||!e||Array.isArray(e))return{};let n={};for(let[r,i]of Object.entries(e))if(!(r.length===0||r.length>200)&&!(typeof i!=`string`||i.length===0||i.length>200)&&(n[r]=i,Object.keys(n).length>=t))break;return n}function Tl(e){if(typeof e!=`string`)return null;let t=e.trim();return/^#[0-9a-fA-F]{6}$/.test(t)?t.toLowerCase():null}function El(e){if(typeof e!=`object`||!e||Array.isArray(e))return{};let t={};for(let[n,r]of Object.entries(e)){if(!hl.includes(n))continue;let e=Tl(r);e!==null&&(t[n]=e)}return t}function Dl(e){let t=typeof e==`object`&&e?e:{};return{light:El(t.light),dark:El(t.dark)}}function Ol(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(typeof n!=`object`||!n)continue;let e=n.kind,r=n.id;if((e===`chat`||e===`project`)&&!(typeof r!=`string`||r.length===0||r.length>200)&&!t.some(t=>t.kind===e&&t.id===r)&&(t.push({kind:e,id:r}),t.length>=50))break}return t}function kl(e,t){if(typeof e!=`object`||!e||Array.isArray(e))return null;let n=e,r=new Set(t),i=new Set,a=0,o=(e,t)=>{if(t>ml||typeof e!=`object`||!e)return null;let n=e,s=n.group;if(typeof s==`object`&&s&&!Array.isArray(s)){if(a>=8)return null;let e=s,t=[];for(let n of Array.isArray(e.tabs)?e.tabs:[])typeof n!=`string`||!r.has(n)||i.has(n)||(i.add(n),t.push(n));return t.length===0?null:(a+=1,{group:{tabs:t,active:(typeof e.active==`string`&&t.includes(e.active)?e.active:null)??t[t.length-1]}})}let c=n.split;if(c!==`row`&&c!==`column`)return null;let l=Array.isArray(n.children)?n.children:[],u=Array.isArray(n.sizes)?n.sizes:[],d=[],f=[];if(l.slice(0,8).forEach((e,n)=>{let r=o(e,t+1);if(!r)return;d.push(r);let i=u[n];f.push(typeof i==`number`&&Number.isFinite(i)&&i>0?i:0)}),d.length===0)return null;if(d.length===1)return d[0];let p=f.filter(e=>e>0),m=p.length>0?p.reduce((e,t)=>e+t,0)/p.length:1,h=f.map(e=>e>0?e:m),g=h.reduce((e,t)=>e+t,0);return{split:c,sizes:h.map(e=>e/g),children:d}},s=o(n.root,0);if(!s||a<2)return null;let c=n.focused;return{root:s,focused:typeof c==`number`&&Number.isInteger(c)&&c>=0&&c<a?c:0}}function Al(e,t,n){return e.some(e=>e.kind===t&&e.id===n)}function jl(e,t,n,r){return r===Al(e,t,n)?e:r?[...e.length>=50?e.slice(e.length-50+1):e,{kind:t,id:n}]:e.filter(e=>e.kind!==t||e.id!==n)}function Ml(e){let t=typeof e==`object`&&e?e:{},n=typeof t.notifications==`object`&&t.notifications!==null?t.notifications:{},r=Cl(t.openTabs),i=Cl(t.draftTabs).filter(e=>!r.includes(e)),a={};for(let[e,n]of Object.entries(wl(t.draftTitles)))i.includes(e)&&(a[e]=n);let o=[...r,...i],s=t.activeTab,c=typeof s==`string`&&o.includes(s)?s:o[o.length-1]??null;return{autoAcceptPermissions:xl(t.autoAcceptPermissions,_l.autoAcceptPermissions),safeguardFallback:cl(t.safeguardFallback),showReasoningSummaries:xl(t.showReasoningSummaries,_l.showReasoningSummaries),notifications:{agentFinished:xl(n.agentFinished,gl.agentFinished),permissionRequired:xl(n.permissionRequired,gl.permissionRequired),errorOccurred:xl(n.errorOccurred,gl.errorOccurred)},showAgentPicker:xl(t.showAgentPicker,_l.showAgentPicker),transcriptWindowSize:bl(t.transcriptWindowSize),openTabs:r,draftTabs:i,draftTitles:a,activeTab:c,editorLayout:kl(t.editorLayout,o),remoteTabs:wl(t.remoteTabs),sessionPanelOpen:xl(t.sessionPanelOpen,_l.sessionPanelOpen),explorerOpen:xl(t.explorerOpen,_l.explorerOpen),sidebarWidth:yl(t.sidebarWidth),sidebarPinned:xl(t.sidebarPinned,_l.sidebarPinned),dismissedUpdateVersion:Sl(t.dismissedUpdateVersion),lastSeenReleaseNotes:Sl(t.lastSeenReleaseNotes),claudeImportOffered:xl(t.claudeImportOffered,_l.claudeImportOffered),claudeImportOffers:vl(t.claudeImportOffers),collapsedProjects:Cl(t.collapsedProjects),themeColors:Dl(t.themeColors),pinned:Ol(t.pinned),sidebarView:t.sidebarView===`projects`?`projects`:`recent`}}new Set(Object.keys(_l));var Nl=3650,Pl=[{version:`0.3.239`,date:`2026-10-16`,platforms:[`win32`],added:[`Media in every chat: the gallery button at the top right of a chat lists the photos, videos, audio, files and links you sent in it. Photos open in the viewer (← → step through them), videos and audio play in place, files open or show in their folder, and “Show in chat” jumps to the message.`],fixed:[`Google agy chats no longer flash a command window when they start. OonaCode now keeps agy up to date itself, quietly, while no agy chat is running.`,`An agy command that waits for someone to type (a password prompt, an ssh question) no longer holds the chat for hours: after 15 minutes with no output and no work, OonaCode ends that command, says so in the chat, and agy carries on.`,`The coding engine is updated (Claude Code 2.1.301): long answers are no longer cut off after three minutes of silence, a long chat no longer compacts again and again, and a tool no longer runs twice.`,`If the app’s window crashes (for example when the computer runs out of memory), it reloads by itself.`,`A chat on your own Meta Muse or ChatGPT plan that started on another provider no longer fails with “call_id must be at most 64 characters”.`,`Your other PCs keep one order in the Remote list instead of reshuffling.`,"`oona -p` with an OonaCode API key says what went wrong instead of asking you to sign in."]},{version:`0.3.239`,date:`2026-10-16`,platforms:[`darwin`],added:[`Media in every chat: the gallery button at the top right of a chat lists the photos, videos, audio, files and links you sent in it. Photos open in the viewer (← → step through them), videos and audio play in place, files open or show in their folder, and “Show in chat” jumps to the message.`],fixed:[`The coding engine is updated (Claude Code 2.1.301): long answers are no longer cut off after three minutes of silence, a long chat no longer compacts again and again, and a tool no longer runs twice.`,`If the app’s window crashes (for example when the computer runs out of memory), it reloads by itself.`,`A chat on your own Meta Muse or ChatGPT plan that started on another provider no longer fails with “call_id must be at most 64 characters”.`,`Your other PCs keep one order in the Remote list instead of reshuffling.`,`A download cut part-way during an update is resumed instead of starting over.`,"`oona -p` with an OonaCode API key says what went wrong instead of asking you to sign in."]},{version:`0.3.239`,date:`2026-10-16`,platforms:[`linux`],added:[`Media in every chat: the gallery button at the top right of a chat lists the photos, videos, audio, files and links you sent in it. Photos open in the viewer (← → step through them), videos and audio play in place, files open or show in their folder, and “Show in chat” jumps to the message.`],fixed:[`“Restart now” in Settings opens the app again instead of closing it for good.`,`The OonaCode service starts again after a quick reboot.`,`A power cut no longer empties the files that keep you signed in and unlocked.`,`A download cut part-way (weak Wi-Fi) during an install or update is resumed instead of giving up.`,`Notifications come from “OonaCode”.`,`The coding engine is updated (Claude Code 2.1.301): long answers are no longer cut off after three minutes of silence, a long chat no longer compacts again and again, and a tool no longer runs twice.`,`If the app’s window crashes (for example when the computer runs out of memory), it reloads by itself.`,`A chat on your own Meta Muse or ChatGPT plan that started on another provider no longer fails with “call_id must be at most 64 characters”.`,`Your other PCs keep one order in the Remote list instead of reshuffling.`,"`oona -p` with an OonaCode API key says what went wrong instead of asking you to sign in."]},{version:`0.3.238`,date:`2026-10-16`,added:[`Auto in the OonaCode pool: pick “Auto” and each new message runs on the pool model that suits it — how hard the task is, how big the chat is, whether a model already has the chat in its cache, speed and cost — at an effort it picks too. The model button shows which model Auto chose, like “Auto (Qwen3.8 Max)”. (It appears once OonaCode switches it on.)`,`Window control in the Tools menu: when you ask, the agent can list, hide, show, minimise, restore or focus the windows on your computer (Windows; apps on macOS; X11 and KDE on Linux).`,`The conversations popup in a chat shows when each conversation started and when it was last active.`],fixed:[`A Google agy chat that hits a temporary “service unavailable” from Google now waits a few seconds and carries on in the same conversation instead of ending the turn.`,`The agent keeps Oonak Browser’s window visible: no hidden or headless browser unless you ask for one.`]},{version:`0.3.237`,date:`2026-10-15`,platforms:[`win32`,`darwin`],added:[`When a long chat no longer fits the model, the chat shows one line saying how many earlier messages the request left out; click it for the explanation.`],fixed:[`The model picker no longer has an “All models” list, which showed the same model twice when a provider offers it both by key and by subscription. Pick a provider to see its models.`,`Google’s agy: Gemini 3.7 Flash, 3.6 Flash and 3.1 Pro are gone from the picker, because Google no longer offers them, and the picker shows only the models your own Google plan lists. A chat that was on one of them asks you to pick another model.`,`A picture or PDF attached to a chat on Google’s agy is refused with words that say agy takes text only on every one of its models, and that another provider’s model can read it.`,`A thought with no words in it (Meta Muse hides its thinking) no longer leaves an empty “Thought” card in the chat.`,`Conversations between chats read “idle” when nothing is going on.`]},{version:`0.3.237`,date:`2026-10-15`,platforms:[`linux`],added:[`The model picker is redone: your providers on the left, each with how many models it has, and the chosen provider’s models on the right, best first by independent intelligence rating. Each side has its own search. After you pick a model from another provider, its button says “next message” until your next message runs on it.`,`Every model shows its own effort levels, and the effort picker starts on the model’s default. A model with no effort levels shows no picker.`,`Meta Muse: Muse Spark 1.3 and 1.2, Wonder 1.0 and Wonder Full 1.0 — paste your Muse key in Connect or press “Sign in with Meta”.`,`ChatGPT plans: GPT-6.1 Sol, GPT-6 Sol, GPT-6 Astra and GPT-5.6 Sol when your plan lists them; chats keep their thinking across tool calls and use the effort you pick.`,`NVIDIA is back for your own NVIDIA key, with twelve hosted models that call tools. Your own SuperGrok subscription offers Grok 4.7 Fast.`,`Bring this PC into the chat: on a chat that runs on another PC, pick folders on this PC and what the chat may do there; it asks you before every change. And a Tools switch lets a chat list, read and message the chats on your other PCs.`,`Sticky notes beside the bug button, saved in your vault so they follow you to your other computers.`,`Suggest, beside Listen in every chat, proposes what to send next, and the project manager does it for several chats at once. Nothing is sent until you press Send.`,`Listen to this chat is a player with a seek bar, a speed you can change while it plays, and the spoken word highlighted.`,`A tab whose chat finished a turn you have not looked at yet wears a dot. A long chat folds old agents into one “N earlier agents” row, and every block shows its time.`,`When a long chat no longer fits the model, one line says how many earlier messages the request left out.`],fixed:[`A message sent while a chat is working, right after you picked another model, waits for the running turn and is answered by the model you picked.`,`A PC you sign in later appears in the left panel by itself.`,`A thought with no words in it no longer leaves an empty “Thought” card.`,`The Claude Code engine is updated to 2.1.296.`]},{version:`0.3.236`,date:`2026-10-14`,platforms:[`win32`,`darwin`],added:[`Every model now shows its own effort levels, and the effort picker starts on the model’s default — so you can see what level a chat really runs at. A model that has no effort levels no longer shows a picker at all.`,`A collapsed thought block now shows how the thought begins, like a command does: “Thought 42 words: First I read the file…”.`,`Meta Muse requests now match Meta’s own Muse CLI, so its thinking, tool calls, pictures and PDFs show up properly in the chat.`],fixed:[`Grok 4.5 no longer offers an “extra high” effort that xAI treats as high, and GPT-4.1 no longer shows an effort picker it cannot use.`]},{version:`0.3.235`,date:`2026-10-13`,platforms:[`win32`,`darwin`],added:[`Meta Muse: use Meta’s Muse Spark 1.3, Spark 1.2, Wonder 1.0 and Wonder Full 1.0 in your chats. Open Connect, pick Meta Muse, and either paste your Muse key or press “Sign in with Meta” — OonaCode downloads Meta’s Muse once (about 360 MB, after you agree), you confirm the code on Meta’s page, and the key is kept in your vault.`,`ChatGPT plans: GPT-6.1 Sol (500k context), GPT-6 Sol, GPT-6 Astra and GPT-5.6 Sol are available when your plan lists them, next to the models you already had.`,`Google’s agy: Gemini 4 Argon appears in the model picker when your Google plan includes it (Ultra), at Low, Medium and High.`],fixed:[]},{version:`0.3.234`,date:`2026-10-13`,platforms:[`win32`,`darwin`],added:[`Bring this PC into the chat: on a chat that runs on another PC, press the button in the chat’s toolbar, pick folders on this PC and tick Read, Create, Edit or Delete for each. The chat can then work with those files. It asks you before it creates, changes, moves or deletes anything, and the link ends when you close the tab. Both PCs need this version.`,`Chats on my other PCs: a new switch in the Tools menu lets a chat list your other PCs and their chats, read them, message them and start new chats there on the model you choose. You confirm every new chat.`,`The Tools menu now works on a chat that runs on another PC, so you can switch its tools from here.`],fixed:[`A PC you sign in after OonaCode has started now appears in the left panel by itself, without opening Settings → Devices first.`]},{version:`0.3.233`,date:`2026-10-12`,platforms:[`win32`,`darwin`],added:[`The model picker now tells you when a pick is not in use yet: after you pick a model from another provider, its button says “next message” and explains that the chat keeps running on its current model until your next message.`,`A long chat folds the agents that ran long ago into one “N earlier agents” row that says when they ran, instead of one card for each of them under your newest message.`],fixed:[`A message you send while a chat is working, right after you picked another model or provider, now waits for the running turn and is answered by the model you picked. It used to go to the model that was already running, so the chat kept answering as the old one while the picker showed the new one.`,`Every block in a chat now shows the time it happened — also the notes the app writes itself and the cards for earlier agents.`]},{version:`0.3.232`,date:`2026-10-12`,platforms:[`win32`],added:[`The model picker is redone: your providers on the left, each with how many models it has, and the chosen provider’s models on the right, best first by independent intelligence rating (unrated ones last). Each side has its own search, and the one over the providers finds a model across every provider, showing only the providers that carry it.`,`NVIDIA is back for your own NVIDIA key: twelve hosted models that call tools, among them Nemotron 3 Ultra and Super, Kimi K3, GLM-5.3, DeepSeek V4.1 Flash and Gemma 4.`],fixed:[`Models hosted as vendor/model (Kimi K3 on NVIDIA and the like) now show their intelligence rating.`]},{version:`0.3.232`,date:`2026-10-12`,platforms:[`darwin`],added:[`Sticky notes: the note button beside the bug button at the top opens your notes as tabs. Make as many as you like, name them with a double-click, and write — every change is saved by itself in your vault, so the notes follow you to your other computers. Text only.`,`Chats on your own ChatGPT plan keep their thinking across tool calls, use the effort level you pick (up to max where the model has it), and list the models your account really offers.`,`The model picker is redone: your providers on the left, each with how many models it has, and the chosen provider’s models on the right, best first by independent intelligence rating (unrated ones last). Each side has its own search, and the one over the providers finds a model across every provider, showing only the providers that carry it.`,`NVIDIA is back for your own NVIDIA key: twelve hosted models that call tools, among them Nemotron 3 Ultra and Super, Kimi K3, GLM-5.3, DeepSeek V4.1 Flash and Gemma 4.`],fixed:[`Suggest no longer starts reading the chat the moment you open it: pick how many hours to read, then press Suggest.`,`The Claude Code engine is updated to 2.1.296.`,`Models hosted as vendor/model (Kimi K3 on NVIDIA and the like) now show their intelligence rating.`]},{version:`0.3.231`,date:`2026-10-12`,platforms:[`android`],added:[`On the phone: any text in a chat can be selected and copied, and About became Session info.`],fixed:[]},{version:`0.3.230`,date:`2026-10-11`,platforms:[`win32`],added:[`Sticky notes: the note button beside the bug button at the top opens your notes as tabs. Make as many as you like, name them with a double-click, and write — every change is saved by itself in your vault, so the notes follow you to your other PCs. Text only.`,`Chats on your own ChatGPT plan keep their thinking across tool calls, use the effort level you pick (up to max where the model has it), and list the models your account really offers.`],fixed:[`Suggest no longer starts reading the chat the moment you open it: pick how many hours to read, then press Suggest.`,`A Gemini chat on your own Google plan no longer repeats, turn after turn, a command it refused earlier.`,`The Claude Code engine is updated to 2.1.296.`]},{version:`0.3.229`,date:`2026-10-11`,platforms:[`darwin`],added:[`Suggest, beside Listen in every chat: it reads the last few hours of the chat and suggests what to send it next. You edit it, put it in the message box or send it — nothing runs by itself.`,`The project manager, beside the "about" button over the chat list: tick chats, press Review, and each gets a suggestion you can edit and send with its own button.`,`A tab whose chat finished a turn you have not looked at yet wears a dot (red when the turn failed), and so does its row in the list.`,`Listen to this chat is a player: a seek bar, play and pause, ten seconds back and forward, the previous or next sentence, a speed you can change while it plays, the spoken word highlighted (click any word to play from it), and every summary listed newest first on top.`,`MCP servers: add them in Settings → MCP Servers from a directory of popular ones (PostgreSQL, Supabase, GitHub, Sentry, Slack, Notion, Linear and more) or your own, and switch each on or off per chat.`,`Connectors: Supabase, Railway and Vercel in the Tools menu — sign in once, switch one on in a chat, and the agent can look at your projects, databases, logs and deployments; read-only until you allow changes, and it asks before each one.`,`Pictures: ask any chat for an image and it makes one, saved in the chat’s folder and shown in the chat (a few credits each; Images in the Tools menu turns it off).`,`Web search for every model, from your Mac, with no key and no credits.`,`Claude Haiku 5.5 with a 1M-token window, and Grok 4.7 Fast on your own SuperGrok subscription.`,`Pasting a very long text, or a video, sound or large picture, saves it in the chat’s folder and attaches it as a file.`,`Hover a “Read …png” line in the chat and the picture shows at once.`],fixed:[`A compacted chat reopens with its whole history, not only what came after its last compaction.`,`Deleting a chat frees its OonaCode pool seat at once.`,`Large chats resume faster.`,`The chat summary (“About”) no longer fails on models that think at length.`,`A refusal by Gemini’s safety filter is retried once on another model, like the others.`,`Error notes in the chat read as plain sentences instead of codes or raw data.`,`The message navigator always shows at least four lines and no longer vanishes on the way to it.`]},{version:`0.3.228`,date:`2026-10-11`,platforms:[`win32`],added:[`Suggest, beside Listen in every chat: it reads the last few hours of the chat and suggests what to send it next. You edit it, put it in the message box or send it — nothing runs by itself.`,`The project manager, beside the "about" button over the chat list: tick chats, press Review, and each gets a suggestion you can edit and send with its own button.`,`A tab whose chat finished a turn you have not looked at yet wears a dot (red when the turn failed), and so does its row in the list.`],fixed:[]},{version:`0.3.227`,date:`2026-10-11`,platforms:[`win32`],added:[`Listen to this chat is a player: a seek bar, play and pause, ten seconds back and forward, the previous or next sentence, and a speed you can change while it plays.`,`The word being spoken is highlighted in the summary, and clicking any word plays from there.`,`Every summary the chat has is listed on top, newest first; pick one to hear it, with the languages it was already translated into.`],fixed:[]},{version:`0.3.226`,date:`2026-10-11`,platforms:[`win32`],added:[`Google Gemini (agy) chats show what agy looked at: a picture it viewed appears in the chat, and a sound or video it named plays inside the tool card.`,`Your own SuperGrok subscription offers Grok 4.7 Fast.`,`The Android app groups this PC’s chats by the project each one is filed under.`],fixed:[`Google Gemini (agy) tool steps read in words — View file, Run command, Edit — with their file or command, instead of raw arguments.`,`Your own SuperGrok sign-in presents the current Grok CLI (1.0.50), so xAI does not refuse it as outdated.`]},{version:`0.3.225`,date:`2026-10-10`,platforms:[`win32`,`linux`],added:[`Per-credential usage keys: operator credentials can now store their own console session keys (such as Xiaomi MiMo account credentials) directly in the Admin Panel to monitor individual token plan quotas and balances.`,`Google agy thinking blocks: local Google Antigravity (Gemini) sessions now extract and display model thinking blocks and rich tool arguments in chat from agy transcripts.`],fixed:[`Session info regeneration: fixed an issue where regenerating the session summary for Google Antigravity (Gemini) sessions would fail with a missing subscription token error.`,`Xiaomi MiMo cleanup: removed redundant and withdrawn mimo-v2.5 and mimo-v2.5-pro models from the registry and models catalog; replaced by mimo-v2.6-pro and mimo-v2.6-flash.`]},{version:`0.3.224`,date:`2026-10-09`,platforms:[`win32`,`linux`],added:[`Auto-save clipboard files and large pasted text: pasting text exceeding 10,000 characters or 300 lines automatically saves into your workspace .oonacode/tmp folder and attaches as a file without bloating the composer. Clipboard videos, audio, and large images are similarly saved and attached as local paths.`],fixed:[`Error display in chat: masked internal error codes, raw JSON, and provider balance exhaustion notices from the user chat bubble, displaying clean status indicators instead.`,`Google Antigravity pool plan access: included Gemini 3.8 Flash and 3.7 Flash across all active subscription plans (Standard, Pro, Team Standard, Team Premium, Free).`,`Session info panel: fixed an issue where switching between chats could leave stale child views mounted in the session info panel.`]},{version:`0.3.223`,date:`2026-10-09`,platforms:[`win32`,`linux`],added:[`MCP Servers settings & Antigravity catalog: configure stdio, sse, and http Model Context Protocol servers in File -> Settings -> MCP Servers. Choose from a rich directory of popular providers (PostgreSQL, Supabase, Redis, SQLite, MongoDB Atlas, GitHub, GitLab, Sentry, Cloudflare, Slack, Notion, Linear, PostHog, Brave Search) or add custom servers.`,`TopBar MCP badge: see your configured MCP servers count at a glance next to the Bug Report button, and click to open MCP settings directly.`,`Per-chat MCP server toggles: selectively enable or disable configured MCP servers per conversation in the composer toolbar to eliminate prompt token overhead.`],fixed:[]},{version:`0.3.222`,date:`2026-10-09`,platforms:[`win32`,`linux`],added:[],fixed:[`Chat summary "About": increased housekeeper output token headroom to prevent thinking and verbose models (e.g. Qwen, Gemini) from exceeding the token ceiling and failing with "Claude's response exceeded the 700 output token maximum".`]},{version:`0.3.221`,date:`2026-10-09`,platforms:[`win32`,`linux`],added:[`Web search for every model: all models can now search the web via keyless local DuckDuckGo search from your PC, with no extra credentials or credits needed.`,`Claude Haiku 5.5: available with 1M context, 128K output, and tiered pricing (replaces Haiku 4.5).`],fixed:[`Deleting a chat immediately frees its pool seat on the server, instead of keeping it held until the session cache window expires.`,`Session info panel headers: distinct icons for About (sparkle) and Scheduled tasks (bell) so sections no longer repeat the same info glyph.`,`Large sessions resume faster and safer with reverse-bounded transcript loading and auto-trimming to disk.`,`Gemini content safety filter blocks are now caught by safeguard fallback and retried on the fallback model.`]},{version:`0.3.220`,date:`2026-10-07`,platforms:[`win32`,`linux`],added:[],fixed:[`A chat on a Google Claude model no longer stops with “Autocompact is thrashing”. Its window was set to 100,000 tokens, so the chat compacted again right after every compaction and the engine gave up; it is now 200,000, and if the engine ever gives up this way the next message starts from a shorter history instead of repeating the same state.`]},{version:`0.3.219`,date:`2026-10-07`,platforms:[`win32`,`linux`],added:[`Pictures: ask any chat for an image — “generate a realistic tiger fighting a crocodile” — and it now makes one, with any model, the way Google’s Antigravity does. The picture is saved in the chat’s folder and shown right in the chat; click it for the full viewer. It costs a few OonaCode credits per picture, you can edit a picture file from the folder too, and it can be switched off in the Tools menu (Images).`,`The Google Claude models (typed by exact id in the model picker’s Custom model row) show their real 100,000-token window in the session panel, and the chat now compacts before the limit instead of being refused and re-sent.`],fixed:[`Google-hosted Claude and Gemini chats re-used almost none of Google’s prompt cache, so big chats ate the 5-hour window in minutes. They now reuse about 98 % of the prompt, which makes them far cheaper and faster.`,`The hidden /setcustommodel command and the admin custom-model tool are gone — the model picker’s Custom model row does the same job.`]},{version:`0.3.218`,date:`2026-10-07`,platforms:[`win32`,`linux`],added:[`Connectors: Supabase, Railway and Vercel in the Tools menu. Sign in once with the service’s own page, switch the connector on in a chat, and the agent can look at your projects, databases, logs and deployments. It is read-only until you turn on “Allow changes”, and then it asks you before every change; purchases, billing and secret or key readers are never offered. Each shows whether the service’s command-line tool is installed and can add the vendor’s own skills. In the terminal: oona connectors. Guide: /docs/connectors.`,`Hover a “Read …png” line in the chat and the picture shows at once; click the picture for the full viewer with zoom, like a picture you sent.`],fixed:[`A chat that was compacted no longer reopens showing only what came after its last compaction: the whole history is there again.`,`The message navigator always shows at least four lines, and its list no longer vanishes while the pointer crosses the gap to it.`]},{version:`0.3.217`,date:`2026-10-07`,platforms:[`darwin`],added:[`Pictures you attach open large: click one in the box or in a sent message for a viewer with zoom (buttons, wheel, drag, Fit and 100 %). Click a PDF or text file and it opens in its own program.`,`When a model refuses a message on safety grounds, OonaCode retries it once on another model and says so in the chat. Choose how in Settings → Safeguards: switch automatically, always switch to a model you pick, or never — with a fallback for each model. The same in the terminal: oona settings safeguard-fallback and --fallback-model. Works for Claude, Gemini and Google’s agy.`,`The terminal signs in two ways: your OonaCode account (through your browser) or an OonaCode API key. A fresh oona asks which; oona login --api-key-stdin stores a key for scripts, oona whoami says which one is in use, and oona logout removes it. The terminal manual is on the website: /docs/cli.`,`The conversations badge reads like the agents badge — “3 conversations · 1 active” — and the Conversations window lists every limit: messages, tokens, credits, depth, rates and the idle close.`,`A chat can start a new chat for you on another provider, model, effort or project — it asks you first, and a chat that was itself started by a chat cannot start more.`,`The message navigator’s list shows each message’s date and opens on your latest one; messages further back than 5,000 lines are greyed.`],fixed:[`A chat that was compacted no longer reopens showing only what came after its last compaction: the whole history is there again.`,`The message navigator always shows at least four lines, and its list no longer vanishes while the pointer crosses the gap to it. A click on it now takes you to older messages even while the chat is still replying (the page used to jump straight back).`,`oona: a wrong command or flag now exits with code 2, oona sessions list no longer breaks on multi-line titles, piping oona into head no longer prints an error, and the plain-prompt mode can send a message again.`,`One-shot terminal runs reuse the engine already on the Mac instead of downloading it every time, and a model you typed with /model that is not in the picker keeps its name after OonaCode restarts.`]},{version:`0.3.216`,date:`2026-10-07`,platforms:[`win32`,`linux`],added:[`The terminal signs in two ways: your OonaCode account (through your browser) or an OonaCode API key. A fresh oona asks which; oona login --api-key-stdin stores a key for scripts and servers, oona whoami says which one is in use, and oona logout removes it. The key is sealed by the host and never written to the terminal’s config.`,`The terminal manual is on the website: /docs/cli, written from commands run on Debian and Ubuntu servers.`],fixed:[`oona: a wrong command or flag now exits with code 2, oona sessions list no longer breaks on multi-line titles, piping oona into head no longer prints an error, and the plain-prompt mode can send a message again.`,`One-shot terminal runs reuse the engine already on the PC instead of downloading it every time.`,`A model you typed with /model that is not in the picker keeps its name after OonaCode restarts.`]},{version:`0.3.215`,date:`2026-10-07`,platforms:[`win32`,`linux`],added:[`Pictures you attach open large: click one in the box or in a sent message for a viewer with zoom (buttons, wheel, drag, Fit and 100 %). Click a PDF or text file and it opens in its own program.`,`When a model refuses a message on safety grounds, OonaCode retries it once on another model and says so in the chat. Choose how in Settings → Safeguards: switch automatically, always switch to a model you pick, or never — with a fallback for each model. The same in the terminal: oona settings safeguard-fallback and --fallback-model. Works for Claude, Gemini and Google’s agy.`,`The conversations badge reads like the agents badge — “3 conversations · 1 active” — and the Conversations window lists every limit: messages, tokens, credits, depth, rates and the idle close.`,`A chat can start a new chat for you on another provider, model, effort or project — it asks you first, and a chat that was itself started by a chat cannot start more.`,`The message navigator’s list shows each message’s date and opens on your latest one; messages further back than 5,000 lines are greyed.`],fixed:[`A click on the message navigator now takes you to older messages even while the chat is still replying (the page used to jump straight back).`,`The message navigator no longer touches the message times, and its lines are darker and longer.`]},{version:`0.3.214`,date:`2026-10-06`,platforms:[`darwin`],added:[`OonaCode runs natively on Apple Silicon Macs. The installer picks the Apple Silicon build by itself, and an Apple Silicon Mac that had the Intel one moves to it on its next install or update — the Intel build cannot run there on macOS 14 or older.`,`A message navigator on every chat: the small stack of lines at the middle-right of the chat is your own messages — rest on it, focus it or tap it and the list of everything you sent opens; click one and the chat scrolls straight to it.`],fixed:[`On an Apple Silicon Mac with macOS 14 or older, every chat crashed (“CPU lacks AVX support”) and Update did nothing. If yours did, run once in Terminal: curl -fsSL https://oonacode.oonak.ai/install.sh | bash`,`When an update cannot start, the app now says why and what to run instead of saying “Updating OonaCode…” while nothing happens.`,`File → Export chats… no longer freezes the window under a Save panel: the zip goes straight into Downloads and Finder shows it.`]},{version:`0.3.213`,date:`2026-10-06`,added:[`A message navigator on every chat: the small stack of lines at the middle-right of the chat is your own messages — rest on it, focus it or tap it and the list of everything you sent opens; click one and the chat scrolls straight to it. Escape closes the list.`],fixed:[],platforms:[`win32`,`linux`]},{version:`0.3.212`,date:`2026-10-06`,added:[`Headless one-shot runs without signing in: --api-key (or OONACODE_API_KEY) bills the run through the gateway on that OonaCode key — held in memory for the run only, never stored. For containers and CI.`],fixed:[`A keyed run no longer stops at the device-link screen, and no longer dies with "the OonaCode pool needs your OonaCode account": the key now also covers provider routing and the registry read on a machine that was never signed in.`],platforms:[`win32`,`linux`]},{version:`0.3.211`,date:`2026-10-06`,added:[`A message navigator on every chat: the small stack of lines at the middle-right of the chat is your own messages — rest on it and the list of everything you sent opens; click one and the chat scrolls straight to it.`,`One-shot runs without signing in: --api-key (or OONACODE_API_KEY) bills the run through the gateway on that OonaCode key — held in memory for the run only, never stored. For headless machines and containers.`],fixed:[],platforms:[`linux`]},{version:`0.3.210`,date:`2026-10-05`,added:[`Use a project folder opens on the folder the chat runs in — its project, or the workspace OonaCode made for it — instead of an empty box.`],fixed:[`Send now on one queued message no longer makes the other queued messages look sent: they stay under the chat, each with its own Send now, and get their tick when the agent reads them.`,`After you confirm the agent’s request to move a chat to another folder, the chat shows the new folder at once, not only after your next message.`]},{version:`0.3.209`,date:`2026-10-05`,platforms:[`win32`,`darwin`],added:[`Scheduled tasks say which model a run uses: always the chat’s model at the moment the task fires, named in the Scheduled tasks panel.`],fixed:[`A Google Gemini chat keeps Google’s agent running for half an hour between messages, so the next message after a pause no longer waits about four seconds for agy to start.`,`Commands run in a Google Gemini chat reach servers on your own PC (localhost) and plain http:// sites again.`]},{version:`0.3.209`,date:`2026-10-05`,platforms:[`linux`],added:[`Grok 4.7, xAI’s newest model, on the OonaCode pool and on your own SuperGrok subscription — and an effort picker for Grok 4.7, 4.6 and 4.5 (low, medium, high, extra high), sent the way xAI’s own Grok CLI sends it.`,`Every provider in the model picker shows its own logo — Google’s Gemini mark for Google, xAI’s for your SuperGrok, OpenAI’s for your ChatGPT plan, Z.ai’s for GLM — instead of two letters.`,`Scheduled tasks say which model a run uses: always the chat’s model at the moment the task fires, named in the Scheduled tasks panel.`],fixed:[`When a subscription behind the OonaCode pool refuses or fails a request, the same request is answered at once from the provider’s API key instead of showing you the error.`,`Grok on your own SuperGrok subscription and on the OonaCode pool works again: xAI started refusing the Grok CLI identity OonaCode presented as outdated.`,`When your own subscription’s sign-in stops working, the chat now says so and asks you to sign in again, instead of a confusing “own-subscription providers run directly to the provider” error.`,`A Google Gemini chat keeps Google’s agent running for half an hour between messages, so the next message after a pause no longer waits about four seconds for agy to start.`,`Commands run in a Google Gemini chat reach servers on your own PC (localhost) and plain http:// sites again.`]},{version:`0.3.208`,date:`2026-10-04`,platforms:[`win32`,`darwin`],added:[`Grok 4.7, xAI’s newest model, on the OonaCode pool and on your own SuperGrok subscription — and an effort picker for Grok 4.7, 4.6 and 4.5 (low, medium, high, extra high), sent the way xAI’s own Grok CLI sends it.`,`Every provider in the model picker shows its own logo — Google’s Gemini mark for Google, xAI’s for your SuperGrok, OpenAI’s for your ChatGPT plan, Z.ai’s for GLM — instead of two letters.`],fixed:[`When a subscription behind the OonaCode pool refuses or fails a request, the same request is answered at once from the provider’s API key instead of showing you the error.`,`Grok on your own SuperGrok subscription and on the OonaCode pool works again: xAI started refusing the Grok CLI identity OonaCode presented as outdated.`,`When your own subscription’s sign-in stops working, the chat now says so and asks you to sign in again, instead of a confusing “own-subscription providers run directly to the provider” error.`]},{version:`0.3.207`,date:`2026-10-04`,added:[`Every chat lists every provider you have connected and the OonaCode pool — Google Gemini too, whatever the chat ran on before. Switching keeps the conversation: a chat moving off Google continues with its whole history, and a chat moving onto Google gives Google’s agent the conversation so far, so it can carry on.`],fixed:[`Two messages sent a moment apart while a chat was starting no longer leave one of them stuck in the queued strip: the engine had read them together as one message, and OonaCode now recognises that.`]},{version:`0.3.206`,date:`2026-10-04`,platforms:[`win32`],added:[`Google Gemini installs Google’s agy by itself the first time you use it — open the provider in Settings → Providers, or send a message to a Google Gemini chat — instead of waiting for you to press Install.`],fixed:[`Deleting a chat now says what really happens: a chat is kept only on the PC it runs on, so deleting it there removes it everywhere.`,`oona doctor no longer tells you to change settings that OonaCode stopped reading.`]},{version:`0.3.206`,date:`2026-10-04`,platforms:[`linux`],added:[`Gemini on your own Google plan, through Google’s own agent. Open Settings → Providers → Google Gemini: OonaCode downloads Google’s agy for you and checks it. Then press Sign in with Google, sign in on Google’s own page and paste the one-time code back within the minute agy allows. OonaCode never sees your password. Every model your Google plan offers through agy is listed — Gemini 3.8, 3.7 and 3.6 Flash, Gemini 3.1 Pro, and Claude Opus 5.5, Claude Sonnet 5.5 and GPT-OSS 120B marked “via Google”. A Google Gemini chat runs Google’s agent as it is (Build or Autonomous mode, text only), and the chat’s info panel lists every request it made to Google.`,`Every provider in the model picker ends with a “Custom model…” row: type any model id and the chat runs it on that provider.`],fixed:[`The agents badge highlights what is happening now: “4 working” is blue and the total is grey.`,`Deleting a chat now says what really happens: a chat is kept only on the PC it runs on, so deleting it there removes it everywhere.`]},{version:`0.3.206`,date:`2026-10-04`,platforms:[`darwin`],added:[`Gemini on your own Google plan, through Google’s own agent. Open Settings → Providers → Google Gemini: OonaCode downloads Google’s agy for you and checks it. Then press Sign in with Google, sign in on Google’s own page and paste the one-time code back within the minute agy allows. OonaCode never sees your password. Every model your Google plan offers through agy is listed — Gemini 3.8, 3.7 and 3.6 Flash, Gemini 3.1 Pro, and Claude Opus 5.5, Claude Sonnet 5.5 and GPT-OSS 120B marked “via Google”. A Google Gemini chat runs Google’s agent as it is (Build or Autonomous mode, text only), and the chat’s info panel lists every request it made to Google.`,`Every provider in the model picker ends with a “Custom model…” row: type any model id and the chat runs it on that provider.`],fixed:[`The agents badge highlights what is happening now: “4 working” is blue and the total is grey.`,`The command line’s reinstall hint on a Mac is the one that works: curl -fsSL https://oonacode.oonak.ai/install.sh | bash.`]},{version:`0.3.205`,date:`2026-10-04`,platforms:[`win32`],added:[`Google Gemini now lists every model your Google plan offers through agy, not only Gemini: Claude Opus 5.5, Claude Sonnet 5.5 and GPT-OSS 120B (marked “via Google”) sit beside Gemini 3.8, 3.7 and 3.6 Flash and Gemini 3.1 Pro. They run on Google’s own agent with your Google plan, and have their own usage window.`],fixed:[]},{version:`0.3.204`,date:`2026-10-04`,platforms:[`win32`],added:[`Signing in to Google Gemini opens Google’s page for you and shows how many seconds are left: Google’s agy waits only one minute for the sign-in. Paste the code Google shows and it is sent at once.`],fixed:[`Signing in to Google Gemini finishes. The code you pasted never reached Google’s agy in the installed app (the window it types into dropped everything typed), so the sign-in waited out its minute and failed.`,`The Claude sign-in’s “paste the code” box, which used the same window, can type the code too.`]},{version:`0.3.203`,date:`2026-10-04`,platforms:[`win32`],added:[`Gemini on your own Google plan, through Google’s own agent. Open Settings → Providers → Google Gemini and press Install: OonaCode downloads Google’s agy for you and checks it. Then press Sign in with Google, sign in on Google’s own page and paste the one-time code back here. OonaCode never sees your password. A Google Gemini chat runs Google’s agent as it is (Build or Autonomous mode, text only, no pictures), and the chat’s info panel lists every request it made to Google.`,`Every provider in the model picker ends with a “Custom model…” row: type any model id and the chat runs it on that provider.`],fixed:[`The agents badge highlights what is happening now: “4 working” is blue and the total (“51 agents”) is grey, instead of the other way round.`]},{version:`0.3.202`,date:`2026-10-03`,platforms:[`darwin`],added:[`OonaCode runs on macOS 12 or newer: the agent, your chats, the background service and the desktop app, installed with the same one line as on Linux — curl -fsSL https://oonacode.oonak.ai/install.sh | bash. An Intel build; Apple Silicon Macs run it through Rosetta 2. Your sign-in key is kept in your login keychain.`,`Updating is the same line again, oona update in a terminal, or the update button in the app: it closes OonaCode, puts the new version in place and opens it again. The app is not signed by Apple yet, so it cannot be downloaded from a browser and does not update itself the way it does on Windows.`],fixed:[]},{version:`0.3.202`,date:`2026-10-03`,platforms:[`linux`],added:[],fixed:[`Your sign-in survives a restart on a PC that keeps OonaCode’s key in the login keyring (GNOME Keyring, KWallet): two of OonaCode’s keys shared one keyring entry and overwrote each other, and every start of the host wrote over the stored key — so after a restart you could find yourself signed out.`,`OonaCode never runs a Claude Code you installed yourself as its engine, even when it sits in the same folder as the Node.js that runs OonaCode (an nvm folder, for example).`,`oona update installs from the site your OonaCode was installed from, not always from oonacode.oonak.ai.`]},{version:`0.3.202`,date:`2026-10-03`,platforms:[`win32`],added:[],fixed:[`OonaCode never runs a Claude Code you installed yourself as its engine, even when it sits in the same folder as the Node.js that runs OonaCode.`]},{version:`0.3.201`,date:`2026-10-03`,added:[`The Tools menu lists only tools that work. Desktop control, Clipboard, Screen capture and Run as administrator were demos that never ran anything, and they are gone: the agent already reads and sets your clipboard, takes screenshots and asks Windows for administrator rights through its own commands.`],fixed:[`Oonak Browser keeps working when its window is behind other windows. A browser covered by the OonaCode window used to crawl, and some clicks and scrolls gave up after 30 seconds.`,`Oonak Browser no longer clicks a hidden copy of a link, or a link inside a closed menu, when a site has both a visible and a hidden one.`,`A message you send right after a reply failed no longer stays pinned above the box as “queued” once the agent has read it.`]},{version:`0.3.200`,date:`2026-10-03`,platforms:[`win32`],added:[`Everything OonaCode shows you is in credits, never in dollars: the model picker gives what an OonaCode pool model charges per 1M tokens in credits, and a chat’s spend, Usage, Conversations, Listen and the terminal all count credits. A chat on your own key or your own subscription says so instead of a price.`],fixed:[`Oonak Browser works on sites built from web components, Google’s own forms among them: it reads, finds, clicks and types inside them, where it used to answer “the page changed” or find nothing.`,`The model’s questions appear only in their own window: the chat no longer shows the question’s raw text while you answer, and afterwards keeps one line — “You answered 3 questions” — that opens to your answers.`]},{version:`0.3.200`,date:`2026-10-03`,platforms:[`linux`],added:[`Your chats now live only on the PC that runs them. Your phone, the website and your other PCs read a chat straight from its PC, through the same encrypted connection they use to continue it — OonaCode’s server no longer keeps any copy. While a PC is off or asleep its chats cannot be read from elsewhere; the window says so and they come back when it is online. Update OonaCode on each of your PCs: another device reads a PC’s chats only once that PC runs this version.`,`Everything OonaCode shows you is in credits, never in dollars: the model picker gives what an OonaCode pool model charges per 1M tokens in credits, and a chat’s spend, Usage, Conversations, Listen and the terminal all count credits. A chat on your own key or your own subscription says so instead of a price.`,`Listen has one button: Play. It writes a summary when the chat has none or has moved on, translates it once when you pick a new language, or just plays — saying only “Generating…” or “Translating…” while it works. A summary written in the last ten minutes is used for every language, so switching language never writes it again.`,`A morning briefing in View → What chats are about…: show the chats active in the last 24 hours, 3, 7, 10 or 30 days (or your own dates), tick the ones you want — or all — pick a language, a voice and a speed, and press Play. OonaCode reads each chat’s name and what it is about, one after another, with Next, Previous, Pause and Stop.`,`A chat can offer to move a task to a new chat. When a task deserves its own chat — a separate job, a chat that has grown long, work in another folder — the model proposes it with the first message written out; you can edit it, then Start new chat opens the new chat in a tab, sends the message and carries on there. Nothing starts without your yes.`,`Talk to other chats: a chat can now write to a chat whose switch is off. That chat’s switch stays off and it gets no new tools — it can only answer the chat that wrote to it. Finding a chat by name matches each word, in its name, project, folder and description, and spelling like “AI-control” or “aicontrol” no longer matters.`,`Oonak Browser acts like a person: every click, keystroke and scroll is a real input event, so sites that ignore scripted clicks now respond, and it works inside web components, Google’s own forms among them. Typing into a drop-down picks the option, and typing into an editor adds the text at its end.`,`Scheduled shows at a glance what will still run: paused tasks and one-time tasks that have already run are greyed out, with the day they will be removed — 10 days after their last change.`,`Settings → Developer → Allow debugging: opens a debugging port on this PC only, so a developer can look at and drive the app while fixing a problem with you. Off by default; while it is on, every window shows a red “Debugging on” badge.`],fixed:[`A chat keeps its Build / Plan / Ask first / Autonomous choice, and every device shows the same one. A chat set to “Ask first” now asks you before acting even when this PC answers prompts by itself.`,`A chat no longer ends up on a model nobody picked for it: a model the provider does not offer is refused instead of quietly switching the chat to the provider’s default, and Enter in the model picker no longer picks the row under the mouse pointer.`,`Chats talking to each other no longer ping-pong: a reply needs no answer, several messages from the same chat are read together in one turn, and a message card says “answer requested” until the answer has gone back, then “answered” with the time.`,`A tool you switch on while a chat is replying works for the message you send next, even mid-reply. After an update, a chat that had background tasks running shows one line saying how many stopped, instead of one card per task.`,`The model’s questions appear only in their own window: the chat no longer shows the question’s raw text while you answer, and afterwards keeps one line — “You answered 3 questions” — that opens to your answers.`,`A model your plan does not include now says “not in your plan”, instead of “Failed to authenticate … sign-in needed”.`,`A long message waiting in the queue no longer hides its “Send now” button: it is folded to a few lines, with Show all to read the rest.`,`The account window no longer stays on “offline · vault event stream responded 503” after a short server interruption.`]},{version:`0.3.199`,date:`2026-10-02`,platforms:[`win32`],added:[`Talk to other chats: a chat can now write to a chat whose switch is off. That chat’s switch stays off and it gets no new tools — it can only answer the chat that wrote to it. Finding a chat by name is smarter too: each word is matched, in its name, project, folder and description, and spelling like “AI-control” or “aicontrol” no longer matters.`,`Oonak Browser acts like a person: every click, keystroke and scroll is a real input event, so sites that ignore scripted clicks now respond. Typing into a drop-down picks the option, and typing into an editor adds the text at its end.`],fixed:[`A chat no longer ends up on a model nobody picked for it: a model the provider does not offer is refused instead of quietly switching the chat to the provider’s default, and Enter in the model picker no longer picks the row under the mouse pointer.`]},{version:`0.3.198`,date:`2026-10-01`,platforms:[`win32`],added:[`Listen has one button: Play. It writes a summary when the chat has none or has moved on, translates it once when you pick a new language, or just plays — saying only “Generating…” or “Translating…” while it works. A summary written in the last ten minutes is used for every language, so switching language never writes it again.`],fixed:[`A chat keeps its Build / Plan / Ask first / Autonomous choice, and every device shows the same one — the phone used to show “Ask first” for a Build chat. A chat set to “Ask first” now asks you before acting even when this PC answers prompts by itself.`,`Play in Listen is never greyed out for want of a voice: it gets the text ready and names the voice to install.`]},{version:`0.3.197`,date:`2026-10-01`,platforms:[`win32`],added:[`Oonak Browser, the browser your chats use, moves to version 151 by itself at its next use: a build with no Google services (no Safe Browsing warnings, push notifications or search suggestions). The download is checked against its fingerprint before anything is unpacked, and the old version is removed once no chat’s browser still runs from it.`],fixed:[`A model your plan does not include now says “not in your plan”, instead of “Failed to authenticate … sign-in needed”.`]},{version:`0.3.196`,date:`2026-10-01`,platforms:[`win32`],added:[`Your chats now live only on the PC that runs them. Your phone, the website and your other PCs read a chat straight from its PC, through the same encrypted connection they use to continue it — OonaCode’s server no longer keeps any copy. While a PC is off or asleep its chats cannot be read from elsewhere; the window says so and they come back when it is online. Update OonaCode on each of your PCs: another device reads a PC’s chats only once that PC runs this version.`],fixed:[`The account window no longer stays on “offline · vault event stream responded 503” after a short server interruption: the next sync that works clears it by itself.`]},{version:`0.3.195`,date:`2026-10-01`,platforms:[`win32`],added:[],fixed:[`Chats talking to each other no longer ping-pong. A message asks for an answer only when the chat really needs one; a reply needs no answer and is not answered with a new message; and several messages waiting from the same chat are read together in one turn. Fewer wake-ups, fewer tokens.`,`A message card says what is true: “answer requested” until the answer has gone back, then “answered” with the time — instead of an orange “reply expected” that never went away.`]},{version:`0.3.194`,date:`2026-10-01`,platforms:[`win32`],added:[`A chat can offer to move a task to a new chat. When a task deserves its own chat — a separate job, a chat that has grown long, work in another folder — the model proposes it with the first message written out; you can edit it, then Start new chat opens the new chat in a tab, sends the message and carries on there. Nothing starts without your yes.`,`Settings → Developer → Allow debugging: opens a debugging port on this PC only, so a developer can look at and drive the app while fixing a problem with you. Off by default; while it is on, every window shows a red “Debugging on” badge.`],fixed:[]},{version:`0.3.193`,date:`2026-10-01`,platforms:[`win32`],added:[],fixed:[`A tool you switch on while a chat is replying works for the message you send next, even mid-reply: that message now waits for the chat to restart with the new tool instead of reaching the model without it.`,`After an update, a chat that had background tasks running shows one line — “11 background tasks stopped — they were running when OonaCode restarted this chat” — instead of one card per task. Click it to see each one.`]},{version:`0.3.192`,date:`2026-09-30`,platforms:[`win32`],added:[`A morning briefing in View → What chats are about…: show the chats active in the last 24 hours, 3, 7, 10 or 30 days (or your own dates), tick the ones you want — or all — pick a language, a voice and a speed, and press Play. OonaCode reads each chat’s name and what it is about, one after another, with Next, Previous, Pause and Stop. Other languages are translated once and kept, so hearing the same briefing again costs nothing.`],fixed:[]},{version:`0.3.191`,date:`2026-09-30`,platforms:[`win32`],added:[`Scheduled shows at a glance what will still run: paused tasks and one-time tasks that have already run are greyed out, with the day they will be removed. They are deleted by themselves 10 days after their last change; resuming or editing a paused task gives it another 10 days.`],fixed:[]},{version:`0.3.190`,date:`2026-09-30`,platforms:[`win32`],added:[],fixed:[`A long message waiting in the queue no longer hides its “Send now” button: it is folded to a few lines, with Show all to read the rest.`]},{version:`0.3.189`,date:`2026-09-30`,platforms:[`linux`],added:[`Split views, like VS Code: drag a chat tab to the left, right, top or bottom of the chat area to open it beside the other one — a shaded area shows where it will land. Every chat on screen works on its own, with its own replies streaming and its own message box. Drag the divider to resize; Ctrl+\\ splits the current tab to the right, Ctrl+1, Ctrl+2… jump between views, and a tab’s menu has Split right, Split down and Move to other group.`,`Chats in windows of their own, like Chrome tabs: drag a tab out of the window, or choose “Move to new window” in its menu, and it opens in its own window; “Move to main window” brings it back. On Wayland desktops the new window opens at the usual place rather than under the pointer. Your split views and windows come back when you restart OonaCode.`,`Every language plays in Listen to a chat: each language picks the best voice on its own — OonaCode’s Armenian voices first, then your system’s voices, then eSpeak (install the espeak-ng package if your system has no voice for a language).`],fixed:[`Picking another language for a summary no longer needs a new summary: Play translates the one you have, keeps the translation, shows it and plays it.`,`“Summarise now” says “Up to date — nothing to summarise” while the chat has not changed, instead of seeming to do nothing.`]},{version:`0.3.188`,date:`2026-09-30`,platforms:[`win32`],added:[`Split views, like VS Code: drag a chat tab to the left, right, top or bottom of the chat area to open it beside the other one — a shaded area shows where it will land. Every chat on screen works on its own, with its own replies streaming and its own message box. Drag the divider to resize; Ctrl+\\ splits the current tab to the right, Ctrl+1, Ctrl+2… jump between views, and a tab’s menu has Split right, Split down and Move to other group.`,`Chats in windows of their own, like Chrome tabs: drag a tab out of the window, or choose “Move to new window” in its menu, and it opens in its own window. Drag it back onto the main window’s tabs, or choose “Move to main window”, to bring it back. Your split views and popped-out windows come back when you restart OonaCode.`],fixed:[]},{version:`0.3.187`,date:`2026-09-30`,platforms:[`win32`],added:[`Every language plays in Listen to a chat. Persian, Georgian, Ukrainian — and any language whose Windows voice is not installed — now speak with eSpeak, a free voice that comes with OonaCode (it sounds robotic, but it always works). Each language picks the best voice on its own: OonaCode’s Armenian voices first, then Windows’ own, then eSpeak.`],fixed:[`Picking another language for a summary no longer needs a new summary: Play translates the one you have, keeps the translation, shows it and plays it.`,`“Summarise now” says “Up to date — nothing to summarise” while the chat has not changed, instead of seeming to do nothing.`]},{version:`0.3.186`,date:`2026-09-30`,platforms:[`linux`],added:[`Listen to a chat: right-click a chat → Listen to this chat…, or the speaker button beside the chat’s title. The chat’s own model writes a short spoken summary — the goal, what was done, where it stands, what is left — and OonaCode reads it aloud on this PC, in the voice and at the speed you choose. Every summary is kept with its date, so you can play it again at any time; a new one is written only when the chat has moved on. Other languages are translated once and kept with the summary.`,`OonaCode brings two Armenian voices of its own, Astgh and Artsiv, and also speaks with your system’s voices through speech-dispatcher — install speech-dispatcher and espeak-ng for Persian, Russian and every other language; the Listen window names the packages for your distribution.`,`Listen to a chat from your phone: the OonaCode app’s 🔊 Listen reaches this PC’s summaries and plays them with the phone’s own voices. It needs this update on the PC and the next OonaCode app on the phone.`,`See where your credits go: Account → Usage. Pick the last 24 hours, 7, 30 or 90 days or your own dates, by hour or by day, for the coding agent or your API keys apart. A chart shows the credits over time by model or by what they were for, and the lists below give every model with its tokens and price, and every use — chat turns, a chat’s “about”, images, speech and the rest.`,`The chat list is laid out like the Claude desktop app: New, Projects, Scheduled, then your pinned chats and projects, then Today and Older. The old grouping by project is one click away — the small icon beside “Today”.`,`Projects opens a page of project cards — each with its goal, its chats and when it was last used — with search, sort and New project. Click a card to see that project’s chats, instructions and settings, and to start a new chat in it.`,`Scheduled shows every scheduled task from every chat on this PC in one place, with its next run, its chat, and pause, resume and delete. Pin any chat or project to the top of the list from its menu.`,`Claude Sonnet 5.5 is in the model picker — on the OonaCode pool and on your own Claude subscription — with a 1M-token context. It costs the same as Sonnet 5 per token and usually needs fewer tokens for the same work.`,`Type / at the start of a message to see the chat’s commands and skills, with what each does, in two titled sections. Type to narrow the list, then Enter or Tab. They work with every model, not only Claude.`,`Each chat has a Skills list beside Tools. Every skill starts off, so the model sees none of them and they cost nothing; switch one on to let the model use it by itself in that chat. Typing /name still runs any skill for one turn.`,`Your own skills: Settings → Skills lists the skills OonaCode gives every chat, and “Import from Claude Code…” copies the ones you choose from your Claude Code install — it only reads it, never changes it.`,`In the terminal app (oona), a command the chat’s engine knows — /context, /compact or a skill — now runs instead of answering “unknown command”.`,`Search in the Import window: find a chat by its name, its first or last message or its folder, or pick “Whole conversations” to search inside the chats themselves.`],fixed:[`Import chats shows every chat on this PC, grouped by the app it came from, with nothing folded away. Each row says whether it is new, already imported, moved on since, or deleted by you in OonaCode. Nothing is ticked when you open it yourself: search for a chat and tick it, or tick a whole group at once.`,`The message box fits a narrow chat: its buttons and pickers move onto a second line and the box grows to hold them — Stop and Queue no longer slip outside it.`,`Claude’s thoughts show their words again. Every “Thought” from Claude Opus, Sonnet and Fable came back empty — Anthropic leaves the text out unless it is asked for a summary, and now OonaCode asks. Only new replies change.`,`A chat’s “about” no longer starts in the middle of a sentence when the model wrote a long answer.`,`Commands that only duplicated OonaCode’s own controls or showed misleading numbers are gone from the / menu — /model, /usage, /autocompact, /output-style, /mcp, /list-agents and /reload-skills. Typed, they say why.`,`Skills you import or remove in Settings → Skills reach your chats by themselves, at each chat’s next message.`,`Claude Sonnet 5 is retired: a chat that was on it moves to Sonnet 5.5 at its next message.`,`The engine’s built-in keyboard-shortcuts helper is turned off: it would have edited your own Claude Code settings.`,`Typing /model in a chat updates the chat’s model and the model picker again, and command output such as /context reads the same while it arrives and after you reopen the chat.`,`A chat row’s ⋯ button shows only when you point at the row.`]},{version:`0.3.185`,date:`2026-09-30`,platforms:[`win32`],added:[`Listen to a chat from your phone: the OonaCode app’s 🔊 Listen reaches this PC’s summaries and plays them with the phone’s own voices. It needs this update on the PC and the next OonaCode app on the phone.`],fixed:[`Listening with a Windows voice no longer stops after the first sentence when the voice fails to say it has finished.`]},{version:`0.3.184`,date:`2026-09-30`,platforms:[`win32`],added:[`Listen to a chat: right-click a chat → Listen to this chat…, or the speaker button beside the chat’s title. The chat’s own model writes a short spoken summary — the goal, what was done, where it stands, what is left — and OonaCode reads it aloud on this PC, in the voice and at the speed you choose. Every summary is kept with its date, so you can play it again at any time; a new one is written only when the chat has moved on. Other languages are translated once and kept with the summary.`],fixed:[`A chat’s “about” no longer starts in the middle of a sentence when the model wrote a long answer.`]},{version:`0.3.183`,date:`2026-09-30`,platforms:[`win32`],added:[`See where your credits go: Account → Usage. Pick the last 24 hours, 7, 30 or 90 days or your own dates, by hour or by day, for the coding agent or your API keys apart. A chart shows the credits over time by model or by what they were for, and the lists below give every model with its tokens and price, and every use — chat turns, a chat’s “about”, images, speech and the rest.`],fixed:[]},{version:`0.3.182`,date:`2026-09-30`,platforms:[`win32`],added:[],fixed:[`Import chats shows every chat on this PC, grouped by the app it came from — Claude Code, the Claude app, Qwen Code, Cursor — with nothing folded away. Each row says whether it is new, already imported, moved on since, or deleted by you in OonaCode. Nothing is ticked when you open it yourself: search for a chat and tick it, or tick a whole group at once. The Import button says how many chats it will bring over.`]},{version:`0.3.181`,date:`2026-09-30`,platforms:[`win32`],added:[],fixed:[`The message box fits a narrow chat. In a small window, or with the side panels open, its buttons and pickers move onto a second line and the box grows to hold them — Stop and Queue no longer slip outside it, and the model and effort pickers keep their words readable.`]},{version:`0.3.180`,date:`2026-09-30`,platforms:[`win32`],added:[],fixed:[`Claude’s thoughts show their words again. Every “Thought” from Claude Opus, Sonnet and Fable came back empty — Anthropic leaves the text out unless it is asked for a summary, and now OonaCode asks. Other models were never affected. Only new replies change; older thoughts stay empty.`]},{version:`0.3.179`,date:`2026-09-29`,platforms:[`win32`],added:[],fixed:[`The / menu is easier to read: skills and commands in two titled sections, each with one short line — the full description shows when you point at it.`,`Commands that only duplicated OonaCode’s own controls or showed misleading numbers are gone from the / menu — /model (use the model picker), /usage (the engine’s own estimate, not your credits), /autocompact, /output-style, /mcp, /list-agents and /reload-skills. Typed, they say why.`,`Skills you import or remove in Settings → Skills reach your chats by themselves, at each chat’s next message.`]},{version:`0.3.178`,date:`2026-09-29`,platforms:[`win32`],added:[`The chat list is laid out like the Claude desktop app: New, Projects, Scheduled, then your pinned chats and projects, then Today and Older. The old grouping by project is one click away — the small icon beside “Today”.`,`Projects opens a page of project cards — each with its goal, its chats and when it was last used — with search, sort and New project. Click a card to see that project’s chats, instructions and settings, and to start a new chat in it.`,`Scheduled shows every scheduled task from every chat on this PC in one place, with its next run, its chat, and pause, resume and delete. A dot on it tells you when something is due soon.`,`Pin any chat or project to the top of the list from its menu.`],fixed:[`A chat row’s ⋯ button shows only when you point at the row.`]},{version:`0.3.177`,date:`2026-09-29`,platforms:[`win32`],added:[`Claude Sonnet 5.5 is in the model picker — on the OonaCode pool and on your own Claude subscription — with a 1M-token context. It costs the same as Sonnet 5 per token and usually needs fewer tokens for the same work.`],fixed:[`Claude Sonnet 5 is retired: a chat that was on it moves to Sonnet 5.5 at its next message, and the picker shows Sonnet 5.5.`]},{version:`0.3.176`,date:`2026-09-29`,platforms:[`win32`],added:[`Each chat has a Skills list beside Tools. Every skill starts off, so the model sees none of them and they cost nothing — about 1,400 tokens on every message until now. Switch one on to let the model use it by itself in that chat; the list shows what each one costs per message while on.`,`Typing /name still runs any skill for one turn, whether its switch is on or off.`],fixed:[`The engine’s built-in keyboard-shortcuts helper is turned off: it would have edited your own Claude Code settings.`]},{version:`0.3.175`,date:`2026-09-29`,platforms:[`win32`],added:[`Type / at the start of a message to see the chat’s commands and skills — the Claude Code engine’s own (/compact, /context, /review, /security-review, /init and more) and the skills in your project’s .claude folder — with what each does. Type to narrow the list, then Enter or Tab. They work with every model, not only Claude.`,`Your own skills: Settings → Skills lists the skills OonaCode gives every chat, and “Import from Claude Code…” copies the ones you choose from your Claude Code install — it only reads it, never changes it.`,`In the terminal app (oona), a command the chat’s engine knows — /context, /compact or a skill — now runs instead of answering “unknown command”.`],fixed:[`Typing /model in a chat updates the chat’s model and the model picker again.`,`Command output such as /context reads the same while it arrives and after you reopen the chat.`]},{version:`0.3.174`,date:`2026-09-28`,platforms:[`win32`],added:[`Search in the Import window. Type to find a chat by its name, its first or last message, or its folder — chats folded away as already imported or deleted here show up too when they match. Or open the search options and pick “Whole conversations” to search inside the chats themselves, with a few lines of each match under the chat. It only reads Claude Code, Cursor and the Claude app’s files, never changes them.`],fixed:[`Chats Claude Code switched to another model are answered by that model for real: OonaCode’s pool now serves the model the engine falls back to, and never answers a Claude request with another company’s model.`]},{version:`0.3.173`,date:`2026-09-28`,platforms:[`linux`],added:[`Every chat now has an “about”: a short note, written in the background by a cheap helper model of the chat’s own provider, saying what the chat works on. Your other chats read it — with each chat’s folder and when it was last active — when they look for the right chat to ask. See it, edit it or press Regenerate in the session info panel.`,`View → What chats are about… (and a sidebar button) lists every chat’s about and what writing them cost, with a switch to turn it off and “Generate for all chats now”. The switch and its numbers are also in Settings → This PC.`,`Your phone can now do from anywhere what this PC’s window does: switch each tool on or off per chat, see and control the conversations between your chats, read, edit and regenerate each chat’s “about”, and manage scheduled tasks. It needs this update on the PC and the next OonaCode app on the phone.`,`A chat can switch its own workspace. When the work belongs in another folder — a project you name that lives elsewhere, or a new project folder — the model proposes the switch and you answer Switch or Not now. It always asks you, even with “accept automatically” on, and the chat moves when its current step ends, with the conversation kept.`,`Right-click a chat tab → Delete (in red, under “Close all tabs”) deletes that chat after asking, just like Delete in the sidebar.`,`When Anthropic’s safeguards flag a chat and Claude Code moves it to another model for the rest of the run, the model box says so in red — for example “Opus 4.8 (safeguard)” — and the chat shows a notice at the switch. Picking a model takes the chat back to it at the next message.`],fixed:[`Typing in the message box while a chat is replying is no longer interrupted. With “accept automatically” on, an approval card flashed for an instant on some tool calls and took the cursor away from the box.`,`A permission card that appears while you are typing no longer takes the keyboard, so your next Space or Enter can never press Allow by accident.`,`“Send now” stays disabled and says “Sending now…” until the agent has taken the message — it can take a few seconds while the agent stops its current step, and a second press can no longer send it twice.`,`A message sent from your phone is confirmed by this PC, and the same message is never run twice when the phone sends it again after a lost connection.`,`File and folder names in a reply get their ▶, Open and Show in folder buttons only when they really exist on this PC. A bare file name is also looked for in the folder the reply named just before it.`,`A chat can no longer be moved into your home folder or the root folder through a link. Where /home is itself a link (Fedora Silverblue, Bazzite and similar systems), the home folder passed as an ordinary folder, and the chat would have loaded your own Claude Code settings as its project.`,`Signing in to your own Claude subscription inside the app works on Ubuntu 24.04, Debian, Linux Mint, Pop!_OS and Zorin OS again. There, a part of OonaCode built for newer systems did not load, and the sign-in fell back to a command you had to paste.`,"On Ubuntu, Linux Mint, Pop!_OS, Zorin OS and similar systems, `oona` now works in every new terminal right after you install or update. The installer used to leave it off your PATH until you logged out and back in; now it adds it for new terminals itself, and `oona uninstall` takes that line out again.",`Every way of uninstalling — “oona uninstall”, or the install command with --uninstall — now takes this PC off your account: keep your chats and they stay readable on your other devices; delete them and their copies go too. It never touches your Claude Code or the Claude app, and “oona uninstall” no longer gives up when the background service is stopped.`,`The installer now says at once when a system cannot run OonaCode — one older than Ubuntu 22.04, Debian 12 or RHEL 9, or one built on musl such as Alpine — instead of installing a copy that could not start. The .deb and .rpm tell apt and dnf the same.`]},{version:`0.3.172`,date:`2026-09-28`,platforms:[`win32`],added:[`When Anthropic’s safeguards flag a chat and Claude Code moves it to another model for the rest of the run, the model box says so in red — for example “Opus 4.8 (safeguard)” — and the chat shows a notice at the switch. Picking a model takes the chat back to it at the next message.`],fixed:[`Uninstalling from Settings → Apps now also takes this PC off your account, exactly like “oona uninstall”: keep your chats and they stay readable on your other devices; delete them and their copies go too.`,`“oona uninstall” no longer gives up when the background service is stopped.`,`The “Updating OonaCode…” window shows again on the newest Windows 11 versions (24H2 and later).`]},{version:`0.3.171`,date:`2026-09-28`,platforms:[`win32`],added:[`Oonak Browser now picks its own control port from a range no developer tool uses by default, so it can no longer take a port that Shopify CLI or a dev server wants. If a program needs a particular port kept free, or you want the browser on a specific one, just ask the chat.`],fixed:[`File and folder names in a reply get their ▶, Open and Show in folder buttons only when they really exist on this PC. A bare file name is also looked for in the folder the reply named just before it.`,`Uninstalling OonaCode from Settings → Apps now removes all of it — the app, the command line and its background service — and asks whether to keep your chats. Installing again afterwards no longer says it is already installed. Your Claude Code and Claude app are never touched.`,`“oona uninstall” works again on Windows 11.`,`A chat “about” you wrote yourself no longer shows “stale”.`]},{version:`0.3.170`,date:`2026-09-28`,platforms:[`win32`],added:[`Your phone can now do from anywhere what this PC’s window does: switch each tool on or off per chat, see and control the conversations between your chats, read, edit and regenerate each chat’s “about”, and manage scheduled tasks. It needs this update on the PC and the next OonaCode app on the phone.`],fixed:[`“Send now” stays disabled and says “Sending now…” until the agent has taken the message — it can take a few seconds while the agent stops its current step, and a second press can no longer send it twice.`,`A message sent from your phone is confirmed by this PC, and the same message is never run twice when the phone sends it again after a lost connection.`]},{version:`0.3.169`,date:`2026-09-28`,platforms:[`win32`],added:[`Every chat now has an “about”: a short note, written in the background by a cheap helper model of the chat’s own provider, saying what the chat works on. Your other chats read it — with each chat’s folder and when it was last active — when they look for the right chat to ask. See it, edit it or press Regenerate in the session info panel.`,`View → What chats are about… (and a sidebar button) lists every chat’s about and what writing them cost, with a switch to turn it off and “Generate for all chats now”. The switch and its numbers are also in Settings → This PC.`],fixed:[`A chat can no longer be moved into your user folder or a drive root through a link or junction that points there — its project settings would have been your own Claude Code settings.`]},{version:`0.3.167`,date:`2026-09-27`,platforms:[`win32`],added:[`A chat can switch its own workspace. When the work belongs in another folder — a project you name that lives elsewhere, or a new project folder — the model proposes the switch and you answer Switch or Not now. It always asks you, even with “accept automatically” on, and the chat moves when its current step ends, with the conversation kept.`],fixed:[]},{version:`0.3.166`,date:`2026-09-27`,platforms:[`win32`],added:[],fixed:[`Typing in the message box while a chat is replying is no longer interrupted. With “accept automatically” on, an approval card flashed for an instant on some tool calls and took the cursor away from the box.`,`A permission card that appears while you are typing no longer takes the keyboard, so your next Space or Enter can never press Allow by accident.`]},{version:`0.3.165`,date:`2026-09-27`,platforms:[`win32`],added:[`Right-click a chat tab → Delete (in red, under “Close all tabs”) deletes that chat after asking, just like Delete in the sidebar.`,`Chats now use Oonak Browser, in a window you can see, for everything that needs a web browser — not Chrome, Edge or a hidden script browser — unless you name another browser. It runs without a window (headless) only when you ask for that.`],fixed:[`After an update, the background service comes back by itself. An update could leave it unable to restart, and the app then showed “OonaCode could not start its host service” even though it went on to open normally.`]},{version:`0.3.164`,date:`2026-09-27`,platforms:[`win32`],added:[`Send now: a message you typed while the agent works has a Send now button while it waits. It stops what the agent is doing right now and sends your message immediately — the step that is running is cut. On the desktop and the phone.`,`Conversations → Map: see at a glance which chats are talking to each other. Each conversation is a hub with a line to each of its chats; working chats pulse; click a hub for its history or a chat to open it.`],fixed:[`A restart no longer signs this PC out when OonaCode’s stored key cannot be opened for a moment. OonaCode used to replace the key and lose your sign-in; it now keeps the key and signs you back in by itself as soon as it opens.`]},{version:`0.3.163`,date:`2026-09-27`,platforms:[`linux`],added:[`Send now: a message you typed while the agent works has a Send now button while it waits. It stops what the agent is doing right now and sends your message immediately — the step that is running is cut. On the desktop and the phone.`,`Conversations → Map: see at a glance which chats are talking to each other. Each conversation is a hub with a line to each of its chats; working chats pulse; click a hub for its history or a chat to open it.`],fixed:[`A restart no longer signs this PC out when its security chip is slow to open OonaCode’s stored key. After a system update and reboot, the chip on some machines refuses for a while; OonaCode used to replace the key and lose your sign-in. It now keeps the key and signs you back in by itself as soon as the chip opens it.`]},{version:`0.3.162`,date:`2026-09-27`,added:[],fixed:[`A chat switched to another model knows which model it is. After a switch from Claude to DeepSeek, the model used to keep saying it was Claude — the chat history and Claude Code’s own prompt told it so.`,`Oonak Browser is offered only where it can run. An older OonaCode no longer lists a browser tool it cannot use, so the model does not spend tokens working around it — update to get the browser.`]},{version:`0.3.161`,date:`2026-09-27`,added:[`Settings → This PC → “Replace pictures older than N days”: screenshots and pasted pictures in your chat history are replaced by a short note once they are older than a year (you choose the number, or 0 to keep them). The words of every chat stay; the database stops growing with pictures. It runs by itself.`],fixed:[`The model, Build/Plan/Ask and effort pickers under the message box now look like the dropdowns they are.`,`Switches that are off are easy to see in dark mode.`,`Error messages show what went wrong in words, without raw tags or a provider’s JSON.`,`The ✕ that removes an attachment or a reply is round.`,`Pressing Stop, or an update cutting a turn, no longer files an automatic bug report.`]},{version:`0.3.160`,date:`2026-09-27`,added:[`On Windows, the agent can use a real browser. Ask it to open a site, read a page, click, fill in a form or take a screenshot, and it does it in Oonak Browser, in a window you can see. The first time, OonaCode asks once to install the browser (about 210 MB); after that it opens straight away.`,`Each chat has its own browser profile, so a site you sign in to stays signed in for that chat. Switch the browser off for a chat in its Tools menu.`],fixed:[]},{version:`0.3.159`,date:`2026-09-27`,added:[],fixed:[`A chat reopened after an update no longer says “turn complete” the instant you send a message and then answer anyway. The engine’s own note about work that stopped during the update used to be taken for the end of your turn, with the whole earlier conversation’s tokens on the line.`,`A background task that stopped because OonaCode restarted now says so in plain words, instead of “Orphaned by a previous Claude Code process exit”.`]},{version:`0.3.158`,date:`2026-09-27`,added:[`Every thought in a chat shows how many words it has, so you can tell at a glance whether there is anything to read.`],fixed:[`A thought with nothing in it — some models return only a signature for their thinking — now says “Thought · empty” and no longer opens onto a blank box.`,`A command the agent was allowed to run no longer leaves an “Allowed Bash (automatically)” line under its own card: the card already shows the command and its result. Refusals are still shown.`]},{version:`0.3.157`,date:`2026-09-27`,added:[`On Linux, OonaCode has its own signed apt and dnf repositories. Install the app with apt (Debian, Ubuntu, Mint) or dnf (Fedora, RHEL, Rocky, Alma) — the commands are on the download page — and your package manager keeps it up to date with the rest of the system.`,`Every Linux release is signed with the OonaCode release key, and the one-line installer checks that signature before it installs anything.`],fixed:[`On Linux, the menu bar is drawn in the window in the app’s own colours, and it switches between light and dark with the app instead of keeping the desktop’s theme until a restart.`,`Upgrading the .rpm no longer removes the oonacode command, and removing it no longer leaves empty folders behind.`]},{version:`0.3.156`,date:`2026-09-27`,added:[`Chats can talk to each other. Turn on “Talk to other chats” in a chat’s Tools menu, and its agent can find your other chats that have it on, read them, and ask them for help — one chat or a whole group. A chat that is closed wakes up to answer; a busy one answers when it finishes. The reply comes back to the chat that asked.`,`The Conversations window (in the sidebar) shows every conversation between your chats: who said what to whom, what each answer cost, and buttons to pause, resume, close or stop them all. Each conversation has a budget — 20 messages and 1,000,000 new tokens by default — and pauses itself when it is used up, so chats can never talk forever.`,`Hover over any tool in a chat’s Tools menu to read what it does, how it works, what it costs and how to turn it off.`],fixed:[`A chat woken in the background — by a scheduled task or another chat — shows as working in the sidebar even when it is not open in a tab.`,`A scheduled task no longer slips into a chat at the same moment you send it a message; yours always goes first.`,`A message sent from the terminal no longer waits forever when a chat’s history cannot be resumed and the restart fails. It now says why.`,`Notes OonaCode writes into a chat — a model change, a conversation paused — are still there when you reopen it.`,`When every Claude seat in the OonaCode pool is taken, a new chat now says the model is busy and to try again in a few minutes or pick another model, instead of “Something went wrong on our side”.`,`On Linux, the app tells you it is updating while it swaps itself, so there is no need to start it again.`,`On Linux, removing the .deb or .rpm leaves nothing running and nothing failing at the next login, and the one-line installer checks for free disk space before it changes anything.`]},{version:`0.3.155`,date:`2026-09-27`,added:[`OonaCode runs on Linux. One command installs the command line, the background service and the desktop app: curl -fsSL https://oonacode.oonak.ai/install.sh | bash. The AppImage, .deb and .rpm are on the download page too.`,`On Linux the app lives in the system tray as it does on Windows, follows your desktop’s light or dark theme, and gets its own entry in the applications menu.`,`Uninstalling on Linux removes the desktop app along with the rest, and asks whether to keep your chats for a future install.`],fixed:[`A window no longer stays on “Unauthorized” after the background service restarts with a new key. It reconnects by itself.`]},{version:`0.3.154`,date:`2026-09-26`,added:[],fixed:[`A chat waiting on a long job no longer loses its watcher. OonaCode used to close a chat’s engine ten minutes after the model last spoke, which stopped any Monitor or background command it had left running. The engine now stays up while such work runs, up to 12 hours.`,`A chat moved into a project, or whose project you edit, now follows the project’s instructions from its next message. It used to keep the ones it started with.`]},{version:`0.3.153`,date:`2026-09-25`,added:[],fixed:[`A very long chat no longer answers “Prompt is too long” after OonaCode restarts or updates. The engine was judging the chat’s size by a figure left over from before the restart, and now gets an accurate one.`,`If a message is ever refused as too long before the model has started on it, OonaCode sends it again by itself with a shorter history. You see your message once and then the answer, not an error.`]},{version:`0.3.152`,date:`2026-09-25`,added:[],fixed:[`Uninstalling the app from Windows’ Apps list no longer stops the command-line OonaCode on the same PC from starting after a restart.`]},{version:`0.3.151`,date:`2026-09-25`,added:[`Files the agent names in a chat are clickable. Audio and video play right in the chat with a small player, pictures open as a preview, and in the app every file can be opened in its own program or shown in its folder.`,`Uninstalling the app asks whether to keep your chats on this PC. Keeping them means a new install signs in and continues every chat.`],fixed:[`Installing and updating no longer fail with “The operation has timed out” on PCs whose network drops the newer internet addresses, nor while our server restarts for an update.`]},{version:`0.3.150`,date:`2026-09-25`,added:[],fixed:[`The fix in 0.3.149 for long, sleeping turns now really reaches the agent: the Monitor tool and the block on long waits are on for every chat.`,`A chat compacted after a long pause no longer pays to cache a conversation it is about to replace, and the agent keeps each tool call in its history exactly as it wrote it — both as Claude Code does.`]},{version:`0.3.149`,date:`2026-09-25`,added:[`The agent can watch a long job with the Monitor tool, as Claude Code does, and is woken the moment the job finishes.`],fixed:[`Long chats no longer spend their time asleep. With no way to watch a background job, the agent had been polling it with waits of four to eight minutes. One chat spent more than three and a half hours of a day sleeping, and turns ran for hours while the model worked for a fraction of that. The agent now gets the same working rules as Claude Code, and long waits are blocked.`]},{version:`0.3.148`,date:`2026-09-25`,added:[],fixed:[`A scheduled task that could not be sent — the PC had just restarted, the vault was still locked, the server was not reachable yet — waits and tries again instead of switching itself off. Pausing, editing or deleting a task while its prompt is being sent is no longer undone, and a scheduled prompt no longer lands in a chat whose engine is still starting.`,`A chat on your own DeepSeek key, or one switched with a typed “/model opus”, is no longer shown as withdrawn and locked. “/model fable” picks Claude Fable instead of the default model.`,`Moving a chat to another model no longer lowers its saved effort level to what the old model offered, and a one-off “oona --effort” is no longer saved as the chat’s level.`,`After you pick another model for a locked chat and send, the chat no longer flashes the lock again while the engine starts; if the start fails, your pick is kept.`,`Coming back from a file tab no longer jumps the chat to an old reply or reopens the search bar.`,`The hidden sidebar slides away again when the pointer leaves the window past its edge, and the keyboard no longer tabs through it while it is hidden. Clicking ⓘ in Settings opens its note instead of closing it.`,`Subagents write their prompt cache for five minutes, as Claude Code does for its subscribers; the chat itself keeps the hour. Their cache writes cost less.`]},{version:`0.3.147`,date:`2026-09-25`,added:[`A chat’s scheduled tasks sit beside its subagents: a clock badge says how many are live and when the next one runs, and opens the list — each task’s schedule, its next and last run, Pause and Delete. The tasks run on this PC.`],fixed:[`A prompt the scheduler sends into a chat reads as a “Scheduled task” line, not as your own message waiting in the queue.`,`A chat whose model is no longer offered shows that model in red and waits for you to pick another; its history stays, and the old model is not in the list any more.`,`The effort list follows the server within minutes, without restarting the app. A chat set to a level that has been switched off moves to the nearest one — ultracode becomes xhigh. Chats on your own Claude subscription have an effort picker again.`]},{version:`0.3.146`,date:`2026-09-25`,added:[`A Tools menu beside the model picker: switch OonaCode’s own tools on or off for each chat — browser, desktop and window control, clipboard, screen capture, Office documents and run-as-administrator. Each tool costs the model only a short line until it is used, and the menu shows how much. The first tools are marked Demo while they are tested with every model: a demo tool answers what it would have done, and does nothing on your PC yet.`],fixed:[]},{version:`0.3.145`,date:`2026-09-25`,added:[],fixed:[`Every request of every chat, on every model, is about 3,200 tokens smaller: the engine’s own “auto memory” instructions are gone. OonaCode starts each engine in a fresh private folder and deletes it afterwards, so the notes the model was told to keep there were thrown away when the chat went idle — the model spent tool calls writing memories it would never read. A project’s memory is OonaCode’s own and stays.`,`The engine’s claude.ai Artifact tools are switched off everywhere OonaCode runs it — the app, the terminal, VS Code, the phone, Telegram and the agent API.`]},{version:`0.3.144`,date:`2026-09-25`,added:[],fixed:[`Long chats on Claude models in the OonaCode pool keep their cache for an hour, as Claude Code does for its subscribers. A pause of more than five minutes no longer re-sends the whole conversation at the full cache-write price, which in a large chat was the most expensive part of coming back to it.`,`The session panel’s Context shows how big the conversation is now, not the total of every request the chat ever made — a long chat read “10.7M / 1.0M tokens”.`,`The message box keeps the cursor after you send, so you can go straight on typing the next message.`,`A paid chat’s background work (titles, reading web pages) no longer goes to a free model of the same vendor.`]},{version:`0.3.143`,date:`2026-09-24`,added:[`Search inside your chats: open the search in the chat list, press the sliders button and choose Whole chats. It looks through every message of every chat on this PC, and you choose whose words — yours, the model’s, or both — plus, if you like, the tools’ commands and output and the subagents’ conversations. Results show each message with the words lit; a click opens the chat with its search on them.`,`More search options, for both kinds of search: one project only, a time window (today, 7 or 30 days), match case and whole words.`],fixed:[`While you search the chat list, projects with no matching chat are hidden too.`]},{version:`0.3.142`,date:`2026-09-24`,added:[],fixed:[`A reply you sent shows as the same small chip it had in the message box — “Reply to” and the first few words — instead of the whole quoted text; the full quote appears when you rest the pointer on it, and a click jumps to the message it answers.`,`The model now knows a reply points back into the conversation: it is told the quoted lines are from the chat history, not new input, and whose words they were — its own earlier reply, your earlier message, a file, or a tool’s output.`,`When the chat list is narrow, its buttons wrap onto a second line instead of spilling out of it.`]},{version:`0.3.141`,date:`2026-09-24`,added:[`The chat list on the left can be made wider or narrower: drag its right edge (double-click it for the usual width).`,`The chat list can hide: press the pin in its header, the button at the top left, or View → Sidebar (Ctrl+B). While hidden it slides in when the pointer reaches the left edge of the window, and slides away when you leave it.`,`Search in the chat list is a single magnifier now; click it and the search box opens across the top. Escape or × clears it.`],fixed:[`Opening OonaCode right after a restart no longer leaves the OonaCode pool models out of the model list: if they cannot be read yet, OonaCode asks again by itself a few seconds later and the list fills in.`,`The Artificial Analysis scores (intelligence, coding, speed and benchmarks) show on every model in the model list again — including the models of your own Claude and SuperGrok subscriptions, which never had them.`,`A chat’s details card no longer appears on top of its right-click menu.`]},{version:`0.3.140`,date:`2026-09-24`,added:[`Reply is tidier: the message you reply to shows as a small chip above the message box with its first few words, instead of filling the box. Click the chip — or the quote in a sent reply — to jump to that message; the × removes it.`,`Right-click a project in the sidebar for its settings: Project settings… opens Projects with that project already selected. The gear beside a project’s “+” does the same, and a chat filed in a project offers it in its own menu too.`,`Link GitHub. Under a project’s Repositories (and in Settings → Providers), link your GitHub account once: the agent’s git and gh then clone, pull and push your private repositories on every PC of yours. You type a short code on github.com; the token stays in your encrypted vault and never reaches the OonaCode server. Public repositories need nothing.`],fixed:[]},{version:`0.3.139`,date:`2026-09-24`,added:[`Every setting now says what it does, and resting the pointer on the ⓘ beside it tells you where in OonaCode it applies and what it does not do.`,`Export chats… is in the File menu (and on the sidebar in a browser window) instead of in Settings.`,`With Remote access turned off on a PC, your phone, Telegram, the website and your other PCs still show it — online or not — marked “remote access off”, and opening it tells you to turn Remote access back on in OonaCode on that PC.`],fixed:[`Turning Remote access off now tells your other devices at once. Before, the PC was already unreachable from them, but they could not say why.`,`The settings of This PC save the moment you change them — nothing is lost by closing the dialog.`,`Settings that did nothing, or repeated another one, are gone: the default permission mode (each chat’s Build / Plan / Ask first picker decides), the agent-picker switch, the Git Bash path, the engine path and the extra allowed origins. The server address is shown, not edited — signing in sets it.`]},{version:`0.3.138`,date:`2026-09-24`,added:[`Projects have settings now, like the Claude app’s: a goal, the repositories the project works on, what a new chat in it starts on (model, effort and folder), a project memory the agent keeps up to date, and whether its chats may schedule work — and how often at most. All of it is in Projects, and a Claude app project you import brings its own.`,`OonaCode has a scheduler. Ask the agent to do something later or on a repeat — “check the build every morning at nine” — and it schedules it on this PC; when it is due, the prompt arrives in the chat, even if the chat had gone quiet. The Projects dialog and the chat’s info panel list what is scheduled, where you can pause, resume or delete it.`],fixed:[`Saving a project’s instructions now reaches its chats at their next message, instead of waiting until the chat happened to restart.`]},{version:`0.3.137`,date:`2026-09-24`,added:[],fixed:[`After a PC restart the app could ask for a "host token" and sign you out: two copies of the OonaCode background service started at once and fought over your session. Only one ever runs now, and the app never shows the token page — if its service is replaced it reconnects by itself.`,`The unlock screen stays put until you unlock, and says what went wrong in place — a wrong password, or a connection it is re-establishing — instead of jumping to another page.`,`A message with a picture sent while the agent was working stayed “queued”, and removing it said it was already sent. It now shows as read the moment the agent takes it, and a reopened chat shows it with its picture.`,`In the model’s questions, typing your own answer now clears the options you had picked, and picking an option clears what you typed — the answer sent is exactly the one you chose. The same on the phone, in the terminal and in Telegram.`]},{version:`0.3.136`,date:`2026-09-24`,added:[`Every model now has its own housekeeper — the small, fast model of the same maker that writes a chat’s titles and reads the web pages it fetches. On the OonaCode pool a MiMo v2.6 Pro chat uses MiMo v2.6 Flash, a Qwen chat Qwen3.8 Flash, a GLM chat GLM-5.3 Flash and a GPT-5 chat GPT-5 mini, instead of doing that work on the big model itself. A free model keeps its own, so it stays free.`],fixed:[]},{version:`0.3.135`,date:`2026-09-24`,added:[],fixed:[`Claude models on the OonaCode pool — Opus 5.5, Opus 5, Sonnet 5 and Fable 5.1 — now use their whole 1M context. A long chat no longer stops to summarise itself every ~170k tokens, and its subagents get the same window.`,`Reading a web page is quick again in a Claude chat: pages are read by Claude Haiku, as in Claude Code, instead of a helper that took about a minute a page.`,`Changing a chat’s model now moves its subagents and background helpers to the new model too; before, they stayed on the old one until the app restarted.`,`MiMo v2.5 and v2.5 Pro chats now use their full 1M context too.`]},{version:`0.3.134`,date:`2026-09-23`,added:[],fixed:[`On the Android app, the model’s questions can be answered again. They come one at a time — “Question 2 of 3” — with Back, Next and Skip, and Answer sends them to your PC. The card used to show only the first question, hide the rest below it and wait for all of them, so it could not be sent.`]},{version:`0.3.133`,date:`2026-09-23`,added:[`Bring your Claude desktop app projects across: File → Import chats from other coding agents now lists every project the Claude app has opened on this PC. Each one arrives as an OonaCode project of the same name — its goal, instructions and what Claude noted about it become the project’s instructions — with its project chat and one chat per thread filed under it, ready to carry on.`,`A Claude Code chat you moved into a Claude app project is filed under that project here too.`,`A thread you never opened in the Claude app still comes across, with its task and every reply the project chat saw; open it once in the Claude app and import again for its whole conversation.`],fixed:[`Cursor chats appear in the import list again — they had been left out since September 10.`]},{version:`0.3.132`,date:`2026-09-23`,added:[`Reply to any part of a chat: select some text (or just right-click a block), choose Reply, and it is quoted in your message box — type your answer under it. A quote from a file the agent read names the file.`,`Right-click in a chat: copy what you selected, copy a whole reply or tool output, copy a code block or a link, find the selected words in the chat, or select a block.`,`Search in a chat opens the block its match is in — a folded tool card, a thought, a finished agent’s work — and scrolls to the words themselves.`,`Search matches are now bright orange, the current one strongest, so they stand out on code too.`,`The file viewer shows pictures (PNG, JPEG, GIF, WebP, SVG and more), plays audio and video, and shows Markdown formatted, with a switch to the source.`,`Right-click a file or folder in the explorer to copy its path or delete it.`],fixed:[`Moving a chat to another folder or project while it was working could delete the folder it was working in, start two agents at once, or send your next message to the old folder.`,`The working line no longer says a chat may be stuck while it waits for your approval or answer, or right after you send a message, and it counts time correctly (no more "4m 60s").`,`A date line no longer says "Today" for yesterday’s messages when the app stays open past midnight.`,"Installing with npm (`npm i -g oonacode`) installs this version again; earlier npm releases carried an old program.",`The What’s new window could open again on the next start, showing the same update a second time.`,`An older OonaCode window or VS Code extension no longer resets settings it does not know about, such as your theme colours or which project groups you folded.`,`A new install no longer opens with a list of changes; this window now appears only after an update.`,`The notification switch for permissions now says it also covers the agent’s questions.`]},{version:`0.3.131`,date:`2026-09-23`,added:[`Claude Opus 5.5 is here — the newest Opus, and cheaper to run than Opus 5. Choose it in the model picker, from the OonaCode pool or on your own Claude subscription. It runs on the newer Claude Code engine (2.1.280) that this update brings.`,`Every block in a chat shows its time at the bottom right, in your local time — hover it for the full date — and a date line marks where each day starts.`,`A running chat tells you how long the agent has been quiet, and after five minutes that it may be stuck and what to do.`,`After every update, OonaCode now opens this window to show you what changed.`],fixed:[`A reply that streamed in live had no time on it until the chat was opened again.`,`Chats open in tabs could fail to come back after a restart if a setting changed while they were being restored.`]}];function Fl(e,t){let n=e=>{let[t,...n]=e.trim().replace(/^v/,``).split(`-`);return{nums:(t??``).split(`.`).map(e=>Number.parseInt(e,10)||0),pre:n.length>0?n.join(`-`):null}},r=n(e),i=n(t);for(let e=0;e<Math.max(r.nums.length,i.nums.length);e++){let t=(r.nums[e]??0)-(i.nums[e]??0);if(t!==0)return t}return r.pre===i.pre?0:r.pre===null?1:i.pre===null?-1:Il(r.pre,i.pre)}function Il(e,t){let n=e.split(`.`),r=t.split(`.`);for(let e=0;e<Math.max(n.length,r.length);e++){let t=n[e],i=r[e];if(t===i)continue;if(t===void 0)return-1;if(i===void 0)return 1;let a=/^\d+$/.test(t),o=/^\d+$/.test(i);if(a&&o){let e=Number(t)-Number(i);if(e!==0)return e;continue}return a===o?t<i?-1:1:a?-1:1}return 0}function Ll(e,t,n=Pl,r=null){if(!e||e===`0.0.0`)return[];let i=n.filter(t=>Fl(t.version,e)<=0&&(!r||!t.platforms||t.platforms.includes(r)));return[...t===null?i.filter(t=>Fl(t.version,e)===0):i.filter(e=>Fl(e.version,t)>0)].sort((e,t)=>Fl(t.version,e.version))}function Rl(e,t,n,r=Pl,i=null){if(!e||e===`0.0.0`)return{record:null,show:[]};let a=null;for(let e of r)(a===null||Fl(e.version,a)>0)&&(a=e.version);let o=a!==null&&Fl(e,a)>0?a:e;return{record:t===null||Fl(o,t)>0?o:null,show:t===null&&!n?[]:Ll(e,t,r,i)}}function zl(e,t){if(t==null)return[...e];if(t.length===0)return[];let n=new Set(t),r=e.filter(e=>n.has(e.id));return r.length>0?r:[...e]}var Bl=`the user skipped the question`,Vl=`(the user skipped this question)`;function Hl(e){let t=e?.questions;if(!Array.isArray(t))return[];let n=[];for(let e of t){if(!e||typeof e!=`object`)continue;let t=e;if(typeof t.question!=`string`)continue;let r=Array.isArray(t.options)?t.options.map(e=>e&&typeof e==`object`?e:null).filter(e=>e!==null&&typeof e.label==`string`).map(e=>({label:e.label,...typeof e.description==`string`?{description:e.description}:{}})):[];n.push({question:t.question,header:typeof t.header==`string`?t.header:``,options:r,multiSelect:t.multiSelect===!0})}return n}function Ul(e,t,n={},r=new Set){let i={};return e.forEach((e,a)=>{if(r.has(a)){i[e.question]=Vl;return}let o=(n[a]??``).trim();i[e.question]=o||(t[a]??[]).join(`, `)}),i}function Wl(e){let t=e.questions,n=t===1?`question`:`questions`,r=t===1?`the model’s question`:`the model’s questions`,i=t===1?`The model’s question was`:`The model’s questions were`;switch(e.outcome){case`answered`:{let r=e.answers?Object.values(e.answers):null,i=r?r.filter(e=>typeof e==`string`&&e!==``&&e!==`(the user skipped this question)`).length:t;return t>0&&i<t?`You answered ${i} of ${t} ${n}`:t===0?`You answered the model’s questions`:t===1?`You answered the model’s question`:`You answered ${t} ${n}`}case`skipped`:return`You skipped ${r}`;case`dismissed`:return`${i} dismissed`;case`unanswered`:return`${i} not answered — the turn ended`}}function Gl(e){if(!e||typeof e!=`object`)return null;let t=e.answers;return t&&typeof t==`object`&&!Array.isArray(t)?t:null}var Kl=[`oauth`,`token`];function ql(e){switch(e){case`signed-out`:return`Not signed in`;case`connecting`:return`Waiting for your sign-in…`;case`connected`:return`Connected`;case`expired`:return`Sign-in expired`;case`error`:return`Cannot reach the service`}}var Jl=W().refine(e=>/^https:\/\/[^\s]+$/i.test(e),`must be an https address`),Yl=Ko({vendor:W().min(1).max(60),mcpUrl:Jl,readOnlyQuery:es(W(),W()).nullable(),auth:Ko({methods:Wo(ns(Kl)).min(1),scopes:Wo(W()),offlineAccess:Ro(),token:Ko({label:W(),createUrl:Jl,note:W().nullable()}).nullable()}),tools:Ko({deny:Wo(W()),allowWrites:Wo(W()),featured:Wo(W()),maxResultChars:Po().int().min(1e3).max(2e5)}),cli:Ko({command:W().regex(/^[A-Za-z0-9._-]{1,40}$/),versionArg:W().regex(/^--?[A-Za-z0-9-]{1,20}$/),install:es(W(),W()),login:Ko({command:W(),tokenEnv:W().nullable()}),purpose:W()}).nullable(),skills:Wo(Ko({name:W().regex(/^[a-z0-9][a-z0-9_-]{0,47}$/),source:Ko({repo:W().regex(/^[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+$/),ref:W().regex(/^[0-9a-f]{40}$/,`pin a full commit, never a branch`),path:W().refine(e=>!/(^|[\\/])\.\.([\\/]|$)|^[\\/]/.test(e),`relative path`)}),license:W(),exclude:Wo(W())})),docsUrl:Jl}).loose();function Xl(e){if(e.toolName!==`ConnectorChange`)return null;let t=e.input;if(!t||typeof t!=`object`||typeof t.connector!=`string`||typeof t.vendor!=`string`||typeof t.tool!=`string`)return null;let n=t.arguments!==null&&typeof t.arguments==`object`&&!Array.isArray(t.arguments)?t.arguments:{};return{connector:t.connector,vendor:t.vendor,tool:t.tool,description:typeof t.description==`string`?t.description:``,arguments:n}}function Zl(e){let t=Object.keys(e.arguments).slice(0,8);return`${e.vendor}: ${e.tool}${t.length>0?` (${t.join(`, `)})`:``}`}var Ql=[`win32`,`linux`,`darwin`],$l=[`demo`,`live`],eu=[`allow`,`ask`],tu=[`string`,`number`,`integer`,`boolean`,`array`,`object`];function nu(e){let t=e/1048576;return t>=100?`${Math.round(t)} MB`:t>=1?`${t.toFixed(1)} MB`:`${Math.max(1,Math.round(e/1024))} KB`}function ru(e){if(e.toolName!==`InstallToolPack`)return null;let t=e.input;return!t||typeof t!=`object`||typeof t.pack!=`string`||typeof t.name!=`string`||typeof t.version!=`string`||typeof t.sizeBytes!=`number`||typeof t.path!=`string`?null:{pack:t.pack,name:t.name,version:t.version,sizeBytes:t.sizeBytes,path:t.path}}function iu(e,t){let n=t?.[e.slug];return typeof n==`boolean`?n:e.defaultOn}function au(e,t){return e.filter(e=>iu(e,t))}var ou={slug:48,name:80,entryTool:40,description:2e3,promptLine:1e3,details:8e3,actionDescription:1e3,params:30,paramName:48,paramDescription:400,enumValues:40,callArgKeys:20,callError:500,callBatch:100},su=/^[A-Za-z0-9_-]+$/;function cu(e){return typeof e==`string`&&e.length>0&&e.length<=ou.entryTool&&su.test(e)}function lu(e){return Math.ceil(e.length/4)}function uu(e){return lu(`${e.entryTool} ${e.description}`)+55}function du(e){return e.tokensPerRequest??uu(e)+(e.promptLine?lu(e.promptLine):0)}var fu=Ko({type:ns(tu),required:Ro().optional(),enum:Wo(Jo([W(),Po()])).optional(),description:W().optional()}),pu=Ko({slug:W().min(1),description:W(),params:es(W(),fu),permission:ns(eu),sort:Po()}),mu=Ko({version:W(),url:W(),sha256:W(),sizeBytes:Po(),exe:W(),format:is(`zip`)}),hu=Ko({slug:W().min(1),name:W(),entryTool:W().refine(cu,`not a valid tool name`),description:W(),promptLine:W().nullable(),details:W().nullable().optional(),status:ns($l),defaultOn:Ro(),sort:Po(),install:mu.nullable(),actions:Wo(pu),connector:Yl.nullable().optional().catch(null)}).loose();Ko({platform:ns(Ql),version:W(),packs:Wo(hu),refreshMinutes:Po()});var gu=ns([`stdio`,`sse`,`http`]),_u=Ko({id:W().trim().regex(/^[a-z0-9][a-z0-9._-]{0,63}$/i,`ID must be 1-64 alphanumeric, dash, dot, or underscore characters`),name:W().trim().min(1).max(100),description:W().max(500).optional(),transport:gu,command:W().min(1).max(500).optional(),args:Wo(W()).max(100).optional(),env:es(W(),W()).optional(),url:W().url().max(2e3).optional(),headers:es(W(),W()).optional(),defaultOn:Ro(),enabled:Ro().optional(),catalogId:W().max(100).optional()});_u.refine(e=>e.transport===`stdio`?typeof e.command==`string`&&e.command.length>0:typeof e.url==`string`&&e.url.length>0,{message:`stdio transport requires a command; sse/http transports require a url`}),_u.partial(),es(W().regex(/^[a-z0-9][a-z0-9._-]{0,63}$/i),Ro()).refine(e=>Object.keys(e).length<=128,`At most 128 MCP server switches`);function vu(e,t){if(e.enabled===!1)return!1;let n=t?t[e.id]:void 0;return typeof n==`boolean`?n:e.defaultOn}function yu(e,t,n){return{...e??{},[t]:n}}var bu=[{id:`databases`,label:`Databases`},{id:`cloud`,label:`Cloud & DevOps`},{id:`productivity`,label:`Productivity`},{id:`analytics`,label:`Analytics`},{id:`ai`,label:`AI & Reasoning`},{id:`developer`,label:`Developer Tools`}],xu=[{id:`postgres`,name:`PostgreSQL`,description:`Inspect schemas, query tables, run read operations and analyze database structures.`,category:`databases`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@modelcontextprotocol/server-postgres`,"${connectionString}"],parameters:[{key:`connectionString`,label:`Database Connection URL`,placeholder:`postgresql://user:password@localhost:5432/dbname`,type:`password`,required:!0,target:`arg`,templateIndex:2}],docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/postgres`},{id:`sqlite`,name:`SQLite`,description:`Direct SQL query and schema inspection for local SQLite database files.`,category:`databases`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@modelcontextprotocol/server-sqlite`,`--db-path`,"${dbPath}"],parameters:[{key:`dbPath`,label:`SQLite File Path`,placeholder:`C:/data/app.db or /var/data/app.db`,type:`string`,required:!0,target:`arg`,templateIndex:3}],docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/sqlite`},{id:`supabase`,name:`Supabase`,description:`Manage Supabase Postgres database, migrations, edge functions, and project config.`,category:`databases`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@modelcontextprotocol/server-supabase`],parameters:[{key:`SUPABASE_ACCESS_TOKEN`,label:`Personal Access Token`,type:`password`,required:!0,target:`env`},{key:`SUPABASE_PROJECT_REF`,label:`Project Reference ID`,placeholder:`abcdefghijklmnopqrst`,type:`string`,required:!0,target:`env`}],docsUrl:`https://supabase.com/docs/guides/ai/mcp`},{id:`redis`,name:`Redis`,description:`Inspect keys, data structures, and execute Redis operational commands.`,category:`databases`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@modelcontextprotocol/server-redis`,"${redisUrl}"],parameters:[{key:`redisUrl`,label:`Redis Connection URL`,placeholder:`redis://localhost:6379`,type:`string`,required:!0,target:`arg`,templateIndex:2}]},{id:`mongodb`,name:`MongoDB Atlas`,description:`Query collections, inspect schemas, and interact with MongoDB Atlas databases.`,category:`databases`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@modelcontextprotocol/server-mongodb`,"${connectionString}"],parameters:[{key:`connectionString`,label:`MongoDB Connection URI`,placeholder:`mongodb+srv://user:pass@cluster.mongodb.net/dbname`,type:`password`,required:!0,target:`arg`,templateIndex:2}]},{id:`github`,name:`GitHub`,description:`Search repositories, manage issues, pull requests, files, and branches.`,category:`cloud`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@modelcontextprotocol/server-github`],parameters:[{key:`GITHUB_PERSONAL_ACCESS_TOKEN`,label:`GitHub Personal Access Token (repo scope)`,placeholder:`ghp_...`,type:`password`,required:!0,target:`env`}],docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/github`},{id:`gitlab`,name:`GitLab`,description:`Access GitLab merge requests, project branches, issues, and pipelines.`,category:`cloud`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@modelcontextprotocol/server-gitlab`],parameters:[{key:`GITLAB_PERSONAL_ACCESS_TOKEN`,label:`GitLab Personal Access Token`,type:`password`,required:!0,target:`env`},{key:`GITLAB_API_URL`,label:`GitLab API URL (optional for self-hosted)`,placeholder:`https://gitlab.com/api/v4`,type:`string`,required:!1,target:`env`}]},{id:`cloudflare`,name:`Cloudflare`,description:`Inspect and manage Cloudflare Workers, KV namespaces, D1 databases, and DNS records.`,category:`cloud`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@cloudflare/mcp-server-cloudflare`],parameters:[{key:`CLOUDFLARE_API_TOKEN`,label:`API Token`,type:`password`,required:!0,target:`env`},{key:`CLOUDFLARE_ACCOUNT_ID`,label:`Account ID`,type:`string`,required:!0,target:`env`}]},{id:`sentry`,name:`Sentry`,description:`Retrieve real-time application errors, stack traces, and issue analytics.`,category:`cloud`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@modelcontextprotocol/server-sentry`],parameters:[{key:`SENTRY_AUTH_TOKEN`,label:`Auth Token`,type:`password`,required:!0,target:`env`}]},{id:`google-drive`,name:`Google Drive`,description:`Search, read, and export documents, spreadsheets, and files from Google Drive.`,category:`productivity`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@modelcontextprotocol/server-gdrive`],docsUrl:`https://github.com/modelcontextprotocol/servers/tree/main/src/gdrive`},{id:`slack`,name:`Slack`,description:`Read conversation history, search channel messages, and post updates to Slack channels.`,category:`productivity`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@modelcontextprotocol/server-slack`],parameters:[{key:`SLACK_BOT_TOKEN`,label:`Bot User OAuth Token (xoxb-...)`,type:`password`,required:!0,target:`env`},{key:`SLACK_TEAM_ID`,label:`Slack Workspace Team ID`,type:`string`,required:!0,target:`env`}]},{id:`notion`,name:`Notion`,description:`Read and update Notion workspaces, databases, pages, and blocks.`,category:`productivity`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@modelcontextprotocol/server-notion`],parameters:[{key:`NOTION_API_KEY`,label:`Internal Integration Secret (secret_...)`,type:`password`,required:!0,target:`env`}]},{id:`linear`,name:`Linear`,description:`Track issues, cycles, projects, and comments in Linear.`,category:`productivity`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@modelcontextprotocol/server-linear`],parameters:[{key:`LINEAR_API_KEY`,label:`Personal API Key`,type:`password`,required:!0,target:`env`}]},{id:`posthog`,name:`PostHog`,description:`Query product analytics funnels, trends, user session paths, and feature flags.`,category:`analytics`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@posthog/mcp-server-posthog`],parameters:[{key:`POSTHOG_API_KEY`,label:`Personal API Key`,type:`password`,required:!0,target:`env`},{key:`POSTHOG_PROJECT_ID`,label:`Project ID`,type:`string`,required:!0,target:`env`}]},{id:`brave-search`,name:`Brave Search`,description:`Search the live web and discover local points of interest via Brave Search API.`,category:`ai`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@modelcontextprotocol/server-brave-search`],parameters:[{key:`BRAVE_API_KEY`,label:`Brave Search API Key`,type:`password`,required:!0,target:`env`}]},{id:`memory-graph`,name:`Memory (Knowledge Graph)`,description:`Persistent knowledge-graph entity and relation memory across agent turns.`,category:`ai`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@modelcontextprotocol/server-memory`]},{id:`puppeteer`,name:`Puppeteer Headless Browser`,description:`Automate browser navigation, take page screenshots, and scrape dynamic web content.`,category:`ai`,transport:`stdio`,defaultCommand:`npx`,defaultArgs:[`-y`,`@modelcontextprotocol/server-puppeteer`]},{id:`remote-sse`,name:`Remote SSE MCP Server`,description:`Connect to any hosted remote MCP server over Server-Sent Events (SSE).`,category:`developer`,transport:`sse`,defaultUrl:`https://`,parameters:[{key:`url`,label:`SSE Endpoint URL`,placeholder:`https://mcp.example.com/sse`,type:`string`,required:!0,target:`url`},{key:`Authorization`,label:`Authorization Header (optional, e.g. Bearer token)`,placeholder:`Bearer ...`,type:`password`,required:!1,target:`header`}]},{id:`remote-http`,name:`Remote Streamable HTTP Server`,description:`Connect to any remote MCP server using standard Streamable HTTP transport.`,category:`developer`,transport:`http`,defaultUrl:`https://`,parameters:[{key:`url`,label:`HTTP Endpoint URL`,placeholder:`https://mcp.example.com/mcp`,type:`string`,required:!0,target:`url`},{key:`Authorization`,label:`Authorization Header (optional, e.g. Bearer token)`,placeholder:`Bearer ...`,type:`password`,required:!1,target:`header`}]}],Su=[`No answer needed.`,`"Talk to other chats" is off in this chat: this message is from another chat's agent, not the person, and you cannot message chats. Your final answer goes back to that chat by itself.`,`"Talk to other chats" is off in this chat: this message is from another chat's agent, not the person, and you cannot message chats. It asked for no answer, so nothing goes back.`,`Last hop of this chain: you cannot message chats in this turn; put what you have in your final answer.`];[`**Let this chat work together with your other chats.**`,``,`### What it does`,`- Finds your other chats on this PC and reads their recent messages.`,`- Sends one chat, or a group of chats, a message or a task.`,`- Brings their answers back to this chat, by itself.`,``,`### How it works`,`- A chat that is asleep is woken from its saved history. A busy one gets the message when its current turn ends, never in the middle of it.`,`- The other chat does the work with its own model, folder and tools. Its answer comes back here as a new message only when this chat asked for one.`,`- Several messages from one chat that wait for a busy chat are handed over together, in one turn, with one answer.`,`- Several chats can share one conversation (a group). An answer goes only to the chat that asked, so a group cannot multiply its own messages.`,`- A chat with this switch OFF can still be messaged by a chat that has it on. It does the work, and its final answer goes back to that chat when that chat asked for one. That is all it can do: it gets none of these tools, cannot message or read other chats, and its switch stays off.`,``,`### What it costs`,`- About 650 tokens on every request while it is on, read from the prompt cache. Nothing while it is off, even in a chat that is messaged.`,`- Every message makes the chat that receives it do a turn, which spends its own tokens.`,`- Switching it on or off in a chat that already has a conversation re-writes its prompt cache once.`,``,`### Safety limits`,`- Each conversation has a budget: 20 delivered messages and 1,000,000 new tokens by default (context read back from the prompt cache is not counted). Reaching either pauses the conversation, and the chats say so.`,`- A chain stops after 3 hops (a message caused by a message caused by a message).`,`- At most 5 messages between two chats and 20 from one chat in 10 minutes, and 10 waiting for any one chat. A chat cannot message itself.`,`- A conversation with no activity for 24 hours closes by itself.`,``,`### How to stop it`,`- Turn this switch off: the chat loses these tools, and what it sent and the answers it asked for pause. It still answers a chat that messages it.`,`- Or open the Conversations window and use Pause, Close or Stop all.`,``,`### Privacy`,`- Everything stays on your PC: the messages are kept in this PC's database, never on OonaCode's server.`,`- A message never grants anything. The other chat runs with its own permissions and asks you as usual.`,``,`Only a chat with this switch on can start a conversation; a chat with it off only answers.`].join(`
|
|
78
|
+
`);var Cu={hops:3,rateWindowMs:6e5,perPair:5,perSender:20,pendingPerTarget:10,idleCloseMs:864e5,messageChars:2e4,titleChars:80,conversationTitleChars:120,recipients:10,listChats:50,readMessages:50,budgetMessagesMax:1e4,budgetTokensMax:1e9},wu={message:`✉️ Message from chat "`,reply:`↩️ Reply from chat "`,continue:`↻ Continue the message from chat "`},Tu=`⚠ `,Eu=`<local-command-stdout>`,Du=`</local-command-stdout>`,Ou=/^[A-Za-z0-9._:-]{1,128}$/;function ku(e){let t=(e??``).replace(/["“”]/g,`'`).replace(/\s+/g,` `).trim();if(!t)return`Untitled chat`;let n=Cu.titleChars;return t.length>n?`${t.slice(0,n-1).trimEnd()}…`:t}function Au(e){return ku(e.title?.trim()||e.firstPrompt?.trim()||`Chat ${e.id.slice(0,8)}`)}function ju(e,t){let n=Su.filter(e=>t===`reply`||e!==`No answer needed.`),r=e;for(let e=!0;e;){e=!1;for(let t of n){if(r===t)return``;r.startsWith(`${t}\n\n`)&&(r=r.slice(t.length+2),e=!0)}}return r}var Mu=/^\[conv:(\S+) chat:(\S+) host:(\S+) msg:(\S+?)(?: reply-to:(\S+?))?( reply expected)?\]$/;function Nu(e){if(typeof e!=`string`)return null;let t=e;t.startsWith(Eu)&&t.endsWith(Du)&&(t=t.slice(22,t.length-23)),t=t.replace(/\r\n/g,`
|
|
79
|
+
`);let n=t.indexOf(`
|
|
80
|
+
`);if(n<0)return null;let r=t.slice(0,n),i=t.slice(n+1),a=i.indexOf(`
|
|
81
|
+
`),o=a<0?i:i.slice(0,a),s=``;if(a>=0){let e=i.slice(a+1);if(!e.startsWith(`
|
|
82
|
+
`))return null;s=e.slice(1)}let c=Mu.exec(o);if(!c)return null;let[,l,u,d,f,p,m]=c;if(![l,u,d,f].every(e=>e!==void 0&&Ou.test(e))||p!==void 0&&!Ou.test(p))return null;let h=null,g=null,_=null,v=``;for(let e of[`message`,`reply`,`continue`]){let t=wu[e];if(!r.startsWith(t))continue;let n=r.slice(t.length),i=/^([^"\n]*)"(?: · (.+))?$/.exec(n);if(!i)return null;h=e,g=i[1]??``,_=i[2]??null,v=r.slice(r.indexOf(` `)+1);break}if(h===null){if(!r.startsWith(Tu)||r.length<=2)return null;h=`notice`,v=r.slice(2)}return h!==`notice`&&(s=ju(s,h)),{kind:h,title:g,pc:_,headline:v,conversationId:l,chatId:u,hostId:d,messageId:f,replyToId:p??null,replyExpected:m!==void 0,body:s}}function Pu(e){let t=Nu(e);if(!t)return[];if(t.kind===`notice`)return[t];let n=e.replace(/\r\n/g,`
|
|
83
|
+
`),r=[0],i=new Set([t.messageId]),a=Object.values(wu),o=n.indexOf(`
|
|
84
|
+
|
|
85
|
+
`);for(;o>=0;){let e=o+2;if(a.some(t=>n.startsWith(t,e))){let a=n.indexOf(`
|
|
86
|
+
`,e),o=a<0?-1:n.indexOf(`
|
|
87
|
+
`,a+1),s=Mu.exec(a<0?``:n.slice(a+1,o<0?void 0:o));s&&s[1]===t.conversationId&&s[2]===t.chatId&&s[3]===t.hostId&&s[4]!==void 0&&!i.has(s[4])&&(i.add(s[4]),r.push(e))}o=n.indexOf(`
|
|
88
|
+
|
|
89
|
+
`,o+1)}if(r.length===1)return[t];let s=[];for(let e=0;e<r.length;e+=1){let i=e+1<r.length?r[e+1]-2:n.length,a=Nu(n.slice(r[e],i));if(!a||a.kind===`notice`)return[t];s.push(a)}return s}var Fu=`mcp__oonacode__generate_image`,Iu=`Generate image`;[`**Let this chat create pictures.**`,``,`### What it does`,`- When you ask for a photo, an illustration, a logo or a poster, the model writes a detailed description and OonaCode makes the picture with Google’s image model (Gemini 3.1 Flash Image).`,`- It can also edit or restyle a picture file that is in the chat’s folder (up to 3 files, 10 MB each: PNG, JPEG, WEBP or GIF).`,"- The picture is saved as a file in the chat’s folder (`image-1.jpg`, `image-2.jpg`, …; nothing is overwritten) and shown in the chat — click it to open it large.",``,`### What it costs`,`- Each picture costs a few OonaCode credits, taken from your account. That is so on any model and any key: even in a chat that runs on your own API key or subscription, the picture is made by OonaCode’s server and paid with OonaCode credits.`,`- About 200 tokens on every request while it is on.`,``,`### What it needs`,`- You must be signed in to OonaCode (and the app unlocked) and have credits left.`,`- It works in every chat whatever model the chat uses. A chat on Google’s agy makes pictures with agy’s own tool, so this switch is not offered there.`,``,`### Privacy and labels`,`- The description, and the reference pictures you ask it to edit, are sent to OonaCode’s server and on to Google to make the picture. Nothing else from the chat is sent.`,`- Google marks every picture it generates as AI-made with a hidden label (C2PA / SynthID). It is invisible and stays in the file.`,`- Pictures are subject to Google’s safety rules; a refused request is reported in the chat.`,``,`### How to stop it`,`- Turn this switch off in the Tools menu: the chat loses the tool. Switching it in a chat that already has a conversation re-writes its prompt cache once.`].join(`
|
|
90
|
+
`),[`**Let this chat search the web, whatever model it runs on.**`,``,`### What it does`,`- The model can look things up: news, documentation, versions, prices, anything it is not sure of. It gets a short list of results (title, link, a line of text) and can open a page with the chat’s page reader.`,`- It is the same search for every model — Claude, GPT, Grok, Qwen, GLM, MiMo, DeepSeek. Claude’s own built-in search runs only on Anthropic’s servers, so on any other provider it did not exist; this replaces it everywhere so every chat behaves the same.`,``,`### What it costs`,`- Nothing: no credits and no key. The search is made by this PC.`,`- About 150 tokens on every request while it is on.`,``,`### Privacy`,`- Only the search words go out — from your PC straight to DuckDuckGo, as a browser would send them. OonaCode’s server is not on the path and sees nothing. No chat text, file or key is sent.`,`- DuckDuckGo may slow down or refuse a PC that searches a lot; the chat is then told so in words and can try again later.`,``,`### How to stop it`,`- Turn this switch off in the Tools menu: the chat loses the tool. Switching it in a chat that already has a conversation re-writes its prompt cache once.`].join(`
|
|
91
|
+
`);var Lu={listChats:30,readMessages:30,messageChars:2e4,titleChars:80,sendsPerWindow:20,newPerDay:3,rateWindowMs:6e5,timeoutMs:25e3};`${Lu.listChats}`,`${Lu.readMessages}`,[`**Let this chat work with the chats on your other PCs.**`,``,`### What it does`,`- The model can list your other PCs and the chats on them, read a chat, send a message to one, start a new chat on another PC (choosing the model, effort and mode), and stop a chat that is running.`,`- It is the same idea as *Talk to other chats*, which reaches the chats on THIS PC. This one reaches the chats on your OTHER PCs. Each chat still runs on the PC that owns it, with that PC's files and that PC's permissions.`,``,`### What it costs`,`- About 150 tokens on every request while it is on.`,`- A chat the model starts or messages on another PC spends the same account credits as any chat there.`,``,`### Safety`,`- Starting a new chat on another PC always asks you first, and Allow-always never answers it.`,`- A chat can start at most 3 new chats a day on other PCs, and a chat started this way has this switch off, so it cannot start more.`,`- Messages are limited per 10 minutes. A message never grants anything: the other chat asks you about its own tool calls, on its own PC.`,`- The other PC must be on, signed in, unlocked and have Remote access on. If it is not, the chat is told so in words.`,``,`### Privacy`,`- Everything travels end to end between your own PCs, sealed so OonaCode's server cannot read it.`,``,`### How to stop it`,`- Turn this switch off in the Tools menu. Switching it in a chat that already has a conversation re-writes its prompt cache once.`].join(`
|
|
92
|
+
`);var Ru=e=>typeof e==`string`?e:null;function zu(e){if(e.toolName!==`NewPcChat`)return null;let t=e.input;if(!t||typeof t!=`object`)return null;let n=Ru(t.pcName),r=Ru(t.prompt),i=Ru(t.fromId);return n===null||r===null||i===null?null:{pcName:n,title:Ru(t.title)??``,prompt:r,model:Ru(t.model),fromId:i,fromTitle:Ru(t.fromTitle)??``}}var Bu=`reach`,Vu={frameBytes:262144,listEntries:2e3,searchResults:200,batchOps:20,requestTimeoutMs:6e4,askTimeoutMs:3e5};Vu.frameBytes/1024,`${Vu.searchResults}`,Vu.frameBytes/1024,`${Vu.batchOps}`,[`**Let this chat work on files on your PC — the one you opened it from.**`,``,`### What it does`,`- This chat runs on another PC. With this switch and the folders you link, it can list, read and search files on THIS PC, and — only where you allow — create, change, move and delete them.`,`- It is the way a chat on a Mac or a server can use the project on your PC without you copying it over.`,``,`### You decide, every time`,`- Press *Bring this PC into the chat* on the chat’s tab: pick the folders and tick Read, Create, Edit, Delete for each. Nothing is allowed that you did not tick, and the home folder and drive roots can never be picked.`,`- Every create, change, move and delete shows a confirmation in this tab before it happens. Deleting is permanent: there is no bin.`,`- The link lasts only while this tab is open here. Closing the tab, reloading the window or losing the connection ends it, and you start from the popup again.`,``,`### What it costs`,`- About 150 tokens on every request while the switch is on, plus the files the chat chooses to read.`,``,`### Privacy`,`- Files travel end to end between your own two PCs, sealed so OonaCode's server cannot read them. Only metadata (which action, how long) is logged, never a path or a file.`,`- Running commands on this PC is not part of this switch.`,``,`### How to stop it`,`- Unlink in the popup, or close the tab. Turning the switch off in the Tools menu removes the tool from the chat.`].join(`
|
|
93
|
+
`);var Hu={enabled:!0,intervalMinutes:30,maxWords:100,inputChars:12e3},Uu={intervalMinutes:{min:5,max:1440},maxWords:{min:20,max:300},inputChars:{min:2e3,max:6e4}},Wu={userChars:2e3,concurrency:3,debounceMs:15e3,retryAfterFailureMs:3e5,callTimeoutMs:18e4};function Gu(e,t,n,r){return typeof e!=`number`||!Number.isFinite(e)?t:Math.min(r,Math.max(n,Math.round(e)))}function Ku(e){let t=Uu,n=Hu;return{enabled:typeof e.chatAboutEnabled==`boolean`?e.chatAboutEnabled:n.enabled,intervalMinutes:Gu(e.chatAboutIntervalMinutes,n.intervalMinutes,t.intervalMinutes.min,t.intervalMinutes.max),maxWords:Gu(e.chatAboutMaxWords,n.maxWords,t.maxWords.min,t.maxWords.max),inputChars:Gu(e.chatAboutInputChars,n.inputChars,t.inputChars.min,t.inputChars.max)}}function qu(e){let t=e.trim();return t===``?0:t.split(/\s+/).length}function Ju(e){if(!Number.isFinite(e))return`0 credits`;let t=Math.round(e*1e3)/1e3,n=t.toFixed(3).replace(/\.?0+$/,``);return`${n===``?`0`:n} credit${t===1?``:`s`}`}function Yu(e){if(!Number.isFinite(e)||e<0)return`?`;if(e===0)return`free`;let t=e>=100?0:2;return e.toLocaleString(`en-US`,{maximumFractionDigits:t})}function Xu(e,t){if(e===0&&(t===void 0||t===0))return`free`;let n=Yu(e);return t===void 0||!(t>e)?`${n} credits`:`${n}–${Yu(t)} credits`}function Zu(e){return e===`subscription`?`your own plan`:`your own key`}function Qu(e){return e?.route===`direct`?`subscription`:`own-key`}function $u(e,t=null){return e.providerId===`oonacode`?Ju(e.poolCredits??0):Zu(t)}function ed(e){return e.split(`
|
|
94
|
+
`).filter(e=>!/^\s*Total cost:\s*\$[\d.,]+\s*$/i.test(e)).map(e=>e.replace(/\s*\(\s*\$[\d.,]+\s*\)/g,``).replace(/\$[\d][\d.,]*/g,`—`)).join(`
|
|
95
|
+
`)}function td(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e4?`${Math.round(e/1e3)}k`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function nd(e){return e.toLocaleString(`en-US`,{maximumFractionDigits:2})}var rd={seq:0,sessionIds:null,generateAll:void 0};function id(e,t){return e.sessionIds===null||e.sessionIds.includes(t)}function ad(e){return e.source===`user`?`you`:e.source===`auto`?e.model?`the housekeeper (${e.model})`:`the housekeeper`:``}var od={pool:`OonaCode pool — credits`,"own-key":`your own API key — your provider bills you`,subscription:`your own subscription — the plan pays`};function sd(e){return e.inputTokens+e.cacheReadTokens+e.cacheWriteTokens}function cd(e,t){let n=[];return e.credits>0?n.push(`${nd(e.credits)} credits`):e.costUsd>0&&t===`own-key`&&n.push(Zu(`own-key`)),e.unpricedCalls>0&&n.push(t===`subscription`?`plan`:`${e.unpricedCalls} not priced`),n}function ld(e,t){return e.calls===0?`nothing spent yet`:[`${e.calls} call${e.calls===1?``:`s`}`,`${td(sd(e))} in / ${td(e.outputTokens)} out`,...cd(e,t)].join(` · `)}function ud(e){let t=[`${e.calls} call${e.calls===1?``:`s`}`,`${td(sd(e))} tokens in / ${td(e.outputTokens)} out`];e.credits>0&&t.push(`${nd(e.credits)} credits`);let n=e.unpricedCalls;return{line:t.join(` · `),unpriced:n>0?`${n} call${n===1?``:`s`} with no price — on your own subscriptions the plan pays`:null}}function dd(e,t){return e.pending?`Being written now…`:e.lastError?`The last attempt failed: ${e.lastError}`:t.enabled?typeof t.entryCount==`number`&&t.entryCount<2?`Too little in the chat yet — one is written after its first turn ends.`:`Not written yet — the housekeeper writes one after the chat’s next turn ends.`:`Chat abouts are off, so none is written.`}function fd(e){return`${e.running?`Writing: ${e.done} of ${e.total} done`:e.stoppedReason?`Stopped at ${e.done} of ${e.total}`:`Finished: ${e.done} of ${e.total}`} · ${e.written} written · ${e.failed} failed · ${e.skipped} skipped`}function pd(e){return e.trim().length>Wu.userChars?`At most ${Wu.userChars.toLocaleString(`en-US`)} characters.`:null}function md(e,t){let n=qu(e),r=e.trim().length;return{words:n,chars:r,overWords:n>t,overChars:r>Wu.userChars}}var hd={what:[`A short note (at most the word limit in Settings, 100 words by default) saying what a chat works on and where it stands.`,`Your other chats read it through “Talk to other chats” (its list of chats), so they can tell which chat to ask for what without opening each one.`,`The chat’s own model never writes it and never sees it as a tool.`],when:[`Written in the background by the housekeeper — the cheap helper model of the chat’s own provider — after a turn ends, only when the chat changed since the last one, and at most once per interval (30 minutes by default) per chat.`,`Regenerate writes it now, whatever the interval says. “Generate for all chats now” does that for every chat.`],who:[`The chat’s own route pays: an OonaCode pool chat spends credits, your own API key is billed by your provider, and your own subscription’s plan covers it (only the tokens are shown).`,`A call reads a part of the chat (the characters setting, 12,000 by default) and writes a few sentences.`],yours:[`Text you write yourself is kept — the housekeeper never writes over it — until you clear it (save it empty) or press Regenerate.`],where:[`It is part of the chat, so it stays on this PC: it is never uploaded to our server, and your other devices read it from this PC, like the chat itself.`],regenerate:`Write this chat’s about now with the housekeeper, whatever the interval says. It replaces the text above — your own included.`,regenerateOff:`Chat abouts are off (the switch in “What your chats are about” or Settings → This PC).`,edit:`Write the about yourself. Your text is kept until you clear it or press Regenerate.`,generateAll:`Write an about now for every chat that needs one. Chats whose about you wrote yourself, chats with too little in them and chats whose about is current are skipped. Each call is paid by its chat’s own route.`,stop:`Stop “Generate for all chats now”. The abouts being written right now finish; the rest are not started.`,stale:`The chat moved on since this about was written. The housekeeper updates it after a turn ends, once the interval allows.`,switch:`Off: no about is written for any chat — not in the background, not by Regenerate, not by “Generate for all chats now” — so nothing is spent on them.`},gd={confirmAbove:3,afterNameMs:700,betweenChatsMs:1500,maxSessionIds:1e3,titleChars:200,fallbackCreditsPerChar:.0015,measuredCharsMin:1e3},_d=[{id:`24h`,label:`Last 24 hours`,hours:24},{id:`3d`,label:`Last 3 days`,hours:72},{id:`7d`,label:`Last 7 days`,hours:168},{id:`10d`,label:`Last 10 days`,hours:240},{id:`30d`,label:`Last 30 days`,hours:720},{id:`all`,label:`All chats`,hours:null},{id:`custom`,label:`From – to…`,hours:null}];function vd(e){return typeof e==`string`&&_d.some(t=>t.id===e)}function yd(e,t=0){let n=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e??``);if(!n)return null;let r=new Date(Number(n[1]),Number(n[2])-1,Number(n[3])+t);return Number.isNaN(r.getTime())?null:r.getTime()}function bd(e,t,n={}){if(e===`custom`){let e=yd(n.from),t=yd(n.to,1);if(t!==null&&--t,e!==null&&t!==null&&e>t){let r=yd(n.to),i=yd(n.from,1);e=r,t=i===null?null:i-1}return{from:e,to:t}}let r=_d.find(t=>t.id===e)?.hours??null;return{from:r===null?null:t-r*36e5,to:null}}function xd(e,t){if(t.from===null&&t.to===null)return!0;let n=e?Date.parse(e):NaN;return!(!Number.isFinite(n)||t.from!==null&&n<t.from||t.to!==null&&n>t.to)}var Sd={en:`No summary yet.`,hy:`Ամփոփում դեռ չկա։`,fa:`هنوز خلاصهای وجود ندارد.`,ru:`Краткого описания пока нет.`,fr:`Pas encore de résumé.`,es:`Todavía no hay resumen.`,de:`Noch keine Zusammenfassung.`,it:`Ancora nessun riepilogo.`,pt:`Ainda não há resumo.`,ar:`لا يوجد ملخص بعد.`,tr:`Henüz özet yok.`,uk:`Підсумку ще немає.`,pl:`Brak jeszcze podsumowania.`,nl:`Nog geen samenvatting.`,zh:`还没有摘要。`,ja:`まだ要約はありません。`,ko:`아직 요약이 없습니다.`,hi:`अभी तक कोई सारांश नहीं है।`,ka:`შეჯამება ჯერ არ არის.`,he:`עדיין אין סיכום.`,el:`Δεν υπάρχει ακόμη περίληψη.`,sv:`Ingen sammanfattning än.`,vi:`Chưa có tóm tắt.`,id:`Belum ada ringkasan.`};function Cd(e){return Sd[e]??Sd.en}function wd(e){let t=Math.max(0,e);return t<10?t.toLocaleString(`en-US`,{maximumFractionDigits:1,minimumFractionDigits:0}):Math.round(t).toLocaleString(`en-US`)}function Td(e,t){if(e.needed===0)return`Every picked about is already in ${t} — nothing to pay.`;let n=e.needed,r=wd(Math.max(.1,e.estimatedCredits));return`≈ ${n} translation${n===1?``:`s`} into ${t}, ≈ ${r} credit${r===`1`?``:`s`}`}var Ed=[{code:`en`,name:`English`,native:`English`,bcp47:`en-US`},{code:`hy`,name:`Armenian`,native:`Հայերեն`,bcp47:`hy-AM`,variety:`Eastern Armenian, as spoken in Armenia`},{code:`fa`,name:`Persian`,native:`فارسی`,bcp47:`fa-IR`,rtl:!0,variety:`Iranian Persian (Farsi), in Persian script`},{code:`ru`,name:`Russian`,native:`Русский`,bcp47:`ru-RU`},{code:`fr`,name:`French`,native:`Français`,bcp47:`fr-FR`},{code:`es`,name:`Spanish`,native:`Español`,bcp47:`es-ES`},{code:`de`,name:`German`,native:`Deutsch`,bcp47:`de-DE`},{code:`it`,name:`Italian`,native:`Italiano`,bcp47:`it-IT`},{code:`pt`,name:`Portuguese`,native:`Português`,bcp47:`pt-BR`},{code:`ar`,name:`Arabic`,native:`العربية`,bcp47:`ar-SA`,rtl:!0},{code:`tr`,name:`Turkish`,native:`Türkçe`,bcp47:`tr-TR`},{code:`uk`,name:`Ukrainian`,native:`Українська`,bcp47:`uk-UA`},{code:`pl`,name:`Polish`,native:`Polski`,bcp47:`pl-PL`},{code:`nl`,name:`Dutch`,native:`Nederlands`,bcp47:`nl-NL`},{code:`zh`,name:`Chinese`,native:`中文`,bcp47:`zh-CN`,variety:`Mandarin Chinese, Simplified characters`},{code:`ja`,name:`Japanese`,native:`日本語`,bcp47:`ja-JP`},{code:`ko`,name:`Korean`,native:`한국어`,bcp47:`ko-KR`},{code:`hi`,name:`Hindi`,native:`हिन्दी`,bcp47:`hi-IN`},{code:`ka`,name:`Georgian`,native:`ქართული`,bcp47:`ka-GE`},{code:`he`,name:`Hebrew`,native:`עברית`,bcp47:`he-IL`,rtl:!0},{code:`el`,name:`Greek`,native:`Ελληνικά`,bcp47:`el-GR`},{code:`sv`,name:`Swedish`,native:`Svenska`,bcp47:`sv-SE`},{code:`vi`,name:`Vietnamese`,native:`Tiếng Việt`,bcp47:`vi-VN`},{code:`id`,name:`Indonesian`,native:`Bahasa Indonesia`,bcp47:`id-ID`}];function Dd(e){if(!e)return null;let t=e.trim().toLowerCase().split(/[-_]/)[0]??``;return Ed.find(e=>e.code===t)??null}var Od={id:`gemini-3.5-flash-lite`,label:`Gemini 3.5 Flash-Lite`,providerId:`gemini`},kd={words:200,inputChars:16e3},Ad={words:{min:60,max:400},speed:{min:.5,max:2}};function jd(e){let t=Ad.words;return typeof e!=`number`||!Number.isFinite(e)?kd.words:Math.min(t.max,Math.max(t.min,Math.round(e)))}function Md(e){let t=Ad.speed;return typeof e!=`number`||!Number.isFinite(e)?1:Math.min(t.max,Math.max(t.min,Math.round(e*100)/100))}var Nd=/```[\s\S]*?(?:```|$)/g,Pd=/!\[[^\]]*\]\([^)]*\)/g,Fd=/\[([^\]]+)\]\((?:[^)]*)\)/g,Id=/\b(?:https?|ftp|file):\/\/[^\s<>()]+/gi,Ld=/\bwww\.[^\s<>()]+/gi,Rd=/(?:\b[A-Za-z]:|\\\\[\w.$-]+)(?:\\[^\s\\'"`<>|:*?]+)+\\?/g,zd=/(?:^|(?<=[\s(["'`]))(?:\.{0,2}\/|~\/)?(?:[\w.@-]+\/){1,}[\w.@-]+\/?/g,Bd=/\b([\w-]+)\.(?:tsx?|jsx?|mjs|cjs|json|ya?ml|md|ps1|psm1|sh|py|kt|java|cs|go|rs|rb|php|css|scss|html?|sql|toml|lock|txt|log|xml|ini|cfg|bat|cmd|exe|dll|onnx|wav|mp3|zip|gz|bz2)\b/gi,Vd=/`([^`\n]*)`/g,Hd=/[\p{Extended_Pictographic}\u{FE0F}\u{200D}]/gu,Ud=/<\/?[a-z][^>]*>/gi;function Wd(e,t){let n=t.trim();return n&&n.length<=32&&/^[\p{L}\p{N}][\p{L}\p{N} '-]*$/u.test(n)&&!/[/\\.=(){}[\];]/.test(n)?n:``}function Gd(e){let t=e.replace(/\r\n?/g,`
|
|
96
|
+
`);t=t.replace(Nd,` `),t=t.replace(Ud,` `),t=t.replace(Pd,` `),t=t.replace(Fd,`$1`),t=t.replace(Id,` `),t=t.replace(Ld,` `),t=t.replace(Vd,Wd),t=t.replace(Rd,` `),t=t.replace(zd,` `),t=t.replace(Bd,`$1`),t=t.replace(Hd,``);let n=[];for(let e of t.split(`
|
|
97
|
+
`))/^\s*\|?\s*:?-{2,}/.test(e)||(e=e.replace(/\|/g,` `),e=e.replace(/^\s{0,3}#{1,6}\s+/,``).replace(/^\s*>\s?/,``).replace(/^\s*(?:[-*+•]|\d{1,3}[.)])\s+/,``).replace(/(\*\*|__)(.+?)\1/g,`$2`).replace(/(?<![\p{L}\p{N}])[*_]([^*_\n]+)[*_](?![\p{L}\p{N}])/gu,`$1`).replace(/~~(.+?)~~/g,`$1`).replace(/[*_#`~]+/g,` `).replace(/\s+/g,` `).trim(),e=e.replace(/\(\s*\)|\[\s*\]/g,``).replace(/\s+([,.;:!?،؛؟։])/g,`$1`).replace(/([,;:])(?:\s*[,;:])+/g,`$1`).trim(),!(!e||/^[\p{P}\s]+$/u.test(e))&&(/[.!?…։؟:;"'»”)]$/u.test(e)||(e+=`.`),n.push(e)));return n.join(`
|
|
98
|
+
`)}var Kd=/([.!?…։؟。!?]+["'»”)]*)(\s+|$)/gu,qd=/([,;:،؛՝、,;]\s+)/u;function Jd(e,t,n){let r=t,i=n;for(;r<i&&/\s/.test(e[r]);)r+=1;for(;i>r&&/\s/.test(e[i-1]);)--i;return[r,i]}function Yd(e,t=280){let n=[];for(let r of e.matchAll(/[^\n]+/g)){let[i,a]=Jd(e,r.index??0,(r.index??0)+r[0].length);if(i>=a)continue;let o=e.slice(i,a),s=0,c=[];for(let t of o.matchAll(Kd)){let n=(t.index??0)+t[1].length;c.push(Jd(e,i+s,i+n)),s=n+(t[2]?.length??0)}s<o.length&&c.push(Jd(e,i+s,a));for(let[r,i]of c)if(!(r>=i))for(let a of Zd(e,r,i,t)){let e=n[n.length-1];e!==void 0&&a.spoken.length<12&&e.spoken.length+a.spoken.length+1<=t?n[n.length-1]={start:e.start,end:a.end,spoken:`${e.spoken} ${a.spoken}`}:n.push(a)}}return n}function Xd(e,t=280){return Yd(e,t).map(e=>e.spoken)}function Zd(e,t,n,r){let i=(t,n)=>{let[r,i]=Jd(e,t,n);return r<i?{start:r,end:i,spoken:e.slice(r,i)}:null};if(n-t<=r)return[{start:t,end:n,spoken:e.slice(t,n)}];let a=[],o=e=>{e&&a.push(e)},s=t,c=t,l=t;for(let a of e.slice(t,n).split(qd)){let t=l;if(l+=a.length,a){if(c-s+a.length<=r){c=l;continue}for(o(i(s,c)),s=t,c=l;c-s>r;){let t=e.slice(s,c).lastIndexOf(` `,r),n=t>r/3?t:r;o(i(s,s+n)),s+=n}}}return o(i(s,c)),a}var Qd={version:2,drop:[`՛`,`՜`],numbers:{units:[`զրո`,`մեկ`,`երկու`,`երեք`,`չորս`,`հինգ`,`վեց`,`յոթ`,`ութ`,`ինը`],teens:[`տասը`,`տասնմեկ`,`տասներկու`,`տասներեք`,`տասնչորս`,`տասնհինգ`,`տասնվեց`,`տասնյոթ`,`տասնութ`,`տասնինը`],tens:[``,``,`քսան`,`երեսուն`,`քառասուն`,`հիսուն`,`վաթսուն`,`յոթանասուն`,`ութսուն`,`իննսուն`],hundred:`հարյուր`,thousand:`հազար`,million:`միլիոն`,ordinal_1_4:[``,`առաջին`,`երկրորդ`,`երրորդ`,`չորրորդ`],ordinal_suffix:`երորդ`,ordinal_marks:[`րդ`,`երորդ`]},latin:{visa:`վիզա`,mastercard:`մաստերքարդ`,paypal:`փեյփալ`,"wi-fi":`վայֆայ`,wifi:`վայֆայ`,bluetooth:`բլութութ`,usb:`յուէսբի`,gps:`ջիփիէս`,sms:`էսէմէս`,pdf:`փիդիէֆ`,qr:`քյուառ`,ok:`օքեյ`,online:`օնլայն`,offline:`օֆլայն`,email:`իմեյլ`,"e-mail":`իմեյլ`,iphone:`այֆոն`,android:`անդրոիդ`,windows:`վինդոուս`,google:`գուգլ`,facebook:`ֆեյսբուք`,youtube:`յութուբ`,instagram:`ինստագրամ`,telegram:`տելեգրամ`,whatsapp:`վաթսափ`,viber:`վայբեր`,zoom:`զում`,tiktok:`թիքթոք`,netflix:`նեթֆլիքս`,uber:`ուբեր`,apple:`էփլ`,samsung:`սամսունգ`,microsoft:`մայքրոսոֆթ`,arev:`Արև`,astgh:`Աստղ`,artsiv:`Արծիվ`},lexicon:[[`անգամ`,`անքամ`]]},$d={oonacode:`ունակոդ`,claude:`քլոդ`,gemini:`ջեմինի`,github:`գիթհաբ`,linux:`լինուքս`,api:`էյփիայ`,app:`էփ`},ef=/(?<![\p{L}\p{N}_])(\p{Nd}{1,3}(?:[ \u00A0]\p{Nd}{3})+|\p{Nd}+)(?:-([ա-և]+))?/gu,tf=/\p{Nd}/u,nf=/[A-Za-z][A-Za-z0-9]*(?:[-'][A-Za-z0-9]+)*/g;function rf(e){return e&&e[0].toUpperCase()+e.slice(1)}function af(e){let t=e.codePointAt(0);if(t>=48&&t<=57)return t-48;let n=t;for(;tf.test(String.fromCodePoint(n-1));)--n;return(t-n)%10}function of(e,t){let n=Math.floor(e/100),r=e%100,i=[];if(n&&i.push(n===1?t.hundred:`${t.units[n]} ${t.hundred}`),r>=20){let e=r%10;i.push(t.tens[Math.floor(r/10)]+(e?t.units[e]:``))}else r>=10?i.push(t.teens[r-10]):(r||!i.length)&&i.push(t.units[r]);return i.join(` `)}function sf(e,t){if(e.length>9)return Array.from(e,e=>t.units[Number(e)]).join(` `);let n=Number(e),r=Math.floor(n/1e6);n%=1e6;let i=Math.floor(n/1e3);n%=1e3;let a=[];return r&&a.push(`${of(r,t)} ${t.million}`),i&&a.push(i===1?t.thousand:`${of(i,t)} ${t.thousand}`),(n||!a.length)&&a.push(of(n,t)),a.join(` `)}function cf(e,t){if(e.length===1&&e>=`1`&&e<=`4`)return t.ordinal_1_4[Number(e)];let n=sf(e,t);return(n.endsWith(`ը`)?n.slice(0,-1):n)+t.ordinal_suffix}function lf(e,t,n){if(n.ordinal_marks.includes(t))return cf(e,n);let r=sf(e,n);return r.endsWith(`ինը`)?r=`${r.slice(0,-1)}ն`:r.endsWith(`ը`)&&(r=r.slice(0,-1)),r+t}function uf(e){let t=Qd,n=e;for(let e of t.drop)n=n.split(e).join(``);n=n.replace(ef,(e,n,r)=>{let i=``;for(let e of n)e!==` `&&e!==`\xA0`&&(i+=String(af(e)));return i=i.replace(/^0+(?=.)/,``),r?lf(i,r,t.numbers):sf(i,t.numbers)}),n=n.replace(nf,e=>{let n=e.toLowerCase();return Object.prototype.hasOwnProperty.call(t.latin,n)?t.latin[n]:e});for(let[e,r]of t.lexicon)n=n.split(e).join(r).split(rf(e)).join(rf(r));return n}function df(e){let t=uf(e);return t=t.replace(nf,e=>{let t=e.toLowerCase();return Object.prototype.hasOwnProperty.call($d,t)?$d[t]:e}),t}var ff=/[\u06F0-\u06F9]/g,pf=/[\u0660-\u0669]/g;function mf(e){return e.replace(ff,e=>String(e.charCodeAt(0)-1776)).replace(pf,e=>String(e.charCodeAt(0)-1632)).replace(/(\d)[\u066B](\d)/g,`$1.$2`).replace(/(\d)[\u066C](\d)/g,`$1$2`).replace(/\u066A/g,`%`).replace(/\u064A/g,`ی`).replace(/\u0643/g,`ک`).replace(/\u061F/g,`?`).replace(/\u060C/g,`,`).replace(/\u061B/g,`;`)}function hf(e,t){let n=t.toLowerCase().split(/[-_]/)[0];return n===`hy`?df(e):n===`fa`?mf(e):e}var gf=2.5,_f=e=>String.fromCharCode(e),vf=_f(8204),yf=RegExp(`[${_f(12352)}-${_f(12543)}${_f(13312)}-${_f(19903)}${_f(19968)}-${_f(40959)}${_f(63744)}-${_f(64255)}]`,`u`),bf=RegExp(`[\\p{L}\\p{N}\\p{M}](?:[\\p{L}\\p{N}\\p{M}${vf}'’-]|[.,](?=\\p{N}))*`,`gu`),xf=RegExp(`[-'’${vf}]$`,`u`);function Sf(e,t=0,n=e.length){let r=[],i=e.slice(t,n);for(let e of i.matchAll(bf)){let n=e[0];for(;xf.test(n);)n=n.slice(0,-1);if(!n)continue;let i=t+(e.index??0);if(!yf.test(n)){r.push({start:i,end:i+n.length,text:n});continue}let a=-1;for(let e=0;e<n.length;e+=1){let t=n[e];yf.test(t)?(a>=0&&(r.push({start:i+a,end:i+e,text:n.slice(a,e)}),a=-1),r.push({start:i+e,end:i+e+1,text:t})):a<0&&(a=e)}a>=0&&r.push({start:i+a,end:i+n.length,text:n.slice(a)})}return r}function Cf(e,t,n=``){let r=0;if(yf.test(e))for(let t of e)r+=yf.test(t)?2.2:1;else{let n=hf(e,t);for(let e of n)/\p{N}/u.test(e)?r+=2.5:/[\p{L}\p{M}]/u.test(e)&&(r+=1)}return/^\s*[,;:—–،؛՝、,;]/u.test(n)&&(r+=gf),Math.max(1,r)}function wf(e,t){let n=[],r=[];for(let i of Yd(e,t.maxChars??280)){let a=r.length,o=Sf(e,i.start,i.end),s=0;o.forEach((a,c)=>{let l=e.slice(a.end,o[c+1]?.start??i.end),u=Cf(a.text,t.language,l);s+=u,r.push({index:r.length,sentence:n.length,start:a.start,end:a.end,text:a.text,weight:u,startSec:0,endSec:0})}),n.push({index:n.length,start:i.start,end:i.end,spoken:i.spoken,wordFrom:a,wordTo:r.length,weight:Math.max(1,s),startSec:0,durationSec:0,leadSec:0,tailSec:0,measured:!1})}return Tf({text:e,language:t.language,sentences:n,words:r,totalSec:0,complete:n.length===0,secPerWeight:t.secPerWeight??.075})}function Tf(e){let t=e.sentences.map(e=>({...e})),n=e.words.map(e=>({...e})),r=0;for(let i of t){i.measured||(i.durationSec=i.weight*e.secPerWeight,i.leadSec=0,i.tailSec=0),i.startSec=r;let t=i.leadSec,a=i.durationSec-i.leadSec-i.tailSec,o=r+t;a<=0&&(a=i.durationSec,o=r);let s=0;for(let e=i.wordFrom;e<i.wordTo;e+=1)s+=n[e].weight;let c=o;for(let e=i.wordFrom;e<i.wordTo;e+=1){let t=n[e],r=s>0?t.weight/s*a:0;t.startSec=c,t.endSec=c+r,c+=r}r+=i.durationSec}return{...e,sentences:t,words:n,totalSec:r,complete:t.every(e=>e.measured)}}function Ef(e,t,n,r={}){if(!e.sentences[t]||!Number.isFinite(n)||n<=0)return e;let i=Math.max(0,Math.min(r.leadSec??0,n/2)),a=Math.max(0,Math.min(r.tailSec??0,n/2)),o=e.sentences.map(e=>e.index===t?{...e,durationSec:n,leadSec:i,tailSec:a,measured:!0}:e),s=0,c=0;for(let e of o)e.measured&&(s+=Math.max(0,e.durationSec-e.leadSec-e.tailSec)||e.durationSec,c+=e.weight);let l=c>0?s/c:e.secPerWeight;return Tf({...e,sentences:o,secPerWeight:l})}function Df(e,t){let n=e.sentences;if(n.length===0)return-1;let r=0,i=n.length-1;for(;r<i;){let e=r+i+1>>1;n[e].startSec<=t?r=e:i=e-1}return r}function Of(e,t){let n=e.words;if(n.length===0)return-1;let r=0,i=n.length-1;for(;r<i;){let e=r+i+1>>1;n[e].startSec<=t?r=e:i=e-1}return r}function kf(e,t){let n=e.words[Math.max(0,Math.min(t,e.words.length-1))];return n?n.startSec:0}function Af(e,t){let n=e.words;if(n.length===0)return-1;let r=0,i=n.length-1;for(;r<i;){let e=r+i>>1;n[e].end<=t?r=e+1:i=e}return r}function jf(e,t,n){return Math.max(0,Math.min(e.totalSec,t+n))}function Mf(e,t,n=1.5){let r=Df(e,t);if(r<0)return 0;let i=e.sentences[r].startSec;return t-i>n||r===0?i:e.sentences[r-1].startSec}function Nf(e,t){let n=Df(e,t),r=e.sentences[n+1];return r?r.startSec:e.totalSec}function Pf(e,t,n={}){let r=n.threshold??.01,i=Math.max(1,Math.round(t*(n.windowMs??10)/1e3)),a=Math.ceil(e.length/i),o=t=>{let n=0,a=Math.min(e.length,(t+1)*i);for(let r=t*i;r<a;r+=1)n+=e[r]*e[r];return Math.sqrt(n/Math.max(1,a-t*i))>r},s=-1;for(let e=0;e<a;e+=1)if(o(e)){s=e;break}if(s<0||t<=0)return{leadSec:0,tailSec:0};let c=s;for(let e=a-1;e>s;--e)if(o(e)){c=e;break}return{leadSec:s*i/t,tailSec:Math.max(0,(e.length-Math.min(e.length,(c+1)*i))/t)}}function Ff(e){let t=Math.max(0,Math.floor(Number.isFinite(e)?e:0)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=String(i).padStart(2,`0`);return n>0?`${n}:${String(r).padStart(2,`0`)}:${a}`:`${r}:${a}`}var If=class{#e=0;#t=0;#n=1;#r=1/0;#i=!1;anchor(e,t,n){this.#e=e,this.#t=t,this.#n=n>0?n:1,this.#i=!0}hold(e){this.#e=e,this.#i=!1}setLimit(e){this.#r=e}get running(){return this.#i}now(e){if(!this.#i)return this.#e;let t=this.#e+(e-this.#t)/1e3*this.#n;return Math.min(this.#r,Math.max(this.#e,t))}};function Lf(e){return[...e].sort((e,t)=>{let n=(Date.parse(t.createdAt)||0)-(Date.parse(e.createdAt)||0);return n===0?t.id.localeCompare(e.id):n})}var Rf=.5;function zf(e){return Number.isFinite(e)?Math.max(Rf,Math.min(2,e)):1}var Bf=class{#e;#t;#n;#r;#i=new Set;#a=new If;#o;#s=`idle`;#c;#l=0;#u=0;#d=null;#f=0;#p=Promise.resolve();#m=!1;constructor(e,t,n={}){this.#e=e,this.#o=t,this.#t=n.mode??`sentences`,this.#c=zf(n.rate??1),this.#n=n.now??(()=>Date.now()),this.#r=n.errorText??(e=>`The speech engine could not say this${e instanceof Error&&e.message?` (${e.message})`:``}.`)}get timeline(){return this.#o}snapshot(){let e=this.#g(),t=this.#o,n=t.words.length===0?-1:this.#s===`playing`?Of(t,e):this.#u;return{status:this.#s,currentSec:e,durationSec:t.totalSec,durationExact:t.complete,wordIndex:n,sentenceIndex:n>=0?t.words[n].sentence:Df(t,e),rate:this.#c,error:this.#d}}subscribe(e){return this.#i.add(e),()=>this.#i.delete(e)}#h(){for(let e of[...this.#i])e()}#g(){return this.#s===`playing`?this.#a.now(this.#n()):this.#l}#_(e){this.#s=e,this.#h()}#v(){return this.#p=this.#p.then(async()=>{try{await this.#e.stop()}catch{}}),this.#p}#y(){(this.#s===`playing`||this.#s===`buffering`)&&(this.#l=this.#g(),this.#u=Math.max(0,Of(this.#o,this.#l))),this.#f+=1,this.#a.hold(this.#l),this.#v()}#b(e){let t=this.#o,n=t.words[e];if(!n)return[];let r=t.text,i=t.sentences[n.sentence];if(this.#t===`whole`){let a=t.sentences[t.sentences.length-1];return[{sentence:i.index,base:n.start,fromWord:e,whole:!1,lastSentence:a.index,text:r.slice(n.start,a.end)}]}let a=[{sentence:i.index,base:n.start,fromWord:e,whole:e===i.wordFrom,lastSentence:i.index,text:r.slice(n.start,i.end)}];for(let e=i.index+1;e<t.sentences.length;e+=1){let n=t.sentences[e];n.wordTo!==n.wordFrom&&a.push({sentence:e,base:n.start,fromWord:n.wordFrom,whole:!0,lastSentence:e,text:r.slice(n.start,n.end)})}return a}async#x(e){if(this.#m)return;let t=this.#o;if(t.words.length===0){this.#l=0,this.#_(`ended`);return}let n=++this.#f,r=Math.max(0,Math.min(e,t.words.length-1));if(this.#u=r,this.#l=kf(t,r),this.#a.hold(this.#l),this.#d=null,this.#_(`buffering`),await this.#v(),n!==this.#f||this.#m)return;let i=this.#b(r),a=this.#c,o=-1,s=e=>{let t=i[e];this.#e.speak(t.text,{rate:a,onStart:()=>{if(n!==this.#f)return;o=this.#n();let e=kf(this.#o,t.fromWord),r=this.#o.sentences[t.lastSentence];this.#a.setLimit(r.startSec+r.durationSec),this.#a.anchor(e,o,a),this.#u=t.fromWord,this.#s===`playing`?this.#h():this.#_(`playing`)},onBoundary:e=>{if(n!==this.#f)return;let r=Af(this.#o,t.base+e);r<0||(this.#u=r,this.#a.anchor(kf(this.#o,r),this.#n(),a))},onEnd:()=>{if(n!==this.#f)return;if(t.whole&&o>=0){let e=(this.#n()-o)/1e3*a;e>.05&&(this.#o=Ef(this.#o,t.sentence,e))}let r=this.#o.sentences[t.lastSentence];if(this.#l=r.startSec+r.durationSec,this.#a.hold(this.#l),e+1<i.length){this.#e.queueAhead||s(e+1),this.#h();return}this.#l=this.#o.totalSec,this.#u=this.#o.words.length-1,this.#f+=1,this.#_(`ended`)},onError:e=>{n===this.#f&&(this.#f+=1,this.#v(),this.#d=this.#r(e),this.#_(`error`))}})};if(this.#e.queueAhead)for(let e=0;e<i.length;e+=1)s(e);else s(0)}play(){if(this.#s===`playing`||this.#s===`buffering`)return;let e=this.#s===`ended`||this.#l>=this.#o.totalSec?0:this.#u;this.#x(e)}pause(){(this.#s===`playing`||this.#s===`buffering`)&&(this.#y(),this.#_(`paused`))}toggle(){this.#s===`playing`||this.#s===`buffering`?this.pause():this.play()}seek(e){let t=this.#o,n=Math.max(0,Math.min(t.totalSec,e));this.seekWord(Math.max(0,Of(t,n)))}seekWord(e){let t=this.#o;if(t.words.length===0)return;let n=Math.max(0,Math.min(e,t.words.length-1));if(this.#s===`playing`||this.#s===`buffering`){this.#x(n);return}this.#f+=1,this.#u=n,this.#l=kf(t,n),this.#a.hold(this.#l),this.#_(this.#s===`idle`?`idle`:`paused`)}skip(e){this.seek(jf(this.#o,this.#g(),e))}nextSentence(){let e=Nf(this.#o,this.#g());e>=this.#o.totalSec||this.seek(e)}prevSentence(){this.seek(Mf(this.#o,this.#g()))}setRate(e){let t=zf(e);if(t===this.#c)return;let n=this.#s===`playing`||this.#s===`buffering`,r=n?Math.max(0,Of(this.#o,this.#g())):this.#u;this.#c=t,n?this.#x(r):this.#h()}destroy(){this.#m||(this.#y(),this.#m=!0,this.#s=`idle`,this.#i.clear())}},Vf={model:`claude-haiku-5-5`,windowHours:3,inputChars:12e3,maxOutputTokens:1500,concurrency:3,callTimeoutMs:9e4,maxPromptChars:4e3,fallbackMessages:20},Hf=[1,3,6,12,24];function Uf(e){let t=typeof e==`number`?e:Number(e);return Hf.includes(t)?t:Vf.windowHours}var Wf={suggest:`Suggest`,suggestHint:`Read the last hours of this chat and suggest what to send it next`,reviewing:e=>`Reading the last ${e} h of this chat…`,managerTitle:`Project manager`,managerHint:`Tick the chats to review. For each, the manager says where it stands and what to send next — you edit it and send it, or not. Nothing runs by itself.`,costNote:e=>`Suggestions are written by ${e} on your OonaCode credits, for every chat — whatever model or key the chat itself uses. The chat's recent messages are sent through OonaCode's server for that one call and not kept there.`,decideYourself:`Only you can decide this one — see why above.`,noCredits:e=>`Suggest runs ${e} on your OonaCode credits and the account has none left — top up in Account, then try again.`,notInPlan:e=>`Your plan does not include ${e}, which Suggest uses.`,modelUnavailable:e=>`${e}, which Suggest uses, is not offered by the OonaCode pool right now.`,finishedUnseen:`Finished — not looked at yet`,finishedUnseenError:`Finished with an error — not looked at yet`};function Gf(e,t,n=Date.now()){let r=e?.summaries[0];if(!e||!r)return!0;if(t!==null&&t!==r.id&&e.summaries.some(e=>e.id===t)||!e.changedSinceNewest)return!1;let i=Date.parse(r.createdAt);return!(Number.isFinite(i)&&n-i<6e5)}function Kf(e){return[`en`,...e.translations.map(e=>e.language)]}function qf(e,t){return t===`en`?e.text:e.translations.find(e=>e.language===t)?.text??null}function Jf(e){let t=Math.max(0,Math.round(e));return t<60?`${t} s`:`${Math.floor(t/60)}:${String(t%60).padStart(2,`0`)}`}function Yf(e){if(e.credits!==null&&e.credits>0){let t=e.credits.toLocaleString(`en-US`,{maximumFractionDigits:2});return`${t} credit${t===`1`?``:`s`}`}return e.route===`subscription`?`your plan pays`:e.route===`own-key`?Zu(`own-key`):e.route===`pool`&&e.credits===0?`0 credits`:`not priced`}var Xf={title:`Listen to this chat`,intro:e=>`A spoken summary of ${e} — its goal, what was done, where it stands and what is pending — written by the chat’s own model, in English. Other languages are translated once by ${Od.label} on your OonaCode credits and kept with the summary.`,noSummaries:`No summary yet — Play writes one.`,changedSinceNewest:`The chat has moved on since the newest summary — Play writes a new one first.`,unchanged:e=>`Nothing has changed in the chat since the summary of ${e} — that one is used, and nothing was spent.`,generating:`Generating…`,translating:`Translating…`,heading:(e,t)=>t?`${e.name}${e.code===`en`?``:` — ${e.native}`}`:`English — not in ${e.name} yet: Play translates it once`,current:`current`,playerOnly:`Voice and speed only change how this device reads it — they cost nothing.`},Zf={seq:0,conversationIds:null,sessionIds:null};function Qf(e,t){return e.conversationIds===null||e.sessionIds===null||t.sessionId&&e.sessionIds.includes(t.sessionId)?!0:(t.conversationIds??[]).some(t=>e.conversationIds.includes(t))}function $f(e){let t=e.members.filter(e=>e.leftAt===null);return t.length>0?t:e.members}function ep(e){if(e.title?.trim())return e.title.trim();let t=$f(e).map(e=>e.title);return t.length>0?t.join(` · `):`Conversation`}function tp(e,t){return e.members.some(e=>e.sessionId===t&&e.leftAt===null)}function np(e,t){return e.filter(e=>e.status!==`closed`&&tp(e,t))}function rp(e){return e.status===`active`&&(e.waiting>0||e.members.some(e=>e.leftAt===null&&e.state===`working`))}function ip(e){return e.status===`paused`?`paused`:e.status===`closed`?`closed`:rp(e)?`active`:`idle`}var ap={active:`active`,idle:`idle`,paused:`paused`,closed:`closed`};function op(e){let t=ip(e);return t===`active`?`ok`:t===`paused`?`warn`:`neutral`}function sp(e){let t=e.filter(rp).length,n=e.filter(e=>e.status===`paused`).length;return[`${e.length} ${(e=>`conversation${e===1?``:`s`}`)(e.length)}`,t>0?`${t} active`:`none active`,...n>0?[`${n} paused`]:[]].join(` · `)}var cp={active:`active`,paused:`paused`,closed:`closed`},lp={message:`Message`,reply:`Reply`,continue:`Continue`,notice:`Notice`},up={pending:`Waiting to be delivered: the other chat gets it when its current turn ends, or is woken for it.`,sending:`Being handed to a chat on another PC.`,delivering:`Being handed to the other chat right now.`,delivered:`The other chat is working on it.`,answered:`The other chat finished its turn on it.`,failed:`The other chat could not finish it (stopped, or an error). The sender was told.`,cancelled:`Withdrawn before it was delivered, or the conversation closed.`,paused:`On hold: the conversation is paused, or the chat that started this exchange has "Talk to other chats" off.`};function dp(e){switch(e){case`answered`:return`ok`;case`failed`:return`danger`;case`paused`:return`warn`;case`delivering`:case`delivered`:case`sending`:return`accent`;default:return`neutral`}}function fp(e){if(e.kind!==`notice`)return e.text;let t=Nu(e.text);return t?t.body?`${t.headline}\n\n${t.body}`:t.headline:e.text}function pp(e){return e?.status===`answered`?{label:`answered`,answeredAt:e.finishedAt,help:`This chat finished its turn on this message, and its final answer went back to the chat that asked. Nothing more is owed.`}:e?.status===`failed`||e?.status===`cancelled`?{label:`answer requested`,answeredAt:null,help:e.status===`failed`?`The chat that sent this asked for an answer, but this chat's turn on it did not finish (stopped, or an error). The sender was told.`:`The chat that sent this asked for an answer, but the message was withdrawn or its conversation closed.`}:{label:`answer requested`,answeredAt:null,help:`The chat that sent this asked for an answer: this chat's final answer to it goes back by itself when its turn ends.`}}function mp(e){let t=new Map;for(let n of e??[])for(let e of n.answerRequests??[])t.set(e.messageId,e);return t}function hp(e){return e.kind===`notice`||e.kind===`reply`||!e.expectsReply?null:e.status===`answered`?{text:`answered`,help:`The chat it went to finished its turn on it; its final answer went back as a reply.`}:e.status===`failed`||e.status===`cancelled`?{text:`not answered`,help:`It asked for an answer, but it was not answered: the turn on it failed, or it was withdrawn.`}:{text:`reply expected`,help:`The sender asked for an answer: the final answer of the turn on it will go back as a reply.`}}function gp(e){return e.batchOf?`handed over in one turn with other messages from the same chat; that turn answered them all`:null}function _p(e){return e.kind!==`notice`&&(e.status===`pending`||e.status===`paused`)}function vp(e,t){return!Number.isFinite(e)||!Number.isFinite(t)||t<=0?+(e>0):Math.max(0,Math.min(1,e/t))}function yp(e){return e.length>400||e.split(`
|
|
99
|
+
`).length>8}function bp(e,t){let n=(e,t,n)=>{let r=e.trim();if(!/^\d+$/.test(r))return`${n}: a whole number, please.`;let i=Number(r);return i<1?`${n}: at least 1.`:i>t?`${n}: at most ${t.toLocaleString()}.`:null};return n(e,Cu.budgetMessagesMax,`Messages`)??n(t,Cu.budgetTokensMax,`Tokens`)}function xp(e){return Ju(e!=null&&e>0?e:0)}function Sp(e,t){return e.credits!==void 0&&e.credits>0?`${t} tokens · ${Ju(e.credits)}`:`${t} tokens`}var Cp={window:`Chats on this PC that have "Talk to other chats" switched on can send each other messages and tasks. Every conversation between them is listed here, with all it said and what it cost.`,stopAll:`Pauses every active conversation on this PC and stops any turn a message between chats is running right now. Nothing is deleted: resume each one when you want.`,status:`Active: a message of it is waiting or one of its chats is on a turn. Idle: nothing is going on — it stays listed, a new message continues it, and it closes by itself after 24 hours without activity. Paused: held until you resume it. Closed: finished — only its history is kept.`,pause:`Holds this conversation: messages waiting in it are not delivered until you resume it. A chat already working on one finishes that turn.`,resume:`Lets the messages waiting in this conversation be delivered again. Not possible while it is over its budget — raise the budget first.`,close:`Ends this conversation for good. Messages still waiting in it are withdrawn; its history stays here.`,budget:`The most this conversation may use before it pauses by itself: delivered messages, and new tokens (context read back from the prompt cache is not counted). A budget below what is used pauses it; raising it resumes one the budget paused.`,removeMember:`Takes this chat out of the conversation: nothing more is delivered to it here. A conversation left with fewer than two chats closes.`,withdraw:`Takes this message back before it is delivered. The other chat never sees it.`,history:`Every message, reply and notice in this conversation, oldest first: who sent it to whom, when, whether it was delivered and answered, and what the turn it caused used. A message not delivered yet can be withdrawn.`,cost:`The credits the OonaCode pool charged for the turns these messages caused, and their new tokens (input and output, not the context read back from the cache). A chat on your own key or plan is not billed in credits: only its tokens count.`,openChat:`Open this chat in a tab.`,listView:`Every conversation, with its controls and its whole history.`,mapView:`Which chats are talking to each other: every chat is a dot (blue and pulsing while it works), every conversation a hub with a line to each of its chats — dashed for a chat that left. Click a hub to see that conversation, a chat to open it.`,showClosed:`Also draw the conversations that are closed, faded.`};function wp(e,t,n){return{...e??{},[t]:n}}function Tp(e,t){let n=au(e,t);return{count:n.length,label:`Tools · ${n.length}`,title:n.length>0?`OonaCode tools on in this chat: ${n.map(e=>e.name).join(`, `)}`:`No OonaCode tools are on in this chat`}}function Ep(e){return e&&Object.keys(e).length>0?{toolPacks:{...e}}:{}}var Dp=`Switching a tool restarts this chat's agent; its next message re-reads the conversation once.`;function Op(e){return e.details?.trim()||null}function kp(e){return e.description.trim()||`No details for this tool yet.`}var Ap=`A demo: its calls are checked and logged, but nothing runs on your PC yet.`;function jp(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(void 0,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}function Mp(e){if(`at`in e)return`once, ${jp(e.at)}`;if(`everyMinutes`in e){let t=e.everyMinutes;return t%1440==0?t===1440?`every day`:`every ${t/1440} days`:t%60==0?t===60?`every hour`:`every ${t/60} hours`:`every ${t} minutes`}return`cron ${e.cron}`}function Np(e,t){return t?e?`next ${jp(e)}`:`done`:e?`paused`:`done`}function Pp(e){return`${e} is offline — its chats can be read while it is online.`}function Fp(e,t,n){return n?`${e}::${n}::${t}`:`${e}::${t}`}function Ip(e){let t=e.indexOf(`::`);if(t<=0)return null;let n=e.slice(0,t),r=e.slice(t+2);if(!n||!r)return null;let i=r.indexOf(`::`);if(i>0){let e=r.slice(0,i),t=r.slice(i+2);if(e&&t&&/^[a-z0-9-]+$/.test(e))return{providerId:n,variantId:e,modelId:t}}return{providerId:n,variantId:null,modelId:r}}function Lp(e,t){return e===`oonacode`?-1:t}function Rp(e){return e.filter(e=>e.definition.enabled&&e.configured&&e.definition.poolOnly!==!0&&T(e.definition.id)&&!D(e.definition.id)&&e.definition.models.length>0).map((e,t)=>({p:e,order:Lp(e.definition.id,t)})).sort((e,t)=>e.order-t.order).map(e=>e.p)}function zp(e){let t=ks(e.definition);if(t.length<2)return[{variantId:null,suffix:``}];let n=new Set((e.credentials??[]).map(e=>e.variantId??`payg`)),r=t.filter(e=>n.has(e.id));return r.length<2?[{variantId:null,suffix:``}]:r.map(e=>({variantId:e.id,suffix:` ${Bp(e.id,e.label)}`}))}function Bp(e,t){return e===`token-plan`?`Subscription`:e===`payg`||e===`api-key`?`API`:t}function Vp(e,t){let n=Rp(e),r=e=>{let t=e.definition.clientGroup,r=(t?n.find(e=>e.definition.id===t)?.definition:void 0)?.displayName??e.definition.displayName,i=n.filter(n=>(n.definition.clientGroup??n.definition.id)===(t??e.definition.id));return e.definition.recordLabel&&i.length>1?`${r} ${e.definition.recordLabel}`:r};return n.flatMap(n=>{let i=zl(n.definition.models,t?.[n.definition.id]),a=r(n);return zp(n).map(t=>({providerId:n.definition.id,variantId:t.variantId,label:`${a}${t.suffix}`,route:n.definition.route,models:i.map(r=>({providerId:n.definition.id,variantId:t.variantId,modelId:r.id,label:r.displayName||r.id,value:Fp(n.definition.id,r.id,t.variantId),free:r.free===!0,details:{...r.aaIntelligence===void 0?{}:{intelligence:r.aaIntelligence},...r.aaCoding===void 0?{}:{coding:r.aaCoding},...r.aaOutputTps===void 0?{}:{outputTps:r.aaOutputTps},...r.aaTtft===void 0?{}:{ttft:r.aaTtft},...r.contextWindow===void 0?{}:{contextWindow:r.contextWindow},...r.maxOutputTokens===void 0?{}:{maxOutputTokens:r.maxOutputTokens},...r.supportsThinking===void 0?{}:{thinking:r.supportsThinking},...r.supportsVision===void 0?{}:{vision:r.supportsVision},...r.supportsTools===void 0?{}:{tools:r.supportsTools},...n.definition.id===`oonacode`?r.creditsPerM===void 0?r.free===!0?{creditsPerM:{input:0,output:0}}:{}:{creditsPerM:r.creditsPerM}:{},...r.notes===void 0?{}:{notes:r.notes},...r.auto===!0?{auto:!0}:{},...r.aa===void 0?{}:{aa:r.aa},...r.servedBy===void 0?{}:{providers:r.servedBy.map(t=>{let n=e.find(e=>e.definition.id===t)?.definition,i=n?.displayName??t;if(!r.subscriptionServedBy?.includes(t))return i;let a=n?.credentialVariants?.find(e=>e.id===`token-plan`)?.label;return`${i} — ${a?a.replace(/\s*\(.*\)\s*$/,``):`subscription`}`})}}}))}))}).filter(e=>e.models.length>0)}function Hp(e,t){if(!t.providerId||!t.model)return!1;let n=e.find(e=>e.definition.id===t.providerId)?.definition;if(!n||n.models.length===0)return!1;let r=Us(t.model);if(n.models.some(e=>e.id===r||e.upstreamId===r)||n.modelAliases?.[r]!==void 0||Ks(n,r)!==null)return!1;let i=r.toLowerCase();return!Gs(i)||n.modelAliases?.[i]===void 0&&!n.models.some(e=>e.id.toLowerCase().includes(i))}function Up(e){return e.map((e,t)=>({model:e,index:t})).sort((e,t)=>{if(e.model.details.auto!==t.model.details.auto)return e.model.details.auto?-1:1;let n=e.model.details.intelligence,r=t.model.details.intelligence;return n===void 0&&r===void 0?e.index-t.index:n===void 0?1:r===void 0?-1:r-n||e.index-t.index}).map(e=>e.model)}function Wp(e){return`${e.providerId}:${e.variantId??``}`}function Gp(e,t){let n=Vp(e),r=n[0]??null,i=t.model?n.find(e=>e.models.some(e=>e.modelId===t.model)):null,a=t.providerId??i?.providerId??r?.providerId??null,o=t.variantId??(t.providerId?n.find(e=>e.providerId===a)?.variantId??null:i?.variantId??r?.variantId??null);if(!a)return{providerId:null,variantId:o,modelId:t.model??null};let s=e.find(e=>e.definition.id===a)?.definition;return t.model?{providerId:a,variantId:o,modelId:(s?Ks(s,t.model):null)??t.model}:{providerId:a,variantId:o,modelId:s?.defaultModel||n.find(e=>e.providerId===a)?.models[0]?.modelId||null}}function Kp(e,t){if(!t)return!1;let n=typeof t==`object`?t.modelId:t;if(!n||e.modelId!==n)return!1;let r=typeof t==`object`?t.providerId??null:null;if(r!==null&&e.providerId!==r)return!1;let i=typeof t==`object`?t.variantId??null:null;return i===null||(e.variantId??null)===i}function qp(e){return`Remote access is turned off on ${e}, so it cannot be reached from here. Turn it on in OonaCode on that PC — Settings → This PC → Remote access — then try again.`}function Jp(e,t,n){switch(e){case`host_offline`:return Pp(t);case`host_locked`:return`${t} is locked — unlock it to read its chats.`;case`host_remote_access_off`:return qp(t);case`host_outdated`:return`${t} runs an older OonaCode — update it there to read its chats from here.`;case`no_answer`:return`${t} did not answer — try again in a moment.`;case`relay_off`:return`Remote access is off on this PC — turn it on in Settings to reach your other PCs.`;case`vault_locked`:return`Unlock your vault to read the chats on your other PCs.`;case`logged_out`:return`Sign in to your OonaCode account to see your other PCs.`;case`gateway_unreachable`:return`Your account server is unreachable right now.`;default:return n??null}}function Yp(e){if(typeof e!=`string`)return null;let t=/^(?:Failed to authenticate\.\s*)?API Error\b:?\s*(?:(\d{3})(?!\d)\s*)?([\s\S]*)$/i.exec(e.trim());return t?{status:t[1]===void 0?null:Number(t[1]),message:(t[2]??``).trim()}:null}function Xp(e){return typeof e!=`string`||e===``?!1:/prompt is too long|maximum context length|context[ _-]?length[ _-]?exceeded|input token count exceeds|too many (?:input )?tokens|exceeds? the (?:maximum|model's) context/i.test(e)}var Zp=`chat too long for this model`;function Qp(e){return typeof e!=`string`||e===``?!1:/safeguards? (?:have )?(?:flagged|blocked)/i.test(e)}var $p=`blocked by safeguards`,em=`blocked by safety filters`;function tm(e){return typeof e!=`string`||e===``?!1:/\bnot included in (?:your|the [^.;]*?) plan\b/i.test(e)}var nm=`not in your plan`;function rm(e){if(tm(e))return e.replace(/^\s*Failed to authenticate\.\s*/i,``);let t=Yp(e);if(t){let e=t.message.trim();if(e.startsWith(`{`)||e.startsWith(`[`)||/grok build|usage balance exhausted/i.test(e))return``}return e}function im(e,t){if(Xp(t))return Zp;if(Qp(t))return $p;if(Uc(`API Error ${t??``}`))return em;if(tm(t))return nm;switch(e){case 400:case 422:return`invalid request`;case 401:return`sign-in needed`;case 402:return`insufficient credits`;case 403:return`not allowed`;case 404:return`model not found`;case 408:case 504:return`timed out`;case 413:return`request too large`;case 429:return`rate limited`;default:return e!==null&&e>=500&&e<=599?`provider error`:`API error`}}var am={error_max_turns:`max turns reached`,error_max_budget_usd:`budget reached`,error_during_execution:`error during execution`,error_max_structured_output_retries:`structured output failed`,interrupted:`interrupted`,success:`error`};function om(e){if(!e.isError)return`turn complete`;if(Wc(e.text))return em;let t=Yp(e.text);if(t)return im(t.status,t.message);let n=am[e.subtype];if(n!==void 0)return n;let r=e.subtype.replace(/_/g,` `).trim();return r===``?`error`:r}var sm={authentication_failed:`sign-in needed`,billing_error:`billing problem`,rate_limit:`rate limited`,invalid_request:`invalid request`,server_error:`provider error`};function cm(e,t){if(typeof e!=`string`)return null;let n=e.trim();if(n===``)return null;if(Xp(t))return Zp;if(Qp(t))return $p;if(Uc(t)||Wc(t))return em;if(tm(t))return nm;let r=sm[n];if(r!==void 0)return r;if(n===`unknown`){let e=Yp(t);return e?im(e.status,e.message):Xp(t)?Zp:`error`}return n.replace(/_/g,` `)}function lm(e){return typeof e==`number`&&Number.isFinite(e)?e:0}function um(e,t){let n=typeof e==`object`&&e?e:{},r={input:lm(n.input_tokens),cached:lm(n.cache_read_input_tokens)+lm(n.cache_creation_input_tokens),output:lm(n.output_tokens)};if(r.input+r.cached+r.output>0||typeof t!=`object`||!t)return r;let i={input:0,cached:0,output:0};for(let e of Object.values(t)){if(typeof e!=`object`||!e)continue;let t=e;i.input+=lm(t.inputTokens),i.cached+=lm(t.cacheReadInputTokens)+lm(t.cacheCreationInputTokens),i.output+=lm(t.outputTokens)}return i}function dm(e,t){switch(e){case`chat`:return t===`api`?`Messages API`:t===`all`?`Chat turns & Messages API`:`Chat turns`;case`agent-run`:return`Agent API runs`;case`about`:return`Chat "about" (session info)`;case`voice-summary`:return`Voice — summary`;case`voice-translation`:return`Voice — translation`;case`next-prompt`:return`Project manager — suggestions`;case`image`:return`Images`;case`video`:return`Video`;case`speech`:return`Speech (text to speech)`;case`transcription`:return`Transcription`;case`audio-translation`:return`Audio translation`;case`voice-design`:return`Custom voices`;case`realtime`:return`Realtime voice`;case`key-check`:return`Key checks`}}function fm(e,t){switch(e){case`chat`:return t===`api`?`Calls to /v1/messages with your API keys.`:t===`all`?`Chats on the account’s PCs (subagents, titles and page reading included) and /v1/messages calls with its API keys.`:`Your chats — every model call a turn makes, subagents, titles and page reading included.`;case`agent-run`:return`Model calls made by agent-API runs in their sandboxes.`;case`about`:return`The short background summary each chat keeps for your other chats.`;case`voice-summary`:return`Spoken summaries of replies, written by the housekeeper model.`;case`voice-translation`:return`Translation of what was said, done on the server.`;case`next-prompt`:return`What to send a chat next, suggested when you press Suggest or Review.`;case`image`:return`Images generated.`;case`video`:return`Videos generated.`;case`speech`:return`Text turned into speech.`;case`transcription`:return`Audio turned into text.`;case`audio-translation`:return`Audio translated into English text.`;case`voice-design`:return`Custom voices made or cloned.`;case`realtime`:return`Live voice sessions, billed by the slice.`;case`key-check`:return`Tests of a key you once added; not charged.`}}var pm={maxRangeDays:366,maxHourlyRangeDays:31,defaultRangeDays:30,autoHourlyMaxHours:48},mm=`mcp__oonacode__switch_workspace`,hm=`Switch workspace`;function gm(e){if(e.toolName!==`SwitchWorkspace`)return null;let t=e.input;return!t||typeof t!=`object`||typeof t.from!=`string`||typeof t.to!=`string`?null:{from:t.from,to:t.to,create:t.create===!0}}function _m(e){return`${e.from} → ${e.to}${e.create?` (new folder)`:``}`}var vm=`mcp__oonacode__new_chat`,ym=`New chat`,bm={titleChars:120,reasonChars:500,promptChars:1e5,perStarter:3,maxDepth:1};function xm(e){return typeof e==`string`?e:null}function Sm(e){if(e.toolName!==`NewChat`)return null;let t=e.input;if(!t||typeof t!=`object`)return null;let n=xm(t.title),r=xm(t.prompt),i=xm(t.fromId);return n===null||r===null||i===null?null:{title:n,prompt:r,reason:xm(t.reason)??``,folder:xm(t.folder),model:xm(t.model),providerId:xm(t.providerId),effort:xm(t.effort),project:xm(t.project),temporary:t.temporary===!0,fromId:i,fromTitle:xm(t.fromTitle)??``}}function Cm(e,t){let n=e.replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t-1).trimEnd()}…`:n}function wm(e){return`“${Cm(e.replace(/["“”]/g,`'`),bm.titleChars)||`Untitled chat`}”`}function Tm(e){return e.folder??`a new workspace of its own`}function Em(e){return`${wm(e.title)} · ${Tm(e)} · ${e.model??`default model`}`}var Dm=`Started a new chat `,Om=/^Started a new chat “([^”\n]*)” for this task — chat ([0-9A-Za-z-]{8,64})$/;function km(e){if(typeof e!=`string`)return null;let t=e.trim();if(t.startsWith(`<local-command-stdout>`)&&t.endsWith(`</local-command-stdout>`)&&(t=t.slice(22,t.length-23).trim()),!t.startsWith(Dm))return null;let n=Om.exec(t);return n?{title:n[1]??``,sessionId:n[2]}:null}function Am(e,t,n=140){let r=ru({toolName:e,input:t});if(r){let e=`${r.name} ${r.version} (${nu(r.sizeBytes)}) → ${r.path}`;return e.length>n?`${e.slice(0,n)}…`:e}let i=Xl({toolName:e,input:t});if(i){let e=Zl(i);return e.length>n?`${e.slice(0,n)}…`:e}let a=gm({toolName:e,input:t});if(a){let e=_m(a);return e.length>n?`…${e.slice(e.length-n)}`:e}let o=Sm({toolName:e,input:t});if(o){let e=Em(o);return e.length>n?`${e.slice(0,n)}…`:e}let s=e===mm?hm:e===vm?ym:e;if(e===vm){let e=t?.title;if(typeof e==`string`&&e.trim()){let t=e.replace(/\s+/g,` `).trim();return`${s}: ${t.length>n?`${t.slice(0,n)}…`:t}`}}let c=t??{};for(let e of[`command`,`file_path`,`pattern`,`query`,`url`,`path`,`prompt`]){let t=c[e];if(typeof t==`string`&&t.trim().length>0){let e=t.replace(/\s+/g,` `).trim();return`${s}: ${e.length>n?`${e.slice(0,n)}…`:e}`}}return s}var jm={wav:{kind:`audio`,mime:`audio/wav`},mp3:{kind:`audio`,mime:`audio/mpeg`},ogg:{kind:`audio`,mime:`audio/ogg`},oga:{kind:`audio`,mime:`audio/ogg`},opus:{kind:`audio`,mime:`audio/ogg`},m4a:{kind:`audio`,mime:`audio/mp4`},aac:{kind:`audio`,mime:`audio/aac`},flac:{kind:`audio`,mime:`audio/flac`},weba:{kind:`audio`,mime:`audio/webm`},mp4:{kind:`video`,mime:`video/mp4`},m4v:{kind:`video`,mime:`video/mp4`},mov:{kind:`video`,mime:`video/mp4`},webm:{kind:`video`,mime:`video/webm`},mkv:{kind:`video`,mime:`video/x-matroska`},ogv:{kind:`video`,mime:`video/ogg`},png:{kind:`image`,mime:`image/png`},jpg:{kind:`image`,mime:`image/jpeg`},jpeg:{kind:`image`,mime:`image/jpeg`},gif:{kind:`image`,mime:`image/gif`},webp:{kind:`image`,mime:`image/webp`},bmp:{kind:`image`,mime:`image/bmp`},svg:{kind:`image`,mime:`image/svg+xml`},avif:{kind:`image`,mime:`image/avif`}};function Mm(e){let t=Math.max(e.lastIndexOf(`/`),e.lastIndexOf(`\\`)),n=e.slice(t+1),r=n.lastIndexOf(`.`);return r<=0?``:n.slice(r+1).toLowerCase()}function Nm(e){return jm[Mm(e)]??null}function Pm(){return{photo:0,video:0,audio:0,file:0,link:0}}function Fm(e){return`Attached file ${e.name} (${e.mediaType}, ${e.sizeText}) — a local file, its content is NOT included:\n\`${e.path}\`\nWork with the file at that path if the task needs it.`}function Im(e){let t=/^Attached file (.+?) \(([^()\n]*), ([^(),\n]+)\) — a local file, its content is NOT included:\n`([^`\n]+)`/.exec(e);return t?{name:t[1],mediaType:t[2],sizeText:t[3],path:t[4]}:null}function Lm(e){let t=/^Attached file ([^\n]+?):\n\n```\n([\s\S]*)\n```$/.exec(e);return t?{name:t[1],content:t[2]}:null}var Rm=`oonacode`,zm=Object.freeze({doctor:`off`,"update-config":`off`,"fewer-permission-prompts":`off`,loop:`off`,insights:`off`,"team-onboarding":`off`,"auto-mode-setup":`off`,"keybindings-help":`off`}),Bm=Object.freeze({model:{refusedBy:`app`,reason:`Use the model picker under the message box — the chat keeps the model you pick there.`},usage:{aliases:[`cost`,`stats`],refusedBy:`host`,reason:`It shows the engine's own estimate at list prices, not your OonaCode credits — see Credits used in the chat's Session info, and Credits and plan in the title bar.`,terminalReason:`It shows the engine's own estimate at list prices, not your OonaCode credits — /cost shows what this chat was charged.`},autocompact:{refusedBy:`host`,reason:`OonaCode sets the context window from the model's real size at every engine start — nothing to set here.`},"output-style":{refusedBy:`host`,reason:`A style set here is lost at the chat's next engine start — ask the chat to answer in the style you want.`},mcp:{refusedBy:`host`,reason:`OonaCode's tools are switched per chat in the Tools menu under the message box.`},"list-agents":{aliases:[`peers`],refusedBy:`host`,reason:`This chat's subagents are on the agents badge beside the model picker; chats talking to each other are in View → Conversations.`},"reload-skills":{refusedBy:`host`,reason:`OonaCode reloads skills by itself when you import or remove one in Settings → Skills.`}}),Vm=`Needs a Claude account signed in to the engine — OonaCode runs the engine without one.`,Hm=`It reads or edits your own Claude Code install (~/.claude), which OonaCode never touches.`,Um=Object.freeze({clear:{availability:`not-in-oonacode`,reason:`It starts a new engine conversation that this chat would not follow — start a new chat (+) instead.`},fast:{availability:`not-in-oonacode`,reason:`The engine answers "Fast mode is not available in the Agent SDK".`},config:{availability:`not-in-oonacode`,reason:`Claude Code's terminal settings, written to a file OonaCode rebuilds at every engine start — OonaCode's own are in Settings.`},effort:{availability:`not-in-oonacode`,reason:`Use the effort picker under the message box — it is saved with the chat.`},rename:{availability:`not-in-oonacode`,reason:`Rename the chat from its tab or the sidebar — the engine's own title is not the chat's.`},color:{availability:`not-in-oonacode`,reason:`The terminal prompt bar's colour — it belongs to Claude Code's terminal.`},"reload-plugins":{availability:`not-in-oonacode`,reason:`OonaCode loads no plugins — import a plugin's skills in Settings → Skills instead.`},heapdump:{availability:`not-in-oonacode`,reason:`It writes the engine's memory dump to your Desktop — a Claude Code diagnostic.`},agents:{availability:`not-in-oonacode`,reason:`The engine removed this wizard — ask the chat to create a subagent in .claude/agents/.`},"__remote-workflow":{availability:`not-in-oonacode`,reason:`It runs only inside Anthropic's cloud sessions.`},"workflow-launch-exec":{availability:`not-in-oonacode`,reason:`It runs only inside Anthropic's cloud sessions.`},doctor:{availability:`not-in-oonacode`,reason:Hm},"update-config":{availability:`not-in-oonacode`,reason:Hm},"fewer-permission-prompts":{availability:`not-in-oonacode`,reason:Hm},"keybindings-help":{availability:`not-in-oonacode`,reason:Hm},loop:{availability:`not-in-oonacode`,reason:`It schedules through the engine's own cron, which OonaCode turns off — ask the chat to schedule a task; OonaCode's scheduler runs it.`},insights:{availability:`not-in-oonacode`,reason:`It analyses Claude Code's own session files; OonaCode keeps chats in its own database, so the report would be empty.`},"team-onboarding":{availability:`not-in-oonacode`,reason:`It reads usage from Claude Code's own session files, which OonaCode does not keep — there is nothing to read.`},"auto-mode-setup":{availability:`not-in-oonacode`,reason:`Auto mode is not one of OonaCode's postures (${j.map(e=>e.label).join(`, `)}).`},login:{availability:`needs-anthropic-account`,reason:Vm},logout:{availability:`needs-anthropic-account`,reason:Vm},upgrade:{availability:`needs-anthropic-account`,reason:Vm},"extra-usage":{availability:`needs-anthropic-account`,reason:Vm},"rate-limit-options":{availability:`needs-anthropic-account`,reason:Vm},"privacy-settings":{availability:`needs-anthropic-account`,reason:Vm},feedback:{availability:`needs-anthropic-account`,reason:Vm},bug:{availability:`needs-anthropic-account`,reason:Vm},"install-github-app":{availability:`needs-anthropic-account`,reason:Vm},"install-slack-app":{availability:`needs-anthropic-account`,reason:Vm},"remote-control":{availability:`needs-anthropic-account`,reason:Vm},"remote-env":{availability:`needs-anthropic-account`,reason:Vm},"web-setup":{availability:`needs-anthropic-account`,reason:Vm},ultrareview:{availability:`needs-anthropic-account`,reason:Vm},ultraplan:{availability:`needs-anthropic-account`,reason:Vm},passes:{availability:`needs-anthropic-account`,reason:Vm},teleport:{availability:`needs-anthropic-account`,reason:Vm},...Object.fromEntries(Object.entries(Bm).map(([e,t])=>[e,{availability:`not-in-oonacode`,reason:t.reason,...t.refusedBy===`app`?{refusedBy:`app`}:{},...t.terminalReason?{terminalReason:t.terminalReason}:{}}]))});Object.freeze({});function Wm(e){let t=`${Rm}:`;return e.startsWith(t)&&e.length>t.length?e.slice(t.length):null}function Gm(e){let t=/^\/([^\s/]*)$/.exec(e);return t?t[1]:null}function Km(e){let t=/^\/([A-Za-z0-9][\w:.-]*)(?:\s|$)/.exec(e.trimStart());return t?t[1]:null}function qm(e,t=`host`){let n=Km(e);if(n===null)return null;let r=Um[n]??Um[Ym[n]??``];return!r||r.availability!==`not-in-oonacode`||r.refusedBy===`app`&&t!==`app`?null:{...r,command:n}}function Jm(e){return e.refusedBy===`app`?`/${e.command} is not used here. ${e.reason}`:`/${e.command} is not available in OonaCode. ${e.reason}`}var Ym=Object.freeze({reset:`clear`,new:`clear`,settings:`config`,name:`rename`,checkup:`doctor`,proactive:`loop`,...Object.fromEntries(Object.entries(Bm).flatMap(([e,t])=>(t.aliases??[]).map(t=>[t,e])))});function Xm(e){let t=!1,n=e.map(e=>{if(e.availability!==`ok`||e.source!==`builtin`&&e.source!==`skill`)return e;let n=Um[e.name];if(!n)return e;t=!0;let{note:r,...i}=e;return{...i,availability:n.availability,reason:n.reason}});return t?n:e}function Zm(e,t,n=60){let r=t.trim().toLowerCase(),i=e=>[e.name,...e.aliases??[]].map(e=>e.toLowerCase()),a=e=>r.length>0&&i(e).includes(r),o=[[],[],[],[]];for(let t of e){if(t.availability!==`ok`&&!a(t))continue;let e=i(t);r.length===0?o[1].push(t):a(t)?o[0].push(t):e.some(e=>e.startsWith(r))?o[1].push(t):e.some(e=>e.includes(r))?o[2].push(t):t.description.toLowerCase().includes(r)&&o[3].push(t)}return o.flat().slice(0,n)}function Qm(e,t){if(!/^\/\S+\s/.test(e))return null;let n=Km(e);return n===null?null:t.find(e=>e.name===n)??t.find(e=>e.aliases?.includes(n))??null}function $m(e){switch(e){case`skill`:return`skill`;case`user`:return`your skill`;case`project`:return`project`;case`plugin`:return`plugin`;case`mcp`:return`MCP`;case`other`:return`other`;default:return null}}var eh=[`skills`,`commands`],th=Object.freeze({skills:`Skills`,commands:`Commands`});function nh(e){if(e.modelSkill!==void 0)return`skills`;switch(e.source){case`skill`:case`user`:case`project`:case`plugin`:return`skills`;default:return`commands`}}function rh(e){let t={skills:[],commands:[]};for(let n of e)t[nh(n)].push(n);return t}var ih=/(?:^|[\s(])(?:e\.g|i\.e|etc|vs|cf|incl|approx|fig)$/i;function ah(e,t=90){let n=(e.split(/\n\s*\n/)[0]??``).replace(/\s+/g,` `).trim(),r=n,i=/[.!?](?=\s|$)|[。!?]/g;for(let e=i.exec(n);e!==null;e=i.exec(n)){let t=n.slice(0,e.index);if(!(e[0]===`.`&&ih.test(t))){r=(e[0]!==`.`&&e[0]!==`。`?n.slice(0,e.index+1):t).trim();break}}if(r.length<=t)return r;let a=r.slice(0,t-1),o=a.lastIndexOf(` `);return`${(r[t-1]===` `||o<=t*.66?a:a.slice(0,o)).replace(/[\s,;:—–-]+$/,``)}…`}function oh(e){return typeof e==`string`&&/^[A-Za-z0-9][\w.:-]{0,127}$/.test(e)}function sh(e){if(!Array.isArray(e))return[];let t=new Set;for(let n of e)if(oh(n)&&!Object.hasOwn(zm,n)&&(t.add(n),t.size>=200))break;return[...t].sort((e,t)=>e.localeCompare(t))}function ch(e,t,n){let r=new Set(e??[]);return n?r.add(t):r.delete(t),[...r].sort((e,t)=>e.localeCompare(t))}function lh(e,t){return(e??[]).includes(t)}function uh(e,t){let n=new Set(t??[]);if(n.size===0)return 0;let r=408;for(let t of e)n.has(t.name)&&(r+=t.tokens);return r}function dh(e,t){let n=[...new Set(t??[])];return{count:n.length,label:`Skills · ${n.length}`,title:n.length>0?`The model may use on its own in this chat: ${n.map(t=>e?.find(e=>e.name===t)?.label??t).join(`, `)}`:`The model uses no skill on its own in this chat — type /name to use one once`}}function fh(e){let t=sh(e??[]);return t.length>0?{modelSkills:t}:{}}var ph=`Every skill is always in the / menu — type it to use it once. Switch one on to let the model reach for it by itself in this chat (it then costs its tokens on every message).`,mh=`Switching a skill restarts this chat's agent: the skill list is part of the prompt, so its next message re-reads the conversation once.`,hh=`The first skill switched on also brings back the engine's Skill tool (≈388 tokens per request).`;function gh(e){switch(e){case`user`:return`Yours`;case`project`:return`Project`;case`plugin`:return`Plugin`;case`mcp`:return`MCP`;case`skill`:case`builtin`:return`Built in`;default:return`Other`}}function _h(e){switch(e){case`user`:return`One of your own skills — OonaCode's skills folder (Settings → Skills), on every chat of this PC.`;case`project`:return"This project's own — its `.claude/skills` (or `.claude/commands`) folder.";case`skill`:case`builtin`:return`Built into the coding engine OonaCode runs for every model.`;case`plugin`:return`From a plugin the engine loaded.`;case`mcp`:return`From an MCP server of this chat.`;default:return`Found by the engine in this chat’s configuration.`}}function vh(e,t){let n=[];return e.description.trim()&&n.push(e.description.trim(),``),n.push(`**Where it comes from.** ${_h(e.source)}`,``),n.push(e.typeable?`**Once, by typing it.** Type \`/${e.label}\` (or pick it in the / menu) and the engine loads it for that message only — whether this switch is on or off, at no cost to any other message.`:`**It cannot be typed.** Its author made it for the model only, so the switch is the only way to use it.`,``),n.push(t?`**On in this chat.** The model sees its name and description on every message here and may load it by itself when it fits.`:`**Off in this chat.** The model is not told it exists here. Switch it on to let the model reach for it by itself.`,``),n.push(`**What it costs while on.** ≈${e.tokens.toLocaleString(`en-US`)} tokens on every request of this chat (and the engine's Skill tool, ≈388, for the first skill on). Switching restarts the chat's agent; its next message re-reads the conversation once.`),n.join(`
|
|
100
|
+
`)}var yh=/^[A-Za-z0-9][\w.:@+\-/]*(?:\[[0-9a-z]+\])?$/;function bh(e){return e.length>0&&e.length<=200&&yh.test(e)&&!e.endsWith(`/`)&&!e.includes(`//`)}function xh(e){let t=e.indexOf(`/`);return t<=0||t===e.length-1?null:{prefix:e.slice(0,t).toLowerCase(),model:e.slice(t+1)}}function Sh(e,t,n){let r={providerId:t.providerId,variantId:t.variantId??null},i=xh(e);return!i||!n.includes(i.prefix)?{...r,model:e}:i.prefix===t.providerId?{...r,model:i.model}:t.providerId===`oonacode`?{...r,model:e}:{providerId:i.prefix,variantId:null,model:i.model}}function Ch(e,t){let n=t.variantId??null;if(t.providerId===`oonacode`)return{providerId:t.providerId,variantId:n,model:e};let r=xh(e),i=r&&r.prefix===t.providerId.toLowerCase()?r.model:e;return{providerId:t.providerId,variantId:n,model:i}}function wh(e){return`${e} (custom)`}var Th=2e5;function Eh(e){return Oh(e)?Th:null}var Dh=[`low`,`medium`,`high`];function Oh(e){return typeof e==`string`&&Us(e).toLowerCase().startsWith(`google-claude-`)}function kh(e){return Oh(e)?Dh:null}function Ah(e,t){return e?Te(e):kh(t)??[]}var jh=`google-agy`;function Mh(e){return e===jh}var Nh=[`build`,`auto`];function Ph(e){return Mh(e)?j.filter(e=>Nh.includes(e.id)):j}var Fh=`Google’s agy cannot ask for permission while OonaCode drives it, so this chat offers Build (agy may edit files; a command it wants to run is declined and reported) and Autonomous (agy may run everything).`,Ih=`Sign in on Google’s own page with your own Google account. Google then shows you a one-time code: paste it here. OonaCode never sees your password, and your sign-in stays on this PC.`;function Lh(e){return typeof e==`string`&&e.length>=8&&e.length<=512&&/^[A-Za-z0-9/_.~%+=-]+$/.test(e)}function Rh(e){try{let t=new URL(e),n=t.hostname.toLowerCase();return t.protocol===`https:`&&(n===`meta.com`||n.endsWith(`.meta.com`))}catch{return!1}}var zh=`auto`,Bh=`Auto`;function Vh(e,t){return e===`oonacode`&&t===`auto`}function Hh(e){let t=e?.trim();return t?`${Bh} (${t})`:Bh}var Uh={complete:`/api/v1/account/vault/rekey-complete`,revoke:`/api/v1/account/vault/rekey-revoke`,deviceUnlock:`/api/v1/account/device-unlock`};function Wh(e){return e?.deviceUnlock??`off`}function Gh(e){if(!e?.loggedIn)return null;let t=e;if(t.vaultStatus!==`pending_rekey`)return null;let n=t.vaultRekeyPending??null;return{pending:n,canFinishHere:t.canFinishRekey===!0,trustedDevices:n?.trustedDevices.map(e=>e.label||e.name)??[],since:n?.since??null,from:Kh(n)}}function Kh(e){if(!e)return null;let t=e.requestedFrom.device?.trim()||null,n=e.requestedFrom.ip?.trim()||null;return t&&n?`${t} (${n})`:t??n}function qh(e){if(!e)return`an unknown date`;let t=Date.parse(e);if(Number.isNaN(t))return`an unknown date`;try{return new Date(t).toLocaleString(void 0,{dateStyle:`medium`,timeStyle:`short`})}catch{return new Date(t).toISOString()}}function Jh(e){let t=e.from?` from ${e.from}`:``;return`A password reset was started on ${qh(e.since)}${t}. Your saved provider keys are still sealed under the old password.`}function Yh(e){return e.trustedDevices.length===0?`No device with "keep me unlocked" is left, so nothing here holds the key from before the reset.`:`Open OonaCode on ${Zh(e.trustedDevices)} to finish the reset — your saved keys are waiting there.`}var Xh=`Either way, your vault Recovery Key still works: sign in on the OonaCode website from any device and finish the reset there. Discarding is the last resort — it deletes your saved provider keys and that Recovery Key for good. Your chats stay on your PCs.`;function Zh(e){return e.length<=1?e[0]??``:`${e.slice(0,-1).join(`, `)} or ${e[e.length-1]}`}function Qh(e){return e.canFinishHere?`A password reset is waiting: this PC can move your vault to the new password.`:e.trustedDevices.length>0?`A password reset is waiting — your saved keys stay locked until it is finished on ${Zh(e.trustedDevices)}.`:`A password reset is waiting and no PC holds the old key — finish it with your vault Recovery Key on the OonaCode website.`}var $h=class extends Error{code;status;details;constructor(e,t,n,r){super(n),this.name=`HostApiError`,this.code=e,this.status=t,this.details=r}get isUnauthorized(){return this.status===401||this.code===`unauthorized`}get isEmailNotVerified(){return this.code===`email_not_verified`}};function eg(e){if(!e)return``;let t=new URLSearchParams;for(let[n,r]of Object.entries(e))r!=null&&r!==``&&t.set(n,String(r));let n=t.toString();return n?`?${n}`:``}function tg(e){return e.trim().replace(/\/+$/,``)}function ng(e,t){let n=tg(e.baseUrl),r=t??((e,t)=>fetch(e,t));async function i(t,i,a,o={}){let s={Authorization:`Bearer ${e.token}`,Accept:o.raw||o.bytes?`*/*`:`application/json`},c={method:t,headers:s,credentials:`omit`};o.signal&&(c.signal=o.signal),a!==void 0&&(s[`Content-Type`]=`application/json`,c.body=JSON.stringify(a));let l;try{l=await r(`${n}${i}`,c)}catch(e){throw new $h(`network`,0,`Cannot reach the host at ${n}: ${String(e?.message??e)}`)}if(!l.ok){let e=null,t=``;try{t=await l.text(),e=t?JSON.parse(t):null}catch{e=null}let n=e?.error?.code??(l.status===401?`unauthorized`:`internal`),r=e?.error?.message??(t||`${l.status} ${l.statusText}`);throw new $h(n,l.status,r,e?.error?.details)}if(o.bytes)return await l.arrayBuffer();if(o.raw)return await l.text();if(l.status===204)return;let u=await l.text();if(u)try{return JSON.parse(u)}catch{throw new $h(`parse`,l.status,`Host returned malformed JSON for ${t} ${i}`)}}let a=Be;return{health:()=>i(a.health,V.health),info:()=>i(a.info,V.info),listSessions:e=>i(a.listSessions,`${V.sessions}${eg(e)}`),createSession:e=>i(a.createSession,V.sessions,e),getSession:e=>i(a.getSession,V.session(e)),updateSession:(e,t)=>i(a.updateSession,V.session(e),t),deleteSession:e=>i(a.deleteSession,V.session(e)),exportSessionsArchive:async t=>{let i=await r(`${n}${V.sessionsExportArchive}`,{method:`POST`,credentials:`omit`,headers:{Authorization:`Bearer ${e.token}`,Accept:`application/zip`,"Content-Type":`application/json`},body:JSON.stringify({password:t})});if(!i.ok){let e=await i.text().catch(()=>``),t=null;try{t=e?JSON.parse(e):null}catch{t=null}throw new $h(t?.error?.code??`internal`,i.status,t?.error?.message??e??`the export failed`)}return i.blob()},listEntries:(e,t)=>i(a.listEntries,`${V.sessionEntries(e)}${eg(t)}`),listMessages:e=>i(a.listMessages,V.sessionMessages(e)),prompt:(e,t)=>i(a.prompt,V.sessionPrompt(e),{...t,stream:!1}),interrupt:e=>i(a.interrupt,V.sessionInterrupt(e),{}),cancelQueued:(e,t)=>i(a.cancelQueued,V.sessionQueued(e,t)),sendQueuedNow:(e,t)=>i(a.sendQueuedNow,V.sessionQueuedNow(e,t),{}),forkSession:(e,t)=>i(a.fork,V.sessionFork(e),t??{}),exportSession:(e,t)=>i(a.export,`${V.sessionExport(e)}${eg(t)}`,void 0,{raw:!0}),listProjects:()=>i(a.listProjects,V.projects),listVaultProjects:()=>i(a.listVaultProjects,V.vaultProjects),createVaultProject:e=>i(a.createVaultProject,V.vaultProjects,e),updateVaultProject:(e,t)=>i(a.updateVaultProject,V.vaultProject(e),t),deleteVaultProject:e=>i(a.deleteVaultProject,V.vaultProject(e)),listStickyNotes:()=>i(a.listStickyNotes,V.vaultNotes),createStickyNote:e=>i(a.createStickyNote,V.vaultNotes,e),updateStickyNote:(e,t)=>i(a.updateStickyNote,V.vaultNote(e),t),deleteStickyNote:e=>i(a.deleteStickyNote,V.vaultNote(e)),listScheduledTasks:(e={})=>{let t=new URLSearchParams;e.sessionId&&t.set(`sessionId`,e.sessionId),e.projectId&&t.set(`projectId`,e.projectId);let n=t.toString();return i(a.listScheduledTasks,n?`${V.scheduledTasks}?${n}`:V.scheduledTasks)},createScheduledTask:e=>i(a.createScheduledTask,V.scheduledTasks,e),updateScheduledTask:(e,t)=>i(a.updateScheduledTask,V.scheduledTask(e),t),deleteScheduledTask:e=>i(a.deleteScheduledTask,V.scheduledTask(e)),listConversations:(e={})=>i(a.listConversations,`${V.conversations}${eg({sessionId:e.sessionId})}`),getConversation:e=>i(a.getConversation,V.conversation(encodeURIComponent(e))),conversationAction:(e,t,n)=>i(a.conversationAction,V.conversationAction(encodeURIComponent(e),t),n??{}),stopAllConversations:()=>i(a.stopAllConversations,V.conversationsStopAll,{}),cancelChatMessage:e=>i(a.cancelChatMessage,V.chatMessage(encodeURIComponent(e))),getChatAbout:e=>i(a.getChatAbout,V.sessionAbout(encodeURIComponent(e))),updateChatAbout:(e,t)=>i(a.updateChatAbout,V.sessionAbout(encodeURIComponent(e)),t),regenerateChatAbout:e=>i(a.regenerateChatAbout,V.sessionAboutRegenerate(encodeURIComponent(e)),{}),listChatAbouts:()=>i(a.listChatAbouts,V.chatAbouts),generateAllChatAbouts:()=>i(a.generateAllChatAbouts,V.chatAboutsGenerateAll,{}),stopGenerateAllChatAbouts:()=>i(a.stopGenerateAllChatAbouts,V.chatAboutsGenerateAllStop,{}),generateChatAbouts:e=>i(a.generateChatAbouts,V.chatAboutsGenerate,e),planChatAboutTranslations:e=>i(a.planChatAboutTranslations,V.chatAboutsTranslationPlan,e),translateChatAbout:(e,t)=>i(a.translateChatAbout,V.sessionAboutTranslation(encodeURIComponent(e)),t),getAgyStatus:e=>i(`GET`,`${V.agyStatus}${eg(e?.refresh?{refresh:1}:void 0)}`),listAgyRequests:e=>i(`GET`,V.agyRequests(encodeURIComponent(e))),getAgyRequestBody:(e,t)=>i(`GET`,V.agyRequestBody(encodeURIComponent(e),encodeURIComponent(t))),agyInstall:()=>i(`POST`,V.agyInstall),cancelAgyInstall:()=>i(`DELETE`,V.agyInstall),agyLogin:()=>i(`POST`,V.agyLogin),cancelAgyLogin:()=>i(`DELETE`,V.agyLogin),museSetup:()=>i(`GET`,V.museSetup),museLoginStart:()=>i(`POST`,V.museLogin),museLoginCancel:()=>i(`DELETE`,V.museLogin),submitAgyLoginCode:e=>i(`POST`,V.agyLoginCode,{code:e}),listVoiceSummaries:e=>i(a.listVoiceSummaries,V.sessionVoiceSummaries(encodeURIComponent(e))),createVoiceSummary:(e,t)=>i(a.createVoiceSummary,V.sessionVoiceSummaries(encodeURIComponent(e)),t),deleteVoiceSummary:(e,t)=>i(a.deleteVoiceSummary,V.sessionVoiceSummary(encodeURIComponent(e),encodeURIComponent(t))),translateVoiceSummary:(e,t,n)=>i(a.translateVoiceSummary,V.sessionVoiceSummaryTranslations(encodeURIComponent(e),encodeURIComponent(t)),n),listNextPrompts:()=>i(`GET`,V.nextPrompts),getNextPrompt:e=>i(`GET`,V.sessionNextPrompt(encodeURIComponent(e))),suggestNextPrompt:(e,t)=>i(`POST`,V.sessionNextPrompt(encodeURIComponent(e)),t),reviewNextPrompts:e=>i(`POST`,V.nextPromptsReview,e),stopNextPromptReview:()=>i(`POST`,V.nextPromptsReviewStop),markNextPromptSent:(e,t)=>i(`POST`,V.sessionNextPromptSent(encodeURIComponent(e)),t),markSessionSeen:e=>i(`POST`,V.sessionSeen(encodeURIComponent(e))),getGithubLink:()=>i(a.getGithubLink,V.githubLink),searchEntries:e=>i(a.searchEntries,`${V.sessionSearch}${eg(e)}`),startGithubLink:()=>i(a.startGithubLink,V.githubLinkStart,{}),cancelGithubLink:()=>i(a.cancelGithubLink,V.githubLinkStart),unlinkGithub:()=>i(a.unlinkGithub,V.githubLink),scanClaudeSessions:()=>i(a.scanClaudeSessions,V.importClaude),importClaudeSessions:e=>i(a.importClaudeSessions,V.importClaude,e??{}),searchImportChats:(e,t)=>i(a.searchImportChats,`${V.importSearch}${eg(e)}`,void 0,t?{signal:t}:{}),sessionLink:e=>i(a.sessionLink,V.sessionLink(e)),syncSessionDown:e=>i(a.syncSessionDown,V.sessionSyncDown(e),{}),inspectProject:e=>i(a.inspectProject,`${V.projectInspect}${eg(e)}`),attachSessionProject:(e,t)=>i(a.attachSessionProject,V.sessionProject(e),t),listAgentTools:()=>i(`GET`,V.agentTools),listConnectors:()=>i(`GET`,V.connectors),signInConnector:(e,t)=>i(`POST`,V.connectorSignIn(encodeURIComponent(e)),t),updateConnector:(e,t)=>i(`PATCH`,V.connector(encodeURIComponent(e)),t),signOutConnector:e=>i(`DELETE`,V.connector(encodeURIComponent(e))),installConnectorSkills:e=>i(`POST`,V.connectorSkills(encodeURIComponent(e)),{}),listMcpServers:()=>i(`GET`,V.mcpServers),createMcpServer:e=>i(`POST`,V.mcpServers,e),updateMcpServer:(e,t)=>i(`PATCH`,V.mcpServer(encodeURIComponent(e)),t),deleteMcpServer:e=>i(`DELETE`,V.mcpServer(encodeURIComponent(e))),testMcpServer:e=>i(`POST`,V.mcpServerTest(encodeURIComponent(e))),testMcpConfig:e=>i(`POST`,V.mcpServerTestDraft,e),listSessionCommands:e=>i(a.listSessionCommands,V.sessionCommands(encodeURIComponent(e))),listCommands:e=>i(a.listCommands,`${V.commands}${eg(e)}`),listSessionChatSkills:e=>i(a.listSessionChatSkills,V.sessionModelSkills(encodeURIComponent(e))),listChatSkills:e=>i(a.listChatSkills,`${V.modelSkills}${eg(e)}`),listSkills:()=>i(a.listSkills,V.skills),deleteSkill:e=>i(a.deleteSkill,V.skill(e)),scanClaudeSkills:()=>i(a.scanClaudeSkills,V.importClaudeSkills),importClaudeSkills:e=>i(a.importClaudeSkills,V.importClaudeSkills,e),listProviders:()=>i(a.listProviders,V.providers),setActiveProvider:e=>i(a.setActiveProvider,V.providersActive,e),testProvider:e=>i(a.providerTest,V.providerTest(e),{}),probeCredential:(e,t)=>i(a.providerProbe,V.providerProbe(e),t),listModels:e=>i(a.listModels,`${V.models}${eg(e)}`),getSettings:()=>i(a.getSettings,V.settings),updateSettings:e=>i(a.updateSettings,V.settings,e),getAccount:()=>i(a.getAccount,V.account),login:e=>i(a.login,V.accountLogin,e),logout:()=>i(a.logout,V.accountLogout,{}),unlock:e=>i(a.unlock,V.accountUnlock,e),lock:()=>i(`POST`,V.accountLock,{reason:`user`}),plan:()=>i(`GET`,V.accountPlan),accountUsage:e=>i(`GET`,`${V.accountUsage}${eg({...e})}`),remoteUnlockHost:(e,t)=>i(`POST`,V.hostVaultUnlock(e),{password:t}),resendVerification:e=>i(a.resendVerification,V.accountResendVerification,e),startAccountLink:e=>i(a.linkStart,V.accountLinkStart,e??{}),accountLinkStatus:()=>i(a.linkStatus,V.accountLinkStatus),cancelAccountLink:()=>i(a.linkCancel,V.accountLinkCancel,{}),completeVaultRekey:e=>i(`POST`,Uh.complete,e),revokeVaultRekey:e=>i(`POST`,Uh.revoke,e),setDeviceUnlock:e=>i(`POST`,Uh.deviceUnlock,e),listCredentials:()=>i(a.listCredentials,V.credentials),addCredential:e=>i(a.addCredential,V.credentials,e),deleteCredential:e=>i(a.deleteCredential,V.credential(e)),testCredential:e=>i(a.credentialTest,V.credentialTest(e),{}),syncNow:()=>i(a.syncNow,V.syncNow,{}),claudeSubscriptionLogin:()=>i(a.claudeLogin,V.subscriptionClaudeLogin,{}),claudeSubscriptionStatus:()=>i(a.claudeStatus,V.subscriptionClaudeStatus),claudeLoginState:()=>i(a.claudeLoginState,V.subscriptionClaudeLoginState),claudeLoginCode:e=>i(a.claudeLoginCode,V.subscriptionClaudeLoginCode,e),claudeLoginCancel:()=>i(a.claudeLoginCancel,V.subscriptionClaudeLoginCancel,{}),oauthLoginStart:e=>i(a.oauthLogin,V.subscriptionOauthLogin(e),{}),oauthLoginState:e=>i(a.oauthLoginState,V.subscriptionOauthLoginState(e)),oauthLoginCancel:e=>i(a.oauthLoginCancel,V.subscriptionOauthLoginCancel(e),{}),doctor:()=>i(a.doctor,V.doctor),listHosts:()=>i(a.listHosts,V.hosts),listHostSessions:e=>i(a.listHostSessions,V.hostSessions(e)),deleteHostSession:(e,t)=>i(a.deleteHostSession,V.hostSession(e,t),{method:`DELETE`}),updateHost:(e,t)=>i(a.updateHost,V.host(e),t),listHostSessionEntries:(e,t,n)=>i(a.listHostSessionEntries,`${V.hostSessionEntries(e,t)}${eg(n)}`),reportError:e=>i(a.errorReport,V.errorReport,e),sendBugReport:e=>i(a.bugReport,V.bugReport,e),listSessionFiles:(e,t)=>i(a.listSessionFiles,`${V.sessionFiles(e)}${eg({path:t})}`),readSessionFile:(e,t)=>i(a.readSessionFile,`${V.sessionFile(e)}${eg({path:t})}`,void 0,{raw:!0}),readSessionFileBytes:(e,t)=>i(a.readSessionFile,`${V.sessionFile(e)}${eg({path:t})}`,void 0,{bytes:!0}),deleteSessionFile:(e,t)=>i(a.deleteSessionFile,`${V.sessionFile(e)}${eg({path:t})}`),grantLocalFile:async(e,t)=>{let r=await i(a.grantLocalFile,V.sessionLocalFileGrant(e),{path:t});return{...r,url:/^https?:/i.test(r.url)?r.url:`${n}${r.url}`}},listChatMedia:(e,t)=>i(a.listChatMedia,`${V.sessionMedia(e)}${eg(t?{...t}:void 0)}`),readChatMedia:(e,t)=>i(a.readChatMedia,V.sessionMediaContent(e,encodeURIComponent(t)),void 0,{bytes:!0}),grantChatMedia:async e=>{let t=await i(a.grantChatMedia,V.sessionMediaGrant(e));return{expiresAt:t.expiresAt,urlOf:r=>`${n}${V.sessionMediaContent(encodeURIComponent(e),encodeURIComponent(r))}?grant=${encodeURIComponent(t.grant)}`}},statLocalPaths:(e,t)=>i(a.statLocalPaths,V.sessionLocalFileStat(e),{paths:t}),saveTmpFile:e=>i(`POST`,V.saveTmpFile,e)}}function rg(e){return e instanceof $h&&(e.status===404||e.status===501)}var ig=120;function ag(){return ig}function og(e){let t=e.batchMs??120,n=e.hiddenBatchMs??1e3,r=e.isHidden??(()=>!1),i=e.now??(()=>Date.now()),a=e.setTimeout??((e,t)=>setTimeout(e,t)),o=e.clearTimeout??(e=>clearTimeout(e)),s=[],c=null,l=-1/0,u=!1,d=()=>{if(c!==null&&(o(c),c=null),s.length===0)return;let t=s;s=[],l=i(),e.deliver(t)};return{push(o){if(u)return;if(s.push(o),!e.isStreamFrame(o)){d();return}let f=r()?n:t;if(f<=0){d();return}if(c!==null)return;let p=i()-l;if(p>=f){d();return}c=a(()=>{c=null,d()},f-p)},flush:d,dispose(){u=!0,c!==null&&o(c),c=null,s=[]}}}function sg(e,t,n){if((t.providerId??``)!==e.providerId)return!1;if(Vh(e.providerId,e.model))return t.autoModel!==void 0;if(e.variantId!==void 0&&(t.variantId??null)!==(e.variantId??null)||!t.model)return!1;let r=Us(t.model),i=Us(e.model);if(r===i)return!0;let a=n.find(t=>t.definition.id===e.providerId)?.definition;return a!==void 0&&zs(a,i)===r}function cg(e){return e instanceof $h&&e.code===`email_not_verified`}function lg(e){if(!cg(e))return null;let t={error:{code:e.code,message:e.message,details:e.details}};return A(t)?t.error.details:null}function ug(e){let t=e.trim(),n=t.indexOf(`@`);return n<=0?`***`:`${t.slice(0,1)}***${t.slice(n)}`}function dg(e,t){return e===void 0||!Number.isFinite(e)||e<=0?t:t+Math.ceil(e)*1e3}function fg(e,t){return Math.max(0,Math.ceil((e.resendAt-t)/1e3))}function pg(e,t){if(!cg(e))return null;let n=t.now??Date.now(),r=lg(e),i=t.email.trim();return{email:i,displayEmail:r?.email||ug(i),verification:r?.verification??`pending`,registered:t.registered===!0,resendAt:dg(r?.resendAfterSec,n)}}function mg(e){let t=e.registered?`Account created. `:``;return e.verification===`unverified`?`${t}Confirm your email first — no link is outstanding for ${e.displayEmail}; send a new one.`:`${t}Confirm your email first — we sent a link to ${e.displayEmail}.`}var hg=`new-chat`,gg=`safeguard-fallback`,_g=`safeguard-no-fallback`;function vg(e=null){return{sessionId:e,session:null,items:[],index:new Map,status:`idle`,activeTurnId:null,init:null,statusText:null,pendingPermissions:[],lastSeq:null,totals:{costUsd:0,inputTokens:0,cachedInputTokens:0,outputTokens:0,turns:0},turnCachedTokens:0,contextTokens:null,hydrated:!1,agentActivity:{},hasSubagentItems:!1,hasOptimisticUser:!1,lastLocalPromptId:null,lastFrameAt:null,lastLiveUuid:null,engineSince:null,safeguardFallback:null,subpathParents:{},seen:new Set,streams:{},nextId:1}}function yg(e,t){let n=e.agentActivity[t.agentId],r={subpath:t.subpath,firstAt:n?Math.min(n.firstAt,t.at):t.at,at:n?Math.max(n.at,t.at):t.at,finished:t.finished,toolUses:(n?.toolUses??0)+t.toolUses};return{...e,agentActivity:{...e.agentActivity,[t.agentId]:r}}}function bg(e,t,n,r,i,a){let o=d_.exec(t)?.[2];if(!o)return e;let s=i&&Date.parse(i)||0;if(n!==`assistant`)return yg(e,{agentId:o,subpath:t,at:s,finished:e.agentActivity[o]?.finished??!1,toolUses:0});let c=(Array.isArray(r)?r:[]).filter(e=>e.type===`tool_use`),l=c.length===0;return typeof a==`string`&&(l=a===`end_turn`||a===`stop_sequence`),c.some(e=>e.name===`StructuredOutput`)&&(l=!0),yg(e,{agentId:o,subpath:t,at:s,finished:l,toolUses:c.length})}function xg(e,t){switch(t.type){case`frame`:return Tg(e,t.frame,t.receivedAt);case`hydrate`:return s_(e,t.messages,t.session??null);case`entries`:return l_(e,t.entries);case`session`:return g_(e,t.session);case`local_prompt`:return v_(e,t);case`local_prompt_failed`:return y_(e,t.requestId);case`local_permission`:return o_(e,t.requestId,t.behavior,`local`);case`local_system`:{let n={kind:`system`,id:`sys:${e.nextId}`,uuid:null,parentToolUseId:null,turnId:null,timestamp:null,subtype:t.subtype,text:t.text};return E_({...e,nextId:e.nextId+1},n)}case`model_picked`:return Sg(e,{type:`model_change`});case`reset`:return vg(e.sessionId)}}function Sg(e,t){let n=$c(e.safeguardFallback,t);return n===e.safeguardFallback?e:{...e,safeguardFallback:n}}function Cg(e){return/^Set model to\s/.test(e)}function wg(e,t,n){let r=n.uuid?`sys:${n.uuid}`:`sys:${e.nextId}`;if(e.index.get(r)!==void 0)return e;let i=e;if(t.retractedUuids.length>0){let e=new Set(t.retractedUuids),n=new Set(i.items.filter(t=>t.uuid!==null&&e.has(t.uuid)).map(e=>e.id));n.size>0&&(i=O_(i,n))}let a={kind:`system`,id:r,uuid:n.uuid,parentToolUseId:n.parentToolUseId,turnId:n.turnId,timestamp:n.timestamp,subtype:t.kind===`fallback`?gg:_g,text:t.text,refusal:t,...t.kind===`no_fallback`?{refusalBefore:i.safeguardFallback?.notice??null}:{}};if(i=E_(n.uuid?i:j_(i),a),n.parentToolUseId!==null)return i;let o=n.timestamp?Date.parse(n.timestamp):NaN;return Sg(i,{type:`notice`,notice:t,at:Number.isFinite(o)?o:null,live:n.live})}function Tg(e,t,n){let r=Ag(e,t,n);if(n===void 0||!Dg(t,e,r))return r;let i=r.lastFrameAt;return i!==null&&n>=i&&n-i<1e3?r:{...r,lastFrameAt:n}}function Eg(e){return e===`running`||e===`waiting_permission`}function Dg(e,t,n){switch(e.type){case`agent`:return e.seq===null?e.message.type!==`system`||e.message.subtype!==`local_command`:!1;case`turn_started`:case`turn_finished`:case`prompt_delivered`:case`subagent_activity`:return!0;case`permission_request`:return n!==t;case`permission_resolved`:return!0;default:return!1}}function Og(e){if(e.lastFrameAt!==null||!e.hydrated||!Eg(e.status))return e;let t=e.engineSince??0;for(let n=e.items.length-1;n>=0;n--){let r=e.items[n].timestamp,i=r?Date.parse(r):NaN;if(Number.isFinite(i)){i>t&&(t=i);break}}for(let n of Object.values(e.agentActivity))n.at>t&&(t=n.at);return t>0?{...e,lastFrameAt:t}:e}function kg(e,t,n){return t!==null||n===void 0||typeof e.timestamp==`string`?e:{...e,timestamp:new Date(n).toISOString()}}function Ag(e,t,n){switch(t.type){case`agent`:{if(t.seq!==null&&e.seen.has(`seq:${t.seq}`))return e;let r=jg(e,kg(t.message,t.seq,n),{turnId:t.turnId,receivedAt:n,live:t.seq===null});return t.seq!==null&&(r=A_(r,`seq:${t.seq}`),(r.lastSeq===null||t.seq>r.lastSeq)&&(r={...r,lastSeq:t.seq})),r}case`turn_started`:{let n=`turnstart:${t.turnId}`;if(e.seen.has(n))return e;let r=A_(e,n);if(r={...r,activeTurnId:t.turnId,status:`running`,statusText:null,turnCachedTokens:0},t.requestId){let e=r.items.findIndex(e=>e.kind===`user`&&e.requestId===t.requestId);if(e>=0){let n={...r.items[e],turnId:t.turnId,waiting:!1};r=e<r.items.length-1?E_(O_(r,new Set([n.id])),n):D_(r,e,n)}}return r}case`turn_finished`:return t_(e,t.result,t.turnId,t.waitingRequestIds);case`prompt_delivered`:return Xg(e,t.text,t.deliveredAt,t.requestId);case`prompt_cancelled`:{let n=e.items.filter(e=>e.kind===`user`&&!e.failed&&(e.requestId===t.requestId||(e.waiting||e.optimistic)&&e.deliveredAt===null&&e.text===t.text));return O_(e,new Set(n.map(e=>e.id)))}case`subagent_activity`:return yg(e,{agentId:t.agentId,subpath:t.subpath,at:Date.parse(t.at)||Date.now(),finished:t.finished,toolUses:t.toolUses});case`permission_request`:return a_(e,t.request,t.turnId,t.settled===!0);case`permission_resolved`:return o_(e,t.requestId,t.behavior,t.resolvedBy);case`session_state`:{let n=t.session;return g_((n.status===`idle`||n.status===`error`)&&e.pendingPermissions.length===0&&e.activeTurnId!==null?{...e,activeTurnId:null}:e,n)}case`error`:{if(t.code===`replay_truncated`||t.code===`replay_windowed`)return e;let r={kind:`error`,id:`err:${e.nextId}`,uuid:null,parentToolUseId:null,turnId:e.activeTurnId,timestamp:n===void 0?null:new Date(n).toISOString(),code:t.code,message:t.message,requestId:t.requestId??null};return E_({...e,nextId:e.nextId+1},r)}default:return e}}function jg(e,t,n){let r=typeof t.uuid==`string`?t.uuid:null,i=t.type===`stream_event`||t.type===`tool_progress`,a=r&&!i?`uuid:${r}`:null;if(i&&r!==null&&r===e.lastLiveUuid)return e;if(a&&e.seen.has(a))return t.type===`assistant`?Ig(e,t):e;let o=e;switch(t.type){case`system`:o=Mg(e,t,n);break;case`stream_event`:o=Ng(e,t,n);break;case`assistant`:o=Fg(e,t,n);break;case`user`:o=Gg(e,t,n);break;case`result`:o=$g(e,t,n);break;case`tool_progress`:o=r_(e,t);break;case`auth_status`:o=i_(e,t,n);break;default:return e}return a?o=A_(o,a):i&&r!==null&&(o={...o,lastLiveUuid:r}),o}function Mg(e,t,n){switch(t.subtype){case`init`:{let r={model:I_(t.model),cwd:I_(t.cwd),tools:Array.isArray(t.tools)?t.tools.filter(e=>typeof e==`string`):[],permissionMode:I_(t.permissionMode),claudeCodeVersion:I_(t.claude_code_version),apiKeySource:I_(t.apiKeySource),sessionId:I_(t.session_id),mcpServers:Array.isArray(t.mcp_servers)?t.mcp_servers:[]};return{...e,init:r,engineSince:n.receivedAt??Date.now()}}case Jc:case Yc:{let r=Qc(t);return r?wg(e,r,{uuid:N_(t),parentToolUseId:P_(t),turnId:n.turnId??e.activeTurnId,timestamp:F_(t),live:n.live===!0}):e}case`compact_boundary`:{let r=t.compact_metadata??{},i={kind:`compact`,id:M_(e,`compact`,t),uuid:N_(t),parentToolUseId:P_(t),turnId:n.turnId,timestamp:F_(t),trigger:r.trigger===`manual`?`manual`:`auto`,preTokens:typeof r.pre_tokens==`number`?r.pre_tokens:0,postTokens:typeof r.post_tokens==`number`?r.post_tokens:null};return E_(j_(e),i)}case`status`:{let n=typeof t.status==`string`?t.status:null;return{...e,statusText:n}}case`task_notification`:{let r=ve({taskId:I_(t.task_id)||null,toolUseId:I_(t.tool_use_id)||null,status:I_(t.status)||null,summary:I_(t.summary)||null});if(S_(e,r))return e;let i=N_(t),a={kind:`user`,id:i?`u:${i}`:`i${e.nextId}`,uuid:i,parentToolUseId:P_(t),turnId:n.turnId,timestamp:F_(t),text:r,attachments:[],requestId:null,optimistic:!1,failed:!1,waiting:!1,deliveredAt:null,compactSummary:!1,taskNotification:!0,engineNote:!1};return e.index.get(a.id)===void 0?E_(i?e:j_(e),a):e}case`permission_denied`:{let n=I_(t.tool_use_id),r=I_(t.message);return k_(e,n,e=>{let t=e.name===`AskUserQuestion`&&r===`the user skipped the question`;return{...e,status:t?`skipped`:`denied`,result:e.result??{content:r||`Permission denied`,isError:!t,structured:null}}})}case`rewind_boundary`:{let n={kind:`system`,id:`sys:${e.nextId}`,uuid:N_(t),parentToolUseId:P_(t),turnId:e.activeTurnId,timestamp:F_(t),subtype:`rewind`,text:typeof t.content==`string`&&t.content.trim()?t.content.trim():`Rewound here — the conversation was taken back to this point and continued differently.`};return E_({...e,nextId:e.nextId+1},n)}default:{let n=typeof t.content==`string`?t.content.trim():``,r=n?Vg(n):null;if(!r||r.subtype===`caveat`)return e;let i=r.subtype===`local-command`?Wg(n):null,a=r.subtype===`local-command`&&!i?km(n):null,o={kind:`system`,id:`sys:${e.nextId}`,uuid:N_(t),parentToolUseId:P_(t),turnId:e.activeTurnId,timestamp:F_(t),subtype:i?`chat-notice`:a?hg:r.subtype,text:r.text,...i?{chatMarker:i}:{},...a?{newChat:a}:{}},s=E_({...e,nextId:e.nextId+1},o);return r.subtype===`local-command`&&Cg(r.text)?Sg(s,{type:`model_change`}):s}}}function Ng(e,t,n){let r=t.event;if(!r||typeof r!=`object`)return e;let i=P_(t),a=i??``,o=e.streams[a]??{messageId:null,model:null,blocks:{},unclaimed:[]};switch(r.type){case`message_start`:{let t=r.message,n={messageId:t?.id??null,model:t?.model??null,blocks:{},unclaimed:[]},i=e;for(let e of o.unclaimed)i=Pg(i,e);return{...i,streams:{...i.streams,[a]:n}}}case`content_block_start`:{let s=r.content_block,c=e,l;if(s.type===`text`)l={kind:`assistant`,id:`i${e.nextId}`,uuid:null,parentToolUseId:i,turnId:n.turnId,timestamp:F_(t),text:s.text??``,streaming:!0,model:o.model,messageId:o.messageId,error:null,aborted:!1},c=j_(c);else if(s.type===`thinking`||s.type===`redacted_thinking`)l={kind:`thinking`,id:`i${e.nextId}`,uuid:null,parentToolUseId:i,turnId:n.turnId,timestamp:F_(t),text:s.type===`thinking`?s.thinking??``:``,streaming:!0,redacted:s.type===`redacted_thinking`},c=j_(c);else if(s.type===`tool_use`){let c=s;if(e.index.get(c.id)!==void 0){let t={...o.blocks,[r.index]:c.id};return{...e,streams:{...e.streams,[a]:{...o,blocks:t}}}}let u=c.input&&Object.keys(c.input).length>0;l={kind:`tool`,id:c.id,uuid:null,parentToolUseId:i,turnId:n.turnId,timestamp:F_(t),toolUseId:c.id,name:c.name,input:u?c.input:null,inputJson:u?JSON.stringify(c.input):``,status:`streaming`,result:null,startedAt:n.receivedAt??null,finishedAt:null,durationMs:null,elapsedSec:null,permissionRequestId:null,messageId:o.messageId}}else return e;c=E_(c,l);let u={...o.blocks,[r.index]:l.id},d=[...o.unclaimed,l.id];return{...c,streams:{...c.streams,[a]:{...o,blocks:u,unclaimed:d}}}}case`content_block_delta`:{let t=o.blocks[r.index];if(!t)return e;let n=e.index.get(t);if(n===void 0)return e;let i=e.items[n],a=r.delta;return a.type===`text_delta`&&i.kind===`assistant`?D_(e,n,{...i,text:i.text+a.text}):a.type===`thinking_delta`&&i.kind===`thinking`?D_(e,n,{...i,text:i.text+a.thinking}):a.type===`input_json_delta`&&i.kind===`tool`?D_(e,n,{...i,inputJson:i.inputJson+a.partial_json}):e}case`content_block_stop`:{let t=o.blocks[r.index];return t?Pg(e,t,n.receivedAt):e}case`message_delta`:case`message_stop`:case`ping`:return e;case`error`:{let a={kind:`error`,id:`err:${e.nextId}`,uuid:null,parentToolUseId:i,turnId:n.turnId,timestamp:F_(t),code:r.error?.type??`stream_error`,message:r.error?.message??`stream error`,requestId:null};return E_(j_(e),a)}default:return e}}function Pg(e,t,n){let r=e.index.get(t);if(r===void 0)return e;let i=e.items[r];if(i.kind===`assistant`||i.kind===`thinking`)return i.streaming?D_(e,r,{...i,streaming:!1}):e;if(i.kind===`tool`&&i.status===`streaming`){let t=i.input??B_(i.inputJson);return D_(e,r,{...i,input:t,status:`running`,startedAt:i.startedAt??n??null})}return e}function Fg(e,t,n){let r=t.local_command_source;if(typeof r==`string`){let i=Vg(r.trim());if(i&&(i.subtype===`local-command`||i.subtype===`local-command-error`)){let r={kind:`system`,id:`sys:${e.nextId}`,uuid:N_(t),parentToolUseId:P_(t),turnId:n.turnId??e.activeTurnId,timestamp:F_(t),subtype:i.subtype,text:i.text},a=E_({...e,nextId:e.nextId+1},r);return i.subtype===`local-command`&&Cg(i.text)?Sg(a,{type:`model_change`}):a}}let i=t.message??{},a=R_(i.content),o=P_(t),s=o??``,c=N_(t),l=F_(t),u=typeof t.error==`string`?t.error:null,d=t.aborted===!0,f=e;{let e=L_(i.usage?.cache_read_input_tokens)+L_(i.usage?.cache_creation_input_tokens),n=`usage:${i.id??``}`;if(e>0&&i.id&&!f.seen.has(n)&&(f={...A_(f,n),turnCachedTokens:f.turnCachedTokens+e}),o===null&&t.isSidechain!==!0){let t=L_(i.usage?.input_tokens)+e+L_(i.usage?.output_tokens);t>0&&t!==f.contextTokens&&(f={...f,contextTokens:t})}}let p=f.streams[s];for(let e of a){let t=p?Lg(f,p,e):null;if(t){let n=f.index.get(t),r=f.items[n];f=D_(f,n,Rg(r,e,{uuid:c,timestamp:l,model:i.model??null,messageId:i.id??null,errorText:u,aborted:d})),p={...p,unclaimed:p.unclaimed.filter(e=>e!==t)},f={...f,streams:{...f.streams,[s]:p}};continue}let r=zg(f,e,{uuid:c,timestamp:l,parentToolUseId:o,turnId:n.turnId,model:i.model??null,messageId:i.id??null,errorText:u,aborted:d,receivedAt:n.receivedAt});r&&(f=r)}if(a.length===0&&u){let e={kind:`error`,id:`err:${f.nextId}`,uuid:c,parentToolUseId:o,turnId:n.turnId,timestamp:l,code:`assistant_error`,message:u,requestId:null};f=E_(j_(f),e)}return f}function Ig(e,t){let n=P_(t)??``,r=e.streams[n];if(!r||r.unclaimed.length===0)return e;let i=t.message??{},a=new Set,o=e,s=r;for(let e of R_(i.content)){let t=Lg(o,s,e);t&&(a.add(t),s={...s,unclaimed:s.unclaimed.filter(e=>e!==t)},o={...o,streams:{...o.streams,[n]:s}})}return O_(e,a)}function Lg(e,t,n){for(let r of t.unclaimed){let t=e.index.get(r);if(t===void 0)continue;let i=e.items[t];if(!i.uuid&&(n.type===`text`&&i.kind===`assistant`||(n.type===`thinking`||n.type===`redacted_thinking`)&&i.kind===`thinking`||n.type===`tool_use`&&i.kind===`tool`&&i.toolUseId===n.id))return r}return null}function Rg(e,t,n){if(e.kind===`assistant`&&t.type===`text`){let r=t.text??e.text;return{...e,uuid:n.uuid,timestamp:n.timestamp??e.timestamp,text:r.length>=e.text.length?r:e.text,streaming:!1,model:n.model??e.model,messageId:n.messageId??e.messageId,error:n.errorText,aborted:n.aborted}}if(e.kind===`thinking`){let r=t.type===`thinking`?t.thinking??e.text:e.text;return{...e,uuid:n.uuid,timestamp:n.timestamp??e.timestamp,text:r||e.text,streaming:!1}}if(e.kind===`tool`&&t.type===`tool_use`){let r=t,i=r.input&&Object.keys(r.input).length>0?r.input:e.input??B_(e.inputJson);return{...e,uuid:n.uuid,timestamp:n.timestamp??e.timestamp,name:r.name??e.name,input:i,inputJson:e.inputJson||(i?JSON.stringify(i):``),status:e.status===`streaming`?`running`:e.status,messageId:n.messageId??e.messageId}}return e}function zg(e,t,n){let r={uuid:n.uuid,parentToolUseId:n.parentToolUseId,turnId:n.turnId,timestamp:n.timestamp};if(t.type===`text`){let i={kind:`assistant`,id:`i${e.nextId}`,...r,text:t.text??``,streaming:!1,model:n.model,messageId:n.messageId,error:n.errorText,aborted:n.aborted};return E_(j_(e),i)}if(t.type===`thinking`||t.type===`redacted_thinking`){let n={kind:`thinking`,id:`i${e.nextId}`,...r,text:t.type===`thinking`?t.thinking??``:``,streaming:!1,redacted:t.type===`redacted_thinking`};return E_(j_(e),n)}if(t.type===`tool_use`){let i=t,a=e.index.get(i.id);if(a!==void 0){let r=e.items[a];return D_(e,a,Rg(r,t,n))}let o=i.input&&typeof i.input==`object`?i.input:null;return E_(e,{kind:`tool`,id:i.id,...r,toolUseId:i.id,name:i.name,input:o,inputJson:o?JSON.stringify(o):``,status:`running`,result:null,startedAt:n.receivedAt??null,finishedAt:null,durationMs:null,elapsedSec:null,permissionRequestId:null,messageId:n.messageId})}return null}function Bg(e){return e.trim().replace(/\s+/g,` `)}function Vg(e){if(/^<local-command-caveat>/.test(e))return{subtype:`caveat`,text:``};let t=/^<local-command-(stdout|stderr)>([\s\S]*?)<\/local-command-\1>$/.exec(e);if(t){let e=t[2].replace(/\u001b\[[0-9;]*m/g,``).trim();return{subtype:t[1]===`stderr`?`local-command-error`:`local-command`,text:e}}let n=/<command-name>([^<]*)<\/command-name>/.exec(e);if(n&&/^<command-/.test(e)){let t=/<command-args>([^<]*)<\/command-args>/.exec(e)?.[1]?.trim()??``,r=n[1].trim(),i=Wm(r.replace(/^\//,``));return{subtype:`command`,text:`${i===null?r:`/${i}`}${t?` `+t:``}`}}return null}function Hg(e){let t=e.charCodeAt(0);return t===9993||t===8617||t===8635||t===9888}function Ug(e){return Hg(e)?Pu(e):[]}function Wg(e){if(!e.startsWith(`<local-command-stdout>`))return null;let t=Nu(e);return t?.kind===`notice`?t:null}function Gg(e,t,n){let r=t.message??{},i=P_(t),a=N_(t),o=F_(t),s=t.isSynthetic===!0,c=e,l=[],u=[],d=!1;if(typeof r.content==`string`)l.push(r.content);else for(let e of R_(r.content))if(e.type===`text`)l.push(e.text??``);else if(e.type===`tool_result`){d=!0;let r=e;c=Zg(c,r.tool_use_id,{content:r.content??``,isError:r.is_error===!0,structured:t.tool_use_result??null},n.receivedAt)}else(e.type===`image`||e.type===`document`)&&u.push(e);let f=fe(l.join(`
|
|
101
|
+
`)).trim();if(ge(f)&&S_(c,f))return c;let p=Vg(f);if(p?.subtype===`caveat`)return c;if(p){if(p.subtype===`command`&&i===null&&c.hasOptimisticUser){let e=Bg(p.text),t=c.items.find(t=>t.kind===`user`&&t.optimistic&&!t.failed&&Bg(t.text)===e);t&&(c=O_(c,new Set([t.id])))}let e=p.subtype===`local-command`?Wg(f):null,t=p.subtype===`local-command`&&!e?km(f):null,n={kind:`system`,id:`sys:${c.nextId}`,uuid:a,parentToolUseId:i,turnId:c.activeTurnId,timestamp:o,subtype:e?`chat-notice`:t?hg:p.subtype,text:p.text,...e?{chatMarker:e}:{},...t?{newChat:t}:{}},r=E_({...c,nextId:c.nextId+1},n);return p.subtype===`local-command`&&Cg(p.text)?Sg(r,{type:`model_change`}):r}if(f.length===0&&u.length===0||d&&f.length===0||s&&d)return c;let m=i===null?Ug(f):[],h=m[0]??null;if(i===null&&!s&&c.hasOptimisticUser&&h===null){let e=-1,t=!1;for(let n=0;n<c.items.length;n++){let r=c.items[n];if(!(r.kind!==`user`||!r.optimistic||r.failed)&&(t=!0,r.text===f)){e=n;break}}if(t||(c={...c,hasOptimisticUser:!1}),e>=0){let t=c.items[e],r={...t,uuid:a??t.uuid,timestamp:o??t.timestamp,optimistic:!1,turnId:t.turnId??n.turnId};return t.waiting&&e<c.items.length-1?E_(O_(c,new Set([t.id])),{...r,waiting:!1}):D_(c,e,r)}if(f.includes(`
|
|
102
|
+
`)){let e=Yg(c,f,a,o,n.turnId);if(e)return e}}let g=t.isMeta===!0||se(f)||s&&f.length>0&&!ae(f),_=t.isCompactSummary===!0||z(f)||ge(f),v=sc(f),y={kind:`user`,id:a?`u:${a}`:`i${c.nextId}`,uuid:a,parentToolUseId:i,turnId:n.turnId,timestamp:o,text:f,attachments:u,requestId:null,optimistic:!1,failed:!1,waiting:!s&&!g&&!_&&v===null&&h===null&&i===null&&n.turnId!==null&&Kg(c,n.turnId),deliveredAt:null,compactSummary:t.isCompactSummary===!0||z(f),taskNotification:ge(f),engineNote:!z(f)&&!ge(f)&&g,...v?{scheduledTask:v.title}:{},...h?{chatMarker:h}:{},...m.length>1?{chatBatch:m}:{}};return c.index.get(y.id)===void 0?E_(a?c:j_(c),y):c}function Kg(e,t){if(e.status!==`running`)return!1;for(let n=e.items.length-1;n>=0;n--){let r=e.items[n];if(r.kind===`result`)return!1;if((t===null||r.turnId===null||r.turnId===t)&&(r.kind===`assistant`||r.kind===`thinking`||r.kind===`tool`))return!0}return!1}function qg(e,t){let n=new Set(t??[]),r=e=>n.size>0&&(e.requestId!==void 0&&e.requestId!==null&&n.has(e.requestId)||(e.mergedRequestIds?.some(e=>n.has(e))??!1)),i=-1;for(let t=e.items.length-1;t>=0;t--){let n=e.items[t];if(n.kind===`user`&&n.waiting&&!r(n)){i=t;break}}if(i<0)return e;let a=e.items.map(e=>e.kind===`user`&&e.waiting&&!r(e)?{...e,waiting:!1}:e);return{...e,items:a}}function Jg(e,t){return e.length>0&&`\n${t}\n`.includes(`\n${e}\n`)}function Yg(e,t,n,r,i){let a=e.items.filter(e=>e.kind===`user`&&e.optimistic&&!e.failed&&e.parentToolUseId===null&&e.text!==t&&Jg(e.text,t));if(a.length<2)return null;let o=[...a].sort((e,n)=>t.indexOf(e.text)-t.indexOf(n.text));if(o.map(e=>e.text).join(`
|
|
103
|
+
`)!==t)return null;let s=o[0],c=o.map(e=>e.requestId).filter(e=>typeof e==`string`),l={...s,id:n?`u:${n}`:s.id,uuid:n??s.uuid,timestamp:r??s.timestamp,text:t,attachments:o.flatMap(e=>e.attachments),turnId:s.turnId??i,optimistic:!1,waiting:!1,...c.length>0?{mergedRequestIds:c}:{}};return E_(O_(e,new Set(o.map(e=>e.id))),l)}function Xg(e,t,n,r){let i=e=>r!==void 0&&(e.requestId===r||(e.mergedRequestIds?.includes(r)??!1)),a=e.items.some(e=>e.kind===`user`&&!e.failed&&i(e));for(let r=e.items.length-1;r>=0;r--){let o=e.items[r];if(o.kind!==`user`||o.failed||o.chatMarker!==void 0||(a?!i(o):o.text!==t))continue;if(!o.optimistic&&!o.waiting&&o.deliveredAt!==null)return e;let s={...o,optimistic:!1,waiting:!1,deliveredAt:n??o.deliveredAt??new Date().toISOString()};return o.waiting&&r<e.items.length-1?E_(O_(e,new Set([o.id])),s):D_(e,r,s)}return e}function Zg(e,t,n,r){let i=e.index.get(t);if(i===void 0)return E_(e,{kind:`tool`,id:t,uuid:null,parentToolUseId:null,turnId:null,timestamp:null,toolUseId:t,name:`unknown`,input:null,inputJson:``,status:n.isError?`error`:`done`,result:n,startedAt:null,finishedAt:r??null,durationMs:null,elapsedSec:null,permissionRequestId:null,messageId:null});let a=e.items[i];if(a.result&&a.status!==`running`&&a.status!==`streaming`&&a.status!==`pending`)return e;let o=r??null,s=a.startedAt!==null&&o!==null?Math.max(0,o-a.startedAt):a.durationMs;return D_(e,i,{...a,input:a.input??B_(a.inputJson),result:Qg(a.name,n)?{...n,isError:!1}:n,status:Qg(a.name,n)?`skipped`:n.isError?`error`:`done`,finishedAt:o,durationMs:s})}function Qg(e,t){return!t.isError||e!==`AskUserQuestion`?!1:typeof t.content==`string`&&t.content.includes(`the user skipped the question`)}function $g(e,t,n){let r=um(t.usage,t.modelUsage),i=Array.isArray(t.permission_denials)?t.permission_denials:[],a=n.turnId;return n_(e,{kind:`result`,id:a?`result:${a}`:N_(t)?`result:${N_(t)}`:`result:${e.nextId}`,uuid:N_(t),parentToolUseId:null,turnId:a,timestamp:F_(t),subtype:typeof t.subtype==`string`?t.subtype:`success`,isError:t.is_error===!0||typeof t.result==`string`&&/^API Error\b/i.test(t.result.trim()),costUsd:L_(t.total_cost_usd),durationMs:L_(t.duration_ms),durationApiMs:typeof t.duration_api_ms==`number`?t.duration_api_ms:null,numTurns:L_(t.num_turns),inputTokens:r.input,cachedInputTokens:r.cached||e.turnCachedTokens,outputTokens:r.output,text:typeof t.result==`string`?t.result:null,errors:Array.isArray(t.errors)?t.errors.map(String):[],stopReason:typeof t.stop_reason==`string`?t.stop_reason:null,structuredOutput:t.structured_output??null,...e_(t.safeguards)?{safeguards:t.safeguards}:{}},new Set(i.map(e=>e.tool_use_id??``)),n.receivedAt)}function e_(e){if(typeof e!=`object`||!e)return!1;let t=e;return(t.reason===`safeguards`||t.reason===`safety_filters`)&&(t.outcome===`retried`||t.outcome===`blocked`)}function t_(e,t,n,r){e=qg(e,r);let i=`result:${n}`,a=e.index.get(i),o={kind:`result`,id:i,uuid:a===void 0?null:e.items[a].uuid,parentToolUseId:null,turnId:n,timestamp:a===void 0?null:e.items[a].timestamp,subtype:t.subtype,isError:t.isError,costUsd:t.totalCostUsd,durationMs:t.durationMs,durationApiMs:a===void 0?null:e.items[a].durationApiMs,numTurns:t.numTurns,inputTokens:t.inputTokens,cachedInputTokens:t.cachedInputTokens??(a===void 0?void 0:e.items[a].cachedInputTokens)??e.turnCachedTokens,outputTokens:t.outputTokens,text:t.result,errors:t.errors??[],stopReason:t.stopReason,structuredOutput:t.structuredOutput??null,...t.safeguards?{safeguards:t.safeguards}:{}};return n_(e,o,new Set,void 0)}function n_(e,t,n,r){let i=e,a=i.index.get(t.id),o=a!==void 0;i=a===void 0?E_(j_(i),t):D_(i,a,t);let s=i.items.map(e=>{if((e.kind===`assistant`||e.kind===`thinking`)&&e.streaming)return{...e,streaming:!1};if(e.kind===`tool`&&e.result===null&&(e.status===`streaming`||e.status===`running`||e.status===`pending`)){let t=n.has(e.toolUseId)?`denied`:`cancelled`;return{...e,status:t,input:e.input??B_(e.inputJson),finishedAt:r??null}}return e}),c=o?i.totals:{costUsd:i.totals.costUsd+t.costUsd,inputTokens:i.totals.inputTokens+t.inputTokens,cachedInputTokens:i.totals.cachedInputTokens+(t.cachedInputTokens??0),outputTokens:i.totals.outputTokens+t.outputTokens,turns:i.totals.turns+1};return{...i,items:s,totals:c,status:t.isError?`error`:`idle`,activeTurnId:null,statusText:null,streams:{},pendingPermissions:[]}}function r_(e,t){let n=I_(t.tool_use_id),r=typeof t.elapsed_time_seconds==`number`?t.elapsed_time_seconds:null;return!n||r===null?e:k_(e,n,e=>e.result?e:{...e,elapsedSec:r})}function i_(e,t,n){let r=Array.isArray(t.output)?t.output.map(String).join(`
|
|
104
|
+
`):``,i=typeof t.error==`string`?t.error:null,a=i?`Authentication error: ${i}`:t.isAuthenticating?`Authenticating…\n${r}`.trim():r;if(!a)return e;let o={kind:`system`,id:`sys:${e.nextId}`,uuid:N_(t),parentToolUseId:null,turnId:n.turnId,timestamp:F_(t),subtype:`auth_status`,text:a};return E_(j_(e),o)}function a_(e,t,n,r=!1){let i=`perm:${t.requestId}`;if(e.index.get(i)!==void 0)return e;let a=e.index.get(t.toolUseId),o=a===void 0?void 0:e.items[a],s=E_(e,{kind:`permission`,id:i,uuid:null,parentToolUseId:o?.kind===`tool`?o.parentToolUseId:null,turnId:n,timestamp:t.createdAt,request:t,status:r?`allowed`:`pending`,resolvedBy:r?`auto`:null});return s=k_(s,t.toolUseId,e=>({...e,permissionRequestId:t.requestId,status:e.result?e.status:r?`running`:`pending`})),r?{...s,activeTurnId:s.activeTurnId??n}:{...s,pendingPermissions:[...s.pendingPermissions.filter(e=>e.requestId!==t.requestId),t],status:`waiting_permission`,activeTurnId:s.activeTurnId??n}}function o_(e,t,n,r){let i=`perm:${t}`,a=e.index.get(i),o=e,s=null;if(a!==void 0){let e=o.items[a];s=e.request.toolUseId,e.status===`pending`&&(o=D_(o,a,{...e,status:n===`allow`?`allowed`:`denied`,resolvedBy:r}))}let c=o.pendingPermissions.filter(e=>e.requestId!==t);s&&(o=k_(o,s,e=>e.result?e:{...e,status:n===`allow`?`running`:`denied`}));let l=c.length>0?`waiting_permission`:o.activeTurnId||o.status===`waiting_permission`?`running`:o.status;return{...o,pendingPermissions:c,status:l}}function s_(e,t,n){return w_(e,e=>c_(e,t,n))}function c_(e,t,n){let r=e;for(let e of t){let t=e.parentToolUseId;if(e.subpath&&(r=bg(r,e.subpath,e.role,e.content,e.timestamp)),e.subpath&&(t===null||r.index.get(t)===void 0)){let n=h_(r,e.subpath,e.timestamp);r=n.state,t=n.parentToolUseId}let n={type:e.role===`assistant`?`assistant`:e.role===`user`?`user`:`system`,uuid:e.uuid,parent_tool_use_id:t,timestamp:e.timestamp??void 0};if(e.role===`system`){let t=typeof e.content==`string`?e.content:z_(R_(e.content)),n=e.subtype===`model_refusal_fallback`||e.subtype===`model_refusal_no_fallback`?Qc(e.refusal??{subtype:e.subtype,content:t}):null;if(n){if(r.seen.has(`uuid:${e.uuid}`))continue;r=A_(wg(r,n,{uuid:e.uuid,parentToolUseId:e.parentToolUseId,turnId:null,timestamp:e.timestamp,live:!1}),`uuid:${e.uuid}`);continue}if(!t||r.seen.has(`uuid:${e.uuid}`))continue;let i=Vg(t.trim());i?.subtype===`local-command`&&Cg(i.text)&&(r=Sg(r,{type:`model_change`}));let a=Wg(t.trim()),o=a?null:km(t.trim()),s={kind:`system`,id:`sys:${e.uuid}`,uuid:e.uuid,parentToolUseId:e.parentToolUseId,turnId:null,timestamp:e.timestamp,subtype:a?`chat-notice`:o?hg:e.subtype===`rewind_boundary`?`rewind`:`history`,text:a||o?Vg(t.trim())?.text??t:t,...a?{chatMarker:a}:{},...o?{newChat:o}:{}};r.index.get(s.id)===void 0&&(r=A_(E_(r,s),`uuid:${e.uuid}`));continue}let i=e.role===`assistant`?{id:null,role:`assistant`,model:e.model,content:R_(e.content)}:{role:`user`,content:typeof e.content==`string`?e.content:R_(e.content)};r=jg(r,{...n,message:i},{turnId:null,receivedAt:void 0})}return r={...r,hydrated:!0},r=n?g_(r,n):__(r),Og(r)}function l_(e,t){return w_(e,e=>u_(e,t))}function u_(e,t){let n=e;for(let e of t){let t=`seq:${e.seq}`;if(n.seen.has(t))continue;let r=e.entry,i=e.type||String(r.type??``);if(i===`attachment`){let t=me(r);if(t!==null){let i={type:`user`,uuid:e.uuid??(typeof r.uuid==`string`?r.uuid:void 0),parent_tool_use_id:null,timestamp:e.timestamp??void 0,message:{role:`user`,content:t.content}};n=jg(n,i,{turnId:null,receivedAt:void 0}),typeof t.content!=`string`&&(n=Xg(n,t.text,t.timestamp))}}if(i===`queue-operation`){let e=pe(r);e&&(n=Xg(n,e.text,e.deliveredAt))}if(i===`user`||i===`assistant`||i===`system`||i===`result`){let t=r.parent_tool_use_id??null;if(e.subpath){let t=r.message;n=bg(n,e.subpath,i,t?.content,e.timestamp,t?.stop_reason)}if(e.subpath&&(t===null||n.index.get(t)===void 0)){let r=h_(n,e.subpath,e.timestamp);n=r.state,t=r.parentToolUseId}let a={...r,type:i,uuid:e.uuid??(typeof r.uuid==`string`?r.uuid:void 0),parent_tool_use_id:t,timestamp:e.timestamp??void 0};n=jg(n,a,{turnId:null,receivedAt:void 0})}n=A_(n,t),(n.lastSeq===null||e.seq>n.lastSeq)&&(n={...n,lastSeq:e.seq})}return Og(__({...n,hydrated:!0}))}var d_=/^subagents\/(?:workflows\/([^/]+)\/)?agent-(.+?)(?:\.jsonl)?$/;function f_(e){return`subagent:${e}`}function p_(e){return`subagent:workflows/${e}`}function m_(e,t,n,r,i){return{kind:`tool`,id:e,uuid:null,parentToolUseId:r,turnId:null,timestamp:i,toolUseId:e,name:t,input:{description:n},inputJson:``,status:`done`,result:null,startedAt:null,finishedAt:null,durationMs:null,elapsedSec:null,permissionRequestId:null,messageId:null}}function h_(e,t,n=null){if(!t)return{state:e,parentToolUseId:null};let r=e.subpathParents[t];if(r!==void 0&&e.index.get(r)!==void 0)return{state:e,parentToolUseId:r};let i=d_.exec(t);if(!i)return{state:e,parentToolUseId:null};let a=i[1]??null,o=i[2],s=(e,n)=>({state:C_?(e.subpathParents[t]=n,e):{...e,subpathParents:{...e.subpathParents,[t]:n}},parentToolUseId:n}),c=e.index.get(o);if(c!==void 0){let t=e.items[c];if(t?.kind===`tool`)return s(e,t.toolUseId)}if(a){for(let t of e.items)if(t.kind===`tool`&&t.name===`Workflow`&&t.result!==null&&V_(t.result).includes(a))return s(e,t.toolUseId)}let l=f_(t);if(e.index.get(l)!==void 0)return s(e,l);let u=o.slice(0,8),d=e,f=null;a&&(f=p_(a),d.index.get(f)===void 0&&(d=E_(d,m_(f,`Workflow`,`Workflow run ${a} (transcript)`,null,n??null))));let p=m_(l,`Agent`,a?`Agent ${u}`:`Agent ${u} (transcript)`,f,n??null);return s(E_(d,p),l)}function g_(e,t){let n=e.pendingPermissions.length>0?`waiting_permission`:t.status,r=t.engineSince?Date.parse(t.engineSince):NaN,i=e.hydrated&&e.session!==null&&!Eg(e.status)&&Eg(n),a=e.session?.engineSince,o=t.engineSince,s=e.session!==null&&a!==void 0&&o!==void 0&&a!==o,c=Og(__({...e,session:t,sessionId:t.id,status:n,engineSince:Number.isFinite(r)?r:e.engineSince,...i?{lastFrameAt:null}:{},...s&&e.safeguardFallback?.live===!0?{safeguardFallback:$c(e.safeguardFallback,{type:`engine_start`})}:{}}));if(!i)return c;let l=Date.parse(t.updatedAt);return Number.isFinite(l)&&l>(c.lastFrameAt??0)?{...c,lastFrameAt:l}:c}function __(e){if(e.activeTurnId!==null||e.status!==`idle`&&e.status!==`error`)return e;let t=!1,n=e.items.map(e=>(e.kind===`assistant`||e.kind===`thinking`)&&e.streaming?(t=!0,{...e,streaming:!1}):e.kind===`tool`&&e.result===null&&(e.status===`streaming`||e.status===`running`||e.status===`pending`)?(t=!0,{...e,status:`cancelled`,input:e.input??B_(e.inputJson)}):e);return t?{...e,items:n}:e}function v_(e,t){let n=(t.attachments??[]).filter(e=>typeof e==`object`&&!!e&&typeof e.type==`string`),r={kind:`user`,id:`req:${t.requestId}`,uuid:null,parentToolUseId:null,turnId:null,timestamp:t.at??null,text:t.text,attachments:n,requestId:t.requestId,optimistic:!0,failed:!1,waiting:e.status===`running`,deliveredAt:null,compactSummary:!1,taskNotification:!1,engineNote:!1};if(e.index.get(r.id)!==void 0)return e;let i=new Set(e.items.filter(e=>e.kind===`user`&&e.failed&&e.text===t.text).map(e=>e.id)),a=!Eg(e.status),o=t.at===void 0?NaN:Date.parse(t.at);return{...E_(O_(e,i),r),status:`running`,statusText:null,hasOptimisticUser:!0,lastLocalPromptId:r.id,...a?{lastFrameAt:Number.isFinite(o)?o:null}:{}}}function y_(e,t){let n=e.index.get(`req:${t}`),r=e;if(n!==void 0){let t=e.items[n];t?.kind===`user`&&!t.failed&&(r=D_(e,n,{...t,failed:!0}))}return r.activeTurnId!==null||r.status!==`running`&&r.status!==`waiting_permission`?r:{...r,status:`error`,statusText:null}}function b_(e,t){let n=new Map,r=new Map;for(let t of e){let e={item:t,children:[]};n.set(t.id,e),t.kind===`tool`&&r.set(t.toolUseId,e)}let i=[];for(let t of e){let e=n.get(t.id),a=t.parentToolUseId?r.get(t.parentToolUseId):void 0;a&&a!==e?a.children.push(e):i.push(e)}if(!t||t.length===0)return i;let a=new Map,o=e=>{for(let t of e)a.set(t.item.id,t),t.children.length>0&&o(t.children)};o(t);let s=new Map;for(let t=e.length-1;t>=0;t--){let r=n.get(e[t].id);for(let e=0;e<r.children.length;e++){let t=s.get(r.children[e]);t&&(r.children[e]=t)}let i=a.get(r.item.id);s.set(r,i&&x_(i,r)?i:r)}let c=i.map(e=>s.get(e)??e);return c.length===t.length&&c.every((e,n)=>e===t[n])?t:c}function x_(e,t){if(e.item!==t.item||e.children.length!==t.children.length)return!1;for(let n=0;n<t.children.length;n++)if(e.children[n]!==t.children[n])return!1;return!0}function S_(e,t){let n=ye(t);if(!n.taskId)return!1;for(let t=e.items.length-1;t>=0;t--){let r=e.items[t];if(r.kind!==`user`||!r.taskNotification)continue;let i=ye(r.text);if(i.taskId===n.taskId&&(i.toolUseId??null)===(n.toolUseId??null))return!0}return!1}var C_=!1;function w_(e,t){if(C_)return t(e);C_=!0;try{return t({...e,items:e.items.slice(),index:new Map(e.index),seen:new Set(e.seen),subpathParents:{...e.subpathParents}})}finally{C_=!1}}var T_=new Set([`Task`,`Agent`,`Workflow`]);function E_(e,t){let n=e.hasSubagentItems||t.kind===`tool`&&T_.has(t.name);if(C_)return e.items.push(t),e.index.set(t.id,e.items.length-1),e.hasSubagentItems=n,e;let r=[...e.items,t];return{...e,items:r,index:new Map(e.index).set(t.id,r.length-1),...n===e.hasSubagentItems?{}:{hasSubagentItems:n}}}function D_(e,t,n){if(C_)return e.items[t]=n,e;let r=e.items.slice();return r[t]=n,{...e,items:r}}function O_(e,t){if(t.size===0)return e;let n=e.items.filter(e=>!t.has(e.id)),r=new Map;n.forEach((e,t)=>{r.set(e.id,t)});let i={};for(let[n,r]of Object.entries(e.streams)){let e={};for(let[n,i]of Object.entries(r.blocks))t.has(i)||(e[Number(n)]=i);i[n]={...r,blocks:e,unclaimed:r.unclaimed.filter(e=>!t.has(e))}}return{...e,items:n,index:r,streams:i}}function k_(e,t,n){let r=e.index.get(t);if(r===void 0)return e;let i=e.items[r];if(!i||i.kind!==`tool`)return e;let a=n(i);return a===i?e:D_(e,r,a)}function A_(e,t){return e.seen.has(t)?e:C_?(e.seen.add(t),e):{...e,seen:new Set(e.seen).add(t)}}function j_(e){return{...e,nextId:e.nextId+1}}function M_(e,t,n){let r=N_(n);return r?`${t}:${r}`:`${t}:${e.nextId}`}function N_(e){return typeof e.uuid==`string`&&e.uuid?e.uuid:null}function P_(e){return typeof e.parent_tool_use_id==`string`&&e.parent_tool_use_id?e.parent_tool_use_id:null}function F_(e){return typeof e.timestamp==`string`?e.timestamp:null}function I_(e){return typeof e==`string`?e:``}function L_(e){return typeof e==`number`&&Number.isFinite(e)?e:0}function R_(e){return typeof e==`string`?e?[{type:`text`,text:e}]:[]:Array.isArray(e)?e.filter(e=>typeof e==`object`&&!!e&&typeof e.type==`string`):[]}function z_(e){return e.map(e=>e.type===`text`?e.text??``:``).filter(Boolean).join(`
|
|
105
|
+
`)}function B_(e){let t=e.trim();if(!t)return null;try{let e=JSON.parse(t);return typeof e==`object`&&e&&!Array.isArray(e)?e:null}catch{return null}}function V_(e){return e?typeof e.content==`string`?e.content:e.content.map(e=>e.type===`text`?e.text??``:e.type===`image`?`[image]`:`[${e.type}]`).join(`
|
|
106
|
+
`):``}function H_(e){if(e==null||!Number.isFinite(e))return``;if(e<1e3)return`${Math.floor(e)}ms`;if(e<1e4)return`${(Math.floor(e/100)/10).toFixed(1)}s`;let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/3600),r=Math.floor(t%3600/60);return n>0?`${n}h ${r}m`:`${r}m ${t%60}s`}function U_(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e4?`${Math.round(e/1e3)}k`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function W_(e,t=Date.now()){if(!e)return``;let n=Date.parse(e);if(!Number.isFinite(n))return``;let r=Math.max(0,t-n),i=Math.floor(r/1e3);if(i<45)return`just now`;let a=Math.floor(i/60);if(a<60)return`${a}m ago`;let o=Math.floor(a/60);if(o<24)return`${o}h ago`;let s=Math.floor(o/24);return s<30?`${s}d ago`:new Date(n).toLocaleDateString()}function G_(e,t=Date.now()){if(e==null||!Number.isFinite(e)||e<=0)return``;let n=Math.floor(Math.max(0,t-e)/1e3);if(n<45)return`just now`;let r=(e,t)=>`${e} ${t}${e===1?``:`s`} ago`,i=Math.floor(n/60);if(i<60)return r(Math.max(1,i),`minute`);let a=Math.floor(i/60);if(a<24)return r(a,`hour`);let o=Math.floor(a/24);return o<30?r(o,`day`):new Date(e).toLocaleDateString()}function K_(e){if(!e)return;let t=new Date(e);if(!Number.isNaN(t.getTime()))return t.toLocaleString()}function q_(e){if(!e)return``;let t=Date.parse(e);return Number.isFinite(t)?new Date(t).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}):``}function J_(e){let t=e.replace(/[\\/]+$/,``),n=t.split(/[\\/]/);return n[n.length-1]||t}function Y_(e,t){return e.length<=t?e:`${e.slice(0,Math.max(0,t-1))}…`}function X_(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function G(...e){return e.filter(Boolean).join(` `)}function Z_(e,t=6){let n=e.trim().split(/\s+/).filter(Boolean);return n.length<=t?n.join(` `):`${n.slice(0,t).join(` `)}…`}function Q_(e){return e.title?.trim()||e.firstPrompt?.trim().replace(/\s+/g,` `)||`Session ${e.id.slice(0,8)}`}function $_(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}function ev(e,t=Date.now()){return{id:e,title:null,providerId:null,variantId:null,projectId:null,model:null,permissionMode:null,projectDir:null,createdAt:t}}function tv(e,t){if(!t)return e;let n={...e};return!e.model&&!e.providerId&&t.model&&(n.model=t.model,n.providerId=t.providerId??null,n.variantId=null),!e.effort&&t.effort&&(n.effort=t.effort),!e.projectDir&&t.cwd&&(n.projectDir=t.cwd),n}var nv=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function rv(e){return nv.test(e)}function iv(){let e=new Uint8Array(16),t=globalThis.crypto;if(t&&typeof t.getRandomValues==`function`)return t.getRandomValues(e),e;for(let t=0;t<e.length;t++)e[t]=Math.floor(Math.random()*256);return e}function av(){let e=globalThis.crypto;if(e&&typeof e.randomUUID==`function`){let t=e.randomUUID();if(rv(t))return t}let t=iv();t[6]=(t[6]??0)&15|64,t[8]=(t[8]??0)&63|128;let n=Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``);return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}function ov(e){return e.title?.trim()||`New chat`}function sv(e){let t=e.trim().replace(/\s+/g,` `).slice(0,500);return t.length>0?t:null}function cv(e,t){return typeof t==`string`&&e[t]!==void 0}var lv=`oonacode.uiPrefs`;function uv(e){if(!e)return null;try{let t=e.getItem(lv);return t?Ml(JSON.parse(t)):null}catch{return null}}function dv(e,t){if(e)try{e.setItem(lv,JSON.stringify(t))}catch{}}function fv(e,t){let n=t.notifications?{...e.notifications,...t.notifications}:e.notifications;return Ml({...e,...t,notifications:n})}function pv(e){let t=e;return!t||typeof t!=`object`?!1:t.status===400||t.status===422||t.code===`bad_request`}function mv(e){let{row:t,panel:n,viewport:r}=e,i=e.gap??6,a=e.margin??8,o=Math.max(0,Math.min(e.width??352,r.width-2*a)),s=Math.max(0,Math.min(e.maxHeight??448,r.height-2*a)),c=Math.min(e.height>0?e.height:200,s),l=Math.max(a,Math.min(t.top,r.height-a-c)),u=n.right+i;if(u+o<=r.width-a)return{left:u,top:l,width:o,maxHeight:s,side:`right`};let d=n.left-i-o;if(d>=a)return{left:d,top:l,width:o,maxHeight:s,side:`left`};let f=Math.max(a,Math.min(t.left,r.width-a-o)),p=r.height-a-(t.bottom+i),m=t.top-i-a;if(p>=c||p>=m)return{left:f,top:t.bottom+i,width:o,maxHeight:Math.max(0,Math.min(s,p)),side:`below`};let h=Math.max(0,Math.min(s,m));return{left:f,top:t.top-i-Math.min(c,h),width:o,maxHeight:h,side:`above`}}var hv={language:`en`,localVoice:{},speed:1,words:kd.words},gv=`oonacode.voiceSummary.v1`;function _v(e){let t=e&&typeof e==`object`?e:{},n=hv,r={};if(t.localVoice&&typeof t.localVoice==`object`)for(let[e,n]of Object.entries(t.localVoice))typeof n==`string`&&n.length<300&&Dd(e)&&(r[e]=n);return{language:typeof t.language==`string`&&Dd(t.language)?Dd(t.language).code:n.language,localVoice:r,speed:Md(t.speed),words:jd(t.words)}}function vv(e=bv()){try{let t=e?.getItem(gv);return _v(t?JSON.parse(t):null)}catch{return{...hv}}}function yv(e,t=bv()){try{t?.setItem(gv,JSON.stringify(e))}catch{}}function bv(){try{return typeof window<`u`?window.localStorage:null}catch{return null}}function xv(e){return e.kind===`system`?null:e.key.slice(e.key.indexOf(`:`)+1)}var Sv={zh:[`cmn`]};function Cv(e){return e.toLowerCase().replace(/_/g,`-`)}function wv(e,t){let n=Cv(e);return[t.code,...Sv[t.code]??[]].some(e=>n===e||n.startsWith(`${e}-`))}function Tv(e,t){let n=Cv(e);return n===Cv(t.bcp47)?0:n===t.code||(Sv[t.code]??[]).includes(n)?1:2}function Ev(e){let t=new Set(e.map(e=>e.name));return e.filter(e=>{let n=e.name.indexOf(`+`);if(n<=0)return!0;let r=e.name.lastIndexOf(` `),i=r>n?e.name.slice(r+1):``,a=i?`${e.name.slice(0,n)} ${i}`:e.name.slice(0,n);return!t.has(a)})}function Dv(e,t,n){let r=t.filter(t=>t.language===e.code||(t.locale?wv(t.locale,e):!1)),i=r.filter(e=>e.engine!==`espeak`).map(e=>({key:`sherpa:${e.id}`,label:e.label,kind:`sherpa`})),a=r.filter(e=>e.engine===`espeak`).slice(0,1).map(e=>({key:`espeak:${e.id}`,label:e.label||`eSpeak (robotic)`,kind:`espeak`})),o=Ev(n.filter(t=>wv(t.lang,e)&&t.localService!==!1)).map((t,n)=>({v:t,i:n,fit:Tv(t.lang,e)})).sort((e,t)=>e.fit-t.fit||e.i-t.i).map(({v:e})=>({key:`system:${e.voiceURI}`,label:`${e.name} (system)`,kind:`system`}));return[...i,...o,...a]}function Ov(e,t){return e.find(e=>e.key===t)??e[0]??null}function kv(e,t){if(e===`win32`||e===`linux`||e===`darwin`)return e;let n=t??``;return/Windows|Win32|Win64/i.test(n)?`win32`:/Android|CrOS/i.test(n)?null:/Linux|X11/i.test(n)?`linux`:/Mac OS X|Macintosh/i.test(n)?`darwin`:null}function Av(e,t,n=null,r=!1){let i=t?``:` The OonaCode desktop app comes with its own Armenian voices, and eSpeak for every other language.`,a=`No local voice for ${e.name} on this PC.`;return t&&n===`win32`&&r?`${a} The app’s own eSpeak voice, which speaks every language here, could not start — usually because Microsoft’s Visual C++ Redistributable (x64) is not installed: https://aka.ms/vs/17/release/vc_redist.x64.exe. Install it, then open this window again.`:n===`linux`?`${a} Install speech-dispatcher and espeak-ng from your distribution (Debian, Ubuntu, Mint: sudo apt install speech-dispatcher espeak-ng · Fedora: sudo dnf install speech-dispatcher espeak-ng · Arch: sudo pacman -S speech-dispatcher espeak-ng), then restart OonaCode.${i}`:n===`darwin`?`${a} Add a ${e.name} voice in System Settings → Accessibility → Spoken Content → System voice → Manage Voices, then open this window again.${i}`:n===`win32`?`${a} Add a ${e.name} voice in Settings → Time & language → Speech → Add voices, if Windows offers one for ${e.name}, then open this window again.${i}`:`${a} Add a ${e.name} voice in the system's speech settings (Windows: Settings → Time & language → Speech), then open this window again.${i}`}function jv(e){return e===`linux`?`whole`:`sentences`}var Mv=75;function Nv(e,t){return Math.round(3e3+e.length*120/Md(t))}async function Pv(e,t,n,r){let{signal:i,onItem:a}=r,o=e.getVoices().find(e=>e.voiceURI===r.voiceURI)??null;e.cancel();let s=r.mode===`whole`?[n.join(` `)]:[...n];for(let c=0;c<s.length;c+=1){if(i.aborted)return;let l=s[c],u=await new Promise((s,u)=>{let d=[],f=!1,p=()=>!f&&(f=!0,d.forEach(e=>clearTimeout(e)),i.removeEventListener(`abort`,m),!0),m=()=>{p()&&(e.cancel(),s(`stopped`))},h=t(l);o&&(h.voice=o),h.lang=o?.lang??r.bcp47,h.rate=r.rate,h.onstart=()=>{if(f)return;if(r.mode===`sentences`){a(c);return}a(0);let e=0;for(let t=1;t<n.length;t+=1)e+=(n[t-1].length+1)*Mv/Md(r.rate),d.push(setTimeout(()=>!f&&a(t),e))},h.onend=()=>{p()&&s(`ended`)},h.onerror=e=>{p()&&(i.aborted||e.error===`interrupted`||e.error===`canceled`?s(`stopped`):u(Error(`The system voice failed: ${e.error??`unknown error`}`)))},i.addEventListener(`abort`,m),d.push(setTimeout(()=>{p()&&s(`lost`)},Nv(l,r.rate))),e.speak(h)});if(u===`stopped`)return;u===`lost`&&e.cancel()}}function Fv(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(void 0,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}function Iv(e,t){let n=new DataView(new ArrayBuffer(44)),r=(e,t)=>{for(let r=0;r<t.length;r+=1)n.setUint8(e+r,t.charCodeAt(r))};return r(0,`RIFF`),n.setUint32(4,36+e,!0),r(8,`WAVE`),r(12,`fmt `),n.setUint32(16,16,!0),n.setUint16(20,1,!0),n.setUint16(22,1,!0),n.setUint32(24,t,!0),n.setUint32(28,t*2,!0),n.setUint16(32,2,!0),n.setUint16(34,16,!0),r(36,`data`),n.setUint32(40,e,!0),n}function Lv(e,t){let n=new Uint8Array(44+e.length);return n.set(new Uint8Array(Iv(e.length,t).buffer),0),n.set(e,44),n.buffer}function Rv(e,t){let n=new DataView(new ArrayBuffer(e.length*2));for(let t=0;t<e.length;t+=1){let r=Math.max(-1,Math.min(1,e[t]));n.setInt16(t*2,Math.round(r*32767),!0)}return Lv(new Uint8Array(n.buffer),t)}function zv(){let e=null,t=()=>{if(!e)return;let t=e;e=null,URL.revokeObjectURL(t.url),t.done()};return{play(n,r){return t(),new Promise(i=>{let a=URL.createObjectURL(new Blob([n],{type:`audio/wav`})),o=new Audio(a);o.preservesPitch=!0,o.playbackRate=r,e={audio:o,url:a,done:i},o.onended=t,o.onerror=t,o.play().catch(t)})},stop(){e&&e.audio.pause(),t()}}}var Bv=zv;async function Vv(e,t,n,r){if(e.length===0)return;let i=t(e[0],0);for(let a=0;a<e.length;a+=1){if(r.signal.aborted)return;let o=await i;if(r.signal.aborted)return;i=a+1<e.length?t(e[a+1],a+1):null,i?.catch(()=>void 0),r.onItem?.(a),await n.play(o,r.playbackRate??1)}}var Hv={range:`all`,from:``,to:``},Uv=`oonacode.aboutBriefing.v1`,Wv=/^\d{4}-\d{2}-\d{2}$/;function Gv(e){let t=e&&typeof e==`object`?e:{};return{range:vd(t.range)?t.range:Hv.range,from:typeof t.from==`string`&&Wv.test(t.from)?t.from:``,to:typeof t.to==`string`&&Wv.test(t.to)?t.to:``}}function Kv(){try{let e=window.localStorage.getItem(Uv);return Gv(e?JSON.parse(e):null)}catch{return{...Hv}}}function qv(e){try{window.localStorage.setItem(Uv,JSON.stringify(e))}catch{}}function Jv(e,t){if(e.length===0)return`none`;let n=0;for(let r of e)t.has(r)&&(n+=1);return n===0?`none`:n===e.length?`all`:`some`}function Yv(e,t){let n=new Set(t);if(Jv(e,t)===`all`)for(let t of e)n.delete(t);else for(let t of e)n.add(t);return n}function Xv(e,t){let n=new Set(t),r=!1;for(let t of e)n.has(t)||(r=!0);return r?new Set([...e].filter(e=>n.has(e))):e}function Zv(e,t){let n=[];if(e>0&&n.push(`${e} of the picked chats ${e===1?`has`:`have`} no about yet`),t>0){let r=e>0?`${t}`:`${t} of the picked chats`;n.push(`${r} ${t===1?`has an about`:`have abouts`} older than the chat’s last change`)}let r=[e>0?`a chat with no about is announced by its name and “no summary yet”`:null,t>0?`an older about is read as it is`:null].filter(Boolean).join(`, and `);return`${n.join(`; `)}. Writing them is one housekeeper call per chat, paid by the chat’s own route — credits for an OonaCode pool chat. Until then ${r}.`}var Qv={status:`idle`,index:-1,total:0,sessionId:null,title:null,part:0,error:null,playlist:[]};function $v(e){return e.status===`preparing`||e.status===`speaking`||e.status===`paused`}var ey={afterNameMs:gd.afterNameMs,betweenChatsMs:gd.betweenChatsMs};function ty(e,t){return new Promise(n=>{if(t.aborted||e<=0){n();return}let r=()=>{clearTimeout(i),t.removeEventListener(`abort`,r),n()},i=setTimeout(r,e);t.addEventListener(`abort`,r,{once:!0})})}function ny(e,t){return t.aborted?Promise.reject(Error(`stopped`)):new Promise((n,r)=>{let i=()=>r(Error(`stopped`));t.addEventListener(`abort`,i,{once:!0}),e.then(e=>{t.removeEventListener(`abort`,i),n(e)},e=>{t.removeEventListener(`abort`,i),r(e)})})}var ry=class{#e;#t=[];#n=Qv;#r=null;#i=new Map;#a=new AbortController;constructor(e){this.#e=e}get state(){return this.#n}start(e,t=0){if(this.#t=[...e],this.#i.clear(),this.#t.length===0){this.#o(),this.#s({...Qv});return}this.#l(Math.max(0,Math.min(t,this.#t.length-1)),0)}pause(){(this.#n.status===`preparing`||this.#n.status===`speaking`)&&(this.#o(),this.#s({status:`paused`}))}resume(){let e=this.#n;e.index<0||this.#t.length===0||(e.status===`paused`?this.#l(e.index,e.part):e.status===`error`&&this.#l(e.index,0))}stop(){this.#o(),this.#n.status!==`idle`&&this.#n.status!==`stopped`&&this.#s({status:`stopped`,index:-1,part:0,error:null})}reset(){this.#o(),this.#t=[],this.#i.clear(),this.#n!==Qv&&(this.#n=Qv,this.#e.onState(Qv))}next(){if(this.#t.length===0||this.#n.index<0)return;let e=this.#n.index+1;if(e>=this.#t.length){this.#o(),this.#s({status:`done`,part:0});return}this.#l(e,0)}previous(){this.#t.length===0||this.#n.index<0||this.#l(Math.max(0,this.#n.index-1),0)}jumpTo(e){let t=this.#t.findIndex(t=>t.sessionId===e);t>=0&&this.#l(t,0)}resetWords(){this.#i.clear()}dispose(){this.reset(),this.#a.abort()}#o(){let e=this.#r;if(this.#r=null,e){e.abort();try{this.#e.silence()}catch{}}}#s(e){let t={...this.#n,...e},n=t.index>=0?this.#t[t.index]:void 0;t.total=this.#t.length,t.sessionId=n?.sessionId??null,t.title=n?.title??null,t.playlist=t.playlist.length===this.#t.length&&t.playlist.every((e,t)=>e===this.#t[t].sessionId)?t.playlist:this.#t.map(e=>e.sessionId),this.#n=t,this.#e.onState(t)}#c(e){let t=this.#t[e],n=this.#i.get(t.sessionId);if(n)return n;let r=this.#e.words(t,this.#a.signal);return this.#i.set(t.sessionId,r),r.catch(()=>{this.#i.get(t.sessionId)===r&&this.#i.delete(t.sessionId)}),r}#l(e,t){this.#o();let n=new AbortController;this.#r=n,this.#u(e,t,n.signal)}async#u(e,t,n){let r=this.#e.sleep??ty,i=this.#e.afterNameMs??ey.afterNameMs,a=this.#e.betweenChatsMs??ey.betweenChatsMs,o=e;try{for(;o<this.#t.length;o+=1){let s=o===e?t:0;this.#s({status:`preparing`,index:o,part:s,error:null});let c=await ny(this.#c(o),n);if(n.aborted)return;o+1<this.#t.length&&this.#c(o+1).catch(()=>void 0);let l=+!!c.name;if(c.name&&s===0&&(this.#s({status:`speaking`,part:0}),await this.#e.speak([c.name],{signal:n,onItem:()=>void 0}),n.aborted||(c.body.length>0&&await r(i,n),n.aborted)))return;let u=Math.max(0,s-l),d=c.body.slice(u);if(d.length>0&&(this.#s({status:`speaking`,part:l+u}),await this.#e.speak(d,{signal:n,onItem:e=>{n.aborted||this.#s({status:`speaking`,part:l+u+e})}}),n.aborted)||o+1<this.#t.length&&(await r(a,n),n.aborted))return}this.#r?.signal===n&&(this.#r=null),this.#s({status:`done`,index:this.#t.length-1,part:0})}catch(e){if(n.aborted)return;this.#r?.signal===n&&(this.#r=null);try{this.#e.silence()}catch{}let t=this.#t[o]?.title??`a chat`,r=e instanceof Error?e.message:String(e);this.#s({status:`error`,index:Math.min(o,this.#t.length-1),part:0,error:`${t}: ${r}`})}}};async function iy(e,t){let{voice:n,language:r,speed:i,tts:a,signal:o,onItem:s}=t,c=n?xv(n):null;if(c&&a){await Vv(e,async e=>{let n=await a.speak({voiceId:c,text:t.prepare(e,r.code),speed:i});return Rv(n.samples,n.sampleRate)},t.player,{signal:o,onItem:s});return}if(n?.kind===`system`){if(!t.synth)throw Error(`This window has no system speech.`);await Pv(t.synth,t.makeUtterance,e,{voiceURI:n.key.slice(7),bcp47:r.bcp47,rate:i,mode:jv(t.platform),signal:o,onItem:s});return}throw Error(Av(r,!!a,t.platform,t.espeakMissing))}var ay={ids:[],activeId:null};function oy(e=[],t=null){let n=[];for(let t of e)t&&!n.includes(t)&&n.push(t);let r=n.slice(-20);return{ids:r,activeId:t&&r.includes(t)?t:r[r.length-1]??null}}function sy(e,t){return!e.ids.includes(t)||e.activeId===t?e:{ids:e.ids,activeId:t}}function cy(e,t){let n=e.ids.indexOf(t);if(n===-1)return e;let r=e.ids.filter(e=>e!==t);return e.activeId===t?{ids:r,activeId:r[n]??r[n-1]??null}:{ids:r,activeId:e.activeId}}function ly(e,t,n){if(t===n||t<0||t>=e.ids.length)return e;let r=Math.max(0,Math.min(e.ids.length-1,n));if(r===t)return e;let i=[...e.ids],[a]=i.splice(t,1);return a===void 0?e:(i.splice(r,0,a),{ids:i,activeId:e.activeId})}function uy(e,t){let n=t instanceof Set?t:new Set(t),r=e.ids.filter(e=>n.has(e));return r.length===e.ids.length?e:{ids:r,activeId:e.activeId&&r.includes(e.activeId)?e.activeId:r[r.length-1]??null}}function dy(e,t){if(e.ids.length===0)return e;let n=e.activeId?e.ids.indexOf(e.activeId):-1,r=n===-1?0:n,i=e.ids.length,a=((r+t)%i+i)%i,o=e.ids[a];return o?sy(e,o):e}function fy(e,t={},n={}){let r=[],i=[],a={},o={};for(let s of e.ids){let e=n[s];if(e){i.push(s),e.title&&(a[s]=e.title);continue}r.push(s);let c=t[s];c&&(o[s]=c)}return{openTabs:r,draftTabs:i,draftTitles:a,activeTab:e.activeId,remoteTabs:o}}function py(e){let t=e?.remoteTabs;if(!t)return{};let n={};for(let[e,r]of Object.entries(t))typeof r==`string`&&r.length>0&&(n[e]=r);return n}function my(e){let t=e?.draftTabs??[],n=e?.draftTitles??{},r=[];for(let e of t){if(typeof e!=`string`||e.length===0)continue;let t=n[e];r.push({id:e,title:typeof t==`string`&&t.length>0?t:null})}return r}function hy(e){return oy([...e.openTabs??[],...e.draftTabs??[]],e.activeTab??null)}function gy(e,t){if(e.length!==t.length)return!0;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!0;return!1}function _y(e,t){for(let n of new Set([...Object.keys(e),...Object.keys(t)]))if(e[n]!==t[n])return!0;return!1}function vy(e,t,n,r={}){let i=fy(e,n??{},r);return!!(gy(t.openTabs??[],i.openTabs)||gy(t.draftTabs??[],i.draftTabs)||_y(t.draftTitles??{},i.draftTitles)||(t.activeTab??null)!==e.activeId||n&&_y(t.remoteTabs??{},i.remoteTabs))}var yy=.25,by=`g1`;function xy(e=ay){return{root:{type:`group`,id:by},groups:{[by]:e},focused:by}}function Sy(e){let t=[],n=e=>{if(e.type===`group`)t.push(e.id);else for(let t of e.children)n(t)};return n(e.root),t}function Cy(e){let t=[];for(let n of Sy(e))t.push(...e.groups[n]?.ids??[]);return t}function wy(e,t){for(let n of Sy(e))if(e.groups[n]?.ids.includes(t))return n;return null}function Ty(e){return e.groups[e.focused]??ay}function Ey(e){return{ids:Cy(e),activeId:Ty(e).activeId}}function Dy(e,t){if(e.activeId!==t.activeId||e.ids.length!==t.ids.length)return!1;for(let n=0;n<e.ids.length;n++)if(e.ids[n]!==t.ids[n])return!1;return!0}function Oy(e){let t=[];for(let n of Sy(e)){let r=e.groups[n]?.activeId;r&&t.push(r)}return t}function ky(e,t){let n=Sy(e);return n.length<2?null:n[(n.indexOf(t)+1)%n.length]??null}function Ay(e,t){let n=e.root;for(let e of t){if(n.type!==`split`)return null;let t=n.children[e];if(!t)return null;n=t}return n}function jy(e,t=e.length){let n=Array.from({length:t},(t,n)=>{let r=e[n];return typeof r==`number`&&Number.isFinite(r)&&r>0?r:0}),r=n.reduce((e,t)=>e+t,0);if(t===0)return[];if(r<=0)return n.map(()=>1/t);let i=r/n.filter(e=>e>0).length,a=n.map(e=>e>0?e:i),o=a.reduce((e,t)=>e+t,0);return a.map(e=>e/o)}function My(e){if(e.type===`group`)return e;let t=[],n=[],r=jy(e.sizes,e.children.length);return e.children.forEach((i,a)=>{let o=My(i);if(!o)return;let s=r[a]??0;o.type===`split`&&o.direction===e.direction?o.children.forEach((e,r)=>{t.push(e),n.push(s*(o.sizes[r]??0))}):(t.push(o),n.push(s))}),t.length===0?null:t.length===1?t[0]:{type:`split`,direction:e.direction,children:t,sizes:jy(n)}}function Ny(e,t){if(e.type===`group`)return e.id===t?null:e;let n=[],r=[];return e.children.forEach((i,a)=>{let o=Ny(i,t);o&&(n.push(o),r.push(e.sizes[a]??0))}),n.length===0?null:My({type:`split`,direction:e.direction,children:n,sizes:r})}function Py(e){let t=0;for(let n of Object.keys(e.groups)){let e=/^g(\d+)$/.exec(n);e&&(t=Math.max(t,Number(e[1])))}return`g${t+1}`}function Fy(e,t){let n=Sy(e);if(n.length<=1||!n.includes(t))return e;let r=n.indexOf(t),i=n.filter(e=>e!==t),a=Ny(e.root,t)??{type:`group`,id:i[0]},{[t]:o,...s}=e.groups;return{root:a,groups:s,focused:e.focused===t?n[r-1]??n[r+1]??i[0]:e.focused}}function Iy(e,t,n){return e.groups[t]===n?e:{...e,groups:{...e.groups,[t]:n}}}function Ly(e,t){let n=e.groups[t];return n&&n.ids.length===0?Fy(e,t):e}function Ry(e,t,n,r){let i=r===`left`||r===`right`?`row`:`column`,a=r===`left`||r===`top`;if(e.type===`group`)return e.id===t?{type:`split`,direction:i,children:a?[n,e]:[e,n],sizes:[.5,.5]}:e;let o=e.children.findIndex(e=>e.type===`group`&&e.id===t);if(o>=0&&e.direction===i){let t=e.sizes[o]??1/e.children.length,r=[...e.children],i=[...e.sizes],s=a?o:o+1;return i[o]=t/2,r.splice(s,0,n),i.splice(s,0,t/2),{...e,children:r,sizes:i}}return{...e,children:e.children.map(e=>Ry(e,t,n,r))}}function zy(e,t,n){let r=e;for(let e=0;e<40&&Cy(r).length>20;e++){let e=new Set(Sy(r).map(e=>r.groups[e]?.activeId??null).filter(Boolean)),i=r=>r.find(r=>r!==t&&r!==n&&!e.has(r)),a=i(r.groups[r.focused]?.ids??[]);if(!a){for(let e of Sy(r))if(a=i(r.groups[e]?.ids??[]),a)break}if(!a)break;r=Wy(r,a)}return r}function By(e,t){return e.focused===t||!e.groups[t]?e:{...e,focused:t}}function Vy(e,t){let n=Sy(e)[t];return n?By(e,n):e}function Hy(e,t){let n=wy(e,t);if(!n)return e;let r=e.groups[n];return r.activeId===t&&e.focused===n?e:{...Iy(e,n,sy(r,t)),focused:n}}function Uy(e,t,n=e.focused){if(!t)return e;if(wy(e,t))return Hy(e,t);let r=e.groups[n]?n:e.focused,i=e.groups[r]??ay;return zy({...Iy(e,r,{ids:[...i.ids,t],activeId:t}),focused:r},t,i.activeId)}function Wy(e,t){let n=wy(e,t);return n?Ly(Iy(e,n,cy(e.groups[n],t)),n):e}function Gy(e,t,n,r){let i=e.groups[t];return i?Iy(e,t,ly(i,n,r)):e}function Ky(e,t){let n=e.groups[e.focused];return n?Iy(e,e.focused,dy(n,t)):e}function qy(e,t,n,r){let i=e.groups[n];if(!i)return e;let a=wy(e,t);if(a===n){let a=i.ids.indexOf(t);return Hy(By(r===void 0?e:Gy(e,n,a,r>a?r-1:r),n),t)}let o=[...i.ids],s=r===void 0?o.length:Math.max(0,Math.min(o.length,r));o.splice(s,0,t);let c={...e,focused:n};return c=Iy(c,n,{ids:o,activeId:t}),a&&(c=Ly(Iy(c,a,cy(c.groups[a],t)),a)),a?c:zy(c,t,i.activeId)}function Jy(e,t,n,r){if(!e.groups[n])return e;let i=wy(e,t);if(i===n&&e.groups[n].ids.length===1||Sy(e).length>=8)return e;let a=e;i&&(a=Ly(Iy(a,i,cy(a.groups[i],t)),i));let o=Py(a),s={root:My(Ry(a.root,n,{type:`group`,id:o},r))??a.root,groups:{...a.groups,[o]:{ids:[t],activeId:t}},focused:o};return i?s:zy(s,t,null)}function Yy(e,t,n){return e.groups[n.groupId]?n.zone===`center`?qy(e,t,n.groupId,n.index):Jy(e,t,n.groupId,n.zone):e}function Xy(e,t,n){return n.zone===`center`&&n.index===void 0?wy(e,t)!==n.groupId:Yy(e,t,n)!==e}function Zy(e,t,n){let r=Ay(e,t);if(!r||r.type!==`split`)return e;let i=jy(n,r.children.length);return i.every((e,t)=>Math.abs(e-(r.sizes[t]??0))<1e-6)?e:{...e,root:$y(e.root,t,{...r,sizes:i})}}function Qy(e,t){let n=Ay(e,t);return!n||n.type!==`split`?e:Zy(e,t,n.children.map(()=>1))}function $y(e,t,n){if(t.length===0)return n;if(e.type!==`split`)return e;let[r,...i]=t;return{...e,children:e.children.map((e,t)=>t===r?$y(e,i,n):e)}}function eb(e,t,n=null){let r=new Set(t),i=new Set,a=e;for(let t of Sy(e)){let e=a.groups[t],n=e.ids.filter(e=>!r.has(e)||i.has(e)?!1:(i.add(e),!0));if(n.length===e.ids.length)continue;let o=e.activeId&&n.includes(e.activeId)?e.activeId:n.at(-1)??null;a=Iy(a,t,{ids:n,activeId:o})}for(let e of Sy(a))a=Ly(a,e);let o=t.filter(e=>!i.has(e));if(o.length>0){let e=a.groups[a.focused]??ay,t=[...e.ids,...o.filter((e,t)=>o.indexOf(e)===t)];a=Iy(a,a.focused,{ids:t,activeId:e.activeId??t.at(-1)??null})}return n&&r.has(n)&&(a=Hy(a,n)),a}function tb(e){if(e.type===`group`)return{width:380,height:240};let t=e.children.map(tb);return e.direction===`row`?{width:t.reduce((e,t)=>e+t.width,0),height:Math.max(0,...t.map(e=>e.height))}:{width:Math.max(0,...t.map(e=>e.width)),height:t.reduce((e,t)=>e+t.height,0)}}function nb(e,t,n){if(e.root.type===`group`)return!1;let r=tb(e.root);return t<r.width||n<r.height}function rb(e,t,n,r=yy){if(e.width<=0||e.height<=0)return`center`;let i=(t-e.left)/e.width,a=(n-e.top)/e.height,o=[[`left`,i],[`right`,1-i],[`top`,a],[`bottom`,1-a]],s=o[0];for(let e of o)e[1]<s[1]&&(s=e);return s[1]<r?s[0]:`center`}function ib(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(t<r.left+r.width/2)return n}return e.length}function ab(e){switch(e){case`left`:return{left:0,top:0,width:.5,height:1};case`right`:return{left:.5,top:0,width:.5,height:1};case`top`:return{left:0,top:0,width:1,height:.5};case`bottom`:return{left:0,top:.5,width:1,height:.5};default:return{left:0,top:0,width:1,height:1}}}function ob(e){if(e.root.type===`group`)return null;let t=n=>{if(n.type===`group`){let t=e.groups[n.id]??ay;return{group:{tabs:[...t.ids],active:t.activeId}}}return{split:n.direction,sizes:n.sizes.map(e=>Math.round(e*1e4)/1e4),children:n.children.map(t)}};return{root:t(e.root),focused:Math.max(0,Sy(e).indexOf(e.focused))}}function sb(e,t){if(!e||!t)return!e&&!t;if(e.focused!==t.focused)return!1;let n=(e,t)=>{if(`group`in e||`group`in t){if(!(`group`in e)||!(`group`in t))return!1;let n=e.group,r=t.group;return n.active===r.active&&n.tabs.length===r.tabs.length&&n.tabs.every((e,t)=>e===r.tabs[t])}return e.split===t.split&&e.children.length===t.children.length&&e.children.every((e,r)=>n(e,t.children[r]))&&e.sizes.every((e,n)=>Math.abs(e-(t.sizes[n]??NaN))<.001)};return n(e.root,t.root)}function cb(e,t,n=null){let r=xy();if(e&&typeof e==`object`&&e.root){let t={},n=0,i=(e,r)=>{if(r>8||!e||typeof e!=`object`)return null;if(`group`in e&&e.group&&Array.isArray(e.group.tabs)){if(n>=8)return null;n+=1;let r=`g${n}`,i=e.group.tabs.filter(e=>typeof e==`string`),a=typeof e.group.active==`string`&&i.includes(e.group.active)?e.group.active:i.at(-1)??null;return t[r]={ids:i,activeId:a},{type:`group`,id:r}}if(`split`in e&&(e.split===`row`||e.split===`column`)){let t=Array.isArray(e.children)?e.children:[],n=[],a=[];return t.forEach((t,o)=>{let s=i(t,r+1);s&&(n.push(s),a.push(Array.isArray(e.sizes)?e.sizes[o]??0:0))}),n.length===0?null:My({type:`split`,direction:e.split,children:n,sizes:a})}return null},a=i(e.root,0);if(a&&Object.keys(t).length>0){let n=[],i=e=>{e.type===`group`?n.push(e.id):e.children.forEach(i)};i(a),r={root:a,groups:t,focused:n[typeof e.focused==`number`&&Number.isInteger(e.focused)?e.focused:0]??n[0]}}}return eb(r,t,n)}var lb={seq:0,sessionIds:null};function ub(e,t){return e.sessionIds===null||e.sessionIds.includes(t)}var db=`oonacode.nextPromptWindow.v1`,fb=`oonacode.projectManagerFilter.v1`,pb={range:`24h`,from:``,to:``};function mb(){try{let e=window.localStorage.getItem(db);return e===null?Vf.windowHours:Uf(Number(e))}catch{return Vf.windowHours}}function hb(e){try{window.localStorage.setItem(db,String(Uf(e)))}catch{}}function gb(){try{let e=window.localStorage.getItem(fb);return e?Gv(JSON.parse(e)):{...pb}}catch{return{...pb}}}function _b(e){try{window.localStorage.setItem(fb,JSON.stringify(e))}catch{}}function vb(e){let t=e.running?`Reviewing ${e.done} of ${e.total}`:e.stopped?`Stopped at ${e.done} of ${e.total}`:`Reviewed ${e.done} of ${e.total}`,n=[`${e.ok} ready`,`${e.failed} failed`];return e.skipped>0&&n.push(`${e.skipped} unchanged`),`${t} — ${n.join(`, `)}`}function yb(e){return e.isError?Wf.finishedUnseenError:Wf.finishedUnseen}function bb(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`:``}function xb(e,t,n){let r=[];for(let i of Oy(e))t[i]?.active||(n===null||e.groups[n]?.activeId!==i)&&r.push(i);return r}function Sb(e,t){return!e?.finishedUnseen||t===`running`||t===`waiting_permission`?null:e.finishedUnseen}function Cb(){return typeof document>`u`||document.visibilityState!==`visible`?!1:typeof document.hasFocus==`function`&&document.hasFocus()}function wb(e){return!e||e.text.length===0&&e.attachments.length===0&&(e.replies?.length??0)===0}function Tb(e,t){if(!e||e.text!==t.text||e.attachments.length!==t.attachments.length)return!1;let n=e.replies??[],r=t.replies??[];return n.length!==r.length||!n.every((e,t)=>e===r[t])?!1:e.attachments.every((e,n)=>e===t.attachments[n])}function Eb(e,t,n){if(wb(n)){if(e[t]===void 0)return e;let{[t]:n,...r}=e;return r}return Tb(e[t],n)?e:{...e,[t]:n}}function Db(e,t){let n=Object.keys(e);if(n.length===0)return e;let r=new Set(t);if(n.every(e=>r.has(e)))return e;let i={};for(let t of n)r.has(t)&&(i[t]=e[t]);return i}var Ob=new Map;function kb(e,t){return Ob.set(e,t),()=>{Ob.get(e)===t&&Ob.delete(e)}}function Ab(e){return Ob.get(e)?.()??null}var jb=1e5,Mb=50;function Nb(e,t,n=null){let r=e.drafts[t],i=e.remoteTabs[t],a={id:t,kind:i?`remote`:r?`draft`:`session`};i&&(a.hostId=i.hostId,a.hostName=i.hostName),r&&(a.draft={title:r.title,providerId:r.providerId,model:r.model,variantId:r.variantId,permissionMode:r.permissionMode,...r.posture?{posture:r.posture}:{},projectDir:r.projectDir,projectId:r.projectId});let o=(n??e.unsent[t])?.text??``;o.length>0&&(a.unsentText=o.slice(0,jb));let s=e.files[t];if(s&&s.open.length>0){let e=s.open.slice(0,Mb);a.files={open:e,active:s.active&&e.includes(s.active)?s.active:null}}return a}function Pb(e){let{unsentText:t,files:n,...r}=e;return r}var Fb=[`default`,`acceptEdits`,`plan`,`auto`,`dontAsk`,`bypassPermissions`];function Ib(e,t=Date.now()){let n=e.draft??{},r=e=>typeof e==`string`&&e.length>0?e:null,i=r(n.permissionMode);return{...ev(e.id,t),title:r(n.title),providerId:r(n.providerId),model:r(n.model),variantId:r(n.variantId),permissionMode:i&&Fb.includes(i)?i:null,...N(n.posture)?{posture:n.posture}:{},projectDir:r(n.projectDir),projectId:r(n.projectId)}}var Lb=`application/x-oonacode-tab`,Rb=null;function zb(e,t){if(Rb={...t},e){e.effectAllowed=`move`;try{e.setData(Lb,t.tabId)}catch{}}}function Bb(){return Rb}function Vb(){let e=Rb;return Rb=null,e}function Hb(e){if(Rb)return!0;let t=e?.types;if(!t)return!1;for(let e=0;e<t.length;e++)if(t[e]===`application/x-oonacode-tab`)return!0;return!1}function Ub(e,t){return e.clientX<0||e.clientY<0||e.clientX>t.innerWidth||e.clientY>t.innerHeight}function Wb(e,t,n){let r=e.getAttribute(`data-editor-group`);if(!r)return null;let i=e.querySelector(`[data-tab-strip]`),a=i?.getBoundingClientRect();if(i&&a&&a.height>0&&n>=a.top&&n<=a.bottom)return{groupId:r,zone:`center`,index:ib(Array.from(i.querySelectorAll(`[data-tab-group="${Kb(r)}"]`)).filter(e=>e.hasAttribute(`data-tab-id`)).map(e=>e.getBoundingClientRect()),t)};let o=e.querySelector(`[data-group-body]`)??e;return e.getAttribute(`data-compact`)===`true`?{groupId:r,zone:`center`}:{groupId:r,zone:rb(o.getBoundingClientRect(),t,n)}}function Gb(e,t,n){let r=(typeof e.elementFromPoint==`function`?e.elementFromPoint(t,n):null)?.closest(`[data-editor-group]`)??null;return r?Wb(r,t,n):null}function Kb(e){return typeof CSS<`u`&&typeof CSS.escape==`function`?CSS.escape(e):e.replace(/["\\]/g,`\\$&`)}function qb(e,t){return e?`From \`${e}\`:`:t===`assistant`?`From your earlier reply:`:t===`user`?`From my earlier message:`:t&&typeof t==`object`&&t.tool?`From the output of ${t.tool}:`:null}var Jb=/^From (?:`[^`]+`|your earlier reply|my earlier message|the output of .+):$/,Yb=`Replying to an earlier part of this conversation — the quoted lines are from the chat history above, not new input:`;function Xb(e,t=null,n=null){let r=e.replace(/\r\n?/g,`
|
|
107
|
+
`).replace(/\n{3,}/g,`
|
|
108
|
+
|
|
109
|
+
`).replace(/^(?:[ \t]*\n)+/,``).replace(/\s+$/,``);r.length>1500&&(r=`${r.slice(0,1499).trimEnd()}…`);let i=r.split(`
|
|
110
|
+
`).map(e=>e===``?`>`:`> ${e}`),a=qb(t,n);return a&&i.unshift(`> ${a}`,`>`),i.join(`
|
|
111
|
+
`)}function Zb(e){let t=e.split(`
|
|
112
|
+
`),n=+(t[0]===`Replying to an earlier part of this conversation — the quoted lines are from the chat history above, not new input:`),r=[];for(;;){let e=n;for(;n<t.length&&/^>( |$)/.test(t[n]);)n++;if(n===e)break;let i=t.slice(e,n).map(e=>e.replace(/^> ?/,``)).join(`
|
|
113
|
+
`).trim();i!==``&&r.push(i);let a=n;for(;a<t.length&&t[a].trim()===``;)a++;if(a<t.length&&/^>( |$)/.test(t[a]))n=a;else break}return r.length===0?null:{quotes:r,reply:t.slice(n).join(`
|
|
114
|
+
`).trim()}}function Qb(e){let t=e.split(`
|
|
115
|
+
`);return(Jb.test(t[0].trim())?t.slice(1):t).join(`
|
|
116
|
+
`).trim()}function $b(e){let t=e.trim();if(t.length<=300)return t;let n=t.slice(0,299),r=n.lastIndexOf(` `);return`${(r>150?n.slice(0,r):n).trimEnd()}…`}function ex(e){if(!e)return null;for(let t of[`file_path`,`notebook_path`,`path`]){let n=e[t];if(typeof n==`string`&&n.trim()!==``)return n}return null}function tx(e,t=8){let n=e.replace(/\s+/g,` `).trim().split(` `).filter(e=>e!==``),r=n.slice(0,t).join(` `);return n.length>t?`${r}…`:r}function nx(e,t){let n=t.trim();if(e.length===0)return n;let r=e.join(`
|
|
117
|
+
|
|
118
|
+
`);return n?`${Yb}\n${r}\n\n${n}`:`${Yb}\n${r}`}function rx(e){return e.replace(/\s+/g,` `).trim().toLowerCase()}function ix(e,t){let n=rx(Qb(t).replace(/…$/,``)).slice(0,80);if(n.length<3)return null;for(let t=e.length-1;t>=0;t--){let r=e[t];if(rx(r.text).includes(n))return r.id}return null}function ax(e=500){let t=ox(e);return{size:t,rendered:t}}function ox(e){return Number.isFinite(e)?Math.max(1,Math.round(e)):500}function sx(e,t){let n=ox(t);return e.size===n&&e.rendered===n?e:{size:n,rendered:n}}function cx(e,t,n=100){let r=Math.max(0,Math.floor(t)),i=Math.max(1,Math.floor(n));if(e.rendered>=r)return e;let a=Math.min(r,e.rendered+i);return a===e.rendered?e:{size:e.size,rendered:a}}function lx(e,t,n,r=!1){let i=Math.min(Math.max(0,Math.floor(n)),Math.max(0,Math.floor(t)));return i<=e.rendered?r&&!e.held?{...e,held:!0}:e:{size:e.size,rendered:i,...r||e.held?{held:!0}:{}}}function ux(e,t=!1){return e.held&&!t||e.rendered===e.size&&!e.held?e:{size:e.size,rendered:e.size}}function dx(e,t){let n=e.length,r=Math.min(n,Math.max(t.size,t.rendered)),i=Math.max(0,n-r);return{start:i,items:i===0?e.slice():e.slice(i),hiddenAbove:i,hasMore:i>0,total:n}}function fx(e,t=48){return e.scrollHeight-e.scrollTop-e.clientHeight<=t}function px(e,t=24){return e.scrollTop<=t}var mx=2e3;function hx(e,t=mx,n=Date.now){let r=-1/0,i=null,a=()=>{i=null,r=n(),e()};return{request(){if(i!==null)return;let e=r+t-n();e<=0?a():i=setTimeout(a,e)},dispose(){i!==null&&(clearTimeout(i),i=null)}}}var gx=3e3;function _x(e){let{balance:t}=e.credits;if(typeof e.credits.plan!=`number`&&typeof e.credits.topup!=`number`)return{balance:t,plan:null,topup:null,hasSplit:!1};let n=e.credits.plan??Math.max(0,t-(e.credits.topup??0));return{balance:t,plan:n,topup:e.credits.topup??Math.max(0,t-n),hasSplit:!0}}function vx(e){return e.credits.monthlyGrant>0?e.credits.monthlyGrant:gx}function yx(e){if(!e)return`ok`;let{balance:t}=e.credits;return t<=0?`empty`:t<=vx(e)*.1?`low`:`ok`}function bx(e){if(!e)return null;let t=yx(e);if(t===`ok`)return null;let n=xx(e.credits.balance);return t===`empty`?{level:t,text:`No credits left — a priced model will be refused. Free models still run, on every plan.`}:{level:t,text:`Running low: ${n} credits left. Free models still run, on every plan.`}}function xx(e){return e.toLocaleString(`en-US`,{maximumFractionDigits:0})}function Sx(e,t){return!t||t.providerId!==`oonacode`?!1:(t.poolCredits??0)!==(e?.providerId===`oonacode`?e.poolCredits??0:0)}var Cx=new Set([`Alt`,`AltGraph`,`Control`,`Shift`,`Meta`,`OS`,`CapsLock`]),wx=new Set([`Tab`,`Escape`,`ContextMenu`,`Help`]),Tx=1500,Ex=24,Dx=-1/0,Ox=()=>Date.now();function kx(){Dx=Ox()}function Ax(e){if(!e)return`none`;if(typeof document<`u`&&e===document.body)return`BODY`;let t=e.tagName??`?`,n=e.getAttribute?.(`data-testid`)??e.getAttribute?.(`aria-label`)??e.getAttribute?.(`role`),r=typeof e.className==`string`?e.className.split(/\s+/).filter(Boolean).slice(0,3):[];return`${t}${n?`[${n.slice(0,60)}]`:``}${r.length>0?`.${r.join(`.`)}`:``}`}function jx(e){return Cx.has(e.key)?`modifier`:!(typeof e.getModifierState==`function`&&e.getModifierState(`AltGraph`))&&(e.ctrlKey||e.metaKey||e.altKey)||wx.has(e.key)||/^F\d{1,2}$/.test(e.key)?`shortcut`:e.key.length===1?`text`:e.key.slice(0,20)}function Mx(e,t){let n=t.now??(()=>Date.now());Ox=n;let r=-1/0,i=`none`,a=-1/0,o=-1/0,s=!1,c=[],l=e=>{let t=jx(e);if(t!==`modifier`){if(t===`shortcut`){a=n();return}r=n(),i=t}},u=()=>{o=n(),s=!0},d=()=>{o=n(),s=!1},f=e=>e-r<=2e3&&!s&&e-o>1e3&&e-a>1e3&&(e-Dx>1e3||e<Dx),p=()=>{let e=n();return c.filter(t=>e-t.t<=Tx).map(e=>e.what)},m=a=>{let o=n();if(!f(o))return;let s=a.relatedTarget instanceof Element?a.relatedTarget:null,c=p();setTimeout(()=>{if(typeof document<`u`&&!document.hasFocus()||typeof document<`u`&&document.activeElement===e)return;let n=typeof document<`u`?document.activeElement:null;n&&n!==e&&n.closest?.(`[data-testid="composer"]`)||t.report({activeAfter:Ax(n),relatedTarget:Ax(s),boxConnected:e.isConnected,boxDisabled:e.disabled,recentlyAdded:c,sinceKeyMs:Math.round(o-r),lastKey:i,unmounted:!e.isConnected})},0)},h=null,g=t.root??(typeof document<`u`?document.body:null);return g&&typeof MutationObserver<`u`&&(h=new MutationObserver(e=>{let t=n();for(let n of e)for(let e of Array.from(n.addedNodes))e.nodeType===1&&(c.push({t,what:Ax(e)}),c.length>Ex&&c.shift())}),h.observe(g,{childList:!0,subtree:!0})),e.addEventListener(`keydown`,l),e.addEventListener(`blur`,m),typeof document<`u`&&(document.addEventListener(`pointerdown`,u,!0),document.addEventListener(`pointerup`,d,!0),document.addEventListener(`pointercancel`,d,!0)),()=>{let a=n();typeof document<`u`&&document.activeElement===e&&f(a)&&t.report({activeAfter:`unmounting`,relatedTarget:`none`,boxConnected:e.isConnected,boxDisabled:e.disabled,recentlyAdded:p(),sinceKeyMs:Math.round(a-r),lastKey:i,unmounted:!0}),h?.disconnect(),e.removeEventListener(`keydown`,l),e.removeEventListener(`blur`,m),typeof document<`u`&&(document.removeEventListener(`pointerdown`,u,!0),document.removeEventListener(`pointerup`,d,!0),document.removeEventListener(`pointercancel`,d,!0))}}var Nx=[`desktop`,`host`,`cli`,`engine`],Px={desktop:`Desktop app`,host:`Host service`,cli:`oona CLI`,engine:`Agent engine`},Fx={available:!1,components:[],version:``,channel:``,publishedAt:``,notes:``},Ix=/(\d+(?:\.\d+)*(?:[-+][0-9A-Za-z.-]+)?)\s*$/;function Lx(e){return typeof e.version==`string`&&e.version.trim()?e.version.trim():Ix.exec(e.name??``)?.[1]??null}function Rx(e){let[t=``,n=``]=(e.trim().replace(/^v/i,``).split(`+`)[0]??``).split(`-`,2);return{nums:t.split(`.`).map(e=>{let t=Number.parseInt(e,10);return Number.isFinite(t)?t:0}).filter((e,t)=>t<4),pre:n?n.split(`.`):[]}}function zx(e,t){let n=Rx(e),r=Rx(t),i=Math.max(n.nums.length,r.nums.length);for(let e=0;e<i;e++){let t=n.nums[e]??0,i=r.nums[e]??0;if(t!==i)return t<i?-1:1}if(n.pre.length===0&&r.pre.length===0)return 0;if(n.pre.length===0)return 1;if(r.pre.length===0)return-1;let a=Math.max(n.pre.length,r.pre.length);for(let e=0;e<a;e++){let t=n.pre[e],i=r.pre[e];if(t===i)continue;if(t===void 0)return-1;if(i===void 0)return 1;let a=Number.parseInt(t,10),o=Number.parseInt(i,10);return Number.isFinite(a)&&Number.isFinite(o)&&/^\d+$/.test(t)&&/^\d+$/.test(i)?a<o?-1:1:t<i?-1:1}return 0}function Bx(e,t){return!e||!t?!1:zx(e,t)===1}function Vx(e){if(typeof e!=`object`||!e)return null;let t=e,n=typeof t.version==`string`?t.version:``;if(!n)return null;let r=Array.isArray(t.assets)?t.assets.filter(e=>typeof e==`object`&&!!e):[];return{version:n,channel:typeof t.channel==`string`?t.channel:`stable`,publishedAt:typeof t.publishedAt==`string`?t.publishedAt:``,notes:typeof t.notes==`string`?t.notes:``,assets:r}}function Hx(e,t,n){if(!e||!e.version)return Fx;let r=(e.assets??[]).filter(e=>typeof e?.kind==`string`&&e.kind),i=new Map;for(let e of r)n&&e.platform&&e.platform!==n||i.has(e.kind)||i.set(e.kind,e);let a=e=>!!n&&!i.has(e)&&r.some(t=>t.kind===e),o=[];for(let n of Nx){let r=t[n];if(typeof r!=`string`||!r.trim())continue;let s=i.get(n);if(!s&&a(n))continue;let c=(s?Lx(s):null)??(n===`desktop`?e.version:null);!c||!Bx(c,r)||o.push({component:n,label:Px[n],current:r.trim(),latest:c,url:s?.url?s.url:null,notes:typeof s?.notes==`string`?s.notes:``})}return{available:o.length>0,components:o,version:e.version,channel:e.channel,publishedAt:e.publishedAt,notes:e.notes}}function Ux(e,t=null,n=null){return!e||!e.trim()?null:`${e.trim().replace(/\/+$/,``)}${Ic(t,n)}`}function Wx(e){return e.bridge?.appChannel??e.info?.cliChannel??`stable`}function Gx(e,t){return Lc(e,t)}var Kx={phase:`idle`,version:``,percent:0,transferred:0,total:0,bytesPerSecond:0,error:``,notice:``};function qx(e){return e===`ready`||e===`installing`}function Jx(e,t){let n=t.version||e.version;switch(t.phase){case`checking`:return qx(e.phase)?e:{...Kx,phase:`checking`,version:n};case`available`:return qx(e.phase)?e:{...Kx,phase:`available`,version:n};case`not-available`:return qx(e.phase)?e:{...Kx,version:n};case`downloading`:return{...Kx,phase:`downloading`,version:n,percent:Math.max(0,Math.min(100,t.percent)),transferred:t.transferred,total:t.total,bytesPerSecond:t.bytesPerSecond};case`downloaded`:return{...Kx,phase:`ready`,version:n,percent:100};case`installing`:return{...Kx,phase:`installing`,version:n,percent:100,notice:t.message||(e.phase===`installing`?e.notice:``)};case`error`:return{...Kx,phase:`error`,version:n,error:t.message}}}function Yx(e){switch(e.install.phase){case`ready`:case`installing`:return`ready`;case`downloading`:return`downloading`;case`available`:return`available`;default:return e.manifestAvailable?`available`:`idle`}}var Xx=[`B`,`KB`,`MB`,`GB`];function Zx(e){if(!Number.isFinite(e)||e<=0)return`0 B`;let t=e,n=0;for(;t>=1024&&n<Xx.length-1;)t/=1024,n+=1;return`${t>=10||n===0?Math.round(t):t.toFixed(1)} ${Xx[n]}`}function Qx(e){return!Number.isFinite(e)||e<=0?``:`${Zx(e)}/s`}var $x=[`host`,`cli`,`engine`];function eS(e){let t=e?.platform===`darwin`;return{desktop:typeof e?.installUpdate==`function`&&!t,terminal:typeof e?.updateTerminalInstall==`function`,...t?{desktopViaTerminal:!0}:{}}}function tS(e,t,n={}){let r=e.length>0,i=t.desktopViaTerminal===!0,a=!i&&(n.shellEngaged===!0||e.includes(`desktop`)||!r&&!n.checked),o=r&&e.some(e=>$x.includes(e)||i&&e===`desktop`),s=a&&t.desktop,c=o&&t.terminal,l=e.filter(e=>e===`desktop`&&!i?a&&!s:o&&!c),u=!a&&!o;return{terminal:c,desktop:s,manual:l,upToDate:u,label:u?`Up to date`:c&&s?`Update everything`:s?`Update and relaunch`:c?`Update now`:`How to update`}}function nS(e,t){return e===`desktop`?t.desktopViaTerminal?t.terminal?`Replaced by the oona installer — OonaCode closes and reopens`:"Run `oona update` in a terminal":t.desktop?`Downloads here, then OonaCode restarts`:`Run the installer from the website`:t.terminal?`Installed by the oona installer — updated from here`:"Run `oona update` in a terminal"}var rS={running:!1,message:``,failed:!1};function iS(e,t){switch(e){case`agentFinished`:return t.notifications.agentFinished;case`permissionRequired`:return t.notifications.permissionRequired;case`errorOccurred`:return t.notifications.errorOccurred;default:return!1}}function aS(e,t){let n=t.sessionTitle||`OonaCode`,r=e=>t.sessionId?{...e,sessionId:t.sessionId}:e;switch(e){case`permissionRequired`:return t.toolName===`AskUserQuestion`?r({title:`Question for you`,body:`${n} — the agent is asking you a question.`,focusOnClick:!0}):r({title:`Permission required`,body:`${n} — the agent wants to run ${t.toolName??`a tool`}.`,focusOnClick:!0});case`errorOccurred`:return r({title:`OonaCode error`,body:`${n} — ${t.detail??`the agent reported an error`}.`,focusOnClick:!0});default:return r({title:t.isError?`Agent needs attention`:`Agent finished`,body:t.isError?`${n} — the turn ended with an error.`:`${n} — turn complete.`,focusOnClick:!0,silent:!t.isError})}}async function oS(e,t={}){if(t.documentHasFocus?.()===!0)return!1;if(t.bridgeNotify)try{return await t.bridgeNotify(e)}catch{return!1}let n=t.browser;if(!n)return!1;try{if(n.permission===`granted`||n.permission==="default"&&n.requestPermission&&await n.requestPermission()===`granted`)return n.create(e.title,{body:e.body,silent:e.silent===!0}),!0}catch{}return!1}function sS(){if(typeof window>`u`)return{};let e=window.oonacode,t=globalThis.Notification;return{bridgeNotify:e?.notify?t=>e.notify(t):void 0,browser:t?{permission:t.permission,create:(e,n)=>{new t(e,n)},requestPermission:()=>t.requestPermission()}:void 0,documentHasFocus:()=>typeof document<`u`&&typeof document.hasFocus==`function`&&document.hasFocus()}}var cS=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),K=o(((e,t)=>{t.exports=cS()}))(),lS=2e3,uS=2500;function dS(){return{connection:{status:`idle`,detail:null,hostName:null,hostId:null,appVersion:null},info:null,bundleAppVersion:null,hostUpdatedTo:null,sessions:[],sessionLinks:{},sessionsTotal:0,sessionsLoading:!1,sessionsError:null,sessionListLoaded:!1,search:``,projects:[],vaultProjects:[],scheduledTasksVersion:0,conversationsChange:Zf,conversationsSelectId:null,chatConversations:{},chatAboutsChange:rd,nextPromptsChange:lb,assignProjectSessionId:null,voiceSummarySessionId:null,projectsStartNew:!1,importOffered:!1,projectsSelectId:null,page:null,pinnedRows:{},currentSessionId:null,tabs:oy(),layout:xy(),pageGroup:null,windowRole:`main`,elsewhere:{},drafts:{},pendingRouting:{},transcripts:{},transcriptLoading:{},files:{},unsent:{},composerQuote:null,jumpTo:null,chatSearchRequest:null,windows:{},modelBoundaries:{},providers:[],activeProviderId:null,agentTools:null,settings:null,prefs:{..._l},prefsBackend:`unknown`,account:null,plan:null,accountLoaded:!1,accountLink:null,emailVerification:null,recoveryKey:null,credentials:[],claudeSubscription:null,claudeLogin:null,oauthLogin:null,engineDownload:null,importProgress:null,toolInstalls:{},mcpServers:null,mcpTesting:{},mcpTestResults:{},doctor:null,remote:{hosts:[],supported:!0,loading:!1,loaded:!1,sessions:{},unreachable:{},sessionOwners:{},tabs:{},reason:null,stale:!1},update:Fx,updateChecking:!1,updateInstall:Kx,terminalUpdate:rS,updateDismissed:null,toasts:[],ui:{sidebarOpen:!0,dialog:`none`,connectProviderId:null,claudeLoginMode:null,oauthLoginProviderId:null,settingsSection:null,sidebarPinnedOverride:null,mediaPanelOpen:!1}}}function fS(e,t){if(t===e.layout&&e.tabs.activeId===e.currentSessionId)return e;let n=Ey(t),r=Dy(n,e.tabs)?e.tabs:n,i=e.drafts;for(let t of e.tabs.ids)r.ids.includes(t)||e.drafts[t]===void 0||(i===e.drafts&&(i={...i}),delete i[t]);return{...e,layout:t,tabs:r,drafts:i,unsent:Db(e.unsent,r.ids),currentSessionId:r.activeId}}function pS(e,t){return e.windows[t]??ax(e.prefs.transcriptWindowSize)}function mS(e,t){let n=Object.entries(e);if(n.length===0)return e;let r=!1,i={};for(let[e,a]of n){let n=sx(a,t);n!==a&&(r=!0),i[e]=n}return r?i:e}function hS(e,t){return{...e,prefs:t,windows:mS(e.windows,t.transcriptWindowSize)}}function gS(e,t){switch(t.type){case`connection`:return{...e,connection:{...e.connection,status:t.status,detail:t.detail??null}};case`welcome`:return{...e,connection:{...e.connection,hostName:t.hostName,hostId:t.hostId,appVersion:t.appVersion}};case`info`:{let n=t.info.account??null,r=e.bundleAppVersion??t.info.appVersion;return{...e,info:t.info,bundleAppVersion:r,hostUpdatedTo:t.info.appVersion===r?null:t.info.appVersion,activeProviderId:t.info.activeProviderId,account:n??e.account,accountLoaded:e.accountLoaded||n!==null,accountLink:n?.link??e.accountLink,connection:{...e.connection,hostName:t.info.hostName,hostId:t.info.hostId,appVersion:t.info.appVersion}}}case`sessions`:return{...e,sessions:t.sessions,sessionsTotal:t.total,sessionsLoading:!1,sessionsError:null,sessionListLoaded:!0,...t.links?{sessionLinks:Object.fromEntries(t.links.map(e=>[e.sessionId,e]))}:{}};case`session_link`:{let n={...e.sessionLinks};return t.link?n[t.sessionId]=t.link:delete n[t.sessionId],{...e,sessionLinks:n}}case`sessions_loading`:return{...e,sessionsLoading:t.loading};case`sessions_error`:return{...e,sessionsError:t.error,sessionsLoading:!1};case`search`:return{...e,search:t.value};case`session_upsert`:{let n=e.sessions.findIndex(e=>e.id===t.session.id),r=n>=0?e.sessions.map(e=>e.id===t.session.id?t.session:e):[t.session,...e.sessions],i=e.transcripts[t.session.id],a=n>=0?e.sessions[n]:void 0,o=a!==void 0&&a.cwd!==t.session.cwd,s=i&&o?xg(i,{type:`local_system`,subtype:`workspace`,text:`Workspace changed to ${t.session.cwd} — the engine restarts there on your next message; the conversation continues.`}):i,c=s?{...e.transcripts,[t.session.id]:xg(s,{type:`session`,session:t.session})}:e.transcripts;return{...e,sessions:r,sessionsTotal:n>=0?e.sessionsTotal:e.sessionsTotal+1,transcripts:c,...e.pinnedRows[t.session.id]?{pinnedRows:{...e.pinnedRows,[t.session.id]:t.session}}:{}}}case`file_open`:{let n=e.files[t.sessionId]??{open:[],active:null},r=n.open.includes(t.path)?n.open:[...n.open,t.path];return{...e,page:null,files:{...e.files,[t.sessionId]:{open:r,active:t.path}}}}case`file_close`:{let n=e.files[t.sessionId];if(!n||!n.open.includes(t.path))return e;let r=n.open.indexOf(t.path),i=n.open.filter(e=>e!==t.path),a=n.active===t.path?i[Math.min(r,i.length-1)]??null:n.active;return{...e,files:{...e.files,[t.sessionId]:{open:i,active:a}}}}case`file_show_chat`:{let n=e.files[t.sessionId];return!n||n.active===null?e:{...e,files:{...e.files,[t.sessionId]:{...n,active:null}}}}case`file_activate`:{let n=e.files[t.sessionId];return!n||!n.open.includes(t.path)?e:n.active===t.path?e.page?{...e,page:null}:e:{...e,page:null,files:{...e.files,[t.sessionId]:{...n,active:t.path}}}}case`session_removed`:{let{[t.id]:n,...r}=e.transcripts,{[t.id]:i,...a}=e.files,{[t.id]:o,...s}=e.windows,{[t.id]:c,...l}=e.pendingRouting,{[t.id]:u,...d}=e.remote.tabs,{[t.id]:f,...p}=e.remote.sessionOwners,{[t.id]:m,...h}=e.prefs.remoteTabs,{[t.id]:g,..._}=e.chatConversations,{[t.id]:v,...y}=e.pinnedRows,b={...e,chatConversations:_,pinnedRows:y,sessions:e.sessions.filter(e=>e.id!==t.id),sessionsTotal:Math.max(0,e.sessionsTotal-1),transcripts:r,windows:s,files:a,pendingRouting:l,remote:{...e.remote,tabs:d,sessionOwners:p,sessions:Object.fromEntries(Object.entries(e.remote.sessions).map(([e,n])=>[e,Array.isArray(n)?n.filter(e=>e.id!==t.id):n]))},prefs:{...e.prefs,remoteTabs:h}};return fS(b,Wy(b.layout,t.id))}case`projects`:return{...e,projects:t.projects};case`scheduled_tasks_changed`:return{...e,scheduledTasksVersion:e.scheduledTasksVersion+1};case`conversations_changed`:return{...e,conversationsChange:{seq:e.conversationsChange.seq+1,conversationIds:t.conversationIds,sessionIds:t.sessionIds}};case`conversations_select`:return{...e,conversationsSelectId:t.conversationId};case`chat_abouts_changed`:return{...e,chatAboutsChange:{seq:e.chatAboutsChange.seq+1,sessionIds:t.sessionIds,generateAll:t.generateAll}};case`next_prompts_changed`:return{...e,nextPromptsChange:{seq:e.nextPromptsChange.seq+1,sessionIds:t.sessionIds,...t.review===void 0?{}:{review:t.review}}};case`chat_conversations`:{let n=e.chatConversations[t.sessionId];return n&&JSON.stringify(n)===JSON.stringify(t.conversations)?e:{...e,chatConversations:{...e.chatConversations,[t.sessionId]:t.conversations}}}case`session_status`:{let n=e.sessions.findIndex(e=>e.id===t.sessionId),r=e.pinnedRows[t.sessionId],i=r&&r.status!==t.status?{...e,pinnedRows:{...e.pinnedRows,[t.sessionId]:{...r,status:t.status}}}:e;if(n<0||e.sessions[n].status===t.status)return i;let a=e.sessions.slice();return a[n]={...a[n],status:t.status},{...i,sessions:a}}case`vault_projects`:return{...e,vaultProjects:t.projects};case`voice_summary_dialog`:return{...e,voiceSummarySessionId:t.sessionId,ui:{...e.ui,dialog:t.sessionId?`voice-summary`:`none`}};case`assign_project_dialog`:return{...e,assignProjectSessionId:t.sessionId,ui:{...e.ui,dialog:t.sessionId?`assign-project`:`none`}};case`page`:return e.page===t.page?e:{...e,page:t.page,pageGroup:t.page?e.layout.focused:e.pageGroup};case`pinned_row`:return{...e,pinnedRows:{...e.pinnedRows,[t.session.id]:t.session}};case`select_session`:{let n={...e,ui:{...e.ui,dialog:`none`}};if(t.id===null)return{...n,currentSessionId:null};let r=t.near?wy(n.layout,t.near):null;return fS({...n,page:null},Uy(n.layout,t.id,r??void 0))}case`close_tab`:return fS(e,Wy(e.layout,t.id));case`unsent`:{if(!e.tabs.ids.includes(t.sessionId)||t.onlyIfEmpty&&!wb(e.unsent[t.sessionId]))return e;let n=Eb(e.unsent,t.sessionId,t.message);return n===e.unsent?e:{...e,unsent:n}}case`composer_quote`:return{...e,composerQuote:{sessionId:t.sessionId,text:t.text,preview:t.preview,itemId:t.itemId,seq:(e.composerQuote?.seq??0)+1}};case`chat_search_request`:return{...e,chatSearchRequest:{sessionId:t.sessionId,query:t.query,seq:(e.chatSearchRequest?.seq??0)+1}};case`chat_search_request_seen`:{let n=e.chatSearchRequest;return!n||n.seq!==t.seq||n.seen?e:{...e,chatSearchRequest:{...n,seen:!0}}}case`jump_to`:return{...e,jumpTo:{sessionId:t.sessionId,itemId:t.itemId,seq:(e.jumpTo?.seq??0)+1}};case`move_tab`:return fS(e,Gy(e.layout,t.groupId??e.layout.focused,t.from,t.to));case`cycle_tab`:return fS({...e,page:null},Ky(e.layout,t.delta));case`layout_focus`:return fS(e,By(e.layout,t.groupId));case`layout_focus_index`:return fS(e,Vy(e.layout,t.index));case`layout_drop`:{let n=Yy(e.layout,t.tabId,t.target);if(n===e.layout)return e;let r=e.page&&e.pageGroup===t.target.groupId?null:e.page;return fS(r===e.page?e:{...e,page:r},n)}case`layout_resize`:return fS(e,Zy(e.layout,t.path,t.sizes));case`layout_equalize`:return fS(e,Qy(e.layout,t.path));case`elsewhere`:{let n=e.elsewhere,r=t.owners;return Object.keys(n).length===Object.keys(r).length&&Object.entries(r).every(([e,t])=>n[e]===t)?e:{...e,elsewhere:{...r}}}case`sidebar_pinned_override`:return e.ui.sidebarPinnedOverride===t.pinned?e:{...e,ui:{...e.ui,sidebarPinnedOverride:t.pinned}};case`restore_tabs`:{let n=e.tabs.ids.filter(e=>!t.ids.includes(e)),r={...e.drafts},i=new Set(e.sessions.map(e=>e.id));for(let e of t.drafts)!r[e.id]&&!i.has(e.id)&&(r[e.id]=e);let a=e.currentSessionId??t.activeId,o=oy([...t.ids,...n],a),s=cb(t.layout??null,o.ids);return o.activeId&&(s=Hy(s,o.activeId)),fS({...e,drafts:r},s)}case`draft_open`:return fS({...e,page:null,drafts:{...e.drafts,[t.draft.id]:t.draft}},Uy(e.layout,t.draft.id));case`draft_patch`:{let n=e.drafts[t.id];return n?{...e,drafts:{...e.drafts,[t.id]:{...n,...t.patch}}}:e}case`draft_materialized`:{if(!e.drafts[t.id])return e;let{[t.id]:n,...r}=e.drafts;return{...e,drafts:r}}case`routing_seen`:{let n=e.pendingRouting[t.session.id];if(!n||!sg(n,t.session,e.providers))return e;let{[t.session.id]:r,...i}=e.pendingRouting;return{...e,pendingRouting:i}}case`pending_routing`:if(t.routing===null){if(!e.pendingRouting[t.sessionId])return e;let{[t.sessionId]:n,...r}=e.pendingRouting;return{...e,pendingRouting:r}}return{...e,pendingRouting:{...e.pendingRouting,[t.sessionId]:t.routing}};case`transcript`:{let n=e.transcripts[t.sessionId]??vg(t.sessionId),r=xg(n,t.action);if(r===n)return e;let i={...e,transcripts:{...e.transcripts,[t.sessionId]:r}};if(r.items.length>n.items.length){let e=pS(i,t.sessionId),n=ux(e);if(n!==e||i.windows[t.sessionId]===void 0)return{...i,windows:{...i.windows,[t.sessionId]:n}}}return i}case`transcript_loading`:return{...e,transcriptLoading:{...e.transcriptLoading,[t.sessionId]:t.loading}};case`window_grow`:{let n=pS(e,t.sessionId),r=cx(n,t.total);return r===n&&e.windows[t.sessionId]!==void 0?e:{...e,windows:{...e.windows,[t.sessionId]:r}}}case`window_reveal`:{let n=pS(e,t.sessionId),r=lx(n,t.rendered,t.total,t.hold===!0);return r===n&&e.windows[t.sessionId]!==void 0?e:{...e,windows:{...e.windows,[t.sessionId]:r}}}case`window_trim`:{let n=pS(e,t.sessionId),r=ux(n,t.force===!0);return r===n&&e.windows[t.sessionId]!==void 0?e:{...e,windows:{...e.windows,[t.sessionId]:r}}}case`window_size`:{let n={};for(let[r,i]of Object.entries(e.windows))n[r]=sx(i,t.size);return{...e,windows:n}}case`auto_routed`:{let n=wS(e,t.frame.sessionId);if(!n)return e;let r=t.frame;return gS(e,{type:`session_upsert`,session:{...n,autoModel:{model:r.model,effort:r.effort,note:r.note,at:new Date(t.receivedAt).toISOString()}}})}case`model_boundary`:return{...e,modelBoundaries:{...e.modelBoundaries,[t.sessionId]:t.boundary}};case`providers`:return{...e,providers:t.providers,activeProviderId:t.activeProviderId};case`active_provider`:return{...e,activeProviderId:t.activeProviderId};case`agent_tools`:return{...e,agentTools:t.catalogue};case`settings`:{let n={...e,settings:t.settings};return t.settings.uiPrefs&&(n=hS(n,Ml(t.settings.uiPrefs)),n.prefsBackend=`brain`),n}case`prefs`:return hS(e,t.prefs);case`prefs_backend`:return{...e,prefsBackend:t.backend};case`plan`:return{...e,plan:t.plan};case`account`:return{...e,account:t.account,accountLoaded:!0,accountLink:t.account.link??e.accountLink,emailVerification:t.account.loggedIn?null:e.emailVerification};case`account_unavailable`:return e.accountLoaded?e:{...e,accountLoaded:!0};case`account_link`:return{...e,accountLink:t.link};case`email_verification`:return{...e,emailVerification:t.pending};case`recovery_key`:return{...e,recoveryKey:t.recoveryKey};case`credentials`:return{...e,credentials:t.credentials};case`claude_subscription`:return{...e,claudeSubscription:t.status};case`claude_login`:return{...e,claudeLogin:t.state};case`oauth_login`:return{...e,oauthLogin:t.state};case`oauth_login_provider`:return{...e,ui:{...e.ui,oauthLoginProviderId:t.providerId}};case`engine_download`:return{...e,engineDownload:t.state};case`import_progress`:return{...e,importProgress:t.progress};case`tool_install`:{let{[t.frame.sessionId]:n,...r}=e.toolInstalls;return{...e,toolInstalls:t.frame.phase===`done`?r:{...r,[t.frame.sessionId]:t.frame}}}case`tool_install_dismiss`:{let{[t.sessionId]:n,...r}=e.toolInstalls;return{...e,toolInstalls:r}}case`doctor`:return{...e,doctor:t.checks};case`remote_hosts`:{let n=e.remote.tabs;for(let r of t.hosts){let t=r.label||r.hostName;for(let[i,a]of Object.entries(n))a.hostId===r.hostId&&a.hostName!==t&&(n===e.remote.tabs&&(n={...n}),n[i]={...a,hostName:t})}return{...e,remote:{...e.remote,hosts:t.hosts,tabs:n,loading:!1,loaded:!0,reason:t.reason??null,stale:t.stale??!1}}}case`remote_unsupported`:return{...e,remote:{...e.remote,supported:!1,loading:!1,loaded:!0}};case`remote_loading`:return{...e,remote:{...e.remote,loading:t.loading}};case`remote_loaded`:return{...e,remote:{...e.remote,loading:!1,loaded:!0}};case`remote_sessions`:{let n={...e.remote.sessionOwners};for(let e of t.sessions)n[e.id]=t.hostId;let r={...e.remote.unreachable};return t.unreachable?r[t.hostId]=t.unreachable:delete r[t.hostId],{...e,remote:{...e.remote,sessions:{...e.remote.sessions,[t.hostId]:t.sessions},unreachable:r,sessionOwners:n}}}case`remote_tab`:return{...e,remote:{...e.remote,tabs:{...e.remote.tabs,[t.tab.sessionId]:t.tab},sessionOwners:{...e.remote.sessionOwners,[t.tab.sessionId]:t.tab.hostId}}};case`remote_tab_state`:{let n=e.remote.tabs[t.sessionId];if(!n)return e;let r={...n,state:t.state,detail:t.detail,live:t.state===`attached`,...t.pairingId===void 0?{}:{pairingId:t.pairingId}};return{...e,remote:{...e.remote,tabs:{...e.remote.tabs,[t.sessionId]:r}}}}case`remote_tab_meta`:{let n=e.remote.tabs[t.sessionId];if(!n)return e;let r={...n,...t.features===void 0?{}:{features:t.features},...t.catalogue===void 0?{}:{catalogue:t.catalogue}};return{...e,remote:{...e.remote,tabs:{...e.remote.tabs,[t.sessionId]:r}}}}case`remote_reach`:{let n=e.remote.tabs[t.sessionId];if(!n)return e;let r=n.reach??{linked:!1,folders:[],refusals:[],asks:[]},i=t.event,a;switch(i.kind){case`state`:a={...r,linked:i.linked,folders:i.folders,refusals:i.refusals??[],asks:i.linked?r.asks:[]};break;case`ask`:a={...r,asks:r.asks.some(e=>e.requestId===i.requestId)?r.asks:[...r.asks,{requestId:i.requestId,summary:i.summary}]};break;case`ask_end`:a={...r,asks:r.asks.filter(e=>e.requestId!==i.requestId)};break;case`ended`:a={linked:!1,folders:[],refusals:[],asks:[]}}return{...e,remote:{...e.remote,tabs:{...e.remote.tabs,[t.sessionId]:{...n,reach:a}}}}}case`remote_tab_closed`:{if(!e.remote.tabs[t.sessionId])return e;let{[t.sessionId]:n,...r}=e.remote.tabs;return{...e,remote:{...e.remote,tabs:r}}}case`update_status`:return{...e,update:t.status,updateChecking:!1};case`update_checking`:return{...e,updateChecking:t.checking};case`update_event`:{let n=Jx(e.updateInstall,t.event),r=n.phase===`downloading`&&e.ui.dialog===`none`?`update`:e.ui.dialog;return{...e,updateInstall:n,ui:e.ui.dialog===r?e.ui:{...e.ui,dialog:r}}}case`terminal_update`:{let n=t.terminal.running&&e.ui.dialog===`none`?`update`:e.ui.dialog;return{...e,terminalUpdate:t.terminal,ui:e.ui.dialog===n?e.ui:{...e.ui,dialog:n}}}case`update_dismissed`:return{...e,updateDismissed:t.version};case`toast`:{let n=e.toasts.filter(e=>e.id!==t.toast.id);return{...e,toasts:[...n.slice(-4),t.toast]}}case`dismiss_toast`:return{...e,toasts:e.toasts.filter(e=>e.id!==t.id)};case`sidebar`:return{...e,ui:{...e.ui,sidebarOpen:t.open}};case`media_panel`:return{...e,ui:{...e.ui,mediaPanelOpen:t.open}};case`projects_new`:return{...e,projectsStartNew:!0,projectsSelectId:null};case`import_offer`:return{...e,importOffered:!0};case`projects_select`:return{...e,projectsStartNew:!1,projectsSelectId:t.projectId};case`dialog`:return{...e,projectsStartNew:t.dialog===`projects`&&e.projectsStartNew,importOffered:t.dialog===`import-claude`&&e.importOffered,projectsSelectId:t.dialog===`projects`?e.projectsSelectId:null,conversationsSelectId:t.dialog===`conversations`?e.conversationsSelectId:null,ui:{...e.ui,dialog:t.dialog,claudeLoginMode:t.dialog===`claude-login`?e.ui.claudeLoginMode:null,oauthLoginProviderId:t.dialog===`oauth-login`?e.ui.oauthLoginProviderId:null,connectProviderId:t.connectProviderId??null}};case`connect_provider`:return{...e,ui:{...e.ui,connectProviderId:t.providerId}};case`claude_login_mode`:return{...e,ui:{...e.ui,claudeLoginMode:t.mode}};case`settings_section`:return{...e,ui:{...e.ui,settingsSection:t.section}};case`mcp_servers`:return{...e,mcpServers:t.servers};case`mcp_testing`:return{...e,mcpTesting:{...e.mcpTesting,[t.id]:t.testing}};case`mcp_test_result`:return{...e,mcpTestResults:{...e.mcpTestResults,[t.id]:t.result}}}}function _S(e){return e.type===`subagent_activity`||e.type===`agent`&&re(e.message)}function vS(){return typeof document<`u`&&document.visibilityState===`hidden`}function yS(e,t){switch(e.type){case`welcome`:return[{type:`welcome`,hostName:e.hostName,hostId:e.hostId,appVersion:e.appVersion}];case`agent`:case`permission_request`:case`permission_resolved`:case`turn_started`:case`turn_finished`:case`prompt_delivered`:case`subagent_activity`:case`prompt_cancelled`:return[{type:`transcript`,sessionId:e.sessionId,action:{type:`frame`,frame:e,receivedAt:t}}];case`session_state`:return[{type:`session_upsert`,session:e.session},{type:`routing_seen`,session:e.session},{type:`transcript`,sessionId:e.session.id,action:{type:`frame`,frame:e,receivedAt:t}}];case`session_status`:return[{type:`session_status`,sessionId:e.sessionId,status:e.status}];case`auto_routed`:return[{type:`auto_routed`,frame:e,receivedAt:t}];case`conversations_changed`:return[{type:`conversations_changed`,conversationIds:e.conversationIds,sessionIds:e.sessionIds}];case`chat_about_changed`:return[{type:`chat_abouts_changed`,sessionIds:e.sessionIds,generateAll:e.generateAll}];case`next_prompt_changed`:return[{type:`next_prompts_changed`,sessionIds:e.sessionIds,review:e.review}];case`claude_login`:return[{type:`claude_login`,state:e.state}];case`engine_download`:return[{type:`engine_download`,state:e.state}];case`import_progress`:return[{type:`import_progress`,progress:e.finished?null:e}];case`tool_pack_install`:return[{type:`tool_install`,frame:e}];case`pool_notice`:{let t=e.retryAfterSec?` Retrying by itself in ${e.retryAfterSec} s.`:``;return[{type:`toast`,toast:{id:`t-pool-${e.code}`,kind:`info`,text:`${e.message}${t}`}}]}case`error`:return e.sessionId?[{type:`transcript`,sessionId:e.sessionId,action:{type:`frame`,frame:e,receivedAt:t}}]:[{type:`toast`,toast:{id:`t-${t}`,kind:`error`,text:`${e.code}: ${e.message}`}}];default:return[]}}var bS=36e5,xS=1500;function SS(){return`req-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}function CS(e,t,n){if(e.type===`welcome`||e.type===`conversations_changed`||e.type===`chat_about_changed`||e.type===`next_prompt_changed`)return[];let r=`sessionId`in e?e.sessionId:e.type===`session_state`?e.session.id:void 0;return typeof r==`string`&&r!==t?[]:yS(e,n)}function wS(e,t){return e.transcripts[t]?.session??e.sessions.find(e=>e.id===t)}var TS=(0,v.createContext)(null);function q(){let e=(0,v.useContext)(TS);if(!e)throw Error(`useApp must be used inside <AppProvider>`);return e}var ES=(0,v.createContext)(null);function DS({sessionId:e,groupId:t,focused:n,children:r}){let i=(0,v.useMemo)(()=>({sessionId:e,groupId:t,focused:n}),[e,t,n]);return(0,K.jsx)(ES.Provider,{value:i,children:r})}function OS(){let e=(0,v.useContext)(ES),t=(0,v.useContext)(TS);if(e)return e;let n=t?.state;return{sessionId:n?.currentSessionId??null,groupId:n?.layout.focused??`g1`,focused:!0}}function kS(){return OS().sessionId}function AS(){let{state:e}=q(),t=kS();return t?e.transcripts[t]??null:null}function jS(){let{state:e}=q(),t=kS();return t?e.transcripts[t]?.session??e.sessions.find(e=>e.id===t)??null:null}function MS(){let{state:e}=q(),t=kS();return t?e.drafts[t]??null:null}function NS(){return typeof window<`u`&&window.oonacode?`desktop`:`host`}var PS=0;function FS(e){return e.status===401&&/password|credential/i.test(e.message)}function IS(){try{return typeof window<`u`?window.localStorage:null}catch{return null}}function LS({api:e,socket:t,relay:n=null,initialSessionId:r,onUnauthorized:i,storage:a,fetchImpl:o,reportError:s,streamBatchMs:c=ag(),windowRole:l,children:u}){let d=l??(typeof window<`u`&&window.oonacode?.window?.role===`popout`?`popout`:`main`),[f,p]=(0,v.useReducer)(gS,d,e=>{let t=dS();return e===`popout`?{...t,windowRole:e,ui:{...t.ui,sidebarPinnedOverride:!1,sidebarOpen:!1}}:t}),m=(0,v.useRef)(f),h=(0,v.useRef)(!1),g=f.updateInstall.phase,_=f.terminalUpdate.running;(0,v.useEffect)(()=>{_||g!==`downloading`&&g!==`installing`&&(h.current=!1)},[g,_]),m.current=f;let y=(0,v.useRef)(i);y.current=i;let b=(0,v.useRef)(s);b.current=s;let x=(0,v.useRef)(a);x.current=a===void 0?IS():a;let S=(0,v.useRef)(o);S.current=o;let C=(0,v.useRef)(null),w=(0,v.useRef)({tail:Promise.resolve(),latest:0}),T=(0,v.useRef)(new Map),E=(0,v.useRef)(new Map),D=(0,v.useRef)(new Map),O=(0,v.useRef)(new Set),k=(0,v.useRef)(new Map),A=(0,v.useRef)(new Map),j=(0,v.useRef)(()=>{}),M=(0,v.useRef)(null);M.current===null&&(M.current=hx(()=>j.current())),(0,v.useEffect)(()=>()=>M.current?.dispose(),[]);let N=(0,v.useMemo)(()=>{let r=(e,t)=>{PS+=1,p({type:`toast`,toast:{id:`toast-${PS}`,kind:e,text:t}})},i=(e,t)=>{if(e instanceof $h&&e.isUnauthorized&&!FS(e)){y.current?.();return}let n=t?`${t}: ${$_(e)}`:$_(e);r(`error`,n),b.current?.(e,{source:`action`,...t?{action:t}:{}})},a=e=>r(`error`,`This host build cannot ${e} yet — update OonaCode on this PC`),o=()=>m.current.currentSessionId,s=e=>typeof e==`string`?m.current.drafts[e]??null:null,l=e=>cv(m.current.drafts,e),u=async t=>{p({type:`sessions_loading`,loading:!0});try{let n=(t??m.current.search).trim(),r=await e.listSessions(n?{search:n,limit:200,links:!0}:{limit:200,links:!0});p({type:`sessions`,sessions:r.sessions,total:r.total,...r.links?{links:r.links}:{}})}catch(e){p({type:`sessions_error`,error:$_(e)}),i(e,`Sessions`)}},d=async()=>{try{p({type:`vault_projects`,projects:(await e.listVaultProjects()).projects})}catch{m.current.vaultProjects.length===0&&p({type:`vault_projects`,projects:[]})}},f=async()=>{try{p({type:`projects`,projects:(await e.listProjects()).projects})}catch(e){i(e,`Projects`)}await d()},g=async()=>{try{let t=await e.listProviders();p({type:`providers`,providers:t.providers,activeProviderId:t.activeProviderId})}catch(e){i(e,`Providers`)}},_=async()=>{if(e.listAgentTools)try{let{catalogue:t}=await e.listAgentTools();t&&p({type:`agent_tools`,catalogue:t})}catch(e){e instanceof $h&&e.isUnauthorized&&y.current?.()}},v=async()=>{if(e.listMcpServers)try{let{servers:t}=await e.listMcpServers();p({type:`mcp_servers`,servers:t})}catch(e){e instanceof $h&&e.isUnauthorized&&y.current?.()}},O=async t=>{if(!e.createMcpServer)return null;try{let n=await e.createMcpServer(t);return r(`success`,`Added MCP server "${n.name}"`),await v(),n}catch(e){return i(e,`MCP Servers`),null}},P=async(t,n)=>{if(!e.updateMcpServer)return null;try{let r=await e.updateMcpServer(t,n);return await v(),r}catch(e){return i(e,`MCP Servers`),null}},F=async t=>{if(!e.deleteMcpServer)return!1;try{return await e.deleteMcpServer(t),r(`success`,`MCP server removed`),await v(),!0}catch(e){return i(e,`MCP Servers`),!1}},I=async t=>{if(!e.testMcpServer)return null;p({type:`mcp_testing`,id:t,testing:!0});try{let n=await e.testMcpServer(t);return p({type:`mcp_test_result`,id:t,result:n}),n}catch(e){let n={ok:!1,durationMs:0,error:e instanceof Error?e.message:String(e)};return p({type:`mcp_test_result`,id:t,result:n}),n}finally{p({type:`mcp_testing`,id:t,testing:!1})}},te=async t=>{if(!e.testMcpConfig)return null;try{return await e.testMcpConfig(t)}catch(e){return{ok:!1,durationMs:0,error:e instanceof Error?e.message:String(e)}}},ne=async(t={})=>{if(!e.listConversations)return`unsupported`;try{return(await e.listConversations(t)).conversations}catch(e){return e instanceof $h&&e.isUnauthorized&&y.current?.(),rg(e)?`unsupported`:null}},re=async(t,n,r)=>{try{let i=await e.setActiveProvider({providerId:t,...n?{model:n}:{},...r===void 0?{}:{variantId:r}});p({type:`active_provider`,activeProviderId:i.activeProviderId}),await g()}catch(e){i(e,`Provider`)}},L=async()=>{try{p({type:`settings`,settings:await e.getSettings()})}catch(e){i(e,`Settings`)}},R=async()=>{try{p({type:`account`,account:await e.getAccount()})}catch(e){p({type:`account_unavailable`}),i(e,`Account`)}},z=async()=>{try{p({type:`credentials`,credentials:(await e.listCredentials()).credentials})}catch(e){if(e instanceof $h&&(e.code===`vault_locked`||e.status===423)){p({type:`credentials`,credentials:[]});return}i(e,`Credentials`)}},B=async()=>{try{p({type:`claude_subscription`,status:await e.claudeSubscriptionStatus()})}catch(e){e instanceof $h&&e.isUnauthorized&&y.current?.(),p({type:`claude_subscription`,status:null})}},ie=async t=>{try{p({type:`oauth_login`,state:await e.oauthLoginStart(t)})}catch(e){r(`error`,`Sign-in: ${$_(e)}`)}},ae=async t=>{try{p({type:`oauth_login`,state:await e.oauthLoginState(t)})}catch{}},oe=async t=>{try{p({type:`oauth_login`,state:await e.oauthLoginCancel(t)})}catch(e){r(`error`,`Sign-in: ${$_(e)}`)}},se=async()=>{try{p({type:`claude_login`,state:await e.claudeLoginState()})}catch{}},ce=async()=>{try{let t=await e.claudeSubscriptionLogin();return t.login&&p({type:`claude_login`,state:t.login}),t}catch(e){return r(`error`,`Claude login: ${$_(e)}`),null}},le=async t=>{try{return p({type:`claude_login`,state:await e.claudeLoginCode({code:t})}),!0}catch(e){return r(`error`,`Claude login: ${$_(e)}`),!1}},ue=async()=>{try{p({type:`claude_login`,state:await e.claudeLoginCancel()})}catch(e){r(`error`,`Claude login: ${$_(e)}`)}},de=async()=>{try{let t=await e.info();C.current=t,p({type:`info`,info:t})}catch(e){i(e,`Host`)}},fe=async()=>{let t=(C.current??m.current.info)?.appVersion??``;for(let n=0;n<8;n++){try{let n=await e.info();if(C.current=n,p({type:`info`,info:n}),n.appVersion!==t)return}catch{}await new Promise(e=>setTimeout(e,xS))}},pe=async()=>{if(e.plan)try{let{plan:t}=await e.plan();p({type:`plan`,plan:t})}catch{p({type:`plan`,plan:null})}};j.current=()=>void pe();let me=()=>{e.plan&&M.current?.request()},he=async()=>{if(!e.listHosts||!m.current.remote.supported){p({type:`remote_loaded`});return}p({type:`remote_loading`,loading:!0});try{let t=await e.listHosts();p({type:`remote_hosts`,hosts:t.hosts,reason:t.reason??null,stale:t.stale??!1})}catch(e){rg(e)?p({type:`remote_unsupported`}):(p({type:`remote_loaded`}),e instanceof $h&&e.isUnauthorized&&y.current?.())}},ge=async t=>{if(!e.listHostSessions)return null;try{let n=await e.listHostSessions(t);return p({type:`remote_sessions`,hostId:t,sessions:n.sessions,unreachable:n.reason?{reason:n.reason,detail:n.detail??null}:null}),n.sessions}catch(e){return rg(e)?p({type:`remote_unsupported`}):i(e,`Remote sessions`),null}},_e=async e=>{await ge(e)},ve=e=>{let t=m.current;if(t.drafts[e]||t.remote.tabs[e]||k.current.has(e))return null;let n=t.remote.sessionOwners[e]??t.prefs.remoteTabs[e];if(!n)return null;let r=t.remote.hosts.find(e=>e.hostId===n);return r&&!r.isSelf?n:null},ye=e=>{if(e!==null){let t=typeof window<`u`?window.oonacode:void 0,n=m.current;if(n.elsewhere[e]&&!n.tabs.ids.includes(e)&&t?.focusChatElsewhere){t.focusChatElsewhere(e).then(t=>{t||p({type:`select_session`,id:e})},()=>p({type:`select_session`,id:e}));return}let r=ve(e);if(r!==null){Ee(r,e);return}}p({type:`select_session`,id:e})},be=e=>e?m.current.remote.tabs[e]??null:null,xe=(e,t)=>k.current.get(e)?.send(t)??!1,Ce=e=>{let t=be(e);r(`error`,`${t?.hostName??`That PC`} is offline — this transcript is read-only until it comes back.`)},we=async(t,n)=>{if(e.listHostSessionEntries){p({type:`transcript_loading`,sessionId:n,loading:!0});try{let r=await e.listHostSessionEntries(t,n,{limit:500,tail:1});r.entries.length>0&&p({type:`transcript`,sessionId:n,action:{type:`entries`,entries:r.entries}})}catch(e){e instanceof $h&&e.isUnauthorized?y.current?.():rg(e)||i(e,`Remote history`)}finally{p({type:`transcript_loading`,sessionId:n,loading:!1})}}},Te=e=>{A.current.get(e)?.dispose(),A.current.delete(e);let t=k.current.get(e);t&&(k.current.delete(e),t.detach(),p({type:`remote_tab_closed`,sessionId:e}))},Ee=async(e,t,r={})=>{let i=m.current,a=i.remote.hosts.find(t=>t.hostId===e)??null,o=a?.label||a?.hostName||e,s=(i.remote.sessions[e]??[]).find(e=>e.id===t);if(r.draft||(s?p({type:`session_upsert`,session:s}):(async()=>{let n=(await ge(e))?.find(e=>e.id===t);n&&p({type:`session_upsert`,session:n})})()),p({type:`remote_tab`,tab:{sessionId:t,hostId:e,hostName:o,pairingId:null,state:`unavailable`,detail:null,live:!1}}),r.focus!==!1&&p({type:`select_session`,id:t}),r.draft||we(e,t),!n){p({type:`remote_tab_state`,sessionId:t,state:`unavailable`,detail:`This window cannot bridge to other PCs yet.`});return}k.current.get(t)?.detach(),A.current.get(t)?.dispose();let l=og({isStreamFrame:_S,deliver:e=>{for(let t of e)u(t)},batchMs:c,isHidden:vS});A.current.set(t,l);let u=e=>{let n=Date.now();if(e.type===`welcome`){let n=e.features??[];p({type:`remote_tab_meta`,sessionId:t,features:n}),n.includes(Ie.toolPacks)&&xe(t,{type:`list_tool_packs`,requestId:SS()})}else e.type===`tool_packs`&&p({type:`remote_tab_meta`,sessionId:t,catalogue:e.catalogue});let r=e.type===`session_state`?wS(m.current,e.session.id):void 0;for(let r of CS(e,t,n))p(r);e.type===`session_state`&&m.current.drafts[e.session.id]&&p({type:`draft_materialized`,id:e.session.id}),e.type===`session_state`&&Sx(r,e.session)&&me()},d=n.attach({hostId:e,sessionId:t,onFrame:e=>l.push(e),onReach:e=>p({type:`remote_reach`,sessionId:t,event:e}),onState:e=>{if(p({type:`remote_tab_state`,sessionId:t,state:e.state,detail:e.detail,pairingId:e.pairingId}),e.state!==`attached`)return;let r=m.current.transcripts[t]?.lastSeq??0;n.send(e.pairingId,{type:`subscribe`,sessionId:t,afterSeq:r})}});k.current.set(t,d),p({type:`remote_tab_state`,sessionId:t,state:`unavailable`,detail:null,pairingId:d.pairingId})},De=async t=>{let n=fv(m.current.prefs,t);if(m.current={...m.current,prefs:n},p({type:`prefs`,prefs:n}),t.transcriptWindowSize!==void 0&&p({type:`window_size`,size:n.transcriptWindowSize}),m.current.prefsBackend===`local`){dv(x.current,n);return}let r=w.current,i=++r.latest,a=r.tail.then(async()=>{if(i===r.latest)try{let t=await e.updateSettings({uiPrefs:n});i===r.latest&&p({type:`settings`,settings:t}),t.uiPrefs?p({type:`prefs_backend`,backend:`brain`}):dv(x.current,n)}catch(e){if(pv(e)){p({type:`prefs_backend`,backend:`local`}),dv(x.current,n);return}e instanceof $h&&e.isUnauthorized?y.current?.():dv(x.current,n)}});r.tail=a.catch(()=>void 0),await a},Oe=(e,t,n)=>{let r=m.current.prefs.pinned;Al(r,e,t)!==n&&De({pinned:jl(r,e,t,n)})},ke=async t=>{let[n,r]=await Promise.all([e.getSession(t),e.listMessages(t)]);p({type:`session_upsert`,session:n}),p({type:`transcript`,sessionId:t,action:{type:`hydrate`,messages:r.messages,session:n}})},Ae=e=>{p({type:`session_upsert`,session:e}),ye(e.id),f()},je=async t=>{try{let n=await e.createSession(t);return Ae(n),n}catch(e){return i(e,`New session`),null}},Me=(e={})=>{let t=ev(av()),n=e.projectId?m.current.vaultProjects.find(t=>t.id===e.projectId):void 0;p({type:`draft_open`,draft:tv({...t,...e.projectId?{projectId:e.projectId}:{}},n?.chatDefaults)})},Ne=async e=>{let t=m.current.remote.hosts.find(t=>t.hostId===e)??null,n=t?.label||t?.hostName||`That PC`;if(t&&!t.online){r(`error`,`${n} is offline — a new chat has to start on a PC that is awake.`);return}let i=ev(av());p({type:`draft_open`,draft:i}),await Ee(e,i.id,{draft:!0})},Pe=e=>{let t=m.current;return Nb({drafts:t.drafts,remoteTabs:t.remote.tabs,unsent:t.unsent,files:t.files},e,Ab(e))},Le=e=>{Te(e),p({type:`close_tab`,id:e})},V=async(e,t)=>{let n=m.current,r=e.draft!==void 0&&!n.sessions.some(t=>t.id===e.id);r&&!n.drafts[e.id]&&p({type:`draft_open`,draft:Ib(e)}),e.kind===`remote`&&e.hostId?Ee(e.hostId,e.id,{focus:!0,draft:r}):r||p({type:`select_session`,id:e.id}),e.unsentText&&p({type:`unsent`,sessionId:e.id,message:{text:e.unsentText,attachments:[]},onlyIfEmpty:!0});for(let t of e.files?.open??[])p({type:`file_open`,sessionId:e.id,path:t});e.files&&e.files.open.length>0&&(e.files.active?p({type:`file_activate`,sessionId:e.id,path:e.files.active}):p({type:`file_show_chat`,sessionId:e.id})),t&&p({type:`layout_drop`,tabId:e.id,target:t})},Re=async n=>{let r=m.current,i=Gp(r.providers,{providerId:n.providerId??r.activeProviderId,model:n.model??r.info?.activeModel??null,variantId:n.variantId}),a={sessionId:n.id,...n.projectDir?{cwd:n.projectDir}:{},...n.projectId?{projectId:n.projectId}:{},...n.title?{title:n.title}:{},...i.providerId?{providerId:i.providerId}:{},...i.variantId?{variantId:i.variantId}:{},...i.modelId?{model:i.modelId}:{},permissionMode:n.permissionMode??`default`,...n.posture?{posture:n.posture}:{},...n.effort&&Se(n.effort)?{effort:n.effort}:{},...Ep(n.toolPacks),...n.mcpSwitches?{mcpSwitches:n.mcpSwitches}:{},...fh(n.modelSkills),...n.customModel&&i.modelId===n.model?{customModel:!0}:{},...Vh(i.providerId,i.modelId)?{autoModel:!0}:{}},o;try{o=await e.createSession(a)}catch(t){let r=await e.getSession(n.id).catch(()=>null);if(!r)throw t;o=r}return p({type:`session_upsert`,session:o}),p({type:`draft_materialized`,id:n.id}),t.subscribe(o.id),f(),o},ze=async()=>e.scanClaudeSessions(),Be=async(t,n)=>{if(!e.searchImportChats)return null;try{return await e.searchImportChats(t,n)}catch{return null}},Ve=async(t,n)=>{let r=await e.importClaudeSessions({...t&&t.length>0?{ids:t}:{},...n?{overwrite:!0}:{}});return r.imported.length>0&&(await u(),f()),r},He=async t=>{if(!e.sessionLink)return null;try{let{link:n}=await e.sessionLink(t);return p({type:`session_link`,sessionId:t,link:n}),n}catch{return p({type:`session_link`,sessionId:t,link:null}),null}},Ue=async t=>{if(!e.syncSessionDown)return null;try{let n=await e.syncSessionDown(t);return p({type:`session_link`,sessionId:t,link:n.link}),n.added>0&&(await u(),m.current.tabs.ids.includes(t)&&await ke(t)),n}catch(e){return i(e,`Sync`),null}},H=async(e=!1)=>{let t=m.current,n=t.account?.gatewayUrl??t.settings?.gatewayUrl??null,i=typeof window<`u`?window.oonacode:void 0,a=t.info?.platform??i?.platform??null,o=a?{platform:a,arch:t.info?.arch??null}:null,s=Ux(n,Wx({bridge:i,info:t.info}),o),c=e&&i?.checkForUpdates?i.checkForUpdates():null;if(c&&c.catch(()=>void 0),!s){e&&!c&&r(`info`,`Sign in to OonaCode to check for updates`);return}p({type:`update_checking`,checking:!0});try{let a=i?.fetchLatestRelease?await i.fetchLatestRelease(n):await(async()=>{let e=await(S.current??(e=>fetch(e,{credentials:`omit`})))(s);if(!e.ok)throw Error(`release feed returned ${e.status}`);return e.json()})(),o=C.current??t.info,c=Hx(Vx(a),{desktop:i?.appVersion??null,host:o?.appVersion??t.connection.appVersion??null,cli:o?.cliVersion??null,engine:o?.engine.version??null},o?.platform??i?.platform??null);p({type:`update_status`,status:c}),e&&r(c.available?`info`:`success`,c.available?`OonaCode ${c.version} is available (${c.components.length} component${c.components.length===1?``:`s`})`:`Everything is up to date`)}catch(t){p({type:`update_checking`,checking:!1}),e&&r(`error`,`Update check failed: ${$_(t)}`)}};return{refreshInfo:de,refreshSessions:u,scanClaudeSessions:ze,importClaudeSessions:Ve,searchImportChats:Be,refreshSessionLink:He,syncSessionDown:Ue,refreshProjects:f,refreshProviders:g,refreshAgentTools:_,refreshMcpServers:v,createMcpServer:O,updateMcpServer:P,deleteMcpServer:F,testMcpServer:I,testMcpConfig:te,refreshSettings:L,refreshAccount:R,refreshCredentials:z,refreshClaudeSubscription:B,startClaudeLogin:ce,submitClaudeLoginCode:le,cancelClaudeLogin:ue,refreshClaudeLogin:se,startOauthLogin:ie,refreshOauthLogin:ae,cancelOauthLogin:oe,refreshHosts:he,refreshPlan:pe,refreshPlanSoon:me,refreshHostSessions:_e,openRemoteSession:Ee,newRemoteTab:Ne,async renameHost(t,n){if(!e.updateHost){r(`error`,`This host build cannot rename devices yet`);return}try{let i=await e.updateHost(t,{label:n});p({type:`remote_hosts`,hosts:m.current.remote.hosts.map(e=>e.hostId===t?i:e),reason:m.current.remote.reason,stale:m.current.remote.stale}),r(`success`,`Device renamed`)}catch(e){rg(e)?p({type:`remote_unsupported`}):i(e,`Rename device`)}},async runDoctor(){p({type:`doctor`,checks:null});try{p({type:`doctor`,checks:(await e.doctor()).checks})}catch(e){i(e,`Doctor`)}},setSearch(e){p({type:`search`,value:e})},selectSession:ye,closeTab(e){Te(e),p({type:`close_tab`,id:e})},rememberUnsent(e,t,n){p({type:`unsent`,sessionId:e,message:t,onlyIfEmpty:n})},quoteIntoComposer(e,t,n){p({type:`composer_quote`,sessionId:e,text:t,preview:n?.preview??tx(t.replace(/^> ?/gm,``)),itemId:n?.itemId??null})},jumpToItem(e,t){p({type:`jump_to`,sessionId:e,itemId:t})},async searchTranscripts(t){if(!e.searchEntries)return null;try{return await e.searchEntries(t)}catch{return null}},openChatWithSearch(e,t){ye(e),p({type:`chat_search_request`,sessionId:e,query:t})},moveTab(e,t,n){p({type:`move_tab`,from:e,to:t,...n?{groupId:n}:{}})},cycleTab(e){p({type:`cycle_tab`,delta:e})},focusGroup(e){let t=m.current.layout;t.focused===e||!t.groups[e]||p({type:`layout_focus`,groupId:e})},focusGroupAt(e){p({type:`layout_focus_index`,index:e})},dropTab(e,t){p({type:`layout_drop`,tabId:e,target:t})},splitTab(e,t){let n=m.current.layout,r=t??n.groups[n.focused]?.activeId??null,i=r?wy(n,r):null;if(r&&i&&(n.groups[i]?.ids.length??0)>1){p({type:`layout_drop`,tabId:r,target:{groupId:i,zone:e}});return}let a=ev(av());p({type:`draft_open`,draft:a}),p({type:`layout_drop`,tabId:a.id,target:{groupId:i??n.focused,zone:e}})},moveTabToOtherGroup(e){let t=m.current.layout,n=wy(t,e),r=n?ky(t,n):null;r&&p({type:`layout_drop`,tabId:e,target:{groupId:r,zone:`center`}})},resizeSplit(e,t){p({type:`layout_resize`,path:e,sizes:t})},equalizeSplit(e){p({type:`layout_equalize`,path:e})},async moveTabToNewWindow(e,t){let n=typeof window<`u`?window.oonacode:void 0;if(!n?.openTabsInNewWindow||!m.current.tabs.ids.includes(e))return!1;let i=Pe(e),a=null;try{a=await n.openTabsInNewWindow({tabs:[i],screenX:t?.x??null,screenY:t?.y??null})}catch{a=null}return a?(Le(e),!0):(r(`error`,`OonaCode could not open a new window for this chat`),!1)},async moveTabToMainWindow(e){let t=typeof window<`u`?window.oonacode:void 0;if(!t?.moveTabsToMainWindow||m.current.windowRole!==`popout`||!m.current.tabs.ids.includes(e))return!1;let n=!1;try{n=await t.moveTabsToMainWindow([Pe(e)])}catch{n=!1}return n?Le(e):r(`error`,`The main OonaCode window could not take this chat`),n},adoptTab:V,async tabDraggedOut(e,t){let n=typeof window<`u`?window.oonacode:void 0;if(!(!n?.tabDragEnded||!m.current.tabs.ids.includes(e)))try{(await n.tabDragEnded({tab:Pe(e),...t})).outcome===`moved`&&Le(e)}catch{}},toggleSidebarPinned(){let e=m.current;if(e.windowRole===`popout`){let t=e.ui.sidebarPinnedOverride??e.prefs.sidebarPinned;p({type:`sidebar_pinned_override`,pinned:!t});return}De({sidebarPinned:!e.prefs.sidebarPinned})},newTab:Me,createSession:je,reportDiagnostic(e,t){b.current?.(Error(e),{source:`diagnostic`,...t})},async deleteSession(n){if(l(n)){p({type:`close_tab`,id:n});return}try{await e.deleteSession(n),t.unsubscribe(n),p({type:`session_removed`,id:n}),Oe(`chat`,n,!1)}catch(e){i(e,`Delete`)}},async deleteRemoteSession(n,r){try{if(!e.deleteHostSession)throw Error(`this PC is running an older OonaCode that cannot delete a chat on another device`);await e.deleteHostSession(n,r),t.unsubscribe(r),p({type:`session_removed`,id:r})}catch(e){i(e,`Delete`)}},async renameSession(t,n){try{p({type:`session_upsert`,session:await e.updateSession(t,{title:n})})}catch(e){i(e,`Rename`)}},refreshVaultProjects:d,async createVaultProject(t){try{let n=await e.createVaultProject(t);return await d(),n}catch(e){return i(e,`Project`),null}},async updateVaultProject(t,n){try{let r=await e.updateVaultProject(t,n);return await d(),r}catch(e){return i(e,`Project`),null}},async listScheduledTasks(t){if(!e.listScheduledTasks)return[];try{return(await e.listScheduledTasks(t)).tasks}catch{return[]}},async updateScheduledTask(t,n){if(!e.updateScheduledTask)return!1;try{return await e.updateScheduledTask(t,n),!0}catch(e){return i(e,`Scheduled task`),!1}},async githubLink(t){let n=t===`get`?e.getGithubLink:t===`start`?e.startGithubLink:t===`cancel`?e.cancelGithubLink:e.unlinkGithub;if(!n)return null;try{return await n.call(e)}catch(e){return t!==`get`&&i(e,`GitHub`),null}},async deleteScheduledTask(t){if(!e.deleteScheduledTask)return!1;try{return await e.deleteScheduledTask(t),!0}catch(e){return i(e,`Scheduled task`),!1}},listConversations:e=>ne(e),async refreshChatConversations(e){if(l(e)||m.current.remote.tabs[e])return;let t=await ne({sessionId:e});Array.isArray(t)&&p({type:`chat_conversations`,sessionId:e,conversations:t})},async conversationHistory(t){if(!e.getConversation)return null;try{return await e.getConversation(t)}catch(e){return e instanceof $h&&e.isUnauthorized&&y.current?.(),null}},async conversationAction(t,n,r){if(!e.conversationAction)return a(`manage conversations`),null;try{return(await e.conversationAction(t,n,r)).conversation}catch(e){return i(e,`Conversation`),null}},async stopAllConversations(){if(!e.stopAllConversations)return a(`stop conversations`),null;try{let t=await e.stopAllConversations();return r(`success`,t.paused===0&&t.interrupted===0?`No conversation was running.`:`Paused ${t.paused} conversation${t.paused===1?``:`s`}`+(t.interrupted>0?` and stopped ${t.interrupted} running turn${t.interrupted===1?``:`s`}.`:`.`)),t}catch(e){return i(e,`Stop all conversations`),null}},async cancelChatMessage(t){if(!e.cancelChatMessage)return a(`withdraw messages between chats`),!1;try{let{cancelled:n}=await e.cancelChatMessage(t);return n||r(`info`,`That message was already delivered, so it stays.`),n}catch(e){return i(e,`Withdraw message`),!1}},openConversations(e){p({type:`conversations_select`,conversationId:e??null}),p({type:`dialog`,dialog:`conversations`})},async listChatAbouts(){if(!e.listChatAbouts)return`unsupported`;try{return await e.listChatAbouts()}catch(e){return e instanceof $h&&e.isUnauthorized&&y.current?.(),rg(e)?`unsupported`:null}},async listCommands(t){if(m.current.remote.tabs[t])return`unsupported`;let n=s(t);try{return n?e.listCommands?await e.listCommands(n.projectDir?{cwd:n.projectDir}:{}):`unsupported`:e.listSessionCommands?await e.listSessionCommands(t):`unsupported`}catch(e){return e instanceof $h&&e.isUnauthorized&&y.current?.(),rg(e)?`unsupported`:null}},async listSkills(){if(!e.listSkills)return`unsupported`;try{return await e.listSkills()}catch(e){return e instanceof $h&&e.isUnauthorized&&y.current?.(),rg(e)?`unsupported`:null}},async removeSkill(t){if(!e.deleteSkill)return a(`remove a skill`),!1;try{return(await e.deleteSkill(t)).removed}catch(e){return i(e,`Remove skill`),!1}},async scanClaudeSkills(){if(!e.scanClaudeSkills)return a(`import skills`),null;try{return await e.scanClaudeSkills()}catch(e){return i(e,`Skills in Claude Code`),null}},async importClaudeSkills(t,n){if(!e.importClaudeSkills)return a(`import skills`),null;try{return await e.importClaudeSkills({keys:t,...n?{overwrite:!0}:{}})}catch(e){return i(e,`Import skills`),null}},async getChatAbout(t){if(l(t)||m.current.remote.tabs[t]||!e.getChatAbout)return`unsupported`;try{return await e.getChatAbout(t)}catch(e){return e instanceof $h&&e.isUnauthorized&&y.current?.(),rg(e)?`unsupported`:null}},async updateChatAbout(t,n){if(!e.updateChatAbout)return a(`edit a chat’s about`),null;let r=n?.trim()??``;try{return await e.updateChatAbout(t,{about:r===``?null:r})}catch(e){return i(e,`About`),null}},async regenerateChatAbout(t){if(!e.regenerateChatAbout)return{ok:!1,error:`OonaCode on this PC is too old to write abouts. Update it first.`,about:null};try{let n=await e.regenerateChatAbout(t);return{ok:n.ok,error:n.ok?null:n.error??`The about could not be written.`,about:n.about}}catch(e){return e instanceof $h&&e.isUnauthorized&&y.current?.(),{ok:!1,error:$_(e),about:null}}},async generateAllChatAbouts(){if(!e.generateAllChatAbouts)return a(`write abouts for every chat`),null;try{return await e.generateAllChatAbouts()}catch(e){return i(e,`Generate for all chats`),null}},async stopGenerateAllChatAbouts(){if(!e.stopGenerateAllChatAbouts)return a(`stop writing abouts`),null;try{return await e.stopGenerateAllChatAbouts()}catch(e){return i(e,`Stop generating abouts`),null}},openChatAbouts(){p({type:`dialog`,dialog:`chat-abouts`})},async listNextPrompts(){if(!e.listNextPrompts)return`unsupported`;try{return await e.listNextPrompts()}catch(e){return e instanceof $h&&e.isUnauthorized&&y.current?.(),rg(e)?`unsupported`:null}},async getNextPrompt(t){if(!e.getNextPrompt||m.current.remote.tabs[t])return`unsupported`;try{return await e.getNextPrompt(t)}catch(e){return e instanceof $h&&e.isUnauthorized&&y.current?.(),rg(e)?`unsupported`:null}},async suggestNextPrompt(t,n){let r={error:`OonaCode on this PC is too old for Suggest. Update it, then try again.`};if(!e.suggestNextPrompt)return r;try{return await e.suggestNextPrompt(t,n)}catch(e){return e instanceof $h&&e.isUnauthorized&&y.current?.(),rg(e)?r:{error:$_(e)}}},async reviewNextPrompts(t,n){if(!e.reviewNextPrompts)return r(`error`,`OonaCode on this PC is too old for the project manager — update it`),null;try{return(await e.reviewNextPrompts({sessionIds:t,...n===void 0?{}:{windowHours:n}})).review}catch(e){return i(e,`Review chats`),null}},async stopNextPromptReview(){if(!e.stopNextPromptReview)return null;try{return(await e.stopNextPromptReview()).review}catch(e){return i(e,`Stop the review`),null}},async markNextPromptSent(t,n,r){if(!e.markNextPromptSent)return!1;try{return await e.markNextPromptSent(t,{suggestionId:n,text:r}),!0}catch{return!1}},async sendToChat(t,n){let r=m.current;if(r.tabs.ids.includes(t)||r.remote.tabs[t])return this.sendPrompt(n,[],void 0,t);try{return await e.prompt(t,{text:n}),!0}catch(e){return i(e,`Send`),!1}},openProjectManager(){p({type:`dialog`,dialog:`project-manager`})},offerImport(){p({type:`import_offer`}),p({type:`dialog`,dialog:`import-claude`})},async deleteVaultProject(t){try{await e.deleteVaultProject(t),Oe(`project`,t,!1);let n=m.current.page;return n?.kind===`project`&&n.projectId===t&&p({type:`page`,page:{kind:`projects`}}),await d(),await u(),!0}catch(e){return i(e,`Project`),!1}},async setSessionProject(t,n){if(l(t)){let e=m.current.drafts[t],r=n?m.current.vaultProjects.find(e=>e.id===n):void 0,i=e?tv({...e,projectId:n},r?.chatDefaults):null;return p({type:`draft_patch`,id:t,patch:i?{projectId:n,model:i.model,providerId:i.providerId,variantId:i.variantId,projectDir:i.projectDir,effort:i.effort??null}:{projectId:n}}),!0}try{return p({type:`session_upsert`,session:await e.updateSession(t,{projectId:n})}),!0}catch(e){return i(e,`Project`),!1}},openNewProject(){p({type:`projects_new`}),p({type:`dialog`,dialog:`projects`})},openProjectSettings(e){p({type:`projects_select`,projectId:e}),p({type:`dialog`,dialog:`projects`})},openPage(e){p({type:`page`,page:e})},closePage(){p({type:`page`,page:null})},setPinned:Oe,openVoiceSummary(e){p({type:`voice_summary_dialog`,sessionId:e})},openAssignProject(e){p({type:`assign_project_dialog`,sessionId:e})},renameTab(t,n){let r=sv(n);if(l(t)){p({type:`draft_patch`,id:t,patch:{title:r}});return}(async()=>{try{p({type:`session_upsert`,session:await e.updateSession(t,{title:r??``})})}catch(e){i(e,`Rename`)}})()},async forkSession(t){if(l(t)){Me();return}try{let n=await e.forkSession(t,{});p({type:`session_upsert`,session:n}),ye(n.id)}catch(e){i(e,`Fork`)}},async sendPrompt(n,r=[],a,c){let l=c??o();if(!l)return!1;let u=`req-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,d=(e,t)=>(p({type:`transcript`,sessionId:l,action:{type:`frame`,frame:{type:`error`,sessionId:l,requestId:u,code:e,message:t}}}),p({type:`transcript`,sessionId:l,action:{type:`local_prompt_failed`,requestId:u}}),!1);p({type:`transcript`,sessionId:l,action:{type:`local_prompt`,requestId:u,text:n,attachments:r,at:new Date().toISOString()}}),p({type:`window_trim`,sessionId:l,force:!0});let f=s(l);if(f!==null&&be(l)!==null&&f){f.model&&xe(l,{type:`set_model`,sessionId:l,model:f.model,...f.providerId?{providerId:f.providerId}:{},...f.variantId===null?{}:{variantId:f.variantId}}),f.permissionMode&&xe(l,{type:`set_permission_mode`,sessionId:l,mode:f.permissionMode,...f.posture?{posture:f.posture}:{}}),f.title&&xe(l,{type:`set_title`,sessionId:l,title:f.title}),f.effort&&Se(f.effort)&&xe(l,{type:`set_effort`,sessionId:l,effort:f.effort});let e=Ep(f.toolPacks).toolPacks;e&&be(l)?.features?.includes(Ie.toolPacks)&&xe(l,{type:`set_tool_packs`,sessionId:l,requestId:SS(),toolPacks:e})}else if(f)try{await Re(f)}catch(e){return i(e,`New chat`),d(`session_create_failed`,$_(e))}let h=m.current.pendingRouting[l];if(h&&(a={...a,providerId:h.providerId,model:a?.model??h.model,...h.variantId===void 0?{}:{variantId:h.variantId}}),be(l))return xe(l,{type:`prompt`,sessionId:l,requestId:u,text:n,...r.length>0?{attachments:r}:{},...a?{options:a}:{}})?!0:(Ce(l),d(`host_offline`,`That PC is offline — this transcript is read-only.`));try{t.status===`open`?t.prompt(l,n,{attachments:r,options:a,requestId:u}):await e.prompt(l,{text:n,attachments:r,options:a})}catch(e){return i(e,`Send`),d(`send_failed`,$_(e))}return!0},respondPermission(e,n,i){let a=i??o();if(a&&!l(a)){if(!(be(a)?xe(a,{type:`permission_response`,sessionId:a,requestId:e,decision:n}):t.respondPermission(a,e,n))){r(`error`,`Not connected to the host — cannot answer the permission request`);return}p({type:`transcript`,sessionId:a,action:{type:`local_permission`,requestId:e,behavior:n.behavior}})}},async cancelQueued(t,n){let a=n??o();if(!(!a||l(a))){if(be(a)){r(`info`,`Withdrawing a queued message is done on the PC that runs the chat`);return}try{(await e.cancelQueued(a,t)).cancelled?p({type:`transcript`,sessionId:a,action:{type:`frame`,frame:{type:`prompt_cancelled`,sessionId:a,requestId:t,text:``}}}):r(`info`,`The agent has already read that message`)}catch(e){i(e,`Withdraw`)}}},async sendQueuedNow(t,n){let r=n??o();if(!r||l(r))return null;if(be(r))return`Send now is done on the PC that runs the chat`;try{return(await e.sendQueuedNow(r,t)).sent?null:Fe.alreadyRead}catch(e){return e instanceof $h&&e.code===`not_found`?Fe.alreadyRead:e instanceof Error?e.message:String(e)}},async interrupt(n){let r=n??o();if(r&&!l(r)){if(be(r)){xe(r,{type:`interrupt`,sessionId:r})||Ce(r);return}if(!t.interrupt(r))try{await e.interrupt(r)}catch(e){i(e,`Interrupt`)}}},setSessionModel(e,n,r,i){let a=i??o();if(!a)return;if(n&&re(n,e,r),s(a)){p({type:`draft_patch`,id:a,patch:{model:e,...n?{providerId:n}:{},...r===void 0?{}:{variantId:r},customModel:null}});return}p({type:`transcript`,sessionId:a,action:{type:`model_picked`}});let c=m.current.sessions.find(e=>e.id===a),l=m.current.transcripts[a]?.session??c,u=m.current.transcripts[a]?.session?.model??c?.model??null,d=m.current.pendingRouting[a],f=d!==void 0||n!==void 0&&(l===void 0||n!==(l.providerId??null))||r!==void 0&&l!==void 0&&(r??null)!==(l.variantId??null);f?p({type:`pending_routing`,sessionId:a,routing:{providerId:n??d?.providerId??l?.providerId??``,model:e,...r===void 0?{}:{variantId:r}}}):be(a)?xe(a,{type:`set_model`,sessionId:a,model:e}):t.setModel(a,e);let h=Vh(n??l?.providerId??null,e);if(u!==e&&!h&&p({type:`model_boundary`,sessionId:a,boundary:{index:m.current.transcripts[a]?.items.length??0,from:u,to:e}}),c&&h){if(!f&&!c.autoModel){let{customModel:e,...t}=c;p({type:`session_upsert`,session:{...t,autoModel:{model:null}}})}}else if(c){let{customModel:t,autoModel:i,...a}=c;p({type:`session_upsert`,session:{...a,model:e,...n?{providerId:n}:{},...r===void 0?{}:{variantId:r}}})}},async setSessionCustomModel(t,n,a){let c=n??o();if(!c)return!1;let l=s(c);if(l){let e=m.current,n=Gp(e.providers,{providerId:l.providerId??e.activeProviderId,model:l.model??e.info?.activeModel??null,variantId:l.variantId}),r=a?Ch(t,a):Sh(t,{providerId:n.providerId,variantId:n.variantId},e.providers.map(e=>e.definition.id));return p({type:`draft_patch`,id:c,patch:{...r,customModel:{previous:l.customModel?.previous??{providerId:n.providerId,variantId:n.variantId,model:n.modelId}}}}),!0}let u=be(c);if(u)return r(`error`,`This chat runs on ${u.hostName} — change its model on that PC.`),!1;try{let n=wS(m.current,c),r=await e.updateSession(c,{customModel:t,...a?{customModelProvider:a}:{}});m.current.pendingRouting[c]!==void 0&&p({type:`pending_routing`,sessionId:c,routing:null}),p({type:`transcript`,sessionId:c,action:{type:`model_picked`}});let i=n?.model??null;return i!==r.model&&r.model&&p({type:`model_boundary`,sessionId:c,boundary:{index:m.current.transcripts[c]?.items.length??0,from:i,to:r.model}}),p({type:`session_upsert`,session:r}),!0}catch(e){return i(e,`Model`),!1}},setSessionPosture(e,n){let r=n??o();if(!r)return;let i=ee(e);if(l(r)){p({type:`draft_patch`,id:r,patch:{permissionMode:i,posture:e}});return}be(r)?xe(r,{type:`set_permission_mode`,sessionId:r,mode:i,posture:e}):t.setPermissionMode(r,i,e);let a=m.current.sessions.find(e=>e.id===r);a&&p({type:`session_upsert`,session:{...a,permissionMode:i,posture:e}})},setSessionEffort(e,n){let r=n??o();if(!r||l(r))return;be(r)?xe(r,{type:`set_effort`,sessionId:r,effort:e}):t.setEffort(r,e);let i=m.current.sessions.find(e=>e.id===r);if(i){let{effort:t,...n}=i;p({type:`session_upsert`,session:e?{...n,effort:e}:n})}},async setReach(e,t){let n=be(e),i=k.current.get(e);if(!n||!i?.setReach)return!1;if(!n.features?.includes(Ie.reach))return r(`error`,`OonaCode on ${n.hostName} is too old to use this PC's files — update it first.`),!1;if(!n.live)return Ce(e),!1;if(!i.setReach(t))return r(`error`,`Not connected to the host.`),!1;if(t&&t.length>0){let t=l(e)?s(e)?.toolPacks:wS(m.current,e)?.toolPacks;t?.reach!==!0&&N.setSessionToolPacks(e,wp(t,Bu,!0))}return!0},answerReach(e,t,n){k.current.get(e)?.answerReach?.(t,n),p({type:`remote_reach`,sessionId:e,event:{kind:`ask_end`,requestId:t}})},async setSessionToolPacks(t,n){if(l(t))return p({type:`draft_patch`,id:t,patch:{toolPacks:{...n}}}),!0;let a=be(t);if(a){if(!a.features?.includes(Ie.toolPacks))return r(`error`,`OonaCode on ${a.hostName} is too old to change this chat's tools from here — update it first.`),!1;let e=wS(m.current,t),i=e?.toolPacks;if(e&&p({type:`session_upsert`,session:{...e,toolPacks:n}}),!xe(t,{type:`set_tool_packs`,sessionId:t,requestId:SS(),toolPacks:n})){if(e){let{toolPacks:t,...n}=e;p({type:`session_upsert`,session:i?{...n,toolPacks:i}:n})}return Ce(t),!1}return!0}let o=(T.current.get(t)??0)+1;T.current.set(t,o);let s=wS(m.current,t),c=s?.toolPacks;s&&p({type:`session_upsert`,session:{...s,toolPacks:n}});try{let r=await e.updateSession(t,{toolPacks:n});return T.current.get(t)===o&&p({type:`session_upsert`,session:r}),!0}catch(e){if(T.current.get(t)===o){let e=wS(m.current,t);if(e){let{toolPacks:t,...n}=e;p({type:`session_upsert`,session:c?{...n,toolPacks:c}:n})}}return i(e,`Tools`),!1}},async setSessionMcpSwitches(t,n){if(l(t))return p({type:`draft_patch`,id:t,patch:{mcpSwitches:{...n}}}),!0;let a=be(t);if(a)return r(`error`,`This chat runs on ${a.hostName} — switch its MCP servers in OonaCode on that PC.`),!1;let o=(E.current.get(t)??0)+1;E.current.set(t,o);let s=wS(m.current,t),c=s?.mcpSwitches;s&&p({type:`session_upsert`,session:{...s,mcpSwitches:n}});try{let r=await e.updateSession(t,{mcpSwitches:n});return E.current.get(t)===o&&p({type:`session_upsert`,session:r}),!0}catch(e){if(E.current.get(t)===o){let e=wS(m.current,t);if(e){let{mcpSwitches:t,...n}=e;p({type:`session_upsert`,session:c?{...n,mcpSwitches:c}:n})}}return i(e,`MCP`),!1}},async setSessionModelSkills(t,n){let a=[...n];if(l(t))return p({type:`draft_patch`,id:t,patch:{modelSkills:a}}),!0;let o=be(t);if(o)return r(`error`,`This chat runs on ${o.hostName} — switch its skills in OonaCode on that PC.`),!1;let s=(D.current.get(t)??0)+1;D.current.set(t,s);let c=wS(m.current,t),u=c?.modelSkills;c&&p({type:`session_upsert`,session:{...c,modelSkills:a}});try{let n=await e.updateSession(t,{modelSkills:a});return D.current.get(t)===s&&p({type:`session_upsert`,session:n}),!0}catch(e){if(D.current.get(t)===s){let e=wS(m.current,t);if(e){let{modelSkills:t,...n}=e;p({type:`session_upsert`,session:u?{...n,modelSkills:u}:n})}}return i(e,`Skills`),!1}},async listChatSkills(t){if(m.current.remote.tabs[t])return`unsupported`;let n=s(t);try{return n?e.listChatSkills?await e.listChatSkills(n.projectDir?{cwd:n.projectDir}:{}):`unsupported`:e.listSessionChatSkills?await e.listSessionChatSkills(t):`unsupported`}catch(e){return e instanceof $h&&e.isUnauthorized&&y.current?.(),rg(e)?`unsupported`:null}},setActiveProvider:re,async inspectProject(t){if(!e.inspectProject)return null;try{return await e.inspectProject({dir:t})}catch(e){return rg(e)||(e instanceof $h&&e.isUnauthorized?y.current?.():i(e,`Folder`)),null}},async attachProject(t,n){let c=n??o();if(!c)return!1;if(s(c))return p({type:`draft_patch`,id:c,patch:{projectDir:t}}),!0;let l=be(c);if(l)return r(`error`,`This chat runs on ${l.hostName} — choose its project folder in OonaCode on that PC.`),!1;if(!e.attachSessionProject)return a(`open a chat in one of your project folders`),!1;try{let n=await e.attachSessionProject(c,{dir:t});return p({type:`session_upsert`,session:n.session}),f(),r(`success`,n.appliesOnNextMessage?`Switched to ${n.session.cwd} — the turn in progress finishes where it started, and your next message runs there with that project's CLAUDE.md and settings`:n.restarted?`Switched to ${n.session.cwd} — this chat restarts with that project's CLAUDE.md and settings loaded, and continues where it left off`:`Switched to ${n.session.cwd} — the next message loads that project's CLAUDE.md and settings`),!0}catch(e){return rg(e)?a(`open a chat in one of your project folders`):i(e,`Project folder`),!1}},async saveSettings(t){try{p({type:`settings`,settings:await e.updateSettings(t)}),r(`success`,`Settings saved`)}catch(e){i(e,`Settings`)}},savePrefs:De,growTranscript(e,t){p({type:`window_grow`,sessionId:e,total:t})},revealTranscript(e,t,n,r){p({type:`window_reveal`,sessionId:e,rendered:t,total:n,...r?{hold:!0}:{}})},trimTranscript(e,t){p({type:`window_trim`,sessionId:e,...t?{force:!0}:{}})},hydrateSession:ke,async catchUpEntries(t){if(l(t))return;let n=be(t);if(n){await we(n.hostId,t);return}let r=m.current.transcripts[t],i=r?.lastSeq??void 0;if(i===void 0&&r?.hydrated){try{await ke(t)}catch(e){e instanceof $h&&e.isUnauthorized&&y.current?.()}return}for(let n=0;n<200;n++){let n;try{n=await e.listEntries(t,{limit:500,...i===void 0?{}:{afterSeq:i}})}catch(e){e instanceof $h&&e.isUnauthorized&&y.current?.();return}if(n.entries.length>0&&p({type:`transcript`,sessionId:t,action:{type:`entries`,entries:n.entries}}),n.nextSeq===null||n.nextSeq===i)return;i=n.nextSeq}},checkUpdates:H,async installUpdate(){if(h.current)return;h.current=!0;let e=typeof window<`u`?window.oonacode:void 0,t=m.current,n=tS(t.update.components.map(e=>e.component),eS(e),{checked:t.update.version!==``,shellEngaged:t.updateInstall.phase!==`idle`&&t.updateInstall.phase!==`checking`});if(n.upToDate){r(`success`,`Everything is up to date`),h.current=!1;return}let i=n.desktop;if(n.terminal&&e?.updateTerminalInstall){p({type:`terminal_update`,terminal:{running:!0,message:``,failed:!1}});try{let t=await e.updateTerminalInstall();if(p({type:`terminal_update`,terminal:{running:!1,message:t.message,failed:!t.ok}}),!t.ok){r(`error`,t.message),h.current=!1;return}if(t.handedOver){r(`info`,t.message);return}t.absent?e.installUpdate&&(i=!0):(r(`success`,t.message),await fe(),await H(!1))}catch(e){let t=$_(e);p({type:`terminal_update`,terminal:{running:!1,message:t,failed:!0}}),r(`error`,`Updating the CLI and host service failed: ${t}`),h.current=!1;return}}if(!i){n.manual.length>0&&r(`info`,`This window cannot install `+n.manual.map(e=>Px[e]).join(`, `)+" — run the installer from the website, or `oona update` in a terminal"),h.current=!1;return}if(!e?.installUpdate){r(`info`,"This window cannot install the app itself — run the installer again, or `oona update` in a terminal"),h.current=!1;return}try{let t=await e.installUpdate();r(t.started?`info`:`error`,t.message),t.started||(h.current=!1)}catch(e){r(`error`,`Update failed: ${$_(e)}`),h.current=!1}},dismissUpdate(){let e=m.current.update.version||null;p({type:`update_dismissed`,version:e}),De({dismissedUpdateVersion:e}),p({type:`dialog`,dialog:`none`})},async login(t){try{return p({type:`account`,account:await e.login(t)}),r(`success`,t.register?`Account created`:`Logged in`),z(),g(),he(),`ok`}catch(e){let n=pg(e,{email:t.email,registered:t.register===!0});return n?(p({type:`email_verification`,pending:n}),`verification_pending`):(i(e,`Login`),`failed`)}},async startAccountLink(){if(!e.startAccountLink)return a(`sign in through your browser`),null;try{let t=await e.startAccountLink({clientKind:NS()});return p({type:`account_link`,link:t}),t.status===`error`&&r(`error`,t.message??`Could not start the sign-in`),t}catch(e){return rg(e)?a(`sign in through your browser`):i(e,`Sign in`),null}},async refreshAccountLink(){if(e.accountLinkStatus)try{let t=await e.accountLinkStatus();p({type:`account_link`,link:t}),t.status===`approved`&&(R(),z(),g())}catch(e){rg(e)||i(e,`Sign in`)}},async cancelAccountLink(){if(!e.cancelAccountLink){p({type:`account_link`,link:{status:`idle`}});return}try{p({type:`account_link`,link:await e.cancelAccountLink()})}catch(e){p({type:`account_link`,link:{status:`idle`}}),rg(e)||i(e,`Sign in`)}},async resendVerification(){let t=m.current.emailVerification;if(!t)return!1;try{let n=await e.resendVerification({email:t.email});return p({type:`email_verification`,pending:{...t,verification:`pending`,resendAt:dg(n.resendAfterSec,Date.now())}}),r(`success`,`Confirmation link sent to ${t.displayEmail}`),!0}catch(e){return rg(e)?r(`error`,`This host build cannot resend the link yet — use "Resend" on the website sign-in page`):i(e,`Resend link`),!1}},dismissEmailVerification(){p({type:`email_verification`,pending:null})},async logout(){try{p({type:`account`,account:await e.logout()}),p({type:`credentials`,credentials:[]})}catch(e){i(e,`Logout`)}},async remoteUnlockHost(t,n){try{let i=await e.remoteUnlockHost(t,n);return i.ok?(r(`info`,`Device unlocked — its sessions are available again.`),he(),!0):(r(`error`,i.error===`host_too_old`?`That PC runs an older OonaCode — update it first.`:i.error===`wrong_keys`?`Wrong password — the device stays locked.`:`Could not unlock: `+(i.error??`unknown`)),!1)}catch(e){return r(`error`,$_(e)),!1}},async lockDevice(){try{let t=await e.lock();p({type:`account`,account:t})}catch(e){r(`error`,$_(e))}},async unlock(t,n={}){try{return p({type:`account`,account:await e.unlock({password:t,...n.keepUnlocked===void 0?{}:{keepUnlocked:n.keepUnlocked}})}),z(),!0}catch(e){if(!n.onError)return i(e,`Unlock`),!1;let t=e instanceof $h&&e.isUnauthorized&&!FS(e);return t&&y.current?.(),n.onError(e instanceof $h&&FS(e)?`Wrong password — the vault stays locked.`:t?`Reconnecting to the OonaCode host — press Unlock again in a moment.`:`Could not unlock: ${$_(e)}`),e instanceof $h&&e.isUnauthorized||b.current?.(e,{source:`action`,action:`Unlock`}),!1}},async completeVaultRekey(t){if(!e.completeVaultRekey)return a(`finish a password reset`),!1;try{let n=await e.completeVaultRekey({password:t});return p({type:`account`,account:n.account}),p({type:`recovery_key`,recoveryKey:{code:n.recoveryCode,devicesSignedOut:n.devicesSignedOut,warning:n.warning??null}}),r(n.warning?`info`:`success`,n.warning?`Vault moved to your new password — with a warning, see your Recovery Key below`:`Vault moved to your new password`),z(),g(),!0}catch(e){return rg(e)?a(`finish a password reset`):i(e,`Move vault`),!1}},async revokeVaultRekey(t){if(!e.revokeVaultRekey)return a(`abandon a password reset`),!1;try{let n=await e.revokeVaultRekey({acknowledgeDataLoss:nc,password:t});return p({type:`account`,account:n.account}),p({type:`credentials`,credentials:[]}),r(`info`,`Vault discarded — every saved key is gone; your chats are untouched. Unlock with your new password to start a fresh vault.`),!0}catch(e){return rg(e)?a(`abandon a password reset`):i(e,`Discard vault`),!1}},dismissRecoveryKey(){p({type:`recovery_key`,recoveryKey:null})},async setDeviceUnlock(t,n){if(!e.setDeviceUnlock)return a(`keep itself unlocked`),!1;try{let i=await e.setDeviceUnlock({enabled:t,...n?{password:n}:{}});return p({type:`account`,account:i}),r(`success`,t?`This PC will stay unlocked after a restart`:`This PC will ask for your password after a restart`),!0}catch(e){return rg(e)?a(`keep itself unlocked`):i(e,`Keep me unlocked`),!1}},async probeCredential(t,n){try{let r=await e.probeCredential(t,n);return{ok:r.ok,...r.error?{error:r.error}:{}}}catch(e){return{ok:!1,error:$_(e)}}},async addCredential(t){try{return await e.addCredential(t),r(`success`,`Credential saved to your vault`),await z(),g(),!0}catch(e){return i(e,`Add credential`),!1}},async deleteCredential(t){try{await e.deleteCredential(t),r(`info`,`Credential revoked on all devices`),await z(),g()}catch(e){i(e,`Revoke`)}},async testCredential(t){try{let n=await e.testCredential(t);r(n.ok?`success`:`error`,n.ok?`Credential works (${n.latencyMs??`?`} ms)`:`Test failed: ${n.error??`unknown error`}`)}catch(e){i(e,`Test`)}},async testProvider(t){try{let n=await e.testProvider(t);r(n.ok?`success`:`error`,n.ok?`${t} reachable (${n.latencyMs??`?`} ms)`:`${t}: ${n.error??`test failed`}`),g()}catch(e){i(e,`Test`)}},async syncNow(){try{let t=await e.syncNow();r(t.ok?`success`:`error`,t.ok?`Vault synced (rev ${t.rev??`?`})`:`Sync failed: ${t.error??`unknown`}`),R(),z()}catch(e){i(e,`Sync`)}},toast:r,dismissToast(e){p({type:`dismiss_toast`,id:e})},openDialog(e,t){p({type:`dialog`,dialog:e,connectProviderId:t??null})},openProviderConnect(e){p({type:`connect_provider`,providerId:e})},openSettings(e){p({type:`settings_section`,section:e}),p({type:`dialog`,dialog:`settings`})},openClaudeLogin(e){p({type:`claude_login_mode`,mode:e}),p({type:`connect_provider`,providerId:null}),p({type:`dialog`,dialog:`claude-login`})},openOauthLogin(e){p({type:`connect_provider`,providerId:null}),p({type:`dialog`,dialog:`oauth-login`}),p({type:`oauth_login_provider`,providerId:e})},setSidebar(e){p({type:`sidebar`,open:e})},setMediaPanel(e){p({type:`media_panel`,open:e})},openFile(e,t){let n=t??m.current.currentSessionId;n&&p({type:`file_open`,sessionId:n,path:e})},closeFile(e,t){let n=t??m.current.currentSessionId;n&&p({type:`file_close`,sessionId:n,path:e})},activateFile(e,t){let n=t??m.current.currentSessionId;n&&p({type:`file_activate`,sessionId:n,path:e})},showChat(e){let t=e??m.current.currentSessionId;t&&p({type:`file_show_chat`,sessionId:t})}}},[e,t,n]);(0,v.useEffect)(()=>{let e=uv(x.current);e&&p({type:`prefs`,prefs:e})},[]),(0,v.useEffect)(()=>{let e=!1,n=t.onStatus((t,n)=>{p({type:`connection`,status:t,detail:n??null}),t===`unauthorized`&&y.current?.(),t===`open`&&e&&(N.refreshInfo(),N.refreshVaultProjects(),N.refreshAgentTools(),N.refreshMcpServers(),p({type:`conversations_changed`,conversationIds:null,sessionIds:null}),p({type:`chat_abouts_changed`,sessionIds:null}),p({type:`next_prompts_changed`,sessionIds:null})),t===`open`&&(e=!0)}),r=(e,t)=>{iS(e,m.current.prefs)&&(t.sessionId&&m.current.elsewhere[t.sessionId]||oS(aS(e,t),sS()))},i=e=>{let t=m.current.transcripts[e]?.session??m.current.sessions.find(t=>t.id===e);return t?Q_(t):`OonaCode session`},a=e=>{let n=Date.now(),a=e.type===`session_state`?wS(m.current,e.session.id):void 0;for(let t of yS(e,n))p(t);if(e.type===`session_state`&&Sx(a,e.session)&&N.refreshPlanSoon(),e.type===`permission_request`){let t=`${e.sessionId}:${e.request.requestId}`;if(O.current.has(t)||(O.current.size>=lS&&O.current.clear(),O.current.add(t),e.settled===!0))return;r(`permissionRequired`,{sessionTitle:i(e.sessionId),toolName:e.request.toolName,sessionId:e.sessionId})}else if(e.type===`turn_finished`)r(`agentFinished`,{sessionTitle:i(e.sessionId),isError:e.result.isError,sessionId:e.sessionId});else if(e.type===`error`)r(`errorOccurred`,{sessionTitle:e.sessionId?i(e.sessionId):`OonaCode`,detail:e.code,...e.sessionId?{sessionId:e.sessionId}:{}});else if(e.type===`scheduled_tasks_changed`)p({type:`scheduled_tasks_changed`});else if(e.type===`new_chat_started`)wS(m.current,e.newSessionId)||p({type:`session_upsert`,session:e.session}),e.answeredBy!==null&&e.answeredBy===t.clientId&&p({type:`select_session`,id:e.newSessionId,near:e.sessionId});else if(e.type===`session_list_changed`)N.refreshSessions(),e.reason===`deleted`&&(p({type:`session_removed`,id:e.sessionId}),N.setPinned(`chat`,e.sessionId,!1));else if(e.type===`account_changed`&&e.reason===`agent_tools`)N.refreshAgentTools(),N.refreshMcpServers();else if(e.type===`account_changed`)N.refreshAccount(),N.refreshPlan(),N.refreshProviders(),N.refreshAgentTools(),N.refreshMcpServers(),N.refreshInfo(),e.reason!==`provider`&&N.refreshCredentials(),e.reason!==`provider`&&(N.refreshHosts(),N.refreshClaudeSubscription(),N.refreshVaultProjects());else if(e.type===`welcome`){N.refreshSessions();for(let e of Oy(m.current.layout))N.catchUpEntries(e)}},o=og({isStreamFrame:_S,deliver:e=>{for(let t of e)a(t)},batchMs:c,isHidden:vS}),s=t.onAny(e=>o.push(e)),l=()=>{vS()||o.flush()};return typeof document<`u`&&document.addEventListener(`visibilitychange`,l),t.connect(),()=>{n(),s(),typeof document<`u`&&document.removeEventListener(`visibilitychange`,l),o.dispose(),t.close()}},[t,N,c]),(0,v.useEffect)(()=>{if(typeof window>`u`||typeof document>`u`)return;let e=()=>N.refreshPlanSoon(),t=()=>{document.visibilityState===`visible`&&N.refreshPlanSoon()};return window.addEventListener(`focus`,e),document.addEventListener(`visibilitychange`,t),()=>{window.removeEventListener(`focus`,e),document.removeEventListener(`visibilitychange`,t)}},[N]),(0,v.useEffect)(()=>{N.refreshInfo(),N.refreshPlan(),N.refreshSessions(),N.refreshProjects(),N.refreshProviders(),N.refreshAgentTools(),N.refreshMcpServers(),N.refreshSettings(),N.refreshAccount(),N.refreshCredentials(),N.refreshHosts()},[N]),(0,v.useEffect)(()=>{r&&p({type:`select_session`,id:r})},[r]);let[P,F]=(0,v.useState)(()=>typeof window<`u`&&window.oonacode?.getWindowInit?void 0:null);(0,v.useEffect)(()=>{let e=typeof window<`u`?window.oonacode:void 0;if(!e?.getWindowInit)return;let t=!0;return e.getWindowInit().then(e=>{t&&F(e??null)},()=>{t&&F(null)}),()=>{t=!1}},[]),(0,v.useEffect)(()=>{let e=typeof window<`u`?window.oonacode:void 0;if(e?.onWindowRegistry)return e.onWindowRegistry(e=>p({type:`elsewhere`,owners:e.owners}))},[]),(0,v.useEffect)(()=>{let e=typeof window<`u`?window.oonacode:void 0;if(e?.onAcceptTab)return e.onAcceptTab(e=>{let t=e.x!==null&&e.y!==null&&typeof document<`u`?Gb(document,e.x,e.y):null;N.adoptTab(e.tab,t)})},[N]);let I=f.currentSessionId,te=I?f.drafts[I]:void 0,ne=I?wS(f,I)??null:null,re=te?ov(te):ne?Q_(ne):null;(0,v.useEffect)(()=>{typeof document>`u`||(document.title=re?`${re} — OonaCode`:`OonaCode`)},[re]);let L=f.tabs,R=f.layout,z=f.drafts,B=f.remote.tabs;(0,v.useEffect)(()=>{let e=typeof window<`u`?window.oonacode:void 0;if(!e?.reportWindowState||(d===`popout`?!he.current:!oe.current))return;let t={drafts:z,remoteTabs:B,unsent:{},files:{}};e.reportWindowState({tabs:L.ids.map(e=>Pb(Nb(t,e))),layout:ob(R),activeId:L.activeId,title:re})},[L,R,z,B,re,d]);let ie=(0,v.useRef)(!1),ae=f.tabs.ids.length;(0,v.useEffect)(()=>{if(d===`popout`){if(ae>0){ie.current=!0;return}!ie.current||typeof window>`u`||window.close()}},[d,ae]);let oe=(0,v.useRef)(!1),se=(0,v.useRef)(!1),ce=(0,v.useRef)(null),le=(0,v.useRef)(!0);(0,v.useEffect)(()=>(le.current=!0,()=>{le.current=!1}),[]);let ue=f.sessionListLoaded,de=f.remote.loaded,fe=f.settings!==null,[pe,me]=(0,v.useState)(!1);(0,v.useEffect)(()=>{if(de&&fe||pe)return;let e=setTimeout(()=>me(!0),uS);return()=>clearTimeout(e)},[de,fe,pe]),(0,v.useEffect)(()=>{if(oe.current||!ue||d===`popout`||P===void 0||!fe||!de&&!pe)return;oe.current=!0;let t=hy(f.prefs),n=new Set(f.sessions.map(e=>e.id)),r=my(f.prefs).filter(({id:e})=>!n.has(e)).map(({id:e,title:t},n)=>({...ev(e,n),title:t})),i=new Set(r.map(e=>e.id));if(t.ids.length===0)return;let a=py(f.prefs),o=t.ids.filter(e=>a[e]!==void 0),s=new Set(P?.heldElsewhere??[]),c=e=>{let n=uy(t,[...f.sessions.map(e=>e.id),...o,...i,...e].filter(e=>!s.has(e))),c=[...n.ids],l=m.current.currentSessionId;if(l&&!c.includes(l)&&c.push(l),c.length!==0){ce.current=m.current.layout,p({type:`restore_tabs`,ids:c,activeId:l??n.activeId,drafts:r.filter(e=>c.includes(e.id)),layout:f.prefs.editorLayout});for(let e of c){let t=a[e];t!==void 0&&N.openRemoteSession(t,e,{focus:!1})}}},l=t.ids.filter(e=>!n.has(e)&&a[e]===void 0&&!i.has(e));if(l.length===0){c([]);return}se.current=!0,Promise.all(l.map(t=>e.getSession(t).then(()=>t,e=>e instanceof $h&&e.status===404?null:t))).then(e=>{se.current=!1,le.current&&c(e.filter(e=>e!==null))})},[ue,de,pe,fe,f.prefs,f.sessions,e,N,d,P]);let he=(0,v.useRef)(!1);(0,v.useEffect)(()=>{if(d!==`popout`||he.current||P===void 0||!ue)return;he.current=!0;let e=P?.tabs??[];if(e.length===0)return;let t=new Set(m.current.sessions.map(e=>e.id));p({type:`restore_tabs`,ids:e.map(e=>e.id),activeId:P?.activeId??e[e.length-1].id,drafts:e.filter(e=>e.draft&&!t.has(e.id)).map(e=>Ib(e)),layout:P?.layout??null});for(let n of e){n.kind===`remote`&&n.hostId&&N.openRemoteSession(n.hostId,n.id,{focus:!1,draft:n.draft!==void 0&&!t.has(n.id)}),n.unsentText&&p({type:`unsent`,sessionId:n.id,message:{text:n.unsentText,attachments:[]}});for(let e of n.files?.open??[])p({type:`file_open`,sessionId:n.id,path:e});n.files&&n.files.open.length>0&&(n.files.active?p({type:`file_activate`,sessionId:n.id,path:n.files.active}):p({type:`file_show_chat`,sessionId:n.id}))}},[d,P,ue,N]);let ge=f.tabs,_e=f.layout,ve=f.prefs,ye=f.remote.tabs,be=f.drafts,xe=f.settings!==null;(0,v.useEffect)(()=>{if(!xe||d===`popout`||!oe.current||se.current)return;if(ce.current!==null){if(_e===ce.current)return;ce.current=null}let e={};for(let t of ge.ids){let n=ye[t];n&&(e[t]=n.hostId)}let t=ob(_e),n=!sb(t,ve.editorLayout??null);!vy(ge,ve,e,be)&&!n||N.savePrefs({...fy(ge,e,be),editorLayout:t})},[ge,_e,ve,ye,be,xe,ue,N,d]);let Ce=f.prefs.pinned.filter(e=>e.kind===`chat`).map(e=>e.id).join(`,`),we=(0,v.useRef)(new Set),Te=f.sessions,Ee=f.search.trim()!==``;(0,v.useEffect)(()=>{if(!ue||!xe||Ee||Ce===``)return;let t=new Set(Te.map(e=>e.id));for(let n of Ce.split(`,`)){let r=m.current;t.has(n)||r.pinnedRows[n]||r.drafts[n]||r.remote.tabs[n]||we.current.has(n)||(we.current.add(n),e.getSession(n).then(e=>p({type:`pinned_row`,session:e}),e=>{e instanceof $h&&e.status===404?N.setPinned(`chat`,n,!1):we.current.delete(n)}))}},[Ce,Te,ue,xe,Ee,e,N]);let De=f.tabs.ids.join(`,`);(0,v.useEffect)(()=>{let e=De?De.split(`,`):[];for(let n of e){if(m.current.remote.tabs[n]||m.current.drafts[n])continue;let e=m.current.transcripts[n];t.subscribe(n,e?.lastSeq??void 0),!e?.hydrated&&(p({type:`transcript_loading`,sessionId:n,loading:!0}),(async()=>{try{await N.hydrateSession(n)}catch(e){e instanceof $h&&e.isUnauthorized?y.current?.():N.toast(`error`,`Could not load session: ${$_(e)}`)}finally{p({type:`transcript_loading`,sessionId:n,loading:!1})}})())}return()=>{for(let n of e){if(m.current.tabs.ids.includes(n)||m.current.remote.tabs[n])continue;let e=m.current.transcripts[n];(!e||e.status===`idle`||e.status===`error`)&&t.unsubscribe(n)}}},[De,e,t,N]),(0,v.useEffect)(()=>{if(n)return()=>n.close()},[n]);let[Oe,ke]=(0,v.useState)(()=>Cb());(0,v.useEffect)(()=>{if(typeof window>`u`)return;let e=()=>ke(Cb());return window.addEventListener(`focus`,e),window.addEventListener(`blur`,e),document.addEventListener(`visibilitychange`,e),()=>{window.removeEventListener(`focus`,e),window.removeEventListener(`blur`,e),document.removeEventListener(`visibilitychange`,e)}},[]);let Ae=(0,v.useRef)(new Map),je=f.page===null?null:f.pageGroup&&f.layout.groups[f.pageGroup]?f.pageGroup:f.layout.focused,Me=Oe?xb(f.layout,f.files,je).filter(e=>!f.remote.tabs[e]&&!f.drafts[e]).map(e=>{let t=f.transcripts[e]?.session??f.sessions.find(t=>t.id===e)??null;return t?.finishedUnseen?`${e}@${t.finishedUnseen.at}`:null}).filter(e=>e!==null).join(`,`):``;(0,v.useEffect)(()=>{if(!Me||!e.markSessionSeen)return;let t=setTimeout(()=>{for(let t of Me.split(`,`)){let n=t.indexOf(`@`),r=t.slice(0,n),i=t.slice(n+1);Ae.current.get(r)!==i&&(Ae.current.set(r,i),e.markSessionSeen(r).catch(()=>{Ae.current.get(r)===i&&Ae.current.delete(r)}))}},400);return()=>clearTimeout(t)},[Me,e]);let Ne=f.settings?.theme??`system`,Pe=f.prefs.themeColors;(0,v.useEffect)(()=>{if(typeof document>`u`)return;let e=document.documentElement,t=typeof window.matchMedia==`function`?window.matchMedia(`(prefers-color-scheme: dark)`):null,n=()=>{let n=Ne===`dark`?`dark`:Ne===`light`?`light`:t?.matches?`dark`:`light`,r=Pe[n];for(let t of hl){let n=r[t];n?e.style.setProperty(`--${t}`,n):e.style.removeProperty(`--${t}`)}};if(n(),!(Ne!==`system`||!t||typeof t.addEventListener!=`function`))return t.addEventListener(`change`,n),()=>t.removeEventListener(`change`,n)},[Ne,Pe]),(0,v.useEffect)(()=>{if(typeof document>`u`)return;let e=document.documentElement;Ne===`system`?e.removeAttribute(`data-theme`):e.setAttribute(`data-theme`,Ne),window.oonacode?.setTheme?.(Ne)},[Ne]);let Le=f.account?.gatewayUrl??f.settings?.gatewayUrl??null,V=N.checkUpdates,Re=(0,v.useRef)(0);(0,v.useEffect)(()=>{if(!Le)return;let e=()=>{Re.current=Date.now(),V(!1)};e();let t=setInterval(e,bS),n=()=>{typeof document<`u`&&document.visibilityState===`hidden`||Date.now()-Re.current<3e5||e()};return window.addEventListener(`focus`,n),document.addEventListener(`visibilitychange`,n),()=>{clearInterval(t),window.removeEventListener(`focus`,n),document.removeEventListener(`visibilitychange`,n)}},[Le,V]);let ze=N.openDialog,Be=N.newTab,Ve=N.savePrefs,He=(0,v.useCallback)(e=>{switch(kx(),e){case`sign-in`:m.current.account?.loggedIn&&ze(`account`);break;case`settings`:ze(`settings`);break;case`new-tab`:Be();break;case`new-project`:m.current.account?.loggedIn&&(p({type:`projects_new`}),ze(`projects`));break;case`check-updates`:V(!0);break;case`import-chats`:m.current.account?.loggedIn&&ze(`import-claude`);break;case`export-chats`:m.current.account?.loggedIn&&ze(`export-chats`);break;case`toggle-session-panel`:Ve({sessionPanelOpen:!m.current.prefs.sessionPanelOpen});break;case`toggle-sidebar`:N.toggleSidebarPinned();break;case`split-right`:N.splitTab(`right`);break;case`split-down`:N.splitTab(`bottom`);break;case`move-to-new-window`:{let e=m.current.currentSessionId;e&&N.moveTabToNewWindow(e);break}case`move-to-main-window`:{let e=m.current.currentSessionId;e&&N.moveTabToMainWindow(e);break}case`conversations`:ze(`conversations`);break;case`chat-abouts`:ze(`chat-abouts`);break;case`project-manager`:ze(`project-manager`)}},[ze,Be,V,Ve,N]);(0,v.useEffect)(()=>{let e=typeof window<`u`?window.oonacode:void 0;if(e?.onMenuCommand)return e.onMenuCommand(He)},[He]),(0,v.useEffect)(()=>{let e=window.oonacode;if(e?.onOpenSession)return e.onOpenSession(e=>{if(m.current.remote.tabs[e]||m.current.drafts[e]){N.selectSession(e);return}!m.current.sessions.some(t=>t.id===e)&&!m.current.transcripts[e]||N.selectSession(e)})},[N]),(0,v.useEffect)(()=>{let e=typeof window<`u`?window.oonacode:void 0;if(e?.onUpdateEvent)return e.onUpdateEvent(e=>p({type:`update_event`,event:e}))},[]);let Ue=(0,v.useMemo)(()=>({state:f,dispatch:p,actions:N,api:e,socket:t}),[f,N,e,t]);return(0,K.jsx)(TS.Provider,{value:Ue,children:u})}var RS=h(),zS=`inline-block shrink-0`;function BS(e){return!!e&&/(^|\s)(w-|h-|size-|min-w-|min-h-)/.test(e)}var VS=`w-4 h-4`;function J(e,{className:t,title:n},r=`0 0 24 24`){return(0,K.jsxs)(`svg`,{className:G(zS,BS(t)?``:VS,t),width:`1em`,height:`1em`,viewBox:r,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":!n||void 0,role:n?`img`:void 0,children:[n?(0,K.jsx)(`title`,{children:n}):null,e]})}var Y={Menu:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`line`,{x1:`3`,y1:`6`,x2:`21`,y2:`6`}),(0,K.jsx)(`line`,{x1:`3`,y1:`12`,x2:`21`,y2:`12`}),(0,K.jsx)(`line`,{x1:`3`,y1:`18`,x2:`21`,y2:`18`})]}),e),More:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`circle`,{cx:`12`,cy:`5`,r:`1.6`}),(0,K.jsx)(`circle`,{cx:`12`,cy:`12`,r:`1.6`}),(0,K.jsx)(`circle`,{cx:`12`,cy:`19`,r:`1.6`})]}),e),Plus:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),(0,K.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})]}),e),Send:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`line`,{x1:`22`,y1:`2`,x2:`11`,y2:`13`}),(0,K.jsx)(`polygon`,{points:`22 2 15 22 11 13 2 9 22 2`})]}),e),Stop:e=>J((0,K.jsx)(`rect`,{x:`6`,y:`6`,width:`12`,height:`12`,rx:`2`}),e),Chevron:e=>J((0,K.jsx)(`polyline`,{points:e.open?`6 9 12 15 18 9`:`9 6 15 12 9 18`}),e),Settings:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`}),(0,K.jsx)(`path`,{d:`M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09a1.65 1.65 0 0 0-1-1.51 1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09a1.65 1.65 0 0 0 1.51-1 1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z`})]}),e),User:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2`}),(0,K.jsx)(`circle`,{cx:`12`,cy:`7`,r:`4`})]}),e),Stethoscope:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M4.8 2.3A.3.3 0 1 0 5 2H4a2 2 0 0 0-2 2v5a6 6 0 0 0 6 6 6 6 0 0 0 6-6V4a2 2 0 0 0-2-2h-1a.2.2 0 1 0 .3.3`}),(0,K.jsx)(`path`,{d:`M8 15v1a6 6 0 0 0 6 6 6 6 0 0 0 6-6v-4`}),(0,K.jsx)(`circle`,{cx:`20`,cy:`10`,r:`2`})]}),e),Copy:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`rect`,{x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`}),(0,K.jsx)(`path`,{d:`M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1`})]}),e),Check:e=>J((0,K.jsx)(`polyline`,{points:`20 6 9 17 4 12`}),e),Reply:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`polyline`,{points:`9 17 4 12 9 7`}),(0,K.jsx)(`path`,{d:`M20 18v-2a4 4 0 0 0-4-4H4`})]}),e),Clock:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`}),(0,K.jsx)(`polyline`,{points:`12 7 12 12 15 14`})]}),e),X:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),(0,K.jsx)(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})]}),e),Alert:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z`}),(0,K.jsx)(`line`,{x1:`12`,y1:`9`,x2:`12`,y2:`13`}),(0,K.jsx)(`line`,{x1:`12`,y1:`17`,x2:`12.01`,y2:`17`})]}),e),Bug:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M8 2l1.88 1.88`}),(0,K.jsx)(`path`,{d:`M14.12 3.88L16 2`}),(0,K.jsx)(`path`,{d:`M9 7.13v-1a3.003 3.003 0 1 1 6 0v1`}),(0,K.jsx)(`path`,{d:`M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6z`}),(0,K.jsx)(`path`,{d:`M12 20v-9`}),(0,K.jsx)(`path`,{d:`M6.53 9C4.6 8.8 3 7.1 3 5`}),(0,K.jsx)(`path`,{d:`M6 13H2`}),(0,K.jsx)(`path`,{d:`M3 21c0-2.1 1.7-3.9 3.8-4`}),(0,K.jsx)(`path`,{d:`M20.97 5c0 2.1-1.6 3.8-3.5 4`}),(0,K.jsx)(`path`,{d:`M22 13h-4`}),(0,K.jsx)(`path`,{d:`M17.2 17c2.1.1 3.8 1.9 3.8 4`})]}),e),Spinner:e=>J((0,K.jsx)(`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`}),{...e,className:G(`spin`,e.className??`w-4 h-4`)}),Tool:e=>J((0,K.jsx)(`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z`}),e),Skill:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M12 3l1.9 4.6 4.6 1.9-4.6 1.9L12 16l-1.9-4.6L5.5 9.5l4.6-1.9z`}),(0,K.jsx)(`path`,{d:`M19 15l.8 1.7 1.7.8-1.7.8L19 20l-.8-1.7-1.7-.8 1.7-.8z`})]}),e),Brain:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M9.5 2a2.5 2.5 0 0 1 2.5 2.5V20a2.5 2.5 0 0 1-5 0 2.5 2.5 0 0 1-2.5-2.5v-1A2.5 2.5 0 0 1 2 14v-1a2.5 2.5 0 0 1 2.5-2.5V9A2.5 2.5 0 0 1 7 6.5V4.5A2.5 2.5 0 0 1 9.5 2z`}),(0,K.jsx)(`path`,{d:`M14.5 2A2.5 2.5 0 0 0 12 4.5V20a2.5 2.5 0 0 0 5 0 2.5 2.5 0 0 0 2.5-2.5v-1A2.5 2.5 0 0 0 22 14v-1a2.5 2.5 0 0 0-2.5-2.5V9A2.5 2.5 0 0 0 17 6.5V4.5A2.5 2.5 0 0 0 14.5 2z`})]}),e),ArrowDown:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),(0,K.jsx)(`polyline`,{points:`19 12 12 19 5 12`})]}),e),Paperclip:e=>J((0,K.jsx)(`path`,{d:`M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48`}),e),Folder:e=>J((0,K.jsx)(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`}),e),Project:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`polygon`,{points:`12 2 2 7 12 12 22 7 12 2`}),(0,K.jsx)(`polyline`,{points:`2 17 12 22 22 17`}),(0,K.jsx)(`polyline`,{points:`2 12 12 17 22 12`})]}),e),File:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z`}),(0,K.jsx)(`polyline`,{points:`14 2 14 8 20 8`})]}),e),ChevronRight:e=>J((0,K.jsx)(`polyline`,{points:`9 18 15 12 9 6`}),e),Play:e=>J((0,K.jsx)(`polygon`,{points:`6 4 20 12 6 20 6 4`}),e),Pause:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`rect`,{x:`6`,y:`4`,width:`4`,height:`16`,rx:`1`}),(0,K.jsx)(`rect`,{x:`14`,y:`4`,width:`4`,height:`16`,rx:`1`})]}),e),SkipBack:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`polygon`,{points:`19 20 9 12 19 4 19 20`}),(0,K.jsx)(`line`,{x1:`5`,y1:`19`,x2:`5`,y2:`5`})]}),e),SkipForward:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`polygon`,{points:`5 4 15 12 5 20 5 4`}),(0,K.jsx)(`line`,{x1:`19`,y1:`5`,x2:`19`,y2:`19`})]}),e),Music:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M9 18V5l12-2v13`}),(0,K.jsx)(`circle`,{cx:`6`,cy:`18`,r:`3`}),(0,K.jsx)(`circle`,{cx:`18`,cy:`16`,r:`3`})]}),e),Speaker:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M11 5 6 9H2v6h4l5 4V5z`}),(0,K.jsx)(`path`,{d:`M15.54 8.46a5 5 0 0 1 0 7.07`}),(0,K.jsx)(`path`,{d:`M19.07 4.93a10 10 0 0 1 0 14.14`})]}),e),Film:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`rect`,{x:`2`,y:`2`,width:`20`,height:`20`,rx:`2.18`,ry:`2.18`}),(0,K.jsx)(`line`,{x1:`7`,y1:`2`,x2:`7`,y2:`22`}),(0,K.jsx)(`line`,{x1:`17`,y1:`2`,x2:`17`,y2:`22`}),(0,K.jsx)(`line`,{x1:`2`,y1:`12`,x2:`22`,y2:`12`}),(0,K.jsx)(`line`,{x1:`2`,y1:`7`,x2:`7`,y2:`7`}),(0,K.jsx)(`line`,{x1:`2`,y1:`17`,x2:`7`,y2:`17`}),(0,K.jsx)(`line`,{x1:`17`,y1:`17`,x2:`22`,y2:`17`}),(0,K.jsx)(`line`,{x1:`17`,y1:`7`,x2:`22`,y2:`7`})]}),e),Image:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,ry:`2`}),(0,K.jsx)(`circle`,{cx:`8.5`,cy:`8.5`,r:`1.5`}),(0,K.jsx)(`polyline`,{points:`21 15 16 10 5 21`})]}),e),ExternalLink:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`}),(0,K.jsx)(`polyline`,{points:`15 3 21 3 21 9`}),(0,K.jsx)(`line`,{x1:`10`,y1:`14`,x2:`21`,y2:`3`})]}),e),ExpandAll:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`polyline`,{points:`7 5 12 10 17 5`}),(0,K.jsx)(`polyline`,{points:`7 13 12 18 17 13`})]}),e),CollapseAll:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`polyline`,{points:`7 11 12 6 17 11`}),(0,K.jsx)(`polyline`,{points:`7 19 12 14 17 19`})]}),e),Palette:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M12 3a9 9 0 1 0 0 18c.9 0 1.6-.7 1.6-1.6 0-.4-.2-.8-.4-1.1-.3-.3-.4-.7-.4-1.1 0-.9.7-1.6 1.6-1.6H16a5 5 0 0 0 5-5c0-3.9-4-7.6-9-7.6Z`}),(0,K.jsx)(`circle`,{cx:`7.5`,cy:`11.5`,r:`1`}),(0,K.jsx)(`circle`,{cx:`10.5`,cy:`7.5`,r:`1`}),(0,K.jsx)(`circle`,{cx:`15.5`,cy:`8.5`,r:`1`})]}),e),Bot:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`rect`,{x:`3`,y:`11`,width:`18`,height:`10`,rx:`2`}),(0,K.jsx)(`circle`,{cx:`12`,cy:`5`,r:`2`}),(0,K.jsx)(`path`,{d:`M12 7v4`}),(0,K.jsx)(`line`,{x1:`8`,y1:`16`,x2:`8`,y2:`16`}),(0,K.jsx)(`line`,{x1:`16`,y1:`16`,x2:`16`,y2:`16`})]}),e),Trash:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`polyline`,{points:`3 6 5 6 21 6`}),(0,K.jsx)(`path`,{d:`M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6`}),(0,K.jsx)(`path`,{d:`M10 11v6M14 11v6`}),(0,K.jsx)(`path`,{d:`M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2`})]}),e),Refresh:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`polyline`,{points:`23 4 23 10 17 10`}),(0,K.jsx)(`path`,{d:`M20.49 15a9 9 0 1 1-2.12-9.36L23 10`})]}),e),Search:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,K.jsx)(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})]}),e),Shield:e=>J((0,K.jsx)(`path`,{d:`M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z`}),e),Coins:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`ellipse`,{cx:`8`,cy:`6`,rx:`5`,ry:`2.5`}),(0,K.jsx)(`path`,{d:`M3 6v4c0 1.4 2.2 2.5 5 2.5s5-1.1 5-2.5V6`}),(0,K.jsx)(`path`,{d:`M3 10v4c0 1.4 2.2 2.5 5 2.5 1 0 1.9-.13 2.7-.36`}),(0,K.jsx)(`circle`,{cx:`16`,cy:`15`,r:`5`}),(0,K.jsx)(`path`,{d:`M16 13v4M14.5 15h3`})]}),e),Lock:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`rect`,{x:`5`,y:`11`,width:`14`,height:`9`,rx:`2`}),(0,K.jsx)(`path`,{d:`M8 11V7a4 4 0 0 1 8 0v4`})]}),e),Fork:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`circle`,{cx:`12`,cy:`18`,r:`3`}),(0,K.jsx)(`circle`,{cx:`6`,cy:`6`,r:`3`}),(0,K.jsx)(`circle`,{cx:`18`,cy:`6`,r:`3`}),(0,K.jsx)(`path`,{d:`M18 9a9 9 0 0 1-9 9M6 9a9 9 0 0 0 9 9`})]}),e),Edit:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`}),(0,K.jsx)(`path`,{d:`M18.5 2.5a2.12 2.12 0 0 1 3 3L12 15l-4 1 1-4z`})]}),e),Upload:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}),(0,K.jsx)(`polyline`,{points:`17 8 12 3 7 8`}),(0,K.jsx)(`line`,{x1:`12`,y1:`3`,x2:`12`,y2:`15`})]}),e),Download:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}),(0,K.jsx)(`polyline`,{points:`7 10 12 15 17 10`}),(0,K.jsx)(`line`,{x1:`12`,y1:`15`,x2:`12`,y2:`3`})]}),e),Info:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`}),(0,K.jsx)(`line`,{x1:`12`,y1:`16`,x2:`12`,y2:`12`}),(0,K.jsx)(`line`,{x1:`12`,y1:`8`,x2:`12.01`,y2:`8`})]}),e),Panel:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`}),(0,K.jsx)(`line`,{x1:`15`,y1:`3`,x2:`15`,y2:`21`})]}),e),LogIn:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`}),(0,K.jsx)(`polyline`,{points:`10 17 15 12 10 7`}),(0,K.jsx)(`line`,{x1:`15`,y1:`12`,x2:`3`,y2:`12`})]}),e),Globe:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`}),(0,K.jsx)(`line`,{x1:`2`,y1:`12`,x2:`22`,y2:`12`}),(0,K.jsx)(`path`,{d:`M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z`})]}),e),Monitor:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`rect`,{x:`2`,y:`3`,width:`20`,height:`14`,rx:`2`}),(0,K.jsx)(`line`,{x1:`8`,y1:`21`,x2:`16`,y2:`21`}),(0,K.jsx)(`line`,{x1:`12`,y1:`17`,x2:`12`,y2:`21`})]}),e),Bell:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M18 8a6 6 0 0 0-12 0c0 7-3 9-3 9h18s-3-2-3-9`}),(0,K.jsx)(`path`,{d:`M13.73 21a2 2 0 0 1-3.46 0`})]}),e),Sliders:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`line`,{x1:`4`,y1:`21`,x2:`4`,y2:`14`}),(0,K.jsx)(`line`,{x1:`4`,y1:`10`,x2:`4`,y2:`3`}),(0,K.jsx)(`line`,{x1:`12`,y1:`21`,x2:`12`,y2:`12`}),(0,K.jsx)(`line`,{x1:`12`,y1:`8`,x2:`12`,y2:`3`}),(0,K.jsx)(`line`,{x1:`20`,y1:`21`,x2:`20`,y2:`16`}),(0,K.jsx)(`line`,{x1:`20`,y1:`12`,x2:`20`,y2:`3`}),(0,K.jsx)(`line`,{x1:`1`,y1:`14`,x2:`7`,y2:`14`}),(0,K.jsx)(`line`,{x1:`9`,y1:`8`,x2:`15`,y2:`8`}),(0,K.jsx)(`line`,{x1:`17`,y1:`16`,x2:`23`,y2:`16`})]}),e),Pin:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M12 17v5`}),(0,K.jsx)(`path`,{d:`M9 10.76V6h6v4.76a2 2 0 0 0 1.11 1.79l1.78.9A2 2 0 0 1 19 15.24V16H5v-.76a2 2 0 0 1 1.11-1.79l1.78-.9A2 2 0 0 0 9 10.76z`}),(0,K.jsx)(`path`,{d:`M8 3h8`})]}),e),PanelLeft:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`rect`,{x:`3`,y:`4`,width:`18`,height:`16`,rx:`2`}),(0,K.jsx)(`line`,{x1:`9`,y1:`4`,x2:`9`,y2:`20`})]}),e),Columns:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`rect`,{x:`3`,y:`4`,width:`18`,height:`16`,rx:`2`}),(0,K.jsx)(`line`,{x1:`12`,y1:`4`,x2:`12`,y2:`20`})]}),e),WindowOut:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M14 4h6v6`}),(0,K.jsx)(`line`,{x1:`20`,y1:`4`,x2:`11`,y2:`13`}),(0,K.jsx)(`path`,{d:`M18 14v4a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4`})]}),e),GitBranch:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`line`,{x1:`6`,y1:`3`,x2:`6`,y2:`15`}),(0,K.jsx)(`circle`,{cx:`18`,cy:`6`,r:`3`}),(0,K.jsx)(`circle`,{cx:`6`,cy:`18`,r:`3`}),(0,K.jsx)(`path`,{d:`M18 9a9 9 0 0 1-9 9`})]}),e),Plug:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M12 22v-5`}),(0,K.jsx)(`path`,{d:`M9 7V2M15 7V2`}),(0,K.jsx)(`path`,{d:`M6 7h12v4a6 6 0 0 1-12 0z`})]}),e),Mail:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`rect`,{x:`3`,y:`5`,width:`18`,height:`14`,rx:`2`}),(0,K.jsx)(`polyline`,{points:`3 7 12 13 21 7`})]}),e),Chats:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M14 9a2 2 0 0 1-2 2H6l-3 3V5a2 2 0 0 1 2-2h7a2 2 0 0 1 2 2z`}),(0,K.jsx)(`path`,{d:`M18 9h1a2 2 0 0 1 2 2v9l-3-3h-6a2 2 0 0 1-2-2v-1`})]}),e),Lightbulb:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M9 18h6`}),(0,K.jsx)(`path`,{d:`M10 22h4`}),(0,K.jsx)(`path`,{d:`M15.09 14c.18-.98.65-1.74 1.41-2.5A4.65 4.65 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .23 2.23 1.5 3.5A4.61 4.61 0 0 1 8.91 14`})]}),e),StickyNote:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M15.5 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8.5L15.5 3z`}),(0,K.jsx)(`path`,{d:`M15 3v6h6`}),(0,K.jsx)(`path`,{d:`M7 13h6`}),(0,K.jsx)(`path`,{d:`M7 17h4`})]}),e),Clipboard:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`rect`,{x:`8`,y:`2`,width:`8`,height:`4`,rx:`1`}),(0,K.jsx)(`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`}),(0,K.jsx)(`path`,{d:`m9 14 2 2 4-4`})]}),e),Link:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{d:`M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71`}),(0,K.jsx)(`path`,{d:`M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71`})]}),e),Gallery:e=>J((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`rect`,{x:`7`,y:`3`,width:`14`,height:`14`,rx:`2`}),(0,K.jsx)(`circle`,{cx:`11.5`,cy:`7.5`,r:`1.2`}),(0,K.jsx)(`path`,{d:`m21 13-3.5-3.5L10 17`}),(0,K.jsx)(`path`,{d:`M3 7v12a2 2 0 0 0 2 2h12`})]}),e)},HS={primary:`bg-accent text-accent-fg hover:opacity-90 border-transparent`,inverse:`bg-inverse-bg text-inverse-fg hover:opacity-90 border-transparent`,secondary:`bg-surface-2 text-fg hover:bg-surface-3 border-border`,ghost:`bg-transparent text-fg-muted hover:bg-surface-2 hover:text-fg border-transparent`,danger:`bg-danger-soft text-danger hover:opacity-90 border-transparent`};function X({variant:e=`secondary`,size:t=`md`,busy:n,className:r,children:i,disabled:a,...o}){return(0,K.jsxs)(`button`,{type:`button`,...o,disabled:a||n,className:G(`inline-flex items-center gap-1.5 rounded-md border font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed whitespace-nowrap`,t===`sm`?`px-2 py-1 text-xs`:`px-3 py-1.5 text-sm`,HS[e],r),children:[n?(0,K.jsx)(Y.Spinner,{className:`w-3.5 h-3.5`}):null,i]})}function US({label:e,className:t,children:n,...r}){return(0,K.jsx)(`button`,{type:`button`,"aria-label":e,title:e,...r,className:G(`inline-flex items-center justify-center rounded-md p-1.5 text-fg-muted hover:bg-surface-2 hover:text-fg disabled:opacity-50`,t),children:n})}function WS({label:e,details:t}){let n=(0,v.useRef)(null),[r,i]=(0,v.useState)(null),a=()=>{let e=n.current?.getBoundingClientRect();if(!e||typeof window>`u`)return;let t=Math.max(8,Math.min(e.left-12,window.innerWidth-320-8)),r=e.bottom+6,a=r+180>window.innerHeight?Math.max(8,e.top-186):r;i({left:t,top:a})},o=()=>i(null);return(0,K.jsxs)(`span`,{ref:n,className:`inline-flex align-middle`,onMouseEnter:a,onMouseLeave:o,onFocus:a,onBlur:o,onKeyDown:e=>{e.key!==`Escape`||!r||(e.stopPropagation(),o())},children:[(0,K.jsx)(`span`,{tabIndex:0,role:`button`,"aria-label":`About ${e}`,className:`cursor-help rounded text-fg-faint hover:text-fg focus:text-fg focus:outline-none`,"data-testid":`info-tip`,onClick:e=>{e.preventDefault(),e.stopPropagation(),a()},children:(0,K.jsx)(Y.Info,{className:`w-3.5 h-3.5`})}),r&&typeof document<`u`?(0,RS.createPortal)((0,K.jsx)(`div`,{role:`tooltip`,className:`fixed z-[60] w-80 rounded-md border border-border bg-surface px-3 py-2 text-xs leading-snug text-fg shadow-lg`,style:{left:r.left,top:r.top},"data-testid":`info-tip-card`,children:t}),document.body):null]})}function GS({items:e}){return(0,K.jsx)(`ul`,{className:`list-disc space-y-1 pl-4`,children:e.map(e=>(0,K.jsx)(`li`,{children:e},e))})}function KS({label:e,hint:t,details:n,children:r,className:i}){return(0,K.jsxs)(`label`,{className:G(`flex flex-col gap-1 text-sm`,i),children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-1.5 font-medium text-fg`,children:[e,n&&n.length>0?(0,K.jsx)(WS,{label:e,details:(0,K.jsx)(GS,{items:n})}):null]}),r,t?(0,K.jsx)(`span`,{className:`text-xs text-fg-faint`,children:t}):null]})}var Z=`w-full rounded-md border border-border bg-surface px-2.5 py-1.5 text-sm text-fg placeholder:text-fg-faint focus:border-accent focus:outline-none`,qS=Z;function Q({tone:e=`neutral`,children:t,className:n}){return(0,K.jsx)(`span`,{className:G(`inline-flex items-center rounded px-1.5 py-0.5 text-[11px] font-medium leading-4`,{neutral:`bg-surface-2 text-fg-muted`,ok:`bg-ok-soft text-ok`,warn:`bg-warn-soft text-warn`,danger:`bg-danger-soft text-danger`,accent:`bg-accent-soft text-accent`,think:`bg-think-soft text-think`}[e],n),children:t})}function JS({open:e,title:t,onClose:n,children:r,footer:i,wide:a,full:o}){let s=(0,v.useRef)(null);return(0,v.useEffect)(()=>{if(!e)return;let t=document.activeElement,r=s.current;(r?.querySelector(`input, select, textarea, button:not([data-close])`)??r)?.focus();let i=e=>{e.key===`Escape`&&(e.stopPropagation(),n())};return document.addEventListener(`keydown`,i),()=>{document.removeEventListener(`keydown`,i),t?.focus?.()}},[e,n]),e?(0,RS.createPortal)((0,K.jsx)(`div`,{className:`fixed inset-0 z-40 flex items-end sm:items-center justify-center bg-black/40 p-0 sm:p-4`,onMouseDown:e=>e.target===e.currentTarget&&n(),children:(0,K.jsxs)(`div`,{ref:s,role:`dialog`,"aria-modal":`true`,"aria-label":t,tabIndex:-1,className:G(`flex max-h-[95vh] w-full flex-col rounded-t-xl sm:rounded-xl border border-border bg-surface shadow-lg outline-none`,o?`h-[92vh] sm:max-w-[min(96vw,1600px)]`:a?`sm:max-w-3xl`:`sm:max-w-lg`),children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between border-b border-border px-4 py-3`,children:[(0,K.jsx)(`h2`,{className:`text-base font-semibold`,children:t}),(0,K.jsx)(US,{label:`Close`,"data-close":!0,onClick:n,children:(0,K.jsx)(Y.X,{})})]}),(0,K.jsx)(`div`,{className:o?`flex min-h-0 flex-1 flex-col overflow-hidden px-3 py-2`:`flex-1 overflow-y-auto px-4 py-3`,children:r}),i?(0,K.jsx)(`div`,{className:`flex flex-wrap items-center justify-end gap-2 border-t border-border px-4 py-3`,children:i}):null]})}),document.body):null}function YS({checked:e,onChange:t,label:n,hint:r,details:i,disabled:a,testId:o}){return(0,K.jsxs)(`label`,{className:G(`flex items-start justify-between gap-3 py-2`,a&&`opacity-60`),...o?{"data-testid":o}:{},children:[(0,K.jsxs)(`span`,{className:`min-w-0`,children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-1.5 text-sm font-medium text-fg`,children:[n,i&&i.length>0?(0,K.jsx)(WS,{label:n,details:(0,K.jsx)(GS,{items:i})}):null]}),r?(0,K.jsx)(`span`,{className:`mt-0.5 block text-xs text-fg-faint`,children:r}):null]}),(0,K.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":e,"aria-label":n,disabled:a,onClick:()=>t(!e),className:G(`relative mt-0.5 h-5 w-9 shrink-0 rounded-full border transition-colors`,e?`border-accent bg-accent`:`border-fg-faint bg-surface-2`),children:(0,K.jsx)(`span`,{className:G(`absolute top-0.5 h-3.5 w-3.5 rounded-full transition-all`,e?`left-[1.15rem] bg-white`:`left-0.5 bg-fg-muted`)})})]})}function XS({value:e,options:t,onChange:n,label:r}){return(0,K.jsx)(`div`,{className:`inline-flex rounded-md border border-border bg-surface-2 p-0.5`,role:`radiogroup`,"aria-label":r,children:t.map(t=>(0,K.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":e===t.value,onClick:()=>n(t.value),className:G(`rounded px-2.5 py-1 text-xs font-medium transition-colors`,e===t.value?`bg-surface text-fg shadow-sm`:`text-fg-muted hover:text-fg`),children:t.label},t.value))})}function ZS({icon:e,title:t,hint:n,action:r}){return(0,K.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-2 p-8 text-center text-fg-muted`,children:[e?(0,K.jsx)(`div`,{className:`text-fg-faint`,children:e}):null,(0,K.jsx)(`div`,{className:`text-base font-medium text-fg`,children:t}),n?(0,K.jsx)(`div`,{className:`max-w-md text-sm`,children:n}):null,r?(0,K.jsx)(`div`,{className:`mt-2`,children:r}):null]})}function QS({open:e,title:t,message:n,confirmLabel:r=`Delete`,onConfirm:i,onClose:a}){return(0,K.jsx)(JS,{open:e,title:t,onClose:a,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(X,{"data-close":!0,onClick:a,children:`Cancel`}),(0,K.jsx)(X,{variant:`danger`,"data-testid":`confirm-dialog-accept`,onClick:()=>{i(),a()},children:r})]}),children:(0,K.jsx)(`div`,{className:`text-sm text-fg-muted`,children:n})})}function $S({open:e,title:t,label:n,initialValue:r=``,password:i=!1,submitLabel:a=`Save`,onSubmit:o,onClose:s}){let[c,l]=(0,v.useState)(r);(0,v.useEffect)(()=>{e&&l(r)},[e,r]);let u=()=>{let e=c.trim();e&&(o(e),s())};return(0,K.jsx)(JS,{open:e,title:t,onClose:s,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(X,{"data-close":!0,onClick:s,children:`Cancel`}),(0,K.jsx)(X,{variant:`primary`,"data-testid":`prompt-dialog-submit`,onClick:u,children:a})]}),children:(0,K.jsx)(KS,{label:n,children:(0,K.jsx)(`input`,{className:Z,type:i?`password`:`text`,value:c,"data-testid":`prompt-dialog-input`,onChange:e=>l(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),u())}})})})}var eC=[{id:`24h`,label:`Last 24 hours`,count:24,unit:`hour`},{id:`7d`,label:`7 days`,count:7,unit:`day`},{id:`30d`,label:`30 days`,count:30,unit:`day`},{id:`90d`,label:`90 days`,count:90,unit:`day`}],tC=864e5;function nC(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!t)return null;let n=new Date(Number(t[1]),Number(t[2])-1,Number(t[3]));return Number.isFinite(n.getTime())&&n.getDate()===Number(t[3])?n:null}function rC(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}function iC(e){let t=nC(e.from),n=nC(e.to);return!t||!n||n.getTime()<t.getTime()?null:Math.round((n.getTime()-t.getTime())/tC)+1}function aC(e,t){if(e===`24h`)return[`hour`];if(e===`7d`||e===`30d`)return[`day`,`hour`];if(e===`90d`)return[`day`];let n=t?iC(t):null;return n===null||n>pm.maxHourlyRangeDays?[`day`]:n<=2?[`hour`,`day`]:[`day`,`hour`]}function oC(e){let t=nC(e.from),n=nC(e.to);return!t||!n?`Pick a start and an end date.`:n.getTime()<t.getTime()?`The end date is before the start date.`:iC(e)>pm.maxRangeDays?`A range can cover at most ${pm.maxRangeDays} days.`:null}function sC(e,t,n,r){if(e===`custom`){if(!r||oC(r))return null;let e=nC(r.from),n=nC(r.to),i=new Date(n.getFullYear(),n.getMonth(),n.getDate()+1);return{from:e.toISOString(),to:i.toISOString(),bucket:t}}let i=eC.find(t=>t.id===e),a;return i.unit===`hour`?(a=new Date(n.getTime()),a.setMinutes(0,0,0),a=new Date(a.getTime()-(i.count-1)*36e5)):a=new Date(n.getFullYear(),n.getMonth(),n.getDate()-(i.count-1)),{from:a.toISOString(),to:n.toISOString(),bucket:t}}function cC(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`}catch{return`UTC`}}function lC(e){return!Number.isFinite(e)||e===0?`0`:e.toLocaleString(`en-US`,{maximumFractionDigits:3})}function uC(e){return!Number.isFinite(e)||e===0?`0`:e.toLocaleString(`en-US`,{maximumFractionDigits:Math.abs(e)>=100?0:3})}function dC(e){return Number.isFinite(e)?e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e4?`${Math.round(e/1e3)}k`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(Math.round(e)):`0`}function fC(e,t){if(!(t>0)||!(e>0))return`0%`;let n=e/t*100;return n<1?`<1%`:n>99&&e<t?`>99%`:`${Math.round(n)}%`}function pC(e){return e.inputTokens+e.cacheReadTokens+e.cacheWriteTokens+e.outputTokens}var mC={image:[`image`,`images`],second:[`second`,`seconds`],video:[`video`,`videos`],character:[`character`,`characters`],voice:[`voice`,`voices`],token:[`token`,`tokens`]};function hC(e,t){let[n,r]=mC[e]??[e,`${e}s`];return t===1?`per ${n}`:e===`second`&&t===60?`per minute`:e===`second`&&t===3600?`per hour`:t===1e6?`per 1M ${r}`:t>=1e3&&t%1e3==0?`per ${t/1e3}k ${r}`:`per ${t.toLocaleString(`en-US`)} ${r}`}var gC={textInput:`text in`,cachedTextInput:`cached text in`,audioInput:`audio in`,cachedAudioInput:`cached audio in`,imageInput:`image in`,cachedImageInput:`cached image in`,output:`out`,audioOutput:`audio out`};function _C(e,t){if(!e)return null;let n=e=>e==null||!Number.isFinite(e)?null:uC(e*t);if(e.kind===`tokens`){if(e.free)return{main:`Free`,detail:[]};let t=[n(e.inputPerMTok)===null?null:`in ${n(e.inputPerMTok)}`,n(e.outputPerMTok)===null?null:`out ${n(e.outputPerMTok)}`].filter(e=>e!==null);if(t.length===0)return null;let r=[n(e.cacheReadPerMTok)===null?null:`cache read ${n(e.cacheReadPerMTok)}`,n(e.cacheWritePerMTok)===null?null:`cache write ${n(e.cacheWritePerMTok)}`,e.cacheWrite1hPerMTok===void 0?null:`1-hour cache write ${n(e.cacheWrite1hPerMTok)}`,e.webSearchPer1k===void 0?null:`web search ${n(e.webSearchPer1k)} per 1,000`,e.cheaperUnderTokens===void 0?null:`cheaper for prompts under ${dC(e.cheaperUnderTokens)} tokens`,e.offPeak?`cheaper off-peak`:null].filter(e=>e!==null);return{main:`${t.join(` · `)} credits per 1M tokens`,detail:r}}let r=Object.entries(e.tiers),i=hC(e.unit,e.per),a;a=e.unit===`token`&&e.tokens?`${Object.entries(e.tokens).map(([e,t])=>`${gC[e]??e} ${n(t)}`).join(` · `)} credits per 1M tokens`:r.length===1?`${n(r[0][1])} credits ${i}`:`${r.map(([e,t])=>`${e} ${n(t)}`).join(` · `)} credits ${i}`;let o=[e.inputImage===void 0?null:`each input image ${n(e.inputImage)}`,e.perTextInput===void 0?null:`each text message ${n(e.perTextInput)}`,e.unit!==`token`&&e.tokens?`tokens: ${Object.entries(e.tokens).map(([e,t])=>`${gC[e]??e} ${n(t)}`).join(` · `)} per 1M`:null].filter(e=>e!==null);return{main:a,detail:o}}function vC(e){return e.displayName?.trim()||e.model}var yC=`__other__`;function bC(e){return e<7?`var(--viz-${e+1})`:`var(--viz-other)`}function xC(e,t,n){let r=e=>e?n===`credits`?e.credits:e.requests:0,i=(t===`model`?e.models.map(e=>({key:e.key,label:vC(e),amount:n===`credits`?e.credits:e.requests})):e.purposes.map(t=>({key:t.purpose,label:dm(t.purpose,e.surface),amount:n===`credits`?t.credits:t.requests}))).filter(e=>e.amount>0),a=i.slice(0,7),o=new Set(i.slice(7).map(e=>e.key)),s=a.map((e,t)=>({key:e.key,label:e.label,color:bC(t)}));o.size>0&&s.push({key:yC,label:`Other (${o.size})`,color:`var(--viz-other)`});let c=0;return{series:s,columns:e.series.map(e=>{let n=t===`model`?e.models:e.purposes,i=[];for(let e of a){let t=r(n[e.key]);t>0&&i.push({series:e.key,value:t})}let s=0;for(let e of o)s+=r(n[e]);s>0&&i.push({series:yC,value:s});let l=i.reduce((e,t)=>e+t.value,0);return l>c&&(c=l),{key:e.key,at:e.at,total:l,requests:e.requests,credits:e.credits,parts:i}}),max:c}}function SC(e,t=4){if(!(e>0))return[0];let n=e/t,r=10**Math.floor(Math.log10(n)),i=[1,2,2.5,5,10].map(e=>e*r).find(e=>e>=n)??n,a=[];for(let t=0;t<e+i*1e-9;t+=i)a.push(Number(t.toPrecision(12)));return a[a.length-1]<e&&a.push(Number((a.length*i).toPrecision(12))),a}var CC=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function wC(e,t,n=!0){let r=/^(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2}))?$/.exec(e);if(!r)return e;let i=`${Number(r[3])} ${CC[Number(r[2])-1]??r[2]}`;return t===`day`||r[4]===void 0?i:n?`${i} ${r[4]}:${r[5]}`:`${r[4]}:${r[5]}`}function TC(e,t=4){if(e<=0)return[];if(e<=t)return[...Array(e).keys()];let n=new Set;for(let r=0;r<t;r++)n.add(Math.round(r*(e-1)/(t-1)));return[...n]}function EC(e){return e===`api`?`API`:`Code agent`}function DC(e){return e instanceof $h?e.code===`account_required`||e.isUnauthorized?{title:`Sign in to see your usage`,hint:`Usage belongs to your OonaCode account — sign in on the Account tab.`,retry:!1}:e.code===`gateway_unreachable`||e.code===`network`?{title:`Can’t reach OonaCode’s server`,hint:`Your usage is read from your account on the server. Check the connection and try again.`,retry:!0}:e.status===404||e.code===`not_found`?{title:`Update OonaCode to see your usage`,hint:`This PC’s OonaCode service is older than the Usage tab.`,retry:!1}:{title:`Usage could not be read`,hint:e.message,retry:!0}:{title:`Usage could not be read`,hint:e instanceof Error?e.message:String(e),retry:!0}}var OC={agent:`Everything your PCs ran: the app, the terminal, your phone and Telegram — chats, their subagents and background work.`,api:`Your own code: API keys, the agent API’s runs, images, video and voice.`};function kC(e){return G(`rounded-md border px-2.5 py-1 text-xs font-medium transition-colors`,e?`border-accent bg-accent-soft text-accent`:`border-border text-fg-muted hover:text-fg`)}function AC(){let{state:e,api:t}=q(),n=e.account?.loggedIn===!0,r=(0,v.useMemo)(cC,[]),[i,a]=(0,v.useState)(`agent`),[o,s]=(0,v.useState)(`30d`),[c,l]=(0,v.useState)(()=>{let e=new Date;return{from:rC(new Date(e.getFullYear(),e.getMonth(),e.getDate()-6)),to:rC(e)}}),u=aC(o,c),[d,f]=(0,v.useState)(null),p=d&&u.includes(d)?d:u[0],[m,h]=(0,v.useState)(`model`),[g,_]=(0,v.useState)(`credits`),[y,b]=(0,v.useState)(0),[x,S]=(0,v.useState)(null),[C,w]=(0,v.useState)(!1),[T,E]=(0,v.useState)(null),D=o===`custom`?oC(c):null;return(0,v.useEffect)(()=>{if(!n)return;if(!t.accountUsage){E(DC(new $h(`not_found`,404,`no usage route`)));return}let e=sC(o,p,new Date,c);if(!e)return;let a=!0;return w(!0),t.accountUsage({surface:i,...e,tz:r}).then(e=>{a&&(S(e),E(null))},e=>{a&&E(DC(e))}).finally(()=>{a&&w(!1)}),()=>{a=!1}},[t,n,i,o,p,c.from,c.to,r,y]),n?(0,K.jsxs)(`section`,{"data-testid":`usage-tab`,className:`min-w-0 space-y-4`,children:[(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,K.jsx)(XS,{label:`Which usage`,value:i,options:[{value:`agent`,label:`Code agent`},{value:`api`,label:`API`}],onChange:a}),(0,K.jsx)(US,{label:`Refresh`,onClick:()=>b(e=>e+1),disabled:C,"data-testid":`usage-refresh`,children:C?(0,K.jsx)(Y.Spinner,{className:`h-3.5 w-3.5`}):(0,K.jsx)(Y.Refresh,{className:`h-3.5 w-3.5`})})]}),(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,"data-testid":`usage-surface-hint`,children:OC[i]}),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,role:`group`,"aria-label":`Range`,children:[eC.map(e=>(0,K.jsx)(`button`,{type:`button`,className:kC(o===e.id),"aria-pressed":o===e.id,"data-testid":`usage-range-${e.id}`,onClick:()=>s(e.id),children:e.label},e.id)),(0,K.jsx)(`button`,{type:`button`,className:kC(o===`custom`),"aria-pressed":o===`custom`,"data-testid":`usage-range-custom`,onClick:()=>s(`custom`),children:`Custom…`})]}),o===`custom`?(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,K.jsxs)(`label`,{className:`flex min-w-0 items-center gap-1.5 text-xs text-fg-muted`,children:[`From`,(0,K.jsx)(`input`,{type:`date`,className:G(Z,`w-auto min-w-0 py-1 text-xs`),value:c.from,max:c.to||void 0,"data-testid":`usage-from`,onChange:e=>l(t=>({...t,from:e.target.value}))})]}),(0,K.jsxs)(`label`,{className:`flex min-w-0 items-center gap-1.5 text-xs text-fg-muted`,children:[`to`,(0,K.jsx)(`input`,{type:`date`,className:G(Z,`w-auto min-w-0 py-1 text-xs`),value:c.to,min:c.from||void 0,"data-testid":`usage-to`,onChange:e=>l(t=>({...t,to:e.target.value}))})]})]}):null,D?(0,K.jsx)(`p`,{className:`text-xs text-danger`,role:`alert`,children:D}):null,(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[u.length>1?(0,K.jsx)(XS,{label:`Bars`,value:p,options:u.slice().sort().reverse().map(e=>({value:e,label:e===`hour`?`By hour`:`By day`})),onChange:e=>f(e)}):null,(0,K.jsx)(XS,{label:`Stack by`,value:m,options:[{value:`model`,label:`Models`},{value:`purpose`,label:`Purposes`}],onChange:h}),(0,K.jsx)(XS,{label:`Measure`,value:g,options:[{value:`credits`,label:`Credits`},{value:`requests`,label:`Requests`}],onChange:_})]})]}),T?(0,K.jsxs)(`div`,{className:`rounded-md border border-border bg-surface-2 px-3 py-2.5 text-sm`,role:`alert`,"data-testid":`usage-error`,children:[(0,K.jsx)(`div`,{className:`font-medium`,children:T.title}),(0,K.jsx)(`div`,{className:`mt-0.5 text-xs text-fg-muted`,children:T.hint}),T.retry?(0,K.jsx)(X,{size:`sm`,className:`mt-2`,onClick:()=>b(e=>e+1),children:`Try again`}):null]}):null,x===null&&C?(0,K.jsxs)(`div`,{className:`flex items-center gap-2 py-6 text-sm text-fg-muted`,"data-testid":`usage-loading`,children:[(0,K.jsx)(Y.Spinner,{className:`h-4 w-4`}),` Reading your usage…`]}):null,x?(0,K.jsx)(`div`,{className:G(`min-w-0 space-y-4 transition-opacity`,C&&`opacity-60`),"aria-busy":C,"data-testid":`usage-body`,children:(0,K.jsx)(jC,{data:x,stackBy:m,metric:g})}):null]}):(0,K.jsxs)(`section`,{"data-testid":`usage-tab`,className:`py-6 text-center`,children:[(0,K.jsx)(`div`,{className:`text-sm font-medium`,children:`Sign in to see your usage`}),(0,K.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:`Usage belongs to your OonaCode account — sign in on the Account tab.`})]})}function jC({data:e,stackBy:t,metric:n}){let r=(0,v.useMemo)(()=>xC(e,t,n),[e,t,n]),i=(0,v.useMemo)(()=>MC(xC(e,`model`,n).series),[e,n]),a=(0,v.useMemo)(()=>MC(xC(e,`purpose`,n).series),[e,n]),o=e.totals,s=o.requests===0;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 sm:grid-cols-4`,"data-testid":`usage-totals`,children:[(0,K.jsx)(NC,{label:`Credits`,value:lC(o.credits),testId:`usage-total-credits`,children:`charged in this range`}),(0,K.jsx)(NC,{label:`Requests`,value:o.requests.toLocaleString(`en-US`),testId:`usage-total-requests`,children:[o.failedRequests>0?`${o.failedRequests.toLocaleString(`en-US`)} not served`:null,o.freeRequests>0?`${o.freeRequests.toLocaleString(`en-US`)} free`:null].filter(Boolean).join(` · `)||`model calls`}),(0,K.jsx)(NC,{label:`Tokens`,value:dC(pC(o)),testId:`usage-total-tokens`,children:`in ${dC(o.inputTokens)} · out ${dC(o.outputTokens)}`}),(0,K.jsx)(NC,{label:`Cache`,value:dC(o.cacheReadTokens+o.cacheWriteTokens),children:`read ${dC(o.cacheReadTokens)} · write ${dC(o.cacheWriteTokens)}`})]}),s?(0,K.jsxs)(`div`,{className:`rounded-md border border-dashed border-border px-3 py-6 text-center`,"data-testid":`usage-empty`,children:[(0,K.jsx)(`div`,{className:`text-sm font-medium`,children:`Nothing in this range`}),(0,K.jsxs)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:[`No `,EC(e.surface),` requests between these dates. Pick a longer range, or the other side above.`]})]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,K.jsxs)(`div`,{className:`mb-2 flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1`,children:[(0,K.jsxs)(`h3`,{className:`text-sm font-semibold`,children:[n===`credits`?`Credits`:`Requests`,` by `,e.bucket]}),(0,K.jsxs)(`span`,{className:`text-[11px] text-fg-muted`,children:[`Times in `,e.tz]})]}),(0,K.jsx)(VC,{series:r.series,columns:r.columns,max:r.max,bucket:e.bucket,metric:n}),r.series.length>0?(0,K.jsx)(`ul`,{className:`mt-2 flex flex-wrap gap-x-3 gap-y-1`,"data-testid":`usage-legend`,children:r.series.map(e=>(0,K.jsxs)(`li`,{className:`inline-flex min-w-0 items-center gap-1.5 text-xs`,children:[(0,K.jsx)(PC,{color:e.color}),(0,K.jsx)(`span`,{className:`truncate text-fg-muted`,children:e.label})]},e.key))}):(0,K.jsx)(`p`,{className:`mt-2 text-xs text-fg-muted`,children:n===`credits`?`Nothing charged in this range — every request was free or not served.`:`No requests in this range.`})]}),(0,K.jsx)(FC,{data:e,colors:i}),(0,K.jsx)(LC,{data:e,colors:a})]}),(0,K.jsx)(`p`,{className:`text-[11px] text-fg-faint`,"data-testid":`usage-footnote`,children:`Credits are what your account was charged, request by request; a free model shows zero. Prices are today’s, in credits per 1M tokens; a past request settled at the price of its day. Every model and every purpose that ran is listed, and each list adds up to the totals.`})]})}function MC(e){return new Map(e.map(e=>[e.key,e.color]))}function NC({label:e,value:t,children:n,testId:r}){return(0,K.jsxs)(`div`,{className:`min-w-0 rounded-md border border-border px-3 py-2`,children:[(0,K.jsx)(`div`,{className:`text-[11px] text-fg-muted`,children:e}),(0,K.jsx)(`div`,{className:`truncate text-lg font-semibold tabular-nums`,"data-testid":r,children:t}),n?(0,K.jsx)(`div`,{className:`truncate text-[11px] text-fg-faint`,children:n}):null]})}function PC({color:e}){return e?(0,K.jsx)(`span`,{"aria-hidden":!0,className:`inline-block h-2.5 w-2.5 shrink-0 rounded-sm`,style:{background:e}}):(0,K.jsx)(`span`,{"aria-hidden":!0,className:`inline-block h-2.5 w-2.5 shrink-0 rounded-sm border border-border`})}function FC({data:e,colors:t}){return(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h3`,{className:`mb-1.5 text-sm font-semibold`,children:`Models`}),(0,K.jsx)(`ul`,{className:`divide-y divide-border rounded-md border border-border`,"data-testid":`usage-models`,children:e.models.map(n=>(0,K.jsx)(IC,{m:n,data:e,color:t.get(n.key)??(t.has(`__other__`)&&n.credits>0?t.get(`__other__`):void 0)},n.key))})]})}function IC({m:e,data:t,color:n}){let r=_C(e.price,t.creditsPerUsd),i=vC(e),a=e.modality!==`chat`;return(0,K.jsxs)(`li`,{className:`min-w-0 px-3 py-2`,"data-testid":`usage-model-row`,"data-model":e.key,children:[(0,K.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,K.jsx)(PC,{color:n}),(0,K.jsx)(`span`,{className:`min-w-0 break-words text-sm font-medium`,title:`${e.providerId} / ${e.model}`,children:i}),a?(0,K.jsx)(`span`,{className:`shrink-0 rounded bg-surface-2 px-1 text-[10px] text-fg-muted`,children:e.modality}):null]}),i===e.model?null:(0,K.jsx)(`div`,{className:`break-all pl-[18px] font-mono text-[10px] text-fg-faint`,children:e.model})]}),(0,K.jsxs)(`div`,{className:`shrink-0 text-right`,children:[(0,K.jsx)(`div`,{className:`text-sm font-semibold tabular-nums`,"data-testid":`usage-model-credits`,children:lC(e.credits)}),(0,K.jsx)(`div`,{className:`text-[11px] text-fg-muted`,children:fC(e.credits,t.totals.credits)})]})]}),(0,K.jsxs)(`div`,{className:`mt-1 flex flex-wrap gap-x-3 gap-y-0.5 text-[11px] text-fg-muted`,children:[(0,K.jsxs)(`span`,{children:[e.requests.toLocaleString(`en-US`),` requests`]}),e.failedRequests>0?(0,K.jsxs)(`span`,{children:[e.failedRequests,` not served`]}):null,e.freeRequests>0?(0,K.jsxs)(`span`,{children:[e.freeRequests,` free`]}):null,pC(e)>0?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`span`,{children:[`in `,dC(e.inputTokens)]}),(0,K.jsxs)(`span`,{children:[`cache read `,dC(e.cacheReadTokens)]}),(0,K.jsxs)(`span`,{children:[`cache write `,dC(e.cacheWriteTokens)]}),(0,K.jsxs)(`span`,{children:[`out `,dC(e.outputTokens)]})]}):null]}),(0,K.jsx)(`div`,{className:`mt-0.5 break-words text-[11px] text-fg-faint`,"data-testid":`usage-model-price`,children:r?[r.main,...r.detail].join(` · `):`Price: not in the price list (what it cost is above).`})]})}function LC({data:e,colors:t}){let n=e.totals.credits;return(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h3`,{className:`mb-1.5 text-sm font-semibold`,children:`What it was for`}),(0,K.jsx)(`ul`,{className:`space-y-2`,"data-testid":`usage-purposes`,children:e.purposes.map(r=>{let i=n>0?Math.min(100,r.credits/n*100):0;return(0,K.jsxs)(`li`,{className:`min-w-0`,"data-testid":`usage-purpose-row`,"data-purpose":r.purpose,children:[(0,K.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 text-sm`,children:[(0,K.jsx)(PC,{color:t.get(r.purpose)??(r.credits>0?t.get(`__other__`):void 0)}),(0,K.jsx)(`span`,{className:`min-w-0 break-words font-medium`,children:dm(r.purpose,e.surface)})]}),(0,K.jsxs)(`div`,{className:`text-[11px] text-fg-muted`,children:[fm(r.purpose,e.surface),` `,r.requests.toLocaleString(`en-US`),` `,`requests.`]})]}),(0,K.jsxs)(`div`,{className:`shrink-0 text-right`,children:[(0,K.jsx)(`div`,{className:`text-sm font-semibold tabular-nums`,"data-testid":`usage-purpose-credits`,children:lC(r.credits)}),(0,K.jsx)(`div`,{className:`text-[11px] text-fg-muted`,children:fC(r.credits,n)})]})]}),(0,K.jsx)(`div`,{className:`mt-1 h-1.5 overflow-hidden rounded-full bg-surface-2`,"aria-hidden":!0,children:(0,K.jsx)(`div`,{className:`h-full rounded-full bg-accent`,style:{width:`${i}%`}})})]},r.purpose)})})]})}var RC=180,zC=8,BC=2;function VC({series:e,columns:t,max:n,bucket:r,metric:i}){let a=(0,v.useRef)(null),[o,s]=(0,v.useState)(640),[c,l]=(0,v.useState)(null);(0,v.useEffect)(()=>{let e=a.current;if(!e)return;let t=()=>{let t=e.clientWidth;t>0&&s(t)};if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]),(0,v.useEffect)(()=>{c!==null&&c>=t.length&&l(null)},[c,t.length]);let u=SC(n),d=u[u.length-1]||1,f=e=>i===`credits`?lC(e):dC(e),p=Math.max(28,Math.max(...u.map(e=>f(e).length))*6+8),m=Math.max(40,o-p)/Math.max(1,t.length),h=Math.max(1,Math.min(24,m*.72)),g=e=>160-e/d*152,_=new Map(e.map(e=>[e.key,e.color])),y=new Map(e.map(e=>[e.key,e.label])),b=e=>{let n=a.current;if(!n)return;let r=e-n.getBoundingClientRect().left-p,i=Math.floor(r/m);l(i>=0&&i<t.length?i:null)},x=e=>{if(t.length!==0){if(e.key===`ArrowLeft`||e.key===`ArrowRight`){e.preventDefault();let n=e.key===`ArrowLeft`?-1:1;l(e=>Math.min(t.length-1,Math.max(0,(e??t.length)+n)))}else e.key===`Escape`&&c!==null&&(e.stopPropagation(),l(null))}},S=TC(t.length,o<420?3:5),C=c===null?void 0:t[c],w=Math.min(240,o),T=c===null?0:Math.min(Math.max(0,p+(c+.5)*m-w/2),Math.max(0,o-w));return(0,K.jsxs)(`div`,{ref:a,className:`relative min-w-0 select-none outline-none focus-visible:ring-2 focus-visible:ring-accent/40`,tabIndex:0,role:`group`,"aria-label":`${i===`credits`?`Credits`:`Requests`} by ${r}; use the arrow keys to read each bar`,onKeyDown:x,onPointerMove:e=>{e.pointerType===`mouse`&&b(e.clientX)},onPointerDown:e=>b(e.clientX),onPointerLeave:e=>{e.pointerType===`mouse`&&l(null)},onBlur:()=>l(null),"data-testid":`usage-chart`,children:[(0,K.jsxs)(`svg`,{width:o,height:RC,viewBox:`0 0 ${o} ${RC}`,className:`block max-w-full`,"aria-hidden":!0,children:[u.map(e=>(0,K.jsxs)(`g`,{children:[(0,K.jsx)(`line`,{x1:p,x2:o,y1:g(e),y2:g(e),stroke:`var(--border)`,strokeWidth:1,shapeRendering:`crispEdges`}),(0,K.jsx)(`text`,{x:p-6,y:g(e),dy:`0.32em`,textAnchor:`end`,fontSize:10,fill:`var(--fg-muted)`,children:f(e)})]},e)),c===null?null:(0,K.jsx)(`rect`,{x:p+c*m,y:zC,width:m,height:152,fill:`var(--surface-2)`}),t.map((e,t)=>{let n=p+t*m+(m-h)/2,r=g(0);return(0,K.jsx)(`g`,{"data-testid":`usage-chart-column`,"data-total":e.total,children:e.parts.map((t,i)=>{let a=Math.max(t.value/d*152,+(i===e.parts.length-1)),o=i===e.parts.length-1,s=o?a:Math.max(0,a-BC),c=r-a;if(r-=a,s<=0)return null;let l=_.get(t.series)??`var(--viz-other)`;return o?(0,K.jsx)(`path`,{d:HC(n,c,h,s),fill:l},t.series):(0,K.jsx)(`rect`,{x:n,y:c+(a-s),width:h,height:s,fill:l},t.series)})},e.key)}),S.map((e,n)=>{let i=t[e];if(!i)return null;let a=p+(e+.5)*m,s=n===0?`start`:n===S.length-1?`end`:`middle`,c=s===`start`?Math.max(p,a-m/2):s===`end`?Math.min(o,a+m/2):a;return(0,K.jsx)(`text`,{x:c,y:176,textAnchor:s,fontSize:10,fill:`var(--fg-muted)`,children:wC(i.key,r,n===0||r===`day`||!UC(t[S[n-1]]?.key,i.key))},i.key)})]}),C?(0,K.jsxs)(`div`,{className:`pointer-events-none absolute top-0 z-10 rounded-md border border-border bg-surface px-2.5 py-2 text-xs shadow-lg`,style:{left:T,width:w},role:`status`,"data-testid":`usage-tooltip`,children:[(0,K.jsx)(`div`,{className:`text-[11px] text-fg-muted`,children:wC(C.key,r)}),(0,K.jsxs)(`div`,{className:`font-semibold tabular-nums`,children:[lC(C.credits),` credits`,(0,K.jsxs)(`span`,{className:`font-normal text-fg-muted`,children:[` `,`· `,C.requests.toLocaleString(`en-US`),` requests`]})]}),C.parts.length>0?(0,K.jsx)(`ul`,{className:`mt-1 space-y-0.5`,children:[...C.parts].reverse().map(e=>(0,K.jsxs)(`li`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,K.jsx)(`span`,{"aria-hidden":!0,className:`inline-block h-0.5 w-3 shrink-0 rounded`,style:{background:_.get(e.series)}}),(0,K.jsx)(`span`,{className:`shrink-0 font-semibold tabular-nums`,children:f(e.value)}),(0,K.jsx)(`span`,{className:`min-w-0 truncate text-fg-muted`,children:y.get(e.series)})]},e.series))}):(0,K.jsxs)(`div`,{className:`mt-0.5 text-fg-muted`,children:[`Nothing `,i===`credits`?`charged`:`ran`,`.`]})]}):null]})}function HC(e,t,n,r){let i=Math.max(0,Math.min(4,n/2,r));return[`M${e},${t+r}`,`L${e},${t+i}`,`Q${e},${t} ${e+i},${t}`,`L${e+n-i},${t}`,`Q${e+n},${t} ${e+n},${t+i}`,`L${e+n},${t+r}`,`Z`].join(` `)}function UC(e,t){return!!e&&e.slice(0,10)===t.slice(0,10)}function WC({checked:e,onChange:t}){let{state:n}=q();return Wh(n.account)===`unavailable`?null:(0,K.jsxs)(`label`,{className:`flex items-start gap-2 text-sm`,children:[(0,K.jsx)(`input`,{type:`checkbox`,className:`mt-1`,checked:e,onChange:e=>t(e.target.checked),"data-testid":`keep-unlocked`}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`span`,{className:`block`,children:`Keep me unlocked on this PC`}),(0,K.jsx)(`span`,{className:`block text-xs text-fg-faint`,children:rc})]})]})}function GC({view:e}){let{actions:t}=q(),[n,r]=(0,v.useState)(``),[i,a]=(0,v.useState)(!1),[o,s]=(0,v.useState)(!1),[c,l]=(0,v.useState)(``),[u,d]=(0,v.useState)(``),f=async()=>{if(n){a(!0);try{await t.completeVaultRekey(n)&&r(``)}finally{a(!1)}}},p=async()=>{if(!(c.trim()!==`discard-my-vault-and-history`||!u)){a(!0);try{await t.revokeVaultRekey(u)&&d(``)}finally{a(!1),l(``)}}};return(0,K.jsxs)(`div`,{role:`status`,"data-testid":`vault-rekey-pending`,className:`space-y-3 rounded-md border border-warn/50 bg-warn-soft p-3 text-sm`,children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(Y.Alert,{className:`mt-0.5 w-4 h-4 shrink-0 text-warn`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[(0,K.jsx)(`p`,{className:`font-medium text-fg`,children:Jh(e)}),e.canFinishHere?(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,children:`This PC still holds the key from before the reset, so it can move your vault to the new password. Nothing is lost. Type your new password to confirm; you will get a new vault Recovery Key.`}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,children:Yh(e)}),(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,"data-testid":`rekey-recovery-exit`,children:Xh})]})]})]}),e.canFinishHere?(0,K.jsxs)(`form`,{className:`flex items-end gap-2`,onSubmit:e=>{e.preventDefault(),f()},children:[(0,K.jsx)(KS,{label:`New password`,className:`flex-1`,children:(0,K.jsx)(`input`,{className:Z,type:`password`,value:n,onChange:e=>r(e.target.value),autoComplete:`current-password`,"data-testid":`rekey-password`})}),(0,K.jsx)(X,{type:`submit`,variant:`primary`,busy:i,disabled:!n,"data-testid":`rekey-finish`,children:`Move my vault to the new password`})]}):null,o?(0,K.jsxs)(`div`,{className:`space-y-2 rounded-md border border-danger/40 bg-surface p-3`,children:[(0,K.jsxs)(`p`,{className:`text-xs text-danger`,children:[`Discarding permanently deletes every saved provider key and the vault Recovery Key that could still have moved them. Your chats are not touched — they live on your PCs. There is no undo. Type `,(0,K.jsx)(`span`,{className:`font-mono`,children:nc}),` and your current password to confirm.`]}),(0,K.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,K.jsx)(KS,{label:`Your new password`,className:`flex-1`,children:(0,K.jsx)(`input`,{className:Z,type:`password`,value:u,onChange:e=>d(e.target.value),autoComplete:`current-password`,"data-testid":`rekey-discard-password`})}),(0,K.jsx)(KS,{label:`Confirmation`,className:`flex-1`,children:(0,K.jsx)(`input`,{className:Z,value:c,onChange:e=>l(e.target.value),autoComplete:`off`,spellCheck:!1,"data-testid":`rekey-discard-ack`})}),(0,K.jsx)(X,{variant:`danger`,busy:i,disabled:c.trim()!==`discard-my-vault-and-history`||!u,onClick:()=>void p(),"data-testid":`rekey-discard-confirm`,children:`Discard vault`}),(0,K.jsx)(X,{variant:`ghost`,onClick:()=>s(!1),children:`Cancel`})]})]}):(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:()=>s(!0),"data-testid":`rekey-discard`,children:e.canFinishHere?`This was not me — discard the vault instead`:`Last resort: discard the vault`})]})}function KC(){let{state:e,actions:t}=q(),n=e.recoveryKey,[r,i]=(0,v.useState)(!1);if(!n)return null;let a=async()=>{try{await navigator.clipboard?.writeText(n.code),i(!0)}catch{t.toast(`error`,`Could not copy — select the code and copy it by hand`)}};return(0,K.jsxs)(`div`,{role:`status`,"data-testid":`recovery-key`,className:`space-y-2 rounded-md border border-ok/50 bg-ok-soft p-3 text-sm`,children:[(0,K.jsx)(`p`,{className:`font-medium text-fg`,children:`Your new vault Recovery Key`}),(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,children:`Write it down now — this is the only copy, and OonaCode does not store it. It unlocks your vault data if you ever forget the password. It is not a 2FA backup code.`}),(0,K.jsx)(`div`,{className:`select-all rounded-md border border-border bg-surface px-3 py-2 font-mono text-base tracking-wider`,"data-testid":`recovery-key-code`,children:n.code}),n.devicesSignedOut>0?(0,K.jsxs)(`p`,{className:`text-xs text-fg-muted`,children:[n.devicesSignedOut,` other device`,n.devicesSignedOut===1?` was`:`s were`,` signed out; sign in there with the new password.`]}):null,n.warning?(0,K.jsx)(`p`,{className:`rounded-md border border-warn/50 bg-warn-soft px-2 py-1.5 text-xs text-fg`,"data-testid":`recovery-key-warning`,children:n.warning}):null,(0,K.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,K.jsxs)(X,{size:`sm`,onClick:()=>void a(),children:[(0,K.jsx)(Y.Copy,{className:`w-3.5 h-3.5`}),` `,r?`Copied`:`Copy`]}),(0,K.jsx)(X,{size:`sm`,variant:`primary`,onClick:()=>t.dismissRecoveryKey(),"data-testid":`recovery-key-done`,children:`I have saved it`})]})]})}function qC(){let{state:e,actions:t}=q(),[n,r]=(0,v.useState)(!1),[i,a]=(0,v.useState)(``),[o,s]=(0,v.useState)(!1),c=Wh(e.account);if(c===`unavailable`||c===`pending_rekey`)return null;let l=async e=>{s(!0);try{await t.setDeviceUnlock(e,e?i:void 0)&&(r(!1),a(``))}finally{s(!1)}};return c===`armed`?(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs`,"data-testid":`device-unlock`,children:[(0,K.jsx)(Q,{tone:`ok`,children:`stays unlocked on this PC`}),(0,K.jsx)(X,{size:`sm`,busy:o,onClick:()=>void l(!1),children:`Turn off`})]}):n?(0,K.jsxs)(`form`,{className:`space-y-2 rounded-md border border-border bg-surface-2 p-3`,"data-testid":`device-unlock`,onSubmit:e=>{e.preventDefault(),l(!0)},children:[(0,K.jsx)(`p`,{className:`text-xs text-fg-faint`,children:rc}),(0,K.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,K.jsx)(KS,{label:`Password`,className:`flex-1`,children:(0,K.jsx)(`input`,{className:Z,type:`password`,value:i,onChange:e=>a(e.target.value),autoComplete:`current-password`})}),(0,K.jsx)(X,{type:`submit`,variant:`primary`,busy:o,disabled:!i,children:`Keep me unlocked`}),(0,K.jsx)(X,{variant:`ghost`,onClick:()=>r(!1),children:`Cancel`})]})]}):(0,K.jsx)(X,{size:`sm`,onClick:()=>r(!0),"data-testid":`device-unlock`,children:`Keep me unlocked on this PC…`})}function JC({pending:e}){let{actions:t}=q(),[n,r]=(0,v.useState)(()=>Date.now()),[i,a]=(0,v.useState)(!1);(0,v.useEffect)(()=>{if(r(Date.now()),e.resendAt<=Date.now())return;let t=setInterval(()=>{let n=Date.now();r(n),n>=e.resendAt&&clearInterval(t)},1e3);return()=>clearInterval(t)},[e.resendAt]);let o=fg(e,n),s=async()=>{a(!0);try{await t.resendVerification()}finally{a(!1)}};return(0,K.jsxs)(`div`,{role:`status`,"data-testid":`email-verification`,className:`space-y-2 rounded-md border border-warn/50 bg-warn-soft p-3 text-sm`,children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(Y.Alert,{className:`mt-0.5 w-4 h-4 shrink-0 text-warn`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`p`,{className:`font-medium text-fg`,children:mg(e)}),(0,K.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:`Open the link on any device, then log in again here. Check the spam folder if it does not arrive.`})]})]}),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(X,{size:`sm`,variant:`primary`,busy:i,disabled:o>0,onClick:()=>void s(),"data-testid":`resend-verification`,children:o>0?`Resend link (${o}s)`:`Resend link`}),(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:()=>t.dismissEmailVerification(),children:`Dismiss`})]})]})}function YC(){let{state:e,actions:t}=q(),[n,r]=(0,v.useState)(e.settings?.gatewayUrl||x),[i,a]=(0,v.useState)(``),[o,s]=(0,v.useState)(``),[c,l]=(0,v.useState)(e.connection.hostName??``),[u,d]=(0,v.useState)(!1),[f,p]=(0,v.useState)(!0),[m,h]=(0,v.useState)(!1);(0,v.useEffect)(()=>{e.settings?.gatewayUrl&&n===x&&r(e.settings.gatewayUrl)},[e.settings?.gatewayUrl,n]);let g=async()=>{if(!(!n.trim()||!i.trim()||!o)){h(!0);try{await t.login({gatewayUrl:n.trim(),email:i.trim(),password:o,register:u,...c.trim()?{deviceName:c.trim()}:{},keepUnlocked:f})!==`verification_pending`&&s(``)}finally{h(!1)}}};return(0,K.jsxs)(`form`,{className:`space-y-3`,onSubmit:e=>{e.preventDefault(),g()},children:[(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,children:`Log in to use OonaCode and to sync your credentials across your own devices (zero-knowledge: the server only ever sees ciphertext).`}),e.emailVerification?(0,K.jsx)(JC,{pending:e.emailVerification}):null,(0,K.jsx)(KS,{label:`Gateway URL`,children:(0,K.jsx)(`input`,{className:Z,value:n,onChange:e=>r(e.target.value),placeholder:x,autoComplete:`url`,spellCheck:!1})}),(0,K.jsx)(KS,{label:`Email`,children:(0,K.jsx)(`input`,{className:Z,type:`email`,value:i,onChange:e=>a(e.target.value),autoComplete:`username`})}),(0,K.jsx)(KS,{label:`Password`,hint:`Also unlocks your vault. It never leaves this PC; only a derived proof is sent.`,children:(0,K.jsx)(`input`,{className:Z,type:`password`,value:o,onChange:e=>s(e.target.value),autoComplete:u?`new-password`:`current-password`})}),(0,K.jsx)(KS,{label:`Device name`,children:(0,K.jsx)(`input`,{className:Z,value:c,onChange:e=>l(e.target.value),placeholder:`Office PC`})}),(0,K.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:u,onChange:e=>d(e.target.checked)}),` `,`Create a new account`]}),(0,K.jsx)(WC,{checked:f,onChange:p}),(0,K.jsx)(X,{type:`submit`,variant:`primary`,busy:m,disabled:!n.trim()||!i.trim()||!o,children:u?`Register`:`Log in`})]})}function XC(){let{actions:e}=q(),[t,n]=(0,v.useState)(``),[r,i]=(0,v.useState)(!0),[a,o]=(0,v.useState)(!1);return(0,K.jsxs)(`form`,{className:`space-y-2`,onSubmit:i=>{i.preventDefault(),o(!0),e.unlock(t,{keepUnlocked:r}).finally(()=>{o(!1),n(``)})},children:[(0,K.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,K.jsx)(KS,{label:`Vault locked — enter your password`,className:`flex-1`,children:(0,K.jsx)(`input`,{className:Z,type:`password`,value:t,onChange:e=>n(e.target.value),autoComplete:`current-password`})}),(0,K.jsx)(X,{type:`submit`,variant:`primary`,busy:a,disabled:!t,children:`Unlock`})]}),(0,K.jsx)(WC,{checked:r,onChange:i})]})}function ZC(){let{state:e}=q(),t=e.plan,n=e=>e.toLocaleString(void 0,{maximumFractionDigits:0});return(0,K.jsxs)(`section`,{className:`space-y-2`,"data-testid":`account-plan`,children:[(0,K.jsx)(`h3`,{className:`text-sm font-semibold`,children:`Plan & credits`}),t===null?(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,children:`Sign in to see your plan and credit balance.`}):(0,K.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border px-3 py-2.5 text-sm`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`span`,{className:`text-fg-muted`,children:`Plan`}),(0,K.jsxs)(`span`,{className:`font-medium`,children:[t.planName,t.status===`none`?` (lapsed)`:``]})]}),(0,K.jsx)(`div`,{className:`h-px bg-border`}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`span`,{className:`text-fg-muted`,children:`Plan credits`}),(0,K.jsx)(`span`,{className:`font-semibold tabular-nums`,"data-testid":`account-credits`,children:n(t.credits.balance)})]}),(0,K.jsxs)(`div`,{className:`text-[11px] text-fg-faint`,children:[t.credits.monthlyGrant>0?`Tops up to ${n(t.credits.monthlyGrant)} each 30-day period. `:`No monthly top-up on this plan; the signup gift and anything you buy never expire. `,`Free models never draw on it.`]})]})]})}function QC({open:e,onClose:t}){let{state:n,actions:r}=q(),i=n.account,a=Gh(i),[o,s]=(0,v.useState)(`account`);return(0,v.useEffect)(()=>{e&&(r.refreshAccount(),r.refreshPlan())},[e,r]),(0,K.jsxs)(JS,{open:e,title:`Account`,onClose:t,wide:o===`usage`,children:[(0,K.jsx)(`div`,{className:`-mt-1 mb-4 flex gap-1 border-b border-border`,role:`tablist`,"aria-label":`Account sections`,children:[[`account`,`Account`],[`usage`,`Usage`]].map(([e,t])=>(0,K.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":o===e,"data-testid":`account-tab-${e}`,onClick:()=>s(e),className:o===e?`-mb-px border-b-2 border-accent px-3 py-1.5 text-sm font-medium text-fg`:`-mb-px border-b-2 border-transparent px-3 py-1.5 text-sm text-fg-muted hover:text-fg`,children:t},e))}),o===`usage`?(0,K.jsx)(AC,{}):(0,K.jsxs)(`div`,{className:`space-y-5`,children:[i?.loggedIn?(0,K.jsxs)(`section`,{className:`space-y-2`,children:[(0,K.jsx)(KC,{}),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`font-medium`,children:i.email}),a?(0,K.jsx)(Q,{tone:`warn`,children:`vault waiting for a password reset to finish`}):(0,K.jsx)(Q,{tone:i.vaultUnlocked?`ok`:`warn`,children:i.vaultUnlocked?`vault unlocked`:`vault locked`}),(0,K.jsxs)(Q,{tone:i.syncStatus===`error`?`danger`:i.syncStatus===`offline`?`warn`:`neutral`,children:[`sync: `,i.syncStatus]}),i.vaultRev===null?null:(0,K.jsxs)(Q,{children:[`rev `,i.vaultRev]})]}),(0,K.jsxs)(`div`,{className:`text-xs text-fg-faint`,children:[i.gatewayUrl,` · device `,i.deviceId?.slice(0,8)??`?`,` · last sync`,` `,i.lastSyncAt?W_(i.lastSyncAt):`never`,i.syncError?(0,K.jsxs)(`span`,{className:`text-danger`,children:[` · `,i.syncError]}):null]}),a?(0,K.jsx)(GC,{view:a}):null,!a&&!i.vaultUnlocked?(0,K.jsx)(XC,{}):null,i.vaultUnlocked?(0,K.jsx)(qC,{}):null,(0,K.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,K.jsxs)(X,{onClick:()=>void r.syncNow(),disabled:!i.vaultUnlocked,children:[(0,K.jsx)(Y.Refresh,{className:`w-3.5 h-3.5`}),` Sync now`]}),(0,K.jsx)(X,{variant:`danger`,onClick:()=>void r.logout(),children:`Log out`})]})]}):(0,K.jsx)(YC,{}),(0,K.jsx)(ZC,{})]})]})}function $C(){return typeof window>`u`?null:window.__oonacodeRenderProbe??null}function ew(e){e&&$C()?.transcript?.(e)}function tw(e,t,n){$C()?.group?.(e,n)}function nw(e,t){return e===null||e===document||e===window||!t?!0:e instanceof Node?e.contains(t):!0}var rw=30;function iw({open:e,at:t,items:n,onClose:r,label:i,anchorEl:a=null,testId:o=`session-context-menu`}){let s=(0,v.useRef)(null),[c,l]=(0,v.useState)(t),u=n.filter(e=>!e.disabled),[d,f]=(0,v.useState)(0);return(0,v.useEffect)(()=>{e&&f(0)},[e,t.x,t.y]),(0,v.useLayoutEffect)(()=>{if(!e)return;let r=s.current,i=r?.offsetWidth??200,a=r?.offsetHeight??n.length*rw,o=window.innerWidth-i-8,c=window.innerHeight-a-8;l({x:Math.max(8,Math.min(t.x,o)),y:Math.max(8,Math.min(t.y,c))})},[e,t.x,t.y,n.length]),(0,v.useEffect)(()=>{if(!e)return;let t=e=>{if(e.key===`Escape`){e.stopPropagation(),r();return}if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault(),f(t=>((e.key===`ArrowDown`?t+1:t-1)+u.length)%Math.max(u.length,1));return}if(e.key===`Enter`||e.key===` `){e.preventDefault();let t=u[d];t&&(r(),t.onSelect())}},n=e=>{s.current?.contains(e.target)||(e.preventDefault(),e.stopPropagation(),r())},i=e=>{nw(e.target,a)&&r()};return document.addEventListener(`keydown`,t),window.addEventListener(`mousedown`,n,!0),window.addEventListener(`resize`,r),window.addEventListener(`scroll`,i,!0),()=>{document.removeEventListener(`keydown`,t),window.removeEventListener(`mousedown`,n,!0),window.removeEventListener(`resize`,r),window.removeEventListener(`scroll`,i,!0)}},[e,r,u,d,a]),e?(0,RS.createPortal)((0,K.jsx)(`div`,{ref:s,role:`menu`,"aria-label":i,"data-testid":o,className:`fixed z-50 min-w-[190px] overflow-hidden rounded-md border border-border bg-surface py-1 shadow-lg`,style:{left:c.x,top:c.y},children:n.map(e=>{let t=u.indexOf(e);return(0,K.jsxs)(`div`,{children:[e.separated?(0,K.jsx)(`div`,{className:`my-1 h-px bg-border`}):null,(0,K.jsxs)(`button`,{type:`button`,role:`menuitem`,disabled:e.disabled,"data-testid":e.testId,className:G(`flex w-full items-center gap-2 px-3 py-1.5 text-left text-sm`,e.disabled?`cursor-default text-fg-faint`:e.danger?`text-danger hover:bg-danger-soft`:`text-fg hover:bg-surface-2`,!e.disabled&&t===d?`bg-surface-2`:``),onMouseEnter:()=>t>=0&&f(t),onClick:()=>{r(),e.onSelect()},children:[e.icon?(0,K.jsx)(`span`,{className:`w-3.5 shrink-0`,children:e.icon}):null,(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.label}),e.hint?(0,K.jsx)(`span`,{className:`shrink-0 text-[11px] text-fg-faint`,children:e.hint}):null]})]},e.key)})}),document.body):null}function aw(e){if(!e.supported)return`This PC's OonaCode is too old to list your other devices — update it.`;switch(e.reason){case`logged_out`:return`Sign in to your OonaCode account to see your other PCs here.`;case`gateway_unreachable`:return`Your account server is unreachable — only this PC is listed right now.`;case`vault_locked`:return`Unlock your vault to read the sessions on your other PCs.`;default:return`No other PCs on this account yet. Install OonaCode on another machine and sign in.`}}function ow({sessions:e,onOpen:t,readOnly:n}){return e.length===0?(0,K.jsx)(`div`,{className:`px-2 py-4 text-center text-xs text-fg-faint`,children:`No sessions here.`}):(0,K.jsx)(`ul`,{className:`divide-y divide-border`,children:e.map(e=>(0,K.jsx)(`li`,{children:(0,K.jsxs)(`button`,{type:`button`,onClick:()=>t(e.id),className:`flex w-full items-center gap-2 px-2 py-2 text-left hover:bg-surface-2`,children:[(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`div`,{className:`truncate text-sm`,children:Q_(e)}),(0,K.jsxs)(`div`,{className:`truncate text-[11px] text-fg-faint`,children:[e.cwd,` · `,W_(e.updatedAt)]})]}),n?(0,K.jsx)(Q,{tone:`warn`,children:`read-only`}):null,(0,K.jsx)(Y.Chevron,{className:`w-3.5 h-3.5 shrink-0 text-fg-faint`})]})},e.id))})}function sw({open:e,onClose:t}){let{state:n,actions:r}=q(),[i,a]=(0,v.useState)(`local`),[o,s]=(0,v.useState)(``);(0,v.useEffect)(()=>{e&&r.refreshHosts()},[e,r]),(0,v.useEffect)(()=>{!e||i===`local`||r.refreshHostSessions(i)},[e,i,r]);let c=(0,v.useMemo)(()=>n.remote.hosts.filter(e=>!e.isSelf),[n.remote.hosts]),l=c.find(e=>e.hostId===i)??null,u=i===`local`?n.sessions:n.remote.sessions[i]??[],d=l?n.remote.unreachable[l.hostId]:void 0,f=l&&d?Jp(d.reason,l.label||l.hostName,d.detail):null,p=(0,v.useMemo)(()=>{let e=o.trim().toLowerCase();return e?u.filter(t=>Q_(t).toLowerCase().includes(e)||t.cwd.toLowerCase().includes(e)):u},[u,o]);return(0,K.jsx)(JS,{open:e,title:`Open a session`,onClose:t,wide:!0,children:(0,K.jsxs)(`div`,{className:`flex min-h-[20rem] gap-4`,children:[(0,K.jsxs)(`nav`,{className:`w-44 shrink-0 space-y-0.5`,"aria-label":`Devices`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>a(`local`),"aria-current":i===`local`?`true`:void 0,className:G(`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm`,i===`local`?`bg-accent-soft font-medium text-accent`:`text-fg-muted hover:bg-surface-2`),children:[(0,K.jsx)(Y.Monitor,{className:`w-3.5 h-3.5`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:n.connection.hostName??`This PC`}),(0,K.jsx)(Q,{tone:`ok`,children:`local`})]}),c.map(e=>(0,K.jsxs)(`button`,{type:`button`,onClick:()=>a(e.hostId),"aria-current":i===e.hostId?`true`:void 0,className:G(`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm`,i===e.hostId?`bg-accent-soft font-medium text-accent`:`text-fg-muted hover:bg-surface-2`),children:[(0,K.jsx)(Y.Monitor,{className:`w-3.5 h-3.5`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.label||e.hostName}),(0,K.jsx)(`span`,{className:G(`h-1.5 w-1.5 shrink-0 rounded-full`,e.online?`bg-ok`:`bg-fg-faint`),"aria-label":e.online?`online`:`offline`})]},e.hostId)),c.length===0?(0,K.jsx)(`div`,{className:`px-2 pt-3 text-[11px] text-fg-faint`,children:aw(n.remote)}):null]}),(0,K.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,K.jsx)(`input`,{className:Z,placeholder:`Filter sessions`,"aria-label":`Filter sessions`,value:o,onChange:e=>s(e.target.value)}),f?(0,K.jsx)(`div`,{className:`mt-2 rounded-md bg-warn-soft px-3 py-2 text-xs text-warn`,"data-testid":`picker-unreachable`,children:f}):null,(0,K.jsx)(`div`,{className:`mt-2 min-h-0 flex-1 overflow-y-auto rounded-md border border-border`,children:(0,K.jsx)(ow,{sessions:p,readOnly:l!==null&&!l.online,onOpen:e=>{if(l){r.openRemoteSession(l.hostId,e),t();return}r.selectSession(e),t()}})}),(0,K.jsx)(`div`,{className:`mt-2 flex justify-end`,children:(0,K.jsxs)(X,{variant:`primary`,onClick:()=>{r.newTab(),t()},children:[(0,K.jsx)(Y.Plus,{className:`w-4 h-4`}),` New chat here`]})})]})]})})}function cw(){let{state:e}=q(),t=kS(),n=t?e.remote.tabs[t]:void 0;return n?(0,K.jsxs)(`div`,{className:G(`flex items-center gap-2 px-3 py-1.5 text-xs`,n.live?`bg-accent-soft text-accent`:`bg-warn-soft text-warn`),role:`status`,"data-testid":`remote-banner`,children:[(0,K.jsx)(Y.Monitor,{className:`w-3.5 h-3.5`}),n.live?(0,K.jsxs)(`span`,{children:[`This session runs on `,(0,K.jsx)(`strong`,{children:n.hostName}),`. This window is a live view — that PC executes every tool.`]}):(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`strong`,{children:n.hostName}),` is not reachable`,n.detail?` (${n.detail})`:``,` — this chat is kept only on that PC, so this view is read-only and shows what was read from it. Bring that PC online to continue.`]})]}):null}function lw(){let{state:e}=q(),t=kS();if(!t)return!1;let n=e.remote.tabs[t];return n?!n.live:!1}function uw(){let{state:e}=q(),t=jS();if(!t)return null;let n=e.pendingRouting[t.id];if(!n&&t.customModel===!0||(n?Vh(n.providerId,n.model):t.autoModel))return null;let r={providerId:n?.providerId??t.providerId,model:n?.model??t.model};return Hp(e.providers,r)?r.model??null:null}function dw(e,t,n){return n?null:t?t.customModel&&t.model?t.model:null:e?.customModel===!0&&e.model?e.model:null}function fw(){let{state:e}=q(),t=jS(),n=MS(),r=kS();return dw(t,n,r?e.pendingRouting[r]!==void 0:!1)}var pw=`next message`;function mw(e){let t=e.now?`Until then this chat keeps running on ${e.now}.`:`Until then this chat keeps running on the model it has now.`,n=e.working?` This chat is working, so that message waits for the current turn to finish — use Send now on it to cut the step and switch at once.`:``;return`${e.pick} is picked but not in use yet: it takes effect with your next message. ${t}${n}`}function hw(e,t,n){let r=t?.engineSince,i=el(e,{alive:t==null||r===void 0?null:r!==null,since:r&&Date.parse(r)||null});if(!i)return null;let{fallbackModel:a,originalModel:o,category:s}=i.notice,c=a?nl(a,n):`another model`;return{fallbackModel:a,fallbackName:c,originalName:o?nl(o,n):null,category:s,chipLabel:rl(c),track:i}}function gw(e,t,n){let r=e.originalName??t??`The chat’s model`,i=e.category?` (${e.category})`:``,a=t??e.originalName??`the chat’s model`;return[`${r}’s safeguards flagged this chat${i}, so the engine moved it to ${e.fallbackName} for the rest of this run.`,n?null:`OonaCode does not offer ${e.fallbackName} for picking — it only runs as this fallback.`,`Pick a model (or send after the agent restarts) to go back to ${a}.`].filter(e=>e!==null).join(` `)}function _w(){let{state:e}=q(),t=AS(),n=jS(),r=t?.safeguardFallback??null,i=t?.session??n,a=i!=null,o=i?i.engineSince:void 0,s=n?e.pendingRouting[n.id]!==void 0:!1,c=e.providers;return(0,v.useMemo)(()=>s||!r?null:hw(r,a?{engineSince:o}:null,c),[r,s,a,o,c])}function vw(e){let{session:t,isDraft:n,staged:r,pick:i}=e;if(r)return Vh(r.providerId,r.model)?{routedModel:null,note:null}:null;if(n)return Vh(i.providerId,i.modelId)?{routedModel:null,note:null}:null;let a=t?.autoModel;if(a){let e=t?.providerId===`oonacode`&&t.model&&t.model!==`auto`?t.model:null;return{routedModel:a.model??e,note:a.note??null}}return t&&Vh(t.providerId,t.model)?{routedModel:null,note:null}:null}function yw(){let{state:e}=q(),t=jS(),n=MS(),r=kS(),i=r?e.pendingRouting[r]:void 0;return(0,v.useMemo)(()=>{let r=Gp(e.providers,{providerId:i?.providerId??n?.providerId??t?.providerId??e.activeProviderId,model:i?.model??n?.model??t?.model??e.info?.activeModel,variantId:i?.variantId??n?.variantId??t?.variantId??null}),a=vw({session:t,isDraft:n!=null,staged:i,pick:r}),o=a?Gp(e.providers,{providerId:w,model:zh,variantId:null}):r,s=(e.providers.find(e=>e.definition.id===o.providerId)?.definition)?.models.find(e=>e.id===o.modelId)??null;return{...o,option:s,auto:a}},[e.providers,e.activeProviderId,e.info?.activeModel,i,n,t])}function bw(e){let t=e.toLowerCase();return t===`#000000`||t===`#000`?void 0:e}function xw({providerId:e,displayName:t,size:n=14,className:r}){let i=yc(e);if(!i)return(0,K.jsx)(`span`,{"aria-hidden":`true`,"data-provider-mark":e,className:G(`inline-flex flex-shrink-0 items-center justify-center rounded-sm bg-fg/10 font-semibold text-fg-muted`,r),style:{width:n,height:n,fontSize:Math.round(n*.55),lineHeight:1},children:bc(t)});let a=bw(i.hex);return(0,K.jsx)(`svg`,{"aria-hidden":`true`,"data-provider-mark":e,viewBox:`0 0 24 24`,width:n,height:n,className:G(`flex-shrink-0`,a?void 0:`text-fg`,r),style:{width:n,height:n},children:(0,K.jsx)(`path`,{d:i.d,fill:a??`currentColor`,fillRule:i.fillRule})})}function Sw(e){if(e>=1e6){let t=e/1e6;return`${Number.isInteger(t)?t:t.toFixed(1)}M`}return e>=1e3?`${Math.round(e/1e3)}K`:String(e)}function Cw({m:e}){if(e.details.auto)return null;let{intelligence:t,coding:n,outputTps:r,contextWindow:i,thinking:a,vision:o}=e.details;return t===void 0&&n===void 0&&r===void 0&&i===void 0&&!a&&!o?null:(0,K.jsxs)(`span`,{className:`ml-auto flex flex-shrink-0 items-center gap-2 pl-3 text-[10px] leading-none tabular-nums`,children:[a?(0,K.jsx)(`span`,{className:`text-think`,title:`Reasoning / extended thinking`,children:`✦`}):null,o?(0,K.jsx)(`span`,{className:`text-fg-faint`,title:`Accepts images`,children:`◉`}):null,i===void 0?null:(0,K.jsx)(`span`,{className:`text-fg-faint`,title:`${i.toLocaleString()} token context`,children:Sw(i)}),t===void 0?null:(0,K.jsxs)(`span`,{className:`rounded-sm bg-fg/10 px-1 py-px font-semibold text-fg-muted`,title:`Artificial Analysis intelligence index — their measurement, not ours`,children:[`IQ `,Math.round(t)]}),n===void 0?null:(0,K.jsxs)(`span`,{className:`rounded-sm bg-accent/15 px-1 py-px font-semibold text-accent`,title:`Artificial Analysis coding index — their measurement, not ours`,children:[`</>`,` `,Math.round(n)]}),r===void 0?null:(0,K.jsxs)(`span`,{className:`text-fg-faint`,title:`Artificial Analysis median output speed, tokens per second`,children:[Math.round(r),` t/s`]})]})}var ww=`Credits per 1M tokens. The lower figure is the subscription lane the pool tries first; the higher one applies when the request is served by the pay-as-you-go key instead.`;function Tw({label:e,value:t,hint:n}){return t===null?null:(0,K.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3`,children:[(0,K.jsx)(`span`,{className:`text-fg-faint`,children:e}),(0,K.jsx)(`span`,{className:`text-right font-mono tabular-nums text-fg-muted`,title:n,children:t})]})}function Ew({m:e,group:t,side:n}){let r=e.details;if(r.auto)return(0,K.jsx)(Dw,{m:e,group:t,side:n});let i=r.creditsPerM,a=[{label:`thinking`,on:r.thinking===!0},{label:`tools`,on:r.tools===!0},{label:`vision`,on:r.vision===!0}],o=r.intelligence!==void 0||r.coding!==void 0||r.outputTps!==void 0||r.ttft!==void 0,s=Object.entries(r.aa?.benchmarks??{}).filter(([e])=>e!==`artificial_analysis_intelligence_index`&&e!==`artificial_analysis_coding_index`).map(([e,t])=>({id:e,value:t,meta:Os[e]})).sort((e,t)=>(e.meta?.label??e.id).localeCompare(t.meta?.label??t.id)),c=r.aa?.fetchedAt?new Date(r.aa.fetchedAt):null;return(0,K.jsxs)(`div`,{"data-testid":`model-details`,className:G(`absolute top-0 z-10 max-h-[22rem] w-[19rem] overflow-y-auto rounded-lg border border-border bg-surface p-3 shadow-lg`,n===`right`?`left-full ml-2`:`right-full mr-2`),children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(xw,{providerId:e.providerId,displayName:t,size:13}),(0,K.jsx)(`span`,{className:`truncate text-xs font-semibold text-fg`,children:e.label}),e.free?(0,K.jsx)(Aw,{}):null]}),(0,K.jsx)(`div`,{className:`mt-0.5 truncate font-mono text-[10px] text-fg-faint`,title:e.modelId,children:e.modelId}),(0,K.jsxs)(`div`,{className:`text-[10px] text-fg-faint`,children:[t,r.aa?.creator?` · by ${r.aa.creator}`:``,r.aa?.releaseDate?` · released ${r.aa.releaseDate}`:``]}),(0,K.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1 border-t border-border pt-2`,children:a.map(e=>(0,K.jsx)(`span`,{"data-testid":`cap-${e.label}`,"data-on":e.on,className:G(`rounded px-1.5 py-0.5 text-[10px]`,e.on?`bg-ok/15 text-ok`:`bg-fg/5 text-fg-faint line-through`),children:e.label},e.label))}),(0,K.jsxs)(`div`,{className:`mt-2 space-y-1 border-t border-border pt-2 text-[11px]`,children:[(0,K.jsx)(Tw,{label:`Context`,value:r.contextWindow===void 0?null:Sw(r.contextWindow),hint:r.contextWindow===void 0?void 0:`${r.contextWindow.toLocaleString()} tokens`}),(0,K.jsx)(Tw,{label:`Max output`,value:r.maxOutputTokens===void 0?null:Sw(r.maxOutputTokens),hint:r.maxOutputTokens===void 0?void 0:`${r.maxOutputTokens.toLocaleString()} tokens`}),(0,K.jsx)(Tw,{label:r.providers&&r.providers.length>1?`Providers`:`Provider`,value:r.providers&&r.providers.length>0?r.providers.join(`, `):null,hint:`Which backend the pool sends this model to — the subscription lane first, whichever provider holds it.`}),(0,K.jsx)(Tw,{label:`Input / 1M tokens`,value:i?Xu(i.input,i.maxInput):null,hint:i?.maxInput===void 0?void 0:ww}),(0,K.jsx)(Tw,{label:`Output / 1M tokens`,value:i?Xu(i.output,i.maxOutput):null,hint:i?.maxOutput===void 0?void 0:ww})]}),o||s.length>0?(0,K.jsxs)(`div`,{className:`mt-2 border-t border-border pt-2`,"data-testid":`model-details-aa`,children:[(0,K.jsxs)(`div`,{className:`mb-1 flex items-baseline justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide text-fg-faint`,children:`Independent ratings`}),(0,K.jsxs)(`span`,{className:`text-[10px] text-fg-faint`,children:[`Artificial Analysis`,c?` · ${c.toLocaleDateString()}`:``]})]}),(0,K.jsx)(Ow,{label:`Intelligence`,value:r.intelligence}),(0,K.jsx)(Ow,{label:`Coding`,value:r.coding}),(0,K.jsxs)(`div`,{className:`mt-1 space-y-1 text-[11px]`,children:[(0,K.jsx)(Tw,{label:`Speed`,value:r.outputTps===void 0?null:`${Math.round(r.outputTps)} tok/s`,hint:`Median output tokens per second`}),(0,K.jsx)(Tw,{label:`First answer`,value:r.ttft===void 0?null:`${r.ttft.toFixed(2)}s`,hint:`Median time to the first answer token — after reasoning, which is what you wait for`})]}),s.length>0?(0,K.jsx)(`div`,{className:`mt-1.5 space-y-1 border-t border-border pt-1.5 text-[11px]`,children:s.map(e=>(0,K.jsx)(Tw,{label:e.meta?.label??e.id,value:kw(e.value,e.meta?.scale),hint:e.meta?void 0:`Reported by Artificial Analysis as "${e.id}"`},e.id))}):null]}):null,r.notes?(0,K.jsx)(`div`,{className:`mt-2 border-t border-border pt-2 text-[10px] leading-snug text-fg-muted`,children:r.notes}):null]})}function Dw({m:e,group:t,side:n}){let r=e.details.notes?.trim()||`Auto picks a model from the OonaCode pool for each new message you send. It weighs how complex the task is, how large this chat has grown, and whether a model already has this chat in its cache — moving to another model can mean reading the whole chat afresh, which costs more — along with each model’s speed and cost. It picks the effort too. The button then names the model it chose, for example “Auto (Qwen3.8 Max)”; pick any other model to leave Auto.`;return(0,K.jsxs)(`div`,{"data-testid":`model-details`,"data-auto":`true`,className:G(`absolute top-0 z-10 max-h-[22rem] w-[19rem] overflow-y-auto rounded-lg border border-border bg-surface p-3 shadow-lg`,n===`right`?`left-full ml-2`:`right-full mr-2`),children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(xw,{providerId:e.providerId,displayName:t,size:13}),(0,K.jsx)(`span`,{className:`truncate text-xs font-semibold text-fg`,children:e.label})]}),(0,K.jsx)(`div`,{className:`text-[10px] text-fg-faint`,children:t}),(0,K.jsx)(`div`,{className:`mt-2 border-t border-border pt-2 text-[11px] leading-snug text-fg-muted`,"data-testid":`model-details-auto`,children:r})]})}function Ow({label:e,value:t}){if(t===void 0)return null;let n=Math.max(0,Math.min(100,t));return(0,K.jsxs)(`div`,{className:`mb-1`,"data-testid":`score-${e.toLowerCase()}`,children:[(0,K.jsxs)(`div`,{className:`flex items-baseline justify-between text-[11px]`,children:[(0,K.jsx)(`span`,{className:`text-fg-faint`,children:e}),(0,K.jsx)(`span`,{className:`font-mono tabular-nums text-fg-muted`,children:t.toFixed(1)})]}),(0,K.jsx)(`div`,{className:`mt-0.5 h-1 w-full overflow-hidden rounded-full bg-fg/10`,children:(0,K.jsx)(`div`,{className:`h-full rounded-full bg-accent`,style:{width:`${n}%`}})})]})}function kw(e,t){return t===`index`?e.toFixed(1):t===`fraction`||e>0&&e<=1?`${(e*100).toFixed(1)}%`:e.toFixed(2)}function Aw(){return(0,K.jsx)(`span`,{"data-testid":`model-free-badge`,title:`Free on every plan — served from the operator's own capacity, and never billed to you.`,className:`rounded-sm bg-ok/15 px-1 py-px text-[10px] leading-none font-semibold tracking-wide text-ok uppercase`,children:`Free`})}function jw(e,t){return e===`oonacode`?`Runs on the OonaCode pool. A model the pool does not list may be refused when you send.`:`Sent to ${t} exactly as typed — the provider answers or refuses it.`}function Mw({sectionKey:e,sectionLabel:t,providerId:n,current:r,initial:i,onApply:a}){let[o,s]=(0,v.useState)(!1),[c,l]=(0,v.useState)(``),[u,d]=(0,v.useState)(null),[f,p]=(0,v.useState)(!1),m=jw(n,t),h=async()=>{let e=c.trim();if(!bh(e)){d(`One model id — letters, digits and . - _ : / — with no spaces.`);return}p(!0);let t=await a(e);p(!1),t&&s(!1)};return o?(0,K.jsxs)(`div`,{className:`px-2 py-1.5`,"data-testid":`custom-model-form-${e}`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`input`,{autoFocus:!0,type:`text`,"data-testid":`custom-model-input-${e}`,"aria-label":`Custom model for ${t}`,placeholder:`Model id, e.g. claude-fable-5-1`,spellCheck:!1,className:`min-w-0 flex-1 rounded border border-border bg-surface-2 px-1.5 py-1 font-mono text-xs text-fg outline-none placeholder:font-sans placeholder:text-fg-faint focus:border-accent`,value:c,disabled:f,onChange:e=>{l(e.target.value),d(null)},onKeyDown:e=>{e.stopPropagation(),e.key===`Enter`?(e.preventDefault(),h()):e.key===`Escape`&&(e.preventDefault(),s(!1))}}),(0,K.jsx)(`button`,{type:`button`,"data-testid":`custom-model-apply-${e}`,className:`rounded bg-accent px-2 py-1 text-[11px] font-semibold text-accent-fg disabled:opacity-50`,disabled:f||c.trim()===``,onClick:()=>void h(),children:`Use`})]}),(0,K.jsx)(`div`,{className:G(`mt-1 text-[10px] leading-snug`,u?`text-danger`:`text-fg-faint`),role:u?`alert`:void 0,children:u??m})]}):(0,K.jsxs)(`button`,{type:`button`,"data-testid":`custom-model-entry-${e}`,className:G(`flex w-full items-center gap-1.5 px-2 py-1.5 text-left text-xs hover:bg-fg/5`,r?`text-danger`:`text-fg-faint`),title:m,onClick:()=>{l(r??i),d(null),s(!0)},children:[(0,K.jsx)(Y.Plus,{className:`w-3 h-3 flex-shrink-0`,"aria-hidden":`true`}),(0,K.jsx)(`span`,{className:`truncate`,children:r?wh(r):`Custom model…`})]})}var Nw=120,Pw=14,Fw=40.25;function Iw({m:e,selected:t,active:n,providerLabel:r,onHover:i,onPick:a}){return(0,K.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":t,"data-testid":`model-option-${e.value}`,"data-value":e.value,"data-free":e.free?`true`:void 0,"data-cursor":n?`true`:void 0,className:G(`flex w-full items-center gap-1.5 px-2 py-1.5 text-left text-xs`,n?`bg-accent/10`:`hover:bg-fg/5`,t?`text-accent font-semibold`:`text-fg`),onMouseEnter:i,onClick:a,children:[(0,K.jsx)(`span`,{className:G(`truncate`,e.free||t?`font-semibold`:void 0),children:e.label}),r?(0,K.jsx)(`span`,{"data-testid":`model-option-provider`,className:`min-w-0 flex-shrink truncate text-[10px] font-normal text-fg-faint`,children:r}):null,e.free?(0,K.jsx)(Aw,{}):null,(0,K.jsx)(Cw,{m:e}),t?(0,K.jsx)(`span`,{className:`ml-auto shrink-0 pl-1 text-xs font-bold text-accent`,title:`Selected`,"aria-hidden":`true`,children:`✓`}):null]})}function Lw({keyId:e,label:t,providerId:n,count:r,direct:i,open:a,walking:o,current:s,onPick:c,onHover:l,onLeave:u}){return(0,K.jsxs)(`button`,{type:`button`,role:`menuitem`,"aria-haspopup":`listbox`,"aria-expanded":a,"data-testid":`model-provider-${e}`,"data-open":a?`true`:void 0,title:i?`${t} — runs straight from this PC to the provider, never through our servers.`:t,className:G(`flex w-full items-center gap-1.5 px-2 py-1.5 text-left text-xs`,a?o?`bg-accent/15`:`bg-fg/10`:`hover:bg-fg/5`,s?`font-semibold text-accent`:`text-fg`),onClick:c,onMouseEnter:l,onMouseLeave:u,children:[n===null?(0,K.jsx)(`span`,{"aria-hidden":`true`,className:`flex-shrink-0 rounded-sm bg-fg/10 px-1 text-[9px] leading-snug font-semibold text-fg-muted`,children:`IQ`}):(0,K.jsx)(xw,{providerId:n,displayName:t,size:12}),(0,K.jsx)(`span`,{className:`truncate`,children:t}),(0,K.jsx)(`span`,{className:`ml-auto flex-shrink-0 pl-2 text-[10px] font-normal text-fg-faint tabular-nums`,children:r}),(0,K.jsx)(`span`,{"aria-hidden":`true`,className:`flex-shrink-0 text-fg-faint`,children:`›`})]})}function Rw({disabled:e,className:t}){let{state:n,actions:r}=q(),i=kS(),[a,o]=(0,v.useState)(!1),[s,c]=(0,v.useState)(``),[l,u]=(0,v.useState)({}),[d,f]=(0,v.useState)(``),[p,m]=(0,v.useState)(`models`),[h,g]=(0,v.useState)(0),_=(0,v.useRef)(null),y=(0,v.useRef)(null),b=(0,v.useRef)(null),x=(0,v.useRef)(null),S=(0,v.useRef)(null),C=(0,v.useRef)(null),w=n.settings?.modelVisibility??null,T=(0,v.useMemo)(()=>Vp(n.providers,w),[n.providers,w]),E=n.providers.some(e=>e.definition.id===`google-agy`&&e.definition.enabled&&!e.configured),D=i?n.pendingRouting[i]:void 0,O=yw(),k=O,A=O.auto,j=k.providerId&&k.modelId?Fp(k.providerId,k.modelId,k.variantId):``,M=T.flatMap(e=>e.models).find(e=>e.value===j)??null,N=!M&&j?k.modelId:null,ee=uw(),P=_w(),F=fw(),I=(0,v.useMemo)(()=>{if(!P?.fallbackModel)return!1;let e=Us(P.fallbackModel);return T.some(t=>t.models.some(t=>Us(t.modelId)===e))},[P?.fallbackModel,T]),te=d.trim().toLowerCase(),ne=(0,v.useMemo)(()=>T.flatMap(e=>{if(!te)return[{g:e,models:e.models}];let t=e.models.filter(e=>e.label.toLowerCase().includes(te)||e.modelId.toLowerCase().includes(te));return t.length>0?[{g:e,models:t}]:[]}),[T,te]),re=(0,v.useMemo)(()=>ne.map(e=>Wp(e.g)),[ne]),L=T.find(e=>e.models.some(e=>e.value===j||Kp(e,k)))??null,R=re.includes(s)?s:re[0]??``,z=ne.find(e=>Wp(e.g)===R)??null,B=z?.g??null,ie=l[R]??``,ae=(0,v.useMemo)(()=>{let e=ie.trim().toLowerCase(),t=(z?[z]:[]).flatMap(e=>e.models.map(t=>({m:t,group:e.g.label,details:t.details})));return Up(e?t.filter(t=>t.m.label.toLowerCase().includes(e)||t.m.modelId.toLowerCase().includes(e)):t)},[ne,z,ie]);(0,v.useEffect)(()=>{if(!a)return;let e=ae.findIndex(e=>e.m.value===j);g(e>=0?e:0)},[a,ae,j]);let oe=()=>{C.current&&=(clearTimeout(C.current),null)};(0,v.useEffect)(()=>oe,[]),(0,v.useEffect)(()=>{if(!a)return;let e=e=>{_.current&&!_.current.contains(e.target)&&o(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[a]);let se=()=>{c(L?Wp(L):re[0]??``),u({}),f(``),m(`models`),o(!0)},ce=(e=!0)=>{oe(),o(!1),u({}),f(``),e&&y.current?.focus()},le=e=>{r.setSessionModel(e.modelId,e.providerId,e.variantId,i??void 0),ce()},ue=e=>{m(e),(e===`providers`?S:x).current?.focus()},de=e=>{oe(),c(e),ue(`models`)},fe=e=>{oe(),e!==R&&(C.current=setTimeout(()=>{C.current=null,c(e)},Nw))},pe=e=>{if(e.key===`Escape`){e.preventDefault(),ce();return}let t=e.target instanceof HTMLElement?e.target:null;if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=e.key===`ArrowDown`?1:-1;if(p===`providers`){let e=re[(re.indexOf(R)+t+re.length)%re.length];e&&c(e)}else ae.length>0&&g(e=>(e+t+ae.length)%ae.length);return}if(e.key===`Home`||e.key===`End`){if(e.preventDefault(),p===`providers`){let t=re[e.key===`Home`?0:re.length-1];t&&c(t)}else g(e.key===`Home`?0:Math.max(0,ae.length-1));return}if(e.key===`ArrowLeft`){let n=!(t instanceof HTMLInputElement)||t.selectionStart===0&&t.selectionEnd===0;p===`models`&&n&&(e.preventDefault(),ue(`providers`));return}if(e.key===`ArrowRight`){let n=!(t instanceof HTMLInputElement)||t.selectionStart===t.value.length&&t.selectionEnd===t.value.length;p===`providers`&&n&&(e.preventDefault(),ue(`models`));return}if(e.key===`Enter`){let n=t?.closest(`[role="option"]`);if(n){e.preventDefault();let t=ae.find(e=>e.m.value===n.getAttribute(`data-value`));t&&le(t.m);return}if(t?.closest(`button, a`))return;if(e.preventDefault(),p===`providers`){ue(`models`);return}let r=ae[h];r&&le(r.m)}},[me,he]=(0,v.useState)(`right`),[ge,_e]=(0,v.useState)(0),[ve,ye]=(0,v.useState)(!0);(0,v.useLayoutEffect)(()=>{if(!a)return;let e=()=>{let e=_.current?.getBoundingClientRect();if(!e)return;let t=Math.min(Fw*16,window.innerWidth-16),n=Math.max(Math.min(0,window.innerWidth-8-(e.left+t)),8-e.left);_e(n);let r=e.left+n;he(r+t+312<=window.innerWidth?`right`:`left`);let i=window.innerHeight-e.bottom,a=e.top;ye(i>=420?!1:a>i)};return e(),x.current?.focus({preventScroll:!0}),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[a]),(0,v.useEffect)(()=>{a&&(b.current?.querySelector(`[data-cursor="true"]`))?.scrollIntoView({block:`nearest`})},[a,h]);let be=(()=>{let e=A?.routedModel?Us(A.routedModel):null;return e?T.filter(e=>e.providerId===`oonacode`).flatMap(e=>e.models).find(t=>Us(t.modelId)===e)?.label??e:null})(),xe=(A?be:null)??M?.label??N??null,Se=M?.providerId??k.providerId??``,Ce=T.find(e=>e.providerId===Se)?.label??Se,we=P?gw(P,xe,I):null,Te=P!==null&&!ee,Ee=F!==null&&!Te,De=A!==null&&!Te&&!Ee,Oe=De?Hh(be):xe??`No model`,ke=D!==void 0&&!Te&&!Ee&&!ee,Ae=(()=>{if(!ke||!i)return null;let e=n.transcripts[i],t=e?.init?.model??null,r=t?T.flatMap(e=>e.models).find(e=>Us(e.modelId)===Us(t))?.label??t:null;return mw({pick:Oe,now:r,working:e?.status===`running`||e?.status===`waiting_permission`})})(),je=F?`${F} is not a model OonaCode lists — this chat runs on it as it is. Pick a model to leave it, or type another under any provider's Custom model….`:null;return(0,K.jsxs)(`span`,{ref:_,className:`relative inline-flex min-w-0 max-w-full items-center gap-1.5`,children:[(0,K.jsxs)(`button`,{type:`button`,ref:y,"aria-label":`Model`,"aria-haspopup":`listbox`,"aria-expanded":a,"data-testid":`model-picker`,disabled:e,className:G(`flex max-w-[min(22rem,100%)] min-w-[min(9rem,100%)] items-center gap-1.5 rounded-md border bg-surface-2 px-1.5 py-0.5 text-xs text-fg disabled:opacity-50`,Te||Ee?`border-danger/60 hover:border-danger`:ke?`border-warn/60 hover:border-warn`:`border-border hover:border-fg-faint`,t),onClick:()=>a?ce():se(),onKeyDown:e=>{!a&&(e.key===`ArrowDown`||e.key===`Enter`||e.key===` `)&&(e.preventDefault(),se())},title:Te?we??void 0:Ee?je??void 0:ke?Ae??void 0:De?A?.note??void 0:void 0,children:[Se?(0,K.jsx)(xw,{providerId:Se,displayName:Ce,size:13}):null,Te?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Y.Shield,{className:`w-3 h-3 flex-shrink-0 text-danger`,"aria-hidden":`true`}),(0,K.jsx)(`span`,{className:`truncate text-danger`,"data-testid":`model-picker-safeguard`,children:P.chipLabel})]}):Ee?(0,K.jsx)(`span`,{className:`truncate text-danger`,"data-testid":`model-picker-custom`,children:wh(F)}):De?(0,K.jsx)(`span`,{className:`truncate`,"data-testid":`model-picker-auto`,children:Oe}):(0,K.jsx)(`span`,{className:G(`truncate`,ee?`text-danger`:void 0),"data-testid":ee?`model-picker-withdrawn`:void 0,title:ee?`${ee} is no longer offered — pick another model to continue this chat`:void 0,children:Oe}),M?.free&&!Te&&!Ee&&!De?(0,K.jsx)(Aw,{}):null,ke?(0,K.jsx)(`span`,{className:`shrink-0 rounded bg-warn-soft px-1 text-[10px] text-warn`,"data-testid":`model-picker-staged`,children:pw}):null,(0,K.jsx)(`span`,{"aria-hidden":`true`,className:`text-fg-faint`,children:`▾`})]}),a?(0,K.jsxs)(`div`,{"data-testid":`model-picker-panel`,className:G(`absolute z-50 max-w-[calc(100vw-1rem)]`,ve?`bottom-full mb-1`:`top-full mt-1`),style:{width:`${Fw}rem`,left:ge},onKeyDown:pe,children:[(0,K.jsxs)(`div`,{className:`flex h-[26rem] max-h-[70vh] items-stretch gap-1`,children:[(0,K.jsxs)(`div`,{"data-testid":`model-picker-chrome`,className:`flex flex-shrink-0 flex-col overflow-hidden rounded-lg border border-border bg-surface shadow-lg`,style:{width:`${Pw}rem`},children:[Te&&we?(0,K.jsxs)(`div`,{className:`flex items-start gap-1.5 border-b border-danger/40 bg-danger-soft px-2 py-1.5 text-[11px] leading-snug text-danger`,"data-testid":`model-picker-safeguard-note`,role:`note`,children:[(0,K.jsx)(Y.Shield,{className:`mt-px w-3 h-3 flex-shrink-0`,"aria-hidden":`true`}),(0,K.jsx)(`span`,{children:we})]}):null,Ee&&je?(0,K.jsx)(`div`,{className:`border-b border-danger/40 bg-danger-soft px-2 py-1.5 text-[11px] leading-snug text-danger`,"data-testid":`model-picker-custom-note`,role:`note`,children:je}):null,ke&&Ae?(0,K.jsx)(`div`,{className:`border-b border-warn/40 bg-warn-soft px-2 py-1.5 text-[11px] leading-snug text-warn`,"data-testid":`model-picker-staged-note`,role:`note`,children:Ae}):null,(0,K.jsx)(`div`,{className:`border-b border-border p-1.5`,children:(0,K.jsx)(`input`,{ref:S,type:`text`,"data-testid":`model-provider-search`,"aria-label":`Find a model in any provider`,placeholder:`Find a model in any provider…`,className:`w-full rounded border-0 bg-transparent px-1.5 py-1 text-xs text-fg outline-none placeholder:text-fg-faint`,value:d,onFocus:()=>m(`providers`),onChange:e=>{f(e.target.value),m(`providers`)}})}),(0,K.jsxs)(`div`,{role:`menu`,"aria-label":`Provider`,"data-testid":`model-providers`,className:`min-h-0 flex-1 overflow-y-auto py-1`,children:[T.length===0?(0,K.jsx)(`div`,{className:`px-3 py-6 text-center text-xs text-fg-muted`,children:`No provider configured — add one in Settings → Providers`}):T.length>0&&ne.length===0?(0,K.jsxs)(`div`,{className:`px-3 py-6 text-center text-xs text-fg-muted`,"data-testid":`model-providers-empty`,children:[`No model matches “`,d.trim(),`”`]}):null,ne.map(({g:e,models:t})=>{let n=Wp(e);return(0,K.jsx)(Lw,{keyId:n,label:e.label,providerId:e.providerId,count:t.length,direct:e.route===`direct`,open:R===n,walking:p===`providers`,current:e===L,onPick:()=>de(n),onHover:()=>fe(n),onLeave:oe},n)}),E?(0,K.jsx)(`button`,{type:`button`,"data-testid":`model-agy-setup`,className:`flex w-full items-center px-3 py-2 text-left text-xs text-accent hover:bg-fg/5`,onClick:()=>{ce(!1),r.openProviderConnect(jh)},children:`Set up Gemini on your Google plan…`}):null]}),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 border-t border-border px-2 py-1.5 text-[11px]`,children:[(0,K.jsx)(`button`,{type:`button`,"data-testid":`manage-models-entry`,className:`text-fg-muted hover:text-fg`,onClick:()=>{ce(!1),r.openDialog(`manage-models`)},children:`Manage models…`}),(0,K.jsx)(`button`,{type:`button`,"data-testid":`manage-providers-entry`,className:`text-fg-muted hover:text-fg`,onClick:()=>{ce(!1),r.openSettings(`providers`)},children:`Manage providers…`}),(0,K.jsx)(`a`,{href:`https://artificialanalysis.ai/`,target:`_blank`,rel:`noreferrer noopener`,className:`text-fg-faint hover:text-fg-muted`,title:`IQ and coding scores are Artificial Analysis's measurements`,children:`ratings by Artificial Analysis`})]})]}),T.length>0?(0,K.jsxs)(`div`,{"data-testid":`model-picker-flyout`,className:`flex min-w-0 flex-1 flex-col overflow-hidden rounded-lg border border-border bg-surface shadow-lg`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b border-border bg-surface-2 px-2 py-1 text-[10px] font-semibold tracking-wide text-fg-muted uppercase`,children:[B?(0,K.jsx)(xw,{providerId:B.providerId,displayName:B.label,size:12}):null,(0,K.jsx)(`span`,{className:`truncate`,"data-testid":`model-flyout-title`,children:B?B.label:``}),B?.route===`direct`?(0,K.jsx)(`span`,{className:`flex-shrink-0 font-normal tracking-normal text-fg-faint normal-case`,title:`Runs straight from this PC to the provider — never through our servers.`,children:`· direct`}):null,(0,K.jsx)(`span`,{className:`ml-auto flex-shrink-0 font-normal tracking-normal text-fg-faint normal-case`,title:`Best first by Artificial Analysis's intelligence index; models they do not rate come last.`,children:`sorted by IQ`})]}),(0,K.jsx)(`div`,{className:`border-b border-border p-1.5`,children:(0,K.jsx)(`input`,{ref:x,type:`text`,"data-testid":`model-search`,placeholder:B?`Search ${B.label} models…`:`Search all models…`,className:`w-full rounded border-0 bg-transparent px-1.5 py-1 text-xs text-fg outline-none placeholder:text-fg-faint`,value:ie,onFocus:()=>m(`models`),onChange:e=>{u(t=>({...t,[R]:e.target.value})),m(`models`)}})}),(0,K.jsxs)(`div`,{ref:b,role:`listbox`,"aria-label":`Model`,className:`min-h-0 flex-1 overflow-y-auto`,children:[ae.length===0?(0,K.jsxs)(`div`,{className:`px-3 py-6 text-center text-xs text-fg-muted`,children:[`Nothing matches “`,ie,`”`]}):null,ae.map((e,t)=>(0,K.jsx)(Iw,{m:e.m,selected:e.m.value===j||Kp(e.m,k),active:t===h,...B===null?{providerLabel:e.group}:{},onHover:()=>g(t),onPick:()=>le(e.m)},e.m.value)),B?(0,K.jsx)(Mw,{sectionKey:R,sectionLabel:B.label,providerId:B.providerId,current:F!==null&&B.providerId===k.providerId&&(B.variantId??null)===(k.variantId??null)?F:null,initial:bh(ie.trim())?ie.trim():``,onApply:async e=>{let t=await r.setSessionCustomModel(e,i??void 0,{providerId:B.providerId,variantId:B.variantId});return t&&ce(),t}}):null]})]}):null]}),ae[h]?(0,K.jsx)(Ew,{m:ae[h].m,group:ae[h].group,side:me}):null]}):null]})}var zw=`Not available on this PC yet`,Bw=`Sign in first`,Vw=`Off: read-only — the agent can look but not change anything. On: it may change things, and asks you before every change.`;function Hw(e){return!!e.connector}function Uw(e){return`Sign in on ${e?.trim()||`that PC`} — the sign-in opens a browser on that PC`}function Ww(e=typeof window>`u`?null:window.location){if(!e)return!1;let t=e.hostname.replace(/^\[|\]$/g,``).toLowerCase();return e.protocol===`file:`||e.protocol===`app:`||e.protocol===`oonacode:`||t===``||t===`localhost`||t===`127.0.0.1`||t===`::1`?!1:!t.endsWith(`.localhost`)}function Gw(e){let t=e.cli;return t?t.installed?`${t.command} ${t.version??``}`.trim()+` installed`:`${t.command} CLI not installed${t.installHint?` — ${t.installHint}`:``}`:null}function Kw(e){return`Vendor skills: ${e.skills.installed} of ${e.skills.total} installed`}function qw(e){if(e.toolName!==`ConnectorChange`)return null;let t=e.input;if(!t||typeof t!=`object`||typeof t.connector!=`string`||typeof t.vendor!=`string`||typeof t.tool!=`string`)return null;let n=t.arguments;return{connector:t.connector,vendor:t.vendor,tool:t.tool,description:typeof t.description==`string`?t.description:``,arguments:n&&typeof n==`object`&&!Array.isArray(n)?n:{}}}function Jw(e,t){return`${t?`Allowed`:`Denied`} ${e.tool} on ${e.vendor}`}var Yw=4e3;function Xw(e){let t=!1,n=(e,r)=>{if(typeof e==`string`)return e.length<=300?e:(t=!0,`${e.slice(0,300)}…`);if(Array.isArray(e)){if(r>6)return t=!0,`…`;let i=e.slice(0,12).map(e=>n(e,r+1));return e.length>12&&(t=!0,i.push(`… ${e.length-12} more`)),i}if(e&&typeof e==`object`){if(r>6)return t=!0,`…`;let i={};for(let[t,a]of Object.entries(e))i[t]=n(a,r+1);return i}return e},r=JSON.stringify(n(e,0),null,2)??`{}`;return r.length>4e3&&(r=`${r.slice(0,Yw)}…`,t=!0),{text:r,shortened:t}}var Zw=2e3;function Qw(e){return e instanceof $h?e.message||`The PC refused (${e.status}).`:e instanceof Error?e.message:`Something went wrong.`}function $w(e,t){let[n,r]=(0,v.useState)(null),[i,a]=(0,v.useState)(!1),[o,s]=(0,v.useState)(null),c=(0,v.useRef)(!0);(0,v.useEffect)(()=>(c.current=!0,()=>{c.current=!1}),[]);let l=(0,v.useCallback)(e=>{!e||typeof e!=`object`||typeof e.slug!=`string`||r(t=>({...t??{},[e.slug]:e}))},[]),u=(0,v.useCallback)(async()=>{if(!e.listConnectors){a(!0);return}try{let t=await e.listConnectors();if(!c.current)return;a(!1),r(Object.fromEntries(t.connectors.map(e=>[e.slug,e])))}catch(e){if(!c.current)return;rg(e)&&a(!0)}},[e]);(0,v.useEffect)(()=>{t&&u()},[t,u]);let d=Object.values(n??{}).some(e=>e.state===`connecting`);(0,v.useEffect)(()=>{if(!t||!d)return;let e=setInterval(()=>void u(),Zw);return()=>clearInterval(e)},[t,d,u]);let f=(0,v.useCallback)(async(e,t)=>{if(!t)return a(!0),!1;s(null);try{let e=await t();return!c.current||(e&&typeof e==`object`&&`slug`in e&&`state`in e&&l(e),await u(),!0)}catch(t){return c.current&&(rg(t)?a(!0):s({slug:e,message:Qw(t)})),!1}},[l,u]);return{byslug:n,unavailable:i,error:o,refresh:u,signIn:(t,n)=>f(t,e.signInConnector?()=>e.signInConnector(t,n):void 0),signOut:t=>f(t,e.signOutConnector?()=>e.signOutConnector(t):void 0),setAllowChanges:(t,n)=>f(t,e.updateConnector?()=>e.updateConnector(t,{allowChanges:n}):void 0),installSkills:t=>f(t,e.installConnectorSkills?()=>e.installConnectorSkills(t):void 0),clearError:()=>s(null)}}function eT(e){return e&&/^https?:\/\/\S+$/i.test(e)?e:null}var tT={"signed-out":`text-fg-muted`,connecting:`text-accent`,connected:`text-ok`,expired:`text-warn`,error:`text-danger`};function nT({pack:e,status:t,view:n,remoteName:r,onSignIn:i}){let a=e.connector,[o,s]=(0,v.useState)(!1),[c,l]=(0,v.useState)(null),u=(0,v.useRef)(null);(0,v.useEffect)(()=>()=>{u.current&&clearTimeout(u.current)},[]);let d=async(e,t)=>{l(e);try{await t()}finally{l(null)}};if(n.unavailable)return(0,K.jsx)(`p`,{className:`mt-1 text-[11px] text-fg-faint`,"data-testid":`connector-unavailable-${e.slug}`,children:zw});if(!t)return null;let f=eT(t.signInUrl),p=r!==null,m=Gw(t),h=t.cli&&!t.cli.installed?t.cli.installHint:null,g=t.skills.total>0&&t.skills.installed<t.skills.total,_=t.state===`connected`,y=t.state===`signed-out`||t.state===`expired`||t.state===`error`,b=async e=>{try{await navigator.clipboard?.writeText(e),s(!0),u.current&&clearTimeout(u.current),u.current=setTimeout(()=>s(!1),1500)}catch{}};return(0,K.jsxs)(`div`,{className:`mt-1.5 space-y-1.5 text-[11px]`,"data-testid":`connector-${e.slug}`,"data-state":t.state,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,K.jsx)(`span`,{className:G(`font-medium`,tT[t.state]),"data-testid":`connector-state-${e.slug}`,children:ql(t.state)}),t.account?(0,K.jsx)(`span`,{className:`truncate text-fg-muted`,"data-testid":`connector-account-${e.slug}`,children:t.account}):null,_?(0,K.jsx)(X,{size:`sm`,variant:`ghost`,busy:c===`out`,"data-testid":`connector-sign-out-${e.slug}`,onClick:()=>void d(`out`,()=>n.signOut(e.slug)),children:`Sign out`}):null,y&&!p?(0,K.jsx)(X,{size:`sm`,variant:`inverse`,"data-testid":`connector-sign-in-${e.slug}`,onClick:i,children:t.state===`signed-out`?`Sign in`:`Sign in again`}):null,t.state===`connecting`&&!p?(0,K.jsxs)(K.Fragment,{children:[f?(0,K.jsx)(`a`,{href:f,target:`_blank`,rel:`noreferrer noopener`,className:`text-accent underline`,"data-testid":`connector-sign-in-link-${e.slug}`,children:`Open the sign-in page`}):null,(0,K.jsx)(X,{size:`sm`,variant:`ghost`,busy:c===`cancel`,"data-testid":`connector-cancel-${e.slug}`,onClick:()=>void d(`cancel`,()=>n.signOut(e.slug)),children:`Cancel`})]}):null]}),y&&p?(0,K.jsx)(`p`,{className:`text-fg-muted`,"data-testid":`connector-remote-${e.slug}`,children:Uw(r)}):null,t.state===`connecting`&&p?(0,K.jsx)(`p`,{className:`text-fg-muted`,"data-testid":`connector-remote-${e.slug}`,children:Uw(r)}):null,(t.state===`error`||t.state===`expired`)&&t.message?(0,K.jsx)(`p`,{className:`text-fg-muted`,"data-testid":`connector-message-${e.slug}`,children:t.message}):null,_?(0,K.jsx)(`div`,{className:`-my-1`,"data-testid":`connector-allow-${e.slug}`,children:(0,K.jsx)(YS,{checked:t.allowChanges,label:`Allow changes`,hint:Vw,disabled:c===`allow`,onChange:t=>void d(`allow`,()=>n.setAllowChanges(e.slug,t))})}):null,n.error?.slug===e.slug?(0,K.jsx)(`p`,{className:`text-danger`,role:`alert`,"data-testid":`connector-error-${e.slug}`,children:n.error.message}):null,t.cli||t.skills.total>0?(0,K.jsxs)(`div`,{className:`rounded border border-border bg-surface-2/50 px-2 py-1.5`,"data-testid":`connector-needs-${e.slug}`,children:[(0,K.jsx)(`div`,{className:`text-[10px] font-semibold uppercase tracking-wide text-fg-faint`,children:`Needs on this PC`}),m?(0,K.jsxs)(`div`,{className:`mt-1`,"data-testid":`connector-cli-${e.slug}`,children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-1.5`,children:[(0,K.jsx)(`span`,{className:`min-w-0 flex-1 break-words text-fg`,children:m}),h?(0,K.jsxs)(X,{size:`sm`,variant:`ghost`,"data-testid":`connector-copy-${e.slug}`,onClick:()=>void b(h),children:[(0,K.jsx)(Y.Copy,{className:`w-3 h-3`}),` `,o?`Copied`:`Copy`]}):null]}),a.cli?.purpose?(0,K.jsx)(`div`,{className:`text-fg-faint`,children:a.cli.purpose}):null]}):null,t.skills.total>0?(0,K.jsxs)(`div`,{className:`mt-1 flex items-center gap-1.5`,"data-testid":`connector-skills-${e.slug}`,children:[(0,K.jsx)(`span`,{className:`min-w-0 flex-1 text-fg`,children:Kw(t)}),g?(0,K.jsx)(X,{size:`sm`,variant:`secondary`,busy:c===`skills`,"data-testid":`connector-install-skills-${e.slug}`,onClick:()=>void d(`skills`,()=>n.installSkills(e.slug)),children:`Install skills`}):null]}):null]}):null,eT(a.docsUrl)?(0,K.jsxs)(`a`,{href:a.docsUrl,target:`_blank`,rel:`noreferrer noopener`,className:`text-accent underline`,"data-testid":`connector-docs-${e.slug}`,children:[a.vendor,` documentation`]}):null]})}function rT({pack:e,status:t,view:n,onDone:r}){let i=e.connector,[a,o]=(0,v.useState)(`choose`),[s,c]=(0,v.useState)(!1),l=(0,v.useRef)(null),u=i.auth.methods.includes(`token`)&&i.auth.token!==null,d=i.auth.methods.includes(`oauth`),f=t?.state===`connected`;(0,v.useEffect)(()=>{f&&r()},[f,r]);let p=t?.state===`connecting`,m=eT(t?.signInUrl),h=async()=>{c(!0),await n.signIn(e.slug,{method:`oauth`}),c(!1)},g=async()=>{let t=l.current,r=t?.value.trim()??``;!t||!r||(t.value=``,c(!0),await n.signIn(e.slug,{method:`token`,token:r}),c(!1))};return p?(0,K.jsxs)(`div`,{className:`space-y-3 text-sm`,"data-testid":`connector-dialog-waiting`,children:[(0,K.jsxs)(`p`,{className:`flex items-center gap-2 text-fg`,children:[(0,K.jsx)(Y.Spinner,{className:`w-4 h-4`}),` Waiting for your sign-in…`]}),(0,K.jsxs)(`p`,{className:`text-fg-muted`,children:[`A browser window opened on this PC. Sign in to `,i.vendor,` there and approve OonaCode.`]}),m?(0,K.jsx)(`p`,{className:`break-all`,children:(0,K.jsx)(`a`,{href:m,target:`_blank`,rel:`noreferrer noopener`,className:`text-accent underline`,"data-testid":`connector-dialog-link`,children:m})}):null,(0,K.jsx)(`div`,{className:`flex justify-end`,children:(0,K.jsx)(X,{variant:`ghost`,"data-testid":`connector-dialog-cancel`,onClick:()=>void n.signOut(e.slug).then(()=>{r()}),children:`Cancel`})})]}):(0,K.jsxs)(`div`,{className:`space-y-4 text-sm`,"data-testid":`connector-dialog`,children:[t&&(t.state===`error`||t.state===`expired`)&&t.message?(0,K.jsx)(`p`,{className:`rounded border border-border bg-surface-2 px-2 py-1.5 text-fg-muted`,children:t.message}):null,n.error?.slug===e.slug?(0,K.jsx)(`p`,{className:`text-danger`,role:`alert`,"data-testid":`connector-dialog-error`,children:n.error.message}):null,a===`choose`?(0,K.jsxs)(K.Fragment,{children:[d?(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(X,{variant:`inverse`,busy:s,"data-testid":`connector-dialog-oauth`,onClick:()=>void h(),children:[`Sign in with `,i.vendor]}),(0,K.jsxs)(`p`,{className:`mt-1 text-xs text-fg-faint`,children:[`Opens `,i.vendor,`'s own sign-in page in a browser on this PC. OonaCode never sees your password.`]})]}):null,u?(0,K.jsx)(`div`,{children:(0,K.jsx)(`button`,{type:`button`,className:`text-xs text-accent underline`,"data-testid":`connector-dialog-use-token`,onClick:()=>o(`token`),children:`Use an access token instead`})}):null]}):(0,K.jsxs)(`form`,{className:`space-y-2`,onSubmit:e=>{e.preventDefault(),g()},children:[(0,K.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[(0,K.jsx)(`span`,{className:`font-medium text-fg`,children:i.auth.token?.label??`Access token`}),(0,K.jsx)(`input`,{ref:l,type:`password`,autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`off`,spellCheck:!1,"data-lpignore":`true`,"data-testid":`connector-dialog-token`,className:Z,defaultValue:``,autoFocus:!0})]}),i.auth.token?.createUrl?(0,K.jsx)(`p`,{className:`text-xs`,children:(0,K.jsxs)(`a`,{href:i.auth.token.createUrl,target:`_blank`,rel:`noreferrer noopener`,className:`text-accent underline`,"data-testid":`connector-dialog-create-url`,children:[`Create a token at `,i.vendor]})}):null,i.auth.token?.note?(0,K.jsx)(`p`,{className:`text-xs text-fg-faint`,children:i.auth.token.note}):null,(0,K.jsx)(`p`,{className:`text-xs text-fg-faint`,children:`The token is sealed on this PC and synced to your other PCs only as ciphertext. This window forgets it as soon as it is sent.`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(X,{type:`submit`,variant:`inverse`,busy:s,"data-testid":`connector-dialog-send`,children:`Sign in`}),d?(0,K.jsx)(`button`,{type:`button`,className:`text-xs text-accent underline`,onClick:()=>o(`choose`),children:`Back`}):null]})]})]})}function iT(e,t){let n=t||{};return(e[e.length-1]===``?[...e,``]:e).join((n.padRight?` `:``)+`,`+(n.padLeft===!1?``:` `)).trim()}var aT=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,oT=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,sT={};function cT(e,t){return((t||sT).jsx?oT:aT).test(e)}var lT=/[ \t\n\f\r]/g;function uT(e){return typeof e==`object`?e.type===`text`&&dT(e.value):dT(e)}function dT(e){return e.replace(lT,``)===``}var fT=class{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}};fT.prototype.normal={},fT.prototype.property={},fT.prototype.space=void 0;function pT(e,t){let n={},r={};for(let t of e)Object.assign(n,t.property),Object.assign(r,t.normal);return new fT(n,r,t)}function mT(e){return e.toLowerCase()}var hT=class{constructor(e,t){this.attribute=t,this.property=e}};hT.prototype.attribute=``,hT.prototype.booleanish=!1,hT.prototype.boolean=!1,hT.prototype.commaOrSpaceSeparated=!1,hT.prototype.commaSeparated=!1,hT.prototype.defined=!1,hT.prototype.mustUseProperty=!1,hT.prototype.number=!1,hT.prototype.overloadedBoolean=!1,hT.prototype.property=``,hT.prototype.spaceSeparated=!1,hT.prototype.space=void 0;var gT=s({boolean:()=>vT,booleanish:()=>yT,commaOrSpaceSeparated:()=>CT,commaSeparated:()=>ST,number:()=>$,overloadedBoolean:()=>bT,spaceSeparated:()=>xT}),_T=0,vT=wT(),yT=wT(),bT=wT(),$=wT(),xT=wT(),ST=wT(),CT=wT();function wT(){return 2**++_T}var TT=Object.keys(gT),ET=class extends hT{constructor(e,t,n,r){let i=-1;if(super(e,t),DT(this,`space`,r),typeof n==`number`)for(;++i<TT.length;){let e=TT[i];DT(this,TT[i],(n&gT[e])===gT[e])}}};ET.prototype.defined=!0;function DT(e,t,n){n&&(e[t]=n)}function OT(e){let t={},n={};for(let[r,i]of Object.entries(e.properties)){let a=new ET(r,e.transform(e.attributes||{},r),i,e.space);e.mustUseProperty&&e.mustUseProperty.includes(r)&&(a.mustUseProperty=!0),t[r]=a,n[mT(r)]=r,n[mT(a.attribute)]=r}return new fT(t,n,e.space)}var kT=OT({properties:{ariaActiveDescendant:null,ariaAtomic:yT,ariaAutoComplete:null,ariaBusy:yT,ariaChecked:yT,ariaColCount:$,ariaColIndex:$,ariaColSpan:$,ariaControls:xT,ariaCurrent:null,ariaDescribedBy:xT,ariaDetails:null,ariaDisabled:yT,ariaDropEffect:xT,ariaErrorMessage:null,ariaExpanded:yT,ariaFlowTo:xT,ariaGrabbed:yT,ariaHasPopup:null,ariaHidden:yT,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:xT,ariaLevel:$,ariaLive:null,ariaModal:yT,ariaMultiLine:yT,ariaMultiSelectable:yT,ariaOrientation:null,ariaOwns:xT,ariaPlaceholder:null,ariaPosInSet:$,ariaPressed:yT,ariaReadOnly:yT,ariaRelevant:null,ariaRequired:yT,ariaRoleDescription:xT,ariaRowCount:$,ariaRowIndex:$,ariaRowSpan:$,ariaSelected:yT,ariaSetSize:$,ariaSort:null,ariaValueMax:$,ariaValueMin:$,ariaValueNow:$,ariaValueText:null,role:null},transform(e,t){return t===`role`?t:`aria-`+t.slice(4).toLowerCase()}});function AT(e,t){return t in e?e[t]:t}function jT(e,t){return AT(e,t.toLowerCase())}var MT=OT({attributes:{acceptcharset:`accept-charset`,classname:`class`,htmlfor:`for`,httpequiv:`http-equiv`},mustUseProperty:[`checked`,`multiple`,`muted`,`selected`],properties:{abbr:null,accept:ST,acceptCharset:xT,accessKey:xT,action:null,allow:null,allowFullScreen:vT,allowPaymentRequest:vT,allowUserMedia:vT,alpha:vT,alt:null,as:null,async:vT,autoCapitalize:null,autoComplete:xT,autoFocus:vT,autoPlay:vT,blocking:xT,capture:null,charSet:null,checked:vT,cite:null,className:xT,closedBy:null,colorSpace:null,cols:$,colSpan:$,command:null,commandFor:null,content:null,contentEditable:yT,controls:vT,controlsList:xT,coords:$|ST,crossOrigin:null,data:null,dateTime:null,decoding:null,default:vT,defer:vT,dir:null,dirName:null,disabled:vT,download:bT,draggable:yT,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:vT,formTarget:null,headers:xT,height:$,hidden:bT,high:$,href:null,hrefLang:null,htmlFor:xT,httpEquiv:xT,id:null,imageSizes:null,imageSrcSet:null,inert:vT,inputMode:null,integrity:null,is:null,isMap:vT,itemId:null,itemProp:xT,itemRef:xT,itemScope:vT,itemType:xT,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:vT,low:$,manifest:null,max:null,maxLength:$,media:null,method:null,min:null,minLength:$,multiple:vT,muted:vT,name:null,nonce:null,noModule:vT,noValidate:vT,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:vT,optimum:$,pattern:null,ping:xT,placeholder:null,playsInline:vT,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:vT,referrerPolicy:null,rel:xT,required:vT,reversed:vT,rows:$,rowSpan:$,sandbox:xT,scope:null,scoped:vT,seamless:vT,selected:vT,shadowRootClonable:vT,shadowRootCustomElementRegistry:vT,shadowRootDelegatesFocus:vT,shadowRootMode:null,shadowRootSerializable:vT,shape:null,size:$,sizes:null,slot:null,span:$,spellCheck:yT,src:null,srcDoc:null,srcLang:null,srcSet:null,start:$,step:null,style:null,tabIndex:$,target:null,title:null,translate:null,type:null,typeMustMatch:vT,useMap:null,value:yT,width:$,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:xT,axis:null,background:null,bgColor:null,border:$,borderColor:null,bottomMargin:$,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:vT,declare:vT,event:null,face:null,frame:null,frameBorder:null,hSpace:$,leftMargin:$,link:null,longDesc:null,lowSrc:null,marginHeight:$,marginWidth:$,noResize:vT,noHref:vT,noShade:vT,noWrap:vT,object:null,profile:null,prompt:null,rev:null,rightMargin:$,rules:null,scheme:null,scrolling:yT,standby:null,summary:null,text:null,topMargin:$,valueType:null,version:null,vAlign:null,vLink:null,vSpace:$,allowTransparency:null,autoCorrect:null,autoSave:null,credentialless:vT,disablePictureInPicture:vT,disableRemotePlayback:vT,exportParts:ST,part:xT,prefix:null,property:null,results:$,security:null,unselectable:null},space:`html`,transform:jT}),NT=OT({attributes:{accentHeight:`accent-height`,alignmentBaseline:`alignment-baseline`,arabicForm:`arabic-form`,baselineShift:`baseline-shift`,capHeight:`cap-height`,className:`class`,clipPath:`clip-path`,clipRule:`clip-rule`,colorInterpolation:`color-interpolation`,colorInterpolationFilters:`color-interpolation-filters`,colorProfile:`color-profile`,colorRendering:`color-rendering`,crossOrigin:`crossorigin`,dataType:`datatype`,dominantBaseline:`dominant-baseline`,enableBackground:`enable-background`,fillOpacity:`fill-opacity`,fillRule:`fill-rule`,floodColor:`flood-color`,floodOpacity:`flood-opacity`,fontFamily:`font-family`,fontSize:`font-size`,fontSizeAdjust:`font-size-adjust`,fontStretch:`font-stretch`,fontStyle:`font-style`,fontVariant:`font-variant`,fontWeight:`font-weight`,glyphName:`glyph-name`,glyphOrientationHorizontal:`glyph-orientation-horizontal`,glyphOrientationVertical:`glyph-orientation-vertical`,hrefLang:`hreflang`,horizAdvX:`horiz-adv-x`,horizOriginX:`horiz-origin-x`,horizOriginY:`horiz-origin-y`,imageRendering:`image-rendering`,letterSpacing:`letter-spacing`,lightingColor:`lighting-color`,markerEnd:`marker-end`,markerMid:`marker-mid`,markerStart:`marker-start`,maskType:`mask-type`,navDown:`nav-down`,navDownLeft:`nav-down-left`,navDownRight:`nav-down-right`,navLeft:`nav-left`,navNext:`nav-next`,navPrev:`nav-prev`,navRight:`nav-right`,navUp:`nav-up`,navUpLeft:`nav-up-left`,navUpRight:`nav-up-right`,onAbort:`onabort`,onActivate:`onactivate`,onAfterPrint:`onafterprint`,onBeforePrint:`onbeforeprint`,onBegin:`onbegin`,onCancel:`oncancel`,onCanPlay:`oncanplay`,onCanPlayThrough:`oncanplaythrough`,onChange:`onchange`,onClick:`onclick`,onClose:`onclose`,onCopy:`oncopy`,onCueChange:`oncuechange`,onCut:`oncut`,onDblClick:`ondblclick`,onDrag:`ondrag`,onDragEnd:`ondragend`,onDragEnter:`ondragenter`,onDragExit:`ondragexit`,onDragLeave:`ondragleave`,onDragOver:`ondragover`,onDragStart:`ondragstart`,onDrop:`ondrop`,onDurationChange:`ondurationchange`,onEmptied:`onemptied`,onEnd:`onend`,onEnded:`onended`,onError:`onerror`,onFocus:`onfocus`,onFocusIn:`onfocusin`,onFocusOut:`onfocusout`,onHashChange:`onhashchange`,onInput:`oninput`,onInvalid:`oninvalid`,onKeyDown:`onkeydown`,onKeyPress:`onkeypress`,onKeyUp:`onkeyup`,onLoad:`onload`,onLoadedData:`onloadeddata`,onLoadedMetadata:`onloadedmetadata`,onLoadStart:`onloadstart`,onMessage:`onmessage`,onMouseDown:`onmousedown`,onMouseEnter:`onmouseenter`,onMouseLeave:`onmouseleave`,onMouseMove:`onmousemove`,onMouseOut:`onmouseout`,onMouseOver:`onmouseover`,onMouseUp:`onmouseup`,onMouseWheel:`onmousewheel`,onOffline:`onoffline`,onOnline:`ononline`,onPageHide:`onpagehide`,onPageShow:`onpageshow`,onPaste:`onpaste`,onPause:`onpause`,onPlay:`onplay`,onPlaying:`onplaying`,onPopState:`onpopstate`,onProgress:`onprogress`,onRateChange:`onratechange`,onRepeat:`onrepeat`,onReset:`onreset`,onResize:`onresize`,onScroll:`onscroll`,onSeeked:`onseeked`,onSeeking:`onseeking`,onSelect:`onselect`,onShow:`onshow`,onStalled:`onstalled`,onStorage:`onstorage`,onSubmit:`onsubmit`,onSuspend:`onsuspend`,onTimeUpdate:`ontimeupdate`,onToggle:`ontoggle`,onUnload:`onunload`,onVolumeChange:`onvolumechange`,onWaiting:`onwaiting`,onZoom:`onzoom`,overlinePosition:`overline-position`,overlineThickness:`overline-thickness`,paintOrder:`paint-order`,panose1:`panose-1`,pointerEvents:`pointer-events`,referrerPolicy:`referrerpolicy`,renderingIntent:`rendering-intent`,shapeRendering:`shape-rendering`,stopColor:`stop-color`,stopOpacity:`stop-opacity`,strikethroughPosition:`strikethrough-position`,strikethroughThickness:`strikethrough-thickness`,strokeDashArray:`stroke-dasharray`,strokeDashOffset:`stroke-dashoffset`,strokeLineCap:`stroke-linecap`,strokeLineJoin:`stroke-linejoin`,strokeMiterLimit:`stroke-miterlimit`,strokeOpacity:`stroke-opacity`,strokeWidth:`stroke-width`,tabIndex:`tabindex`,textAnchor:`text-anchor`,textDecoration:`text-decoration`,textRendering:`text-rendering`,transformOrigin:`transform-origin`,typeOf:`typeof`,underlinePosition:`underline-position`,underlineThickness:`underline-thickness`,unicodeBidi:`unicode-bidi`,unicodeRange:`unicode-range`,unitsPerEm:`units-per-em`,vAlphabetic:`v-alphabetic`,vHanging:`v-hanging`,vIdeographic:`v-ideographic`,vMathematical:`v-mathematical`,vectorEffect:`vector-effect`,vertAdvY:`vert-adv-y`,vertOriginX:`vert-origin-x`,vertOriginY:`vert-origin-y`,wordSpacing:`word-spacing`,writingMode:`writing-mode`,xHeight:`x-height`,playbackOrder:`playbackorder`,timelineBegin:`timelinebegin`},properties:{about:CT,accentHeight:$,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:$,amplitude:$,arabicForm:null,ascent:$,attributeName:null,attributeType:null,azimuth:$,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:$,by:null,calcMode:null,capHeight:$,className:xT,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:$,diffuseConstant:$,direction:null,display:null,dur:null,divisor:$,dominantBaseline:null,download:vT,dx:null,dy:null,edgeMode:null,editable:null,elevation:$,enableBackground:null,end:null,event:null,exponent:$,externalResourcesRequired:null,fill:null,fillOpacity:$,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:ST,g2:ST,glyphName:ST,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:$,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:$,horizOriginX:$,horizOriginY:$,id:null,ideographic:$,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:$,k:$,k1:$,k2:$,k3:$,k4:$,kernelMatrix:CT,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:$,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskType:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:$,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:$,overlineThickness:$,paintOrder:null,panose1:null,path:null,pathLength:$,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:xT,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:$,pointsAtY:$,pointsAtZ:$,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:CT,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:CT,rev:CT,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:CT,requiredFeatures:CT,requiredFonts:CT,requiredFormats:CT,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:$,specularExponent:$,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:$,strikethroughThickness:$,string:null,stroke:null,strokeDashArray:CT,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:$,strokeOpacity:$,strokeWidth:null,style:null,surfaceScale:$,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:CT,tabIndex:$,tableValues:null,target:null,targetX:$,targetY:$,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:CT,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:$,underlineThickness:$,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:$,values:null,vAlphabetic:$,vMathematical:$,vectorEffect:null,vHanging:$,vIdeographic:$,version:null,vertAdvY:$,vertOriginX:$,vertOriginY:$,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:$,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:`svg`,transform:AT}),PT=OT({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:`xlink`,transform(e,t){return`xlink:`+t.slice(5).toLowerCase()}}),FT=OT({attributes:{xmlnsxlink:`xmlns:xlink`},properties:{xmlnsXLink:null,xmlns:null},space:`xmlns`,transform:jT}),IT=OT({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:`xml`,transform(e,t){return`xml:`+t.slice(3).toLowerCase()}}),LT={classId:`classID`,dataType:`datatype`,itemId:`itemID`,strokeDashArray:`strokeDasharray`,strokeDashOffset:`strokeDashoffset`,strokeLineCap:`strokeLinecap`,strokeLineJoin:`strokeLinejoin`,strokeMiterLimit:`strokeMiterlimit`,typeOf:`typeof`,xLinkActuate:`xlinkActuate`,xLinkArcRole:`xlinkArcrole`,xLinkHref:`xlinkHref`,xLinkRole:`xlinkRole`,xLinkShow:`xlinkShow`,xLinkTitle:`xlinkTitle`,xLinkType:`xlinkType`,xmlnsXLink:`xmlnsXlink`},RT=/[A-Z]/g,zT=/-[a-z]/g,BT=/^data[-\w.:]+$/i;function VT(e,t){let n=mT(t),r=t,i=hT;if(n in e.normal)return e.property[e.normal[n]];if(n.length>4&&n.slice(0,4)===`data`&&BT.test(t)){if(t.charAt(4)===`-`){let e=t.slice(5).replace(zT,UT);r=`data`+e.charAt(0).toUpperCase()+e.slice(1)}else{let e=t.slice(4);if(!zT.test(e)){let n=e.replace(RT,HT);n.charAt(0)!==`-`&&(n=`-`+n),t=`data`+n}}i=ET}return new i(r,t)}function HT(e){return`-`+e.toLowerCase()}function UT(e){return e.charAt(1).toUpperCase()}var WT=pT([kT,MT,PT,FT,IT],`html`),GT=pT([kT,NT,PT,FT,IT],`svg`);function KT(e){return e.join(` `).trim()}var qT=o(((e,t)=>{var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,r=/\n/g,i=/^\s*/,a=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,c=/^[;\s]*/,l=/^\s+|\s+$/g;function u(e,t){if(typeof e!=`string`)throw TypeError(`First argument must be a string`);if(!e)return[];t||={};var l=1,u=1;function f(e){var t=e.match(r);t&&(l+=t.length);var n=e.lastIndexOf(`
|
|
119
|
+
`);u=~n?e.length-n:u+e.length}function p(){var e={line:l,column:u};return function(t){return t.position=new m(e),_(),t}}function m(e){this.start=e,this.end={line:l,column:u},this.source=t.source}m.prototype.content=e;function h(n){var r=Error(t.source+`:`+l+`:`+u+`: `+n);if(r.reason=n,r.filename=t.source,r.line=l,r.column=u,r.source=e,!t.silent)throw r}function g(t){var n=t.exec(e);if(n){var r=n[0];return f(r),e=e.slice(r.length),n}}function _(){g(i)}function v(e){var t;for(e||=[];t=y();)t!==!1&&e.push(t);return e}function y(){var t=p();if(e.charAt(0)==`/`&&e.charAt(1)==`*`){for(var n=2;e.charAt(n)!=``&&(e.charAt(n)!=`*`||e.charAt(n+1)!=`/`);)++n;if(n+=2,e.charAt(n-1)===``)return h(`End of comment missing`);var r=e.slice(2,n-2);return u+=2,f(r),e=e.slice(n),u+=2,t({type:`comment`,comment:r})}}function b(){var e=p(),t=g(a);if(t){if(y(),!g(o))return h(`property missing ':'`);var r=g(s),i=e({type:`declaration`,property:d(t[0].replace(n,``)),value:r?d(r[0].replace(n,``)):``});return g(c),i}}function x(){var e=[];v(e);for(var t;t=b();)t!==!1&&(e.push(t),v(e));return e}return _(),x()}function d(e){return e?e.replace(l,``):``}t.exports=u})),JT=o((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var n=t(qT());function r(e,t){let r=null;if(!e||typeof e!=`string`)return r;let i=(0,n.default)(e),a=typeof t==`function`;return i.forEach(e=>{if(e.type!==`declaration`)return;let{property:n,value:i}=e;a?t(n,i,e):i&&(r||={},r[n]=i)}),r}})),YT=o((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,i=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,o=function(e){return!e||r.test(e)||t.test(e)},s=function(e,t){return t.toUpperCase()},c=function(e,t){return`${t}-`};e.camelCase=function(e,t){return t===void 0&&(t={}),o(e)?e:(e=e.toLowerCase(),e=t.reactCompat?e.replace(a,c):e.replace(i,c),e.replace(n,s))}})),XT=o(((e,t)=>{var n=(e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}})(JT()),r=YT();function i(e,t){var i={};return!e||typeof e!=`string`||(0,n.default)(e,function(e,n){e&&n&&(i[(0,r.camelCase)(e,t)]=n)}),i}i.default=i,t.exports=i})),ZT=$T(`end`),QT=$T(`start`);function $T(e){return t;function t(t){let n=t&&t.position&&t.position[e]||{};if(typeof n.line==`number`&&n.line>0&&typeof n.column==`number`&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset==`number`&&n.offset>-1?n.offset:void 0}}}function eE(e){let t=QT(e),n=ZT(e);if(t&&n)return{start:t,end:n}}function tE(e){return!e||typeof e!=`object`?``:`position`in e||`type`in e?rE(e.position):`start`in e||`end`in e?rE(e):`line`in e||`column`in e?nE(e):``}function nE(e){return iE(e&&e.line)+`:`+iE(e&&e.column)}function rE(e){return nE(e&&e.start)+`-`+nE(e&&e.end)}function iE(e){return e&&typeof e==`number`?e:1}var aE=class extends Error{constructor(e,t,n){super(),typeof t==`string`&&(n=t,t=void 0);let r=``,i={},a=!1;if(t&&(i=`line`in t&&`column`in t||`start`in t&&`end`in t?{place:t}:`type`in t?{ancestors:[t],place:t.position}:{...t}),typeof e==`string`?r=e:!i.cause&&e&&(a=!0,r=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof n==`string`){let e=n.indexOf(`:`);e===-1?i.ruleId=n:(i.source=n.slice(0,e),i.ruleId=n.slice(e+1))}if(!i.place&&i.ancestors&&i.ancestors){let e=i.ancestors[i.ancestors.length-1];e&&(i.place=e.position)}let o=i.place&&`start`in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file=``,this.message=r,this.line=o?o.line:void 0,this.name=tE(i.place)||`1:1`,this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack==`string`?i.cause.stack:``,this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};aE.prototype.file=``,aE.prototype.name=``,aE.prototype.reason=``,aE.prototype.message=``,aE.prototype.stack=``,aE.prototype.column=void 0,aE.prototype.line=void 0,aE.prototype.ancestors=void 0,aE.prototype.cause=void 0,aE.prototype.fatal=void 0,aE.prototype.place=void 0,aE.prototype.ruleId=void 0,aE.prototype.source=void 0;var oE=l(XT(),1),sE={}.hasOwnProperty,cE=new Map,lE=/[A-Z]/g,uE=new Set([`table`,`tbody`,`thead`,`tfoot`,`tr`]),dE=new Set([`td`,`th`]),fE=`https://github.com/syntax-tree/hast-util-to-jsx-runtime`;function pE(e,t){if(!t||t.Fragment===void 0)throw TypeError("Expected `Fragment` in options");let n=t.filePath||void 0,r;if(t.development){if(typeof t.jsxDEV!=`function`)throw TypeError("Expected `jsxDEV` in options when `development: true`");r=wE(n,t.jsxDEV)}else{if(typeof t.jsx!=`function`)throw TypeError("Expected `jsx` in production options");if(typeof t.jsxs!=`function`)throw TypeError("Expected `jsxs` in production options");r=CE(n,t.jsx,t.jsxs)}let i={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||`react`,evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space===`svg`?GT:WT,stylePropertyNameCase:t.stylePropertyNameCase||`dom`,tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},a=mE(i,e,void 0);return a&&typeof a!=`string`?a:i.create(e,i.Fragment,{children:a||void 0},void 0)}function mE(e,t,n){if(t.type===`element`)return hE(e,t,n);if(t.type===`mdxFlowExpression`||t.type===`mdxTextExpression`)return gE(e,t);if(t.type===`mdxJsxFlowElement`||t.type===`mdxJsxTextElement`)return vE(e,t,n);if(t.type===`mdxjsEsm`)return _E(e,t);if(t.type===`root`)return yE(e,t,n);if(t.type===`text`)return bE(e,t)}function hE(e,t,n){let r=e.schema,i=r;t.tagName.toLowerCase()===`svg`&&r.space===`html`&&(i=GT,e.schema=i),e.ancestors.push(t);let a=AE(e,t.tagName,!1),o=TE(e,t),s=DE(e,t);return uE.has(t.tagName)&&(s=s.filter(function(e){return typeof e!=`string`||!uT(e)})),xE(e,o,a,t),SE(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function gE(e,t){if(t.data&&t.data.estree&&e.evaluater){let n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}jE(e,t.position)}function _E(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);jE(e,t.position)}function vE(e,t,n){let r=e.schema,i=r;t.name===`svg`&&r.space===`html`&&(i=GT,e.schema=i),e.ancestors.push(t);let a=t.name===null?e.Fragment:AE(e,t.name,!0),o=EE(e,t),s=DE(e,t);return xE(e,o,a,t),SE(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function yE(e,t,n){let r={};return SE(r,DE(e,t)),e.create(t,e.Fragment,r,n)}function bE(e,t){return t.value}function xE(e,t,n,r){typeof n!=`string`&&n!==e.Fragment&&e.passNode&&(t.node=r)}function SE(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function CE(e,t,n){return r;function r(e,r,i,a){let o=Array.isArray(i.children)?n:t;return a?o(r,i,a):o(r,i)}}function wE(e,t){return n;function n(n,r,i,a){let o=Array.isArray(i.children),s=QT(n);return t(r,i,a,o,{columnNumber:s?s.column-1:void 0,fileName:e,lineNumber:s?s.line:void 0},void 0)}}function TE(e,t){let n={},r,i;for(i in t.properties)if(i!==`children`&&sE.call(t.properties,i)){let a=OE(e,i,t.properties[i]);if(a){let[i,o]=a;e.tableCellAlignToStyle&&i===`align`&&typeof o==`string`&&dE.has(t.tagName)?r=o:n[i]=o}}if(r){let t=n.style||={};t[e.stylePropertyNameCase===`css`?`text-align`:`textAlign`]=r}return n}function EE(e,t){let n={};for(let r of t.attributes)if(r.type===`mdxJsxExpressionAttribute`){if(r.data&&r.data.estree&&e.evaluater){let t=r.data.estree.body[0];t.type;let i=t.expression;i.type;let a=i.properties[0];a.type,Object.assign(n,e.evaluater.evaluateExpression(a.argument))}else jE(e,t.position)}else{let i=r.name,a;if(r.value&&typeof r.value==`object`){if(r.value.data&&r.value.data.estree&&e.evaluater){let t=r.value.data.estree.body[0];t.type,a=e.evaluater.evaluateExpression(t.expression)}else jE(e,t.position)}else a=r.value===null||r.value;n[i]=a}return n}function DE(e,t){let n=[],r=-1,i=e.passKeys?new Map:cE;for(;++r<t.children.length;){let a=t.children[r],o;if(e.passKeys){let e=a.type===`element`?a.tagName:a.type===`mdxJsxFlowElement`||a.type===`mdxJsxTextElement`?a.name:void 0;if(e){let t=i.get(e)||0;o=e+`-`+t,i.set(e,t+1)}}let s=mE(e,a,o);s!==void 0&&n.push(s)}return n}function OE(e,t,n){let r=VT(e.schema,t);if(!(n==null||typeof n==`number`&&Number.isNaN(n))){if(Array.isArray(n)&&(n=r.commaSeparated?iT(n):KT(n)),r.property===`style`){let t=typeof n==`object`?n:kE(e,String(n));return e.stylePropertyNameCase===`css`&&(t=ME(t)),[`style`,t]}return[e.elementAttributeNameCase===`react`&&r.space?LT[r.property]||r.property:r.attribute,n]}}function kE(e,t){try{return(0,oE.default)(t,{reactCompat:!0})}catch(t){if(e.ignoreInvalidStyle)return{};let n=t,r=new aE("Cannot parse `style` attribute",{ancestors:e.ancestors,cause:n,ruleId:`style`,source:`hast-util-to-jsx-runtime`});throw r.file=e.filePath||void 0,r.url=fE+`#cannot-parse-style-attribute`,r}}function AE(e,t,n){let r;if(!n)r={type:`Literal`,value:t};else if(t.includes(`.`)){let e=t.split(`.`),n=-1,i;for(;++n<e.length;){let t=cT(e[n])?{type:`Identifier`,name:e[n]}:{type:`Literal`,value:e[n]};i=i?{type:`MemberExpression`,object:i,property:t,computed:!!(n&&t.type===`Literal`),optional:!1}:t}r=i}else r=cT(t)&&!/^[a-z]/.test(t)?{type:`Identifier`,name:t}:{type:`Literal`,value:t};if(r.type===`Literal`){let t=r.value;return sE.call(e.components,t)?e.components[t]:t}if(e.evaluater)return e.evaluater.evaluateExpression(r);jE(e)}function jE(e,t){let n=new aE("Cannot handle MDX estrees without `createEvaluater`",{ancestors:e.ancestors,place:t,ruleId:`mdx-estree`,source:`hast-util-to-jsx-runtime`});throw n.file=e.filePath||void 0,n.url=fE+`#cannot-handle-mdx-estrees-without-createevaluater`,n}function ME(e){let t={},n;for(n in e)sE.call(e,n)&&(t[NE(n)]=e[n]);return t}function NE(e){let t=e.replace(lE,PE);return t.slice(0,3)===`ms-`&&(t=`-`+t),t}function PE(e){return`-`+e.toLowerCase()}var FE={action:[`form`],cite:[`blockquote`,`del`,`ins`,`q`],data:[`object`],formAction:[`button`,`input`],href:[`a`,`area`,`base`,`link`],icon:[`menuitem`],itemId:null,manifest:[`html`],ping:[`a`,`area`],poster:[`video`],src:[`audio`,`embed`,`iframe`,`img`,`input`,`script`,`source`,`track`,`video`]},IE={};function LE(e,t){let n=t||IE;return RE(e,typeof n.includeImageAlt!=`boolean`||n.includeImageAlt,typeof n.includeHtml!=`boolean`||n.includeHtml)}function RE(e,t,n){if(BE(e)){if(`value`in e)return e.type===`html`&&!n?``:e.value;if(t&&`alt`in e&&e.alt)return e.alt;if(`children`in e)return zE(e.children,t,n)}return Array.isArray(e)?zE(e,t,n):``}function zE(e,t,n){let r=[],i=-1;for(;++i<e.length;)r[i]=RE(e[i],t,n);return r.join(``)}function BE(e){return!!(e&&typeof e==`object`)}var VE=document.createElement(`i`);function HE(e){let t=`&`+e+`;`;VE.innerHTML=t;let n=VE.textContent;return n.charCodeAt(n.length-1)===59&&e!==`semi`?!1:n!==t&&n}function UE(e,t,n,r){let i=e.length,a=0,o;if(t=t<0?-t>i?0:i+t:t>i?i:t,n=n>0?n:0,r.length<1e4)o=Array.from(r),o.unshift(t,n),e.splice(...o);else for(n&&e.splice(t,n);a<r.length;)o=r.slice(a,a+1e4),o.unshift(t,0),e.splice(...o),a+=1e4,t+=1e4}function WE(e,t){return e.length>0?(UE(e,e.length,0,t),e):t}var GE={}.hasOwnProperty;function KE(e){let t={},n=-1;for(;++n<e.length;)qE(t,e[n]);return t}function qE(e,t){let n;for(n in t){let r=(GE.call(e,n)?e[n]:void 0)||(e[n]={}),i=t[n],a;if(i)for(a in i){GE.call(r,a)||(r[a]=[]);let e=i[a];JE(r[a],Array.isArray(e)?e:e?[e]:[])}}}function JE(e,t){let n=-1,r=[];for(;++n<t.length;)(t[n].add===`after`?e:r).push(t[n]);UE(e,0,0,r)}function YE(e,t){let n=Number.parseInt(e,t);return n<9||n===11||n>13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)==65535||(n&65535)==65534||n>1114111?`�`:String.fromCodePoint(n)}function XE(e){return e.replace(/[\t\n\r ]+/g,` `).replace(/^ | $/g,``).toLowerCase().toUpperCase()}var ZE=lD(/[A-Za-z]/),QE=lD(/[\dA-Za-z]/),$E=lD(/[#-'*+\--9=?A-Z^-~]/);function eD(e){return e!==null&&(e<32||e===127)}var tD=lD(/\d/),nD=lD(/[\dA-Fa-f]/),rD=lD(/[!-/:-@[-`{-~]/);function iD(e){return e!==null&&e<-2}function aD(e){return e!==null&&(e<0||e===32)}function oD(e){return e===-2||e===-1||e===32}var sD=lD(/\p{P}|\p{S}/u),cD=lD(/\s/);function lD(e){return t;function t(t){return t!==null&&t>-1&&e.test(String.fromCharCode(t))}}function uD(e){let t=[],n=-1,r=0,i=0;for(;++n<e.length;){let a=e.charCodeAt(n),o=``;if(a===37&&QE(e.charCodeAt(n+1))&&QE(e.charCodeAt(n+2)))i=2;else if(a<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(a))||(o=String.fromCharCode(a));else if(a>55295&&a<57344){let t=e.charCodeAt(n+1);a<56320&&t>56319&&t<57344?(o=String.fromCharCode(a,t),i=1):o=`�`}else o=String.fromCharCode(a);o&&=(t.push(e.slice(r,n),encodeURIComponent(o)),r=n+i+1,``),i&&=(n+=i,0)}return t.join(``)+e.slice(r)}function dD(e,t,n,r){let i=r?r-1:1/0,a=0;return o;function o(r){return oD(r)?(e.enter(n),s(r)):t(r)}function s(r){return oD(r)&&a++<i?(e.consume(r),s):(e.exit(n),t(r))}}var fD={tokenize:pD};function pD(e){let t=e.attempt(this.parser.constructs.contentInitial,r,i),n;return t;function r(n){if(n===null){e.consume(n);return}return e.enter(`lineEnding`),e.consume(n),e.exit(`lineEnding`),dD(e,t,`linePrefix`)}function i(t){return e.enter(`paragraph`),a(t)}function a(t){let r=e.enter(`chunkText`,{contentType:`text`,previous:n});return n&&(n.next=r),n=r,o(t)}function o(t){if(t===null){e.exit(`chunkText`),e.exit(`paragraph`),e.consume(t);return}return iD(t)?(e.consume(t),e.exit(`chunkText`),a):(e.consume(t),o)}}var mD={tokenize:gD},hD={tokenize:_D};function gD(e){let t=this,n=[],r=0,i,a,o;return s;function s(i){if(r<n.length){let a=n[r];return t.containerState=a[1],e.attempt(a[0].continuation,c,l)(i)}return l(i)}function c(e){if(r++,t.containerState._closeFlow){t.containerState._closeFlow=void 0,i&&v();let n=t.events.length,a=n,o;for(;a--;)if(t.events[a][0]===`exit`&&t.events[a][1].type===`chunkFlow`){o=t.events[a][1].end;break}_(r);let s=n;for(;s<t.events.length;)t.events[s][1].end={...o},s++;return UE(t.events,a+1,0,t.events.slice(n)),t.events.length=s,l(e)}return s(e)}function l(a){if(r===n.length){if(!i)return f(a);if(i.currentConstruct&&i.currentConstruct.concrete)return m(a);t.interrupt=!!(i.currentConstruct&&!i._gfmTableDynamicInterruptHack)}return t.containerState={},e.check(hD,u,d)(a)}function u(e){return i&&v(),_(r),f(e)}function d(e){return t.parser.lazy[t.now().line]=r!==n.length,o=t.now().offset,m(e)}function f(n){return t.containerState={},e.attempt(hD,p,m)(n)}function p(e){return r++,n.push([t.currentConstruct,t.containerState]),f(e)}function m(n){if(n===null){i&&v(),_(0),e.consume(n);return}return i||=t.parser.flow(t.now()),e.enter(`chunkFlow`,{_tokenizer:i,contentType:`flow`,previous:a}),h(n)}function h(n){if(n===null){g(e.exit(`chunkFlow`),!0),_(0),e.consume(n);return}return iD(n)?(e.consume(n),g(e.exit(`chunkFlow`)),r=0,t.interrupt=void 0,s):(e.consume(n),h)}function g(e,n){let s=t.sliceStream(e);if(n&&s.push(null),e.previous=a,a&&(a.next=e),a=e,i.defineSkip(e.start),i.write(s),t.parser.lazy[e.start.line]){let e=i.events.length;for(;e--;)if(i.events[e][1].start.offset<o&&(!i.events[e][1].end||i.events[e][1].end.offset>o))return;let n=t.events.length,a=n,s,c;for(;a--;)if(t.events[a][0]===`exit`&&t.events[a][1].type===`chunkFlow`){if(s){c=t.events[a][1].end;break}s=!0}for(_(r),e=n;e<t.events.length;)t.events[e][1].end={...c},e++;UE(t.events,a+1,0,t.events.slice(n)),t.events.length=e}}function _(r){let i=n.length;for(;i-->r;){let r=n[i];t.containerState=r[1],r[0].exit.call(t,e)}n.length=r}function v(){i.write([null]),a=void 0,i=void 0,t.containerState._closeFlow=void 0}}function _D(e,t,n){return dD(e,e.attempt(this.parser.constructs.document,t,n),`linePrefix`,this.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)}function vD(e){if(e===null||aD(e)||cD(e))return 1;if(sD(e))return 2}function yD(e,t,n){let r=[],i=-1;for(;++i<e.length;){let a=e[i].resolveAll;a&&!r.includes(a)&&(t=a(t,n),r.push(a))}return t}var bD={name:`attention`,resolveAll:xD,tokenize:SD};function xD(e,t){let n=-1,r,i,a,o,s,c,l,u;for(;++n<e.length;)if(e[n][0]===`enter`&&e[n][1].type===`attentionSequence`&&e[n][1]._close){for(r=n;r--;)if(e[r][0]===`exit`&&e[r][1].type===`attentionSequence`&&e[r][1]._open&&t.sliceSerialize(e[r][1]).charCodeAt(0)===t.sliceSerialize(e[n][1]).charCodeAt(0)){if((e[r][1]._close||e[n][1]._open)&&(e[n][1].end.offset-e[n][1].start.offset)%3&&!((e[r][1].end.offset-e[r][1].start.offset+e[n][1].end.offset-e[n][1].start.offset)%3))continue;c=e[r][1].end.offset-e[r][1].start.offset>1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;let d={...e[r][1].end},f={...e[n][1].start};CD(d,-c),CD(f,c),o={type:c>1?`strongSequence`:`emphasisSequence`,start:d,end:{...e[r][1].end}},s={type:c>1?`strongSequence`:`emphasisSequence`,start:{...e[n][1].start},end:f},a={type:c>1?`strongText`:`emphasisText`,start:{...e[r][1].end},end:{...e[n][1].start}},i={type:c>1?`strong`:`emphasis`,start:{...o.start},end:{...s.end}},e[r][1].end={...o.start},e[n][1].start={...s.end},l=[],e[r][1].end.offset-e[r][1].start.offset&&(l=WE(l,[[`enter`,e[r][1],t],[`exit`,e[r][1],t]])),l=WE(l,[[`enter`,i,t],[`enter`,o,t],[`exit`,o,t],[`enter`,a,t]]),l=WE(l,yD(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),l=WE(l,[[`exit`,a,t],[`enter`,s,t],[`exit`,s,t],[`exit`,i,t]]),e[n][1].end.offset-e[n][1].start.offset?(u=2,l=WE(l,[[`enter`,e[n][1],t],[`exit`,e[n][1],t]])):u=0,UE(e,r-1,n-r+3,l),n=r+l.length-u-2;break}}for(n=-1;++n<e.length;)e[n][1].type===`attentionSequence`&&(e[n][1].type=`data`);return e}function SD(e,t){let n=this.parser.constructs.attentionMarkers.null,r=this.previous,i=vD(r),a;return o;function o(t){return a=t,e.enter(`attentionSequence`),s(t)}function s(o){if(o===a)return e.consume(o),s;let c=e.exit(`attentionSequence`),l=vD(o),u=!l||l===2&&i||n.includes(o),d=!i||i===2&&l||n.includes(r);return c._open=!!(a===42?u:u&&(i||!d)),c._close=!!(a===42?d:d&&(l||!u)),t(o)}}function CD(e,t){e.column+=t,e.offset+=t,e._bufferIndex+=t}var wD={name:`autolink`,tokenize:TD};function TD(e,t,n){let r=0;return i;function i(t){return e.enter(`autolink`),e.enter(`autolinkMarker`),e.consume(t),e.exit(`autolinkMarker`),e.enter(`autolinkProtocol`),a}function a(t){return ZE(t)?(e.consume(t),o):t===64?n(t):l(t)}function o(e){return e===43||e===45||e===46||QE(e)?(r=1,s(e)):l(e)}function s(t){return t===58?(e.consume(t),r=0,c):(t===43||t===45||t===46||QE(t))&&r++<32?(e.consume(t),s):(r=0,l(t))}function c(r){return r===62?(e.exit(`autolinkProtocol`),e.enter(`autolinkMarker`),e.consume(r),e.exit(`autolinkMarker`),e.exit(`autolink`),t):r===null||r===32||r===60||eD(r)?n(r):(e.consume(r),c)}function l(t){return t===64?(e.consume(t),u):$E(t)?(e.consume(t),l):n(t)}function u(e){return QE(e)?d(e):n(e)}function d(n){return n===46?(e.consume(n),r=0,u):n===62?(e.exit(`autolinkProtocol`).type=`autolinkEmail`,e.enter(`autolinkMarker`),e.consume(n),e.exit(`autolinkMarker`),e.exit(`autolink`),t):f(n)}function f(t){if((t===45||QE(t))&&r++<63){let n=t===45?f:d;return e.consume(t),n}return n(t)}}var ED={partial:!0,tokenize:DD};function DD(e,t,n){return r;function r(t){return oD(t)?dD(e,i,`linePrefix`)(t):i(t)}function i(e){return e===null||iD(e)?t(e):n(e)}}var OD={continuation:{tokenize:AD},exit:jD,name:`blockQuote`,tokenize:kD};function kD(e,t,n){let r=this;return i;function i(t){if(t===62){let n=r.containerState;return n.open||=(e.enter(`blockQuote`,{_container:!0}),!0),e.enter(`blockQuotePrefix`),e.enter(`blockQuoteMarker`),e.consume(t),e.exit(`blockQuoteMarker`),a}return n(t)}function a(n){return oD(n)?(e.enter(`blockQuotePrefixWhitespace`),e.consume(n),e.exit(`blockQuotePrefixWhitespace`),e.exit(`blockQuotePrefix`),t):(e.exit(`blockQuotePrefix`),t(n))}}function AD(e,t,n){let r=this;return i;function i(t){return oD(t)?dD(e,a,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):a(t)}function a(r){return e.attempt(OD,t,n)(r)}}function jD(e){e.exit(`blockQuote`)}var MD={name:`characterEscape`,tokenize:ND};function ND(e,t,n){return r;function r(t){return e.enter(`characterEscape`),e.enter(`escapeMarker`),e.consume(t),e.exit(`escapeMarker`),i}function i(r){return rD(r)?(e.enter(`characterEscapeValue`),e.consume(r),e.exit(`characterEscapeValue`),e.exit(`characterEscape`),t):n(r)}}var PD={name:`characterReference`,tokenize:FD};function FD(e,t,n){let r=this,i=0,a,o;return s;function s(t){return e.enter(`characterReference`),e.enter(`characterReferenceMarker`),e.consume(t),e.exit(`characterReferenceMarker`),c}function c(t){return t===35?(e.enter(`characterReferenceMarkerNumeric`),e.consume(t),e.exit(`characterReferenceMarkerNumeric`),l):(e.enter(`characterReferenceValue`),a=31,o=QE,u(t))}function l(t){return t===88||t===120?(e.enter(`characterReferenceMarkerHexadecimal`),e.consume(t),e.exit(`characterReferenceMarkerHexadecimal`),e.enter(`characterReferenceValue`),a=6,o=nD,u):(e.enter(`characterReferenceValue`),a=7,o=tD,u(t))}function u(s){if(s===59&&i){let i=e.exit(`characterReferenceValue`);return o===QE&&!HE(r.sliceSerialize(i))?n(s):(e.enter(`characterReferenceMarker`),e.consume(s),e.exit(`characterReferenceMarker`),e.exit(`characterReference`),t)}return o(s)&&i++<a?(e.consume(s),u):n(s)}}var ID={partial:!0,tokenize:zD},LD={concrete:!0,name:`codeFenced`,tokenize:RD};function RD(e,t,n){let r=this,i={partial:!0,tokenize:x},a=0,o=0,s;return c;function c(e){return l(e)}function l(t){let n=r.events[r.events.length-1];return a=n&&n[1].type===`linePrefix`?n[2].sliceSerialize(n[1],!0).length:0,s=t,e.enter(`codeFenced`),e.enter(`codeFencedFence`),e.enter(`codeFencedFenceSequence`),u(t)}function u(t){return t===s?(o++,e.consume(t),u):o<3?n(t):(e.exit(`codeFencedFenceSequence`),oD(t)?dD(e,d,`whitespace`)(t):d(t))}function d(n){return n===null||iD(n)?(e.exit(`codeFencedFence`),r.interrupt?t(n):e.check(ID,h,b)(n)):(e.enter(`codeFencedFenceInfo`),e.enter(`chunkString`,{contentType:`string`}),f(n))}function f(t){return t===null||iD(t)?(e.exit(`chunkString`),e.exit(`codeFencedFenceInfo`),d(t)):oD(t)?(e.exit(`chunkString`),e.exit(`codeFencedFenceInfo`),dD(e,p,`whitespace`)(t)):t===96&&t===s?n(t):(e.consume(t),f)}function p(t){return t===null||iD(t)?d(t):(e.enter(`codeFencedFenceMeta`),e.enter(`chunkString`,{contentType:`string`}),m(t))}function m(t){return t===null||iD(t)?(e.exit(`chunkString`),e.exit(`codeFencedFenceMeta`),d(t)):t===96&&t===s?n(t):(e.consume(t),m)}function h(t){return e.attempt(i,b,g)(t)}function g(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),_}function _(t){return a>0&&oD(t)?dD(e,v,`linePrefix`,a+1)(t):v(t)}function v(t){return t===null||iD(t)?e.check(ID,h,b)(t):(e.enter(`codeFlowValue`),y(t))}function y(t){return t===null||iD(t)?(e.exit(`codeFlowValue`),v(t)):(e.consume(t),y)}function b(n){return e.exit(`codeFenced`),t(n)}function x(e,t,n){let i=0;return a;function a(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),c}function c(t){return e.enter(`codeFencedFence`),oD(t)?dD(e,l,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):l(t)}function l(t){return t===s?(e.enter(`codeFencedFenceSequence`),u(t)):n(t)}function u(t){return t===s?(i++,e.consume(t),u):i>=o?(e.exit(`codeFencedFenceSequence`),oD(t)?dD(e,d,`whitespace`)(t):d(t)):n(t)}function d(r){return r===null||iD(r)?(e.exit(`codeFencedFence`),t(r)):n(r)}}}function zD(e,t,n){let r=this;return i;function i(t){return t===null?n(t):(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),a)}function a(e){return r.parser.lazy[r.now().line]?n(e):t(e)}}var BD={name:`codeIndented`,tokenize:HD},VD={partial:!0,tokenize:UD};function HD(e,t,n){let r=this;return i;function i(t){return e.enter(`codeIndented`),dD(e,a,`linePrefix`,5)(t)}function a(e){let t=r.events[r.events.length-1];return t&&t[1].type===`linePrefix`&&t[2].sliceSerialize(t[1],!0).length>=4?o(e):n(e)}function o(t){return t===null?c(t):iD(t)?e.attempt(VD,o,c)(t):(e.enter(`codeFlowValue`),s(t))}function s(t){return t===null||iD(t)?(e.exit(`codeFlowValue`),o(t)):(e.consume(t),s)}function c(n){return e.exit(`codeIndented`),t(n)}}function UD(e,t,n){let r=this;return i;function i(t){return r.parser.lazy[r.now().line]?n(t):iD(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),i):dD(e,a,`linePrefix`,5)(t)}function a(e){let a=r.events[r.events.length-1];return a&&a[1].type===`linePrefix`&&a[2].sliceSerialize(a[1],!0).length>=4?t(e):iD(e)?i(e):n(e)}}var WD={name:`codeText`,previous:KD,resolve:GD,tokenize:qD};function GD(e){let t=e.length-4,n=3,r,i;if((e[n][1].type===`lineEnding`||e[n][1].type===`space`)&&(e[t][1].type===`lineEnding`||e[t][1].type===`space`)){for(r=n;++r<t;)if(e[r][1].type===`codeTextData`){e[n][1].type=`codeTextPadding`,e[t][1].type=`codeTextPadding`,n+=2,t-=2;break}}for(r=n-1,t++;++r<=t;)i===void 0?r!==t&&e[r][1].type!==`lineEnding`&&(i=r):(r===t||e[r][1].type===`lineEnding`)&&(e[i][1].type=`codeTextData`,r!==i+2&&(e[i][1].end=e[r-1][1].end,e.splice(i+2,r-i-2),t-=r-i-2,r=i+2),i=void 0);return e}function KD(e){return e!==96||this.events[this.events.length-1][1].type===`characterEscape`}function qD(e,t,n){let r=0,i,a;return o;function o(t){return e.enter(`codeText`),e.enter(`codeTextSequence`),s(t)}function s(t){return t===96?(e.consume(t),r++,s):(e.exit(`codeTextSequence`),c(t))}function c(t){return t===null?n(t):t===32?(e.enter(`space`),e.consume(t),e.exit(`space`),c):t===96?(a=e.enter(`codeTextSequence`),i=0,u(t)):iD(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),c):(e.enter(`codeTextData`),l(t))}function l(t){return t===null||t===32||t===96||iD(t)?(e.exit(`codeTextData`),c(t)):(e.consume(t),l)}function u(n){return n===96?(e.consume(n),i++,u):i===r?(e.exit(`codeTextSequence`),e.exit(`codeText`),t(n)):(a.type=`codeTextData`,l(n))}}var JD=class{constructor(e){this.left=e?[...e]:[],this.right=[]}get(e){if(e<0||e>=this.left.length+this.right.length)throw RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return e<this.left.length?this.left[e]:this.right[this.right.length-e+this.left.length-1]}get length(){return this.left.length+this.right.length}shift(){return this.setCursor(0),this.right.pop()}slice(e,t){let n=t??1/0;return n<this.left.length?this.left.slice(e,n):e>this.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(e,t,n){let r=t||0;this.setCursor(Math.trunc(e));let i=this.right.splice(this.right.length-r,1/0);return n&&YD(this.left,n),i.reverse()}pop(){return this.setCursor(1/0),this.left.pop()}push(e){this.setCursor(1/0),this.left.push(e)}pushMany(e){this.setCursor(1/0),YD(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),YD(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0)){if(e<this.left.length){let t=this.left.splice(e,1/0);YD(this.right,t.reverse())}else{let t=this.right.splice(this.left.length+this.right.length-e,1/0);YD(this.left,t.reverse())}}}};function YD(e,t){let n=0;if(t.length<1e4)e.push(...t);else for(;n<t.length;)e.push(...t.slice(n,n+1e4)),n+=1e4}function XD(e){let t={},n=-1,r,i,a,o,s,c,l,u=new JD(e);for(;++n<u.length;){for(;n in t;)n=t[n];if(r=u.get(n),n&&r[1].type===`chunkFlow`&&u.get(n-1)[1].type===`listItemPrefix`&&(c=r[1]._tokenizer.events,a=0,a<c.length&&c[a][1].type===`lineEndingBlank`&&(a+=2),a<c.length&&c[a][1].type===`content`))for(;++a<c.length&&c[a][1].type!==`content`;)c[a][1].type===`chunkText`&&(c[a][1]._isInFirstContentOfListItem=!0,a++);if(r[0]===`enter`)r[1].contentType&&(Object.assign(t,ZD(u,n)),n=t[n],l=!0);else if(r[1]._container){for(a=n,i=void 0;a--;)if(o=u.get(a),o[1].type===`lineEnding`||o[1].type===`lineEndingBlank`)o[0]===`enter`&&(i&&(u.get(i)[1].type=`lineEndingBlank`),o[1].type=`lineEnding`,i=a);else if(o[1].type!==`linePrefix`&&o[1].type!==`listItemIndent`)break;i&&(r[1].end={...u.get(i)[1].start},s=u.slice(i,n),s.unshift(r),u.splice(i,n-i+1,s))}}return UE(e,0,1/0,u.slice(0)),!l}function ZD(e,t){let n=e.get(t)[1],r=e.get(t)[2],i=t-1,a=[],o=n._tokenizer;o||(o=r.parser[n.contentType](n.start),n._contentTypeTextTrailing&&(o._contentTypeTextTrailing=!0));let s=o.events,c=[],l={},u,d,f=-1,p=n,m=0,h=0,g=[h];for(;p;){for(;e.get(++i)[1]!==p;);a.push(i),p._tokenizer||(u=r.sliceStream(p),p.next||u.push(null),d&&o.defineSkip(p.start),p._isInFirstContentOfListItem&&(o._gfmTasklistFirstContentOfListItem=!0),o.write(u),p._isInFirstContentOfListItem&&(o._gfmTasklistFirstContentOfListItem=void 0)),d=p,p=p.next}for(p=n;++f<s.length;)s[f][0]===`exit`&&s[f-1][0]===`enter`&&s[f][1].type===s[f-1][1].type&&s[f][1].start.line!==s[f][1].end.line&&(h=f+1,g.push(h),p._tokenizer=void 0,p.previous=void 0,p=p.next);for(o.events=[],p?(p._tokenizer=void 0,p.previous=void 0):g.pop(),f=g.length;f--;){let t=s.slice(g[f],g[f+1]),n=a.pop();c.push([n,n+t.length-1]),e.splice(n,2,t)}for(c.reverse(),f=-1;++f<c.length;)l[m+c[f][0]]=m+c[f][1],m+=c[f][1]-c[f][0]-1;return l}var QD={resolve:eO,tokenize:tO},$D={partial:!0,tokenize:nO};function eO(e){return XD(e),e}function tO(e,t){let n;return r;function r(t){return e.enter(`content`),n=e.enter(`chunkContent`,{contentType:`content`}),i(t)}function i(t){return t===null?a(t):iD(t)?e.check($D,o,a)(t):(e.consume(t),i)}function a(n){return e.exit(`chunkContent`),e.exit(`content`),t(n)}function o(t){return e.consume(t),e.exit(`chunkContent`),n.next=e.enter(`chunkContent`,{contentType:`content`,previous:n}),n=n.next,i}}function nO(e,t,n){let r=this;return i;function i(t){return e.exit(`chunkContent`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),dD(e,a,`linePrefix`)}function a(i){if(i===null||iD(i))return n(i);let a=r.events[r.events.length-1];return!r.parser.constructs.disable.null.includes(`codeIndented`)&&a&&a[1].type===`linePrefix`&&a[2].sliceSerialize(a[1],!0).length>=4?t(i):e.interrupt(r.parser.constructs.flow,n,t)(i)}}function rO(e,t,n,r,i,a,o,s,c){let l=c||1/0,u=0;return d;function d(t){return t===60?(e.enter(r),e.enter(i),e.enter(a),e.consume(t),e.exit(a),f):t===null||t===32||t===41||eD(t)?n(t):(e.enter(r),e.enter(o),e.enter(s),e.enter(`chunkString`,{contentType:`string`}),h(t))}function f(n){return n===62?(e.enter(a),e.consume(n),e.exit(a),e.exit(i),e.exit(r),t):(e.enter(s),e.enter(`chunkString`,{contentType:`string`}),p(n))}function p(t){return t===62?(e.exit(`chunkString`),e.exit(s),f(t)):t===null||t===60||iD(t)?n(t):(e.consume(t),t===92?m:p)}function m(t){return t===60||t===62||t===92?(e.consume(t),p):p(t)}function h(i){return!u&&(i===null||i===41||aD(i))?(e.exit(`chunkString`),e.exit(s),e.exit(o),e.exit(r),t(i)):u<l&&i===40?(e.consume(i),u++,h):i===41?(e.consume(i),u--,h):i===null||i===32||i===40||eD(i)?n(i):(e.consume(i),i===92?g:h)}function g(t){return t===40||t===41||t===92?(e.consume(t),h):h(t)}}function iO(e,t,n,r,i,a){let o=this,s=0,c;return l;function l(t){return e.enter(r),e.enter(i),e.consume(t),e.exit(i),e.enter(a),u}function u(l){return s>999||l===null||l===91||l===93&&!c||l===94&&!s&&`_hiddenFootnoteSupport`in o.parser.constructs?n(l):l===93?(e.exit(a),e.enter(i),e.consume(l),e.exit(i),e.exit(r),t):iD(l)?(e.enter(`lineEnding`),e.consume(l),e.exit(`lineEnding`),u):(e.enter(`chunkString`,{contentType:`string`}),d(l))}function d(t){return t===null||t===91||t===93||iD(t)||s++>999?(e.exit(`chunkString`),u(t)):(e.consume(t),c||=!oD(t),t===92?f:d)}function f(t){return t===91||t===92||t===93?(e.consume(t),s++,d):d(t)}}function aO(e,t,n,r,i,a){let o;return s;function s(t){return t===34||t===39||t===40?(e.enter(r),e.enter(i),e.consume(t),e.exit(i),o=t===40?41:t,c):n(t)}function c(n){return n===o?(e.enter(i),e.consume(n),e.exit(i),e.exit(r),t):(e.enter(a),l(n))}function l(t){return t===o?(e.exit(a),c(o)):t===null?n(t):iD(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),dD(e,l,`linePrefix`)):(e.enter(`chunkString`,{contentType:`string`}),u(t))}function u(t){return t===o||t===null||iD(t)?(e.exit(`chunkString`),l(t)):(e.consume(t),t===92?d:u)}function d(t){return t===o||t===92?(e.consume(t),u):u(t)}}function oO(e,t){let n;return r;function r(i){return iD(i)?(e.enter(`lineEnding`),e.consume(i),e.exit(`lineEnding`),n=!0,r):oD(i)?dD(e,r,n?`linePrefix`:`lineSuffix`)(i):t(i)}}var sO={name:`definition`,tokenize:lO},cO={partial:!0,tokenize:uO};function lO(e,t,n){let r=this,i;return a;function a(t){return e.enter(`definition`),o(t)}function o(t){return iO.call(r,e,s,n,`definitionLabel`,`definitionLabelMarker`,`definitionLabelString`)(t)}function s(t){return i=XE(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),c):n(t)}function c(t){return aD(t)?oO(e,l)(t):l(t)}function l(t){return rO(e,u,n,`definitionDestination`,`definitionDestinationLiteral`,`definitionDestinationLiteralMarker`,`definitionDestinationRaw`,`definitionDestinationString`)(t)}function u(t){return e.attempt(cO,d,d)(t)}function d(t){return oD(t)?dD(e,f,`whitespace`)(t):f(t)}function f(a){return a===null||iD(a)?(e.exit(`definition`),r.parser.defined.push(i),t(a)):n(a)}}function uO(e,t,n){return r;function r(t){return aD(t)?oO(e,i)(t):n(t)}function i(t){return aO(e,a,n,`definitionTitle`,`definitionTitleMarker`,`definitionTitleString`)(t)}function a(t){return oD(t)?dD(e,o,`whitespace`)(t):o(t)}function o(e){return e===null||iD(e)?t(e):n(e)}}var dO={name:`hardBreakEscape`,tokenize:fO};function fO(e,t,n){return r;function r(t){return e.enter(`hardBreakEscape`),e.consume(t),i}function i(r){return iD(r)?(e.exit(`hardBreakEscape`),t(r)):n(r)}}var pO={name:`headingAtx`,resolve:mO,tokenize:hO};function mO(e,t){let n=e.length-2,r=3,i,a;return e[r][1].type===`whitespace`&&(r+=2),n-2>r&&e[n][1].type===`whitespace`&&(n-=2),e[n][1].type===`atxHeadingSequence`&&(r===n-1||n-4>r&&e[n-2][1].type===`whitespace`)&&(n-=r+1===n?2:4),n>r&&(i={type:`atxHeadingText`,start:e[r][1].start,end:e[n][1].end},a={type:`chunkText`,start:e[r][1].start,end:e[n][1].end,contentType:`text`},UE(e,r,n-r+1,[[`enter`,i,t],[`enter`,a,t],[`exit`,a,t],[`exit`,i,t]])),e}function hO(e,t,n){let r=0;return i;function i(t){return e.enter(`atxHeading`),a(t)}function a(t){return e.enter(`atxHeadingSequence`),o(t)}function o(t){return t===35&&r++<6?(e.consume(t),o):t===null||aD(t)?(e.exit(`atxHeadingSequence`),s(t)):n(t)}function s(n){return n===35?(e.enter(`atxHeadingSequence`),c(n)):n===null||iD(n)?(e.exit(`atxHeading`),t(n)):oD(n)?dD(e,s,`whitespace`)(n):(e.enter(`atxHeadingText`),l(n))}function c(t){return t===35?(e.consume(t),c):(e.exit(`atxHeadingSequence`),s(t))}function l(t){return t===null||t===35||aD(t)?(e.exit(`atxHeadingText`),s(t)):(e.consume(t),l)}}var gO=`address.article.aside.base.basefont.blockquote.body.caption.center.col.colgroup.dd.details.dialog.dir.div.dl.dt.fieldset.figcaption.figure.footer.form.frame.frameset.h1.h2.h3.h4.h5.h6.head.header.hr.html.iframe.legend.li.link.main.menu.menuitem.nav.noframes.ol.optgroup.option.p.param.search.section.summary.table.tbody.td.tfoot.th.thead.title.tr.track.ul`.split(`.`),_O=[`pre`,`script`,`style`,`textarea`],vO={concrete:!0,name:`htmlFlow`,resolveTo:xO,tokenize:SO},yO={partial:!0,tokenize:wO},bO={partial:!0,tokenize:CO};function xO(e){let t=e.length;for(;t--&&(e[t][0]!==`enter`||e[t][1].type!==`htmlFlow`););return t>1&&e[t-2][1].type===`linePrefix`&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function SO(e,t,n){let r=this,i,a,o,s,c;return l;function l(e){return u(e)}function u(t){return e.enter(`htmlFlow`),e.enter(`htmlFlowData`),e.consume(t),d}function d(s){return s===33?(e.consume(s),f):s===47?(e.consume(s),a=!0,h):s===63?(e.consume(s),i=3,r.interrupt?t:F):ZE(s)?(e.consume(s),o=String.fromCharCode(s),g):n(s)}function f(a){return a===45?(e.consume(a),i=2,p):a===91?(e.consume(a),i=5,s=0,m):ZE(a)?(e.consume(a),i=4,r.interrupt?t:F):n(a)}function p(i){return i===45?(e.consume(i),r.interrupt?t:F):n(i)}function m(i){return i===`CDATA[`.charCodeAt(s++)?(e.consume(i),s===6?r.interrupt?t:O:m):n(i)}function h(t){return ZE(t)?(e.consume(t),o=String.fromCharCode(t),g):n(t)}function g(s){if(s===null||s===47||s===62||aD(s)){let c=s===47,l=o.toLowerCase();return!c&&!a&&_O.includes(l)?(i=1,r.interrupt?t(s):O(s)):gO.includes(o.toLowerCase())?(i=6,c?(e.consume(s),_):r.interrupt?t(s):O(s)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(s):a?v(s):y(s))}return s===45||QE(s)?(e.consume(s),o+=String.fromCharCode(s),g):n(s)}function _(i){return i===62?(e.consume(i),r.interrupt?t:O):n(i)}function v(t){return oD(t)?(e.consume(t),v):E(t)}function y(t){return t===47?(e.consume(t),E):t===58||t===95||ZE(t)?(e.consume(t),b):oD(t)?(e.consume(t),y):E(t)}function b(t){return t===45||t===46||t===58||t===95||QE(t)?(e.consume(t),b):x(t)}function x(t){return t===61?(e.consume(t),S):oD(t)?(e.consume(t),x):y(t)}function S(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),c=t,C):oD(t)?(e.consume(t),S):w(t)}function C(t){return t===c?(e.consume(t),c=null,T):t===null||iD(t)?n(t):(e.consume(t),C)}function w(t){return t===null||t===34||t===39||t===47||t===60||t===61||t===62||t===96||aD(t)?x(t):(e.consume(t),w)}function T(e){return e===47||e===62||oD(e)?y(e):n(e)}function E(t){return t===62?(e.consume(t),D):n(t)}function D(t){return t===null||iD(t)?O(t):oD(t)?(e.consume(t),D):n(t)}function O(t){return t===45&&i===2?(e.consume(t),M):t===60&&i===1?(e.consume(t),N):t===62&&i===4?(e.consume(t),I):t===63&&i===3?(e.consume(t),F):t===93&&i===5?(e.consume(t),P):iD(t)&&(i===6||i===7)?(e.exit(`htmlFlowData`),e.check(yO,te,k)(t)):t===null||iD(t)?(e.exit(`htmlFlowData`),k(t)):(e.consume(t),O)}function k(t){return e.check(bO,A,te)(t)}function A(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),j}function j(t){return t===null||iD(t)?k(t):(e.enter(`htmlFlowData`),O(t))}function M(t){return t===45?(e.consume(t),F):O(t)}function N(t){return t===47?(e.consume(t),o=``,ee):O(t)}function ee(t){if(t===62){let n=o.toLowerCase();return _O.includes(n)?(e.consume(t),I):O(t)}return ZE(t)&&o.length<8?(e.consume(t),o+=String.fromCharCode(t),ee):O(t)}function P(t){return t===93?(e.consume(t),F):O(t)}function F(t){return t===62?(e.consume(t),I):t===45&&i===2?(e.consume(t),F):O(t)}function I(t){return t===null||iD(t)?(e.exit(`htmlFlowData`),te(t)):(e.consume(t),I)}function te(n){return e.exit(`htmlFlow`),t(n)}}function CO(e,t,n){let r=this;return i;function i(t){return iD(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),a):n(t)}function a(e){return r.parser.lazy[r.now().line]?n(e):t(e)}}function wO(e,t,n){return r;function r(r){return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),e.attempt(ED,t,n)}}var TO={name:`htmlText`,tokenize:EO};function EO(e,t,n){let r=this,i,a,o;return s;function s(t){return e.enter(`htmlText`),e.enter(`htmlTextData`),e.consume(t),c}function c(t){return t===33?(e.consume(t),l):t===47?(e.consume(t),x):t===63?(e.consume(t),y):ZE(t)?(e.consume(t),w):n(t)}function l(t){return t===45?(e.consume(t),u):t===91?(e.consume(t),a=0,m):ZE(t)?(e.consume(t),v):n(t)}function u(t){return t===45?(e.consume(t),p):n(t)}function d(t){return t===null?n(t):t===45?(e.consume(t),f):iD(t)?(o=d,N(t)):(e.consume(t),d)}function f(t){return t===45?(e.consume(t),p):d(t)}function p(e){return e===62?M(e):e===45?f(e):d(e)}function m(t){return t===`CDATA[`.charCodeAt(a++)?(e.consume(t),a===6?h:m):n(t)}function h(t){return t===null?n(t):t===93?(e.consume(t),g):iD(t)?(o=h,N(t)):(e.consume(t),h)}function g(t){return t===93?(e.consume(t),_):h(t)}function _(t){return t===62?M(t):t===93?(e.consume(t),_):h(t)}function v(t){return t===null||t===62?M(t):iD(t)?(o=v,N(t)):(e.consume(t),v)}function y(t){return t===null?n(t):t===63?(e.consume(t),b):iD(t)?(o=y,N(t)):(e.consume(t),y)}function b(e){return e===62?M(e):y(e)}function x(t){return ZE(t)?(e.consume(t),S):n(t)}function S(t){return t===45||QE(t)?(e.consume(t),S):C(t)}function C(t){return iD(t)?(o=C,N(t)):oD(t)?(e.consume(t),C):M(t)}function w(t){return t===45||QE(t)?(e.consume(t),w):t===47||t===62||aD(t)?T(t):n(t)}function T(t){return t===47?(e.consume(t),M):t===58||t===95||ZE(t)?(e.consume(t),E):iD(t)?(o=T,N(t)):oD(t)?(e.consume(t),T):M(t)}function E(t){return t===45||t===46||t===58||t===95||QE(t)?(e.consume(t),E):D(t)}function D(t){return t===61?(e.consume(t),O):iD(t)?(o=D,N(t)):oD(t)?(e.consume(t),D):T(t)}function O(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),i=t,k):iD(t)?(o=O,N(t)):oD(t)?(e.consume(t),O):(e.consume(t),A)}function k(t){return t===i?(e.consume(t),i=void 0,j):t===null?n(t):iD(t)?(o=k,N(t)):(e.consume(t),k)}function A(t){return t===null||t===34||t===39||t===60||t===61||t===96?n(t):t===47||t===62||aD(t)?T(t):(e.consume(t),A)}function j(e){return e===47||e===62||aD(e)?T(e):n(e)}function M(r){return r===62?(e.consume(r),e.exit(`htmlTextData`),e.exit(`htmlText`),t):n(r)}function N(t){return e.exit(`htmlTextData`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),ee}function ee(t){return oD(t)?dD(e,P,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):P(t)}function P(t){return e.enter(`htmlTextData`),o(t)}}var DO={name:`labelEnd`,resolveAll:jO,resolveTo:MO,tokenize:NO},OO={tokenize:PO},kO={tokenize:FO},AO={tokenize:IO};function jO(e){let t=-1,n=[];for(;++t<e.length;){let r=e[t][1];if(n.push(e[t]),r.type===`labelImage`||r.type===`labelLink`||r.type===`labelEnd`){let e=r.type===`labelImage`?4:2;r.type=`data`,t+=e}}return e.length!==n.length&&UE(e,0,e.length,n),e}function MO(e,t){let n=e.length,r=0,i,a,o,s;for(;n--;)if(i=e[n][1],a){if(i.type===`link`||i.type===`labelLink`&&i._inactive)break;e[n][0]===`enter`&&i.type===`labelLink`&&(i._inactive=!0)}else if(o){if(e[n][0]===`enter`&&(i.type===`labelImage`||i.type===`labelLink`)&&!i._balanced&&(a=n,i.type!==`labelLink`)){r=2;break}}else i.type===`labelEnd`&&(o=n);let c={type:e[a][1].type===`labelLink`?`link`:`image`,start:{...e[a][1].start},end:{...e[e.length-1][1].end}},l={type:`label`,start:{...e[a][1].start},end:{...e[o][1].end}},u={type:`labelText`,start:{...e[a+r+2][1].end},end:{...e[o-2][1].start}};return s=[[`enter`,c,t],[`enter`,l,t]],s=WE(s,e.slice(a+1,a+r+3)),s=WE(s,[[`enter`,u,t]]),s=WE(s,yD(t.parser.constructs.insideSpan.null,e.slice(a+r+4,o-3),t)),s=WE(s,[[`exit`,u,t],e[o-2],e[o-1],[`exit`,l,t]]),s=WE(s,e.slice(o+1)),s=WE(s,[[`exit`,c,t]]),UE(e,a,e.length,s),e}function NO(e,t,n){let r=this,i=r.events.length,a,o;for(;i--;)if((r.events[i][1].type===`labelImage`||r.events[i][1].type===`labelLink`)&&!r.events[i][1]._balanced){a=r.events[i][1];break}return s;function s(t){return a?a._inactive?d(t):(o=r.parser.defined.includes(XE(r.sliceSerialize({start:a.end,end:r.now()}))),e.enter(`labelEnd`),e.enter(`labelMarker`),e.consume(t),e.exit(`labelMarker`),e.exit(`labelEnd`),c):n(t)}function c(t){return t===40?e.attempt(OO,u,o?u:d)(t):t===91?e.attempt(kO,u,o?l:d)(t):o?u(t):d(t)}function l(t){return e.attempt(AO,u,d)(t)}function u(e){return t(e)}function d(e){return a._balanced=!0,n(e)}}function PO(e,t,n){return r;function r(t){return e.enter(`resource`),e.enter(`resourceMarker`),e.consume(t),e.exit(`resourceMarker`),i}function i(t){return aD(t)?oO(e,a)(t):a(t)}function a(t){return t===41?u(t):rO(e,o,s,`resourceDestination`,`resourceDestinationLiteral`,`resourceDestinationLiteralMarker`,`resourceDestinationRaw`,`resourceDestinationString`,32)(t)}function o(t){return aD(t)?oO(e,c)(t):u(t)}function s(e){return n(e)}function c(t){return t===34||t===39||t===40?aO(e,l,n,`resourceTitle`,`resourceTitleMarker`,`resourceTitleString`)(t):u(t)}function l(t){return aD(t)?oO(e,u)(t):u(t)}function u(r){return r===41?(e.enter(`resourceMarker`),e.consume(r),e.exit(`resourceMarker`),e.exit(`resource`),t):n(r)}}function FO(e,t,n){let r=this;return i;function i(t){return iO.call(r,e,a,o,`reference`,`referenceMarker`,`referenceString`)(t)}function a(e){return r.parser.defined.includes(XE(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)))?t(e):n(e)}function o(e){return n(e)}}function IO(e,t,n){return r;function r(t){return e.enter(`reference`),e.enter(`referenceMarker`),e.consume(t),e.exit(`referenceMarker`),i}function i(r){return r===93?(e.enter(`referenceMarker`),e.consume(r),e.exit(`referenceMarker`),e.exit(`reference`),t):n(r)}}var LO={name:`labelStartImage`,resolveAll:DO.resolveAll,tokenize:RO};function RO(e,t,n){let r=this;return i;function i(t){return e.enter(`labelImage`),e.enter(`labelImageMarker`),e.consume(t),e.exit(`labelImageMarker`),a}function a(t){return t===91?(e.enter(`labelMarker`),e.consume(t),e.exit(`labelMarker`),e.exit(`labelImage`),o):n(t)}function o(e){return e===94&&`_hiddenFootnoteSupport`in r.parser.constructs?n(e):t(e)}}var zO={name:`labelStartLink`,resolveAll:DO.resolveAll,tokenize:BO};function BO(e,t,n){let r=this;return i;function i(t){return e.enter(`labelLink`),e.enter(`labelMarker`),e.consume(t),e.exit(`labelMarker`),e.exit(`labelLink`),a}function a(e){return e===94&&`_hiddenFootnoteSupport`in r.parser.constructs?n(e):t(e)}}var VO={name:`lineEnding`,tokenize:HO};function HO(e,t){return n;function n(n){return e.enter(`lineEnding`),e.consume(n),e.exit(`lineEnding`),dD(e,t,`linePrefix`)}}var UO={name:`thematicBreak`,tokenize:WO};function WO(e,t,n){let r=0,i;return a;function a(t){return e.enter(`thematicBreak`),o(t)}function o(e){return i=e,s(e)}function s(a){return a===i?(e.enter(`thematicBreakSequence`),c(a)):r>=3&&(a===null||iD(a))?(e.exit(`thematicBreak`),t(a)):n(a)}function c(t){return t===i?(e.consume(t),r++,c):(e.exit(`thematicBreakSequence`),oD(t)?dD(e,s,`whitespace`)(t):s(t))}}var GO={continuation:{tokenize:YO},exit:ZO,name:`list`,tokenize:JO},KO={partial:!0,tokenize:QO},qO={partial:!0,tokenize:XO};function JO(e,t,n){let r=this,i=r.events[r.events.length-1],a=i&&i[1].type===`linePrefix`?i[2].sliceSerialize(i[1],!0).length:0,o=0;return s;function s(t){let i=r.containerState.type||(t===42||t===43||t===45?`listUnordered`:`listOrdered`);if(i===`listUnordered`?!r.containerState.marker||t===r.containerState.marker:tD(t)){if(r.containerState.type||(r.containerState.type=i,e.enter(i,{_container:!0})),i===`listUnordered`)return e.enter(`listItemPrefix`),t===42||t===45?e.check(UO,n,l)(t):l(t);if(!r.interrupt||t===49)return e.enter(`listItemPrefix`),e.enter(`listItemValue`),c(t)}return n(t)}function c(t){return tD(t)&&++o<10?(e.consume(t),c):(!r.interrupt||o<2)&&(r.containerState.marker?t===r.containerState.marker:t===41||t===46)?(e.exit(`listItemValue`),l(t)):n(t)}function l(t){return e.enter(`listItemMarker`),e.consume(t),e.exit(`listItemMarker`),r.containerState.marker=r.containerState.marker||t,e.check(ED,r.interrupt?n:u,e.attempt(KO,f,d))}function u(e){return r.containerState.initialBlankLine=!0,a++,f(e)}function d(t){return oD(t)?(e.enter(`listItemPrefixWhitespace`),e.consume(t),e.exit(`listItemPrefixWhitespace`),f):n(t)}function f(n){return r.containerState.size=a+r.sliceSerialize(e.exit(`listItemPrefix`),!0).length,t(n)}}function YO(e,t,n){let r=this;return r.containerState._closeFlow=void 0,e.check(ED,i,a);function i(n){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,dD(e,t,`listItemIndent`,r.containerState.size+1)(n)}function a(n){return r.containerState.furtherBlankLines||!oD(n)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,o(n)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(qO,t,o)(n))}function o(i){return r.containerState._closeFlow=!0,r.interrupt=void 0,dD(e,e.attempt(GO,t,n),`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(i)}}function XO(e,t,n){let r=this;return dD(e,i,`listItemIndent`,r.containerState.size+1);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`listItemIndent`&&i[2].sliceSerialize(i[1],!0).length===r.containerState.size?t(e):n(e)}}function ZO(e){e.exit(this.containerState.type)}function QO(e,t,n){let r=this;return dD(e,i,`listItemPrefixWhitespace`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:5);function i(e){let i=r.events[r.events.length-1];return!oD(e)&&i&&i[1].type===`listItemPrefixWhitespace`?t(e):n(e)}}var $O={name:`setextUnderline`,resolveTo:ek,tokenize:tk};function ek(e,t){let n=e.length,r,i,a;for(;n--;)if(e[n][0]===`enter`){if(e[n][1].type===`content`){r=n;break}e[n][1].type===`paragraph`&&(i=n)}else e[n][1].type===`content`&&e.splice(n,1),!a&&e[n][1].type===`definition`&&(a=n);let o={type:`setextHeading`,start:{...e[r][1].start},end:{...e[e.length-1][1].end}};return e[i][1].type=`setextHeadingText`,a?(e.splice(i,0,[`enter`,o,t]),e.splice(a+1,0,[`exit`,e[r][1],t]),e[r][1].end={...e[a][1].end}):e[r][1]=o,e.push([`exit`,o,t]),e}function tk(e,t,n){let r=this,i;return a;function a(t){let a=r.events.length,s;for(;a--;)if(r.events[a][1].type!==`lineEnding`&&r.events[a][1].type!==`linePrefix`&&r.events[a][1].type!==`content`){s=r.events[a][1].type===`paragraph`;break}return!r.parser.lazy[r.now().line]&&(r.interrupt||s)?(e.enter(`setextHeadingLine`),i=t,o(t)):n(t)}function o(t){return e.enter(`setextHeadingLineSequence`),s(t)}function s(t){return t===i?(e.consume(t),s):(e.exit(`setextHeadingLineSequence`),oD(t)?dD(e,c,`lineSuffix`)(t):c(t))}function c(r){return r===null||iD(r)?(e.exit(`setextHeadingLine`),t(r)):n(r)}}var nk={tokenize:rk};function rk(e){let t=this,n=e.attempt(ED,r,e.attempt(this.parser.constructs.flowInitial,i,dD(e,e.attempt(this.parser.constructs.flow,i,e.attempt(QD,i)),`linePrefix`)));return n;function r(r){if(r===null){e.consume(r);return}return e.enter(`lineEndingBlank`),e.consume(r),e.exit(`lineEndingBlank`),t.currentConstruct=void 0,n}function i(r){if(r===null){e.consume(r);return}return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),t.currentConstruct=void 0,n}}var ik={resolveAll:ck()},ak=sk(`string`),ok=sk(`text`);function sk(e){return{resolveAll:ck(e===`text`?lk:void 0),tokenize:t};function t(t){let n=this,r=this.parser.constructs[e],i=t.attempt(r,a,o);return a;function a(e){return c(e)?i(e):o(e)}function o(e){if(e===null){t.consume(e);return}return t.enter(`data`),t.consume(e),s}function s(e){return c(e)?(t.exit(`data`),i(e)):(t.consume(e),s)}function c(e){if(e===null)return!0;let t=r[e],i=-1;if(t)for(;++i<t.length;){let e=t[i];if(!e.previous||e.previous.call(n,n.previous))return!0}return!1}}}function ck(e){return t;function t(t,n){let r=-1,i;for(;++r<=t.length;)i===void 0?t[r]&&t[r][1].type===`data`&&(i=r,r++):(!t[r]||t[r][1].type!==`data`)&&(r!==i+2&&(t[i][1].end=t[r-1][1].end,t.splice(i+2,r-i-2),r=i+2),i=void 0);return e?e(t,n):t}}function lk(e,t){let n=0;for(;++n<=e.length;)if((n===e.length||e[n][1].type===`lineEnding`)&&e[n-1][1].type===`data`){let r=e[n-1][1],i=t.sliceStream(r),a=i.length,o=-1,s=0,c;for(;a--;){let e=i[a];if(typeof e==`string`){for(o=e.length;e.charCodeAt(o-1)===32;)s++,o--;if(o)break;o=-1}else if(e===-2)c=!0,s++;else if(e!==-1){a++;break}}if(t._contentTypeTextTrailing&&n===e.length&&(s=0),s){let i={type:n===e.length||c||s<2?`lineSuffix`:`hardBreakTrailing`,start:{_bufferIndex:a?o:r.start._bufferIndex+o,_index:r.start._index+a,line:r.end.line,column:r.end.column-s,offset:r.end.offset-s},end:{...r.end}};r.end={...i.start},r.start.offset===r.end.offset?Object.assign(r,i):(e.splice(n,0,[`enter`,i,t],[`exit`,i,t]),n+=2)}n++}return e}var uk=s({attentionMarkers:()=>vk,contentInitial:()=>fk,disable:()=>yk,document:()=>dk,flow:()=>mk,flowInitial:()=>pk,insideSpan:()=>_k,string:()=>hk,text:()=>gk}),dk={42:GO,43:GO,45:GO,48:GO,49:GO,50:GO,51:GO,52:GO,53:GO,54:GO,55:GO,56:GO,57:GO,62:OD},fk={91:sO},pk={[-2]:BD,[-1]:BD,32:BD},mk={35:pO,42:UO,45:[$O,UO],60:vO,61:$O,95:UO,96:LD,126:LD},hk={38:PD,92:MD},gk={[-5]:VO,[-4]:VO,[-3]:VO,33:LO,38:PD,42:bD,60:[wD,TO],91:zO,92:[dO,MD],93:DO,95:bD,96:WD},_k={null:[bD,ik]},vk={null:[42,95]},yk={null:[]};function bk(e,t,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0},i={},a=[],o=[],s=[],c={attempt:C(x),check:C(S),consume:v,enter:y,exit:b,interrupt:C(S,{interrupt:!0})},l={code:null,containerState:{},defineSkip:h,events:[],now:m,parser:e,previous:null,sliceSerialize:f,sliceStream:p,write:d},u=t.tokenize.call(l,c);return t.resolveAll&&a.push(t),l;function d(e){return o=WE(o,e),g(),o[o.length-1]===null?(w(t,0),l.events=yD(a,l.events,l),l.events):[]}function f(e,t){return Sk(p(e),t)}function p(e){return xk(o,e)}function m(){let{_bufferIndex:e,_index:t,line:n,column:i,offset:a}=r;return{_bufferIndex:e,_index:t,line:n,column:i,offset:a}}function h(e){i[e.line]=e.column,E()}function g(){let e;for(;r._index<o.length;){let t=o[r._index];if(typeof t==`string`)for(e=r._index,r._bufferIndex<0&&(r._bufferIndex=0);r._index===e&&r._bufferIndex<t.length;)_(t.charCodeAt(r._bufferIndex));else _(t)}}function _(e){u=u(e)}function v(e){iD(e)?(r.line++,r.column=1,r.offset+=e===-3?2:1,E()):e!==-1&&(r.column++,r.offset++),r._bufferIndex<0?r._index++:(r._bufferIndex++,r._bufferIndex===o[r._index].length&&(r._bufferIndex=-1,r._index++)),l.previous=e}function y(e,t){let n=t||{};return n.type=e,n.start=m(),l.events.push([`enter`,n,l]),s.push(n),n}function b(e){let t=s.pop();return t.end=m(),l.events.push([`exit`,t,l]),t}function x(e,t){w(e,t.from)}function S(e,t){t.restore()}function C(e,t){return n;function n(n,r,i){let a,o,s,u;return Array.isArray(n)?f(n):`tokenize`in n?f([n]):d(n);function d(e){return t;function t(t){let n=t!==null&&e[t],r=t!==null&&e.null;return f([...Array.isArray(n)?n:n?[n]:[],...Array.isArray(r)?r:r?[r]:[]])(t)}}function f(e){return a=e,o=0,e.length===0?i:p(e[o])}function p(e){return n;function n(n){return u=T(),s=e,e.partial||(l.currentConstruct=e),e.name&&l.parser.constructs.disable.null.includes(e.name)?h(n):e.tokenize.call(t?Object.assign(Object.create(l),t):l,c,m,h)(n)}}function m(t){return e(s,u),r}function h(e){return u.restore(),++o<a.length?p(a[o]):i}}}function w(e,t){e.resolveAll&&!a.includes(e)&&a.push(e),e.resolve&&UE(l.events,t,l.events.length-t,e.resolve(l.events.slice(t),l)),e.resolveTo&&(l.events=e.resolveTo(l.events,l))}function T(){let e=m(),t=l.previous,n=l.currentConstruct,i=l.events.length,a=Array.from(s);return{from:i,restore:o};function o(){r=e,l.previous=t,l.currentConstruct=n,l.events.length=i,s=a,E()}}function E(){r.line in i&&r.column<2&&(r.column=i[r.line],r.offset+=i[r.line]-1)}}function xk(e,t){let n=t.start._index,r=t.start._bufferIndex,i=t.end._index,a=t.end._bufferIndex,o;if(n===i)o=[e[n].slice(r,a)];else{if(o=e.slice(n,i),r>-1){let e=o[0];typeof e==`string`?o[0]=e.slice(r):o.shift()}a>0&&o.push(e[i].slice(0,a))}return o}function Sk(e,t){let n=-1,r=[],i;for(;++n<e.length;){let a=e[n],o;if(typeof a==`string`)o=a;else switch(a){case-5:o=`\r`;break;case-4:o=`
|
|
120
|
+
`;break;case-3:o=`\r
|
|
121
|
+
`;break;case-2:o=t?` `:` `;break;case-1:if(!t&&i)continue;o=` `;break;default:o=String.fromCharCode(a)}i=a===-2,r.push(o)}return r.join(``)}function Ck(e){let t={constructs:KE([uk,...(e||{}).extensions||[]]),content:n(fD),defined:[],document:n(mD),flow:n(nk),lazy:{},string:n(ak),text:n(ok)};return t;function n(e){return n;function n(n){return bk(t,e,n)}}}function wk(e){for(;!XD(e););return e}var Tk=/[\0\t\n\r]/g;function Ek(){let e=1,t=``,n=!0,r;return i;function i(i,a,o){let s=[],c,l,u,d,f;for(i=t+(typeof i==`string`?i.toString():new TextDecoder(a||void 0).decode(i)),u=0,t=``,n&&=(i.charCodeAt(0)===65279&&u++,void 0);u<i.length;){if(Tk.lastIndex=u,c=Tk.exec(i),d=c&&c.index!==void 0?c.index:i.length,f=i.charCodeAt(d),!c){t=i.slice(u);break}if(f===10&&u===d&&r)s.push(-3),r=void 0;else switch(r&&=(s.push(-5),void 0),u<d&&(s.push(i.slice(u,d)),e+=d-u),f){case 0:s.push(65533),e++;break;case 9:for(l=Math.ceil(e/4)*4,s.push(-2);e++<l;)s.push(-1);break;case 10:s.push(-4),e=1;break;default:r=!0,e=1}u=d+1}return o&&(r&&s.push(-5),t&&s.push(t),s.push(null)),s}}var Dk=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function Ok(e){return e.replace(Dk,kk)}function kk(e,t,n){if(t)return t;if(n.charCodeAt(0)===35){let e=n.charCodeAt(1),t=e===120||e===88;return YE(n.slice(t?2:1),t?16:10)}return HE(n)||e}var Ak={}.hasOwnProperty;function jk(e,t,n){return t&&typeof t==`object`&&(n=t,t=void 0),Mk(n)(wk(Ck(n).document().write(Ek()(e,t,!0))))}function Mk(e){let t={transforms:[],canContainEols:[`emphasis`,`fragment`,`heading`,`paragraph`,`strong`],enter:{autolink:a(me),autolinkProtocol:T,autolinkEmail:T,atxHeading:a(ue),blockQuote:a(ae),characterEscape:T,characterReference:T,codeFenced:a(oe),codeFencedFenceInfo:o,codeFencedFenceMeta:o,codeIndented:a(oe,o),codeText:a(se,o),codeTextData:T,data:T,codeFlowValue:T,definition:a(ce),definitionDestinationString:o,definitionLabelString:o,definitionTitleString:o,emphasis:a(le),hardBreakEscape:a(de),hardBreakTrailing:a(de),htmlFlow:a(fe,o),htmlFlowData:T,htmlText:a(fe,o),htmlTextData:T,image:a(pe),label:o,link:a(me),listItem:a(ge),listItemValue:f,listOrdered:a(he,d),listUnordered:a(he),paragraph:a(_e),reference:ne,referenceString:o,resourceDestinationString:o,resourceTitleString:o,setextHeading:a(ue),strong:a(ve),thematicBreak:a(be)},exit:{atxHeading:c(),atxHeadingSequence:x,autolink:c(),autolinkEmail:ie,autolinkProtocol:B,blockQuote:c(),characterEscapeValue:E,characterReferenceMarkerHexadecimal:L,characterReferenceMarkerNumeric:L,characterReferenceValue:R,characterReference:z,codeFenced:c(g),codeFencedFence:h,codeFencedFenceInfo:p,codeFencedFenceMeta:m,codeFlowValue:E,codeIndented:c(_),codeText:c(j),codeTextData:E,data:E,definition:c(),definitionDestinationString:b,definitionLabelString:v,definitionTitleString:y,emphasis:c(),hardBreakEscape:c(O),hardBreakTrailing:c(O),htmlFlow:c(k),htmlFlowData:E,htmlText:c(A),htmlTextData:E,image:c(N),label:P,labelText:ee,lineEnding:D,link:c(M),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:re,resourceDestinationString:F,resourceTitleString:I,resource:te,setextHeading:c(w),setextHeadingLineSequence:C,setextHeadingText:S,strong:c(),thematicBreak:c()}};Pk(t,(e||{}).mdastExtensions||[]);let n={};return r;function r(e){let r={type:`root`,children:[]},a={stack:[r],tokenStack:[],config:t,enter:s,exit:l,buffer:o,resume:u,data:n},c=[],d=-1;for(;++d<e.length;)(e[d][1].type===`listOrdered`||e[d][1].type===`listUnordered`)&&(e[d][0]===`enter`?c.push(d):d=i(e,c.pop(),d));for(d=-1;++d<e.length;){let n=t[e[d][0]];Ak.call(n,e[d][1].type)&&n[e[d][1].type].call(Object.assign({sliceSerialize:e[d][2].sliceSerialize},a),e[d][1])}if(a.tokenStack.length>0){let e=a.tokenStack[a.tokenStack.length-1];(e[1]||Ik).call(a,void 0,e[0])}for(r.position={start:Nk(e.length>0?e[0][1].start:{line:1,column:1,offset:0}),end:Nk(e.length>0?e[e.length-2][1].end:{line:1,column:1,offset:0})},d=-1;++d<t.transforms.length;)r=t.transforms[d](r)||r;return r}function i(e,t,n){let r=t-1,i=-1,a=!1,o,s,c,l;for(;++r<=n;){let t=e[r];switch(t[1].type){case`listUnordered`:case`listOrdered`:case`blockQuote`:t[0]===`enter`?i++:i--,l=void 0;break;case`lineEndingBlank`:t[0]===`enter`&&(o&&!l&&!i&&!c&&(c=r),l=void 0);break;case`linePrefix`:case`listItemValue`:case`listItemMarker`:case`listItemPrefix`:case`listItemPrefixWhitespace`:break;default:l=void 0}if(!i&&t[0]===`enter`&&t[1].type===`listItemPrefix`||i===-1&&t[0]===`exit`&&(t[1].type===`listUnordered`||t[1].type===`listOrdered`)){if(o){let i=r;for(s=void 0;i--;){let t=e[i];if(t[1].type===`lineEnding`||t[1].type===`lineEndingBlank`){if(t[0]===`exit`)continue;s&&(e[s][1].type=`lineEndingBlank`,a=!0),t[1].type=`lineEnding`,s=i}else if(t[1].type!==`linePrefix`&&t[1].type!==`blockQuotePrefix`&&t[1].type!==`blockQuotePrefixWhitespace`&&t[1].type!==`blockQuoteMarker`&&t[1].type!==`listItemIndent`)break}c&&(!s||c<s)&&(o._spread=!0),o.end=Object.assign({},s?e[s][1].start:t[1].end),e.splice(s||r,0,[`exit`,o,t[2]]),r++,n++}if(t[1].type===`listItemPrefix`){let i={type:`listItem`,_spread:!1,start:Object.assign({},t[1].start),end:void 0};o=i,e.splice(r,0,[`enter`,i,t[2]]),r++,n++,c=void 0,l=!0}}}return e[t][1]._spread=a,n}function a(e,t){return n;function n(n){s.call(this,e(n),n),t&&t.call(this,n)}}function o(){this.stack.push({type:`fragment`,children:[]})}function s(e,t,n){this.stack[this.stack.length-1].children.push(e),this.stack.push(e),this.tokenStack.push([t,n||void 0]),e.position={start:Nk(t.start),end:void 0}}function c(e){return t;function t(t){e&&e.call(this,t),l.call(this,t)}}function l(e,t){let n=this.stack.pop(),r=this.tokenStack.pop();if(r)r[0].type!==e.type&&(t?t.call(this,e,r[0]):(r[1]||Ik).call(this,e,r[0]));else throw Error("Cannot close `"+e.type+"` ("+tE({start:e.start,end:e.end})+`): it’s not open`);n.position.end=Nk(e.end)}function u(){return LE(this.stack.pop())}function d(){this.data.expectingFirstListItemValue=!0}function f(e){if(this.data.expectingFirstListItemValue){let t=this.stack[this.stack.length-2];t.start=Number.parseInt(this.sliceSerialize(e),10),this.data.expectingFirstListItemValue=void 0}}function p(){let e=this.resume(),t=this.stack[this.stack.length-1];t.lang=e}function m(){let e=this.resume(),t=this.stack[this.stack.length-1];t.meta=e}function h(){this.data.flowCodeInside||(this.buffer(),this.data.flowCodeInside=!0)}function g(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,``),this.data.flowCodeInside=void 0}function _(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e.replace(/(\r?\n|\r)$/g,``)}function v(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.label=t,n.identifier=XE(this.sliceSerialize(e)).toLowerCase()}function y(){let e=this.resume(),t=this.stack[this.stack.length-1];t.title=e}function b(){let e=this.resume(),t=this.stack[this.stack.length-1];t.url=e}function x(e){let t=this.stack[this.stack.length-1];t.depth||=this.sliceSerialize(e).length}function S(){this.data.setextHeadingSlurpLineEnding=!0}function C(e){let t=this.stack[this.stack.length-1];t.depth=this.sliceSerialize(e).codePointAt(0)===61?1:2}function w(){this.data.setextHeadingSlurpLineEnding=void 0}function T(e){let t=this.stack[this.stack.length-1].children,n=t[t.length-1];(!n||n.type!==`text`)&&(n=ye(),n.position={start:Nk(e.start),end:void 0},t.push(n)),this.stack.push(n)}function E(e){let t=this.stack.pop();t.value+=this.sliceSerialize(e),t.position.end=Nk(e.end)}function D(e){let n=this.stack[this.stack.length-1];if(this.data.atHardBreak){let t=n.children[n.children.length-1];t.position.end=Nk(e.end),this.data.atHardBreak=void 0;return}!this.data.setextHeadingSlurpLineEnding&&t.canContainEols.includes(n.type)&&(T.call(this,e),E.call(this,e))}function O(){this.data.atHardBreak=!0}function k(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e}function A(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e}function j(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e}function M(){let e=this.stack[this.stack.length-1];if(this.data.inReference){let t=this.data.referenceType||`shortcut`;e.type+=`Reference`,e.referenceType=t,delete e.url,delete e.title}else delete e.identifier,delete e.label;this.data.referenceType=void 0}function N(){let e=this.stack[this.stack.length-1];if(this.data.inReference){let t=this.data.referenceType||`shortcut`;e.type+=`Reference`,e.referenceType=t,delete e.url,delete e.title}else delete e.identifier,delete e.label;this.data.referenceType=void 0}function ee(e){let t=this.sliceSerialize(e),n=this.stack[this.stack.length-2];n.label=Ok(t),n.identifier=XE(t).toLowerCase()}function P(){let e=this.stack[this.stack.length-1],t=this.resume(),n=this.stack[this.stack.length-1];this.data.inReference=!0,n.type===`link`?n.children=e.children:n.alt=t}function F(){let e=this.resume(),t=this.stack[this.stack.length-1];t.url=e}function I(){let e=this.resume(),t=this.stack[this.stack.length-1];t.title=e}function te(){this.data.inReference=void 0}function ne(){this.data.referenceType=`collapsed`}function re(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.label=t,n.identifier=XE(this.sliceSerialize(e)).toLowerCase(),this.data.referenceType=`full`}function L(e){this.data.characterReferenceType=e.type}function R(e){let t=this.sliceSerialize(e),n=this.data.characterReferenceType,r;n?(r=YE(t,n===`characterReferenceMarkerNumeric`?10:16),this.data.characterReferenceType=void 0):r=HE(t);let i=this.stack[this.stack.length-1];i.value+=r}function z(e){let t=this.stack.pop();t.position.end=Nk(e.end)}function B(e){E.call(this,e);let t=this.stack[this.stack.length-1];t.url=this.sliceSerialize(e)}function ie(e){E.call(this,e);let t=this.stack[this.stack.length-1];t.url=`mailto:`+this.sliceSerialize(e)}function ae(){return{type:`blockquote`,children:[]}}function oe(){return{type:`code`,lang:null,meta:null,value:``}}function se(){return{type:`inlineCode`,value:``}}function ce(){return{type:`definition`,identifier:``,label:null,title:null,url:``}}function le(){return{type:`emphasis`,children:[]}}function ue(){return{type:`heading`,depth:0,children:[]}}function de(){return{type:`break`}}function fe(){return{type:`html`,value:``}}function pe(){return{type:`image`,title:null,url:``,alt:null}}function me(){return{type:`link`,title:null,url:``,children:[]}}function he(e){return{type:`list`,ordered:e.type===`listOrdered`,start:null,spread:e._spread,children:[]}}function ge(e){return{type:`listItem`,spread:e._spread,checked:null,children:[]}}function _e(){return{type:`paragraph`,children:[]}}function ve(){return{type:`strong`,children:[]}}function ye(){return{type:`text`,value:``}}function be(){return{type:`thematicBreak`}}}function Nk(e){return{line:e.line,column:e.column,offset:e.offset}}function Pk(e,t){let n=-1;for(;++n<t.length;){let r=t[n];Array.isArray(r)?Pk(e,r):Fk(e,r)}}function Fk(e,t){let n;for(n in t)if(Ak.call(t,n))switch(n){case`canContainEols`:{let r=t[n];r&&e[n].push(...r);break}case`transforms`:{let r=t[n];r&&e[n].push(...r);break}case`enter`:case`exit`:{let r=t[n];r&&Object.assign(e[n],r);break}}}function Ik(e,t){throw Error(e?"Cannot close `"+e.type+"` ("+tE({start:e.start,end:e.end})+"): a different token (`"+t.type+"`, "+tE({start:t.start,end:t.end})+`) is open`:"Cannot close document, a token (`"+t.type+"`, "+tE({start:t.start,end:t.end})+`) is still open`)}function Lk(e){let t=this;t.parser=n;function n(n){return jk(n,{...t.data(`settings`),...e,extensions:t.data(`micromarkExtensions`)||[],mdastExtensions:t.data(`fromMarkdownExtensions`)||[]})}}function Rk(e,t){let n={type:`element`,tagName:`blockquote`,properties:{},children:e.wrap(e.all(t),!0)};return e.patch(t,n),e.applyData(t,n)}function zk(e,t){let n={type:`element`,tagName:`br`,properties:{},children:[]};return e.patch(t,n),[e.applyData(t,n),{type:`text`,value:`
|
|
122
|
+
`}]}function Bk(e,t){let n=t.value?t.value+`
|
|
123
|
+
`:``,r={},i=t.lang?t.lang.split(/\s+/):[];i.length>0&&(r.className=[`language-`+i[0]]);let a={type:`element`,tagName:`code`,properties:r,children:[{type:`text`,value:n}]};return t.meta&&(a.data={meta:t.meta}),e.patch(t,a),a=e.applyData(t,a),a={type:`element`,tagName:`pre`,properties:{},children:[a]},e.patch(t,a),a}function Vk(e,t){let n={type:`element`,tagName:`del`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function Hk(e,t){let n={type:`element`,tagName:`em`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function Uk(e,t){let n=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,r=String(t.identifier).toUpperCase(),i=uD(r.toLowerCase()),a=e.footnoteOrder.indexOf(r),o,s=e.footnoteCounts.get(r);s===void 0?(s=0,e.footnoteOrder.push(r),o=e.footnoteOrder.length):o=a+1,s+=1,e.footnoteCounts.set(r,s);let c={type:`element`,tagName:`a`,properties:{href:`#`+n+`fn-`+i,id:n+`fnref-`+i+(s>1?`-`+s:``),dataFootnoteRef:!0,ariaDescribedBy:[`footnote-label`]},children:[{type:`text`,value:String(o)}]};e.patch(t,c);let l={type:`element`,tagName:`sup`,properties:{},children:[c]};return e.patch(t,l),e.applyData(t,l)}function Wk(e,t){let n={type:`element`,tagName:`h`+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function Gk(e,t){if(e.options.allowDangerousHtml){let n={type:`raw`,value:t.value};return e.patch(t,n),e.applyData(t,n)}}function Kk(e,t){let n=t.referenceType,r=`]`;if(n===`collapsed`?r+=`[]`:n===`full`&&(r+=`[`+(t.label||t.identifier)+`]`),t.type===`imageReference`)return[{type:`text`,value:`![`+t.alt+r}];let i=e.all(t),a=i[0];a&&a.type===`text`?a.value=`[`+a.value:i.unshift({type:`text`,value:`[`});let o=i[i.length-1];return o&&o.type===`text`?o.value+=r:i.push({type:`text`,value:r}),i}function qk(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return Kk(e,t);let i={src:uD(r.url||``),alt:t.alt};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`img`,properties:i,children:[]};return e.patch(t,a),e.applyData(t,a)}function Jk(e,t){let n={src:uD(t.url)};t.alt!==null&&t.alt!==void 0&&(n.alt=t.alt),t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`img`,properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)}function Yk(e,t){let n={type:`text`,value:t.value.replace(/\r?\n|\r/g,` `)};e.patch(t,n);let r={type:`element`,tagName:`code`,properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)}function Xk(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return Kk(e,t);let i={href:uD(r.url||``)};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`a`,properties:i,children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function Zk(e,t){let n={href:uD(t.url)};t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`a`,properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Qk(e,t,n){let r=e.all(t),i=n?$k(n):eA(t),a={},o=[];if(typeof t.checked==`boolean`){let e=r[0],n;e&&e.type===`element`&&e.tagName===`p`?n=e:(n={type:`element`,tagName:`p`,properties:{},children:[]},r.unshift(n)),n.children.length>0&&n.children.unshift({type:`text`,value:` `}),n.children.unshift({type:`element`,tagName:`input`,properties:{type:`checkbox`,checked:t.checked,disabled:!0},children:[]}),a.className=[`task-list-item`]}let s=-1;for(;++s<r.length;){let e=r[s];(i||s!==0||e.type!==`element`||e.tagName!==`p`)&&o.push({type:`text`,value:`
|
|
124
|
+
`}),e.type===`element`&&e.tagName===`p`&&!i?o.push(...e.children):o.push(e)}let c=r[r.length-1];c&&(i||c.type!==`element`||c.tagName!==`p`)&&o.push({type:`text`,value:`
|
|
125
|
+
`});let l={type:`element`,tagName:`li`,properties:a,children:o};return e.patch(t,l),e.applyData(t,l)}function $k(e){let t=!1;if(e.type===`list`){t=e.spread||!1;let n=e.children,r=-1;for(;!t&&++r<n.length;)t=eA(n[r])}return t}function eA(e){return e.spread??e.children.length>1}function tA(e,t){let n={},r=e.all(t),i=-1;for(typeof t.start==`number`&&t.start!==1&&(n.start=t.start);++i<r.length;){let e=r[i];if(e.type===`element`&&e.tagName===`li`&&e.properties&&Array.isArray(e.properties.className)&&e.properties.className.includes(`task-list-item`)){n.className=[`contains-task-list`];break}}let a={type:`element`,tagName:t.ordered?`ol`:`ul`,properties:n,children:e.wrap(r,!0)};return e.patch(t,a),e.applyData(t,a)}function nA(e,t){let n={type:`element`,tagName:`p`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function rA(e,t){let n={type:`root`,children:e.wrap(e.all(t))};return e.patch(t,n),e.applyData(t,n)}function iA(e,t){let n={type:`element`,tagName:`strong`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function aA(e,t){let n=e.all(t),r=n.shift(),i=[];if(r){let n={type:`element`,tagName:`thead`,properties:{},children:e.wrap([r],!0)};e.patch(t.children[0],n),i.push(n)}if(n.length>0){let r={type:`element`,tagName:`tbody`,properties:{},children:e.wrap(n,!0)},a=QT(t.children[1]),o=ZT(t.children[t.children.length-1]);a&&o&&(r.position={start:a,end:o}),i.push(r)}let a={type:`element`,tagName:`table`,properties:{},children:e.wrap(i,!0)};return e.patch(t,a),e.applyData(t,a)}function oA(e,t,n){let r=n?n.children:void 0,i=(r?r.indexOf(t):1)===0?`th`:`td`,a=n&&n.type===`table`?n.align:void 0,o=a?a.length:t.children.length,s=-1,c=[];for(;++s<o;){let n=t.children[s],r={},o=a?a[s]:void 0;o&&(r.align=o);let l={type:`element`,tagName:i,properties:r,children:[]};n&&(l.children=e.all(n),e.patch(n,l),l=e.applyData(n,l)),c.push(l)}let l={type:`element`,tagName:`tr`,properties:{},children:e.wrap(c,!0)};return e.patch(t,l),e.applyData(t,l)}function sA(e,t){let n={type:`element`,tagName:`td`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}var cA=9,lA=32;function uA(e){let t=String(e),n=/\r?\n|\r/g,r=n.exec(t),i=0,a=[];for(;r;)a.push(dA(t.slice(i,r.index),i>0,!0),r[0]),i=r.index+r[0].length,r=n.exec(t);return a.push(dA(t.slice(i),i>0,!1)),a.join(``)}function dA(e,t,n){let r=0,i=e.length;if(t){let t=e.codePointAt(r);for(;t===cA||t===lA;)r++,t=e.codePointAt(r)}if(n){let t=e.codePointAt(i-1);for(;t===cA||t===lA;)i--,t=e.codePointAt(i-1)}return i>r?e.slice(r,i):``}function fA(e,t){let n={type:`text`,value:uA(String(t.value))};return e.patch(t,n),e.applyData(t,n)}function pA(e,t){let n={type:`element`,tagName:`hr`,properties:{},children:[]};return e.patch(t,n),e.applyData(t,n)}var mA={blockquote:Rk,break:zk,code:Bk,delete:Vk,emphasis:Hk,footnoteReference:Uk,heading:Wk,html:Gk,imageReference:qk,image:Jk,inlineCode:Yk,linkReference:Xk,link:Zk,listItem:Qk,list:tA,paragraph:nA,root:rA,strong:iA,table:aA,tableCell:sA,tableRow:oA,text:fA,thematicBreak:pA,toml:hA,yaml:hA,definition:hA,footnoteDefinition:hA};function hA(){}var gA=typeof self==`object`?self:globalThis,_A=(e,t)=>{switch(e){case`Function`:case`SharedWorker`:case`Worker`:case`eval`:case`setInterval`:case`setTimeout`:throw TypeError(`unable to deserialize `+e)}return new gA[e](t)},vA=(e,t)=>{let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o;return n(typeof gA[e]==`function`?_A(e,t):Error(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}return n(_A(a,o),i)};return r},yA=e=>vA(new Map,e)(0),bA=``,{toString:xA}={},{keys:SA}=Object,CA=e=>{let t=typeof e;if(t!==`object`||!e)return[0,t];let n=xA.call(e).slice(8,-1);switch(n){case`Array`:return[1,bA];case`Object`:return[2,bA];case`Date`:return[3,bA];case`RegExp`:return[4,bA];case`Map`:return[5,bA];case`Set`:return[6,bA];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:e instanceof Error?[7,e.name||`Error`]:[2,n]},wA=([e,t])=>e===0&&(t===`function`||t===`symbol`),TA=(e,t,n,r)=>{let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=CA(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize `+s);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of SA(r))(e||!wA(CA(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,isNaN(r.getTime())?bA:r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(wA(CA(n))||wA(CA(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!wA(CA(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a},EA=(e,{json:t,lossy:n}={})=>{let r=[];return TA(!(t||n),!!t,new Map,r)(e),r},DA=typeof structuredClone==`function`?(e,t)=>t&&(`json`in t||`lossy`in t)?yA(EA(e,t)):structuredClone(e):(e,t)=>yA(EA(e,t));function OA(e,t){let n=[{type:`text`,value:`↩`}];return t>1&&n.push({type:`element`,tagName:`sup`,properties:{},children:[{type:`text`,value:String(t)}]}),n}function kA(e,t){return`Back to reference `+(e+1)+(t>1?`-`+t:``)}function AA(e){let t=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,n=e.options.footnoteBackContent||OA,r=e.options.footnoteBackLabel||kA,i=e.options.footnoteLabel||`Footnotes`,a=e.options.footnoteLabelTagName||`h2`,o=e.options.footnoteLabelProperties||{className:[`sr-only`]},s=[],c=-1;for(;++c<e.footnoteOrder.length;){let i=e.footnoteById.get(e.footnoteOrder[c]);if(!i)continue;let a=e.all(i),o=String(i.identifier).toUpperCase(),l=uD(o.toLowerCase()),u=0,d=[],f=e.footnoteCounts.get(o);for(;f!==void 0&&++u<=f;){d.length>0&&d.push({type:`text`,value:` `});let e=typeof n==`string`?n:n(c,u);typeof e==`string`&&(e={type:`text`,value:e}),d.push({type:`element`,tagName:`a`,properties:{href:`#`+t+`fnref-`+l+(u>1?`-`+u:``),dataFootnoteBackref:``,ariaLabel:typeof r==`string`?r:r(c,u),className:[`data-footnote-backref`]},children:Array.isArray(e)?e:[e]})}let p=a[a.length-1];if(p&&p.type===`element`&&p.tagName===`p`){let e=p.children[p.children.length-1];e&&e.type===`text`?e.value+=` `:p.children.push({type:`text`,value:` `}),p.children.push(...d)}else a.push(...d);let m={type:`element`,tagName:`li`,properties:{id:t+`fn-`+l},children:e.wrap(a,!0)};e.patch(i,m),s.push(m)}if(s.length!==0)return{type:`element`,tagName:`section`,properties:{dataFootnotes:!0,className:[`footnotes`]},children:[{type:`element`,tagName:a,properties:{...DA(o),id:`footnote-label`},children:[{type:`text`,value:i}]},{type:`text`,value:`
|
|
126
|
+
`},{type:`element`,tagName:`ol`,properties:{},children:e.wrap(s,!0)},{type:`text`,value:`
|
|
127
|
+
`}]}}var jA=(function(e){if(e==null)return IA;if(typeof e==`function`)return FA(e);if(typeof e==`object`)return Array.isArray(e)?MA(e):NA(e);if(typeof e==`string`)return PA(e);throw Error(`Expected function, string, or object as test`)});function MA(e){let t=[],n=-1;for(;++n<e.length;)t[n]=jA(e[n]);return FA(r);function r(...e){let n=-1;for(;++n<t.length;)if(t[n].apply(this,e))return!0;return!1}}function NA(e){let t=e;return FA(n);function n(n){let r=n,i;for(i in e)if(r[i]!==t[i])return!1;return!0}}function PA(e){return FA(t);function t(t){return t&&t.type===e}}function FA(e){return t;function t(t,n,r){return!!(LA(t)&&e.call(this,t,typeof n==`number`?n:void 0,r||void 0))}}function IA(){return!0}function LA(e){return typeof e==`object`&&!!e&&`type`in e}function RA(e){return e}var zA=[];function BA(e,t,n,r){let i;typeof t==`function`&&typeof n!=`function`?(r=n,n=t):i=t;let a=jA(i),o=r?-1:1;s(e,void 0,[])();function s(e,i,c){let l=e&&typeof e==`object`?e:{};if(typeof l.type==`string`){let t=typeof l.tagName==`string`?l.tagName:typeof l.name==`string`?l.name:void 0;Object.defineProperty(u,"name",{value:`node (`+RA(e.type+(t?`<`+t+`>`:``))+`)`})}return u;function u(){let l=zA,u,d,f;if((!t||a(e,i,c[c.length-1]||void 0))&&(l=VA(n(e,c)),l[0]===!1))return l;if(`children`in e&&e.children){let t=e;if(t.children&&l[0]!==`skip`)for(d=(r?t.children.length:-1)+o,f=c.concat(t);d>-1&&d<t.children.length;){let e=t.children[d];if(u=s(e,d,f)(),u[0]===!1)return u;d=typeof u[1]==`number`?u[1]:d+o}}return l}}}function VA(e){return Array.isArray(e)?e:typeof e==`number`?[!0,e]:e==null?zA:[e]}function HA(e,t,n,r){let i,a,o;typeof t==`function`&&typeof n!=`function`?(a=void 0,o=t,i=n):(a=t,o=n,i=r),BA(e,a,s,i);function s(e,t){let n=t[t.length-1],r=n?n.children.indexOf(e):void 0;return o(e,r,n)}}var UA={}.hasOwnProperty,WA={};function GA(e,t){let n=t||WA,r=new Map,i=new Map,a={all:s,applyData:qA,definitionById:r,footnoteById:i,footnoteCounts:new Map,footnoteOrder:[],handlers:{...mA,...n.handlers},one:o,options:n,patch:KA,wrap:YA};return HA(e,function(e){if(e.type===`definition`||e.type===`footnoteDefinition`){let t=e.type===`definition`?r:i,n=String(e.identifier).toUpperCase();t.has(n)||t.set(n,e)}}),a;function o(e,t){let n=e.type,r=a.handlers[n];if(UA.call(a.handlers,n)&&r)return r(a,e,t);if(a.options.passThrough&&a.options.passThrough.includes(n)){if(`children`in e){let{children:t,...n}=e,r=DA(n);return r.children=a.all(e),r}return DA(e)}return(a.options.unknownHandler||JA)(a,e,t)}function s(e){let t=[];if(`children`in e){let n=e.children,r=-1;for(;++r<n.length;){let i=a.one(n[r],e);if(i){if(r&&n[r-1].type===`break`&&(!Array.isArray(i)&&i.type===`text`&&(i.value=XA(i.value)),!Array.isArray(i)&&i.type===`element`)){let e=i.children[0];e&&e.type===`text`&&(e.value=XA(e.value))}Array.isArray(i)?t.push(...i):t.push(i)}}}return t}}function KA(e,t){e.position&&(t.position=eE(e))}function qA(e,t){let n=t;if(e&&e.data){let t=e.data.hName,r=e.data.hChildren,i=e.data.hProperties;typeof t==`string`&&(n.type===`element`?n.tagName=t:n={type:`element`,tagName:t,properties:{},children:`children`in n?n.children:[n]}),n.type===`element`&&i&&Object.assign(n.properties,DA(i)),`children`in n&&n.children&&r!=null&&(n.children=r)}return n}function JA(e,t){let n=t.data||{},r=`value`in t&&!(UA.call(n,`hProperties`)||UA.call(n,`hChildren`))?{type:`text`,value:t.value}:{type:`element`,tagName:`div`,properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function YA(e,t){let n=[],r=-1;for(t&&n.push({type:`text`,value:`
|
|
128
|
+
`});++r<e.length;)r&&n.push({type:`text`,value:`
|
|
129
|
+
`}),n.push(e[r]);return t&&e.length>0&&n.push({type:`text`,value:`
|
|
130
|
+
`}),n}function XA(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function ZA(e,t){let n=GA(e,t),r=n.one(e,void 0),i=AA(n),a=Array.isArray(r)?{type:`root`,children:r}:r||{type:`root`,children:[]};return i&&(`children`in a,a.children.push({type:`text`,value:`
|
|
131
|
+
`},i)),a}function QA(e,t){return e&&`run`in e?async function(n,r){let i=ZA(n,{file:r,...t});await e.run(i,r)}:function(n,r){return ZA(n,{file:r,...e||t})}}function $A(e){if(e)throw e}var ej=o(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=function(e){return typeof Array.isArray==`function`?Array.isArray(e):r.call(e)===`[object Array]`},s=function(e){if(!e||r.call(e)!==`[object Object]`)return!1;var t=n.call(e,`constructor`),i=e.constructor&&e.constructor.prototype&&n.call(e.constructor.prototype,`isPrototypeOf`);if(e.constructor&&!t&&!i)return!1;for(var a in e);return a===void 0||n.call(e,a)},c=function(e,t){i&&t.name===`__proto__`?i(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,t){if(t===`__proto__`){if(!n.call(e,t))return;if(a)return a(e,t).value}return e[t]};t.exports=function e(){var t,n,r,i,a,u,d=arguments[0],f=1,p=arguments.length,m=!1;for(typeof d==`boolean`&&(m=d,d=arguments[1]||{},f=2),(d==null||typeof d!=`object`&&typeof d!=`function`)&&(d={});f<p;++f)if(t=arguments[f],t!=null)for(n in t)r=l(d,n),i=l(t,n),d!==i&&(m&&i&&(s(i)||(a=o(i)))?(a?(a=!1,u=r&&o(r)?r:[]):u=r&&s(r)?r:{},c(d,{name:n,newValue:e(m,u,i)})):i!==void 0&&c(d,{name:n,newValue:i}));return d}}));function tj(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function nj(){let e=[],t={run:n,use:r};return t;function n(...t){let n=-1,r=t.pop();if(typeof r!=`function`)throw TypeError(`Expected function as last argument, not `+r);i(null,...t);function i(a,...o){let s=e[++n],c=-1;if(a){r(a);return}for(;++c<t.length;)(o[c]===null||o[c]===void 0)&&(o[c]=t[c]);t=o,s?rj(s,i)(...o):r(null,...o)}}function r(n){if(typeof n!=`function`)throw TypeError("Expected `middelware` to be a function, not "+n);return e.push(n),t}}function rj(e,t){let n;return r;function r(...t){let r=e.length>t.length,o;r&&t.push(i);try{o=e.apply(this,t)}catch(e){let t=e;if(r&&n)throw t;return i(t)}r||(o&&o.then&&typeof o.then==`function`?o.then(a,i):o instanceof Error?i(o):a(o))}function i(e,...r){n||(n=!0,t(e,...r))}function a(e){i(null,e)}}var ij={basename:aj,dirname:oj,extname:sj,join:cj,sep:`/`};function aj(e,t){if(t!==void 0&&typeof t!=`string`)throw TypeError(`"ext" argument must be a string`);dj(e);let n=0,r=-1,i=e.length,a;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else r<0&&(a=!0,r=i+1);return r<0?``:e.slice(n,r)}if(t===e)return``;let o=-1,s=t.length-1;for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else o<0&&(a=!0,o=i+1),s>-1&&(e.codePointAt(i)===t.codePointAt(s--)?s<0&&(r=i):(s=-1,r=o));return n===r?r=o:r<0&&(r=e.length),e.slice(n,r)}function oj(e){if(dj(e),e.length===0)return`.`;let t=-1,n=e.length,r;for(;--n;)if(e.codePointAt(n)===47){if(r){t=n;break}}else r||=!0;return t<0?e.codePointAt(0)===47?`/`:`.`:t===1&&e.codePointAt(0)===47?`//`:e.slice(0,t)}function sj(e){dj(e);let t=e.length,n=-1,r=0,i=-1,a=0,o;for(;t--;){let s=e.codePointAt(t);if(s===47){if(o){r=t+1;break}continue}n<0&&(o=!0,n=t+1),s===46?i<0?i=t:a!==1&&(a=1):i>-1&&(a=-1)}return i<0||n<0||a===0||a===1&&i===n-1&&i===r+1?``:e.slice(i,n)}function cj(...e){let t=-1,n;for(;++t<e.length;)dj(e[t]),e[t]&&(n=n===void 0?e[t]:n+`/`+e[t]);return n===void 0?`.`:lj(n)}function lj(e){dj(e);let t=e.codePointAt(0)===47,n=uj(e,!t);return n.length===0&&!t&&(n=`.`),n.length>0&&e.codePointAt(e.length-1)===47&&(n+=`/`),t?`/`+n:n}function uj(e,t){let n=``,r=0,i=-1,a=0,o=-1,s,c;for(;++o<=e.length;){if(o<e.length)s=e.codePointAt(o);else if(s===47)break;else s=47;if(s===47){if(i!==o-1&&a!==1){if(i!==o-1&&a===2){if(n.length<2||r!==2||n.codePointAt(n.length-1)!==46||n.codePointAt(n.length-2)!==46){if(n.length>2){if(c=n.lastIndexOf(`/`),c!==n.length-1){c<0?(n=``,r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf(`/`)),i=o,a=0;continue}}else if(n.length>0){n=``,r=0,i=o,a=0;continue}}t&&(n=n.length>0?n+`/..`:`..`,r=2)}else n.length>0?n+=`/`+e.slice(i+1,o):n=e.slice(i+1,o),r=o-i-1}i=o,a=0}else s===46&&a>-1?a++:a=-1}return n}function dj(e){if(typeof e!=`string`)throw TypeError(`Path must be a string. Received `+JSON.stringify(e))}var fj={cwd:pj};function pj(){return`/`}function mj(e){return!!(typeof e==`object`&&e&&`href`in e&&e.href&&`protocol`in e&&e.protocol&&e.auth===void 0)}function hj(e){if(typeof e==`string`)e=new URL(e);else if(!mj(e)){let t=TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code=`ERR_INVALID_ARG_TYPE`,t}if(e.protocol!==`file:`){let e=TypeError(`The URL must be of scheme file`);throw e.code=`ERR_INVALID_URL_SCHEME`,e}return gj(e)}function gj(e){if(e.hostname!==``){let e=TypeError(`File URL host must be "localhost" or empty on darwin`);throw e.code=`ERR_INVALID_FILE_URL_HOST`,e}let t=e.pathname,n=-1;for(;++n<t.length;)if(t.codePointAt(n)===37&&t.codePointAt(n+1)===50){let e=t.codePointAt(n+2);if(e===70||e===102){let e=TypeError(`File URL path must not include encoded / characters`);throw e.code=`ERR_INVALID_FILE_URL_PATH`,e}}return decodeURIComponent(t)}var _j=[`history`,`path`,`basename`,`stem`,`extname`,`dirname`],vj=class{constructor(e){let t;t=e?mj(e)?{path:e}:typeof e==`string`||Sj(e)?{value:e}:e:{},this.cwd=`cwd`in t?``:fj.cwd(),this.data={},this.history=[],this.messages=[],this.value,this.map,this.result,this.stored;let n=-1;for(;++n<_j.length;){let e=_j[n];e in t&&t[e]!==void 0&&t[e]!==null&&(this[e]=e===`history`?[...t[e]]:t[e])}let r;for(r in t)_j.includes(r)||(this[r]=t[r])}get basename(){return typeof this.path==`string`?ij.basename(this.path):void 0}set basename(e){bj(e,`basename`),yj(e,`basename`),this.path=ij.join(this.dirname||``,e)}get dirname(){return typeof this.path==`string`?ij.dirname(this.path):void 0}set dirname(e){xj(this.basename,`dirname`),this.path=ij.join(e||``,this.basename)}get extname(){return typeof this.path==`string`?ij.extname(this.path):void 0}set extname(e){if(yj(e,`extname`),xj(this.dirname,`extname`),e){if(e.codePointAt(0)!==46)throw Error("`extname` must start with `.`");if(e.includes(`.`,1))throw Error("`extname` cannot contain multiple dots")}this.path=ij.join(this.dirname,this.stem+(e||``))}get path(){return this.history[this.history.length-1]}set path(e){mj(e)&&(e=hj(e)),bj(e,`path`),this.path!==e&&this.history.push(e)}get stem(){return typeof this.path==`string`?ij.basename(this.path,this.extname):void 0}set stem(e){bj(e,`stem`),yj(e,`stem`),this.path=ij.join(this.dirname||``,e+(this.extname||``))}fail(e,t,n){let r=this.message(e,t,n);throw r.fatal=!0,r}info(e,t,n){let r=this.message(e,t,n);return r.fatal=void 0,r}message(e,t,n){let r=new aE(e,t,n);return this.path&&(r.name=this.path+`:`+r.name,r.file=this.path),r.fatal=!1,this.messages.push(r),r}toString(e){return this.value===void 0?``:typeof this.value==`string`?this.value:new TextDecoder(e||void 0).decode(this.value)}};function yj(e,t){if(e&&e.includes(ij.sep))throw Error("`"+t+"` cannot be a path: did not expect `"+ij.sep+"`")}function bj(e,t){if(!e)throw Error("`"+t+"` cannot be empty")}function xj(e,t){if(!e)throw Error("Setting `"+t+"` requires `path` to be set too")}function Sj(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}var Cj=(function(e){let t=this.constructor.prototype,n=t[e],r=function(){return n.apply(r,arguments)};return Object.setPrototypeOf(r,t),r}),wj=l(ej(),1),Tj={}.hasOwnProperty,Ej=new class e extends Cj{constructor(){super(`copy`),this.Compiler=void 0,this.Parser=void 0,this.attachers=[],this.compiler=void 0,this.freezeIndex=-1,this.frozen=void 0,this.namespace={},this.parser=void 0,this.transformers=nj()}copy(){let t=new e,n=-1;for(;++n<this.attachers.length;){let e=this.attachers[n];t.use(...e)}return t.data((0,wj.default)(!0,{},this.namespace)),t}data(e,t){return typeof e==`string`?arguments.length===2?(kj(`data`,this.frozen),this.namespace[e]=t,this):Tj.call(this.namespace,e)&&this.namespace[e]||void 0:e?(kj(`data`,this.frozen),this.namespace=e,this):this.namespace}freeze(){if(this.frozen)return this;let e=this;for(;++this.freezeIndex<this.attachers.length;){let[t,...n]=this.attachers[this.freezeIndex];if(n[0]===!1)continue;n[0]===!0&&(n[0]=void 0);let r=t.call(e,...n);typeof r==`function`&&this.transformers.use(r)}return this.frozen=!0,this.freezeIndex=1/0,this}parse(e){this.freeze();let t=Mj(e),n=this.parser||this.Parser;return Dj(`parse`,n),n(String(t),t)}process(e,t){let n=this;return this.freeze(),Dj(`process`,this.parser||this.Parser),Oj(`process`,this.compiler||this.Compiler),t?r(void 0,t):new Promise(r);function r(r,i){let a=Mj(e),o=n.parse(a);n.run(o,a,function(e,t,r){if(e||!t||!r)return s(e);let i=t,a=n.stringify(i,r);Pj(a)?r.value=a:r.result=a,s(e,r)});function s(e,n){e||!n?i(e):r?r(n):t(void 0,n)}}}processSync(e){let t=!1,n;return this.freeze(),Dj(`processSync`,this.parser||this.Parser),Oj(`processSync`,this.compiler||this.Compiler),this.process(e,r),jj(`processSync`,`process`,t),n;function r(e,r){t=!0,$A(e),n=r}}run(e,t,n){Aj(e),this.freeze();let r=this.transformers;return!n&&typeof t==`function`&&(n=t,t=void 0),n?i(void 0,n):new Promise(i);function i(i,a){let o=Mj(t);r.run(e,o,s);function s(t,r,o){let s=r||e;t?a(t):i?i(s):n(void 0,s,o)}}}runSync(e,t){let n=!1,r;return this.run(e,t,i),jj(`runSync`,`run`,n),r;function i(e,t){$A(e),r=t,n=!0}}stringify(e,t){this.freeze();let n=Mj(t),r=this.compiler||this.Compiler;return Oj(`stringify`,r),Aj(e),r(e,n)}use(e,...t){let n=this.attachers,r=this.namespace;if(kj(`use`,this.frozen),e!=null){if(typeof e==`function`)s(e,t);else if(typeof e==`object`)Array.isArray(e)?o(e):a(e);else throw TypeError("Expected usable value, not `"+e+"`")}return this;function i(e){if(typeof e==`function`)s(e,[]);else if(typeof e==`object`){if(Array.isArray(e)){let[t,...n]=e;s(t,n)}else a(e)}else throw TypeError("Expected usable value, not `"+e+"`")}function a(e){if(!(`plugins`in e)&&!(`settings`in e))throw Error("Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither");o(e.plugins),e.settings&&(r.settings=(0,wj.default)(!0,r.settings,e.settings))}function o(e){let t=-1;if(e!=null){if(Array.isArray(e))for(;++t<e.length;){let n=e[t];i(n)}else throw TypeError("Expected a list of plugins, not `"+e+"`")}}function s(e,t){let r=-1,i=-1;for(;++r<n.length;)if(n[r][0]===e){i=r;break}if(i===-1)n.push([e,...t]);else if(t.length>0){let[r,...a]=t,o=n[i][1];tj(o)&&tj(r)&&(r=(0,wj.default)(!0,o,r)),n[i]=[e,r,...a]}}}}().freeze();function Dj(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `parser`")}function Oj(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `compiler`")}function kj(e,t){if(t)throw Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function Aj(e){if(!tj(e)||typeof e.type!=`string`)throw TypeError("Expected node, got `"+e+"`")}function jj(e,t,n){if(!n)throw Error("`"+e+"` finished async. Use `"+t+"` instead")}function Mj(e){return Nj(e)?e:new vj(e)}function Nj(e){return!!(e&&typeof e==`object`&&`message`in e&&`messages`in e)}function Pj(e){return typeof e==`string`||Fj(e)}function Fj(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}var Ij=[],Lj={allowDangerousHtml:!0},Rj=/^(https?|ircs?|mailto|xmpp)$/i,zj=[{from:`astPlugins`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowDangerousHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowNode`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowElement`},{from:`allowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowedElements`},{from:`className`,id:`remove-classname`},{from:`disallowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`disallowedElements`},{from:`escapeHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`includeElementIndex`,id:`#remove-includeelementindex`},{from:`includeNodeIndex`,id:`change-includenodeindex-to-includeelementindex`},{from:`linkTarget`,id:`remove-linktarget`},{from:`plugins`,id:`change-plugins-to-remarkplugins`,to:`remarkPlugins`},{from:`rawSourcePos`,id:`#remove-rawsourcepos`},{from:`renderers`,id:`change-renderers-to-components`,to:`components`},{from:`source`,id:`change-source-to-children`,to:`children`},{from:`sourcePos`,id:`#remove-sourcepos`},{from:`transformImageUri`,id:`#add-urltransform`,to:`urlTransform`},{from:`transformLinkUri`,id:`#add-urltransform`,to:`urlTransform`}];function Bj(e){let t=Vj(e),n=Hj(e);return Uj(t.runSync(t.parse(n),n),e)}function Vj(e){let t=e.rehypePlugins||Ij,n=e.remarkPlugins||Ij,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...Lj}:Lj;return Ej().use(Lk).use(n).use(QA,r).use(t)}function Hj(e){let t=e.children||``,n=new vj;return typeof t==`string`?n.value=t:``+t,n}function Uj(e,t){let n=t.allowedElements,r=t.allowElement,i=t.components,a=t.disallowedElements,o=t.skipHtml,s=t.unwrapDisallowed,c=t.urlTransform||Wj;for(let e of zj)Object.hasOwn(t,e.from)&&``+e.from+(e.to?"use `"+e.to+"` instead":`remove it`)+e.id;return HA(e,l),pE(e,{Fragment:K.Fragment,components:i,ignoreInvalidStyle:!0,jsx:K.jsx,jsxs:K.jsxs,passKeys:!0,passNode:!0});function l(e,t,i){if(e.type===`raw`&&i&&typeof t==`number`)return o?i.children.splice(t,1):i.children[t]={type:`text`,value:e.value},t;if(e.type===`element`){let t;for(t in FE)if(Object.hasOwn(FE,t)&&Object.hasOwn(e.properties,t)){let n=e.properties[t],r=FE[t];(r===null||r.includes(e.tagName))&&(e.properties[t]=c(String(n||``),t,e))}}if(e.type===`element`){let o=n?!n.includes(e.tagName):a?a.includes(e.tagName):!1;if(!o&&r&&typeof t==`number`&&(o=!r(e,t,i)),o&&i&&typeof t==`number`)return s&&e.children?i.children.splice(t,1,...e.children):i.children.splice(t,1),t}}}function Wj(e){let t=e.indexOf(`:`),n=e.indexOf(`?`),r=e.indexOf(`#`),i=e.indexOf(`/`);return t===-1||i!==-1&&t>i||n!==-1&&t>n||r!==-1&&t>r||Rj.test(e.slice(0,t))?e:``}function Gj(e,t){let n=String(e);if(typeof t!=`string`)throw TypeError(`Expected character`);let r=0,i=n.indexOf(t);for(;i!==-1;)r++,i=n.indexOf(t,i+t.length);return r}function Kj(e){if(typeof e!=`string`)throw TypeError(`Expected a string`);return e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`)}function qj(e,t,n){let r=jA((n||{}).ignore||[]),i=Jj(t),a=-1;for(;++a<i.length;)BA(e,`text`,o);function o(e,t){let n=-1,i;for(;++n<t.length;){let e=t[n],a=i?i.children:void 0;if(r(e,a?a.indexOf(e):void 0,i))return;i=e}if(i)return s(e,t)}function s(e,t){let n=t[t.length-1],r=i[a][0],o=i[a][1],s=0,c=n.children.indexOf(e),l=!1,u=[];r.lastIndex=0;let d=r.exec(e.value);for(;d;){let n=d.index,i={index:d.index,input:d.input,stack:[...t,e]},a=o(...d,i);if(typeof a==`string`&&(a=a.length>0?{type:`text`,value:a}:void 0),a===!1?r.lastIndex=n+1:(s!==n&&u.push({type:`text`,value:e.value.slice(s,n)}),Array.isArray(a)?u.push(...a):a&&u.push(a),s=n+d[0].length,l=!0),!r.global)break;d=r.exec(e.value)}return l?(s<e.value.length&&u.push({type:`text`,value:e.value.slice(s)}),n.children.splice(c,1,...u)):u=[e],c+u.length}}function Jj(e){let t=[];if(!Array.isArray(e))throw TypeError(`Expected find and replace tuple or list of tuples`);let n=!e[0]||Array.isArray(e[0])?e:[e],r=-1;for(;++r<n.length;){let e=n[r];t.push([Yj(e[0]),Xj(e[1])])}return t}function Yj(e){return typeof e==`string`?new RegExp(Kj(e),`g`):e}function Xj(e){return typeof e==`function`?e:function(){return e}}var Zj=`phrasing`,Qj=[`autolink`,`link`,`image`,`label`];function $j(){return{transforms:[sM],enter:{literalAutolink:tM,literalAutolinkEmail:nM,literalAutolinkHttp:nM,literalAutolinkWww:nM},exit:{literalAutolink:oM,literalAutolinkEmail:aM,literalAutolinkHttp:rM,literalAutolinkWww:iM}}}function eM(){return{unsafe:[{character:`@`,before:`[+\\-.\\w]`,after:`[\\-.\\w]`,inConstruct:Zj,notInConstruct:Qj},{character:`.`,before:`[Ww]`,after:`[\\-.\\w]`,inConstruct:Zj,notInConstruct:Qj},{character:`:`,before:`[ps]`,after:`\\/`,inConstruct:Zj,notInConstruct:Qj}]}}function tM(e){this.enter({type:`link`,title:null,url:``,children:[]},e)}function nM(e){this.config.enter.autolinkProtocol.call(this,e)}function rM(e){this.config.exit.autolinkProtocol.call(this,e)}function iM(e){this.config.exit.data.call(this,e);let t=this.stack[this.stack.length-1];t.type,t.url=`http://`+this.sliceSerialize(e)}function aM(e){this.config.exit.autolinkEmail.call(this,e)}function oM(e){this.exit(e)}function sM(e){qj(e,[[/(https?:\/\/|www(?=\.))([-.\w]+)([^ \t\r\n]*)/gi,cM],[/(?<=^|\s|\p{P}|\p{S})([-.\w+]+)@([-\w]+(?:\.[-\w]+)+)/gu,lM]],{ignore:[`link`,`linkReference`]})}function cM(e,t,n,r,i){let a=``;if(!fM(i)||(/^w/i.test(t)&&(n=t+n,t=``,a=`http://`),!uM(n)))return!1;let o=dM(n+r);if(!o[0])return!1;let s={type:`link`,title:null,url:a+t+o[0],children:[{type:`text`,value:t+o[0]}]};return o[1]?[s,{type:`text`,value:o[1]}]:s}function lM(e,t,n,r){return!fM(r,!0)||/[-\d_]$/.test(n)?!1:{type:`link`,title:null,url:`mailto:`+t+`@`+n,children:[{type:`text`,value:t+`@`+n}]}}function uM(e){let t=e.split(`.`);return!(t.length<2||t[t.length-1]&&(/_/.test(t[t.length-1])||!/[a-zA-Z\d]/.test(t[t.length-1]))||t[t.length-2]&&(/_/.test(t[t.length-2])||!/[a-zA-Z\d]/.test(t[t.length-2])))}function dM(e){let t=/[!"&'),.:;<>?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let n=t[0],r=n.indexOf(`)`),i=Gj(e,`(`),a=Gj(e,`)`);for(;r!==-1&&i>a;)e+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(`)`),a++;return[e,n]}function fM(e,t){let n=e.input.charCodeAt(e.index-1);return(e.index===0||cD(n)||sD(n))&&(!t||n!==47)}SM.peek=xM;function pM(){this.buffer()}function mM(e){this.enter({type:`footnoteReference`,identifier:``,label:``},e)}function hM(){this.buffer()}function gM(e){this.enter({type:`footnoteDefinition`,identifier:``,label:``,children:[]},e)}function _M(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=XE(this.sliceSerialize(e)).toLowerCase(),n.label=t}function vM(e){this.exit(e)}function yM(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=XE(this.sliceSerialize(e)).toLowerCase(),n.label=t}function bM(e){this.exit(e)}function xM(){return`[`}function SM(e,t,n,r){let i=n.createTracker(r),a=i.move(`[^`),o=n.enter(`footnoteReference`),s=n.enter(`reference`);return a+=i.move(n.safe(n.associationId(e),{after:`]`,before:a})),s(),o(),a+=i.move(`]`),a}function CM(){return{enter:{gfmFootnoteCallString:pM,gfmFootnoteCall:mM,gfmFootnoteDefinitionLabelString:hM,gfmFootnoteDefinition:gM},exit:{gfmFootnoteCallString:_M,gfmFootnoteCall:vM,gfmFootnoteDefinitionLabelString:yM,gfmFootnoteDefinition:bM}}}function wM(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:n,footnoteReference:SM},unsafe:[{character:`[`,inConstruct:[`label`,`phrasing`,`reference`]}]};function n(e,n,r,i){let a=r.createTracker(i),o=a.move(`[^`),s=r.enter(`footnoteDefinition`),c=r.enter(`label`);return o+=a.move(r.safe(r.associationId(e),{before:o,after:`]`})),c(),o+=a.move(`]:`),e.children&&e.children.length>0&&(a.shift(4),o+=a.move((t?`
|
|
132
|
+
`:` `)+r.indentLines(r.containerFlow(e,a.current()),t?EM:TM))),s(),o}}function TM(e,t,n){return t===0?e:EM(e,t,n)}function EM(e,t,n){return(n?``:` `)+e}var DM=[`autolink`,`destinationLiteral`,`destinationRaw`,`reference`,`titleQuote`,`titleApostrophe`];MM.peek=NM;function OM(){return{canContainEols:[`delete`],enter:{strikethrough:AM},exit:{strikethrough:jM}}}function kM(){return{unsafe:[{character:`~`,inConstruct:`phrasing`,notInConstruct:DM}],handlers:{delete:MM}}}function AM(e){this.enter({type:`delete`,children:[]},e)}function jM(e){this.exit(e)}function MM(e,t,n,r){let i=n.createTracker(r),a=n.enter(`strikethrough`),o=i.move(`~~`);return o+=n.containerPhrasing(e,{...i.current(),before:o,after:`~`}),o+=i.move(`~~`),a(),o}function NM(){return`~`}function PM(e){return e.length}function FM(e,t){let n=t||{},r=(n.align||[]).concat(),i=n.stringLength||PM,a=[],o=[],s=[],c=[],l=0,u=-1;for(;++u<e.length;){let t=[],r=[],a=-1;for(e[u].length>l&&(l=e[u].length);++a<e[u].length;){let o=IM(e[u][a]);if(n.alignDelimiters!==!1){let e=i(o);r[a]=e,(c[a]===void 0||e>c[a])&&(c[a]=e)}t.push(o)}o[u]=t,s[u]=r}let d=-1;if(typeof r==`object`&&`length`in r)for(;++d<l;)a[d]=LM(r[d]);else{let e=LM(r);for(;++d<l;)a[d]=e}d=-1;let f=[],p=[];for(;++d<l;){let e=a[d],t=``,r=``;e===99?(t=`:`,r=`:`):e===108?t=`:`:e===114&&(r=`:`);let i=n.alignDelimiters===!1?1:Math.max(1,c[d]-t.length-r.length),o=t+`-`.repeat(i)+r;n.alignDelimiters!==!1&&(i=t.length+i+r.length,i>c[d]&&(c[d]=i),p[d]=i),f[d]=o}o.splice(1,0,f),s.splice(1,0,p),u=-1;let m=[];for(;++u<o.length;){let e=o[u],t=s[u];d=-1;let r=[];for(;++d<l;){let i=e[d]||``,o=``,s=``;if(n.alignDelimiters!==!1){let e=c[d]-(t[d]||0),n=a[d];n===114?o=` `.repeat(e):n===99?e%2?(o=` `.repeat(e/2+.5),s=` `.repeat(e/2-.5)):(o=` `.repeat(e/2),s=o):s=` `.repeat(e)}n.delimiterStart!==!1&&!d&&r.push(`|`),n.padding!==!1&&(n.alignDelimiters!==!1||i!==``)&&(n.delimiterStart!==!1||d)&&r.push(` `),n.alignDelimiters!==!1&&r.push(o),r.push(i),n.alignDelimiters!==!1&&r.push(s),n.padding!==!1&&r.push(` `),(n.delimiterEnd!==!1||d!==l-1)&&r.push(`|`)}m.push(n.delimiterEnd===!1?r.join(``).replace(/ +$/,``):r.join(``))}return m.join(`
|
|
133
|
+
`)}function IM(e){return e==null?``:String(e)}function LM(e){let t=typeof e==`string`?e.codePointAt(0):0;return t===67||t===99?99:t===76||t===108?108:t===82||t===114?114:0}function RM(e,t,n,r){let i=n.enter(`blockquote`),a=n.createTracker(r);a.move(`> `),a.shift(2);let o=n.indentLines(n.containerFlow(e,a.current()),zM);return i(),o}function zM(e,t,n){return`>`+(n?``:` `)+e}function BM(e,t){return VM(e,t.inConstruct,!0)&&!VM(e,t.notInConstruct,!1)}function VM(e,t,n){if(typeof t==`string`&&(t=[t]),!t||t.length===0)return n;let r=-1;for(;++r<t.length;)if(e.includes(t[r]))return!0;return!1}function HM(e,t,n,r){let i=-1;for(;++i<n.unsafe.length;)if(n.unsafe[i].character===`
|
|
134
|
+
`&&BM(n.stack,n.unsafe[i]))return/[ \t]/.test(r.before)?``:` `;return`\\
|
|
135
|
+
`}function UM(e,t){let n=String(e),r=n.indexOf(t),i=r,a=0,o=0;if(typeof t!=`string`)throw TypeError(`Expected substring`);for(;r!==-1;)r===i?++a>o&&(o=a):a=1,i=r+t.length,r=n.indexOf(t,i);return o}function WM(e,t){return!!(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function GM(e){let t=e.options.fence||"`";if(t!=="`"&&t!==`~`)throw Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function KM(e,t,n,r){let i=GM(n),a=e.value||``,o=i==="`"?`GraveAccent`:`Tilde`;if(WM(e,n)){let e=n.enter(`codeIndented`),t=n.indentLines(a,qM);return e(),t}let s=n.createTracker(r),c=i.repeat(Math.max(UM(a,i)+1,3)),l=n.enter(`codeFenced`),u=s.move(c);if(e.lang){let t=n.enter(`codeFencedLang${o}`);u+=s.move(n.safe(e.lang,{before:u,after:` `,encode:["`"],...s.current()})),t()}if(e.lang&&e.meta){let t=n.enter(`codeFencedMeta${o}`);u+=s.move(` `),u+=s.move(n.safe(e.meta,{before:u,after:`
|
|
136
|
+
`,encode:["`"],...s.current()})),t()}return u+=s.move(`
|
|
137
|
+
`),a&&(u+=s.move(a+`
|
|
138
|
+
`)),u+=s.move(c),l(),u}function qM(e,t,n){return(n?``:` `)+e}function JM(e){let t=e.options.quote||`"`;if(t!==`"`&&t!==`'`)throw Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function YM(e,t,n,r){let i=JM(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.enter(`definition`),s=n.enter(`label`),c=n.createTracker(r),l=c.move(`[`);return l+=c.move(n.safe(n.associationId(e),{before:l,after:`]`,...c.current()})),l+=c.move(`]: `),s(),!e.url||/[\0- \u007F]/.test(e.url)?(s=n.enter(`destinationLiteral`),l+=c.move(`<`),l+=c.move(n.safe(e.url,{before:l,after:`>`,...c.current()})),l+=c.move(`>`)):(s=n.enter(`destinationRaw`),l+=c.move(n.safe(e.url,{before:l,after:e.title?` `:`
|
|
139
|
+
`,...c.current()}))),s(),e.title&&(s=n.enter(`title${a}`),l+=c.move(` `+i),l+=c.move(n.safe(e.title,{before:l,after:i,...c.current()})),l+=c.move(i),s()),o(),l}function XM(e){let t=e.options.emphasis||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function ZM(e){return`&#x`+e.toString(16).toUpperCase()+`;`}function QM(e,t,n){let r=vD(e),i=vD(t);return r===void 0?i===void 0?n===`_`?{inside:!0,outside:!0}:{inside:!1,outside:!1}:i===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:r===1?i===void 0?{inside:!1,outside:!1}:i===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:i===void 0?{inside:!1,outside:!1}:i===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}$M.peek=eN;function $M(e,t,n,r){let i=XM(n),a=n.enter(`emphasis`),o=n.createTracker(r),s=o.move(i),c=o.move(n.containerPhrasing(e,{after:i,before:s,...o.current()})),l=c.charCodeAt(0),u=QM(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=ZM(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=QM(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+ZM(d));let p=o.move(i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function eN(e,t,n){return n.options.emphasis||`*`}function tN(e,t){let n=!1;return HA(e,function(e){if(`value`in e&&/\r?\n|\r/.test(e.value)||e.type===`break`)return n=!0,!1}),!!((!e.depth||e.depth<3)&&LE(e)&&(t.options.setext||n))}function nN(e,t,n,r){let i=Math.max(Math.min(6,e.depth||1),1),a=n.createTracker(r);if(tN(e,n)){let t=n.enter(`headingSetext`),r=n.enter(`phrasing`),o=n.containerPhrasing(e,{...a.current(),before:`
|
|
140
|
+
`,after:`
|
|
141
|
+
`});return r(),t(),o+`
|
|
142
|
+
`+(i===1?`=`:`-`).repeat(o.length-(Math.max(o.lastIndexOf(`\r`),o.lastIndexOf(`
|
|
143
|
+
`))+1))}let o=`#`.repeat(i),s=n.enter(`headingAtx`),c=n.enter(`phrasing`);a.move(o+` `);let l=n.containerPhrasing(e,{before:`# `,after:`
|
|
144
|
+
`,...a.current()});return/^[\t ]/.test(l)&&(l=ZM(l.charCodeAt(0))+l.slice(1)),l=l?o+` `+l:o,n.options.closeAtx&&(l+=` `+o),c(),s(),l}rN.peek=iN;function rN(e){return e.value||``}function iN(){return`<`}aN.peek=oN;function aN(e,t,n,r){let i=JM(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.enter(`image`),s=n.enter(`label`),c=n.createTracker(r),l=c.move(`![`);return l+=c.move(n.safe(e.alt,{before:l,after:`]`,...c.current()})),l+=c.move(`](`),s(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(s=n.enter(`destinationLiteral`),l+=c.move(`<`),l+=c.move(n.safe(e.url,{before:l,after:`>`,...c.current()})),l+=c.move(`>`)):(s=n.enter(`destinationRaw`),l+=c.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...c.current()}))),s(),e.title&&(s=n.enter(`title${a}`),l+=c.move(` `+i),l+=c.move(n.safe(e.title,{before:l,after:i,...c.current()})),l+=c.move(i),s()),l+=c.move(`)`),o(),l}function oN(){return`!`}sN.peek=cN;function sN(e,t,n,r){let i=e.referenceType,a=n.enter(`imageReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`![`),l=n.safe(e.alt,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=[],o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function cN(){return`!`}lN.peek=uN;function lN(e,t,n){let r=e.value||``,i="`",a=-1;for(;RegExp("(^|[^`])"+i+"([^`]|$)").test(r);)i+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=` `+r+` `);++a<n.unsafe.length;){let e=n.unsafe[a],t=n.compilePattern(e),i;if(e.atBreak)for(;i=t.exec(r);){let e=i.index;r.charCodeAt(e)===10&&r.charCodeAt(e-1)===13&&e--,r=r.slice(0,e)+` `+r.slice(i.index+1)}}return i+r+i}function uN(){return"`"}function dN(e,t){let n=LE(e);return!!(!t.options.resourceLink&&e.url&&!e.title&&e.children&&e.children.length===1&&e.children[0].type===`text`&&(n===e.url||`mailto:`+n===e.url)&&/^[a-z][a-z+.-]+:/i.test(e.url)&&!/[\0- <>\u007F]/.test(e.url))}fN.peek=pN;function fN(e,t,n,r){let i=JM(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.createTracker(r),s,c;if(dN(e,n)){let t=n.stack;n.stack=[],s=n.enter(`autolink`);let r=o.move(`<`);return r+=o.move(n.containerPhrasing(e,{before:r,after:`>`,...o.current()})),r+=o.move(`>`),s(),n.stack=t,r}s=n.enter(`link`),c=n.enter(`label`);let l=o.move(`[`);return l+=o.move(n.containerPhrasing(e,{before:l,after:`](`,...o.current()})),l+=o.move(`](`),c(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(c=n.enter(`destinationLiteral`),l+=o.move(`<`),l+=o.move(n.safe(e.url,{before:l,after:`>`,...o.current()})),l+=o.move(`>`)):(c=n.enter(`destinationRaw`),l+=o.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...o.current()}))),c(),e.title&&(c=n.enter(`title${a}`),l+=o.move(` `+i),l+=o.move(n.safe(e.title,{before:l,after:i,...o.current()})),l+=o.move(i),c()),l+=o.move(`)`),s(),l}function pN(e,t,n){return dN(e,n)?`<`:`[`}mN.peek=hN;function mN(e,t,n,r){let i=e.referenceType,a=n.enter(`linkReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`[`),l=n.containerPhrasing(e,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=[],o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function hN(){return`[`}function gN(e){let t=e.options.bullet||`*`;if(t!==`*`&&t!==`+`&&t!==`-`)throw Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function _N(e){let t=gN(e),n=e.options.bulletOther;if(!n)return t===`*`?`-`:`*`;if(n!==`*`&&n!==`+`&&n!==`-`)throw Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===t)throw Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+n+"`) to be different");return n}function vN(e){let t=e.options.bulletOrdered||`.`;if(t!==`.`&&t!==`)`)throw Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function yN(e){let t=e.options.rule||`*`;if(t!==`*`&&t!==`-`&&t!==`_`)throw Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function bN(e,t,n,r){let i=n.enter(`list`),a=n.bulletCurrent,o=e.ordered?vN(n):gN(n),s=e.ordered?o===`.`?`)`:`.`:_N(n),c=t&&n.bulletLastUsed?o===n.bulletLastUsed:!1;if(!e.ordered){let t=e.children?e.children[0]:void 0;if((o===`*`||o===`-`)&&t&&(!t.children||!t.children[0])&&n.stack[n.stack.length-1]===`list`&&n.stack[n.stack.length-2]===`listItem`&&n.stack[n.stack.length-3]===`list`&&n.stack[n.stack.length-4]===`listItem`&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),yN(n)===o&&t){let t=-1;for(;++t<e.children.length;){let n=e.children[t];if(n&&n.type===`listItem`&&n.children&&n.children[0]&&n.children[0].type===`thematicBreak`){c=!0;break}}}}c&&(o=s),n.bulletCurrent=o;let l=n.containerFlow(e,r);return n.bulletLastUsed=o,n.bulletCurrent=a,i(),l}function xN(e){let t=e.options.listItemIndent||`one`;if(t!==`tab`&&t!==`one`&&t!==`mixed`)throw Error("Cannot serialize items with `"+t+"` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`");return t}function SN(e,t,n,r){let i=xN(n),a=n.bulletCurrent||gN(n);t&&t.type===`list`&&t.ordered&&(a=(typeof t.start==`number`&&t.start>-1?t.start:1)+(n.options.incrementListMarker===!1?0:t.children.indexOf(e))+a);let o=a.length+1;(i===`tab`||i===`mixed`&&(t&&t.type===`list`&&t.spread||e.spread))&&(o=Math.ceil(o/4)*4);let s=n.createTracker(r);s.move(a+` `.repeat(o-a.length)),s.shift(o);let c=n.enter(`listItem`),l=n.indentLines(n.containerFlow(e,s.current()),u);return c(),l;function u(e,t,n){return t?(n?``:` `.repeat(o))+e:(n?a:a+` `.repeat(o-a.length))+e}}function CN(e,t,n,r){let i=n.enter(`paragraph`),a=n.enter(`phrasing`),o=n.containerPhrasing(e,r);return a(),i(),o}var wN=jA([`break`,`delete`,`emphasis`,`footnote`,`footnoteReference`,`image`,`imageReference`,`inlineCode`,`inlineMath`,`link`,`linkReference`,`mdxJsxTextElement`,`mdxTextExpression`,`strong`,`text`,`textDirective`]);function TN(e,t,n,r){return(e.children.some(function(e){return wN(e)})?n.containerPhrasing:n.containerFlow).call(n,e,r)}function EN(e){let t=e.options.strong||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}DN.peek=ON;function DN(e,t,n,r){let i=EN(n),a=n.enter(`strong`),o=n.createTracker(r),s=o.move(i+i),c=o.move(n.containerPhrasing(e,{after:i,before:s,...o.current()})),l=c.charCodeAt(0),u=QM(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=ZM(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=QM(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+ZM(d));let p=o.move(i+i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function ON(e,t,n){return n.options.strong||`*`}function kN(e,t,n,r){return n.safe(e.value,r)}function AN(e){let t=e.options.ruleRepetition||3;if(t<3)throw Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function jN(e,t,n){let r=(yN(n)+(n.options.ruleSpaces?` `:``)).repeat(AN(n));return n.options.ruleSpaces?r.slice(0,-1):r}var MN={blockquote:RM,break:HM,code:KM,definition:YM,emphasis:$M,hardBreak:HM,heading:nN,html:rN,image:aN,imageReference:sN,inlineCode:lN,link:fN,linkReference:mN,list:bN,listItem:SN,paragraph:CN,root:TN,strong:DN,text:kN,thematicBreak:jN};function NN(){return{enter:{table:PN,tableData:RN,tableHeader:RN,tableRow:IN},exit:{codeText:zN,table:FN,tableData:LN,tableHeader:LN,tableRow:LN}}}function PN(e){let t=e._align;this.enter({type:`table`,align:t.map(function(e){return e===`none`?null:e}),children:[]},e),this.data.inTable=!0}function FN(e){this.exit(e),this.data.inTable=void 0}function IN(e){this.enter({type:`tableRow`,children:[]},e)}function LN(e){this.exit(e)}function RN(e){this.enter({type:`tableCell`,children:[]},e)}function zN(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,BN));let n=this.stack[this.stack.length-1];n.type,n.value=t,this.exit(e)}function BN(e,t){return t===`|`?t:e}function VN(e){let t=e||{},n=t.tableCellPadding,r=t.tablePipeAlign,i=t.stringLength,a=n?` `:`|`;return{unsafe:[{character:`\r`,inConstruct:`tableCell`},{character:`
|
|
145
|
+
`,inConstruct:`tableCell`},{atBreak:!0,character:`|`,after:`[ :-]`},{character:`|`,inConstruct:`tableCell`},{atBreak:!0,character:`:`,after:`-`},{atBreak:!0,character:`-`,after:`[:|-]`}],handlers:{inlineCode:f,table:o,tableCell:c,tableRow:s}};function o(e,t,n,r){return l(u(e,n,r),e.align)}function s(e,t,n,r){let i=l([d(e,n,r)]);return i.slice(0,i.indexOf(`
|
|
146
|
+
`))}function c(e,t,n,r){let i=n.enter(`tableCell`),o=n.enter(`phrasing`),s=n.containerPhrasing(e,{...r,before:a,after:a});return o(),i(),s}function l(e,t){return FM(e,{align:t,alignDelimiters:r,padding:n,stringLength:i})}function u(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`table`);for(;++i<r.length;)a[i]=d(r[i],t,n);return o(),a}function d(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`tableRow`);for(;++i<r.length;)a[i]=c(r[i],e,t,n);return o(),a}function f(e,t,n){let r=MN.inlineCode(e,t,n);return n.stack.includes(`tableCell`)&&(r=r.replace(/\|/g,`\\$&`)),r}}function HN(){return{exit:{taskListCheckValueChecked:WN,taskListCheckValueUnchecked:WN,paragraph:GN}}}function UN(){return{unsafe:[{atBreak:!0,character:`-`,after:`[:|-]`}],handlers:{listItem:KN}}}function WN(e){let t=this.stack[this.stack.length-2];t.type,t.checked=e.type===`taskListCheckValueChecked`}function GN(e){let t=this.stack[this.stack.length-2];if(t&&t.type===`listItem`&&typeof t.checked==`boolean`){let e=this.stack[this.stack.length-1];e.type;let n=e.children[0];if(n&&n.type===`text`){let r=t.children,i=-1,a;for(;++i<r.length;){let e=r[i];if(e.type===`paragraph`){a=e;break}}a===e&&(n.value=n.value.slice(1),n.value.length===0?e.children.shift():e.position&&n.position&&typeof n.position.start.offset==`number`&&(n.position.start.column++,n.position.start.offset++,e.position.start=Object.assign({},n.position.start)))}}this.exit(e)}function KN(e,t,n,r){let i=e.children[0],a=typeof e.checked==`boolean`&&i&&i.type===`paragraph`,o=`[`+(e.checked?`x`:` `)+`] `,s=n.createTracker(r);a&&s.move(o);let c=MN.listItem(e,t,n,{...r,...s.current()});return a&&(c=c.replace(/^(?:[*+-]|\d+\.)([\r\n]| {1,3})/,l)),c;function l(e){return e+o}}function qN(){return[$j(),CM(),OM(),NN(),HN()]}function JN(e){return{extensions:[eM(),wM(e),kM(),VN(e),UN()]}}var YN={tokenize:lP,partial:!0},XN={tokenize:uP,partial:!0},ZN={tokenize:dP,partial:!0},QN={tokenize:fP,partial:!0},$N={tokenize:pP,partial:!0},eP={name:`wwwAutolink`,tokenize:sP,previous:mP},tP={name:`protocolAutolink`,tokenize:cP,previous:hP},nP={name:`emailAutolink`,tokenize:oP,previous:gP},rP={};function iP(){return{text:rP}}for(var aP=48;aP<123;)rP[aP]=nP,aP++,aP===58?aP=65:aP===91&&(aP=97);rP[43]=nP,rP[45]=nP,rP[46]=nP,rP[95]=nP,rP[72]=[nP,tP],rP[104]=[nP,tP],rP[87]=[nP,eP],rP[119]=[nP,eP];function oP(e,t,n){let r=this,i,a;return o;function o(t){return!_P(t)||!gP.call(r,r.previous)||vP(r.events)?n(t):(e.enter(`literalAutolink`),e.enter(`literalAutolinkEmail`),s(t))}function s(t){return _P(t)?(e.consume(t),s):t===64?(e.consume(t),c):n(t)}function c(t){return t===46?e.check($N,u,l)(t):t===45||t===95||QE(t)?(a=!0,e.consume(t),c):u(t)}function l(t){return e.consume(t),i=!0,c}function u(o){return a&&i&&ZE(r.previous)?(e.exit(`literalAutolinkEmail`),e.exit(`literalAutolink`),t(o)):n(o)}}function sP(e,t,n){let r=this;return i;function i(t){return t!==87&&t!==119||!mP.call(r,r.previous)||vP(r.events)?n(t):(e.enter(`literalAutolink`),e.enter(`literalAutolinkWww`),e.check(YN,e.attempt(XN,e.attempt(ZN,a),n),n)(t))}function a(n){return e.exit(`literalAutolinkWww`),e.exit(`literalAutolink`),t(n)}}function cP(e,t,n){let r=this,i=``,a=!1;return o;function o(t){return(t===72||t===104)&&hP.call(r,r.previous)&&!vP(r.events)?(e.enter(`literalAutolink`),e.enter(`literalAutolinkHttp`),i+=String.fromCodePoint(t),e.consume(t),s):n(t)}function s(t){if(ZE(t)&&i.length<5)return i+=String.fromCodePoint(t),e.consume(t),s;if(t===58){let n=i.toLowerCase();if(n===`http`||n===`https`)return e.consume(t),c}return n(t)}function c(t){return t===47?(e.consume(t),a?l:(a=!0,c)):n(t)}function l(t){return t===null||eD(t)||aD(t)||cD(t)||sD(t)?n(t):e.attempt(XN,e.attempt(ZN,u),n)(t)}function u(n){return e.exit(`literalAutolinkHttp`),e.exit(`literalAutolink`),t(n)}}function lP(e,t,n){let r=0;return i;function i(t){return(t===87||t===119)&&r<3?(r++,e.consume(t),i):t===46&&r===3?(e.consume(t),a):n(t)}function a(e){return e===null?n(e):t(e)}}function uP(e,t,n){let r,i,a;return o;function o(t){return t===46||t===95?e.check(QN,c,s)(t):t===null||aD(t)||cD(t)||t!==45&&sD(t)?c(t):(a=!0,e.consume(t),o)}function s(t){return t===95?r=!0:(i=r,r=void 0),e.consume(t),o}function c(e){return i||r||!a?n(e):t(e)}}function dP(e,t){let n=0,r=0;return i;function i(o){return o===40?(n++,e.consume(o),i):o===41&&r<n?a(o):o===33||o===34||o===38||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===60||o===63||o===93||o===95||o===126?e.check(QN,t,a)(o):o===null||aD(o)||cD(o)?t(o):(e.consume(o),i)}function a(t){return t===41&&r++,e.consume(t),i}}function fP(e,t,n){return r;function r(o){return o===33||o===34||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===63||o===95||o===126?(e.consume(o),r):o===38?(e.consume(o),a):o===93?(e.consume(o),i):o===60||o===null||aD(o)||cD(o)?t(o):n(o)}function i(e){return e===null||e===40||e===91||aD(e)||cD(e)?t(e):r(e)}function a(e){return ZE(e)?o(e):n(e)}function o(t){return t===59?(e.consume(t),r):ZE(t)?(e.consume(t),o):n(t)}}function pP(e,t,n){return r;function r(t){return e.consume(t),i}function i(e){return QE(e)?n(e):t(e)}}function mP(e){return e===null||e===40||e===42||e===95||e===91||e===93||e===126||aD(e)}function hP(e){return!ZE(e)}function gP(e){return!(e===47||_P(e))}function _P(e){return e===43||e===45||e===46||e===95||QE(e)}function vP(e){let t=e.length,n=!1;for(;t--;){let r=e[t][1];if((r.type===`labelLink`||r.type===`labelImage`)&&!r._balanced){n=!0;break}if(r._gfmAutolinkLiteralWalkedInto){n=!1;break}}return e.length>0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}var yP={tokenize:DP,partial:!0};function bP(){return{document:{91:{name:`gfmFootnoteDefinition`,tokenize:wP,continuation:{tokenize:TP},exit:EP}},text:{91:{name:`gfmFootnoteCall`,tokenize:CP},93:{name:`gfmPotentialFootnoteCall`,add:`after`,tokenize:xP,resolveTo:SP}}}}function xP(e,t,n){let r=this,i=r.events.length,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o;for(;i--;){let e=r.events[i][1];if(e.type===`labelImage`){o=e;break}if(e.type===`gfmFootnoteCall`||e.type===`labelLink`||e.type===`label`||e.type===`image`||e.type===`link`)break}return s;function s(i){if(!o||!o._balanced)return n(i);let s=XE(r.sliceSerialize({start:o.end,end:r.now()}));return s.codePointAt(0)!==94||!a.includes(s.slice(1))?n(i):(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(i),e.exit(`gfmFootnoteCallLabelMarker`),t(i))}}function SP(e,t){let n=e.length;for(;n--;)if(e[n][1].type===`labelImage`&&e[n][0]===`enter`){e[n][1];break}e[n+1][1].type=`data`,e[n+3][1].type=`gfmFootnoteCallLabelMarker`;let r={type:`gfmFootnoteCall`,start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:`gfmFootnoteCallMarker`,start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;let a={type:`gfmFootnoteCallString`,start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},o={type:`chunkString`,contentType:`string`,start:Object.assign({},a.start),end:Object.assign({},a.end)},s=[e[n+1],e[n+2],[`enter`,r,t],e[n+3],e[n+4],[`enter`,i,t],[`exit`,i,t],[`enter`,a,t],[`enter`,o,t],[`exit`,o,t],[`exit`,a,t],e[e.length-2],e[e.length-1],[`exit`,r,t]];return e.splice(n,e.length-n+1,...s),e}function CP(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a=0,o;return s;function s(t){return e.enter(`gfmFootnoteCall`),e.enter(`gfmFootnoteCallLabelMarker`),e.consume(t),e.exit(`gfmFootnoteCallLabelMarker`),c}function c(t){return t===94?(e.enter(`gfmFootnoteCallMarker`),e.consume(t),e.exit(`gfmFootnoteCallMarker`),e.enter(`gfmFootnoteCallString`),e.enter(`chunkString`).contentType=`string`,l):n(t)}function l(s){if(a>999||s===93&&!o||s===null||s===91||aD(s))return n(s);if(s===93){e.exit(`chunkString`);let a=e.exit(`gfmFootnoteCallString`);return i.includes(XE(r.sliceSerialize(a)))?(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(s),e.exit(`gfmFootnoteCallLabelMarker`),e.exit(`gfmFootnoteCall`),t):n(s)}return aD(s)||(o=!0),a++,e.consume(s),s===92?u:l}function u(t){return t===91||t===92||t===93?(e.consume(t),a++,l):l(t)}}function wP(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a,o=0,s;return c;function c(t){return e.enter(`gfmFootnoteDefinition`)._container=!0,e.enter(`gfmFootnoteDefinitionLabel`),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),l}function l(t){return t===94?(e.enter(`gfmFootnoteDefinitionMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionMarker`),e.enter(`gfmFootnoteDefinitionLabelString`),e.enter(`chunkString`).contentType=`string`,u):n(t)}function u(t){if(o>999||t===93&&!s||t===null||t===91||aD(t))return n(t);if(t===93){e.exit(`chunkString`);let n=e.exit(`gfmFootnoteDefinitionLabelString`);return a=XE(r.sliceSerialize(n)),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),e.exit(`gfmFootnoteDefinitionLabel`),f}return aD(t)||(s=!0),o++,e.consume(t),t===92?d:u}function d(t){return t===91||t===92||t===93?(e.consume(t),o++,u):u(t)}function f(t){return t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),i.includes(a)||i.push(a),dD(e,p,`gfmFootnoteDefinitionWhitespace`)):n(t)}function p(e){return t(e)}}function TP(e,t,n){return e.check(ED,t,e.attempt(yP,t,n))}function EP(e){e.exit(`gfmFootnoteDefinition`)}function DP(e,t,n){let r=this;return dD(e,i,`gfmFootnoteDefinitionIndent`,5);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`gfmFootnoteDefinitionIndent`&&i[2].sliceSerialize(i[1],!0).length===4?t(e):n(e)}}function OP(e){let t=(e||{}).singleTilde,n={name:`strikethrough`,tokenize:i,resolveAll:r};return t??=!0,{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function r(e,t){let n=-1;for(;++n<e.length;)if(e[n][0]===`enter`&&e[n][1].type===`strikethroughSequenceTemporary`&&e[n][1]._close){let r=n;for(;r--;)if(e[r][0]===`exit`&&e[r][1].type===`strikethroughSequenceTemporary`&&e[r][1]._open&&e[n][1].end.offset-e[n][1].start.offset===e[r][1].end.offset-e[r][1].start.offset){e[n][1].type=`strikethroughSequence`,e[r][1].type=`strikethroughSequence`;let i={type:`strikethrough`,start:Object.assign({},e[r][1].start),end:Object.assign({},e[n][1].end)},a={type:`strikethroughText`,start:Object.assign({},e[r][1].end),end:Object.assign({},e[n][1].start)},o=[[`enter`,i,t],[`enter`,e[r][1],t],[`exit`,e[r][1],t],[`enter`,a,t]],s=t.parser.constructs.insideSpan.null;s&&UE(o,o.length,0,yD(s,e.slice(r+1,n),t)),UE(o,o.length,0,[[`exit`,a,t],[`enter`,e[n][1],t],[`exit`,e[n][1],t],[`exit`,i,t]]),UE(e,r-1,n-r+3,o),n=r+o.length-2;break}}for(n=-1;++n<e.length;)e[n][1].type===`strikethroughSequenceTemporary`&&(e[n][1].type=`data`);return e}function i(e,n,r){let i=this.previous,a=this.events,o=0;return s;function s(t){return i===126&&a[a.length-1][1].type!==`characterEscape`?r(t):(e.enter(`strikethroughSequenceTemporary`),c(t))}function c(a){let s=vD(i);if(a===126)return o>1?r(a):(e.consume(a),o++,c);if(o<2&&!t)return r(a);let l=e.exit(`strikethroughSequenceTemporary`),u=vD(a);return l._open=!u||u===2&&!!s,l._close=!s||s===2&&!!u,n(a)}}}var kP=class{constructor(){this.map=[]}add(e,t,n){AP(this,e,t,n)}consume(e){if(this.map.sort(function(e,t){return e[0]-t[0]}),this.map.length===0)return;let t=this.map.length,n=[];for(;t>0;)--t,n.push(e.slice(this.map[t][0]+this.map[t][1]),this.map[t][2]),e.length=this.map[t][0];n.push(e.slice()),e.length=0;let r=n.pop();for(;r;){for(let t of r)e.push(t);r=n.pop()}this.map.length=0}};function AP(e,t,n,r){let i=0;if(n!==0||r.length!==0){for(;i<e.map.length;){if(e.map[i][0]===t){e.map[i][1]+=n,e.map[i][2].push(...r);return}i+=1}e.map.push([t,n,r])}}function jP(e,t){let n=!1,r=[];for(;t<e.length;){let i=e[t];if(n){if(i[0]===`enter`)i[1].type===`tableContent`&&r.push(e[t+1][1].type===`tableDelimiterMarker`?`left`:`none`);else if(i[1].type===`tableContent`){if(e[t-1][1].type===`tableDelimiterMarker`){let e=r.length-1;r[e]=r[e]===`left`?`center`:`right`}}else if(i[1].type===`tableDelimiterRow`)break}else i[0]===`enter`&&i[1].type===`tableDelimiterRow`&&(n=!0);t+=1}return r}function MP(){return{flow:{null:{name:`table`,tokenize:NP,resolveAll:PP}}}}function NP(e,t,n){let r=this,i=0,a=0,o;return s;function s(e){let t=r.events.length-1;for(;t>-1;){let e=r.events[t][1].type;if(e===`lineEnding`||e===`linePrefix`)t--;else break}let i=t>-1?r.events[t][1].type:null,a=i===`tableHead`||i===`tableRow`?S:c;return a===S&&r.parser.lazy[r.now().line]?n(e):a(e)}function c(t){return e.enter(`tableHead`),e.enter(`tableRow`),l(t)}function l(e){return e===124?u(e):(o=!0,a+=1,u(e))}function u(t){return t===null?n(t):iD(t)?a>1?(a=0,r.interrupt=!0,e.exit(`tableRow`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),p):n(t):oD(t)?dD(e,u,`whitespace`)(t):(a+=1,o&&(o=!1,i+=1),t===124?(e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),o=!0,u):(e.enter(`data`),d(t)))}function d(t){return t===null||t===124||aD(t)?(e.exit(`data`),u(t)):(e.consume(t),t===92?f:d)}function f(t){return t===92||t===124?(e.consume(t),d):d(t)}function p(t){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(t):(e.enter(`tableDelimiterRow`),o=!1,oD(t)?dD(e,m,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):m(t))}function m(t){return t===45||t===58?g(t):t===124?(o=!0,e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),h):x(t)}function h(t){return oD(t)?dD(e,g,`whitespace`)(t):g(t)}function g(t){return t===58?(a+=1,o=!0,e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),_):t===45?(a+=1,_(t)):t===null||iD(t)?b(t):x(t)}function _(t){return t===45?(e.enter(`tableDelimiterFiller`),v(t)):x(t)}function v(t){return t===45?(e.consume(t),v):t===58?(o=!0,e.exit(`tableDelimiterFiller`),e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),y):(e.exit(`tableDelimiterFiller`),y(t))}function y(t){return oD(t)?dD(e,b,`whitespace`)(t):b(t)}function b(n){return n===124?m(n):n===null||iD(n)?!o||i!==a?x(n):(e.exit(`tableDelimiterRow`),e.exit(`tableHead`),t(n)):x(n)}function x(e){return n(e)}function S(t){return e.enter(`tableRow`),C(t)}function C(n){return n===124?(e.enter(`tableCellDivider`),e.consume(n),e.exit(`tableCellDivider`),C):n===null||iD(n)?(e.exit(`tableRow`),t(n)):oD(n)?dD(e,C,`whitespace`)(n):(e.enter(`data`),w(n))}function w(t){return t===null||t===124||aD(t)?(e.exit(`data`),C(t)):(e.consume(t),t===92?T:w)}function T(t){return t===92||t===124?(e.consume(t),w):w(t)}}function PP(e,t){let n=-1,r=!0,i=0,a=[0,0,0,0],o=[0,0,0,0],s=!1,c=0,l,u,d,f=new kP;for(;++n<e.length;){let p=e[n],m=p[1];p[0]===`enter`?m.type===`tableHead`?(s=!1,c!==0&&(IP(f,t,c,l,u),u=void 0,c=0),l={type:`table`,start:Object.assign({},m.start),end:Object.assign({},m.end)},f.add(n,0,[[`enter`,l,t]])):m.type===`tableRow`||m.type===`tableDelimiterRow`?(r=!0,d=void 0,a=[0,0,0,0],o=[0,n+1,0,0],s&&(s=!1,u={type:`tableBody`,start:Object.assign({},m.start),end:Object.assign({},m.end)},f.add(n,0,[[`enter`,u,t]])),i=m.type===`tableDelimiterRow`?2:u?3:1):i&&(m.type===`data`||m.type===`tableDelimiterMarker`||m.type===`tableDelimiterFiller`)?(r=!1,o[2]===0&&(a[1]!==0&&(o[0]=o[1],d=FP(f,t,a,i,void 0,d),a=[0,0,0,0]),o[2]=n)):m.type===`tableCellDivider`&&(r?r=!1:(a[1]!==0&&(o[0]=o[1],d=FP(f,t,a,i,void 0,d)),a=o,o=[a[1],n,0,0])):m.type===`tableHead`?(s=!0,c=n):m.type===`tableRow`||m.type===`tableDelimiterRow`?(c=n,a[1]===0?o[1]!==0&&(d=FP(f,t,o,i,n,d)):(o[0]=o[1],d=FP(f,t,a,i,n,d)),i=0):i&&(m.type===`data`||m.type===`tableDelimiterMarker`||m.type===`tableDelimiterFiller`)&&(o[3]=n)}for(c!==0&&IP(f,t,c,l,u),f.consume(t.events),n=-1;++n<t.events.length;){let e=t.events[n];e[0]===`enter`&&e[1].type===`table`&&(e[1]._align=jP(t.events,n))}return e}function FP(e,t,n,r,i,a){let o=r===1?`tableHeader`:r===2?`tableDelimiter`:`tableData`;n[0]!==0&&(a.end=Object.assign({},LP(t.events,n[0])),e.add(n[0],0,[[`exit`,a,t]]));let s=LP(t.events,n[1]);if(a={type:o,start:Object.assign({},s),end:Object.assign({},s)},e.add(n[1],0,[[`enter`,a,t]]),n[2]!==0){let i=LP(t.events,n[2]),a=LP(t.events,n[3]),o={type:`tableContent`,start:Object.assign({},i),end:Object.assign({},a)};if(e.add(n[2],0,[[`enter`,o,t]]),r!==2){let r=t.events[n[2]],i=t.events[n[3]];if(r[1].end=Object.assign({},i[1].end),r[1].type=`chunkText`,r[1].contentType=`text`,n[3]>n[2]+1){let t=n[2]+1,r=n[3]-n[2]-1;e.add(t,r,[])}}e.add(n[3]+1,0,[[`exit`,o,t]])}return i!==void 0&&(a.end=Object.assign({},LP(t.events,i)),e.add(i,0,[[`exit`,a,t]]),a=void 0),a}function IP(e,t,n,r,i){let a=[],o=LP(t.events,n);i&&(i.end=Object.assign({},o),a.push([`exit`,i,t])),r.end=Object.assign({},o),a.push([`exit`,r,t]),e.add(n+1,0,a)}function LP(e,t){let n=e[t],r=n[0]===`enter`?`start`:`end`;return n[1][r]}var RP={name:`tasklistCheck`,tokenize:BP};function zP(){return{text:{91:RP}}}function BP(e,t,n){let r=this;return i;function i(t){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(t):(e.enter(`taskListCheck`),e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),a)}function a(t){return aD(t)?(e.enter(`taskListCheckValueUnchecked`),e.consume(t),e.exit(`taskListCheckValueUnchecked`),o):t===88||t===120?(e.enter(`taskListCheckValueChecked`),e.consume(t),e.exit(`taskListCheckValueChecked`),o):n(t)}function o(t){return t===93?(e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),e.exit(`taskListCheck`),s):n(t)}function s(r){return iD(r)?t(r):oD(r)?e.check({tokenize:VP},t,n)(r):n(r)}}function VP(e,t,n){return dD(e,r,`whitespace`);function r(e){return e===null?n(e):t(e)}}function HP(e){return KE([iP(),bP(),OP(e),MP(),zP()])}var UP={};function WP(e){let t=this,n=e||UP,r=t.data(),i=r.micromarkExtensions||=[],a=r.fromMarkdownExtensions||=[],o=r.toMarkdownExtensions||=[];i.push(HP(n)),a.push(qN()),o.push(JN(n))}function GP(e){let t=e.replace(/[\\/]+$/,``),n=Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`));return n===-1?t:t.slice(n+1)}function KP(e,t){return e?`${e}/${t}`:t}function qP(e){let t=e.lastIndexOf(`/`);return t===-1?``:e.slice(0,t)}function JP(e,t){return t===``||e===t||e.startsWith(`${t}/`)}function YP(e,t){return t?t===`win32`?`\\`:`/`:/^[A-Za-z]:|\\/.test(e)?`\\`:`/`}function XP(e,t){return t===`/`?e:e.replace(/\//g,`\\`)}function ZP(e,t,n){let r=YP(e,n),i=r===`\\`?e.replace(/\//g,`\\`):e;return t?`${i.replace(/[\\/]+$/,``)}${r}${XP(t,r)}`:i}var QP=Object.fromEntries(Object.entries({ts:[`ts`,`mts`,`cts`],tsx:[`tsx`],js:[`js`,`mjs`,`cjs`],jsx:[`jsx`],json:[`json`,`jsonc`,`json5`,`jsonl`,`ndjson`,`webmanifest`,`geojson`],markdown:[`md`,`mdx`,`markdown`],python:[`py`,`pyi`,`pyw`],rust:[`rs`],go:[`go`],java:[`java`],kotlin:[`kt`,`kts`],groovy:[`groovy`,`gradle`],scala:[`scala`,`sbt`],csharp:[`cs`,`csx`],fsharp:[`fs`,`fsx`,`fsi`],vb:[`vb`],c:[`c`,`h`],cpp:[`cpp`,`cc`,`cxx`,`hpp`,`hh`,`hxx`,`ino`],swift:[`swift`],dart:[`dart`],php:[`php`],ruby:[`rb`,`rake`,`gemspec`,`erb`],perl:[`pl`,`pm`],lua:[`lua`],r:[`r`,`rmd`],julia:[`jl`],zig:[`zig`],elixir:[`ex`,`exs`],erlang:[`erl`,`hrl`],haskell:[`hs`],clojure:[`clj`,`cljs`,`cljc`,`edn`],ocaml:[`ml`,`mli`],solidity:[`sol`],vue:[`vue`],svelte:[`svelte`],astro:[`astro`],html:[`html`,`htm`,`xhtml`],css:[`css`],scss:[`scss`,`sass`],less:[`less`],xml:[`xml`,`svg`,`xsd`,`xsl`,`xslt`,`xaml`,`plist`,`resx`,`nuspec`],msbuild:[`csproj`,`vbproj`,`fsproj`,`vcxproj`,`props`,`targets`],yaml:[`yml`,`yaml`],toml:[`toml`],ini:[`ini`,`cfg`,`conf`,`properties`,`env`,`editorconfig`],graphql:[`graphql`,`gql`],proto:[`proto`],prisma:[`prisma`],hcl:[`tf`,`tfvars`,`hcl`],sql:[`sql`],powershell:[`ps1`,`psm1`,`psd1`],bash:[`sh`,`bash`,`zsh`,`ksh`],fish:[`fish`],batch:[`bat`,`cmd`],dockerfile:[`dockerfile`,`containerfile`],makefile:[`mk`,`mak`],cmake:[`cmake`],diff:[`diff`,`patch`],latex:[`tex`,`sty`,`cls`,`bib`],rst:[`rst`],asciidoc:[`adoc`,`asciidoc`],glsl:[`glsl`,`vert`,`frag`,`wgsl`,`hlsl`],csv:[`csv`],tsv:[`tsv`],text:[`txt`,`text`,`log`,`lock`,`out`,`nfo`]}).flatMap(([e,t])=>t.map(t=>[t,e]))),$P={dockerfile:`dockerfile`,containerfile:`dockerfile`,makefile:`makefile`,gnumakefile:`makefile`,"cmakelists.txt":`cmake`,jenkinsfile:`groovy`,gemfile:`ruby`,rakefile:`ruby`,podfile:`ruby`,vagrantfile:`ruby`,brewfile:`ruby`,procfile:`text`,license:`text`,licence:`text`,readme:`text`,changelog:`text`,authors:`text`,contributors:`text`,codeowners:`text`,notice:`text`,copying:`text`,".gitignore":`gitignore`,".gitattributes":`gitignore`,".dockerignore":`gitignore`,".npmignore":`gitignore`,".prettierignore":`gitignore`,".eslintignore":`gitignore`,".vscodeignore":`gitignore`,".gitmodules":`ini`,".editorconfig":`ini`,".npmrc":`ini`,".yarnrc":`ini`,".nvmrc":`text`,".node-version":`text`,".python-version":`text`,".tool-versions":`text`,".prettierrc":`json`,".eslintrc":`json`,".babelrc":`json`,".swcrc":`json`,".bashrc":`bash`,".bash_profile":`bash`,".zshrc":`bash`,".profile":`bash`};function eF(e){let t=e.toLowerCase();return $P[t]||(/^\.env(\..+)?$/.test(t)?`dotenv`:/^(docker|container)file\..+$/.test(t)?`dockerfile`:null)}function tF(e){let t=GP(e),n=t.lastIndexOf(`.`);return n<=0?``:t.slice(n+1).toLowerCase()}function nF(e){if(!e)return null;let t=eF(GP(e));if(t)return t;let n=tF(e);return QP[n]??(n||null)}var rF=Object.fromEntries(Object.entries({image:{png:`image/png`,apng:`image/apng`,jpg:`image/jpeg`,jpeg:`image/jpeg`,jfif:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,bmp:`image/bmp`,ico:`image/x-icon`,cur:`image/x-icon`,svg:`image/svg+xml`,avif:`image/avif`},audio:{mp3:`audio/mpeg`,wav:`audio/wav`,ogg:`audio/ogg`,oga:`audio/ogg`,opus:`audio/ogg`,m4a:`audio/mp4`,flac:`audio/flac`,aac:`audio/aac`,weba:`audio/webm`},video:{mp4:`video/mp4`,m4v:`video/mp4`,mov:`video/mp4`,webm:`video/webm`,ogv:`video/ogg`},pdf:{pdf:`application/pdf`}}).flatMap(([e,t])=>Object.entries(t).map(([t,n])=>[t,{kind:e,mime:n}])));function iF(e){let t=tF(e),n=rF[t];return n?{kind:n.kind,mime:n.mime}:QP[t]===`markdown`?{kind:`markdown`,mime:null}:eF(GP(e))||QP[t]?{kind:`text`,mime:null}:{kind:`unknown`,mime:null}}var aF=(e,t,n)=>e.length>=t+n.length&&[...n].every((n,r)=>e[t+r]===n.charCodeAt(0)),oF=(e,t)=>e.length>=t.length&&t.every((t,n)=>e[n]===t),sF=new Set([`avif`,`avis`]),cF=new Set([`M4A `,`M4B `,`M4P `]),lF=new Set([`heic`,`heix`,`hevc`,`heim`,`heis`,`mif1`,`msf1`]);function uF(e){let t=e=>({kind:`image`,mime:e}),n=e=>({kind:`audio`,mime:e});if(oF(e,[137,80,78,71,13,10,26,10]))return t(`image/png`);if(oF(e,[255,216,255]))return t(`image/jpeg`);if(aF(e,0,`GIF87a`)||aF(e,0,`GIF89a`))return t(`image/gif`);if(aF(e,0,`RIFF`)&&aF(e,8,`WEBP`))return t(`image/webp`);if(aF(e,0,`RIFF`)&&aF(e,8,`WAVE`))return n(`audio/wav`);if(aF(e,0,`BM`)&&[12,40,52,56,64,108,124].includes(e[14]??-1)&&e[15]===0&&e[16]===0&&e[17]===0)return t(`image/bmp`);if(oF(e,[0,0,1,0])&&((e[4]??0)>0||(e[5]??0)>0))return t(`image/x-icon`);if(aF(e,0,`%PDF-`))return{kind:`pdf`,mime:`application/pdf`};if(aF(e,0,`ID3`))return n(`audio/mpeg`);if(aF(e,0,`OggS`))return n(`audio/ogg`);if(aF(e,0,`fLaC`))return n(`audio/flac`);if(oF(e,[26,69,223,163]))return{kind:`video`,mime:`video/webm`};if(aF(e,4,`ftyp`)&&e.length>=12){let r=String.fromCharCode(...e.subarray(8,12));return sF.has(r)?t(`image/avif`):cF.has(r)?n(`audio/mp4`):lF.has(r)?null:{kind:`video`,mime:`video/mp4`}}return null}var dF=8192;function fF(e){return e.subarray(0,dF).includes(0)}function pF(e){return e.slice(0,dF).includes(`\0`)}function mF(e){try{return e[0]===255&&e[1]===254?new TextDecoder(`utf-16le`).decode(e.subarray(2)):e[0]===254&&e[1]===255?new TextDecoder(`utf-16be`).decode(e.subarray(2)):fF(e)?null:new TextDecoder(`utf-8`).decode(e)}catch{return null}}function hF(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e[n],t=Math.imul(t,16777619);return`${e.length}:${(t>>>0).toString(16)}`}function gF(e){return!Number.isFinite(e)||e<0?``:e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(+(e<10240))} KB`:e<1073741824?`${(e/1048576).toFixed(1)} MB`:`${(e/1073741824).toFixed(2)} GB`}var _F=/^[A-Za-z]:[\\/]/,vF=/^[\\/]{2}/,yF=/^[A-Za-z][A-Za-z0-9+.-]*:/,bF=/\.(?=[A-Za-z0-9]{0,9}[A-Za-z])[A-Za-z0-9]{1,10}$/,xF=/#L\d+(?:C\d+)?(?:-L?\d+(?:C\d+)?)?$/,SF=/(\.[A-Za-z0-9]{1,10}):\d+(?::\d+)?$/,CF=/[*?"<>|]/;function wF(e){return vF.test(e)?null:_F.test(e)||e.startsWith(`/`)?`abs`:/^~[\\/]/.test(e)?`home`:yF.test(e)?null:`rel`}function TF(e){let t=e.slice(Math.max(e.lastIndexOf(`/`),e.lastIndexOf(`\\`))+1);return t.lastIndexOf(`.`)>0&&bF.test(t)}function EF(e){return/[\\/]$/.test(e)||!TF(e)}function DF(e){return/[^\\/~]/.test(_F.test(e)?e.slice(2):e)}function OF(e){return e.replace(xF,``).replace(SF,`$1`)}function kF(e){if(!e.includes(`%`))return e;try{return decodeURIComponent(e)}catch{return e}}function AF(e){let t=/^file:(\/\/([^/]*))?(\/.*)?$/i.exec(e.trim());if(!t)return null;let n=t[2]??``;if(n!==``&&n.toLowerCase()!==`localhost`)return null;let r=kF(t[3]??``);return/^\/[A-Za-z]:[\\/]/.test(r)&&(r=r.slice(1)),!r||vF.test(r)?null:r}function jF(e){let t=e.trim();if(t.startsWith(`<`)&&t.endsWith(`>`)&&(t=t.slice(1,-1).trim()),!t||t.startsWith(`#`)||t.startsWith(`?`))return null;if(/^file:/i.test(t)){let e=AF(t);if(!e)return null;let n=wF(e);return n?{path:OF(e),base:n}:null}let n=OF(kF(t)),r=wF(n);return r?_F.test(n)?CF.test(n.slice(2))?null:{path:n,base:r}:!TF(n)||CF.test(n)||r===`rel`&&/^www\./i.test(n)?null:{path:n,base:r}:null}function MF(e){let t=e.trim();if(!t||t.length>1024||/[\r\n]/.test(t))return null;let n=/^(["'])(.*)\1$/.exec(t);if(n&&(t=(n[2]??``).trim()),/^file:/i.test(t)){let e=AF(t),n=e?wF(e):null;return e&&n&&TF(e)?{path:e,base:n}:null}t=OF(t);let r=wF(t);if(!r||!TF(t))return null;let i=_F.test(t)?t.slice(2):t;return CF.test(i)?null:r===`rel`?/\s|=/.test(t)||t.startsWith(`-`)||t.startsWith(`@`)||!/[\\/]/.test(t)&&!Nm(t)?null:{path:t,base:r}:/^\s|\s$/.test(t)?null:{path:t,base:r}}function NF(e,t=!1){let n=e.trim();if(!n||n.length>1024||/[\r\n]/.test(n))return null;let r=/^(["'])(.*)\1$/.exec(n);if(r&&(n=(r[2]??``).trim()),/^file:/i.test(n)){let e=AF(n),t=e?wF(e):null;return e&&(t===`abs`||t===`home`)&&EF(e)&&DF(e)?{path:e,base:t}:null}let i=wF(n);if(i!==`abs`&&i!==`home`||!EF(n)||!DF(n))return null;let a=_F.test(n);return CF.test(a?n.slice(2):n)||i===`abs`&&!a&&(n.includes(`:`)||!t&&!/[\\/]$/.test(n))?null:{path:n,base:i}}function PF(e){let t=e.trim();return!t||t.length>255||/[\s\\/:*?"<>|=`'(),;[\]{}]/.test(t)||/^[-@.~#$%]/.test(t)?null:TF(t)?t:null}function FF(e,t){let n=e.path.includes(`\\`)?`\\`:`/`;return{path:`${e.path.replace(/[\\/]+$/,``)}${n}${t}`,base:e.base}}var IF=String.raw`[^\s\\/:*?"<>|()[\]{}\`',;]`,LF=String.raw`[^\s\\/:*?"<>|\`](?:[^\\/:*?"<>|\n\`]*[^\s\\/:*?"<>|\`])?[\\/]`,RF=String.raw`\.(?=[A-Za-z0-9]{0,9}[A-Za-z])[A-Za-z0-9]{1,10}`,zF=String.raw`(?=$|[\s.,;:!?)\]}'"»”>\`])`,BF=String.raw`(?<=^|[\s(\[{"'«“\`])`,VF=new RegExp([String.raw`\[(?<label>[^\]\n]{1,300})\]\(\s*<?(?<target>(?:[A-Za-z]:[\\/]|file:|~[\\/]|\/)[^()<>\n]*?)>?\s*\)`,String.raw`(?<=(?:📁|📂)\uFE0F?[ \t]{0,3})(?<marked>(?:[A-Za-z]:[\\/]|~[\\/]|\/)(?![\\/])(?:${LF})*${IF}*${zF})`,String.raw`(?<win>(?<![\w/\\:.-])[A-Za-z]:[\\/](?![\\/])(?:${IF}+[\\/])*${IF}*${RF}${zF})`,String.raw`(?<windir>(?<![\w/\\:.-])[A-Za-z]:[\\/](?![\\/])(?:${IF}+[\\/])*${IF}+[\\/]?${zF})`,String.raw`(?<posix>${BF}~?\/(?:${IF}+\/)*${IF}*${RF}${zF})`,String.raw`(?<homedir>${BF}~[\\/](?:${IF}+[\\/])*${IF}+[\\/]?${zF})`,String.raw`(?<rootdir>${BF}\/(?:${IF}+\/)+${zF})`,String.raw`(?<url>(?<![\w])file:\/\/\/?[^\s<>"'()[\]{}\`]+)`].join(`|`),`g`);function HF(e){if(!/[\\/]/.test(e))return[];let t=[];for(let n of e.matchAll(VF)){let e=n.groups??{},r=n.index??0,i=r+n[0].length,a=null,o,s=!1;if(e.target!==void 0)a=jF(e.target),o=e.label;else if(e.win!==void 0||e.posix!==void 0){let t=e.win??e.posix,n=wF(t);a=n?{path:t,base:n}:null}else if(e.marked!==void 0){let t=e.marked,n=wF(t);s=EF(t),a=n&&n!==`rel`&&DF(t)?{path:t,base:n}:null}else if(e.windir??e.homedir??e.rootdir){let t=e.windir??e.homedir??e.rootdir,n=wF(t);s=!0,a=n&&n!==`rel`&&DF(t)?{path:t,base:n}:null}else if(e.url!==void 0){let t=e.url.replace(/[.,;:!?]+$/,``);i=r+t.length;let n=AF(t),o=n?wF(n):null;a=n&&o&&TF(n)?{path:n,base:o}:null}a&&t.push({start:r,end:i,ref:a,...o===void 0?{}:{label:o},...s?{folder:!0}:{}})}return t}function UF(e,t){if(e.platform)return e.platform===`win32`;let n=e.cwd??e.homeDir??t;return/^[A-Za-z]:|\\/.test(n)}function WF(e,t,n){let r=[];for(let e of t.split(/[\\/]+/))e!==``&&e!==`.`&&(e===`..`?r.pop():r.push(e));return e+r.join(n)}function GF(e,t,n){let r=n?`\\`:`/`;return KF(`${e.replace(/[\\/]+$/,``)}${r}${t}`,n)}function KF(e,t){return t?_F.test(e)?WF(`${e.slice(0,2).toUpperCase()}\\`,e.slice(3),`\\`):WF(`\\`,e,`\\`):WF(`/`,e,`/`)}function qF(e,t){let n=UF(t,e.path);switch(e.base){case`abs`:return KF(e.path,n);case`home`:return t.homeDir?GF(t.homeDir,e.path.slice(2),n):null;case`rel`:return t.cwd?GF(t.cwd,e.path,n):null}}function JF(e,t){if(!t.cwd)return null;let n=UF(t,e),r=KF(t.cwd,n),i=n?`\\`:`/`,a=r.endsWith(i)?r:r+i;if(!(n?e.toLowerCase().startsWith(a.toLowerCase()):e.startsWith(a)))return null;let o=e.slice(a.length);return o?o.split(/[\\/]/).join(`/`):null}function YF(e){return Nm(e)?.kind??`file`}function XF(e){let t=iF(e).kind;return t!==`unknown`&&t!==`pdf`}function ZF(e){let t=e.replace(/[\\/]+$/,``);return t.slice(Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`))+1)}var QF=`oona-file`,$F=/(?:📁|📂)\uFE0F?[ \t]*$/;function eI(e,t,n,r,i=!1){let a={filePath:e.path,fileBase:e.base,fileVariant:t};return e.base===`rel`&&r.dir&&(a.fileAltDir=r.dir.path,a.fileAltDirBase=r.dir.base),i&&(a.fileGuess=!0),{type:`oonaLocalFile`,data:{hName:QF,hProperties:a},children:n}}function tI(e,t){t.base!==`rel`&&EF(t.path)&&(e.dir=t)}function nI(e,t){let n=MF(e);if(n)return{ref:n,guess:!1};let r=NF(e,t.marked);if(r)return{ref:r,guess:!0};let i=t.dir?PF(e):null;return i&&t.dir?{ref:FF(t.dir,i),guess:!0}:null}function rI(e,t){let n=HF(e);if(n.length===0)return null;let r=[],i=0;for(let a of n){a.start>i&&r.push({type:`text`,value:e.slice(i,a.start)});let n=e.slice(a.start,a.end);r.push(a.label===void 0?eI(a.ref,`bare`,[{type:`text`,value:n}],t,a.folder===!0):eI(a.ref,`link`,[{type:`text`,value:a.label}],t)),(a.folder||a.label!==void 0)&&tI(t,a.ref),i=a.end}return i<e.length&&r.push({type:`text`,value:e.slice(i)}),r}var iI=new Set([`link`,`linkReference`,`image`,`imageReference`,`definition`,`html`]);function aI(e,t){let n=e.children;if(!n)return;let r=null;for(let e=0;e<n.length;e++){let i=n[e],a=null;if(i.type===`link`){let e=jF(i.url??``);e&&(a=[eI(e,`link`,i.children??[],t)],tI(t,e))}else if(i.type===`inlineCode`||i.type===`code`){let e=i.value??``,n=i.type===`code`,r=n&&e.includes(`
|
|
147
|
+
`)?null:nI(e,t);if(r){let i=n?`block`:`code`;a=[eI(r.ref,i,[{type:`text`,value:e}],t,r.guess)],r.guess&&tI(t,r.ref)}}else i.type===`text`?a=rI(i.value??``,t):iI.has(i.type)||aI(i,t);t.marked=i.type===`text`&&$F.test(i.value??``),a?(r??=n.slice(0,e),r.push(...a)):r&&r.push(i)}r&&(e.children=r)}function oI(){return e=>{aI(e,{dir:null,marked:!1})}}var sI=3e4,cI=25,lI=5e3,uI=(e,t)=>`${e}\n${t}`;function dI(e){if(!e||typeof e!=`object`)return!1;let{status:t,message:n}=e;return t===501||t===404&&typeof n==`string`&&n.startsWith(`no route for`)}var fI=class{#e;#t;#n;#r;#i;#a;#o=new Map;#s=new Map;#c=new Map;#l=new Set;#u=new Map;#d=null;#f=!1;constructor(e){this.#e=e.stat,this.#t=e.ttlMs??sI,this.#n=e.batchMs??cI,this.#r=Math.max(1,Math.min(e.maxPerCall??100,500)),this.#i=e.maxEntries??lI,this.#a=e.now??Date.now}get unsupported(){return this.#f}peek(e,t){return this.#o.get(uI(e,t))?.answer}watch(e,t,n){let r=t.map(t=>uI(e,t));return r.forEach((r,i)=>{let a=this.#s.get(r);a||this.#s.set(r,a=new Set),a.add(n);let o=this.#o.get(r);(!o||this.#a()-o.at>=this.#t)&&this.#p(e,t[i])}),()=>{for(let e of r){let t=this.#s.get(e);t&&(t.delete(n),t.size===0&&this.#s.delete(e))}}}invalidate(e){this.#u.set(e,(this.#u.get(e)??0)+1);let t=`${e}\n`;for(let[e,n]of this.#o)e.startsWith(t)&&(n.at=-1/0);for(let n of this.#s.keys())n.startsWith(t)&&this.#p(e,n.slice(t.length))}#p(e,t){if(this.#f||this.#l.has(uI(e,t)))return;let n=this.#c.get(e);n||this.#c.set(e,n=new Set),n.add(t),this.#d??=setTimeout(()=>this.#m(),this.#n)}#m(){this.#d=null;let e=[...this.#c];this.#c.clear();for(let[t,n]of e){let e=[...n];for(let n=0;n<e.length;n+=this.#r)this.#h(t,e.slice(n,n+this.#r))}}async#h(e,t){let n=this.#u.get(e)??0,r=t.map(t=>uI(e,t));r.forEach(e=>this.#l.add(e));let i;try{let{results:n}=await this.#e(e,t);i=t.map((e,t)=>{let r=n[t]?.path===e?n[t]:n.find(t=>t.path===e);return r?r.exists?r.kind===`dir`?`dir`:`file`:`missing`:`unchecked`})}catch(e){if(dI(e)){r.forEach(e=>this.#l.delete(e)),this.#f=!0,this.#c.clear(),this.#_([...this.#s.keys()]);return}i=t.map(()=>`unchecked`)}r.forEach(e=>this.#l.delete(e));let a=(this.#u.get(e)??0)!==n,o=a?-1/0:this.#a(),s=[];r.forEach((n,r)=>{let c=i[r],l=this.#o.get(n);this.#o.delete(n),this.#o.set(n,{answer:c,at:o}),l?.answer!==c&&s.push(n),a&&this.#s.has(n)&&this.#p(e,t[r])}),this.#g(),this.#_(s)}#g(){for(;this.#o.size>this.#i;){let e=this.#o.keys().next().value;if(e===void 0)break;this.#o.delete(e)}}#_(e){let t=new Set;for(let n of e)this.#s.get(n)?.forEach(e=>t.add(e));t.forEach(e=>e())}};function pI(e){if(e===null||e.length===0)return{state:`unchecked`};for(let t=0;t<e.length;t++){let n=e[t];if(n===`file`||n===`dir`)return{state:`found`,index:t,kind:n};if(n===void 0)return{state:`unknown`};if(n===`unchecked`)return{state:`unchecked`}}return{state:`missing`}}var mI=(0,v.createContext)({sessionId:null,cwd:null,homeDir:null,platform:null,remote:!1,grant:null,openInViewer:null,bridge:null,notify:null,stat:null});function hI(e){typeof document>`u`||document.querySelectorAll(`audio, video`).forEach(t=>{t!==e&&!t.paused&&t.pause()})}var gI=`This file is on the PC that runs this chat — open it on that PC.`;function _I({kind:e}){let t=`h-3.5 w-3.5 text-fg-faint`;switch(e){case`audio`:return(0,K.jsx)(Y.Music,{className:t});case`video`:return(0,K.jsx)(Y.Film,{className:t});case`image`:return(0,K.jsx)(Y.Image,{className:t});case`file`:return(0,K.jsx)(Y.File,{className:t});case`dir`:return(0,K.jsx)(Y.Folder,{className:t})}}var vI={file:`f`,dir:`d`,missing:`m`,unchecked:`u`},yI={f:`file`,d:`dir`,m:`missing`,u:`unchecked`};function bI(e,t,n){let r=n.join(`
|
|
148
|
+
`),i=(0,v.useCallback)(r=>e&&t&&n.length>0?e.watch(t,n,r):()=>{},[e,t,r]),a=()=>!e||!t||n.length===0||e.unsupported?`X`:n.map(n=>{let r=e.peek(t,n);return r===void 0?`?`:vI[r]}).join(``),o=(0,v.useSyncExternalStore)(i,a,a);return(0,v.useMemo)(()=>pI(o===`X`?null:[...o].map(e=>yI[e])),[o])}function xI({variant:e,state:t,title:n,children:r}){return e===`block`?(0,K.jsx)(`div`,{className:`my-2`,"data-testid":`local-file-plain`,"data-state":t,children:(0,K.jsx)(`div`,{className:`max-w-full break-all rounded-md border border-border bg-code-bg px-2 py-1.5 font-mono text-[12.5px]`,children:(0,K.jsx)(`code`,{children:r})})}):e===`code`?(0,K.jsx)(`code`,{"data-testid":`local-file-plain`,"data-state":t,title:n,children:r}):(0,K.jsx)(`span`,{"data-testid":`local-file-plain`,"data-state":t,title:n,children:r})}function SI({label:e,onClick:t,testId:n,children:r}){return(0,K.jsx)(`button`,{type:`button`,"aria-label":e,title:e,"data-testid":n,onClick:e=>{e.preventDefault(),t()},className:`inline-flex items-center justify-center rounded p-0.5 text-fg-muted hover:bg-surface-3 hover:text-fg`,children:r})}function CI(e){return e instanceof $h?e.status===404&&e.message.startsWith(`no route for`)?`This PC’s OonaCode cannot play files from the chat yet — update it.`:e.code===`session_not_found`?`Send a message first — this chat is not saved yet.`:e.status===404?`Not found on this PC.`:e.message:e instanceof Error?e.message:String(e)}function wI({sessionId:e,path:t,kind:n,grant:r}){let[i,a]=(0,v.useState)(null),[o,s]=(0,v.useState)(0),[c,l]=(0,v.useState)(!1);(0,v.useEffect)(()=>{let n=!0;return a(null),r(e,t).then(e=>{n&&a({url:e.url})},e=>{n&&a({error:CI(e)})}),()=>{n=!1}},[e,t,r,o]),(0,v.useEffect)(()=>{if(!c||typeof window>`u`)return;let e=e=>{e.key===`Escape`&&l(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[c]);let u=()=>{o===0?s(1):a({error:`It could not be played here.`})},d=e=>hI(e.currentTarget);return i===null?(0,K.jsxs)(`span`,{className:`my-1 flex items-center gap-1 text-xs text-fg-muted`,"data-testid":`local-file-loading`,children:[(0,K.jsx)(Y.Spinner,{className:`h-3 w-3`}),` Loading…`]}):`error`in i?(0,K.jsx)(`span`,{className:`my-1 block text-xs text-danger`,"data-testid":`local-file-error`,children:i.error}):n===`audio`?(0,K.jsx)(`audio`,{controls:!0,autoPlay:!0,preload:`metadata`,src:i.url,onPlay:d,onError:u,className:`my-1 block h-9 w-full max-w-sm`,"data-testid":`local-file-audio`}):n===`video`?(0,K.jsx)(`video`,{controls:!0,autoPlay:!0,preload:`metadata`,src:i.url,onPlay:d,onError:u,className:`my-1 block max-h-72 w-full max-w-md rounded border border-border bg-black`,"data-testid":`local-file-video`}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`img`,{src:i.url,alt:ZF(t),onError:u,onClick:()=>l(!0),title:`Enlarge`,className:`my-1 block max-h-40 max-w-full cursor-zoom-in rounded border border-border`,"data-testid":`local-file-image`}),c&&typeof document<`u`?(0,RS.createPortal)((0,K.jsx)(`div`,{role:`dialog`,"aria-label":ZF(t),onClick:()=>l(!1),className:`fixed inset-0 z-50 flex cursor-zoom-out items-center justify-center bg-black/70 p-6`,"data-testid":`local-file-zoom`,children:(0,K.jsx)(`img`,{src:i.url,alt:ZF(t),className:`max-h-[90vh] max-w-[90vw] rounded shadow-lg`})}),document.body):null]})}var TI=(0,v.memo)(function({path:e,base:t,variant:n,altDir:r=null,altDirBase:i=null,guess:a=!1,children:o}){let s=(0,v.useContext)(mI),c=(0,v.useMemo)(()=>{let n=[],a=e=>{let t=qF(e,s);t!==null&&!n.includes(t)&&n.push(t)};return a({path:e,base:t}),t===`rel`&&r!==null&&i!==null&&a(FF({path:r,base:i},e)),n},[e,t,r,i,s.cwd,s.homeDir,s.platform]),l=bI(s.remote?null:s.stat,s.sessionId,c),[u,d]=(0,v.useState)(!1),f=l.state===`found`,p=f?c[l.index]:c[0]??null,m=f&&l.kind===`dir`?`dir`:YF(p??e),h=m===`audio`||m===`video`||m===`image`?m:null,g=l.state===`unknown`||l.state===`missing`?l.state:l.state===`unchecked`&&a?`unchecked`:null,_=!s.remote&&p!==null,y=_&&m!==`dir`?JF(p,s):null,b=y!==null&&s.openInViewer!==null&&XF(p),x=_&&!!s.bridge?.openPath,S=_&&!!s.bridge?.showItemInFolder,C=_&&h!==null&&s.grant!==null&&s.sessionId!==null,w=m===`dir`?`Open the folder`:`Open with its app`,T=()=>{!p||!s.bridge?.openPath||s.bridge.openPath(p).then(e=>{!e.ok&&e.message&&s.notify?.(e.shownInFolder?`info`:`error`,e.message)},e=>s.notify?.(`error`,CI(e)))},E=()=>{!p||!s.bridge?.showItemInFolder||s.bridge.showItemInFolder(p).then(e=>{!e.ok&&e.message&&s.notify?.(`error`,e.message)},e=>s.notify?.(`error`,CI(e)))},D=b?{run:()=>s.openInViewer(y),title:`Open in the file viewer`}:x?{run:T,title:w}:C?{run:()=>d(e=>!e),title:m===`image`?`Show here`:`Play here`}:null,O=p??e,k=s.remote?`${O}\n${gI}`:D?`${D.title}\n${O}`:O;if(g)return(0,K.jsx)(xI,{variant:n,state:g,title:n===`link`?O:void 0,children:o});let A=n===`code`||n===`block`?(0,K.jsx)(`code`,{className:n===`block`?`break-all`:void 0,children:o}):(0,K.jsx)(`span`,{className:G(`min-w-0 break-all`,n===`bare`&&`font-mono text-[0.92em]`),children:o}),j=D?(0,K.jsx)(`button`,{type:`button`,onClick:e=>{e.preventDefault(),D.run()},title:k,"data-testid":`local-file-name`,className:`min-w-0 cursor-pointer text-left text-accent underline decoration-dotted underline-offset-2 hover:decoration-solid`,children:A}):(0,K.jsx)(`span`,{title:k,"data-testid":`local-file-name`,className:`min-w-0`,children:A}),M=(0,K.jsxs)(K.Fragment,{children:[C?(0,K.jsx)(SI,{label:u?`Close the player`:m===`image`?`Show here`:`Play here`,onClick:()=>d(e=>!e),testId:`local-file-play`,children:u?(0,K.jsx)(Y.X,{className:`h-3 w-3`}):m===`image`?(0,K.jsx)(Y.Image,{className:`h-3 w-3`}):(0,K.jsx)(Y.Play,{className:`h-3 w-3`})}):null,x?(0,K.jsx)(SI,{label:w,onClick:T,testId:`local-file-open`,children:(0,K.jsx)(Y.ExternalLink,{className:`h-3 w-3`})}):null,S?(0,K.jsx)(SI,{label:m===`dir`?`Show in its folder`:`Show in folder`,onClick:E,testId:`local-file-folder`,children:(0,K.jsx)(Y.Folder,{className:`h-3 w-3`})}):null,s.remote?(0,K.jsx)(`span`,{title:gI,"aria-label":gI,"data-testid":`local-file-remote`,children:(0,K.jsx)(Y.Monitor,{className:`h-3 w-3 text-fg-faint`})}):null]}),N=u&&C&&h?(0,K.jsx)(`span`,{className:`block`,"data-testid":`local-file-player`,children:(0,K.jsx)(wI,{sessionId:s.sessionId,path:p,kind:h,grant:s.grant})}):null;return n===`block`?(0,K.jsxs)(`div`,{className:`my-2`,"data-testid":`local-file`,"data-kind":m,"data-path":O,children:[(0,K.jsxs)(`div`,{className:`flex max-w-full items-center gap-1 rounded-md border border-border bg-code-bg px-2 py-1.5 font-mono text-[12.5px]`,children:[(0,K.jsx)(_I,{kind:m}),j,M]}),N]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`span`,{className:G(`inline-flex max-w-full items-center gap-0.5 align-baseline`,n===`link`&&`rounded border border-border bg-surface-2 px-1 py-px`),"data-testid":`local-file`,"data-kind":m,"data-path":O,children:[n===`link`?(0,K.jsx)(_I,{kind:m}):null,j,M]}),N]})});function EI(e){let{filePath:t,fileBase:n,fileVariant:r,fileAltDir:i,fileAltDirBase:a,fileGuess:o,children:s}=e;return!t||!n?(0,K.jsx)(K.Fragment,{children:s}):(0,K.jsx)(TI,{path:t,base:n,variant:r??`bare`,altDir:i&&a?i:null,altDirBase:i&&a?a:null,guess:o===!0,children:s})}var DI=(0,v.memo)(function({text:e}){let t=(0,v.useMemo)(()=>{let t=HF(e);if(t.length===0)return null;let n=[],r=0;for(let i of t)i.start>r&&n.push(e.slice(r,i.start)),n.push((0,K.jsx)(TI,{path:i.ref.path,base:i.ref.base,variant:i.label===void 0?`bare`:`link`,guess:i.folder===!0,children:i.label??e.slice(i.start,i.end)},i.start)),r=i.end;return r<e.length&&n.push(e.slice(r)),n},[e]);return(0,K.jsx)(K.Fragment,{children:t??e})});async function OI(e){try{if(navigator.clipboard?.writeText)return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}function kI({text:e,className:t}){let[n,r]=(0,v.useState)(!1);return(0,K.jsxs)(`button`,{type:`button`,"aria-label":`Copy to clipboard`,title:`Copy`,className:G(`inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-[11px] text-fg-muted hover:bg-surface-3 hover:text-fg`,t),onClick:()=>{OI(e).then(e=>{e&&(r(!0),setTimeout(()=>r(!1),1500))})},children:[n?(0,K.jsx)(Y.Check,{className:`w-3 h-3`}):(0,K.jsx)(Y.Copy,{className:`w-3 h-3`}),n?`Copied`:`Copy`]})}function AI({code:e,language:t,className:n,maxHeight:r}){return(0,K.jsxs)(`div`,{className:G(`group relative my-2 overflow-hidden rounded-md border border-border bg-code-bg`,n),children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between border-b border-border px-2 py-0.5 text-[11px] text-fg-faint`,children:[(0,K.jsx)(`span`,{className:`font-mono`,children:t||`text`}),(0,K.jsx)(kI,{text:e})]}),(0,K.jsx)(`pre`,{className:`m-0 overflow-x-auto p-3 font-mono text-[12.5px] leading-relaxed`,style:r?{maxHeight:r,overflowY:`auto`}:void 0,children:(0,K.jsx)(`code`,{children:e})})]})}function jI(e){return typeof e==`string`?e:Array.isArray(e)?e.map(jI).join(``):e&&typeof e==`object`&&`props`in e?jI(e.props.children):``}function MI(e){window.oonacode?.openExternal?window.oonacode.openExternal(e):window.open(e,`_blank`,`noopener,noreferrer`)}var NI={pre({children:e}){let t=Array.isArray(e)?e[0]:e,n=t&&typeof t==`object`&&`props`in t?t.props:null,r=n?.className?.match(/language-([\w-]+)/)?.[1]??null,i=jI(n?.children??e).replace(/\n$/,``);return(0,K.jsx)(AI,{code:i,language:r})},a({href:e,children:t}){let n=e??``;return(0,K.jsx)(`a`,{href:n,onClick:e=>{/^https?:/i.test(n)&&(e.preventDefault(),MI(n))},rel:`noopener noreferrer`,target:`_blank`,children:t})}},PI=[WP],FI=[WP,oI],II={...NI,[QF]:EI},LI=(0,v.memo)(function({text:e,className:t,localFiles:n=!1}){return(0,K.jsx)(`div`,{className:G(`md break-words`,t),children:(0,K.jsx)(Bj,{remarkPlugins:n?FI:PI,components:n?II:NI,children:e})})});function RI({pack:e,where:t}){let n=`shrink-0 rounded-sm px-1 py-px text-[10px] leading-none font-semibold tracking-wide uppercase`;return(0,K.jsxs)(K.Fragment,{children:[e.builtin?(0,K.jsx)(`span`,{"data-testid":t===`row`?`tool-pack-builtin-${e.slug}`:void 0,className:G(n,`bg-accent-soft text-accent`),children:`Built in`}):null,e.status===`demo`?(0,K.jsx)(`span`,{"data-testid":t===`row`?`tool-pack-demo-${e.slug}`:void 0,className:G(n,`bg-warn-soft text-warn`),children:`Demo`}):null,e.status===`live`&&e.install&&e.installed===!1?(0,K.jsx)(`span`,{"data-testid":t===`row`?`tool-pack-install-${e.slug}`:void 0,title:`The first time a chat uses it, OonaCode asks once to install it (${nu(e.install.sizeBytes)}).`,className:G(n,`bg-surface-2 text-fg-muted`),children:`Installs on first use`}):null]})}function zI({pack:e,row:t,panel:n,id:r,cardRef:i,onMouseEnter:a,onMouseLeave:o,onBlur:s}){let[c,l]=(0,v.useState)(0),[u,d]=(0,v.useState)(()=>({width:window.innerWidth,height:window.innerHeight}));(0,v.useLayoutEffect)(()=>{let e=i.current?.offsetHeight??0;e!==c&&l(e)}),(0,v.useEffect)(()=>{let e=()=>d({width:window.innerWidth,height:window.innerHeight});return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let f=mv({row:t,panel:n,height:c,viewport:u}),p=Op(e),m=du(e);return(0,RS.createPortal)((0,K.jsxs)(`div`,{ref:i,id:r,role:`tooltip`,tabIndex:-1,"data-testid":`tool-pack-card`,"data-pack":e.slug,"data-side":f.side,onMouseEnter:a,onMouseLeave:o,onBlur:s,className:`fixed z-[60] flex flex-col overflow-hidden rounded-lg border border-border bg-surface text-xs text-fg shadow-lg focus:outline-none`,style:{left:f.left,top:f.top,width:f.width,maxHeight:f.maxHeight},children:[(0,K.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5 border-b border-border px-3 py-2`,children:[(0,K.jsx)(Y.Tool,{className:`w-3.5 h-3.5 shrink-0 text-fg-faint`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-medium`,children:e.name}),(0,K.jsx)(RI,{pack:e,where:`card`})]}),(0,K.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto overscroll-contain px-3 py-2`,"data-testid":`tool-pack-card-body`,children:p?(0,K.jsx)(LI,{text:p,className:`md-compact leading-relaxed`}):(0,K.jsxs)(`div`,{"data-testid":`tool-pack-card-fallback`,className:`space-y-1.5 leading-snug`,children:[(0,K.jsx)(`p`,{className:`text-fg-muted`,children:kp(e)}),e.status===`demo`?(0,K.jsx)(`p`,{className:`text-fg-faint`,children:Ap}):null]})}),(0,K.jsxs)(`div`,{className:`shrink-0 border-t border-border px-3 py-1.5 text-[10px] text-fg-faint`,children:[`≈`,m.toLocaleString(),` tokens on every request while it is on`]})]}),document.body)}var BI=352,VI=388;function HI(e){let t=e?.getBoundingClientRect();return t?{left:t.left,top:t.top,right:t.right,bottom:t.bottom}:null}function UI({disabled:e}){let{state:t,actions:n,api:r}=q(),i=jS(),a=MS(),o=AS(),s=kS(),c=s?t.remote.tabs[s]:void 0,l=c?c.features?.includes(Ie.toolPacks)?c.catalogue?.packs:void 0:t.agentTools?.packs,u=Mh(yw().providerId),d=(0,v.useMemo)(()=>(l??[]).filter(e=>e.slug!==`reach`&&!(u&&(e.slug===`images`||e.slug===`pc-chats`))&&!(c!==void 0&&Hw(e))),[l,u,c]),[f,p]=(0,v.useState)(!1),[m,h]=(0,v.useState)({up:!0,right:!1}),g=(0,v.useRef)(null),_=(0,v.useRef)(null),y=(0,v.useRef)(null),b=(0,v.useRef)(null),[x,S]=(0,v.useState)(null),[C,w]=(0,v.useState)(null),T=$w(r,d.some(Hw)&&(f||C!==null)),E=(0,v.useCallback)(()=>w(null),[]),D=(0,v.useId)(),O=(0,v.useRef)(null),k=(0,v.useRef)(null),A=(0,v.useRef)(!1),j=()=>{O.current&&clearTimeout(O.current),k.current&&clearTimeout(k.current),O.current=null,k.current=null};if((0,v.useEffect)(()=>j,[]),(0,v.useEffect)(()=>{p(!1)},[s]),(0,v.useEffect)(()=>{f||(j(),S(null))},[f]),(0,v.useEffect)(()=>{if(!f)return;let e=e=>{let t=e.target;b.current?.contains(t)||t instanceof Element&&t.closest(`[role="dialog"][aria-modal="true"]`)||g.current&&!g.current.contains(t)&&p(!1)},t=e=>{if(e.key===`Escape`){if(e.preventDefault(),b.current){let e=b.current.dataset.pack,t=b.current.contains(document.activeElement);j(),S(null),t&&e&&(A.current=!0,Array.from(y.current?.querySelectorAll(`[data-testid^="tool-pack-info-"]`)??[]).find(t=>t.dataset.testid===`tool-pack-info-${e}`)?.focus(),A.current=!1);return}p(!1),_.current?.focus()}};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[f]),(0,v.useEffect)(()=>{f&&y.current?.querySelector(`[role="switch"]`)?.focus()},[f]),(0,v.useEffect)(()=>{if(!f)return;let e=()=>{let e=g.current?.getBoundingClientRect();if(!e)return;let t=window.innerHeight-e.bottom,n=e.top;h({up:t>=VI?!1:n>t,right:e.left+BI>window.innerWidth&&e.right>=BI})};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[f]),d.length===0||!s)return null;let M=a?a.toolPacks:i?.toolPacks,N=Tp(d,M),ee=!a&&((o?.items.length??0)>0||(i?.entryCount??0)>0),P=(e=!0)=>{p(!1),e&&_.current?.focus()},F=(e,t,n)=>{let r=HI(t);if(!r)return;let i=HI(y.current)??r;S(t=>t&&t.slug===e&&t.via===`focus`&&n===`hover`?t:{slug:e,row:r,panel:i,via:n})},I=()=>{k.current&&clearTimeout(k.current),k.current=setTimeout(()=>{k.current=null,S(e=>e?.via===`hover`?null:e)},200)},te=(e,t)=>{if(j(),x?.slug!==e){if(x){F(e,t,`hover`);return}O.current=setTimeout(()=>{O.current=null,F(e,t,`hover`)},300)}},ne=()=>{O.current&&clearTimeout(O.current),O.current=null,x?.via===`hover`&&I()},re=(e,t)=>{A.current||(j(),F(e,t.closest(`li`),`focus`))},L=e=>{let t=e.relatedTarget;t&&b.current?.contains(t)||t instanceof HTMLElement&&t.dataset.testid===`tool-pack-info-${x?.slug}`||S(e=>e?.via===`focus`?null:e)},R=f&&x?d.find(e=>e.slug===x.slug):void 0,z=Ww()?t.connection.hostName??`that PC`:null,B=C?d.find(e=>e.slug===C):void 0,ie=e=>{let t=!iu(e,M);n.setSessionToolPacks(s,wp(M,e.slug,t))};return(0,K.jsxs)(`span`,{ref:g,className:`relative inline-flex items-center`,children:[(0,K.jsxs)(`button`,{type:`button`,ref:_,"aria-label":N.label,"aria-haspopup":`dialog`,"aria-expanded":f,title:N.title,"data-testid":`tools-picker`,"data-count":N.count,disabled:e,onClick:()=>f?P():p(!0),className:G(`flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded px-1.5 py-0.5 text-xs hover:bg-fg/5 disabled:opacity-50`,N.count>0?`text-fg`:`text-fg-muted`),children:[(0,K.jsx)(Y.Tool,{className:`w-3.5 h-3.5`}),(0,K.jsx)(`span`,{children:`Tools`}),(0,K.jsxs)(`span`,{className:N.count>0?`text-accent`:`text-fg-faint`,children:[`· `,N.count]})]}),f?(0,K.jsx)(`div`,{ref:y,role:`dialog`,"aria-label":`Tools for this chat`,"data-testid":`tools-panel`,onKeyDown:e=>{if(![`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key))return;let t=Array.from(y.current?.querySelectorAll(`[role="switch"]:not([disabled])`)??[]);if(t.length===0)return;e.preventDefault();let n=t.indexOf(document.activeElement);t[e.key===`Home`?0:e.key===`End`?t.length-1:(n+(e.key===`ArrowDown`?1:-1)+t.length)%t.length]?.focus()},className:G(`absolute z-50 w-[22rem] max-w-[calc(100vw-2rem)]`,m.up?`bottom-full mb-1`:`top-full mt-1`,m.right?`right-0`:`left-0`),children:(0,K.jsxs)(`div`,{className:`flex max-h-[24rem] flex-col overflow-hidden rounded-lg border border-border bg-surface shadow-lg`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-2.5 py-1.5 text-[11px] uppercase tracking-wide text-fg-muted`,children:[(0,K.jsx)(Y.Tool,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`flex-1`,children:`OonaCode tools`}),(0,K.jsxs)(`span`,{className:`normal-case tracking-normal text-fg-faint`,children:[N.count,` of `,d.length,` on`]})]}),(0,K.jsx)(`ul`,{className:`min-h-0 flex-1 overflow-y-auto py-1`,onScroll:()=>{x&&S(null)},children:d.map(t=>(0,K.jsx)(WI,{pack:t,on:iu(t,M),disabled:e,onToggle:()=>ie(t),needsSignIn:Hw(t)&&(T.unavailable||T.byslug?.[t.slug]?.state!==`connected`),unavailable:Hw(t)&&T.unavailable,extra:Hw(t)?(0,K.jsx)(nT,{pack:t,status:T.byslug?.[t.slug],view:T,remoteName:z,onSignIn:()=>{T.clearError(),w(t.slug)}}):null,cardOpen:R?.slug===t.slug,cardId:D,onEnter:e=>te(t.slug,e),onLeave:ne,onInfoFocus:e=>re(t.slug,e),onInfoBlur:L},t.slug))}),ee?(0,K.jsx)(`div`,{className:`border-t border-border px-2.5 py-1.5 text-[11px] leading-snug text-fg-faint`,"data-testid":`tools-restart-note`,children:Dp}):null]})}):null,B&&Hw(B)?(0,K.jsx)(JS,{open:!0,title:`Sign in to ${B.connector.vendor}`,onClose:E,children:(0,K.jsx)(rT,{pack:B,status:T.byslug?.[B.slug],view:T,onDone:E})}):null,R&&x?(0,K.jsx)(zI,{pack:R,row:x.row,panel:x.panel,id:D,cardRef:b,onMouseEnter:()=>{k.current&&clearTimeout(k.current),k.current=null},onMouseLeave:()=>{x.via===`hover`&&I()},onBlur:L}):null]})}function WI({pack:e,on:t,disabled:n,onToggle:r,needsSignIn:i,unavailable:a,extra:o,cardOpen:s,cardId:c,onEnter:l,onLeave:u,onInfoFocus:d,onInfoBlur:f}){let p=du(e),m=i&&!t;return(0,K.jsxs)(`li`,{className:G(`flex items-start gap-3 px-2.5 py-2 hover:bg-surface-2`,s&&`bg-surface-2`),"data-testid":`tool-pack-${e.slug}`,onMouseEnter:e=>l(e.currentTarget),onMouseLeave:u,children:[(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`span`,{className:`truncate text-xs font-medium text-fg`,children:e.name}),(0,K.jsx)(RI,{pack:e,where:`row`}),(0,K.jsx)(`button`,{type:`button`,"aria-label":`About ${e.name}`,"aria-expanded":s,"aria-describedby":s?c:void 0,"data-testid":`tool-pack-info-${e.slug}`,onFocus:e=>d(e.currentTarget),onClick:e=>d(e.currentTarget),onBlur:f,className:`shrink-0 cursor-help rounded text-fg-faint hover:text-fg focus-visible:text-fg focus-visible:outline-2 focus-visible:outline-accent`,children:(0,K.jsx)(Y.Info,{className:`w-3.5 h-3.5`})})]}),e.description?(0,K.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-[11px] leading-snug text-fg-muted`,children:e.description}):null,(0,K.jsxs)(`p`,{className:`mt-0.5 text-[10px] text-fg-faint`,children:[`≈`,p.toLocaleString(),` tokens per request`]}),o,m&&!a?(0,K.jsx)(`p`,{className:`mt-0.5 text-[10px] text-fg-faint`,"data-testid":`tool-pack-signin-first-${e.slug}`,children:Bw}):null]}),(0,K.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":t,"aria-label":e.name,disabled:n||m,title:m?a?zw:Bw:void 0,"data-testid":`tool-pack-switch-${e.slug}`,onClick:r,className:G(`relative mt-0.5 h-5 w-9 shrink-0 rounded-full border transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent disabled:opacity-50`,t?`border-accent bg-accent`:`border-border bg-surface-2`),children:(0,K.jsx)(`span`,{className:G(`absolute top-0.5 h-3.5 w-3.5 rounded-full bg-surface transition-all`,t?`left-[1.15rem]`:`left-0.5`)})})]})}var GI=320,KI=300;function qI({disabled:e}){let{state:t,actions:n}=q(),r=kS(),i=jS(),a=r?t.drafts[r]:null,[o,s]=(0,v.useState)(!1),[c,l]=(0,v.useState)({up:!1,right:!1}),u=(0,v.useRef)(null),d=(0,v.useRef)(null),f=(0,v.useRef)(null);(0,v.useEffect)(()=>{if(!o)return;let e=e=>{let t=e.target;u.current?.contains(t)||s(!1)},t=e=>{e.key===`Escape`&&(s(!1),d.current?.focus())};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[o]),(0,v.useEffect)(()=>{if(!o)return;let e=()=>{let e=u.current?.getBoundingClientRect();if(!e)return;let t=window.innerHeight-e.bottom,n=e.top;l({up:t>=KI?!1:n>t,right:e.left+GI>window.innerWidth&&e.right>=GI})};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[o]),(0,v.useEffect)(()=>{o&&f.current?.querySelector(`[role="switch"]`)?.focus()},[o]);let p=(t.mcpServers??[]).filter(e=>e.enabled!==!1);if(p.length===0||!r||t.remote.tabs[r])return null;let m=a?a.mcpSwitches:i?.mcpSwitches,h=p.filter(e=>vu(e,m)).length,g=e=>{let t=!vu(e,m);n.setSessionMcpSwitches(r,yu(m??void 0,e.id,t))};return(0,K.jsxs)(`div`,{ref:u,className:`relative inline-block shrink-0`,children:[(0,K.jsxs)(`button`,{ref:d,type:`button`,disabled:e,onClick:()=>s(!o),"aria-haspopup":`dialog`,"aria-expanded":o,"aria-label":`MCP Servers for this chat`,"data-testid":`mcp-picker`,className:G(`flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded px-1.5 py-0.5 text-xs hover:bg-fg/5 disabled:opacity-50 transition-colors`,h>0?`text-fg`:`text-fg-muted`),children:[(0,K.jsx)(Y.Plug,{className:G(`w-3.5 h-3.5`,h>0?`text-accent`:`text-fg-muted`)}),(0,K.jsx)(`span`,{children:`MCP`}),(0,K.jsxs)(`span`,{className:h>0?`text-accent font-medium`:`text-fg-faint`,children:[`· `,h]})]}),o&&(0,K.jsxs)(`div`,{ref:f,role:`dialog`,"aria-label":`MCP Servers for this chat`,className:G(`absolute z-50 w-80 rounded-lg border border-border bg-surface p-3 shadow-xl text-xs flex flex-col gap-2.5`,c.up?`bottom-full mb-1`:`top-full mt-1`,c.right?`right-0`:`left-0`),children:[(0,K.jsxs)(`div`,{className:`border-b border-border pb-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`span`,{className:`font-semibold text-fg`,children:`MCP Servers in this chat`}),(0,K.jsxs)(`span`,{className:`text-[11px] text-accent font-medium`,children:[h,` of `,p.length,` on`]})]}),(0,K.jsx)(`p`,{className:`mt-0.5 text-[11px] text-fg-muted`,children:`Enable only the servers needed for this conversation to prevent token waste.`})]}),(0,K.jsx)(`div`,{className:`max-h-60 overflow-y-auto space-y-1.5 pr-0.5`,children:p.map(t=>{let n=vu(t,m);return(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2 rounded-md p-1.5 hover:bg-surface-2 transition-colors`,children:[(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`span`,{className:`font-medium text-fg truncate text-xs`,children:t.name}),(0,K.jsx)(Q,{tone:`neutral`,children:t.transport})]}),t.description&&(0,K.jsx)(`p`,{className:`text-[11px] text-fg-muted truncate`,children:t.description})]}),(0,K.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":n,"aria-label":`Toggle ${t.name}`,disabled:e,onClick:()=>g(t),className:G(`relative h-5 w-9 shrink-0 rounded-full border transition-colors focus-visible:outline-2 focus-visible:outline-accent disabled:opacity-50`,n?`border-accent bg-accent`:`border-border bg-surface-2`),children:(0,K.jsx)(`span`,{className:G(`absolute top-0.5 h-3.5 w-3.5 rounded-full bg-surface transition-all`,n?`left-[1.15rem]`:`left-0.5`)})})]},t.id)})}),(0,K.jsxs)(`div`,{className:`pt-2 border-t border-border flex items-center justify-between text-[11px]`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{s(!1),n.openSettings(`mcp`)},className:`text-accent hover:underline flex items-center gap-1`,children:[(0,K.jsx)(`span`,{children:`Configure in Settings`}),(0,K.jsx)(Y.ExternalLink,{className:`w-3 h-3`})]}),(0,K.jsx)(`span`,{className:`text-fg-muted`,children:h===0?`No tools loaded`:`${h} loaded`})]})]})]})}var JI=new Map;function YI(e){e===void 0?JI.clear():JI.delete(e)}function XI(e,t,n){let[,r]=(0,v.useState)(0),i=(0,v.useRef)(null),a=e===null?void 0:JI.get(e),o=a!==void 0&&Date.now()-a.at<6e4;return(0,v.useEffect)(()=>{if(!t||e===null||o||i.current===e)return;i.current=e;let a=!0;return n(e).then(t=>JI.set(e,{at:Date.now(),value:t})).catch(()=>JI.set(e,{at:Date.now(),value:null})).finally(()=>{i.current===e&&(i.current=null),a&&r(e=>e+1)}),()=>{a=!1}},[t,e,o,n]),a===void 0?{status:t?`loading`:`idle`,data:null}:a.value===`unsupported`?{status:`unsupported`,data:null}:a.value===null?{status:`error`,data:null}:{status:`ready`,data:a.value}}function ZI(e){return e!==null&&JI.get(e)?.value===`unsupported`}function QI({skill:e,where:t}){return(0,K.jsx)(`span`,{"data-testid":t===`row`?`skill-source-${e.name}`:void 0,className:G(`shrink-0 rounded-sm px-1 py-px text-[10px] leading-none font-semibold tracking-wide uppercase`,e.source===`user`?`bg-accent-soft text-accent`:e.source===`project`?`bg-warn-soft text-warn`:`bg-surface-2 text-fg-muted`),children:gh(e.source)})}function $I({skill:e,on:t,row:n,panel:r,id:i,cardRef:a,onMouseEnter:o,onMouseLeave:s,onBlur:c}){let[l,u]=(0,v.useState)(0),[d,f]=(0,v.useState)(()=>({width:window.innerWidth,height:window.innerHeight}));(0,v.useLayoutEffect)(()=>{let e=a.current?.offsetHeight??0;e!==l&&u(e)}),(0,v.useEffect)(()=>{let e=()=>f({width:window.innerWidth,height:window.innerHeight});return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let p=mv({row:n,panel:r,height:l,viewport:d});return(0,RS.createPortal)((0,K.jsxs)(`div`,{ref:a,id:i,role:`tooltip`,tabIndex:-1,"data-testid":`skill-card`,"data-skill":e.name,"data-side":p.side,onMouseEnter:o,onMouseLeave:s,onBlur:c,className:`fixed z-[60] flex flex-col overflow-hidden rounded-lg border border-border bg-surface text-xs text-fg shadow-lg focus:outline-none`,style:{left:p.left,top:p.top,width:p.width,maxHeight:p.maxHeight},children:[(0,K.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5 border-b border-border px-3 py-2`,children:[(0,K.jsx)(Y.Skill,{className:`w-3.5 h-3.5 shrink-0 text-fg-faint`}),(0,K.jsxs)(`span`,{className:`min-w-0 flex-1 truncate font-medium font-mono`,children:[`/`,e.label]}),(0,K.jsx)(QI,{skill:e,where:`card`})]}),(0,K.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto overscroll-contain px-3 py-2`,"data-testid":`skill-card-body`,children:(0,K.jsx)(LI,{text:vh(e,t),className:`md-compact leading-relaxed`})}),(0,K.jsxs)(`div`,{className:`shrink-0 border-t border-border px-3 py-1.5 text-[10px] text-fg-faint`,children:[`≈`,e.tokens.toLocaleString(),` tokens on every request while it is on`]})]}),document.body)}var eL=384,tL=420;function nL(e){let t=e?.getBoundingClientRect();return t?{left:t.left,top:t.top,right:t.right,bottom:t.bottom}:null}function rL({disabled:e}){let{state:t,actions:n}=q(),r=jS(),i=MS(),a=AS(),o=kS(),[s,c]=(0,v.useState)(!1),[l,u]=(0,v.useState)({up:!0,right:!1}),d=(0,v.useRef)(null),f=(0,v.useRef)(null),p=(0,v.useRef)(null),m=(0,v.useRef)(null),[h,g]=(0,v.useState)(null),_=(0,v.useId)(),y=(0,v.useRef)(null),b=(0,v.useRef)(null),x=(0,v.useRef)(!1),S=o?!!t.remote.tabs[o]:!1,{status:C,data:w}=XI(S?null:o,s,n.listChatSkills),T=()=>{y.current&&clearTimeout(y.current),b.current&&clearTimeout(b.current),y.current=null,b.current=null};if((0,v.useEffect)(()=>T,[]),(0,v.useEffect)(()=>{c(!1)},[o]),(0,v.useEffect)(()=>{s||(T(),g(null))},[s]),(0,v.useEffect)(()=>{if(!s)return;let e=e=>{let t=e.target;m.current?.contains(t)||d.current&&!d.current.contains(t)&&c(!1)},t=e=>{if(e.key===`Escape`){if(e.preventDefault(),m.current){let e=m.current.dataset.skill,t=m.current.contains(document.activeElement);T(),g(null),t&&e&&(x.current=!0,Array.from(p.current?.querySelectorAll(`[data-skill-info]`)??[]).find(t=>t.dataset.skillInfo===e)?.focus(),x.current=!1);return}c(!1),f.current?.focus()}};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[s]),(0,v.useEffect)(()=>{!s||C!==`ready`||p.current?.querySelector(`[role="switch"]`)?.focus()},[s,C]),(0,v.useEffect)(()=>{if(!s)return;let e=()=>{let e=d.current?.getBoundingClientRect();if(!e)return;let t=window.innerHeight-e.bottom,n=e.top;u({up:t>=tL?!1:n>t,right:e.left+eL>window.innerWidth&&e.right>=eL})};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[s]),!o||S||ZI(o))return null;let E=(i?i.modelSkills:r?.modelSkills)??[],D=w?.skills??[],O=dh(w?D:null,E),k=uh(D,E),A=!i&&((a?.items.length??0)>0||(r?.entryCount??0)>0),j=(e=!0)=>{c(!1),e&&f.current?.focus()},M=(e,t,n)=>{let r=nL(t);if(!r)return;let i=nL(p.current)??r;g(t=>t&&t.name===e&&t.via===`focus`&&n===`hover`?t:{name:e,row:r,panel:i,via:n})},N=()=>{b.current&&clearTimeout(b.current),b.current=setTimeout(()=>{b.current=null,g(e=>e?.via===`hover`?null:e)},200)},ee=(e,t)=>{if(T(),h?.name!==e){if(h){M(e,t,`hover`);return}y.current=setTimeout(()=>{y.current=null,M(e,t,`hover`)},300)}},P=()=>{y.current&&clearTimeout(y.current),y.current=null,h?.via===`hover`&&N()},F=(e,t)=>{x.current||(T(),M(e,t.closest(`li`),`focus`))},I=e=>{let t=e.relatedTarget;t&&m.current?.contains(t)||t instanceof HTMLElement&&t.dataset.skillInfo===h?.name||g(e=>e?.via===`focus`?null:e)},te=s&&h?D.find(e=>e.name===h.name):void 0,ne=e=>{let t=!lh(E,e.name);n.setSessionModelSkills(o,ch(E,e.name,t))};return(0,K.jsxs)(`span`,{ref:d,className:`relative inline-flex items-center`,children:[(0,K.jsxs)(`button`,{type:`button`,ref:f,"aria-label":O.label,"aria-haspopup":`dialog`,"aria-expanded":s,title:O.title,"data-testid":`skills-picker`,"data-count":O.count,disabled:e,onClick:()=>s?j():c(!0),className:G(`flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded px-1.5 py-0.5 text-xs hover:bg-fg/5 disabled:opacity-50`,O.count>0?`text-fg`:`text-fg-muted`),children:[(0,K.jsx)(Y.Skill,{className:`w-3.5 h-3.5`}),(0,K.jsx)(`span`,{children:`Skills`}),(0,K.jsxs)(`span`,{className:O.count>0?`text-accent`:`text-fg-faint`,children:[`· `,O.count]})]}),s?(0,K.jsx)(`div`,{ref:p,role:`dialog`,"aria-label":`Skills for this chat`,"data-testid":`skills-panel`,onKeyDown:e=>{if(![`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key))return;let t=Array.from(p.current?.querySelectorAll(`[role="switch"]:not([disabled])`)??[]);if(t.length===0)return;e.preventDefault();let n=t.indexOf(document.activeElement);t[e.key===`Home`?0:e.key===`End`?t.length-1:(n+(e.key===`ArrowDown`?1:-1)+t.length)%t.length]?.focus()},className:G(`absolute z-50 w-[24rem] max-w-[calc(100vw-2rem)]`,l.up?`bottom-full mb-1`:`top-full mt-1`,l.right?`right-0`:`left-0`),children:(0,K.jsxs)(`div`,{className:`flex max-h-[26rem] flex-col overflow-hidden rounded-lg border border-border bg-surface shadow-lg`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-2.5 py-1.5 text-[11px] uppercase tracking-wide text-fg-muted`,children:[(0,K.jsx)(Y.Skill,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`flex-1`,children:`Skills`}),(0,K.jsxs)(`span`,{className:`normal-case tracking-normal text-fg-faint`,"data-testid":`skills-panel-count`,children:[O.count,` of `,D.length,` on`,k>0?` · ≈${k.toLocaleString()} tokens/request`:``]})]}),(0,K.jsx)(`p`,{className:`border-b border-border px-2.5 py-1.5 text-[11px] leading-snug text-fg-muted`,"data-testid":`skills-intro`,children:ph}),C===`loading`||C===`idle`?(0,K.jsxs)(`div`,{className:`flex items-center gap-2 px-2.5 py-2 text-xs text-fg-muted`,role:`status`,children:[(0,K.jsx)(Y.Spinner,{className:`h-3.5 w-3.5 animate-spin`}),` Reading this chat’s skills…`]}):C===`error`?(0,K.jsx)(`div`,{className:`px-2.5 py-2 text-xs text-fg-muted`,role:`status`,children:`The host could not list this chat’s skills right now — typing one still runs it.`}):D.length===0?(0,K.jsx)(`div`,{className:`px-2.5 py-2 text-xs text-fg-muted`,role:`status`,"data-testid":`skills-empty`,children:`No skill the model could use here yet.`}):(0,K.jsx)(`ul`,{className:`min-h-0 flex-1 overflow-y-auto py-1`,onScroll:()=>{h&&g(null)},children:D.map(t=>(0,K.jsx)(iL,{skill:t,on:lh(E,t.name),disabled:e,onToggle:()=>ne(t),cardOpen:te?.name===t.name,cardId:_,onEnter:e=>ee(t.name,e),onLeave:P,onInfoFocus:e=>F(t.name,e),onInfoBlur:I},t.name))}),(0,K.jsxs)(`div`,{className:`space-y-0.5 border-t border-border px-2.5 py-1.5 text-[11px] leading-snug text-fg-faint`,children:[w&&w.typeOnly>0?(0,K.jsx)(`p`,{"data-testid":`skills-type-only`,children:w.typeOnly===1?`1 more skill is in the / menu for typing only — the model is never shown it.`:`${w.typeOnly} more skills are in the / menu for typing only — the model is never shown them.`}):null,O.count===0?(0,K.jsx)(`p`,{"data-testid":`skills-tool-note`,children:hh}):null,A?(0,K.jsx)(`p`,{"data-testid":`skills-restart-note`,children:mh}):null]})]})}):null,te&&h?(0,K.jsx)($I,{skill:te,on:lh(E,te.name),row:h.row,panel:h.panel,id:_,cardRef:m,onMouseEnter:()=>{b.current&&clearTimeout(b.current),b.current=null},onMouseLeave:()=>{h.via===`hover`&&N()},onBlur:I}):null]})}function iL({skill:e,on:t,disabled:n,onToggle:r,cardOpen:i,cardId:a,onEnter:o,onLeave:s,onInfoFocus:c,onInfoBlur:l}){let u=`${e.label}: the model may use it on its own in this chat`;return(0,K.jsxs)(`li`,{className:G(`flex items-start gap-3 px-2.5 py-2 hover:bg-surface-2`,i&&`bg-surface-2`),"data-testid":`skill-row-${e.name}`,onMouseEnter:e=>o(e.currentTarget),onMouseLeave:s,children:[(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsxs)(`span`,{className:`truncate font-mono text-xs font-medium text-fg`,children:[`/`,e.label]}),(0,K.jsx)(QI,{skill:e,where:`row`}),(0,K.jsx)(`button`,{type:`button`,"aria-label":`About ${e.label}`,"aria-expanded":i,"aria-describedby":i?a:void 0,"data-testid":`skill-info-${e.name}`,"data-skill-info":e.name,onFocus:e=>c(e.currentTarget),onClick:e=>c(e.currentTarget),onBlur:l,className:`shrink-0 cursor-help rounded text-fg-faint hover:text-fg focus-visible:text-fg focus-visible:outline-2 focus-visible:outline-accent`,children:(0,K.jsx)(Y.Info,{className:`w-3.5 h-3.5`})})]}),e.description?(0,K.jsx)(`p`,{className:`mt-0.5 line-clamp-2 text-[11px] leading-snug text-fg-muted`,children:e.description}):null,(0,K.jsxs)(`p`,{className:`mt-0.5 text-[10px] text-fg-faint`,"data-testid":`skill-tokens-${e.name}`,children:[`≈`,e.tokens.toLocaleString(),` tokens per request while on`,e.typeable?` · type it to use it once`:` · the model’s only — cannot be typed`]})]}),(0,K.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":t,"aria-label":u,title:`Model may use it on its own`,disabled:n,"data-testid":`skill-switch-${e.name}`,onClick:r,className:G(`relative mt-0.5 h-5 w-9 shrink-0 rounded-full border transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent disabled:opacity-50`,t?`border-accent bg-accent`:`border-border bg-surface-2`),children:(0,K.jsx)(`span`,{className:G(`absolute top-0.5 h-3.5 w-3.5 rounded-full bg-surface transition-all`,t?`left-[1.15rem]`:`left-0.5`)})})]})}var aL=new Set([`Task`,`Agent`,`Workflow`]);function oL(e){let t=[],n=[];for(let r of e)(r.running?t:n).push(r);return t.concat(n)}function sL(e){return e.kind===`tool`&&aL.has(e.name)}var cL=new Set([`streaming`,`pending`,`running`]);function lL(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function uL(e){return typeof e==`string`&&e.trim()?e.trim():null}function dL(e){let t=e.result?.structured;return t&&typeof t==`object`?t:null}function fL(e){if(e.kind===`tool`&&e.startedAt!==null)return e.startedAt;if(e.timestamp){let t=Date.parse(e.timestamp);if(Number.isFinite(t))return t}return null}var pL=new Map;function mL(e,t){let n=pL.get(t);n||(n=RegExp(`<${t}>([\\s\\S]*?)</${t}>`),pL.set(t,n));let r=n.exec(e);return r?r[1].trim():null}function hL(e,t,n){for(let r of e){if(mL(r.text,`task-id`)!==t)continue;let e=mL(r.text,`tool-use-id`);if(e&&e!==n)continue;let i=mL(r.text,`usage`)??``;return{status:mL(r.text,`status`),tokens:lL(Number(mL(i,`subagent_tokens`)??NaN)),toolUses:lL(Number(mL(i,`tool_uses`)??NaN)),durationMs:lL(Number(mL(i,`duration_ms`)??NaN)),at:fL(r)}}return null}var gL={alive:!0,since:null};function _L(e,t){return e.alive?e.since===null||t===null||t<=0||t>=e.since:!1}function vL(e,t=Date.now(),n={},r=gL){let i=e.filter(sL),a=e.filter(e=>e.kind===`user`&&e.text.includes(`<task-notification>`)),o=bL(i,e,a,t,r),s=yL(e,a,new Set(o.map(e=>e.agentId)),t,n,r);return[...o,...s]}function yL(e,t,n,r,i,a){let o=[],s=new Set(n),c=new Map;for(let e of t){let t=mL(e.text,`task-id`);if(!t||n.has(t))continue;let r=mL(e.text,`usage`)??``,i=mL(e.text,`status`),a=(mL(e.text,`summary`)??``).split(`
|
|
149
|
+
`)[0].trim(),o=fL(e)??0,s=c.get(t);s&&s.at>o||c.set(t,{at:o,view:{id:`note:${t}`,agentId:t,name:a.length>0?a.length>80?`${a.slice(0,79)}…`:a:`background task`,type:null,model:null,status:i&&i!==`completed`?`error`:`done`,running:!1,startedAt:null,endedAt:o>0?o:null,durationMs:lL(Number(mL(r,`duration_ms`)??NaN)),tokens:lL(Number(mL(r,`subagent_tokens`)??NaN)),toolCalls:lL(Number(mL(r,`tool_uses`)??NaN))??0,runs:1,nested:0,depth:0}})}for(let[e,t]of c)s.add(e),o.push(t.view);let l=new Map;for(let t of e){if(t.kind!==`permission`)continue;let e=t.request.agentId;if(!e||s.has(e))continue;let n=fL(t),r=l.get(e);r?(r.count+=1,(r.first===null||n!==null&&n<r.first)&&(r.first=n),n!==null&&(r.last===null||n>r.last)&&(r.last=n)):l.set(e,{first:n,last:n,count:1})}for(let[e,t]of l){let n=i[e],c=n?.finished===!0,l=n&&n.at>0?n.at:t.last,u=!c&&_L(a,l),d=n&&n.firstAt>0?t.first===null?n.firstAt:Math.min(t.first,n.firstAt):t.first,f=u?null:c&&n&&n.at>0?n.at:null;o.push({id:`perm:${e}`,agentId:e,name:`background agent`,type:null,model:null,status:u?`running`:c?`done`:`cancelled`,running:u,startedAt:d,endedAt:f,durationMs:d===null?null:Math.max(0,(u?r:f??l??d)-d),tokens:null,toolCalls:Math.max(t.count,n?.toolUses??0),runs:1,nested:0,depth:0}),s.add(e)}for(let[e,t]of Object.entries(i)){if(s.has(e)||l.has(e))continue;let n=!t.finished&&_L(a,t.at>0?t.at:null),i=t.firstAt>0?t.firstAt:null,c=n?null:t.finished&&t.at>0?t.at:null,u=n?r:t.at>0?t.at:i;o.push({id:`act:${e}`,agentId:e,name:`background agent`,type:null,model:null,status:n?`running`:t.finished?`done`:`cancelled`,running:n,startedAt:i,endedAt:c,durationMs:i!==null&&u!==null&&u>0?Math.max(0,u-i):null,tokens:null,toolCalls:t.toolUses,runs:1,nested:0,depth:0})}return o}function bL(e,t,n,r,i){if(e.length===0)return[];let a=new Map(e.map(e=>[e.toolUseId,e])),o=t.filter(e=>e.kind===`tool`&&e.name===`SendMessage`),s=new Map,c=new Map,l=new Map;for(let e of t){if(!e.parentToolUseId||!a.has(e.parentToolUseId))continue;if(e.kind===`assistant`){R(e.model)&&l.set(e.parentToolUseId,e.model);continue}if(e.kind!==`tool`)continue;let t=sL(e)?c:s;t.set(e.parentToolUseId,(t.get(e.parentToolUseId)??0)+1)}let u=e=>{let t=0,n=e.parentToolUseId;for(;n&&a.has(n)&&t<8;)t+=1,n=a.get(n).parentToolUseId;return t};return e.map(e=>{let t=dL(e),a=uL(e.input?.subagent_type),d=uL(e.input?.description)??uL(e.input?.name)??a??e.name,f=uL(t?.agentId)??e.toolUseId,p=t?.isAsync===!0||t?.status===`async_launched`,m={id:e.toolUseId,agentId:f,name:d,type:a,model:l.get(e.toolUseId)??null,startedAt:e.startedAt,nested:c.get(e.toolUseId)??0,depth:u(e)};if(!p){let n=cL.has(e.status)&&!e.result&&_L(i,e.startedAt),a=lL(t?.totalDurationMs)??e.durationMs??(n&&e.startedAt!==null?Math.max(0,r-e.startedAt):e.elapsedSec===null?null:e.elapsedSec*1e3);return{...m,status:n?e.status:cL.has(e.status)?`cancelled`:e.status,running:n,endedAt:n?null:e.finishedAt,durationMs:a,tokens:lL(t?.totalTokens),toolCalls:lL(t?.totalToolUseCount)??s.get(e.toolUseId)??0,runs:1}}let h=[e,...o.filter(e=>{let t=dL(e),n=uL(e.input?.to);return uL(t?.resumedAgentId)===f||n===f||n===d})],g=null,_=null,v=!1,y=!1,b=!1,x=null,S=null,C=null;for(let t of h){let a=hL(n,f,t.toolUseId),o=fL(t);if(!a){if(t!==e&&dL(t)?.success===!1||t!==e&&t.result?.isError)continue;S=o,_L(i,o)?(v=!0,x=o===null?null:Math.max(0,r-o)):(b=!0,x=null),C=null;continue}a.tokens!==null&&(g=(g??0)+a.tokens),a.toolUses!==null&&(_=(_??0)+a.toolUses),a.status&&a.status!==`completed`&&(y=!0),x=a.durationMs??(a.at!==null&&o!==null?Math.max(0,a.at-o):null),S=o,C=a.at}let w=v?`running`:y||e.status===`error`||e.status===`denied`?`error`:b?`cancelled`:`done`;return{...m,startedAt:S??e.startedAt,status:w,running:v,endedAt:v?null:C,durationMs:x,tokens:g,toolCalls:Math.max(_??0,s.get(e.toolUseId)??0),runs:h.length}})}var xL=1e3,SL=6e4;function CL(){let e=AS(),t=jS(),n=e?.items,[r,i]=(0,v.useState)(!1),[a,o]=(0,v.useState)(()=>Date.now()),s=(0,v.useRef)(null),c=e?.agentActivity,l=e?.status===`running`||e?.status===`waiting_permission`,u=e?.engineSince??null,d=e?.hasSubagentItems===!0||t?.hasSubagents===!0||Object.keys(c??{}).length>0,f=(0,v.useMemo)(()=>n&&d?vL(n,a,c??{},{alive:l,since:u}):[],[n,d,a,c,l,u]),p=f.filter(e=>e.running).length,[m,h]=(0,v.useState)(!1),g=(0,v.useMemo)(()=>m?f:f.filter(e=>e.running||e.endedAt!==null&&a-e.endedAt<SL),[f,a,m]),_=f.length-g.length;if((0,v.useEffect)(()=>{if(!r)return;let e=setInterval(()=>o(Date.now()),xL);return()=>clearInterval(e)},[r]),(0,v.useEffect)(()=>{if(!r)return;let e=e=>{s.current?.contains(e.target)||i(!1)},t=e=>{e.key===`Escape`&&i(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[r]),(0,v.useEffect)(()=>{i(!1),h(!1)},[e?.sessionId]),f.length===0)return null;let y=p>0?`${p} working`:`${f.length} ${f.length===1?`agent`:`agents`} finished`;return(0,K.jsxs)(`span`,{ref:s,className:`relative inline-flex items-center`,children:[(0,K.jsxs)(`button`,{type:`button`,"aria-label":y,title:y,"aria-haspopup":`dialog`,"aria-expanded":r,"data-testid":`subagents-badge`,onClick:()=>{o(Date.now()),i(e=>!e)},className:G(`flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded px-1.5 py-0.5 text-xs text-fg-muted hover:bg-fg/5`),children:[(0,K.jsx)(Y.Bot,{className:G(`w-3.5 h-3.5`,p>0&&`text-accent`)}),(0,K.jsxs)(`span`,{"data-testid":`subagents-total`,children:[f.length,` `,f.length===1?`agent`:`agents`]}),p>0?(0,K.jsxs)(`span`,{className:`text-accent`,"data-testid":`subagents-working`,children:[`· `,p,` working`]}):null,p>0?(0,K.jsx)(`span`,{"aria-hidden":`true`,className:`h-1.5 w-1.5 animate-pulse rounded-full bg-accent`,"data-testid":`subagents-running`}):null]}),r?(0,K.jsx)(`div`,{role:`dialog`,"aria-label":`Subagents of this chat`,"data-testid":`subagents-panel`,className:`absolute bottom-full left-0 z-50 mb-1 w-[24rem] max-w-[calc(100vw-2rem)]`,children:(0,K.jsxs)(`div`,{className:`max-h-[22rem] overflow-hidden rounded-lg border border-border bg-surface shadow-lg`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-2.5 py-1.5 text-[11px] uppercase tracking-wide text-fg-muted`,children:[(0,K.jsx)(Y.Bot,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`flex-1`,children:`Subagents`}),(0,K.jsx)(`span`,{className:`normal-case tracking-normal text-fg-faint`,children:y})]}),(0,K.jsxs)(`ul`,{className:`max-h-[19rem] overflow-y-auto py-1`,children:[oL(g).map(e=>(0,K.jsx)(wL,{agent:e,onJump:()=>i(!1)},e.id)),g.length===0?(0,K.jsx)(`li`,{className:`px-2.5 py-2 text-xs text-fg-faint`,children:`Nothing is working now.`}):null]}),_>0||m?(0,K.jsx)(`button`,{type:`button`,onClick:()=>h(e=>!e),"data-testid":`subagents-toggle-finished`,className:`w-full border-t border-border px-2.5 py-1.5 text-left text-[11px] text-fg-faint hover:bg-surface-2 hover:text-fg`,children:m?`Hide finished agents`:`${_} finished ${_===1?`agent`:`agents`} hidden — show`}):null]})}):null]})}function wL({agent:e,onJump:t}){let n=()=>{document.querySelector(`[data-testid="tool-${e.id}"]`)?.scrollIntoView({block:`center`,behavior:`smooth`}),t()},r=e.status===`error`||e.status===`denied`,i=r?`danger`:e.running?`accent`:`neutral`,a=e.running?`working`:e.status,o=!e.running;return(0,K.jsx)(`li`,{children:(0,K.jsxs)(`button`,{type:`button`,onClick:n,"data-testid":`subagent-${e.id}`,"data-state":e.running?`working`:r?`failed`:`done`,title:`Show this subagent's card in the chat`,className:G(`flex w-full flex-col gap-0.5 px-2.5 py-1.5 text-left hover:bg-surface-2`,o&&!r&&`opacity-60 hover:opacity-100`),style:e.depth?{paddingLeft:`${.625+e.depth*.75}rem`}:void 0,children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e.running?(0,K.jsx)(Y.Spinner,{className:`w-3 h-3 text-accent`}):(0,K.jsx)(Y.Bot,{className:`w-3 h-3 text-fg-faint`}),(0,K.jsx)(`span`,{className:G(`min-w-0 flex-1 truncate text-sm font-medium`,o?`text-fg-muted`:`text-fg`),children:e.name}),(0,K.jsx)(Q,{tone:i,children:a})]}),(0,K.jsxs)(`span`,{className:`flex items-center gap-3 pl-5 text-[11px] text-fg-faint`,children:[e.type&&e.type!==e.name?(0,K.jsx)(`span`,{className:`font-mono`,children:e.type}):null,e.model?(0,K.jsx)(`span`,{className:`font-mono`,"data-testid":`subagent-model-${e.agentId}`,children:e.model}):null,e.runs>1?(0,K.jsxs)(`span`,{children:[`resumed ×`,e.runs-1]}):null,e.durationMs===null?null:(0,K.jsx)(`span`,{children:H_(e.durationMs)}),e.tokens===null?null:(0,K.jsxs)(`span`,{children:[U_(e.tokens),` tokens`]}),(0,K.jsxs)(`span`,{children:[e.toolCalls,` `,e.toolCalls===1?`tool call`:`tool calls`]}),e.nested>0?(0,K.jsxs)(`span`,{children:[e.nested,` `,e.nested===1?`subagent`:`subagents`]}):null]})]})})}function TL({sessionId:e,projectId:t,showChat:n=!1}){let{state:r,actions:i}=q(),[a,o]=(0,v.useState)(null),[s,c]=(0,v.useState)(null),l=r.scheduledTasksVersion;(0,v.useEffect)(()=>{let n=!0;return i.listScheduledTasks({...e?{sessionId:e}:{},...t?{projectId:t}:{}}).then(e=>{n&&o(e)}),()=>{n=!1}},[e,t,l]);let u=e=>r.sessions.find(t=>t.id===e)?.title??`a chat`;return a===null?null:a.length===0?(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,"data-testid":`scheduled-tasks-empty`,children:`No scheduled tasks. Ask the agent to do something later or on a repeat — it uses OonaCode's scheduler, which runs on this PC even when the chat has gone quiet.`}):(0,K.jsx)(`ul`,{className:`space-y-1.5`,"data-testid":`scheduled-tasks`,children:a.map(e=>(0,K.jsxs)(`li`,{className:`rounded-md border border-border px-2.5 py-1.5 text-xs`,"data-testid":`scheduled-task-${e.id}`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-medium text-fg`,title:e.prompt,children:e.title}),(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:()=>void i.updateScheduledTask(e.id,{enabled:!e.enabled}),disabled:!e.enabled&&e.nextRunAt===null&&`at`in e.when,"data-testid":`scheduled-task-toggle`,children:e.enabled?`Pause`:`Resume`}),(0,K.jsx)(X,{size:`sm`,variant:s===e.id?`danger`:`ghost`,onClick:()=>{if(s!==e.id){c(e.id);return}c(null),i.deleteScheduledTask(e.id)},"data-testid":`scheduled-task-delete`,children:s===e.id?`Delete?`:`Delete`})]}),(0,K.jsxs)(`div`,{className:`mt-0.5 text-fg-muted`,children:[Mp(e.when),` · `,Np(e.nextRunAt,e.enabled),n?` · in “${u(e.sessionId)}”`:``,e.createdBy===`model`?` · set by the agent`:``]}),e.lastResult?(0,K.jsxs)(`div`,{className:`text-fg-faint`,"data-testid":`scheduled-task-result`,children:[`last: `,e.lastResult]}):null]},e.id))})}function EL(e,t){let n=new Date(e),r=n.toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`});return n.toDateString()===t.toDateString()?r:`${n.toLocaleDateString(void 0,{month:`short`,day:`numeric`})} ${r}`}function DL(){let{state:e,actions:t}=q(),n=jS(),r=n?.id??null,i=e.scheduledTasksVersion,[a,o]=(0,v.useState)([]),[s,c]=(0,v.useState)(!1),l=(0,v.useRef)(null);if((0,v.useEffect)(()=>{if(!r){o([]);return}let e=!0;return t.listScheduledTasks({sessionId:r}).then(t=>{e&&o(t)}).catch(()=>{e&&o([])}),()=>{e=!1}},[r,i]),(0,v.useEffect)(()=>{if(!s)return;let e=e=>{l.current?.contains(e.target)||c(!1)},t=e=>{e.key===`Escape`&&c(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[s]),(0,v.useEffect)(()=>c(!1),[r]),!r||a.length===0)return null;let u=e.providers.find(e=>e.definition.id===n?.providerId),d=u?.definition.models.find(e=>e.id===n?.model)?.displayName??n?.model??null,f=a.filter(e=>e.enabled&&e.nextRunAt!==null),p=f.map(e=>e.nextRunAt).sort().at(0),m=f.length>0?`${f.length} scheduled${p?` · next ${EL(p,new Date)}`:``}`:`${a.length} scheduled · paused`;return(0,K.jsxs)(`span`,{ref:l,className:`relative inline-flex items-center`,children:[(0,K.jsxs)(`button`,{type:`button`,"aria-label":`Scheduled tasks: ${m}`,title:`Scheduled tasks of this chat — ${m}`,"aria-haspopup":`dialog`,"aria-expanded":s,"data-testid":`scheduled-badge`,onClick:()=>c(e=>!e),className:G(`flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded px-1.5 py-0.5 text-xs hover:bg-fg/5`,f.length>0?`text-accent`:`text-fg-muted`),children:[(0,K.jsx)(Y.Clock,{className:`w-3.5 h-3.5`}),(0,K.jsx)(`span`,{children:m})]}),s?(0,K.jsx)(`div`,{role:`dialog`,"aria-label":`Scheduled tasks of this chat`,"data-testid":`scheduled-panel`,className:`absolute bottom-full left-0 z-50 mb-1 w-[26rem] max-w-[calc(100vw-2rem)]`,children:(0,K.jsxs)(`div`,{className:`overflow-hidden rounded-lg border border-border bg-surface shadow-lg`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-2.5 py-1.5 text-[11px] uppercase tracking-wide text-fg-muted`,children:[(0,K.jsx)(Y.Clock,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`flex-1`,children:`Scheduled tasks`}),(0,K.jsx)(`span`,{className:`normal-case tracking-normal text-fg-faint`,children:`runs on this PC`})]}),d?(0,K.jsxs)(`div`,{className:`border-b border-border px-2.5 py-1 text-xs text-fg-muted`,"data-testid":`scheduled-model`,children:[`Each run uses this chat's model at that moment — now`,` `,(0,K.jsx)(`span`,{className:`text-fg`,children:d}),u?` · ${u.definition.displayName}`:``,`. Change the chat's model and the next run follows it.`]}):null,(0,K.jsx)(`div`,{className:`max-h-[22rem] overflow-y-auto p-2`,children:(0,K.jsx)(TL,{sessionId:r})})]})}):null]})}var OL=70,kL=96,AL=170,jL=56;function ML(e,t=22){let n=e.trim().replace(/\s+/g,` `);return n.length<=t?n:`${n.slice(0,Math.max(1,t-1)).trimEnd()}…`}var NL={working:3,idle:2,asleep:1,missing:0},PL=Math.PI*2,FL=e=>(e%PL+PL)%PL,IL=e=>Math.round(e*100)/100;function LL(e){let t=0,n=0;for(let r of e)t+=Math.cos(r),n+=Math.sin(r);return Math.hypot(t,n)<1e-9?null:Math.atan2(n,t)}function RL(e,t=!1){return e.filter(e=>t||e.status!==`closed`).filter(e=>e.members.length>0).sort((e,t)=>e.createdAt===t.createdAt?e.id<t.id?-1:+(e.id>t.id):e.createdAt<t.createdAt?-1:1)}function zL(e,t={}){let n=t.now??Date.now(),r=RL(e,t.showClosed??!1),i=t.showClosed?0:e.filter(e=>e.status===`closed`).length,a=r.length,o=a<=1?0:Math.max(72,a*kL/PL),s=e=>-Math.PI/2+PL*e/Math.max(1,a),c=new Map;r.forEach((e,t)=>{for(let n of e.members){let r=n.leftAt===null,i=c.get(n.sessionId);i?(r&&!i.titleFromCurrent&&n.title&&(i.title=n.title,i.titleFromCurrent=!0),NL[n.state]>NL[i.state]&&(i.state=n.state)):(i={sessionId:n.sessionId,hostId:n.hostId,title:n.title,titleFromCurrent:r,state:n.state,hubs:[],conversationIds:[],anyCurrent:!1},c.set(n.sessionId,i)),i.conversationIds.includes(e.id)||(i.hubs.push(t),i.conversationIds.push(e.id)),r&&(i.anyCurrent=!0)}});let l=c.size,u=Math.max(o+120,l*OL/PL,110),d=[...c.values()].map(e=>({acc:e,pref:FL((a<=1?0:LL(e.hubs.map(s))??s(e.hubs[0]))+Math.PI/2)})).sort((e,t)=>Math.abs(e.pref-t.pref)>1e-9?e.pref-t.pref:e.acc.sessionId<t.acc.sessionId?-1:+(e.acc.sessionId>t.acc.sessionId)),f=PL/Math.max(1,l),p=(a<=1?null:LL(d.map((e,t)=>e.pref-t*f)))??0,m=IL(2*(u+AL)),h=IL(2*(u+jL)),g=m/2,_=h/2,v=r.map((e,t)=>{let r=s(t),i=e.members.filter(e=>e.leftAt===null).length,a=Date.parse(e.lastActivityAt),c=ep(e);return{id:e.id,x:IL(g+o*Math.cos(r)),y:IL(_+o*Math.sin(r)),name:c,label:ML(c),status:e.status,waiting:e.waiting,members:i,messageCount:e.messageCount,recent:e.status!==`closed`&&Number.isFinite(a)&&n-a>=-5e3&&n-a<=6e4}}),y=d.map(({acc:e},t)=>{let n=-Math.PI/2+p+t*f,r=g+u*Math.cos(n),i=_+u*Math.sin(n),a=Math.cos(n),o=Math.sin(n),s=a>.3?`start`:a<-.3?`end`:`middle`,c=s===`middle`?r:r+a*15,l=s===`middle`?o<0?i-15:i+15+8:i+o*15+4;return{sessionId:e.sessionId,hostId:e.hostId,x:IL(r),y:IL(i),title:e.title,label:ML(e.title||`a chat`),state:e.state,conversationIds:e.conversationIds,left:!e.anyCurrent,labelX:IL(c),labelY:IL(l),anchor:s}}),b=new Map(v.map(e=>[e.id,e])),x=new Map(y.map(e=>[e.sessionId,e])),S=[];for(let e of r){let t=b.get(e.id),n=new Set,r=new Map;for(let t of e.members)r.set(t.sessionId,(r.get(t.sessionId)??!0)&&t.leftAt!==null);for(let i of e.members){if(n.has(i.sessionId))continue;n.add(i.sessionId);let a=x.get(i.sessionId);S.push({conversationId:e.id,sessionId:i.sessionId,left:r.get(i.sessionId)??!1,x1:t.x,y1:t.y,x2:a.x,y2:a.y})}}return{hubs:v,chats:y,edges:S,width:m,height:h,hiddenClosed:i}}function BL(e){if(!e)return null;for(let t=e.length-1;t>=0;t--){let n=e[t];if(!(n.kind===`notice`||!n.fromSession))return{conversationId:n.conversationId,from:n.fromSession,to:n.toSession,kind:n.kind}}return null}function VL(e,t,n,r,i,a){let o=Math.hypot(n-e,r-t);if(o<=i+a||o===0)return{x1:e,y1:t,x2:n,y2:r};let s=(n-e)/o,c=(r-t)/o;return{x1:IL(e+s*i),y1:IL(t+c*i),x2:IL(n-s*a),y2:IL(r-c*a)}}var HL={working:`working`,idle:`idle`,asleep:`asleep`,missing:`not on this PC any more`},UL={working:`fill-accent stroke-accent animate-pulse`,idle:`fill-accent-soft stroke-accent`,asleep:`fill-surface-3 stroke-fg-faint`,missing:`fill-surface-2 stroke-fg-faint`},WL={active:`stroke-ok`,paused:`stroke-warn`,closed:`stroke-fg-faint`};function GL(e){return t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),e())}}function KL({list:e,showClosed:t,selectedId:n,messages:r,onSelectConversation:i,onOpenChat:a,canOpenChat:o,now:s}){let c=(0,v.useMemo)(()=>zL(e,{showClosed:t,now:s}),[e,t,s]),l=(0,v.useMemo)(()=>BL(r),[r]);if(c.hubs.length===0)return(0,K.jsxs)(`div`,{className:`space-y-1 py-6 text-center text-sm text-fg-muted`,"data-testid":`conversation-map-empty`,children:[(0,K.jsx)(`p`,{children:`No chats are talking to each other right now.`}),(0,K.jsx)(`p`,{className:`text-xs`,children:`Turn on "Talk to other chats" in a chat's Tools menu.`}),c.hiddenClosed>0?(0,K.jsxs)(`p`,{className:`text-xs text-fg-faint`,children:[c.hiddenClosed,` closed conversation`,c.hiddenClosed===1?``:`s`,` hidden.`]}):null]});let u=new Map(c.hubs.map(e=>[e.id,e])),d=new Map(c.chats.map(e=>[e.sessionId,e])),f=[];if(l&&u.has(l.conversationId)){let e=u.get(l.conversationId),t=d.get(l.from),n=d.get(l.to);t&&f.push({key:`from`,...VL(t.x,t.y,e.x,e.y,11,20)}),n&&f.push({key:`to`,...VL(e.x,e.y,n.x,n.y,18,13)})}return(0,K.jsxs)(`div`,{className:`max-h-[65vh] overflow-auto rounded-md border border-border bg-surface`,"data-testid":`conversation-map`,children:[(0,K.jsxs)(`svg`,{viewBox:`0 0 ${c.width} ${c.height}`,preserveAspectRatio:`xMidYMid meet`,className:`block h-auto w-full min-w-[480px] select-none`,style:{maxHeight:`63vh`},role:`img`,"aria-label":`Which chats are talking to each other`,children:[(0,K.jsx)(`defs`,{children:(0,K.jsx)(`marker`,{id:`conversation-map-arrow`,viewBox:`0 0 10 10`,refX:`8`,refY:`5`,markerWidth:`7`,markerHeight:`7`,orient:`auto-start-reverse`,children:(0,K.jsx)(`path`,{d:`M0,0 L10,5 L0,10 z`,className:`fill-accent`})})}),(0,K.jsx)(`g`,{"data-testid":`conversation-map-edges`,children:c.edges.map(e=>{let t=u.get(e.conversationId),r=e.conversationId===n;return(0,K.jsx)(`line`,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,className:G(r?`stroke-accent`:t.status===`active`?`stroke-fg-muted`:`stroke-border`),strokeWidth:r?2:t.status===`active`?1.5:1,strokeDasharray:e.left?`4 4`:void 0,opacity:t.status===`closed`?.5:1,"data-testid":`map-edge-${e.conversationId}-${e.sessionId}`,"data-left":e.left?`true`:void 0},`${e.conversationId}:${e.sessionId}`)})}),f.length>0?(0,K.jsx)(`g`,{"data-testid":`conversation-map-latest`,children:f.map(e=>(0,K.jsx)(`line`,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,className:`stroke-accent`,strokeWidth:3,markerEnd:`url(#conversation-map-arrow)`},e.key))}):null,c.hubs.map(e=>{let t=e.id===n,r=[e.name,`${cp[e.status]} · ${e.members} chat${e.members===1?``:`s`} · ${e.messageCount} message${e.messageCount===1?``:`s`}`,e.waiting>0?`${e.waiting} waiting to be delivered`:null,`Click to see this conversation.`].filter(Boolean).join(`
|
|
150
|
+
`);return(0,K.jsxs)(`g`,{role:`button`,tabIndex:0,"aria-label":`Conversation ${e.name}, ${cp[e.status]}`,"aria-pressed":t,className:`cursor-pointer outline-none`,onClick:()=>i(e.id),onKeyDown:GL(()=>i(e.id)),"data-testid":`map-hub-${e.id}`,"data-status":e.status,"data-recent":e.recent?`true`:void 0,children:[(0,K.jsx)(`title`,{children:r}),e.recent?(0,K.jsx)(`circle`,{cx:e.x,cy:e.y,r:23,className:`fill-accent-soft stroke-accent animate-pulse`,strokeWidth:1}):null,(0,K.jsx)(`circle`,{cx:e.x,cy:e.y,r:16,className:G(t?`fill-accent-soft`:`fill-surface-2`,WL[e.status]),strokeWidth:t?3.5:2.5,strokeDasharray:e.status===`paused`?`5 3`:void 0}),(0,K.jsx)(`text`,{x:e.x,y:e.y+4,textAnchor:`middle`,className:`fill-fg text-[11px] font-semibold`,children:e.members}),(0,K.jsx)(`text`,{x:e.x,y:e.y+16+14,textAnchor:`middle`,className:G(`text-[11px]`,e.status===`closed`?`fill-fg-faint`:`fill-fg`,t&&`font-semibold`),children:e.label}),e.status!==`active`||e.waiting>0?(0,K.jsx)(`text`,{x:e.x,y:e.y+16+27,textAnchor:`middle`,className:G(`text-[10px]`,e.status===`paused`?`fill-warn`:`fill-fg-faint`),children:[e.status===`active`?null:cp[e.status],e.waiting>0?`${e.waiting} waiting`:null].filter(Boolean).join(` · `)}):null]},e.id)}),c.chats.map(e=>{let t=e.state!==`missing`&&o(e.sessionId),n=e.conversationIds.map(e=>u.get(e)?.name??e),r=[e.title,HL[e.state],`In ${n.length} conversation${n.length===1?``:`s`}: ${n.join(`, `)}`,e.left?`It has left.`:null,t?`Click to open this chat.`:null].filter(Boolean).join(`
|
|
151
|
+
`),i=e.state===`missing`||e.left;return(0,K.jsxs)(`g`,{role:t?`button`:void 0,tabIndex:t?0:void 0,"aria-label":t?`Open chat ${e.title}`:void 0,className:G(t?`cursor-pointer`:`cursor-default`,`outline-none`),opacity:i?.5:1,onClick:t?()=>a(e.sessionId):void 0,onKeyDown:t?GL(()=>a(e.sessionId)):void 0,"data-testid":`map-chat-${e.sessionId}`,"data-state":e.state,children:[(0,K.jsx)(`title`,{children:r}),(0,K.jsx)(`circle`,{cx:e.x,cy:e.y,r:9,className:UL[e.state],strokeWidth:2,strokeDasharray:e.state===`missing`?`3 2`:void 0}),(0,K.jsx)(`text`,{x:e.labelX,y:e.labelY,textAnchor:e.anchor,className:`fill-fg text-[11px]`,children:e.label})]},e.sessionId)})]}),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 border-t border-border px-3 py-1.5 text-[11px] text-fg-muted`,"data-testid":`conversation-map-legend`,children:[(0,K.jsx)(qL,{dot:`bg-accent animate-pulse`,children:`working`}),(0,K.jsx)(qL,{dot:`bg-accent-soft border border-accent`,children:`idle`}),(0,K.jsx)(qL,{dot:`bg-surface-3 border border-fg-faint`,children:`asleep`}),(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,K.jsx)(`span`,{className:`inline-block h-3 w-3 rounded-full border-2 border-ok`}),`active`]}),(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,K.jsx)(`span`,{className:`inline-block h-3 w-3 rounded-full border-2 border-dashed border-warn`}),`paused`]}),(0,K.jsx)(`span`,{children:`dashed spoke: left`}),f.length>0?(0,K.jsx)(`span`,{className:`text-accent`,children:`arrows: the newest message`}):null,c.hiddenClosed>0?(0,K.jsxs)(`span`,{className:`text-fg-faint`,children:[c.hiddenClosed,` closed hidden`]}):null]})]})}function qL({dot:e,children:t}){return(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,K.jsx)(`span`,{className:G(`inline-block h-2.5 w-2.5 rounded-full`,e)}),t]})}function JL({open:e,selectId:t=null,onClose:n}){let{state:r,actions:i}=q(),a=r.conversationsChange,[o,s]=(0,v.useState)(null),[c,l]=(0,v.useState)(!1),[u,d]=(0,v.useState)(!1),[f,p]=(0,v.useState)(null),[m,h]=(0,v.useState)(null),[g,_]=(0,v.useState)(!1),[y,b]=(0,v.useState)(!1),[x,S]=(0,v.useState)(`list`),[C,w]=(0,v.useState)(!1),T=(0,v.useRef)(null);T.current=f;let E=(0,v.useRef)(-1),D=(0,v.useCallback)(async()=>{let e=await i.listConversations();if(e===`unsupported`){l(!0);return}if(e===null){d(!0);return}l(!1),d(!1),s(e)},[i]),O=(0,v.useCallback)(async e=>{let t=await i.conversationHistory(e);t&&T.current===e&&h(t)},[i]);(0,v.useEffect)(()=>{e&&(E.current=a.seq,_(!1),p(t??null),D())},[e]),(0,v.useEffect)(()=>{!e||f!==null||!o||o.length===0||p(o[0].id)},[e,o,f]),(0,v.useEffect)(()=>{if(!e||!f){h(null);return}h(e=>e?.conversation.id===f?e:null),O(f)},[e,f,O]),(0,v.useEffect)(()=>{if(!e||a.seq===E.current)return;E.current=a.seq,D();let t=T.current;t&&(a.conversationIds===null||a.conversationIds.includes(t))&&O(t)},[e,a,D,O]);let k=e=>{s(t=>t?.map(t=>t.id===e.id?e:t)??t),h(t=>t&&t.conversation.id===e.id?{...t,conversation:e}:t)},A=async(e,t,n)=>{let r=await i.conversationAction(e,t,n);return r&&k(r),r!==null},j=async()=>{b(!0);try{await i.stopAllConversations()}finally{b(!1),_(!1)}D(),T.current&&O(T.current)},M=async e=>{await i.cancelChatMessage(e.id),T.current&&O(T.current)},N=(0,v.useCallback)((e,t,n=[])=>{if(!e)return t??`OonaCode`;let i=n.find(t=>t.sessionId===e);if(i?.title)return i.title;if(t)return t;let a=r.sessions.find(t=>t.id===e);return a?Q_(a):`a chat`},[r.sessions]),ee=m&&m.conversation.id===f?m.conversation:o?.find(e=>e.id===f)??null;return(0,K.jsxs)(JS,{open:e,title:`Conversations`,onClose:n,wide:!0,footer:(0,K.jsx)(X,{variant:`ghost`,onClick:n,children:`Close`}),children:[(0,K.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center gap-2`,children:[(0,K.jsxs)(`p`,{className:`min-w-0 flex-1 text-xs text-fg-muted`,children:[`Messages and tasks your chats send each other, on this PC.`,` `,(0,K.jsx)(WS,{label:`Conversations`,details:Cp.window})]}),c?null:(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,K.jsxs)(X,{variant:`danger`,size:`sm`,onClick:()=>_(!0),disabled:g||y,title:Cp.stopAll,"data-testid":`conversations-stop-all`,children:[(0,K.jsx)(Y.Stop,{className:`h-3 w-3`}),` Stop all conversations`]}),(0,K.jsx)(WS,{label:`Stop all conversations`,details:Cp.stopAll})]})]}),g?(0,K.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center gap-2 rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-xs text-danger`,role:`alertdialog`,"aria-label":`Stop all conversations?`,"data-testid":`conversations-stop-confirm`,children:[(0,K.jsx)(`span`,{className:`min-w-0 flex-1`,children:`Pause every conversation and stop the turns they are running now? Nothing is deleted; you can resume each one.`}),(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:()=>_(!1),children:`Cancel`}),(0,K.jsx)(X,{size:`sm`,variant:`danger`,busy:y,onClick:()=>void j(),"data-testid":`conversations-stop-confirm-yes`,children:`Stop all`})]}):null,!c&&o!==null?(0,K.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center gap-3`,children:[(0,K.jsx)(`div`,{className:`inline-flex overflow-hidden rounded-md border border-border text-xs`,role:`group`,"aria-label":`View`,children:[`list`,`map`].map(e=>(0,K.jsx)(`button`,{type:`button`,"aria-pressed":x===e,onClick:()=>S(e),className:G(`px-3 py-1`,x===e?`bg-accent text-accent-fg`:`text-fg-muted hover:bg-surface-2`),title:e===`list`?Cp.listView:Cp.mapView,"data-testid":`conversations-view-${e}`,children:e===`list`?`List`:`Map`},e))}),x===`map`?(0,K.jsxs)(`label`,{className:`inline-flex items-center gap-1.5 text-xs text-fg-muted`,title:Cp.showClosed,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:C,onChange:e=>w(e.target.checked),"data-testid":`conversation-map-show-closed`}),`Show closed`]}):null,(0,K.jsx)(WS,{label:`Map`,details:Cp.mapView})]}):null,c?(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,"data-testid":`conversations-unsupported`,children:`OonaCode on this PC is too old for conversations between chats. Update it, then open this window again.`}):o===null?(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,"data-testid":`conversations-loading`,children:u?`Could not read the conversations from this PC right now. They show here as soon as it answers.`:`Loading…`}):x===`map`?(0,K.jsx)(KL,{list:o,showClosed:C,selectedId:f,messages:m&&m.conversation.id===f?m.messages:null,onSelectConversation:e=>{p(e),S(`list`)},onOpenChat:e=>{n(),i.selectSession(e)},canOpenChat:e=>r.sessions.some(t=>t.id===e)}):o.length===0?(0,K.jsxs)(`div`,{className:`space-y-1 text-sm text-fg-muted`,"data-testid":`conversations-empty`,children:[(0,K.jsx)(`p`,{children:`No conversations yet.`}),(0,K.jsx)(`p`,{className:`text-xs`,children:`To start one, turn on "Talk to other chats" in the Tools menu of two chats, then ask one of them to send the other a message or a task.`})]}):(0,K.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-[260px_1fr]`,children:[(0,K.jsx)(`ul`,{className:`flex max-h-[65vh] flex-col gap-1 overflow-y-auto pr-1`,"data-testid":`conversations-list`,children:o.map(e=>(0,K.jsx)(`li`,{children:(0,K.jsx)(ZL,{c:e,selected:e.id===f,onSelect:()=>p(e.id)})},e.id))}),(0,K.jsx)(`div`,{className:`max-h-[65vh] min-w-0 overflow-y-auto pr-1`,children:ee?(0,K.jsx)(iR,{c:ee,messages:m&&m.conversation.id===ee.id?m.messages:null,titleOf:N,onAction:(e,t)=>A(ee.id,e,t),onWithdraw:e=>void M(e),onOpenChat:e=>{n(),i.selectSession(e)},isLocalChat:e=>r.sessions.some(t=>t.id===e)},ee.id):(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,children:`Choose a conversation.`})})]})]})}function YL({c:e}){return(0,K.jsx)(`span`,{title:Cp.status,"data-testid":`conversation-status`,children:(0,K.jsx)(Q,{tone:op(e),children:ap[ip(e)]})})}function XL({label:e,used:t,budget:n,format:r=e=>e.toLocaleString()}){let i=vp(t,n),a=i>=1?`bg-danger`:i>=.8?`bg-warn`:`bg-accent`;return(0,K.jsxs)(`div`,{className:`mt-1`,"data-testid":`usage-${e.toLowerCase()}`,children:[(0,K.jsxs)(`div`,{className:`flex justify-between gap-2 text-[11px] text-fg-muted`,children:[(0,K.jsx)(`span`,{children:e}),(0,K.jsxs)(`span`,{"data-testid":`usage-numbers`,children:[r(t),` of `,r(n)]})]}),(0,K.jsx)(`div`,{className:`h-1.5 overflow-hidden rounded-full bg-surface-3`,role:`progressbar`,"aria-label":`${e} used`,"aria-valuemin":0,"aria-valuemax":n,"aria-valuenow":t,children:(0,K.jsx)(`div`,{className:G(`h-full rounded-full`,a),style:{width:`${Math.round(i*100)}%`}})})]})}function ZL({c:e,selected:t,onSelect:n}){let r=e.members.filter(e=>e.leftAt===null);return(0,K.jsxs)(`button`,{type:`button`,onClick:n,"aria-pressed":t,className:G(`w-full rounded-md border px-2.5 py-2 text-left text-xs`,t?`border-accent bg-accent-soft`:`border-border hover:bg-surface-2`),"data-testid":`conversation-row-${e.id}`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm font-medium text-fg`,children:ep(e)}),(0,K.jsx)(YL,{c:e})]}),(0,K.jsxs)(`div`,{className:`mt-0.5 truncate text-fg-muted`,"data-testid":`conversation-members`,children:[r.length,` chat`,r.length===1?``:`s`,e.title?`: ${r.map(e=>e.title).join(`, `)}`:``]}),e.status!==`active`&&e.pausedReason?(0,K.jsx)(`div`,{className:`mt-0.5 text-warn`,"data-testid":`conversation-paused-reason`,children:e.pausedReason}):null,(0,K.jsx)(XL,{label:`Messages`,used:e.used.messages,budget:e.budget.messages}),(0,K.jsx)(XL,{label:`Tokens`,used:e.used.tokens,budget:e.budget.tokens,format:U_}),(0,K.jsxs)(`div`,{className:`mt-1 flex justify-between gap-2 text-[11px] text-fg-faint`,children:[(0,K.jsx)(`span`,{"data-testid":`conversation-cost`,children:xp(e.used.credits)}),(0,K.jsx)(`span`,{title:K_(e.lastActivityAt),children:W_(e.lastActivityAt)})]})]})}function QL({c:e}){let t=Math.round(Cu.rateWindowMs/6e4),n=Date.parse(e.lastActivityAt)+Cu.idleCloseMs-Date.now(),r=e.status===`closed`,i=[{label:`Messages`,value:`${e.used.messages} of ${e.budget.messages} used`,help:`Every delivered message and reply counts as one. At the limit the conversation pauses until you raise the budget below.`},{label:`Tokens`,value:`${U_(e.used.tokens)} of ${U_(e.budget.tokens)} used`,help:`New input and output tokens of the turns its messages caused — not the context read back from the prompt cache.`},{label:`Cost`,value:`${xp(e.used.credits)} so far`,help:Cp.cost},{label:`In its history`,value:`${e.messageCount} message${e.messageCount===1?``:`s`}${e.waiting>0?`, ${e.waiting} waiting to be delivered`:``}`,help:`Every message in the conversation, notices included, and how many have not been delivered yet.`},{label:`Chain depth`,value:`${Cu.hops} hops`,help:`A message caused by a message caused by a message stops after this many hops, so chats cannot talk to each other for ever.`},{label:`Between two chats`,value:`${Cu.perPair} per ${t} min`,help:`Messages from one chat to one other chat in a rolling window.`},{label:`From one chat`,value:`${Cu.perSender} per ${t} min`,help:`Messages one chat may send to anyone in a rolling window.`},{label:`Waiting for one chat`,value:`at most ${Cu.pendingPerTarget}`,help:`Messages not yet delivered to one chat; more are refused until it catches up.`},{label:`One message`,value:`${Cu.messageChars.toLocaleString()} characters, ${Cu.recipients} recipients`,help:`The longest message text (a reply is cut at the same length) and the most chats one send may reach.`},{label:`Idle close`,value:r?`closed`:n<=0?`closes at the next sweep`:`closes after 24 h without activity — in ${$L(n)}`,help:`A conversation nobody has written in for 24 hours closes itself; a closed one stays in the window as history.`}];return(0,K.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-xs`,"data-testid":`conversation-limits`,children:i.map(e=>(0,K.jsxs)(`div`,{className:`contents`,children:[(0,K.jsxs)(`dt`,{className:`flex items-center gap-1 text-fg-muted`,children:[e.label,(0,K.jsx)(WS,{label:e.label,details:e.help})]}),(0,K.jsx)(`dd`,{className:`text-fg`,"data-testid":`conversation-limit-${e.label.toLowerCase().replace(/[^a-z]+/g,`-`)}`,children:e.value})]},e.label))})}function $L(e){let t=Math.max(1,Math.round(e/6e4));return t<60?`${t} min`:`${Math.floor(t/60)} h ${t%60} min`}function eR({c:e}){return(0,K.jsxs)(K.Fragment,{children:[`Started `,K_(e.createdAt),` · last activity`,` `,(0,K.jsx)(`span`,{title:K_(e.lastActivityAt),children:W_(e.lastActivityAt)})]})}function tR({title:e,help:t,children:n}){return(0,K.jsxs)(`section`,{className:`space-y-2 border-t border-border pt-3 first:border-t-0 first:pt-0`,children:[(0,K.jsxs)(`h3`,{className:`flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-fg-faint`,children:[e,t?(0,K.jsx)(WS,{label:e,details:t}):null]}),n]})}var nR={working:`working`,idle:`idle`,asleep:`asleep`,missing:`gone`},rR={working:`This chat is working on a turn right now.`,idle:`This chat is open and waiting.`,asleep:`This chat is not running; a message wakes it from its saved history.`,missing:`This chat is not on this PC any more (deleted).`};function iR({c:e,messages:t,titleOf:n,onAction:r,onWithdraw:i,onOpenChat:a,isLocalChat:o}){let[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)(!1),[d,f]=(0,v.useState)(null),[p,m]=(0,v.useState)(String(e.budget.messages)),[h,g]=(0,v.useState)(String(e.budget.tokens));(0,v.useEffect)(()=>{m(String(e.budget.messages)),g(String(e.budget.tokens))},[e.budget.messages,e.budget.tokens]);let _=async(e,t,n)=>{c(e);try{return await r(t,n)}finally{c(null)}},y=p.trim()!==String(e.budget.messages)||h.trim()!==String(e.budget.tokens),b=y?bp(p,h):null,x=()=>{if(!y||bp(p,h))return;let t={},n=Number(p.trim()),r=Number(h.trim());n!==e.budget.messages&&(t.messages=n),r!==e.budget.tokens&&(t.tokens=r),_(`budget`,`budget`,t)},S=e.status===`closed`,C=(0,v.useMemo)(()=>[...e.members].sort((e,t)=>(e.leftAt===null?0:1)-(t.leftAt===null?0:1)),[e.members]);return(0,K.jsxs)(`div`,{className:`space-y-4`,"data-testid":`conversation-detail`,"data-id":e.id,children:[(0,K.jsxs)(tR,{title:`Conversation`,help:Cp.status,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`min-w-0 text-base font-semibold text-fg`,children:ep(e)}),(0,K.jsx)(YL,{c:e})]}),e.pausedReason&&!S?(0,K.jsxs)(`p`,{className:`text-xs text-warn`,"data-testid":`conversation-detail-reason`,children:[`Paused: `,e.pausedReason]}):e.pausedReason&&S?(0,K.jsxs)(`p`,{className:`text-xs text-fg-muted`,children:[`Closed: `,e.pausedReason]}):null,(0,K.jsxs)(`p`,{className:`text-xs text-fg-muted`,children:[(0,K.jsx)(eR,{c:e}),e.waiting>0?` · ${e.waiting} waiting to be delivered`:``]}),S?null:(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[e.status===`active`?(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,K.jsx)(X,{size:`sm`,onClick:()=>void _(`pause`,`pause`),busy:s===`pause`,title:Cp.pause,"data-testid":`conversation-pause`,children:`Pause`}),(0,K.jsx)(WS,{label:`Pause`,details:Cp.pause})]}):(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,K.jsx)(X,{size:`sm`,variant:`primary`,onClick:()=>void _(`resume`,`resume`),busy:s===`resume`,title:Cp.resume,"data-testid":`conversation-resume`,children:`Resume`}),(0,K.jsx)(WS,{label:`Resume`,details:Cp.resume})]}),(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,K.jsx)(X,{size:`sm`,variant:l?`danger`:`ghost`,busy:s===`close`,title:Cp.close,onClick:()=>{if(!l){u(!0);return}u(!1),_(`close`,`close`)},"data-testid":`conversation-close`,children:l?`Close it for good?`:`Close`}),(0,K.jsx)(WS,{label:`Close`,details:Cp.close})]})]})]}),(0,K.jsx)(tR,{title:`All limits`,help:`Everything that stops or slows this conversation: its own budget, the rates between chats, the chain depth and the idle close.`,children:(0,K.jsx)(QL,{c:e})}),(0,K.jsxs)(tR,{title:`Budget`,help:Cp.budget,children:[(0,K.jsx)(XL,{label:`Messages`,used:e.used.messages,budget:e.budget.messages}),(0,K.jsx)(XL,{label:`Tokens`,used:e.used.tokens,budget:e.budget.tokens,format:U_}),(0,K.jsxs)(`p`,{className:`flex items-center gap-1.5 text-xs text-fg-muted`,children:[(0,K.jsxs)(`span`,{"data-testid":`conversation-detail-cost`,children:[`Cost so far `,xp(e.used.credits),` · `,U_(e.used.tokens),` `,`new tokens`]}),(0,K.jsx)(WS,{label:`Cost`,details:Cp.cost})]}),S?null:(0,K.jsxs)(`div`,{className:`flex flex-wrap items-end gap-2`,children:[(0,K.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs text-fg-muted`,children:[`Messages`,(0,K.jsx)(`input`,{className:G(Z,`w-24`),inputMode:`numeric`,value:p,onChange:e=>m(e.target.value),"data-testid":`conversation-budget-messages`})]}),(0,K.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs text-fg-muted`,children:[`Tokens`,(0,K.jsx)(`input`,{className:G(Z,`w-32`),inputMode:`numeric`,value:h,onChange:e=>g(e.target.value),"data-testid":`conversation-budget-tokens`})]}),(0,K.jsx)(X,{size:`sm`,variant:`primary`,onClick:x,disabled:!y||b!==null,busy:s===`budget`,title:Cp.budget,"data-testid":`conversation-budget-save`,children:`Save budget`}),b?(0,K.jsx)(`span`,{className:`text-xs text-danger`,"data-testid":`conversation-budget-problem`,children:b}):null]})]}),(0,K.jsx)(tR,{title:`Chats`,help:Cp.removeMember,children:(0,K.jsx)(`ul`,{className:`space-y-1`,"data-testid":`conversation-members-list`,children:C.map(e=>{let t=`${e.hostId}:${e.sessionId}`,n=e.leftAt!==null;return(0,K.jsxs)(`li`,{className:G(`flex flex-wrap items-center gap-2 rounded-md border border-border px-2.5 py-1.5 text-xs`,n&&`opacity-60`),"data-testid":`conversation-member-${e.sessionId}`,children:[(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-medium text-fg`,children:e.title}),(0,K.jsx)(`span`,{title:rR[e.state],children:(0,K.jsx)(Q,{tone:e.state===`working`?`accent`:`neutral`,children:nR[e.state]})}),e.talkOn===!1?(0,K.jsx)(`span`,{className:`text-fg-faint`,title:`Its "Talk to other chats" switch is off: it cannot message other chats. It still answers a chat that messages it, and only that chat, when asked; what it sent before, and answers to what it asked, wait until it is on again.`,children:`answers only`}):null,n?(0,K.jsx)(`span`,{className:`text-fg-faint`,title:K_(e.leftAt),children:`left`}):null,e.state!==`missing`&&o(e.sessionId)?(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:()=>a(e.sessionId),title:Cp.openChat,"data-testid":`conversation-member-open`,children:`Open chat`}):null,!n&&!S?(0,K.jsx)(X,{size:`sm`,variant:d===t?`danger`:`ghost`,busy:s===`remove:${t}`,title:Cp.removeMember,onClick:()=>{if(d!==t){f(t);return}f(null),_(`remove:${t}`,`remove-member`,{sessionId:e.sessionId,hostId:e.hostId})},"data-testid":`conversation-member-remove`,children:d===t?`Remove?`:`Remove`}):null]},t)})})}),(0,K.jsx)(tR,{title:`History`,help:Cp.history,children:t===null?(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,children:`Loading…`}):t.length===0?(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,children:`Nothing has been sent yet.`}):(0,K.jsx)(`ol`,{className:`space-y-2`,"data-testid":`conversation-history`,children:t.map(t=>(0,K.jsx)(aR,{m:t,from:t.kind===`notice`?`OonaCode`:n(t.fromSession,t.fromTitle,e.members),to:n(t.toSession,t.toTitle,e.members),onWithdraw:()=>i(t)},t.id))})})]})}function aR({m:e,from:t,to:n,onWithdraw:r}){let i=fp(e),a=yp(i),o=hp(e),s=gp(e),[c,l]=(0,v.useState)(!1),u=e.kind===`reply`?Y.Reply:e.kind===`notice`?Y.Alert:e.kind===`continue`?Y.Refresh:Y.Mail;return(0,K.jsxs)(`li`,{className:G(`rounded-md border px-2.5 py-2 text-xs`,e.kind===`notice`?`border-warn/40 bg-warn-soft/40`:`border-border`),"data-testid":`conversation-message-${e.id}`,"data-kind":e.kind,"data-status":e.status,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,K.jsx)(u,{className:G(`h-3.5 w-3.5`,e.kind===`notice`?`text-warn`:`text-accent`)}),(0,K.jsx)(`span`,{className:`font-medium text-fg`,children:lp[e.kind]}),(0,K.jsxs)(`span`,{className:`min-w-0 truncate text-fg-muted`,"data-testid":`conversation-message-route`,children:[t,` → `,n]}),(0,K.jsx)(`span`,{className:`text-fg-faint`,title:K_(e.createdAt),children:q_(e.createdAt)}),(0,K.jsx)(`span`,{className:`flex-1`}),e.kind===`notice`?null:(0,K.jsx)(`span`,{title:up[e.status],children:(0,K.jsx)(Q,{tone:dp(e.status),children:(0,K.jsx)(`span`,{"data-testid":`conversation-message-status`,children:e.status})})})]}),o||s||e.continued||e.stalled?(0,K.jsxs)(`div`,{className:`mt-0.5 flex flex-wrap gap-x-2 text-fg-muted`,children:[o?(0,K.jsx)(`span`,{title:o.help,"data-testid":`conversation-message-reply`,children:o.text}):null,s?(0,K.jsx)(`span`,{"data-testid":`conversation-message-batch`,children:s}):null,e.continued?(0,K.jsx)(`span`,{children:`continued after an OonaCode restart`}):null,e.stalled?(0,K.jsxs)(`span`,{className:`text-warn`,children:[`waiting for your permission to use `,e.stalled]}):null]}):null,e.error?(0,K.jsx)(`div`,{className:G(`mt-0.5`,e.status===`failed`?`text-danger`:`text-fg-muted`),"data-testid":`conversation-message-error`,children:e.error}):null,e.tokens>0||(e.credits??0)>0?(0,K.jsxs)(`div`,{className:`mt-0.5 text-fg-faint`,"data-testid":`conversation-message-usage`,children:[`The turn it caused: `,Sp(e,U_(e.tokens))]}):null,(0,K.jsx)(`div`,{className:G(`mt-1.5 text-fg`,a&&!c&&`max-h-24 overflow-hidden [mask-image:linear-gradient(to_bottom,black_60%,transparent)]`),"data-testid":`conversation-message-body`,"data-collapsed":a&&!c?`true`:void 0,children:(0,K.jsx)(LI,{text:i})}),(0,K.jsxs)(`div`,{className:`mt-1 flex items-center gap-2`,children:[a?(0,K.jsx)(`button`,{type:`button`,className:`text-accent hover:underline`,onClick:()=>l(e=>!e),"aria-expanded":c,"data-testid":`conversation-message-expand`,children:c?`Show less`:`Show all`}):null,(0,K.jsx)(`span`,{className:`flex-1`}),_p(e)?(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:r,title:Cp.withdraw,"data-testid":`conversation-message-withdraw`,children:`Withdraw`}):null]})]})}function oR(){let{state:e,actions:t}=q(),n=jS()?.id??null,r=n!==null&&e.remote.tabs[n]!==void 0,i=n?e.chatConversations[n]:void 0,a=e.conversationsChange,[o,s]=(0,v.useState)(!1),c=(0,v.useRef)(null),l=(0,v.useRef)({sessionId:null,seq:-1}),u=(0,v.useRef)(i);if(u.current=i,(0,v.useEffect)(()=>{if(!n||r)return;let e=l.current,i=e.sessionId!==n;if(!i&&e.seq===a.seq)return;l.current={sessionId:n,seq:a.seq};let o=(u.current??[]).map(e=>e.id);!i&&!Qf(a,{sessionId:n,conversationIds:o})||t.refreshChatConversations(n)},[n,r,a,t]),(0,v.useEffect)(()=>{if(!o)return;let e=e=>{c.current?.contains(e.target)||s(!1)},t=e=>{e.key===`Escape`&&s(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[o]),(0,v.useEffect)(()=>s(!1),[n]),!n||r||!i)return null;let d=np(i,n);if(d.length===0)return null;let f=sp(d),p=d.some(rp),m=async e=>{await t.conversationAction(e.id,e.status===`active`?`pause`:`resume`)&&t.refreshChatConversations(n)},h=e=>{s(!1),t.openConversations(e??null)};return(0,K.jsxs)(`span`,{ref:c,className:`relative inline-flex items-center`,children:[(0,K.jsxs)(`button`,{type:`button`,"aria-label":`Conversations with other chats: ${f}`,title:`This chat's conversations with your other chats — ${f}. A conversation is active while one of its chats is on a turn or a message of it waits to be delivered.`,"aria-haspopup":`dialog`,"aria-expanded":o,"data-testid":`conversations-badge`,onClick:()=>s(e=>!e),className:G(`flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded px-1.5 py-0.5 text-xs hover:bg-fg/5`,p?`text-accent`:`text-fg-muted`),children:[(0,K.jsx)(Y.Chats,{className:`w-3.5 h-3.5`}),(0,K.jsx)(`span`,{children:f})]}),o?(0,K.jsx)(`div`,{role:`dialog`,"aria-label":`Conversations of this chat`,"data-testid":`conversations-badge-panel`,className:`absolute bottom-full left-0 z-50 mb-1 w-[26rem] max-w-[calc(100vw-2rem)]`,children:(0,K.jsxs)(`div`,{className:`overflow-hidden rounded-lg border border-border bg-surface shadow-lg`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-2.5 py-1.5 text-[11px] uppercase tracking-wide text-fg-muted`,children:[(0,K.jsx)(Y.Chats,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`flex-1`,children:`Conversations with other chats`}),(0,K.jsx)(`span`,{className:`normal-case tracking-normal text-fg-faint`,children:`on this PC`})]}),(0,K.jsx)(`ul`,{className:`max-h-[22rem] space-y-1.5 overflow-y-auto p-2`,children:d.map(e=>(0,K.jsxs)(`li`,{className:`rounded-md border border-border px-2.5 py-1.5 text-xs`,"data-testid":`conversations-badge-item-${e.id}`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-medium text-fg`,children:ep(e)}),(0,K.jsx)(`span`,{title:Cp.status,children:(0,K.jsx)(Q,{tone:op(e),children:ap[ip(e)]})})]}),(0,K.jsxs)(`div`,{className:`mt-0.5 text-fg-muted`,"data-testid":`conversations-badge-usage`,children:[e.used.messages,` of `,e.budget.messages,` messages ·`,` `,U_(e.used.tokens),` of `,U_(e.budget.tokens),` tokens`]}),(0,K.jsx)(`div`,{className:`text-fg-muted`,"data-testid":`conversations-badge-times`,children:(0,K.jsx)(eR,{c:e})}),e.status===`paused`&&e.pausedReason?(0,K.jsxs)(`div`,{className:`text-warn`,children:[`Paused: `,e.pausedReason]}):null,(0,K.jsxs)(`div`,{className:`mt-1 flex items-center gap-1`,children:[(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:()=>void m(e),title:e.status===`active`?Cp.pause:Cp.resume,"data-testid":`conversations-badge-toggle`,children:e.status===`active`?`Pause`:`Resume`}),(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:()=>h(e.id),title:`See every message of this conversation, what it cost, and all its controls`,"data-testid":`conversations-badge-open`,children:`Open in Conversations`})]})]},e.id))}),(0,K.jsx)(`div`,{className:`border-t border-border px-2.5 py-1.5 text-right`,children:(0,K.jsx)(`button`,{type:`button`,className:`text-xs text-accent hover:underline`,onClick:()=>h(),"data-testid":`conversations-badge-all`,children:`All conversations on this PC`})})]})}):null]})}function sR(e){switch(e.kind){case`write`:return`Write a file${e.bytes===void 0?``:` (${e.bytes.toLocaleString()} bytes)`}`;case`edit`:return`Change text in a file`;case`mkdir`:return`Create a folder`;case`move`:return`Move or rename`;case`delete`:return e.recursive?`Delete a folder and everything in it — permanently`:`Delete — permanently`;default:return e.kind}}function cR(){let{state:e,actions:t}=q(),n=kS(),r=n?e.remote.tabs[n]:void 0,i=r?.reach?.asks??[];return!n||i.length===0?null:(0,K.jsx)(`div`,{className:`mb-2 max-h-[45vh] space-y-2 overflow-y-auto`,"data-testid":`reach-asks`,children:i.map(e=>(0,K.jsxs)(`div`,{className:`rounded-lg border border-accent/50 bg-accent-soft/40 p-3 text-sm shadow-sm`,role:`group`,"aria-label":`The chat wants to change files on this PC`,"data-permission-pending":`true`,"data-testid":`reach-ask-${e.requestId}`,children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(Y.Folder,{className:`mt-0.5 h-4 w-4 shrink-0 text-accent`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`div`,{className:`font-semibold`,children:[`The chat on `,r?.hostName??`the other PC`,` wants to change files on this PC`]}),(0,K.jsxs)(`ul`,{className:`mt-1.5 space-y-1.5 text-xs`,children:[e.summary.items.map((e,t)=>(0,K.jsxs)(`li`,{"data-testid":`reach-ask-item`,children:[(0,K.jsx)(`div`,{className:`text-fg-muted`,children:sR(e)}),(0,K.jsxs)(`div`,{className:`break-all font-mono`,children:[e.path,e.to?` → ${e.to}`:``]}),e.diff?(0,K.jsx)(`pre`,{className:`mt-0.5 max-h-32 overflow-auto whitespace-pre-wrap rounded border border-border bg-surface px-2 py-1 font-mono text-[11px]`,children:e.diff}):null]},t)),e.summary.more>0?(0,K.jsxs)(`li`,{className:`text-fg-faint`,children:[`…and `,e.summary.more,` more`]}):null]})]})]}),(0,K.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(X,{variant:`inverse`,onClick:()=>t.answerReach(n,e.requestId,!0),"data-testid":`reach-ask-allow`,"data-autofocus":!0,children:`Allow`}),(0,K.jsx)(X,{variant:`ghost`,onClick:()=>t.answerReach(n,e.requestId,!1),"data-testid":`reach-ask-deny`,children:`Not now`}),(0,K.jsx)(`span`,{className:`text-[11px] text-fg-faint`,children:`Only these changes · no answer = no`})]})]},e.requestId))})}var lR=[{key:`read`,label:`Read`,hint:`list, open and search files`},{key:`create`,label:`Create`,hint:`new files and folders`},{key:`edit`,label:`Edit`,hint:`change, move and rename existing files`},{key:`delete`,label:`Delete`,hint:`permanently — there is no bin`}],uR=(e,t)=>e.replace(/[\\/]+$/,``).toLowerCase()===t.replace(/[\\/]+$/,``).toLowerCase();function dR({sessionId:e,open:t,onClose:n}){let{state:r,actions:i}=q(),a=r.remote.tabs[e],o=a?.reach,[s,c]=(0,v.useState)([]),[l,u]=(0,v.useState)(``),[d,f]=(0,v.useState)(!1),p=(0,v.useRef)(null);(0,v.useEffect)(()=>{t&&(c((o?.linked?o.folders:[]).map(e=>({...e}))),u(``),p.current=null,f(!1))},[t,e]),(0,v.useEffect)(()=>{!t||p.current===null||!o||o===p.current||(p.current=null,f(!1),o.linked&&o.refusals.length===0?n():o.linked&&c(o.folders.map(e=>({...e}))))},[o,t,n]);let m=e=>{let t=e.trim();t&&(c(e=>e.some(e=>uR(e.path,t))?e:[...e,{path:t,read:!0,create:!1,edit:!1,delete:!1}]),u(``))},h=async()=>{let e=typeof window<`u`?window.oonacode:void 0;if(!e?.pickDirectory)return;let t=await e.pickDirectory({title:`Choose a folder to link to the chat`});t&&m(t)},g=(e,t,n)=>c(r=>r.map(r=>r.path===e?{...r,[t]:n}:r)),_=s.some(e=>e.read||e.create||e.edit||e.delete),y=async()=>{f(!0),p.current=o??{},await i.setReach(e,s)||(p.current=null,f(!1))},b=async()=>{f(!0),await i.setReach(e,null),f(!1),n()},x=a?.hostName??`the other PC`,S=o?.refusals??[];return(0,K.jsx)(JS,{open:t,title:`Bring this PC into the chat`,onClose:n,footer:(0,K.jsxs)(K.Fragment,{children:[o?.linked?(0,K.jsx)(X,{variant:`ghost`,onClick:()=>void b(),disabled:d,"data-testid":`reach-unlink`,children:`Unlink`}):null,(0,K.jsx)(X,{variant:`ghost`,onClick:n,"data-testid":`reach-cancel`,children:`Cancel`}),(0,K.jsx)(X,{variant:`inverse`,onClick:()=>void y(),disabled:d||s.length===0||!_,"data-testid":`reach-link`,children:o?.linked?`Update the link`:`Link this PC`})]}),children:(0,K.jsxs)(`div`,{className:`space-y-3 text-sm`,"data-testid":`reach-dialog`,children:[(0,K.jsxs)(`p`,{className:`text-fg-muted`,children:[`The chat runs on `,(0,K.jsx)(`strong`,{children:x}),`. Pick folders on `,(0,K.jsx)(`strong`,{children:`this PC`}),` it may use, and tick what it may do in each. It asks you before it creates, changes, moves or deletes anything. The link ends when you close this tab or this window.`]}),s.length===0?(0,K.jsx)(`p`,{className:`rounded-md border border-dashed border-border px-3 py-2 text-fg-faint`,"data-testid":`reach-empty`,children:`No folder yet. Add one below.`}):(0,K.jsx)(`ul`,{className:`space-y-2`,children:s.map(e=>(0,K.jsxs)(`li`,{className:`rounded-md border border-border px-3 py-2`,"data-testid":`reach-folder`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(Y.Folder,{className:`h-3.5 w-3.5 shrink-0 text-fg-faint`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 break-all font-mono text-xs`,title:e.path,children:e.path}),(0,K.jsx)(`button`,{type:`button`,className:`shrink-0 text-xs text-fg-faint hover:text-danger`,onClick:()=>c(t=>t.filter(t=>t.path!==e.path)),"aria-label":`Remove ${e.path}`,"data-testid":`reach-remove`,children:`Remove`})]}),(0,K.jsx)(`div`,{className:`mt-1.5 flex flex-wrap gap-x-4 gap-y-1`,children:lR.map(t=>(0,K.jsxs)(`label`,{className:`inline-flex items-center gap-1.5 text-xs`,title:t.hint,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:e[t.key],onChange:n=>g(e.path,t.key,n.target.checked),"data-testid":`reach-perm-${t.key}`}),t.label]},t.key))}),e.delete?(0,K.jsx)(`p`,{className:`mt-1 text-[11px] text-danger`,children:`Delete is permanent: there is no bin. You still confirm each one.`}):null]},e.path))}),(0,K.jsxs)(`div`,{className:`flex gap-2`,children:[typeof window<`u`&&window.oonacode?.pickDirectory?(0,K.jsxs)(X,{variant:`ghost`,onClick:()=>void h(),"data-testid":`reach-browse`,children:[(0,K.jsx)(Y.Folder,{className:`h-3.5 w-3.5`}),` Add folder…`]}):null,(0,K.jsx)(`input`,{className:`${Z} min-w-0 flex-1 font-mono text-xs`,placeholder:`or type a full folder path`,value:l,onChange:e=>u(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),m(l))},"aria-label":`A folder path on this PC`,"data-testid":`reach-path`}),(0,K.jsx)(X,{variant:`ghost`,onClick:()=>m(l),disabled:!l.trim(),"data-testid":`reach-add`,children:`Add`})]}),S.length>0?(0,K.jsx)(`ul`,{className:`space-y-1 text-xs text-danger`,"data-testid":`reach-refusals`,role:`alert`,children:S.map(e=>(0,K.jsxs)(`li`,{children:[(0,K.jsx)(`span`,{className:`font-mono break-all`,children:e.path}),` — `,e.reason]},e.path))}):null]})})}function fR({disabled:e}){let{state:t}=q(),n=kS(),[r,i]=(0,v.useState)(!1),a=n?t.remote.tabs[n]:void 0;if(!n||!a||!a.features?.includes(Ie.reach))return null;let o=a.reach?.linked===!0,s=a.reach?.folders.length??0,c=o?`PC linked · ${s} folder${s===1?``:`s`}`:`Bring this PC into the chat`;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`button`,{type:`button`,disabled:e||!a.live,onClick:()=>i(!0),title:a.live?o?`This PC is linked to the chat: change the folders, or unlink`:`Let the chat on ${a.hostName} use files on this PC, in folders you pick`:`${a.hostName} is offline`,className:G(`inline-flex items-center gap-1 rounded-md border px-1.5 py-0.5 text-xs disabled:opacity-50`,o?`border-accent/60 bg-accent-soft/40 text-fg`:`border-border text-fg-muted hover:border-fg-faint hover:text-fg`),"data-testid":`reach-badge`,"data-linked":o?`true`:`false`,children:[(0,K.jsx)(Y.Folder,{className:`h-3 w-3`}),c]}),(0,K.jsx)(dR,{sessionId:n,open:r,onClose:()=>i(!1)})]})}function pR({sessionId:e,running:t,onPutInBox:n,onSend:r}){let{state:i,actions:a}=q(),o=i.nextPromptsChange,[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)(!1),[d,f]=(0,v.useState)(()=>mb()),[p,m]=(0,v.useState)(null),[h,g]=(0,v.useState)(``),[_,y]=(0,v.useState)(!1),[b,x]=(0,v.useState)(!1),[S,C]=(0,v.useState)(null),[w,T]=(0,v.useState)(!1),[E,D]=(0,v.useState)(null),[O,k]=(0,v.useState)(!1),A=(0,v.useRef)(null),j=(0,v.useRef)(-1),M=(0,v.useCallback)((e,t)=>{m(e),t||(g(e?.prompt??``),y(!1)),D(e?.sentAt??null)},[]),N=(0,v.useCallback)(async t=>{x(!0),C(null);try{let n=await a.suggestNextPrompt(e,{windowHours:d,...t?{force:!0}:{}});`error`in n?C(n.error):M(n.suggestion,!1)}finally{x(!1)}},[a,e,d,M]);(0,v.useEffect)(()=>{if(!l)return;j.current=o.seq;let t=!0;return C(null),k(!1),(async()=>{let n=await a.getNextPrompt(e);if(t){if(k(!0),n===`unsupported`){C(`OonaCode on this PC is too old for Suggest. Update it, then try again.`);return}n?.model&&c(n.model),M(n?.suggestion??null,!1)}})(),()=>{t=!1}},[l]),(0,v.useEffect)(()=>{!l||b||o.seq===j.current||(j.current=o.seq,ub(o,e)&&a.getNextPrompt(e).then(e=>{e&&e!==`unsupported`&&e.suggestion&&M(e.suggestion,_)}))},[l,b,o,e,a,M,_]),(0,v.useEffect)(()=>{if(!l)return;let e=e=>{A.current?.contains(e.target)||u(!1)},t=e=>{e.key===`Escape`&&u(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[l]),(0,v.useEffect)(()=>u(!1),[e]);let ee=async()=>{let t=h.trim();if(t){T(!0);try{if(!await r(t))return;p&&a.markNextPromptSent(e,p.id,t),D(new Date().toISOString()),y(!1)}finally{T(!1)}}},P=p?.status===`failed`,F=s??p?.cost.model??Vf.model;return(0,K.jsxs)(`span`,{ref:A,className:`relative inline-flex items-center`,children:[(0,K.jsx)(US,{label:Wf.suggestHint,"data-testid":`suggest-button`,"aria-haspopup":`dialog`,"aria-expanded":l,onClick:()=>u(e=>!e),className:l?`text-accent`:void 0,children:(0,K.jsx)(Y.Lightbulb,{className:`w-4 h-4`})}),l?(0,K.jsx)(`div`,{role:`dialog`,"aria-label":`Suggest what to send next`,"data-testid":`suggest-panel`,className:`absolute bottom-full left-0 z-50 mb-1 w-[28rem] max-w-[calc(100vw-2rem)]`,children:(0,K.jsxs)(`div`,{className:`overflow-hidden rounded-lg border border-border bg-surface shadow-lg`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-2.5 py-1.5 text-[11px] uppercase tracking-wide text-fg-muted`,children:[(0,K.jsx)(Y.Lightbulb,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`flex-1`,children:Wf.suggest}),(0,K.jsxs)(`label`,{className:`flex items-center gap-1 normal-case tracking-normal`,children:[`Read the last`,(0,K.jsx)(`select`,{"aria-label":`Hours of the chat to read`,className:G(qS,`w-auto py-0 text-xs`),value:d,onChange:e=>{let t=Number(e.target.value);f(t),hb(t)},"data-testid":`suggest-window`,children:Hf.map(e=>(0,K.jsxs)(`option`,{value:e,children:[e,` h`]},e))})]})]}),(0,K.jsxs)(`div`,{className:`max-h-[26rem] space-y-2 overflow-y-auto p-2.5 text-xs`,children:[b?(0,K.jsxs)(`p`,{className:`flex items-center gap-1.5 text-fg-muted`,"data-testid":`suggest-asking`,children:[(0,K.jsx)(Y.Spinner,{className:`w-3.5 h-3.5`}),Wf.reviewing(d)]}):null,S?(0,K.jsx)(`p`,{className:`text-danger`,"data-testid":`suggest-error`,children:S}):null,p&&!b?P?(0,K.jsx)(`p`,{className:`text-danger`,"data-testid":`suggest-failed`,children:p.error??`The suggestion could not be written.`}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-start gap-1.5`,children:[(0,K.jsx)(`p`,{className:`min-w-0 flex-1 font-medium text-fg`,"data-testid":`suggest-state`,children:p.state||`Where the chat stands is not said.`}),p.stale?(0,K.jsx)(`span`,{title:`The chat has moved on since this was written — Ask again for a fresh one.`,"data-testid":`suggest-stale`,children:(0,K.jsx)(Q,{tone:`warn`,children:`stale`})}):null]}),p.why?(0,K.jsx)(`p`,{className:`text-fg-muted`,"data-testid":`suggest-why`,children:p.why}):null,p.prompt===``&&!_?(0,K.jsx)(`p`,{className:`text-warn`,"data-testid":`suggest-decide`,children:Wf.decideYourself}):null]}):null,p&&!b&&!P?(0,K.jsx)(`textarea`,{"aria-label":`Suggested message`,className:`min-h-[5rem] w-full resize-y rounded-md border border-border bg-bg px-2 py-1.5 text-xs text-fg focus:border-accent focus:outline-none`,value:h,placeholder:`Write the message yourself, or Ask again`,onChange:e=>{g(e.target.value),y(!0)},"data-testid":`suggest-text`}):null,E?(0,K.jsxs)(`p`,{className:`text-ok`,"data-testid":`suggest-sent`,children:[`Sent `,bb(E)]}):null,!p&&!b&&O&&!S?(0,K.jsx)(`p`,{className:`text-fg-muted`,"data-testid":`suggest-intro`,children:`Pick how many hours of this chat to read, then press Suggest.`}):null,p?(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,K.jsx)(X,{size:`sm`,variant:`secondary`,disabled:b||!h.trim(),onClick:()=>{n(h),u(!1)},"data-testid":`suggest-put`,children:`Put in message box`}),(0,K.jsxs)(X,{size:`sm`,variant:`primary`,disabled:b||!h.trim(),busy:w,onClick:()=>void ee(),title:t?`The chat is working: this queues behind the running turn`:void 0,"data-testid":`suggest-send`,children:[(0,K.jsx)(Y.Send,{className:`w-3 h-3`}),` `,t?`Queue`:`Send`]}),(0,K.jsxs)(X,{size:`sm`,variant:`ghost`,disabled:b,onClick:()=>void N(!0),"data-testid":`suggest-again`,children:[(0,K.jsx)(Y.Refresh,{className:`w-3 h-3`}),` Ask again`]})]}):(0,K.jsx)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:(0,K.jsxs)(X,{size:`sm`,variant:`primary`,disabled:b||!O,busy:b,onClick:()=>void N(!1),"data-testid":`suggest-go`,children:[(0,K.jsx)(Y.Lightbulb,{className:`w-3 h-3`}),` `,Wf.suggest]})}),p?(0,K.jsxs)(`p`,{className:`text-[11px] text-fg-faint`,"data-testid":`suggest-cost`,children:[F,` · `,Yf(p.cost),` · read the last`,` `,p.windowHours,` h`]}):null,(0,K.jsx)(`p`,{className:`text-[11px] text-fg-faint`,"data-testid":`suggest-cost-note`,children:Wf.costNote(F)})]})]})}):null]})}var mR=null,hR=460,gR=8;function _R(e,t){if(typeof window>`u`)return e;let n=t?.offsetWidth??hR,r=t?.offsetHeight??200;return{left:Math.min(Math.max(gR,e.left),Math.max(gR,window.innerWidth-n-gR)),top:Math.min(Math.max(gR,e.top),Math.max(gR,window.innerHeight-r-gR))}}function vR(e,t,n,r){return e===t?`current`:r[e]?`skipped`:n[e]?`answered`:`open`}function yR({item:e,onDecide:t,cardRef:n,stackIndex:r=0}){let i=e.request,a=Hl(i.input),{groupId:o}=OS(),[s,c]=(0,v.useState)(0),[l,u]=(0,v.useState)({}),[d,f]=(0,v.useState)({}),[p,m]=(0,v.useState)({}),[h,g]=(0,v.useState)(mR),_=(0,v.useRef)(null),y=a[s],b=s===a.length-1,x=e=>(l[e]??[]).length>0||(d[e]??``).trim().length>0,S={};a.forEach((e,t)=>{S[t]=x(t)});let C=new Set(Object.entries(p).filter(([,e])=>e).map(([e])=>Number(e))),w=Ul(a,l,d,C),T=a.every((e,t)=>S[t]||p[t]),E=a.some((e,t)=>S[t]&&!p[t]),D=(e,t,n)=>{m(t=>t[e]?{...t,[e]:!1}:t),f(t=>t[e]?{...t,[e]:``}:t),u(r=>{let i=r[e]??[];return n?{...r,[e]:i.includes(t)?i.filter(e=>e!==t):[...i,t]}:{...r,[e]:i[0]===t?[]:[t]}})},O=(0,v.useCallback)(()=>{if(T){if(!E){t({behavior:`deny`,message:Bl});return}t({behavior:`allow`,updatedInput:{...i.input,answers:w}})}},[T,E,t,i.input,w]),k=()=>{y&&(!S[s]&&!p[s]||(b?O():c(s+1)))},A=()=>{if(m(e=>({...e,[s]:!0})),u(e=>({...e,[s]:[]})),f(e=>({...e,[s]:``})),b){let e=new Set([...C,s]);if(!a.some((t,n)=>S[n]&&!e.has(n))){t({behavior:`deny`,message:Bl});return}let n={...l,[s]:[]},r={...d,[s]:``};t({behavior:`allow`,updatedInput:{...i.input,answers:Ul(a,n,r,e)}});return}c(s+1)},j=e=>{if(e.button!==0)return;let t=n.current;if(!t)return;let r=t.getBoundingClientRect();_.current={dx:e.clientX-r.left,dy:e.clientY-r.top},e.preventDefault();let i=e=>{let t=_.current;if(!t)return;let r=_R({left:e.clientX-t.dx,top:e.clientY-t.dy},n.current);mR=r,g(r)},a=()=>{_.current=null,document.removeEventListener(`mousemove`,i),document.removeEventListener(`mouseup`,a)};document.addEventListener(`mousemove`,i),document.addEventListener(`mouseup`,a)};if((0,v.useEffect)(()=>{if(h){let e=_R(h,n.current);(e.left!==h.left||e.top!==h.top)&&g(e)}},[]),typeof document>`u`||a.length===0)return null;let M=h?{left:h.left+r*24,top:h.top+r*24}:{right:16+r*24,bottom:132+r*24};return(0,RS.createPortal)((0,K.jsxs)(`div`,{ref:n,className:`fixed z-30 flex max-h-[70vh] w-[460px] max-w-[calc(100vw-16px)] flex-col rounded-xl border border-accent/50 bg-surface text-sm shadow-xl`,style:M,role:`group`,"aria-label":`The model has a question`,"data-permission-pending":`true`,"data-chat-group":o,"data-testid":`question-${i.requestId}`,children:[(0,K.jsxs)(`div`,{className:`flex cursor-move select-none items-center gap-2 rounded-t-xl border-b border-border bg-accent-soft/40 px-3 py-2`,onMouseDown:j,"data-testid":`question-drag-handle`,title:`Drag to move`,children:[(0,K.jsx)(Y.Info,{className:`w-4 h-4 text-accent`}),(0,K.jsx)(`span`,{className:`font-semibold`,children:a.length>1?`The model has questions`:`The model has a question`}),i.agentId?(0,K.jsx)(Q,{tone:`think`,children:`subagent`}):null,(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsxs)(`span`,{className:`text-[11px] text-fg-faint`,"data-testid":`question-step`,children:[s+1,` of `,a.length]})]}),a.length>1?(0,K.jsx)(`div`,{className:`flex flex-wrap gap-1 border-b border-border px-3 py-1.5`,role:`tablist`,"data-testid":`question-tabs`,children:a.map((e,t)=>{let n=vR(t,s,S,p);return(0,K.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":t===s,onClick:()=>c(t),"data-testid":`question-tab`,"data-state":n,title:e.question,className:`flex items-center gap-1 rounded-md border px-2 py-0.5 text-[11px] transition `+(t===s?`border-accent bg-accent text-accent-fg`:`border-border bg-surface text-fg-muted hover:border-accent/60`),children:[n===`answered`?(0,K.jsx)(Y.Check,{className:`w-3 h-3`}):null,n===`skipped`?(0,K.jsx)(`span`,{"aria-hidden":!0,children:`–`}):null,e.header||`Q${t+1}`]},t)})}):null,y?(0,K.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-3 py-2.5`,"data-testid":`question-body`,children:[(0,K.jsxs)(`div`,{className:`mb-2 flex flex-wrap items-center gap-2`,children:[y.header?(0,K.jsx)(Q,{tone:`accent`,children:y.header}):null,(0,K.jsx)(`span`,{className:`font-medium`,children:y.question})]}),(0,K.jsx)(`div`,{className:`space-y-1`,role:y.multiSelect?`group`:`radiogroup`,"aria-label":y.multiSelect?`choose any`:`choose one`,children:y.options.map(e=>{let t=(l[s]??[]).includes(e.label);return(0,K.jsxs)(`button`,{type:`button`,role:y.multiSelect?`checkbox`:`radio`,"aria-checked":t,onClick:()=>D(s,e.label,y.multiSelect),"data-testid":`question-option`,"data-label":e.label,className:`flex w-full items-start gap-2.5 rounded-md border px-2.5 py-1.5 text-left transition `+(t?`border-accent bg-accent-soft/60`:`border-border bg-surface hover:border-accent/60`),children:[(0,K.jsx)(`span`,{"aria-hidden":!0,className:`mt-0.5 flex h-3.5 w-3.5 shrink-0 items-center justify-center border `+(y.multiSelect?`rounded-sm `:`rounded-full `)+(t?`border-accent bg-accent text-accent-fg`:`border-fg-faint`),children:t?(0,K.jsx)(Y.Check,{className:`w-2.5 h-2.5`}):null}),(0,K.jsxs)(`span`,{className:`min-w-0`,children:[(0,K.jsx)(`span`,{className:`block text-sm`,children:e.label}),e.description?(0,K.jsx)(`span`,{className:`block text-[11px] leading-snug text-fg-muted`,children:e.description}):null]})]},e.label)})}),(0,K.jsx)(`input`,{className:Z+` mt-2 text-xs`,value:d[s]??``,onChange:e=>{let t=e.target.value;f(e=>({...e,[s]:t})),t.trim()&&(m(e=>e[s]?{...e,[s]:!1}:e),u(e=>(e[s]??[]).length>0?{...e,[s]:[]}:e))},placeholder:y.options.length>0?`Other — type your own answer`:`Type your answer`,autoComplete:`off`,"data-testid":`question-custom`,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),k())}}),y.multiSelect?(0,K.jsx)(`div`,{className:`mt-1 text-[11px] text-fg-faint`,children:`Choose any that apply.`}):null]}):null,(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 border-t border-border px-3 py-2`,children:[(0,K.jsx)(X,{size:`sm`,variant:`ghost`,disabled:s===0,onClick:()=>c(s-1),"data-testid":`question-back`,children:`Back`}),(0,K.jsx)(X,{size:`sm`,onClick:A,"data-testid":`question-skip`,children:`Skip`}),(0,K.jsx)(`span`,{className:`flex-1`}),b?(0,K.jsx)(X,{size:`sm`,variant:`primary`,disabled:!T,onClick:O,"data-testid":`question-answer`,children:`Answer`}):(0,K.jsxs)(X,{size:`sm`,variant:`primary`,disabled:!S[s]&&!p[s],onClick:k,"data-testid":`question-next`,children:[`Next `,(0,K.jsx)(Y.ChevronRight,{className:`w-3.5 h-3.5`})]})]})]}),document.body)}function bR({input:e,requestId:t,onDecide:n,cardRef:r}){return(0,K.jsxs)(`div`,{ref:r,className:`my-2 rounded-lg border border-accent/50 bg-accent-soft/40 p-3 text-sm shadow-sm`,role:`group`,"aria-label":`Install ${e.name}`,"data-permission-pending":`true`,"data-testid":`permission-${t}`,"data-install-pack":e.pack,children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(Y.Download,{className:`mt-0.5 w-4 h-4 shrink-0 text-accent`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`div`,{className:`font-semibold`,"data-testid":`tool-install-title`,children:[`Install `,e.name,`?`]}),(0,K.jsxs)(`div`,{className:`mt-0.5 text-fg-muted`,children:[`The agent wants to use `,e.name,`. It is downloaded once —`,` `,(0,K.jsx)(`span`,{className:`font-medium text-fg`,"data-testid":`tool-install-size`,children:nu(e.sizeBytes)}),` `,`— and after that it opens without asking, in every chat.`]}),(0,K.jsxs)(`div`,{className:`mt-1 text-xs text-fg-faint`,children:[`Installs into`,` `,(0,K.jsx)(`span`,{className:`break-all font-mono`,"data-testid":`tool-install-path`,children:e.path}),` `,`· version `,e.version]})]})]}),(0,K.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:[(0,K.jsxs)(X,{variant:`inverse`,onClick:()=>n({behavior:`allow`}),"data-testid":`tool-install-allow`,"data-autofocus":!0,children:[(0,K.jsx)(Y.Download,{className:`w-3.5 h-3.5`}),` Install`]}),(0,K.jsx)(X,{variant:`ghost`,onClick:()=>n({behavior:`deny`,message:`The person chose not to install ${e.name} now.`}),"data-testid":`tool-install-deny`,children:`Not now`}),(0,K.jsx)(`span`,{className:`text-[11px] text-fg-faint`,children:`Esc = not now`})]})]})}var xR={downloading:`Downloading`,verifying:`Checking`,unpacking:`Unpacking`,done:`Installed`,failed:`Could not install`};function SR(e){let t=`${xR[e.phase]} ${e.name}`;return e.phase===`failed`?`${t}: ${e.error??`unknown error`}`:e.phase===`downloading`&&e.totalBytes>0?`${t} — ${nu(e.receivedBytes)} of ${nu(e.totalBytes)}`:e.phase===`unpacking`&&e.totalBytes>0?`${t} — ${Math.min(100,Math.round(e.receivedBytes/e.totalBytes*100))} %`:`${t}…`}function CR({frame:e,onDismiss:t}){let n=e.phase===`failed`,r=(e.phase===`downloading`||e.phase===`unpacking`)&&e.totalBytes>0?Math.min(100,Math.round(e.receivedBytes/e.totalBytes*100)):e.phase===`verifying`?100:null;return(0,K.jsxs)(`div`,{className:`mb-2 rounded-md border px-3 py-2 text-xs `+(n?`border-danger/40 bg-danger/10 text-danger`:`border-accent/40 bg-accent/10 text-fg`),role:`status`,"data-testid":`tool-install-progress`,"data-phase":e.phase,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`min-w-0 flex-1`,children:SR(e)}),n?(0,K.jsx)(`button`,{type:`button`,"aria-label":`Dismiss`,className:`shrink-0 rounded p-0.5 hover:bg-danger/20`,onClick:t,children:(0,K.jsx)(Y.X,{className:`w-3 h-3`})}):null]}),r===null?null:(0,K.jsx)(`div`,{className:`mt-1 h-1 w-full overflow-hidden rounded bg-fg/10`,children:(0,K.jsx)(`div`,{className:`h-full bg-accent transition-[width] duration-200`,style:{width:`${r}%`},"data-testid":`tool-install-bar`})})]})}function wR({input:e,requestId:t,onDecide:n,cardRef:r}){let i=(0,v.useMemo)(()=>Xw(e.arguments),[e.arguments]),a=Object.keys(e.arguments);return(0,K.jsxs)(`div`,{ref:r,className:`my-2 rounded-lg border border-warn/60 bg-warn-soft/40 p-3 text-sm shadow-sm`,role:`group`,"aria-label":`${e.vendor} change request`,"data-permission-pending":`true`,"data-testid":`permission-${t}`,"data-connector-change":e.connector,children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(Y.Shield,{className:`mt-0.5 w-4 h-4 shrink-0 text-warn`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`div`,{className:`font-semibold`,"data-testid":`connector-change-title`,children:[e.vendor,` — the agent wants to run`,` `,(0,K.jsx)(`code`,{className:`rounded bg-surface-2 px-1 font-mono text-[0.9em]`,children:e.tool})]}),e.description?(0,K.jsx)(`div`,{className:`mt-0.5 text-fg-muted`,"data-testid":`connector-change-description`,children:e.description}):null,(0,K.jsxs)(`div`,{className:`mt-1 text-xs text-fg-faint`,children:[`This changes something on your `,e.vendor,` account. Read the details before you agree.`]})]})]}),(0,K.jsxs)(`div`,{className:`mt-2`,children:[(0,K.jsxs)(`div`,{className:`mb-0.5 text-[11px] font-medium text-fg-muted`,children:[`Arguments`,a.length>0?` (${a.join(`, `)})`:``]}),(0,K.jsx)(`pre`,{className:`max-h-48 overflow-auto whitespace-pre-wrap break-words rounded border border-border bg-surface px-2 py-1.5 font-mono text-xs`,"data-testid":`connector-change-args`,tabIndex:0,children:i.text}),i.shortened?(0,K.jsx)(`div`,{className:`mt-0.5 text-[11px] text-fg-faint`,"data-testid":`connector-change-shortened`,children:`shortened — long values are cut for display.`}):null]}),(0,K.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:[(0,K.jsxs)(X,{variant:`secondary`,onClick:()=>n({behavior:`deny`,message:`The person did not allow ${e.tool} on ${e.vendor}.`}),"data-testid":`connector-change-deny`,"data-autofocus":!0,children:[(0,K.jsx)(Y.X,{className:`w-3.5 h-3.5`}),` Deny`]}),(0,K.jsxs)(X,{variant:`inverse`,onClick:()=>n({behavior:`allow`}),"data-testid":`connector-change-allow`,children:[(0,K.jsx)(Y.Check,{className:`w-3.5 h-3.5`}),` Allow once`]}),(0,K.jsx)(`span`,{className:`text-[11px] text-fg-faint`,children:`Esc = deny`})]})]})}function TR({input:e,requestId:t,onDecide:n,cardRef:r}){return(0,K.jsxs)(`div`,{ref:r,className:`my-2 rounded-lg border border-accent/50 bg-accent-soft/40 p-3 text-sm shadow-sm`,role:`group`,"aria-label":`Switch this chat's workspace`,"data-permission-pending":`true`,"data-testid":`permission-${t}`,"data-workspace-switch":`true`,children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(Y.Folder,{className:`mt-0.5 w-4 h-4 shrink-0 text-accent`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`div`,{className:`font-semibold`,"data-testid":`workspace-switch-title`,children:[`Switch this chat's workspace to`,` `,(0,K.jsx)(`span`,{className:`break-all font-mono`,children:e.to}),`?`]}),(0,K.jsxs)(`div`,{className:`mt-1 text-xs text-fg-faint`,children:[`Now in`,` `,(0,K.jsx)(`span`,{className:`break-all font-mono`,"data-testid":`workspace-switch-from`,children:e.from}),e.create?` · the new folder is created on Switch`:``]}),(0,K.jsx)(`div`,{className:`mt-1 text-fg-muted`,children:`The chat moves when the agent's current turn ends. Your next message restarts the agent there, with that folder's CLAUDE.md and settings — the conversation is kept.`})]})]}),(0,K.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:[(0,K.jsxs)(X,{variant:`inverse`,onClick:()=>n({behavior:`allow`}),"data-testid":`workspace-switch-allow`,"data-autofocus":!0,children:[(0,K.jsx)(Y.Folder,{className:`w-3.5 h-3.5`}),` Switch`]}),(0,K.jsx)(X,{variant:`ghost`,onClick:()=>n({behavior:`deny`}),"data-testid":`workspace-switch-deny`,children:`Not now`}),(0,K.jsx)(`span`,{className:`text-[11px] text-fg-faint`,children:`Esc = not now`})]})]})}var ER=(0,v.createContext)({openChat:()=>{},openConversation:()=>{},conversationTitle:()=>null,canOpenChat:()=>!1,answerState:()=>null}),DR={message:`Message from chat`,reply:`Reply from chat`,continue:`Continue: a message from chat`},OR={message:`Another chat's agent sent this chat a message. This chat works on it with its own model, folder and permissions; its final answer goes back by itself.`,reply:`The answer another chat sent back to a message this chat sent it.`,continue:`OonaCode restarted while this chat was working on a message from another chat, so it was handed over again to finish.`},kR=(0,v.memo)(function({item:e}){let t=e.chatMarker;if(!t)return null;if(t.kind===`notice`)return(0,K.jsx)(jR,{marker:t,timestamp:e.timestamp});let n=e.chatBatch??[t];return n.length===1?(0,K.jsx)(AR,{marker:t,timestamp:e.timestamp}):(0,K.jsx)(`div`,{"data-testid":`chat-message-batch`,"data-count":n.length,children:n.map(t=>(0,K.jsx)(AR,{marker:t,timestamp:e.timestamp},t.messageId))})});function AR({marker:e,timestamp:t}){let n=(0,v.useContext)(ER);if(e.kind===`notice`)return null;let r=e.kind,i=e.title||`another chat`,a=n.conversationTitle(e.conversationId),o=r===`reply`?Y.Reply:r===`continue`?Y.Refresh:Y.Mail,s=e.chatId!==`_`&&n.canOpenChat(e.chatId,e.hostId),c=e.replyExpected?pp(n.answerState(e.messageId)):null;return(0,K.jsxs)(`div`,{className:`my-2 overflow-hidden rounded-lg border border-accent/40 bg-accent-soft/20 text-sm`,"data-testid":`chat-message-card`,"data-kind":r,"data-message-id":e.messageId,title:K_(t),children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1 border-b border-accent/20 px-3 py-1.5`,children:[(0,K.jsx)(o,{className:`h-3.5 w-3.5 shrink-0 text-accent`}),(0,K.jsxs)(`span`,{className:`min-w-0 font-medium text-fg`,title:OR[r],"data-testid":`chat-message-card-title`,children:[DR[r],` "`,i,`"`]}),e.pc?(0,K.jsxs)(`span`,{className:`text-xs text-fg-muted`,children:[`on `,e.pc]}):null,a?(0,K.jsx)(`span`,{title:`The conversation this message belongs to`,children:(0,K.jsx)(Q,{tone:`accent`,children:(0,K.jsx)(`span`,{"data-testid":`chat-message-card-conversation`,children:a})})}):null,c?(0,K.jsx)(`span`,{title:c.answeredAt?`${c.help}\n\nAnswered ${K_(c.answeredAt)}.`:c.help,children:(0,K.jsx)(Q,{tone:`neutral`,children:(0,K.jsxs)(`span`,{"data-testid":`chat-message-card-answer`,"data-state":c.label,children:[c.label,c.answeredAt?` ${q_(c.answeredAt)}`:``]})})}):null,(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>n.openConversation(e.conversationId),title:`See the whole conversation, what it cost, and pause or close it`,className:`rounded px-1.5 py-0.5 text-xs text-fg-muted hover:bg-surface-2 hover:text-fg`,"data-testid":`chat-message-card-conversation-link`,children:`Conversation`}),s?(0,K.jsxs)(`button`,{type:`button`,onClick:()=>n.openChat(e.chatId),title:`Open the chat "${i}" in a tab`,className:`inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-xs text-accent hover:bg-accent-soft`,"data-testid":`chat-message-card-open`,children:[(0,K.jsx)(Y.ExternalLink,{className:`h-3 w-3`}),` Open chat`]}):null]}),(0,K.jsx)(`div`,{className:`px-3 py-2`,"data-testid":`chat-message-card-body`,children:(0,K.jsx)(LI,{text:e.body})})]})}function jR({marker:e,timestamp:t}){let n=(0,v.useContext)(ER),r=e.body?`${e.headline}\n\n${e.body}`:e.headline,i=K_(t);return(0,K.jsxs)(`div`,{className:`my-2 flex items-center gap-2 rounded-md border border-warn/40 bg-warn-soft px-3 py-1.5 text-xs text-warn`,"data-testid":`chat-notice`,role:`note`,children:[(0,K.jsx)(Y.Alert,{className:`h-3.5 w-3.5 shrink-0`}),(0,K.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,title:i?`${r}\n\n${i}`:r,children:[e.headline,e.body?(0,K.jsxs)(`span`,{className:`opacity-80`,children:[` — `,e.body]}):null]}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>n.openConversation(e.conversationId),title:`Open the conversation this is about`,className:`shrink-0 rounded px-1.5 py-0.5 text-xs font-medium hover:bg-warn/10`,"data-testid":`chat-notice-open`,children:`Conversation`})]})}function MR({input:e,requestId:t,onDecide:n,cardRef:r}){let[i,a]=(0,v.useState)(!1),[o,s]=(0,v.useState)(e.title),[c,l]=(0,v.useState)(e.prompt),u=o.trim()!==e.title.trim(),d=c.trim()!==e.prompt.trim(),f=o.trim().length>0&&c.trim().length>0;return(0,K.jsxs)(`div`,{ref:r,className:`my-2 rounded-lg border border-accent/50 bg-accent-soft/40 p-3 text-sm shadow-sm`,role:`group`,"aria-label":`Start a new chat for this task`,"data-permission-pending":`true`,"data-testid":`permission-${t}`,"data-new-chat":`true`,children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(Y.Chats,{className:`mt-0.5 w-4 h-4 shrink-0 text-accent`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`div`,{className:`font-semibold`,"data-testid":`new-chat-title`,children:[`Start a new chat `,(0,K.jsxs)(`span`,{className:`break-words`,children:[`“`,o.trim()||e.title,`”`]}),` `,`for this task?`]}),e.reason?(0,K.jsx)(`div`,{className:`mt-1 text-fg-muted`,"data-testid":`new-chat-reason`,children:e.reason}):null,(0,K.jsxs)(`dl`,{className:`mt-2 grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5 text-xs`,children:[(0,K.jsx)(`dt`,{className:`text-fg-faint`,children:`Folder`}),(0,K.jsx)(`dd`,{className:`min-w-0 break-all font-mono`,"data-testid":`new-chat-folder`,children:Tm(e)}),e.providerId?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`dt`,{className:`text-fg-faint`,children:`Provider`}),(0,K.jsx)(`dd`,{className:`min-w-0 break-all font-mono`,"data-testid":`new-chat-provider`,children:e.providerId})]}):null,(0,K.jsx)(`dt`,{className:`text-fg-faint`,children:`Model`}),(0,K.jsx)(`dd`,{className:`min-w-0 break-all font-mono`,"data-testid":`new-chat-model`,children:e.model??`the default model`}),e.effort?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`dt`,{className:`text-fg-faint`,children:`Effort`}),(0,K.jsx)(`dd`,{className:`min-w-0 break-all font-mono`,"data-testid":`new-chat-effort`,children:e.effort})]}):null,e.project?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`dt`,{className:`text-fg-faint`,children:`Project`}),(0,K.jsx)(`dd`,{className:`min-w-0 break-words`,"data-testid":`new-chat-project`,children:e.project})]}):null]}),e.temporary?(0,K.jsxs)(`div`,{className:`mt-1.5 text-xs text-fg-muted`,"data-testid":`new-chat-temporary`,children:[(0,K.jsx)(Q,{tone:`accent`,children:`temporary`}),` You can delete it when the task is done.`]}):null,(0,K.jsx)(`div`,{className:`mt-2 text-xs text-fg-faint`,children:`Its first message — the new chat has none of this chat's history:`}),i?(0,K.jsxs)(`div`,{className:`mt-1 space-y-2`,children:[(0,K.jsxs)(`label`,{className:`block text-xs text-fg-faint`,children:[`Title`,(0,K.jsx)(`input`,{className:`${Z} mt-0.5`,value:o,onChange:e=>s(e.target.value),"data-keep-escape":!0,"data-testid":`new-chat-title-input`})]}),(0,K.jsx)(`textarea`,{className:`${Z} min-h-[10rem] resize-y font-mono text-xs leading-relaxed`,rows:12,value:c,onChange:e=>l(e.target.value),"aria-label":`The new chat's first message`,"data-keep-escape":!0,"data-testid":`new-chat-prompt-input`})]}):(0,K.jsx)(`div`,{className:`mt-1 max-h-24 overflow-hidden whitespace-pre-wrap break-words rounded-md border border-border bg-surface px-2.5 py-1.5 font-mono text-xs text-fg-muted`,"data-testid":`new-chat-prompt`,children:c}),(0,K.jsx)(`button`,{type:`button`,className:`mt-1 text-xs text-accent hover:underline`,onClick:()=>a(e=>!e),"data-testid":`new-chat-expand`,children:i?`Hide the message`:`Show and edit the message`})]})]}),(0,K.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:[(0,K.jsxs)(X,{variant:`inverse`,disabled:!f,onClick:()=>{if(!f)return;let e={...u?{title:o.trim()}:{},...d?{prompt:c.trim()}:{}};n(Object.keys(e).length>0?{behavior:`allow`,updatedInput:e}:{behavior:`allow`})},"data-testid":`new-chat-start`,"data-autofocus":!0,children:[(0,K.jsx)(Y.Plus,{className:`w-3.5 h-3.5`}),` Start new chat`]}),(0,K.jsx)(X,{variant:`ghost`,onClick:()=>n({behavior:`deny`}),"data-testid":`new-chat-deny`,children:`Not now`}),u||d?(0,K.jsx)(`span`,{"data-testid":`new-chat-edited`,children:(0,K.jsx)(Q,{tone:`accent`,children:`edited`})}):null,(0,K.jsx)(`span`,{className:`text-[11px] text-fg-faint`,children:`The new chat opens in a tab and runs there · Esc = not now`})]})]})}function NR({chat:e,timestamp:t}){let n=(0,v.useContext)(ER),r=K_(t);return(0,K.jsxs)(`div`,{className:`my-2 flex items-center gap-2 rounded-md border border-accent/40 bg-accent-soft/30 px-3 py-1.5 text-xs text-fg`,"data-testid":`new-chat-note`,role:`note`,title:r||void 0,children:[(0,K.jsx)(Y.Chats,{className:`h-3.5 w-3.5 shrink-0 text-accent`}),(0,K.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[`Started a new chat “`,e.title,`” for this task — it runs there.`]}),(0,K.jsxs)(`button`,{type:`button`,onClick:()=>n.openChat(e.sessionId),title:`Open the chat “${e.title}” in a tab`,className:`inline-flex shrink-0 items-center gap-1 rounded px-1.5 py-0.5 font-medium text-accent hover:bg-accent-soft`,"data-testid":`new-chat-note-open`,children:[(0,K.jsx)(Y.ExternalLink,{className:`h-3 w-3`}),` Open chat`]})]})}function PR({input:e,requestId:t,onDecide:n,cardRef:r}){let[i,a]=(0,v.useState)(!1),[o,s]=(0,v.useState)(e.title),[c,l]=(0,v.useState)(e.prompt),u=o.trim()!==e.title.trim(),d=c.trim()!==e.prompt.trim(),f=c.trim().length>0;return(0,K.jsxs)(`div`,{ref:r,className:`my-2 rounded-lg border border-accent/50 bg-accent-soft/40 p-3 text-sm shadow-sm`,role:`group`,"aria-label":`Start a new chat on ${e.pcName}`,"data-permission-pending":`true`,"data-testid":`permission-${t}`,"data-new-pc-chat":`true`,children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(Y.Chats,{className:`mt-0.5 w-4 h-4 shrink-0 text-accent`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`div`,{className:`font-semibold`,"data-testid":`new-pc-chat-title`,children:[`Start a new chat on `,(0,K.jsx)(`span`,{className:`break-words`,children:e.pcName}),`?`]}),(0,K.jsx)(`div`,{className:`mt-1 text-fg-muted`,children:`It runs on that PC, in its own workspace, with its own permissions. It knows nothing of this chat.`}),(0,K.jsxs)(`dl`,{className:`mt-2 grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5 text-xs`,children:[(0,K.jsx)(`dt`,{className:`text-fg-faint`,children:`Model`}),(0,K.jsx)(`dd`,{className:`min-w-0 break-all font-mono`,"data-testid":`new-pc-chat-model`,children:e.model??`that PC's default model`})]}),(0,K.jsx)(`div`,{className:`mt-2 text-xs text-fg-faint`,children:`Its first message:`}),i?(0,K.jsxs)(`div`,{className:`mt-1 space-y-2`,children:[(0,K.jsxs)(`label`,{className:`block text-xs text-fg-faint`,children:[`Title`,(0,K.jsx)(`input`,{className:`${Z} mt-0.5`,value:o,onChange:e=>s(e.target.value),"data-keep-escape":!0,"data-testid":`new-pc-chat-title-input`})]}),(0,K.jsx)(`textarea`,{className:`${Z} min-h-[8rem] resize-y font-mono text-xs leading-relaxed`,rows:10,value:c,onChange:e=>l(e.target.value),"aria-label":`The new chat's first message`,"data-keep-escape":!0,"data-testid":`new-pc-chat-prompt-input`})]}):(0,K.jsx)(`div`,{className:`mt-1 max-h-24 overflow-hidden whitespace-pre-wrap break-words rounded-md border border-border bg-surface px-2.5 py-1.5 font-mono text-xs text-fg-muted`,"data-testid":`new-pc-chat-prompt`,children:c}),(0,K.jsx)(`button`,{type:`button`,className:`mt-1 text-xs text-accent hover:underline`,onClick:()=>a(e=>!e),"data-testid":`new-pc-chat-expand`,children:i?`Hide the message`:`Show and edit the message`})]})]}),(0,K.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:[(0,K.jsxs)(X,{variant:`inverse`,disabled:!f,onClick:()=>{if(!f)return;let e={...u&&o.trim()?{title:o.trim()}:{},...d?{prompt:c.trim()}:{}};n(Object.keys(e).length>0?{behavior:`allow`,updatedInput:e}:{behavior:`allow`})},"data-testid":`new-pc-chat-start`,"data-autofocus":!0,children:[(0,K.jsx)(Y.Plus,{className:`w-3.5 h-3.5`}),` Start new chat`]}),(0,K.jsx)(X,{variant:`ghost`,onClick:()=>n({behavior:`deny`}),"data-testid":`new-pc-chat-deny`,children:`Not now`}),(0,K.jsx)(`span`,{className:`text-[11px] text-fg-faint`,children:`Esc = not now`})]})]})}function FR(e){return Math.max(100,Math.min(1e3,Math.round(e/100)))}function IR(e,t=600){let n=e.length-t;if(n<=0)return{head:``,tail:e};let r=!1,i=-1,a=0;for(;a<n;){let t=e.indexOf(`
|
|
152
|
+
`,a),o=t===-1?e.length:t,s=e.slice(a,o);if(/^\s{0,3}(```|~~~)/.test(s)&&(r=!r),!r&&s.trim()===``&&a>0&&o<=n&&(i=a-1),t===-1)break;a=t+1}return i<=0?{head:``,tail:e}:{head:e.slice(0,i),tail:e.slice(i)}}function LR(e,t){let[n,r]=(0,v.useState)(e),i=(0,v.useRef)(e);i.current=e;let a=FR(e.length);return(0,v.useEffect)(()=>{if(!t)return;let e=window.setInterval(()=>r(i.current),a);return()=>window.clearInterval(e)},[t,a]),t?n:e}var RR=new Set;function zR(){let e=RR,t=new Set;return{get:()=>e,set(n){if(n.size!==0||e.size!==0){e=n.size===0?RR:n;for(let e of t)e()}},subscribe(e){return t.add(e),()=>t.delete(e)}}}var BR=(0,v.createContext)({get:()=>RR,set:()=>{},subscribe:()=>()=>{}});function VR(e){let t=(0,v.useContext)(BR),n=()=>{let n=t.get();return n.size===0?!1:typeof e==`string`?n.has(e):e.some(e=>n.has(e))};return(0,v.useSyncExternalStore)(t.subscribe,n,n)}function HR(e,t){let n=VR(e);return(0,v.useEffect)(()=>{n&&t(!0)},[n,t]),n}var UR=6e4;function WR(e){let t=new TextEncoder().encode(e),n=``,r=32768;for(let e=0;e<t.length;e+=r)n+=String.fromCharCode(...t.subarray(e,e+r));return btoa(n)}function GR(e,t){let n=atob(e),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return new Blob([r],{type:t})}var KR={"image/png":`png`,"image/jpeg":`jpg`,"image/gif":`gif`,"image/webp":`webp`,"image/bmp":`bmp`,"image/svg+xml":`svg`,"application/pdf":`pdf`,"text/plain":`txt`};function qR(e,t){let n=KR[t.split(`;`)[0]?.trim().toLowerCase()??``];return n?`${e}.${n}`:e}function JR(e){let t=Im(e);return t?{name:t.name,path:t.path}:null}function YR(){if(typeof window>`u`)return null;let e=window.oonacode;return e?.pathForFile?t=>{try{return e.pathForFile?.(t)||null}catch{return null}}:null}async function XR(e,t){if(typeof window>`u`||!window.oonacode?.openPath)return t?.(`error`,`This file can only be opened in the OonaCode desktop app, on the PC it is on.`),!1;try{let n=await window.oonacode.openPath(e);return n.ok?!0:(n.message&&t?.(n.shownInFolder?`info`:`error`,n.message),!1)}catch(e){return t?.(`error`,e instanceof Error?e.message:`The file could not be opened.`),!1}}function ZR(){if(typeof window>`u`)return null;let e=window.oonacode;return e?.openData?e.openData.bind(e):null}function QR(){return ZR()!==null}function $R(e,t){if(typeof URL>`u`||typeof URL.createObjectURL!=`function`)return t?.(`error`,`This browser cannot open the file — it has no way to hold it.`),!1;let n;try{n=URL.createObjectURL(GR(e.base64,e.mediaType||`application/octet-stream`))}catch{return t?.(`error`,`The file could not be read.`),!1}let r=()=>setTimeout(()=>URL.revokeObjectURL?.(n),UR);if(e.mediaType===`application/pdf`){let e=window.open(n,`_blank`);if(e){try{e.opener=null}catch{}return r(),!0}}let i=document.createElement(`a`);return i.href=n,i.download=e.name||`attachment`,i.rel=`noopener`,i.style.display=`none`,document.body.appendChild(i),i.click(),i.remove(),r(),!0}async function ez(e,t){let n=ZR();if(!n)return $R(e,t);try{let r=await n({name:e.name,mediaType:e.mediaType,base64:e.base64});return r.ok?!0:(r.message&&t?.(r.shownInFolder?`info`:`error`,r.message),!1)}catch(e){return t?.(`error`,e instanceof Error?e.message:`The file could not be opened.`),!1}}var tz=.1,nz=1.25,rz={fit:!0,scale:1,x:0,y:0};function iz(e){return Number.isFinite(e)?Math.min(8,Math.max(tz,e)):1}function az(e,t){return e.w<=0||e.h<=0||t.w<=0||t.h<=0?1:iz(Math.min(1,t.w/e.w,t.h/e.h))}function oz(e,t){return iz(t===1?e*nz:e/nz)}function sz(e){return!Number.isFinite(e)||e===0?1:Math.exp(-Math.max(-600,Math.min(600,e))*.002)}function cz(e){return`${Math.round(e*100)}%`}function lz(e,t,n){let r=(e,t)=>Math.max(0,(e-t)/2),i=r(t.w*e.scale,n.w),a=r(t.h*e.scale,n.h);return{x:Math.min(i,Math.max(-i,e.x))+0,y:Math.min(a,Math.max(-a,e.y))+0}}function uz(e,t,n,r,i){let a=iz(t),o=e.scale>0?a/e.scale:1,s=lz({scale:a,x:n.x-(n.x-e.x)*o,y:n.y-(n.y-e.y)*o},r,i);return{fit:!1,scale:a,x:s.x,y:s.y}}function dz(e,t){return Math.round(e*100)===Math.round(t*100)}function fz(e,t){return dz(e,t)?{scale:dz(t,1)?2:1}:{fit:!0}}function pz({picture:e,onClose:t,notify:n,nav:r}){return(0,K.jsx)(JS,{open:e!==null,title:e?.name||`Picture`,onClose:t,full:!0,children:e?(0,K.jsx)(mz,{picture:e,notify:n,nav:r},e.id??e.name):null})}function mz({picture:e,notify:t,nav:n}){let r=(0,v.useRef)(null),[i,a]=(0,v.useState)({w:0,h:0}),[o,s]=(0,v.useState)({w:0,h:0}),[c,l]=(0,v.useState)(rz),[u,d]=(0,v.useState)(!1),f=az(i,o),p=c.fit?f:c.scale,m=c.fit?{x:0,y:0}:lz(c,i,o),h=i.w*p>o.w+.5||i.h*p>o.h+.5,g=(0,v.useRef)({scale:p,pan:m,natural:i,box:o,fit:f});g.current={scale:p,pan:m,natural:i,box:o,fit:f},(0,v.useLayoutEffect)(()=>{let e=r.current;if(!e)return;let t=()=>s({w:e.clientWidth,h:e.clientHeight});if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]);let _=(0,v.useCallback)((e,t)=>{let n=g.current;l(uz({scale:n.scale,x:n.pan.x,y:n.pan.y},e,t,n.natural,n.box))},[]),y=(0,v.useCallback)(e=>_(oz(g.current.scale,e),{x:0,y:0}),[_]),b=(0,v.useCallback)(()=>l(rz),[]),x=(0,v.useCallback)(()=>_(1,{x:0,y:0}),[_]),S=(e,t)=>{let n=r.current?.getBoundingClientRect();return n?{x:e-(n.left+n.width/2),y:t-(n.top+n.height/2)}:{x:0,y:0}};(0,v.useEffect)(()=>{let e=r.current;if(!e)return;let t=t=>{t.preventDefault();let n=e.getBoundingClientRect(),r={x:t.clientX-(n.left+n.width/2),y:t.clientY-(n.top+n.height/2)},i=t.deltaMode===1?t.deltaY*16:t.deltaY;_(g.current.scale*sz(i),r)};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[_]),(0,v.useEffect)(()=>{let e=e=>{if(!(e.ctrlKey||e.metaKey||e.altKey)){if(e.key===`+`||e.key===`=`)y(1);else if(e.key===`-`||e.key===`_`)y(-1);else if(e.key===`0`)b();else if(e.key===`1`)x();else if(e.key===`ArrowLeft`&&n?.onPrev)n.onPrev();else if(e.key===`ArrowRight`&&n?.onNext)n.onNext();else return;e.preventDefault()}};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[y,b,x,n]);let C=(0,v.useRef)(null),w=e=>{if(!(e.button!==0||!h)){C.current={from:{x:e.clientX,y:e.clientY},origin:{...g.current.pan}},d(!0);try{e.currentTarget.setPointerCapture?.(e.pointerId)}catch{}}},T=e=>{let t=C.current;if(!t)return;let n=g.current,r=lz({scale:n.scale,x:t.origin.x+(e.clientX-t.from.x),y:t.origin.y+(e.clientY-t.from.y)},n.natural,n.box);l({fit:!1,scale:n.scale,x:r.x,y:r.y})},E=()=>{C.current=null,d(!1)},D=e=>{let t=g.current,n=fz(t.scale,t.fit);`fit`in n?b():_(n.scale,S(e.clientX,e.clientY))},O=QR(),k=`data:${e.mediaType||`image/png`};base64,${e.base64}`;return(0,K.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-2`,"data-testid":`image-viewer`,children:[(0,K.jsxs)(`div`,{role:`toolbar`,"aria-label":`Picture zoom`,className:`flex flex-wrap items-center gap-1.5`,"data-testid":`viewer-toolbar`,children:[(0,K.jsx)(X,{size:`sm`,"aria-label":`Zoom out`,title:`Zoom out (-)`,"data-testid":`viewer-zoom-out`,disabled:p<=tz+1e-9,onClick:()=>y(-1),children:`−`}),(0,K.jsx)(`span`,{className:`min-w-[3.5rem] text-center text-xs tabular-nums text-fg-muted`,"aria-live":`polite`,"data-testid":`viewer-percent`,children:cz(p)}),(0,K.jsx)(X,{size:`sm`,"aria-label":`Zoom in`,title:`Zoom in (+)`,"data-testid":`viewer-zoom-in`,disabled:p>=8-1e-9,onClick:()=>y(1),children:`+`}),(0,K.jsx)(X,{size:`sm`,"aria-label":`Fit to window`,title:`Fit to window (0)`,"data-testid":`viewer-fit`,"aria-pressed":c.fit,onClick:b,children:`Fit`}),(0,K.jsx)(X,{size:`sm`,"aria-label":`Actual size`,title:`Actual size (1)`,"data-testid":`viewer-actual`,"aria-pressed":!c.fit&&dz(p,1),onClick:x,children:`100%`}),n?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(X,{size:`sm`,"aria-label":`Previous picture`,title:`Previous picture (←)`,"data-testid":`viewer-prev`,disabled:!n.onPrev,onClick:()=>n.onPrev?.(),children:`‹`}),(0,K.jsxs)(`span`,{className:`text-xs tabular-nums text-fg-muted`,"aria-live":`polite`,"data-testid":`viewer-position`,children:[n.index+1,` / `,n.total]}),(0,K.jsx)(X,{size:`sm`,"aria-label":`Next picture`,title:`Next picture (→)`,"data-testid":`viewer-next`,disabled:!n.onNext,onClick:()=>n.onNext?.(),children:`›`})]}):null,(0,K.jsx)(`span`,{className:`mx-1 min-w-0 flex-1 truncate text-xs text-fg-faint`,title:e.name,children:e.name}),(0,K.jsx)(X,{size:`sm`,"aria-label":O?`Open externally`:`Download`,title:O?`Open in the program your computer gives this picture`:`Download the picture`,"data-testid":`viewer-open`,onClick:()=>void ez(e,t),children:O?`Open externally`:`Download`})]}),(0,K.jsx)(`div`,{ref:r,className:`relative min-h-0 flex-1 touch-none select-none overflow-hidden rounded-md border border-border bg-black/70`,style:{cursor:h?u?`grabbing`:`grab`:`zoom-in`},"data-testid":`viewer-canvas`,onPointerDown:w,onPointerMove:T,onPointerUp:E,onPointerCancel:E,onDoubleClick:D,children:(0,K.jsx)(`img`,{src:k,alt:e.name,draggable:!1,"data-testid":`viewer-image`,"data-scale":p.toFixed(4),onLoad:e=>a({w:e.currentTarget.naturalWidth,h:e.currentTarget.naturalHeight}),onDragStart:e=>e.preventDefault(),style:{position:`absolute`,left:`50%`,top:`50%`,maxWidth:`none`,maxHeight:`none`,...i.w>0?{width:i.w,height:i.h}:{},transform:`translate(-50%, -50%) translate(${m.x}px, ${m.y}px) scale(${p})`,transformOrigin:`center`}})}),(0,K.jsxs)(`p`,{className:`text-[11px] text-fg-faint`,children:[`Scroll to zoom · drag to move · double-click for Fit / 100% · + − 0 on the keyboard`,n?` · ← → for the previous / next picture`:``]})]})}function hz(e){if(e.type!==`image`)return null;let t=e.source;return t?.type===`base64`&&t.data?{mediaType:t.media_type||`image/png`,base64:t.data,url:null}:t?.url?{mediaType:t.media_type||`image/png`,base64:null,url:t.url}:null}function gz(e){if(!e||typeof e.content==`string`)return null;for(let t of e.content){let e=hz(t);if(e)return e}return null}function _z(e){return e.base64===null?e.url??``:`data:${e.mediaType};base64,${e.base64}`}function vz(e){return e.split(/[\\/]+/).filter(Boolean).at(-1)??e}function yz(e,t,n){let r=e===`Read`||e===`view_file`?t?.file_path??t?.AbsolutePath??t?.path:null;return typeof r==`string`&&r.trim()?vz(r.trim()):qR(`picture`,n)}function bz(e,t){let n=e?V_(e):``,r=(/^Saved (.+?) \(\d/.exec(n)??/^Picture made by agy: (.+)$/m.exec(n))?.[1]?.trim();return r?vz(r):qR(`picture`,t)}var xz=360,Sz=376,Cz=398,wz=8;function Tz(e,t,n){let r=Math.max(wz,Math.min(t+12,n.w-Sz-wz));return n.h-e.bottom-6>=Cz?{left:r,top:e.bottom+6}:e.top-6>=Cz?{left:r,bottom:n.h-e.top+6}:{left:r,top:Math.max(wz,n.h-Cz-wz)}}function Ez({picture:e,name:t,place:n}){let r=(0,v.useMemo)(()=>_z(e),[e]);return(0,RS.createPortal)((0,K.jsxs)(`div`,{role:`tooltip`,"data-testid":`picture-preview`,className:`pointer-events-none fixed z-[60] rounded-lg border border-border bg-surface p-2 text-xs text-fg shadow-lg`,style:{left:n.left,top:n.top,bottom:n.bottom,maxWidth:Sz},children:[(0,K.jsx)(`img`,{src:r,alt:t,"data-testid":`picture-preview-image`,draggable:!1,className:`block rounded object-contain`,style:{maxWidth:xz,maxHeight:xz}}),(0,K.jsx)(`div`,{className:`mt-1 truncate text-fg-muted`,"data-testid":`picture-preview-name`,title:t,children:t})]}),document.body)}function Dz(){return typeof window>`u`||typeof window.matchMedia!=`function`||!window.matchMedia(`(hover: none)`).matches}var Oz={};function kz(e,t){let[n,r]=(0,v.useState)(null),i=(0,v.useRef)(!1),a=e!==null&&n!==null;if((0,v.useEffect)(()=>{if(!a)return;let e=e=>{e.key===`Escape`&&r(null)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[a]),!e)return{handlers:Oz,popup:null};let o=(e,t)=>{let n=e.getBoundingClientRect();r(Tz({top:n.top,bottom:n.bottom},t??n.left+24,{w:window.innerWidth,h:window.innerHeight}))};return{handlers:{onMouseEnter:e=>{Dz()&&o(e.currentTarget,e.clientX)},onMouseLeave:()=>r(null),onMouseDown:()=>{i.current=!0},onFocus:e=>{Dz()&&!i.current&&o(e.currentTarget,null)},onBlur:()=>{i.current=!1,r(null)},onClick:()=>r(null)},popup:n?(0,K.jsx)(Ez,{picture:e,name:t,place:n}):null}}var Az=(0,v.memo)(function({block:e,toolName:t,input:n,onOpen:r}){let i=(0,v.useMemo)(()=>hz(e),[e]),a=(0,v.useMemo)(()=>i?_z(i):``,[i]);if(!i)return(0,K.jsx)(`div`,{children:`[image]`});let o=yz(t,n,i.mediaType),s=(0,K.jsx)(`img`,{src:a,alt:`tool result`,className:`block max-h-64 max-w-full rounded border border-border`});if(i.base64===null)return s;let c=i.base64;return(0,K.jsx)(`button`,{type:`button`,"aria-label":`Open ${o} in the viewer`,title:`Open in the viewer`,"data-testid":`tool-result-picture`,onClick:()=>r({name:o,mediaType:i.mediaType,base64:c}),className:`block max-w-full cursor-zoom-in rounded p-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:s})});function jz({picture:e,onClose:t}){let n=(0,v.useContext)(mI).notify??void 0;return(0,K.jsx)(pz,{picture:e,onClose:t,notify:n})}function Mz(e){return typeof e==`string`?e:null}function Nz(e,t){if(!t)return``;switch(e){case`Bash`:case`PowerShell`:case`run_command`:return Y_((Mz(t.CommandLine)??Mz(t.command)??``).replace(/\s+/g,` `),90);case`Read`:case`view_file`:case`Write`:case`write_to_file`:case`Edit`:case`replace_file_content`:case`multi_replace_file_content`:case`MultiEdit`:case`NotebookEdit`:return Mz(t.AbsolutePath)??Mz(t.file_path)??Mz(t.TargetFile)??Mz(t.notebook_path)??Mz(t.path)??``;case`Glob`:case`Grep`:case`grep_search`:case`find_by_name`:return`${Mz(t.pattern)??Mz(t.query)??``}${Mz(t.path)??Mz(t.dir_path)?` in ${Mz(t.path)??Mz(t.dir_path)}`:``}`;case`list_dir`:return Mz(t.DirectoryPath)??Mz(t.dir_path)??Mz(t.path)??``;case`Task`:case`Agent`:return Mz(t.description)??Y_(Mz(t.prompt)??``,80);case`WebFetch`:case`WebSearch`:return Mz(t.url)??Mz(t.query)??``;case`TodoWrite`:return`update todo list`;case vm:return Y_(Mz(t.title)??``,80);case Fu:return Y_((Mz(t.prompt)??Mz(t.file)??``).replace(/\s+/g,` `),60);default:{let e=Object.entries(t).find(([,e])=>typeof e==`string`);return e?Y_(String(e[1]).replace(/\s+/g,` `),80):``}}}var Pz=(0,v.memo)(function({oldText:e,newText:t}){let n=(0,v.useMemo)(()=>e.split(`
|
|
153
|
+
`),[e]),r=(0,v.useMemo)(()=>t.split(`
|
|
154
|
+
`),[t]);return(0,K.jsxs)(`pre`,{className:`lazy-block m-0 max-h-72 overflow-auto rounded-md border border-border bg-code-bg p-2 font-mono text-[12.5px] leading-relaxed`,children:[n.map((e,t)=>(0,K.jsxs)(`div`,{className:`bg-danger-soft text-danger`,children:[(0,K.jsx)(`span`,{className:`select-none pr-2 text-fg-faint`,children:`-`}),e]},`o${t}`)),r.map((e,t)=>(0,K.jsxs)(`div`,{className:`bg-ok-soft text-ok`,children:[(0,K.jsx)(`span`,{className:`select-none pr-2 text-fg-faint`,children:`+`}),e]},`n${t}`))]})}),Fz=nF;function Iz({name:e,input:t,inputJson:n,streaming:r}){if(!t)return n?(0,K.jsx)(AI,{code:n,language:`json`,maxHeight:`14rem`}):r?(0,K.jsx)(`div`,{className:`text-xs text-fg-faint`,children:`Receiving arguments…`}):null;switch(e){case`Bash`:case`PowerShell`:case`run_command`:{let n=Mz(t.Description)??Mz(t.description);return(0,K.jsxs)(`div`,{children:[n?(0,K.jsx)(`div`,{className:`mb-1 text-xs text-fg-muted`,children:n}):null,(0,K.jsx)(AI,{code:Mz(t.CommandLine)??Mz(t.command)??X_(t),language:e===`PowerShell`?`powershell`:`bash`,maxHeight:`14rem`})]})}case`Edit`:case`replace_file_content`:case`multi_replace_file_content`:{let e=Mz(t.TargetFile)??Mz(t.file_path),n=Mz(t.TargetContent)??Mz(t.old_string)??``,r=Mz(t.ReplacementContent)??Mz(t.new_string)??``;return(0,K.jsxs)(`div`,{className:`space-y-1`,children:[e?(0,K.jsxs)(`div`,{className:`font-mono text-xs text-fg-muted`,children:[e,t.replace_all?` (replace all)`:``]}):null,(0,K.jsx)(Pz,{oldText:n,newText:r})]})}case`Write`:case`write_to_file`:{let e=Mz(t.TargetFile)??Mz(t.file_path),n=Mz(t.CodeContent)??Mz(t.content)??``;return(0,K.jsxs)(`div`,{children:[e?(0,K.jsx)(`div`,{className:`mb-1 font-mono text-xs text-fg-muted`,children:e}):null,(0,K.jsx)(AI,{code:n,language:Fz(e),maxHeight:`18rem`})]})}case`Read`:case`view_file`:{let e=Mz(t.AbsolutePath)??Mz(t.file_path)??Mz(t.path)??``,n=[t.offset===void 0?null:`offset ${String(t.offset)}`,t.limit===void 0?null:`limit ${String(t.limit)}`,t.StartLine===void 0?null:`lines ${String(t.StartLine)}${t.EndLine===void 0?``:`-${String(t.EndLine)}`}`].filter(Boolean).join(`, `);return(0,K.jsxs)(`div`,{className:`font-mono text-xs text-fg-muted`,children:[e,n?` (${n})`:``]})}default:return(0,K.jsx)(AI,{code:X_(t),language:`json`,maxHeight:`14rem`})}}function Lz({blocks:e,toolName:t,input:n,onOpenPicture:r,hideImages:i}){return(0,K.jsx)(`div`,{className:`space-y-1`,children:e.map((e,a)=>{if(e.type===`image`&&i)return null;if(e.type===`image`)return(0,K.jsx)(Az,{block:e,toolName:t,input:n,onOpen:r},a);let o=e.type===`text`?e.text??``:`[${e.type}]`;return(0,K.jsx)(`pre`,{className:`pre-wrap m-0 font-mono text-[12.5px] leading-relaxed`,children:o},a)})})}var Rz=`Code snippet`;function zz(e){return e===`unknown`?Rz:e===`view_file`?`View file`:e===`write_to_file`?`Write`:e===`replace_file_content`||e===`multi_replace_file_content`?`Edit`:e===`run_command`?`Run command`:e===`grep_search`?`Grep`:e===`find_by_name`?`Find`:e===`list_dir`?`List directory`:e===mm?hm:e===vm?ym:e===Fu?Iu:e}var Bz={streaming:`preparing`,pending:`needs approval`,running:`running`,done:`done`,error:`error`,denied:`denied`,skipped:`skipped`,cancelled:`cancelled`};function Vz({status:e}){switch(e){case`streaming`:case`running`:return(0,K.jsx)(Y.Spinner,{className:`w-3.5 h-3.5 text-accent`});case`pending`:return(0,K.jsx)(Y.Shield,{className:`w-3.5 h-3.5 text-warn`});case`done`:return(0,K.jsx)(Y.Check,{className:`w-3.5 h-3.5 text-ok`});case`error`:case`denied`:return(0,K.jsx)(Y.X,{className:`w-3.5 h-3.5 text-danger`});case`skipped`:case`cancelled`:return(0,K.jsx)(Y.X,{className:`w-3.5 h-3.5 text-fg-faint`})}}function Hz(e){for(let t of e)if(t.item.kind===`permission`&&t.item.status===`pending`||t.children.length>0&&Hz(t.children))return!0;return!1}var Uz=(0,v.memo)(function({node:e,renderChildren:t}){let n=e.item,r=n.status===`error`||n.status===`denied`,[i,a]=(0,v.useState)(null),o=HR(n.id,a),s=Hz(e.children),c=aL.has(n.name)&&(n.status===`done`||n.status===`cancelled`),l=n.name===`Read`||n.name===`view_file`,u=(0,v.useMemo)(()=>{if(!l||!n.input)return null;let e=Mz(n.input.AbsolutePath)??Mz(n.input.file_path)??Mz(n.input.path);return e&&e.trim()?e.trim():null},[l,n.input]),d=(0,v.useMemo)(()=>u?Nm(u):null,[u]),f=(0,v.useContext)(mI),p=(0,v.useMemo)(()=>{if(!u)return null;if(/^[A-Za-z]:[\\/]/.test(u)||u.startsWith(`/`))return u;if(f.cwd){let e=f.platform===`win32`||f.cwd.includes(`\\`)?`\\`:`/`;return`${f.cwd.replace(/[\\/]+$/,``)}${e}${u}`}return u},[u,f.cwd,f.platform]),m=s||o||(i??(r||n.status===`pending`||e.children.length>0&&!c)),h=(0,v.useMemo)(()=>Nz(n.name,n.input),[n.name,n.input]),g=(0,v.useMemo)(()=>l?gz(n.result):null,[l,n.result]),_=kz(g,yz(n.name,n.input,g?.mediaType??`image/png`)),{onClick:y,...b}=_.handlers,x=(0,v.useMemo)(()=>n.name===Fu?gz(n.result):null,[n.name,n.result]),S=(0,v.useMemo)(()=>x?_z(x):``,[x]),C=(0,v.useMemo)(()=>x?bz(n.result,x.mediaType):``,[x,n.result]),[w,T]=(0,v.useState)(null),E=(0,v.useMemo)(()=>m?V_(n.result):``,[m,n.result]),D=n.result!==null&&!n.result.isError&&(typeof n.result.content==`string`&&/^Async agent launched/i.test(n.result.content.trimStart())||n.result.structured?.status===`async_launched`),O=n.durationMs===null?n.elapsedSec!==null&&!n.result?H_(n.elapsedSec*1e3):``:H_(n.durationMs);return(0,K.jsxs)(`div`,{"data-testid":`tool-${n.toolUseId}`,className:G(`my-1.5 overflow-hidden rounded-lg border bg-surface text-sm`,r?`border-danger/50`:n.status===`pending`?`border-warn/60`:`border-border`),children:[(0,K.jsxs)(`button`,{type:`button`,"aria-expanded":m,onClick:()=>{y?.(),a(s?null:!m)},...b,className:`flex w-full items-center gap-2 px-2.5 py-1.5 text-left hover:bg-surface-2`,children:[(0,K.jsx)(Vz,{status:n.status}),(0,K.jsx)(Y.Tool,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`font-medium`,children:zz(n.name)}),h?(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-xs text-fg-muted`,children:h}):(0,K.jsx)(`span`,{className:`flex-1`}),O?(0,K.jsx)(`span`,{className:`text-[11px] text-fg-faint`,children:O}):null,(0,K.jsx)(Q,{tone:r?`danger`:n.status===`pending`?`warn`:n.status===`done`?`ok`:`neutral`,children:Bz[n.status]}),(0,K.jsx)(Y.Chevron,{open:m,className:`w-3.5 h-3.5 text-fg-faint`})]}),x&&!r?(0,K.jsxs)(`div`,{className:`border-t border-border px-2.5 py-2`,"data-testid":`tool-generated`,children:[x.base64===null?(0,K.jsx)(`img`,{src:S,alt:C,className:`block rounded border border-border object-contain`,style:{maxWidth:280,maxHeight:280}}):(0,K.jsx)(`button`,{type:`button`,"aria-label":`Open ${C} in the viewer`,title:`${C} — open in the viewer`,"data-testid":`tool-generated-picture`,onClick:()=>T({name:C,mediaType:x.mediaType,base64:x.base64}),className:`block cursor-zoom-in rounded p-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:(0,K.jsx)(`img`,{src:S,alt:C,draggable:!1,className:`block rounded border border-border object-contain`,style:{maxWidth:280,maxHeight:280}})}),(0,K.jsx)(`div`,{className:`mt-1 truncate text-xs text-fg-muted`,title:C,children:C})]}):null,m?(0,K.jsxs)(`div`,{className:`space-y-2 border-t border-border px-2.5 py-2`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`mb-1 text-[11px] uppercase tracking-wide text-fg-faint`,children:`Input`}),(0,K.jsx)(Iz,{name:n.name,input:n.input,inputJson:n.inputJson,streaming:n.status===`streaming`})]}),e.children.length>0?(0,K.jsxs)(`div`,{className:`border-l-2 border-think/40 pl-2`,children:[(0,K.jsx)(`div`,{className:`mb-1 text-[11px] uppercase tracking-wide text-think`,children:`Subagent`}),t(e.children)]}):null,n.result&&D?(0,K.jsx)(`div`,{className:`text-xs text-fg-faint`,"data-testid":`tool-launch-note`,children:`Launched in the background — the chat is told when it finishes.`}):n.result?(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`mb-1 flex items-center justify-between text-[11px] uppercase tracking-wide text-fg-faint`,children:[(0,K.jsx)(`span`,{children:n.result.isError?`Error`:`Result`}),E?(0,K.jsxs)(`span`,{className:`normal-case`,children:[E.length.toLocaleString(),` chars`]}):null]}),d&&!n.result.isError&&f.grant&&f.sessionId&&p&&(d.kind===`audio`||d.kind===`video`||d.kind===`image`&&!g)?(0,K.jsx)(`div`,{className:`mb-2`,"data-testid":`tool-inline-media`,children:(0,K.jsx)(wI,{sessionId:f.sessionId,path:p,kind:d.kind,grant:f.grant})}):null,(0,K.jsx)(`div`,{className:G(`lazy-block max-h-72 overflow-auto rounded-md border p-2`,n.result.isError?`border-danger/40 bg-danger-soft text-danger`:`border-border bg-code-bg`),children:typeof n.result.content==`string`?(0,K.jsx)(`pre`,{className:`pre-wrap m-0 font-mono text-[12.5px] leading-relaxed`,children:n.result.content.replace(/<\/?tool_use_error>/g,``).trim()||`(empty)`}):(0,K.jsx)(Lz,{blocks:n.result.content,toolName:n.name,input:n.input,onOpenPicture:T,hideImages:x!==null})})]}):n.status===`cancelled`?(0,K.jsx)(`div`,{className:`text-xs text-fg-faint`,children:`No result (turn ended before the tool finished).`}):null]}):null,_.popup,w?(0,K.jsx)(jz,{picture:w,onClose:()=>T(null)}):null]})}),Wz=(0,v.memo)(function({item:e}){let[t,n]=(0,v.useState)(null),r=HR(e.id,n)||(t??e.streaming),i=LR(e.text,e.streaming),a=Kz(i),o=(0,v.useMemo)(()=>r||e.streaming||e.redacted?``:Gz(e.text),[r,e.streaming,e.redacted,e.text]);return!e.streaming&&!e.redacted&&a===0?null:!e.streaming&&e.redacted?(0,K.jsxs)(`div`,{className:`my-1.5 flex items-center gap-2 rounded-lg border border-think/20 bg-think-soft/20 px-2.5 py-1.5 text-sm text-think/70`,"data-testid":`thought-empty`,title:`The provider hid this thought: only an encrypted copy came back, which the model reads and nobody else can.`,children:[(0,K.jsx)(Y.Brain,{className:`w-3.5 h-3.5`}),(0,K.jsx)(`span`,{className:`font-medium`,children:`Redacted thinking`}),(0,K.jsx)(`span`,{className:`text-xs opacity-70`,children:`hidden`})]}):(0,K.jsxs)(`div`,{className:`my-1.5 rounded-lg border border-think/30 bg-think-soft/40 text-sm`,children:[(0,K.jsxs)(`button`,{type:`button`,"aria-expanded":r,onClick:()=>n(!r),className:`flex w-full items-center gap-2 px-2.5 py-1.5 text-left text-think`,children:[e.streaming?(0,K.jsx)(Y.Spinner,{className:`w-3.5 h-3.5`}):(0,K.jsx)(Y.Brain,{className:`w-3.5 h-3.5`}),(0,K.jsx)(`span`,{className:`font-medium`,children:e.redacted?`Redacted thinking`:e.streaming?`Thinking…`:`Thought`}),a?(0,K.jsxs)(`span`,{className:`text-xs opacity-70`,"data-testid":`thought-words`,children:[a.toLocaleString(`en-US`),` `,a===1?`word`:`words`]}):null,o?(0,K.jsxs)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-xs text-fg-muted`,"data-testid":`thought-preview`,children:[`: `,o]}):(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(Y.Chevron,{open:r,className:`w-3.5 h-3.5 opacity-70`})]}),r&&!e.redacted?(0,K.jsx)(`div`,{className:G(`border-t border-think/20 px-3 py-2 text-fg-muted`,e.streaming&&`caret`),children:e.streaming?(0,K.jsx)(`div`,{className:`pre-wrap`,"data-testid":`thinking-stream`,children:i}):(0,K.jsx)(LI,{text:e.text})}):null]})});function Gz(e){return e.slice(0,600).replace(/\*\*|__/g,``).replace(/^[\s#>*-]+/,``).replace(/\s+/g,` `).trim().slice(0,200)}function Kz(e){let t=0,n=!1;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);i===32||i===10||i===13||i===9?n=!1:n||(n=!0,t++)}return t}function qz(e){if(!e)return!1;if(e.tagName===`TEXTAREA`)return!0;if(e.tagName===`INPUT`){let t=(e.type||`text`).toLowerCase();return![`button`,`checkbox`,`radio`,`submit`,`reset`,`range`,`color`,`file`].includes(t)}return e.isContentEditable===!0}function Jz(e){!e||typeof document>`u`||qz(document.activeElement)||e.querySelector(`[data-autofocus]`)?.focus()}function Yz(e){if(!e)return!1;let t=e.tagName;return t===`INPUT`||t===`TEXTAREA`||t===`SELECT`||e instanceof HTMLElement&&e.isContentEditable}function Xz(e,t,n){if(!e||!n||n.querySelector(`[role="dialog"][aria-modal="true"]`))return!1;let r=t instanceof Element?t:null;if(r&&r.closest(`[data-keep-escape]`))return!1;let i=Zz(e);if(i!==null&&r&&r!==n.body){let e=Zz(r);if(e!==null&&e!==i)return!1}if(r&&Yz(r)&&!e.contains(r)&&r.closest(`[data-testid="composer"]`)===null)return!1;let a=Array.from(n.querySelectorAll(`[data-permission-pending="true"]`)).find(e=>i===null||Zz(e)===i);return a===void 0||a===e}function Zz(e){return e.closest(`[data-chat-group]`)?.getAttribute(`data-chat-group`)??e.closest(`[data-editor-group]`)?.getAttribute(`data-editor-group`)??null}var Qz=(0,v.memo)(function({item:e,agentName:t}){let n=e.request,[r,i]=(0,v.useState)(!1),a=e.status===`allowed`,o=(0,v.useMemo)(()=>Am(n.toolName,n.input,110),[n]),s=n.agentId?t??`background agent`:null;if(n.toolName===`AskUserQuestion`){let e=Hl(n.input).length;return(0,K.jsxs)(`div`,{className:`my-1 flex items-center gap-2 px-1 py-0.5 text-xs text-fg-faint`,children:[a?(0,K.jsx)(Y.Check,{className:`w-3 h-3 shrink-0 text-ok`}):(0,K.jsx)(Y.X,{className:`w-3 h-3 shrink-0`}),(0,K.jsx)(`span`,{"data-testid":`permission-${n.requestId}`,children:Wl({outcome:a?`answered`:`dismissed`,questions:e})}),s?(0,K.jsx)(`span`,{title:n.agentId??void 0,className:`shrink-0`,children:(0,K.jsx)(Q,{tone:`think`,children:s})}):null]})}let c=qw(n);return(0,K.jsxs)(`div`,{className:`my-1 text-xs text-fg-faint`,"data-testid":`permission-${n.requestId}`,children:[(0,K.jsxs)(`button`,{type:`button`,"aria-expanded":r,onClick:()=>i(e=>!e),className:`flex w-full min-w-0 items-center gap-2 rounded px-1 py-0.5 text-left hover:bg-surface-2`,children:[a?(0,K.jsx)(Y.Check,{className:`w-3 h-3 shrink-0 text-ok`}):(0,K.jsx)(Y.X,{className:`w-3 h-3 shrink-0 text-danger`}),(0,K.jsxs)(`span`,{className:`shrink-0`,"data-testid":c?`connector-settled`:void 0,children:[c?Jw(c,a):`${a?`Allowed`:`Denied`} ${n.displayName??n.toolName}`,e.resolvedBy===`auto`?` (automatically)`:e.resolvedBy&&e.resolvedBy!==`local`?` (by ${e.resolvedBy})`:``]}),o?(0,K.jsx)(`span`,{className:`min-w-0 truncate font-mono text-fg-muted`,"data-testid":`permission-summary`,children:o}):null,s?(0,K.jsx)(`span`,{title:n.agentId??void 0,className:`shrink-0`,children:(0,K.jsx)(Q,{tone:`think`,children:s})}):null,(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(Y.Chevron,{open:r,className:`w-3 h-3 shrink-0`})]}),r?(0,K.jsx)(`div`,{className:`ml-5 mt-1`,children:(0,K.jsx)(Iz,{name:n.toolName,input:n.input})}):null]})});function $z({items:e,agentNameOf:t}){let[n,r]=(0,v.useState)(!1),i=HR((0,v.useMemo)(()=>e.map(e=>e.id),[e]),r),{allowed:a,denied:o,tools:s,who:c}=(0,v.useMemo)(()=>{let n=e.filter(e=>e.status===`allowed`).length,r=new Map,i=new Set;for(let n of e){let e=qw(n.request),a=e?`${e.tool} (${e.vendor})`:n.request.displayName??n.request.toolName;r.set(a,(r.get(a)??0)+1),n.request.agentId&&i.add(t(n.request.agentId)??`background agent`)}return{allowed:n,denied:e.length-n,tools:[...r.entries()].sort((e,t)=>t[1]-e[1]).map(([e,t])=>t>1?`${e} ×${t}`:e).join(`, `),who:[...i]}},[e,t]);return(0,K.jsxs)(`div`,{className:`my-1 text-xs text-fg-faint`,"data-testid":`permission-run`,children:[(0,K.jsxs)(`button`,{type:`button`,"aria-expanded":n||i,onClick:()=>r(e=>!e),className:`flex w-full min-w-0 items-center gap-2 rounded px-1 py-0.5 text-left hover:bg-surface-2`,children:[o===0?(0,K.jsx)(Y.Check,{className:`w-3 h-3 shrink-0 text-ok`}):(0,K.jsx)(Y.X,{className:`w-3 h-3 shrink-0 text-danger`}),(0,K.jsxs)(`span`,{className:`shrink-0`,children:[a>0?`Allowed ${a}`:``,a>0&&o>0?` · `:``,o>0?`Denied ${o}`:``]}),(0,K.jsx)(`span`,{className:`min-w-0 truncate text-fg-muted`,"data-testid":`permission-run-tools`,children:s}),c.length>0?(0,K.jsx)(`span`,{className:`shrink-0`,children:(0,K.jsx)(Q,{tone:`think`,children:c.length===1?c[0]:`${c.length} agents`})}):null,(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(Y.Chevron,{open:n||i,className:`w-3 h-3 shrink-0`})]}),n||i?(0,K.jsx)(`div`,{className:`ml-3`,children:e.map(e=>(0,K.jsx)(Qz,{item:e,agentName:e.request.agentId?t(e.request.agentId):null},e.id))}):null]})}function eB({item:e,onDecide:t,stackIndex:n,agentName:r}){let i=e.request,[a,o]=(0,v.useState)(!1),[s,c]=(0,v.useState)(``),l=i.title??`Allow ${i.displayName??i.toolName}?`,u=(0,v.useRef)(t);u.current=t;let d=(0,v.useRef)(null),f=e.status===`pending`;if((0,v.useEffect)(()=>{if(f&&typeof document<`u`){let e=e=>{e.key===`Escape`&&Xz(d.current,e.target,document)&&(e.preventDefault(),e.stopImmediatePropagation(),e.stopPropagation(),u.current({behavior:`deny`}))};return document.addEventListener(`keydown`,e,!0),()=>document.removeEventListener(`keydown`,e,!0)}},[f]),(0,v.useEffect)(()=>{f&&Jz(d.current)},[f]),e.status!==`pending`)return(0,K.jsx)(Qz,{item:e,agentName:r??null});if(i.toolName===`AskUserQuestion`)return(0,K.jsx)(yR,{item:e,onDecide:t,cardRef:d,...n===void 0?{}:{stackIndex:n}});let p=ru(i);if(p)return(0,K.jsx)(bR,{input:p,requestId:i.requestId,onDecide:t,cardRef:d});let m=qw(i);if(m)return(0,K.jsx)(wR,{input:m,requestId:i.requestId,onDecide:t,cardRef:d});let h=zu(i);if(h)return(0,K.jsx)(PR,{input:h,requestId:i.requestId,onDecide:t,cardRef:d});let g=Sm(i);if(g)return(0,K.jsx)(MR,{input:g,requestId:i.requestId,onDecide:t,cardRef:d});let _=gm(i);return _?(0,K.jsx)(TR,{input:_,requestId:i.requestId,onDecide:t,cardRef:d}):(0,K.jsxs)(`div`,{ref:d,className:`my-2 rounded-lg border border-warn/60 bg-warn-soft/40 p-3 text-sm shadow-sm`,role:`group`,"aria-label":`Permission request`,"data-permission-pending":`true`,"data-testid":`permission-${i.requestId}`,children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(Y.Shield,{className:`mt-0.5 w-4 h-4 text-warn`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`font-semibold`,children:l}),(0,K.jsx)(Q,{tone:`warn`,children:i.toolName}),i.agentId?(0,K.jsx)(Q,{tone:`think`,children:`subagent`}):null]}),i.description?(0,K.jsx)(`div`,{className:`mt-0.5 text-fg-muted`,children:i.description}):null,i.decisionReason?(0,K.jsx)(`div`,{className:`mt-0.5 text-xs text-fg-faint`,children:i.decisionReason}):null,i.blockedPath?(0,K.jsxs)(`div`,{className:`mt-0.5 font-mono text-xs text-danger`,children:[`Blocked path: `,i.blockedPath]}):null]})]}),(0,K.jsx)(`div`,{className:`mt-2`,children:(0,K.jsx)(Iz,{name:i.toolName,input:i.input})}),a?(0,K.jsx)(`div`,{className:`mt-2`,children:(0,K.jsx)(`input`,{className:Z,placeholder:`Optional: tell the agent why (sent as the tool result)`,value:s,onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Enter`&&t(s.trim()?{behavior:`deny`,message:s.trim()}:{behavior:`deny`})}})}):null,(0,K.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:[(0,K.jsxs)(X,{variant:`inverse`,onClick:()=>t({behavior:`allow`}),"data-autofocus":!0,children:[(0,K.jsx)(Y.Check,{className:`w-3.5 h-3.5`}),` Allow`]}),(0,K.jsx)(X,{variant:`secondary`,title:`Allow and remember this rule for the session/project`,onClick:()=>t({behavior:`allow`,remember:!0}),children:`Allow always`}),a?(0,K.jsx)(X,{variant:`secondary`,onClick:()=>t(s.trim()?{behavior:`deny`,message:s.trim()}:{behavior:`deny`}),children:`Confirm deny`}):(0,K.jsxs)(X,{variant:`ghost`,onClick:()=>o(!0),children:[(0,K.jsx)(Y.X,{className:`w-3.5 h-3.5`}),` Deny`]}),(0,K.jsx)(`span`,{className:`text-[11px] text-fg-faint`,children:`Enter = allow · Esc = deny`})]})]})}var tB=6e4,nB=1e4;function rB(e,t=nB,n=300){if(e.length>=t)return!0;let r=1;for(let t=0;t<e.length;t++)if(e.charCodeAt(t)===10&&(r++,r>=n))return!0;return!1}function iB(e){return Math.ceil(Math.max(0,e)/3)*4}function aB(e,t){return t?Math.min(e.size,tB):iB(e.size)}function oB(e){return e>=1048576?`${(e/1048576).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${Math.max(0,Math.round(e))} B`}function sB(e,t={}){let n=t.budget??6291456,r=t.isText??(()=>!1),i=Math.max(0,t.usedBytes??0),a=[],o=[],s=0;for(let t of e){let e=aB(t,r(t));if(e>n){o.push({name:t.name,reason:`too large — ${oB(t.size)} becomes ${oB(e)} once encoded (limit ${oB(n)})`});continue}if(i+e>n){o.push({name:t.name,reason:`would exceed the ${oB(n)} attachment budget — send the staged files first`});continue}i+=e,s+=e,a.push(t)}return{accepted:a,rejected:o,addedBytes:s}}var cB=3e3;function lB(e,t,n){return e?.providerId!==`oonacode`||(n?.priceUsdMonthly??0)>0?null:t?.free===!0?`free`:`pool`}function uB(e){switch(e){case`free`:return`Waiting for a free-lane slot — free requests are paced, so the first reply can take a few seconds.`;case`pool`:return`Waiting for a slot on the OonaCode pool — the request is queued behind the provider’s rate limits.`;default:return null}}function dB(e,t,n=cB){let[r,i]=(0,v.useState)(!1);return(0,v.useEffect)(()=>{if(i(!1),!e)return;let t=setTimeout(()=>i(!0),n);return()=>clearTimeout(t)},[e,t,n]),r}function fB(e){let t=Math.floor(e/6e4);if(t<60)return`${Math.max(1,t)}m`;let n=Math.floor(t/60);if(n<24)return`${n}h ${t-n*60}m`;let r=Math.floor(n/24);return`${r}d ${n-r*24}h`}function pB(e){return e>=1e4?`${Math.round(e/1e3)}k`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(Math.round(e))}function mB(e){let{lastTurnEndedAt:t,now:n,ttlSec:r,contextTokens:i,running:a}=e;if(a||t===null||r===null||r<=0||i!==null&&i<1024)return null;let o=n-t;if(!Number.isFinite(o)||o<r*1e3)return null;let s=i===null?`the whole conversation`:`about ${pB(i)} tokens`;return`Idle ${fB(o)}. The prompt cache has likely expired, so your next message will re-cache ${s}.`}var hB=new Map;function gB(e){e===void 0?hB.clear():hB.delete(e)}function _B(e){let{text:t,chatId:n,disabled:r=!1,load:i,onPick:a}=e,o=Gm(t),[s,c]=(0,v.useState)(!1),[l,u]=(0,v.useState)(null),[,d]=(0,v.useState)(0),f=(0,v.useRef)(null);(0,v.useEffect)(()=>{o===null&&c(!1)},[o]),(0,v.useEffect)(()=>{u(null)},[o,n]);let p=o!==null&&!s&&!r&&n!==null,m=n!==null&&!r&&(p||/^\/\S+\s/.test(t)),h=n===null?void 0:hB.get(n),g=h!==void 0&&Date.now()-h.at<6e4;(0,v.useEffect)(()=>{if(!m||n===null||g||f.current===n)return;f.current=n;let e=!0;return i(n).then(e=>{hB.set(n,{at:Date.now(),commands:e===null||e===`unsupported`?null:[...Xm(e.commands)],unsupported:e===`unsupported`})}).catch(()=>{hB.set(n,{at:Date.now(),commands:null,unsupported:!1})}).finally(()=>{f.current===n&&(f.current=null),e&&d(e=>e+1)}),()=>{e=!1}},[m,n,g,i]);let _=h?.commands??null,{items:y,sections:b,best:x}=(0,v.useMemo)(()=>{if(!_||o===null)return{items:[],sections:[],best:0};let e=Zm(_,o),t=rh(e),n=[],r=0;for(let e of eh)t[e].length!==0&&(n.push({id:e,title:th[e],start:r,items:t[e]}),r+=t[e].length);let i=n.flatMap(e=>e.items),a=e[0];return{items:i,sections:n,best:o.length>0&&a?Math.max(i.indexOf(a),0):0}},[_,o]),S=(0,v.useMemo)(()=>_?Qm(t,_):null,[_,t]),C=h===void 0?`loading`:h.unsupported?`unsupported`:h.commands===null?`error`:`ready`,w=p&&C!==`unsupported`,T=y.length===0?0:Math.min(l??x,y.length-1),E=(0,v.useCallback)(e=>`/${e.name} `,[]),D=(0,v.useCallback)(()=>c(!0),[]);return{open:w,status:C,query:o??``,items:y,sections:b,active:T,setActive:u,inArguments:S,onKeyDown:e=>{if(!w||e.nativeEvent.isComposing)return!1;if(e.key===`Escape`)return e.preventDefault(),c(!0),!0;if(y.length===0)return!1;if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=e.key===`ArrowDown`?1:-1;return u((T+t+y.length)%y.length),!0}let t=y[T];if(e.key===`Enter`&&!e.shiftKey||e.key===`Tab`&&!e.shiftKey){let n=o!==null&&(t.name.toLowerCase()===o.toLowerCase()||(t.aliases??[]).some(e=>e.toLowerCase()===o.toLowerCase()));return e.key===`Enter`&&n?!1:t.availability===`ok`?(e.preventDefault(),a(E(t)),!0):(e.preventDefault(),!0)}return!1},textFor:E,dismiss:D}}var vB=`slash-command-menu`,yB=e=>`slash-command-option-${e}`,bB=`The model may also use it on its own in this chat (switched on in the Skills menu)`,xB=`Picking or typing a skill runs it once, in this message, whatever the Skills menu says. The model is shown a skill on its own only when it is switched on in the Skills menu under the message box — then it costs its tokens on every message.`;function SB({menu:e,onPick:t,modelSkills:n=null}){let r=(0,v.useRef)(null);return(0,v.useEffect)(()=>{(r.current?.querySelector(`#${yB(e.active)}`))?.scrollIntoView?.({block:`nearest`})},[e.active,e.items]),e.open?(0,K.jsxs)(`div`,{className:`absolute bottom-full left-0 right-0 z-20 mb-1 overflow-hidden rounded-lg border border-border bg-surface shadow-lg`,"data-testid":`slash-menu`,children:[e.status===`loading`?(0,K.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 text-xs text-fg-muted`,role:`status`,children:[(0,K.jsx)(Y.Spinner,{className:`h-3.5 w-3.5 animate-spin`}),` Reading this chat’s commands…`]}):e.status===`error`?(0,K.jsx)(`div`,{className:`px-3 py-2 text-xs text-fg-muted`,role:`status`,children:`The host could not list this chat’s commands right now — type the command, it still runs.`}):e.items.length===0?(0,K.jsxs)(`div`,{className:`px-3 py-2 text-xs text-fg-muted`,role:`status`,"data-testid":`slash-empty`,children:[`No command or skill matches “/`,e.query,`” — Enter sends it to the model as a message.`]}):(0,K.jsx)(`ul`,{ref:r,id:vB,role:`listbox`,"aria-label":`Skills and commands`,className:`max-h-72 overflow-y-auto pb-1`,children:e.sections.map(r=>(0,K.jsx)(CB,{section:r,menu:e,onPick:t,modelSkills:n},r.id))}),(0,K.jsx)(`div`,{className:`hidden border-t border-border px-3 py-0.5 text-right text-[10px] text-fg-faint sm:block`,children:`↑↓ to move · Enter or Tab to pick · Esc to close`})]}):null}function CB({section:e,menu:t,onPick:n,modelSkills:r}){let i=`slash-section-${e.id}`,a=e=>e.modelSkill===void 0?null:(r??[]).includes(e.modelSkill),o=e.items.filter(e=>a(e)!==null),s=o.some(e=>a(e)===!0);return(0,K.jsxs)(`li`,{role:`presentation`,"data-testid":`slash-section`,"data-section":e.id,children:[(0,K.jsxs)(`div`,{id:i,className:`sticky top-0 z-10 flex items-baseline gap-2 border-b border-border bg-surface px-3 pb-0.5 pt-1.5 text-[11px]`,children:[(0,K.jsx)(`span`,{className:`font-semibold uppercase tracking-wide text-fg-muted`,"data-testid":`slash-section-title`,children:e.title}),e.id===`skills`?(0,K.jsx)(`span`,{className:`ml-auto flex min-w-0 items-center gap-1 truncate text-fg-faint`,title:xB,"data-testid":`slash-skills-note`,children:o.length===0?`Picking one runs it once`:s?(0,K.jsxs)(K.Fragment,{children:[`Picking one runs it once · `,(0,K.jsx)(Y.Skill,{className:`h-3 w-3 shrink-0 text-accent`}),` `,`the model may also use it here`]}):`Picking one runs it once · the model is not shown these here`}):null]}),(0,K.jsx)(`ul`,{role:`group`,"aria-labelledby":i,children:e.items.map((r,i)=>{let o=e.start+i;return(0,K.jsx)(wB,{item:r,index:o,active:o===t.active,onHover:t.setActive,onPick:n,modelOn:a(r)},r.name)})})]})}var wB=(0,v.memo)(function({item:e,index:t,active:n,onHover:r,onPick:i,modelOn:a}){let o=e.availability!==`ok`,s=$m(e.source),c=ah(e.description);return(0,K.jsxs)(`li`,{id:yB(t),role:`option`,"aria-selected":n,"aria-disabled":o||void 0,"data-testid":`slash-item`,"data-name":e.name,"data-model-skill":a===null?void 0:a?`on`:`off`,title:e.description||void 0,className:G(`flex cursor-pointer flex-col gap-0.5 px-3 py-1.5 text-xs`,n?`bg-accent-soft`:`hover:bg-surface-2`,o&&`cursor-default opacity-60`),onMouseDown:e=>e.preventDefault(),onMouseEnter:()=>r(t),onClick:()=>{o||i(e)},children:[(0,K.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,K.jsxs)(`span`,{className:`shrink-0 font-mono font-medium text-fg`,children:[`/`,e.name]}),e.argumentHint?(0,K.jsx)(`span`,{className:`min-w-0 truncate font-mono text-fg-faint`,children:e.argumentHint}):null,(0,K.jsxs)(`span`,{className:`ml-auto flex shrink-0 items-center gap-1.5`,children:[a===!0&&!o?(0,K.jsx)(`span`,{className:`text-accent`,title:bB,"aria-label":bB,"data-testid":`slash-model-state`,children:(0,K.jsx)(Y.Skill,{className:`h-3 w-3`})}):null,s?(0,K.jsx)(`span`,{className:`rounded border border-border px-1 text-[10px] uppercase tracking-wide text-fg-muted`,children:s}):null]})]}),o?(0,K.jsxs)(`div`,{className:`text-fg-muted`,"data-testid":`slash-reason`,children:[`Not available here — `,e.reason]}):c?(0,K.jsx)(`div`,{className:`truncate text-fg-muted`,"data-testid":`slash-summary`,children:c}):null]})});function TB({item:e}){return e&&e.availability!==`ok`?(0,K.jsxs)(`div`,{className:`px-1 pt-0.5 text-[11px] text-warn`,"data-testid":`slash-hint`,children:[(0,K.jsxs)(`span`,{className:`font-mono`,children:[`/`,e.name]}),` is not available here — `,e.reason]}):!e||!e.argumentHint&&!e.note?null:(0,K.jsxs)(`div`,{className:`px-1 pt-0.5 text-[11px] text-fg-faint`,"data-testid":`slash-hint`,children:[(0,K.jsxs)(`span`,{className:`font-mono`,children:[`/`,e.name,` `,e.argumentHint]}),e.note?(0,K.jsxs)(`span`,{children:[` — `,e.note]}):null]})}var EB=`field-sizing-content w-auto max-w-full shrink-0 rounded-md border border-border bg-surface-2 py-0.5 pl-1.5 pr-1 text-xs text-fg hover:border-fg-faint focus:border-accent focus:outline-none disabled:opacity-50`,DB=[{value:`default`,label:`Ask (default)`},{value:`acceptEdits`,label:`Accept edits`},{value:`plan`,label:`Plan`},{value:`auto`,label:`Auto`},{value:`dontAsk`,label:`Don't ask`},{value:`bypassPermissions`,label:`Bypass permissions`}],OB=`Ask anything — build, fix, explain…`,kB=M;function AB(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(r.error??Error(`read failed`)),r.onload=()=>{let e=String(r.result??``);t(e.slice(e.indexOf(`,`)+1))},r.readAsDataURL(e)})}function jB(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(r.error??Error(`read failed`)),r.onload=()=>t(String(r.result??``)),r.readAsText(e)})}function MB(e){if(e.type.startsWith(`image/`))return`image`;if(e.type===`application/pdf`)return`document`;if(e.type.startsWith(`text/`))return`text`;if(e.type)return`path`;let t=iF(e.name);return t.kind===`image`?`image`:t.kind===`pdf`?`document`:t.kind===`audio`||t.kind===`video`?`path`:`text`}function NB(e){return e.map(e=>e.kind===`image`?{type:`image`,source:{type:`base64`,media_type:e.mediaType,data:e.data}}:e.kind===`document`?{type:`document`,source:{type:`base64`,media_type:e.mediaType||`application/pdf`,data:e.data}}:e.kind===`path`?{type:`text`,text:Fm({name:e.name,mediaType:e.mediaType||`file`,sizeText:oB(e.size),path:e.path??e.name})}:{type:`text`,text:`Attached file ${e.name}:\n\n\`\`\`\n${e.data}\n\`\`\``})}function PB(){let{state:e,actions:t,dispatch:n,api:r}=q(),i=jS(),a=MS(),o=AS(),{sessionId:s,focused:c}=OS(),l=s?e.unsent[s]:void 0,[u,d]=(0,v.useState)(()=>l?.text??``),[f,p]=(0,v.useState)(()=>[...l?.attachments??[]]),[m,h]=(0,v.useState)(()=>[...l?.replies??[]]),[g,_]=(0,v.useState)(``),[y,b]=(0,v.useState)(kB),[x,S]=(0,v.useState)(!1),C=(0,v.useRef)(null),w=(0,v.useRef)(null),T=(0,v.useRef)(0),E=(0,v.useRef)(!0),[D,O]=(0,v.useState)(null),k=(0,v.useCallback)(e=>{if(e.kind===`path`){XR(e.path??``,t.toast);return}ez(e.kind===`text`?{name:e.name,mediaType:`text/plain`,base64:WR(e.data)}:{name:e.name,mediaType:e.mediaType||`application/pdf`,base64:e.data},t.toast)},[t]),A=(0,v.useRef)({text:u,attachments:f,replies:m});A.current={text:u,attachments:f,replies:m},(0,v.useEffect)(()=>(E.current=!0,()=>{E.current=!1}),[]);let j=(0,v.useRef)(o?.status??null);j.current=o?.status??null,(0,v.useEffect)(()=>{let e=C.current;if(e)return Mx(e,{report:e=>t.reportDiagnostic(`message box lost the focus while typing`,{...e,chatStatus:j.current})})},[t]),(0,v.useEffect)(()=>{if(s)return()=>t.rememberUnsent(s,A.current)},[s,t]),(0,v.useEffect)(()=>{if(s)return kb(s,()=>A.current)},[s]),(0,v.useEffect)(()=>{l&&(d(e=>e.length===0?l.text:e),p(e=>e.length===0?[...l.attachments]:e),h(e=>e.length===0?[...l.replies??[]]:e))},[l]);let M=e.composerQuote,F=(0,v.useRef)(M?.seq??0);(0,v.useEffect)(()=>{!M||M.seq<=F.current||(F.current=M.seq,M.sessionId===s&&(h(e=>e.some(e=>e.quote===M.text)?e:[...e,{id:`reply-${M.seq}`,quote:M.text,preview:M.preview,itemId:M.itemId}]),C.current?.focus()))},[M,s]);let I=i?.effort??a?.effort??``;(0,v.useEffect)(()=>{_(I)},[s,I]);let ne=o?.status===`running`||o?.status===`waiting_permission`,re=e.connection.status===`open`,L=lw(),R=uw(),z=!s||L||R!==null,B=yw(),ie=Ee(B.option),ae=(0,v.useMemo)(()=>we(B.option),[B.option]),oe=(0,v.useMemo)(()=>{let e=Ah(B.option,B.modelId);return e.length===0?[]:I&&!e.includes(I)&&!ae?[...e,I]:e},[B.option,B.modelId,I,ae]),se=g&&oe.includes(g)?g:ae??g,ce=B.auto!==null,le=oe.length>0&&!ce,ue=(0,v.useMemo)(()=>e.providers.find(e=>e.definition.id===B.providerId)?.definition,[e.providers,B.providerId]),de=L?`This session runs on a PC that is offline — read-only`:R?`${R} is no longer offered — pick another model to continue`:z?`Open a chat to start`:ne?`Agent is working — a message sent now is handed to it and read at its next step (Esc to stop)`:OB;(0,v.useEffect)(()=>{let e=C.current;if(!e)return;let t=()=>{e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,240)}px`};if(t(),typeof ResizeObserver>`u`)return;let n=e.clientWidth,r=new ResizeObserver(()=>{e.clientWidth!==n&&(n=e.clientWidth,t())});return r.observe(e),()=>r.disconnect()},[u,de]);let fe=(0,v.useRef)(c);fe.current=c,(0,v.useEffect)(()=>{fe.current&&C.current?.focus()},[s]);let pe=te(a?.permissionMode?{permissionMode:a.permissionMode,posture:a.posture??null}:i);(0,v.useEffect)(()=>{b(ie?pe:kB)},[ie,pe,s]);let me=Mh(B.providerId),he=Ph(B.providerId);(0,v.useEffect)(()=>{!a||!ie||!me||Ph(B.providerId).some(e=>e.id===pe)||t.setSessionPosture(kB,s??void 0)},[a,ie,me,B.providerId,pe,s,t]);let ge=(0,v.useMemo)(()=>f.reduce((e,t)=>e+t.data.length,0),[f]),_e=(0,v.useRef)(ge);_e.current=ge;let ve=(0,v.useCallback)(async(e,n={})=>{let o=Array.from(e);if(o.length===0)return;let c=sB(o,{usedBytes:_e.current,isText:e=>{let t=MB(e);return t===`text`||t===`path`||t===`image`&&e.size>2097152}});for(let e of c.rejected)t.toast(`error`,`${e.name} was not attached: ${e.reason}`);let l=YR(),u=`this window cannot say where the file lives — type its full path into the message, or use the desktop app`,d=[],f=i?.cwd||(a?.projectDir??null);for(let e of c.accepted){let i=MB(e);if(i===`image`&&e.size>2097152&&(i=`path`),(i===`image`||i===`document`)&&ue&&B.modelId&&!ce){let n=Js(ue,B.modelId,[{type:i}]);if(n){t.toast(`error`,`${e.name||`File`} was not attached: ${n}`);continue}}if(i===`path`){let a=l?.(e)??null;if(!a&&(n.isPaste||i===`path`&&e.type?.startsWith(`image/`))&&r?.saveTmpFile)try{let t=await AB(e),n=await r.saveTmpFile({sessionId:s??null,cwd:f,name:e.name||`attachment`,mediaType:e.type||iF(e.name).mime||`application/octet-stream`,base64:t});n.ok&&n.path&&(a=n.path)}catch{}if(!a){t.toast(`error`,`${e.name||`File`} was not attached: ${u}`);continue}d.push({id:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,name:e.name||`file`,mediaType:e.type||iF(e.name).mime||`application/octet-stream`,data:``,kind:i,path:a,size:e.size});continue}try{let a=i===`text`?(await jB(e)).slice(0,tB):await AB(e);if(i===`text`&&pF(a)){let i=l?.(e)??null;if(!i&&n.isPaste&&r?.saveTmpFile)try{let t=await AB(e),n=await r.saveTmpFile({sessionId:s??null,cwd:f,name:e.name||`file.bin`,mediaType:e.type||`application/octet-stream`,base64:t});n.ok&&n.path&&(i=n.path)}catch{}i?d.push({id:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,name:e.name||`file`,mediaType:e.type||`application/octet-stream`,data:``,kind:`path`,path:i,size:e.size}):t.toast(`error`,`${e.name||`File`} was not attached: it is not text, and ${u}`);continue}let o=l?.(e)??null;if(!o&&i===`image`&&r?.saveTmpFile)try{let t=await r.saveTmpFile({sessionId:s??null,cwd:f,name:e.name||`image.png`,mediaType:e.type||`image/png`,base64:a});t.ok&&t.path&&(o=t.path)}catch{}d.push({id:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,name:e.name||(i===`image`?`image`:`file`),mediaType:e.type||(i===`text`?`text/plain`:`application/octet-stream`),data:a,kind:i,path:o??void 0,size:e.size})}catch{t.toast(`error`,`${e.name||`File`} could not be read — nothing was attached`)}}d.length>0&&p(e=>[...e,...d])},[t,r,ue,B.modelId,ce,a?.projectDir,i?.cwd,s]),ye=y===kB?null:ee(y),be=(0,v.useCallback)(e=>{d(e);let t=C.current;t&&(t.focus(),requestAnimationFrame(()=>t.setSelectionRange(e.length,e.length)))},[]),xe=_B({text:u,chatId:s,disabled:z,load:t.listCommands,onPick:be}),Se=(0,v.useCallback)(()=>{let e=u.trim();if(!s||R!==null||!e&&f.length===0)return;let n=nx(m.map(e=>e.quote),e||`Please look at the attached file(s).`),r=qm(n,`app`);if(r){t.toast(`error`,Jm(r));return}let i=f,a=m,o=NB(i),c={};g&&!ce&&(c.effort=g),ye&&(c.permissionMode=ye,c.posture=y);let l=s;d(``),p([]),h([]),C.current?.focus(),t.sendPrompt(n,o,Object.keys(c).length>0?c:void 0,l??void 0).then(e=>{if(E.current){let e=document.activeElement;(!e||e===document.body)&&C.current?.focus()}if(!e){if(E.current){d(e=>e.length===0?u:e),p(e=>e.length===0?i:e),h(e=>e.length===0?a:e);return}t.rememberUnsent(l,{text:u,attachments:i,replies:a},!0)}})},[u,f,m,s,R,t,g,ce,ye,y]),Ce=(0,v.useCallback)(e=>{d(e),C.current?.focus()},[]),Te=(0,v.useCallback)(e=>{if(!s||R!==null)return Promise.resolve(!1);let n={};return g&&!ce&&(n.effort=g),ye&&(n.permissionMode=ye,n.posture=y),t.sendPrompt(e,[],Object.keys(n).length>0?n:void 0,s)},[s,R,t,g,ce,ye,y]),De=e=>{xe.onKeyDown(e)||(e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing?(e.preventDefault(),Se()):e.key===`Escape`&&ne&&(e.preventDefault(),t.interrupt(s??void 0)))},Oe=e=>{let n=Array.from(e.clipboardData?.files??[]);if(n.length>0){e.preventDefault(),ve(n,{isPaste:!0});return}let o=e.clipboardData?.getData(`text/plain`)??``;if(o&&rB(o)){e.preventDefault();let n=i?.cwd||(a?.projectDir??null),c=new TextEncoder().encode(o),l=WR(o),u=r?.saveTmpFile;if(u){(async()=>{try{let e=await u({sessionId:s??null,cwd:n,name:`pasted-text.txt`,mediaType:`text/plain`,base64:l});if(e.ok&&e.path){p(t=>[...t,{id:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,name:`pasted-text.txt`,mediaType:`text/plain`,data:``,kind:`path`,path:e.path,size:c.byteLength}]),t.toast(`info`,`Large pasted text (${oB(c.byteLength)}) saved to ${e.path} and attached by path.`);return}}catch{}d(e=>e+o)})();return}}},ke=e=>{e.preventDefault(),T.current=0,S(!1),e.dataTransfer?.files?.length&&ve(e.dataTransfer.files)},Ae=e=>{e.dataTransfer?.types?.includes(`Files`)&&(T.current+=1,S(!0))},je=()=>{T.current=Math.max(0,T.current-1),T.current===0&&S(!1)},Me=e=>{e.target.files&&ve(e.target.files),e.target.value=``},{pendingQuestions:Ne,pendingPermissions:Pe}=(0,v.useMemo)(()=>{let e=[],t=[];for(let n of o?.items??[])n.kind===`permission`&&n.status===`pending`&&(n.request.toolName===`AskUserQuestion`?e.push(n):t.push(n));return{pendingQuestions:e,pendingPermissions:t}},[o?.items]),Fe=lB(i,B.option,e.plan),Ie=dB(o?.status===`running`,o?.items.length??0)&&Fe?uB(Fe):null,[Le,V]=(0,v.useState)(()=>Date.now());(0,v.useEffect)(()=>{let e=setInterval(()=>V(Date.now()),6e4);return()=>clearInterval(e)},[]);let Re=(0,v.useMemo)(()=>{if(!o||!i)return null;let t=o.items,n=null;for(let e=t.length-1;e>=0;e--)if(t[e].kind===`result`){n=t[e];break}if(!n||n.kind!==`result`){if(t.length===0)return null;let n=e.providers.find(e=>e.definition.id===B.providerId)?.definition.capabilities.promptCacheTtlSec??null,r=Date.parse(i.updatedAt);return mB({lastTurnEndedAt:Number.isFinite(r)?r:null,now:Le,ttlSec:n,contextTokens:o.contextTokens,running:ne})}let r=n.timestamp?Date.parse(n.timestamp):Date.parse(i.updatedAt),a=e.providers.find(e=>e.definition.id===B.providerId)?.definition.capabilities.promptCacheTtlSec??null;return mB({lastTurnEndedAt:Number.isFinite(r)?r:null,now:Le,ttlSec:a,contextTokens:o.contextTokens,running:ne})},[o,i,e.providers,B.providerId,Le,ne]);return(0,K.jsxs)(`div`,{className:`relative border-t border-border bg-surface px-3 py-2 sm:px-6`,onDrop:ke,onDragOver:e=>e.preventDefault(),onDragEnter:Ae,onDragLeave:je,"data-testid":`composer`,children:[x?(0,K.jsxs)(`div`,{className:`pointer-events-none absolute inset-1 z-10 flex items-center justify-center rounded-xl border-2 border-dashed border-accent bg-accent-soft/70 text-sm font-medium text-accent`,"data-testid":`drop-overlay`,children:[(0,K.jsx)(Y.Upload,{className:`mr-2 w-4 h-4`}),` Drop files to attach`]}):null,(0,K.jsxs)(`div`,{className:`w-full`,children:[s&&e.toolInstalls[s]?(0,K.jsx)(CR,{frame:e.toolInstalls[s],onDismiss:()=>n({type:`tool_install_dismiss`,sessionId:s})}):null,(0,K.jsx)(cR,{}),Pe.length>0?(0,K.jsx)(`div`,{className:`mb-2 max-h-[45vh] space-y-2 overflow-y-auto`,"data-testid":`composer-pending`,children:Pe.map(e=>(0,K.jsx)(eB,{item:e,onDecide:n=>t.respondPermission(e.request.requestId,n,s??void 0)},e.id))}):null,Ne.map((e,n)=>(0,K.jsx)(eB,{item:e,stackIndex:n,onDecide:n=>t.respondPermission(e.request.requestId,n,s??void 0)},e.id)),Re&&!Ie?(0,K.jsxs)(`div`,{className:`mb-2 flex items-center gap-2 rounded-md bg-surface-2 px-2.5 py-1.5 text-[11px] text-fg-muted`,"data-testid":`idle-cache-hint`,children:[(0,K.jsx)(`span`,{className:`inline-block h-1.5 w-1.5 shrink-0 rounded-full bg-fg-faint`}),Re]}):null,Ie?(0,K.jsxs)(`div`,{className:`mb-2 flex items-center gap-2 rounded-md bg-surface-2 px-2.5 py-1.5 text-[11px] text-fg-muted`,"data-testid":`pacing-hint`,"data-lane":Fe??void 0,children:[(0,K.jsx)(`span`,{className:`inline-block h-1.5 w-1.5 shrink-0 animate-pulse rounded-full bg-warn`}),Ie]}):null,!re&&s?(0,K.jsx)(`div`,{className:`mb-2 text-xs text-fg-faint`,children:e.connection.status===`unauthorized`?`The host rejected this token.`:`Not connected to the host — messages will be sent over HTTP when possible.`}):null,m.length>0?(0,K.jsx)(`div`,{className:`mb-2 flex flex-col gap-1`,"data-testid":`reply-chips`,children:m.map(e=>(0,K.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border-l-2 border-accent bg-accent-soft/60 py-1 pl-2 pr-1 text-xs`,"data-testid":`reply-chip`,children:[(0,K.jsx)(Y.Reply,{className:`h-3.5 w-3.5 shrink-0 text-accent`}),(0,K.jsxs)(`button`,{type:`button`,className:`min-w-0 flex-1 truncate text-left text-fg-muted hover:text-fg`,title:`Go to the message this replies to`,disabled:!e.itemId||!s,onClick:()=>{e.itemId&&s&&t.jumpToItem(s,e.itemId)},"data-testid":`reply-chip-jump`,children:[(0,K.jsx)(`span`,{className:`text-fg`,children:`Reply to `}),e.preview]}),(0,K.jsx)(`button`,{type:`button`,"aria-label":`Remove this reply`,onClick:()=>h(t=>t.filter(t=>t.id!==e.id)),className:`flex h-5 w-5 shrink-0 items-center justify-center rounded-full text-fg-muted hover:text-danger`,"data-testid":`reply-chip-remove`,children:(0,K.jsx)(Y.X,{className:`h-3 w-3`})})]},e.id))}):null,f.length>0?(0,K.jsxs)(`div`,{className:`mb-2 flex flex-wrap gap-2`,"data-testid":`attachments`,children:[f.map(e=>(0,K.jsxs)(`div`,{className:`relative`,children:[e.kind===`image`?(0,K.jsx)(`button`,{type:`button`,"aria-label":`View ${e.name}`,title:`View ${e.name}`,"data-testid":`attachment-thumb`,onClick:()=>O({name:e.name,mediaType:e.mediaType,base64:e.data}),className:`block cursor-zoom-in rounded p-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:(0,K.jsx)(`img`,{src:`data:${e.mediaType};base64,${e.data}`,alt:e.name,className:`h-14 w-14 rounded border border-border object-cover`})}):(0,K.jsxs)(`button`,{type:`button`,"aria-label":`Open ${e.name}`,title:e.kind===`path`?`Open ${e.name} — ${e.path??``}`:`Open ${e.name} in its own program`,"data-testid":e.kind===`path`?`attachment-path`:`attachment-file`,onClick:()=>k(e),className:`flex h-14 min-w-[7rem] max-w-[12rem] flex-col justify-center rounded border border-border bg-surface-2 px-2 text-left text-[11px] hover:bg-surface-3 focus:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:[(0,K.jsx)(`span`,{className:`truncate font-medium`,children:Y_(e.name,22)}),(0,K.jsx)(`span`,{className:`text-fg-faint`,children:e.kind===`document`?`PDF · ${Math.ceil(e.size/1024)} KB`:e.kind===`path`?`${e.mediaType.startsWith(`video/`)?`video`:e.mediaType.startsWith(`audio/`)?`audio`:`file`} · ${oB(e.size)} · path`:`text · ${Math.ceil(e.size/1024)} KB`})]}),(0,K.jsx)(`button`,{type:`button`,"aria-label":`Remove ${e.name}`,onClick:()=>p(t=>t.filter(t=>t.id!==e.id)),className:`absolute -right-1.5 -top-1.5 flex h-5 w-5 items-center justify-center rounded-full border border-border bg-surface text-fg-muted hover:text-danger`,children:(0,K.jsx)(Y.X,{className:`w-3 h-3`})})]},e.id)),(0,K.jsx)(pz,{picture:D,onClose:()=>O(null),notify:t.toast})]}):null,R?(0,K.jsxs)(`p`,{className:`px-1 text-xs text-danger`,role:`status`,"data-testid":`model-withdrawn`,children:[R,` is no longer available. Pick another model below to continue this chat — its history stays.`]}):null,(0,K.jsxs)(`div`,{className:G(`relative flex flex-col gap-1 rounded-xl border bg-bg px-2 py-1.5`,z?`border-border opacity-60`:`border-border`),children:[(0,K.jsx)(SB,{menu:xe,onPick:e=>be(xe.textFor(e)),modelSkills:(a?a.modelSkills:i?.modelSkills)??null}),(0,K.jsx)(`textarea`,{ref:C,"aria-label":`Message`,rows:1,value:u,"aria-controls":xe.open?vB:void 0,"aria-activedescendant":xe.open&&xe.items.length>0?yB(xe.active):void 0,disabled:z,placeholder:de,onChange:e=>d(e.target.value),onKeyDown:De,onPaste:Oe,className:`max-h-60 min-h-[2.25rem] w-full resize-none bg-transparent px-1 py-1.5 text-sm outline-none placeholder:text-fg-faint`}),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-1.5 gap-y-1`,"data-testid":`composer-controls`,children:[(0,K.jsx)(`input`,{ref:w,type:`file`,multiple:!0,className:`hidden`,onChange:Me,"data-testid":`file-input`}),(0,K.jsx)(US,{label:`Attach files or images`,disabled:z,onClick:()=>w.current?.click(),children:(0,K.jsx)(Y.Upload,{className:`w-4 h-4`})}),(0,K.jsx)(Rw,{disabled:!s||L}),(0,K.jsx)(UI,{disabled:z}),(0,K.jsx)(qI,{disabled:z}),(0,K.jsx)(rL,{disabled:z}),(0,K.jsx)(CL,{}),(0,K.jsx)(DL,{}),(0,K.jsx)(oR,{}),(0,K.jsx)(fR,{disabled:z}),i&&!L?(0,K.jsx)(US,{label:`Listen to this chat — a spoken summary`,"data-testid":`listen-button`,onClick:()=>t.openVoiceSummary(i.id),children:(0,K.jsx)(Y.Speaker,{className:`w-4 h-4`})}):null,i&&!L&&!e.remote.tabs[i.id]?(0,K.jsx)(pR,{sessionId:i.id,running:ne,onPutInBox:Ce,onSend:Te}):null,ie?(0,K.jsxs)(`select`,{"aria-label":`Agent`,"data-testid":`agent-picker`,className:EB,value:y,disabled:z,title:me?Fh:void 0,onChange:e=>{let n=e.target.value;N(n)&&(b(n),t.setSessionPosture(n,s??void 0))},children:[he.map(e=>(0,K.jsx)(`option`,{value:e.id,children:e.label},e.id)),he.some(e=>e.id===y)?null:(0,K.jsx)(`option`,{value:y,disabled:!0,children:P(y)})]}):null,ie&&me?(0,K.jsx)(`span`,{className:`inline-flex`,"data-testid":`agy-posture-note`,children:(0,K.jsx)(WS,{label:`the agent picker`,details:Fh})}):null,le?(0,K.jsxs)(`select`,{"aria-label":`Effort`,className:EB,value:se,disabled:z,title:ae?`This model's default effort is ${ae}; it runs at that until you pick another`:void 0,onChange:e=>{let n=e.target.value;_(n),t.setSessionEffort(n||null,s??void 0)},children:[ae?null:(0,K.jsx)(`option`,{value:``,children:`effort: default`}),oe.map(e=>(0,K.jsxs)(`option`,{value:e,children:[`effort: `,e,e===ae?` (default)`:``]},e))]}):null,(0,K.jsxs)(`div`,{className:`ml-auto flex shrink-0 items-center gap-1.5`,"data-testid":`composer-actions`,children:[ne?(0,K.jsxs)(X,{variant:`danger`,size:`sm`,onClick:()=>void t.interrupt(s??void 0),title:`Interrupt (Esc)`,"aria-label":`Interrupt`,"data-testid":`stop-button`,children:[(0,K.jsx)(Y.Stop,{className:`w-3.5 h-3.5`}),` Stop`]}):null,(0,K.jsxs)(X,{variant:`primary`,size:`sm`,onMouseDown:e=>e.preventDefault(),onClick:Se,disabled:z||!u.trim()&&f.length===0,"aria-label":ne?`Queue message`:`Send`,title:ne?`Queue this message — the agent reads it at its next step`:void 0,children:[(0,K.jsx)(Y.Send,{className:`w-3.5 h-3.5`}),` `,ne?`Queue`:`Send`]})]})]})]}),xe.open?null:(0,K.jsx)(TB,{item:xe.inArguments}),o&&o.totals.turns>0?(0,K.jsxs)(`div`,{className:`mt-1 text-right text-[11px] text-fg-faint`,children:[o.totals.turns,` turn`,o.totals.turns===1?``:`s`,` ·`,` `,i?.providerId===`oonacode`?Ju(i.poolCredits??0):Zu(Qu(e.providers.find(e=>e.definition.id===i?.providerId)?.definition))]}):null]})]})}function FB({name:e,state:t,behind:n,detail:r}){return(0,K.jsxs)(`div`,{"data-testid":`sync-side`,className:`min-w-0 flex-1 rounded-md border p-3 ${n?`border-warn bg-warn-soft/40`:`border-border bg-surface-2`}`,children:[(0,K.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 text-sm font-medium`,children:[(0,K.jsx)(`span`,{className:`min-w-0 truncate`,children:e}),n?(0,K.jsx)(`span`,{className:`shrink-0 text-[11px] font-normal text-warn`,children:`behind`}):null]}),(0,K.jsx)(`div`,{className:`mt-1 text-[11px] text-fg-faint`,children:t.entryCount===null?`size not read`:`${t.entryCount} ${t.entryCount===1?`entry`:`entries`}`}),(0,K.jsx)(`div`,{className:`text-[11px] text-fg-faint`,title:K_(t.lastEntryAt),children:t.lastEntryAt?`last message ${W_(t.lastEntryAt)}`:`no timestamps`}),r?(0,K.jsx)(`div`,{className:`mt-1 break-all text-[11px] text-fg-faint`,children:r}):null]})}function IB({sessionId:e,sessionTitle:t,onClose:n}){let{actions:r}=q(),[i,a]=(0,v.useState)(null),[o,s]=(0,v.useState)(!1),[c,l]=(0,v.useState)(!1),[u,d]=(0,v.useState)(null),f=(0,v.useCallback)(async()=>{if(e){s(!0);try{a(await r.refreshSessionLink(e))}finally{s(!1)}}},[e,r]);(0,v.useEffect)(()=>{d(null),a(null),f()},[f]);let p=async()=>{if(e){l(!0);try{let t=await r.syncSessionDown(e);d(t),t&&a(t.link)}finally{l(!1)}}},m=i?.status===`ours-behind`,h=i?.status===`theirs-behind`;return(0,K.jsx)(JS,{open:e!==null,title:`Sync with the original chat`,onClose:n,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(X,{variant:`ghost`,onClick:n,children:`Close`}),(0,K.jsx)(X,{variant:`primary`,busy:c,onClick:()=>void p(),disabled:!i?.canDownstream||o,"data-testid":`sync-down-confirm`,children:c?`Syncing…`:m?`Bring the new messages in`:`Check again`})]}),children:o&&!i?(0,K.jsxs)(`div`,{className:`flex items-center gap-2 py-6 text-sm text-fg-muted`,children:[(0,K.jsx)(Y.Spinner,{className:`w-4 h-4 spin`}),` Reading the original…`]}):i?(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row`,children:[(0,K.jsx)(FB,{name:`OonaCode · ${t}`,state:i.ours,behind:m}),(0,K.jsx)(FB,{name:i.agentName,state:i.theirs,behind:h,detail:i.file})]}),(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,"data-testid":`sync-explanation`,children:m?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`strong`,{children:[i.agentName,` has newer messages.`]}),` Bringing them in adds them to this chat — nothing here is replaced or removed, and `,i.agentName,` is not written to.`]}):h?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`strong`,{children:`This chat is the newer one.`}),` Nothing is sent back: OonaCode never writes into your `,i.agentName,` install, so the copy over there stays as it is.`]}):(0,K.jsx)(K.Fragment,{children:`Both copies are at the same point. There is nothing to bring in.`})}),u?(0,K.jsx)(`div`,{className:`rounded-md border border-border bg-surface-2 p-3 text-sm`,"data-testid":`sync-result`,children:u.added>0?`${u.added} new ${u.added===1?`message`:`messages`} added to this chat.`:`Already up to date — nothing to bring in.`}):null]}):(0,K.jsx)(`p`,{className:`py-4 text-sm text-fg-muted`,children:`This PC no longer has the chat this one was imported from, so there is nothing to compare it with. Nothing is wrong with the chat itself — it stays exactly as it is.`})})}function LB({mark:e,testId:t,className:n}){let r=yb(e);return(0,K.jsx)(`span`,{role:`img`,"aria-label":r,title:r,className:G(`inline-block h-2 w-2 shrink-0 rounded-full`,e.isError?`bg-danger`:`bg-accent`,n),"data-testid":t,"data-error":e.isError?`true`:void 0})}function RB({status:e}){return(0,K.jsx)(`span`,{className:G(`inline-block h-2 w-2 shrink-0 rounded-full`,e===`running`?`bg-accent animate-pulse`:e===`waiting_permission`?`bg-warn animate-pulse`:e===`error`?`bg-danger`:`bg-transparent`),"aria-hidden":!0})}function zB(e){return e.some(e=>e.status===`running`)?`running`:e.some(e=>e.status===`waiting_permission`)?`waiting_permission`:`idle`}function BB({sessions:e,testId:t}){let n=zB(e);if(n===`idle`)return null;let r=e.filter(e=>e.status===`running`||e.status===`waiting_permission`).length;return(0,K.jsx)(`span`,{className:`inline-flex shrink-0 items-center`,title:n===`running`?`${r} chat${r===1?``:`s`} working`:`${r} chat${r===1?``:`s`} waiting for permission`,"aria-label":`${r} active chat${r===1?``:`s`}`,"data-testid":t,children:(0,K.jsx)(RB,{status:n})})}var VB={idle:`idle`,running:`working`,waiting_permission:`waiting for permission`,error:`error`};function HB({label:e,value:t}){return t==null||t===``?null:(0,K.jsxs)(`div`,{className:`flex justify-between gap-3`,children:[(0,K.jsx)(`span`,{className:`shrink-0 text-fg-faint`,children:e}),(0,K.jsx)(`span`,{className:`min-w-0 truncate text-right text-fg`,title:t,children:t})]})}function UB({session:e,anchor:t}){let{state:n}=q(),r=n.providers.find(t=>t.definition.id===e.providerId)?.definition,i=r?.models.find(t=>t.id===e.model),a=e.projectId?n.vaultProjects.find(t=>t.id===e.projectId):void 0,o=e.startedBy?n.sessions.find(t=>t.id===e.startedBy):void 0,s=te(e),c=ee(s)===e.permissionMode?P(s):DB.find(t=>t.value===e.permissionMode)?.label??e.permissionMode,l=$u(e,Qu(r)),u=Math.max(8,Math.min(t.right+8,window.innerWidth-304-8)),d=Math.max(8,Math.min(t.top,window.innerHeight-360));return(0,RS.createPortal)((0,K.jsxs)(`div`,{role:`tooltip`,"data-testid":`session-details-${e.id}`,className:`fixed z-50 max-h-[22rem] w-[19rem] overflow-y-auto rounded-lg border border-border bg-surface p-3 text-xs shadow-lg`,style:{left:u,top:d},children:[(0,K.jsx)(`div`,{className:`mb-2 truncate text-sm font-medium text-fg`,children:Q_(e)}),(0,K.jsxs)(`div`,{className:`space-y-1`,children:[(0,K.jsx)(HB,{label:`Model`,value:r&&e.model?`${e.model} · ${r.displayName}`:e.model}),(0,K.jsx)(HB,{label:`Effort`,value:e.effort??`default`}),(0,K.jsx)(HB,{label:`Mode`,value:c}),(0,K.jsx)(HB,{label:`Status`,value:VB[e.status]}),(0,K.jsx)(HB,{label:`Context window`,value:i?.contextWindow?`${U_(i.contextWindow)} tokens`:null}),(0,K.jsx)(HB,{label:`Tokens`,value:`${U_(e.inputTokens)} in · ${U_(e.outputTokens)} out`}),(0,K.jsx)(HB,{label:`Cost`,value:l}),(0,K.jsx)(HB,{label:`Messages`,value:String(e.entryCount)}),(0,K.jsx)(HB,{label:`Folder`,value:e.projectDir??e.cwd}),(0,K.jsx)(HB,{label:`Project`,value:a?.name??null}),(0,K.jsx)(HB,{label:`Created`,value:K_(e.createdAt)}),(0,K.jsx)(HB,{label:`Updated`,value:K_(e.updatedAt)}),(0,K.jsx)(HB,{label:`Forked from`,value:e.forkedFrom}),(0,K.jsx)(HB,{label:`Started by`,value:o?Q_(o):e.startedBy}),(0,K.jsx)(HB,{label:`Temporary`,value:e.temporary?`yes — safe to delete when done`:null}),(0,K.jsx)(HB,{label:`Subagents`,value:e.hasSubagents?`yes`:null}),(0,K.jsx)(HB,{label:`Engine since`,value:K_(e.engineSince)})]})]}),document.body)}function WB({link:e}){return e?.status===`ours-behind`?(0,K.jsxs)(`span`,{className:`ml-1 inline-flex shrink-0 items-center gap-0.5 rounded bg-warn-soft px-1 text-[10px] font-medium leading-4 text-warn`,title:`${e.agentName} has newer messages in this chat — right-click to bring them in`,"data-testid":`session-behind-${e.sessionId}`,"aria-label":`behind its original`,children:[(0,K.jsx)(Y.ArrowDown,{className:`w-2.5 h-2.5`}),`behind`]}):null}function GB({session:e}){return!e.startedBy&&!e.temporary?null:(0,K.jsxs)(K.Fragment,{children:[e.startedBy?(0,K.jsx)(`span`,{className:`ml-1 shrink-0 text-fg-faint`,title:`Started by another chat — rest the pointer on the chat for its name`,"data-testid":`session-started-${e.id}`,children:`· started by a chat`}):null,e.temporary?(0,K.jsx)(`span`,{className:`ml-1 inline-flex shrink-0 items-center rounded bg-surface-2 px-1 text-[10px] font-medium leading-4 text-fg-muted`,title:`Temporary: the model marked this chat throwaway — delete it from its menu when done`,"data-testid":`session-temporary-${e.id}`,children:`temporary`}):null]})}var KB=(0,v.memo)(function({session:e,active:t,link:n,onOpen:r,onMenu:i,menuOpen:a=!1,projectName:o=null,kindIcon:s=!1,testIdPrefix:c=`session`,clock:l}){let u=Q_(e),d=t=>{let n=t.currentTarget.getBoundingClientRect();i(e,{x:n.left,y:n.bottom+2},f.current)},f=(0,v.useRef)(null),p=(0,v.useRef)(null),[m,h]=(0,v.useState)(null),g=(0,v.useCallback)(()=>{p.current!==null&&(clearTimeout(p.current),p.current=null),h(null)},[]),_=(0,v.useRef)(a);return _.current=a,(0,v.useEffect)(()=>{a&&g()},[a,g]),(0,v.useEffect)(()=>{if(m===null)return;let e=e=>{nw(e.target,f.current)&&g()};return window.addEventListener(`scroll`,e,!0),()=>window.removeEventListener(`scroll`,e,!0)},[m,g]),(0,v.useEffect)(()=>()=>{p.current!==null&&clearTimeout(p.current)},[]),(0,K.jsxs)(`div`,{ref:f,className:G(`group relative flex items-center rounded-md`,t?`bg-accent-soft`:`hover:bg-surface-2`),onMouseEnter:()=>{p.current!==null&&clearTimeout(p.current),!_.current&&(p.current=setTimeout(()=>{p.current=null,f.current&&!_.current&&h(f.current.getBoundingClientRect())},450))},onMouseLeave:g,onClick:g,onContextMenu:t=>{t.preventDefault(),g(),i(e,{x:t.clientX,y:t.clientY},f.current)},children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>r(e.id),className:`flex min-w-0 flex-1 items-center gap-2 px-2 py-1.5 text-left`,"aria-current":t?`true`:void 0,"data-testid":`${c}-${e.id}`,children:[s?(0,K.jsx)(Y.Chats,{className:`w-3.5 h-3.5 shrink-0 text-fg-faint`}):null,e.finishedUnseen&&!t&&e.status!==`running`&&e.status!==`waiting_permission`?(0,K.jsx)(LB,{mark:e.finishedUnseen,testId:`${c}-finished-${e.id}`}):s&&e.status===`idle`?null:(0,K.jsx)(RB,{status:e.status}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`div`,{className:`flex items-center gap-1`,children:(0,K.jsx)(`span`,{className:G(`min-w-0 flex-1 truncate text-sm`,t?`text-fg font-medium`:`text-fg`),children:u})}),(0,K.jsxs)(`div`,{className:`flex min-w-0 items-center text-[11px] text-fg-faint`,children:[o?(0,K.jsxs)(`span`,{className:`mr-1 inline-flex min-w-0 max-w-[45%] shrink-0 items-center gap-0.5 text-project`,"data-testid":`session-project-${e.id}`,title:`Filed under ${o}`,children:[(0,K.jsx)(Y.Project,{className:`w-2.5 h-2.5 shrink-0`}),(0,K.jsx)(`span`,{className:`truncate`,children:o}),(0,K.jsx)(`span`,{className:`text-fg-faint`,children:`·`})]}):null,(0,K.jsxs)(`span`,{className:`truncate`,children:[W_(e.updatedAt,l),e.model?` · ${e.model}`:``,` · ${J_(e.projectDir??e.cwd)}`]}),(0,K.jsx)(WB,{link:n}),(0,K.jsx)(GB,{session:e})]})]})]}),(0,K.jsx)(US,{label:`Chat actions`,className:`pointer-events-none absolute right-1 bg-surface/90 p-1 opacity-0 group-focus-within:pointer-events-auto group-focus-within:opacity-100 group-hover:pointer-events-auto group-hover:opacity-100`,"data-testid":`${c}-menu-${e.id}`,onClick:e=>{e.stopPropagation(),d(e)},children:(0,K.jsx)(Y.More,{className:`w-3.5 h-3.5`})}),m===null?null:(0,K.jsx)(UB,{session:e,anchor:m})]})});function qB({session:e,link:t,pinned:n,actions:r,onSync:i,onRename:a,onDelete:o}){let s=[];return t?.status===`ours-behind`&&s.push({key:`sync`,label:`Sync with ${t.agentName}…`,hint:`behind`,icon:(0,K.jsx)(Y.Download,{className:`w-3.5 h-3.5`}),onSelect:i,testId:`session-menu-sync`}),s.push({key:`pin`,label:n?`Unpin`:`Pin to top`,icon:(0,K.jsx)(Y.Pin,{className:`w-3.5 h-3.5`}),separated:s.length>0,onSelect:()=>r.setPinned(`chat`,e.id,!n),testId:`session-menu-pin`},{key:`project`,label:`Move to Project`,icon:(0,K.jsx)(Y.Project,{className:`w-3.5 h-3.5`}),onSelect:()=>r.openAssignProject(e.id),testId:`session-menu-project`},...e.projectId?[{key:`project-settings`,label:`Project settings…`,icon:(0,K.jsx)(Y.Settings,{className:`w-3.5 h-3.5`}),onSelect:()=>r.openProjectSettings(e.projectId),testId:`session-menu-project-settings`}]:[],{key:`folder`,label:`Change folder…`,icon:(0,K.jsx)(Y.Folder,{className:`w-3.5 h-3.5`}),onSelect:()=>{r.selectSession(e.id),r.openDialog(`project`)},testId:`session-menu-folder`},{key:`details`,label:`Details`,icon:(0,K.jsx)(Y.Info,{className:`w-3.5 h-3.5`}),onSelect:()=>{r.selectSession(e.id),r.savePrefs({sessionPanelOpen:!0})},testId:`session-menu-details`},{key:`listen`,label:`Listen to this chat…`,icon:(0,K.jsx)(Y.Speaker,{className:`w-3.5 h-3.5`}),onSelect:()=>r.openVoiceSummary(e.id),testId:`session-menu-listen`},{key:`files`,label:`Files`,icon:(0,K.jsx)(Y.File,{className:`w-3.5 h-3.5`}),onSelect:()=>{r.selectSession(e.id),r.savePrefs({explorerOpen:!0})},testId:`session-menu-files`},{key:`rename`,label:`Rename…`,icon:(0,K.jsx)(Y.Edit,{className:`w-3.5 h-3.5`}),onSelect:a,testId:`session-menu-rename`},{key:`fork`,label:`Fork`,icon:(0,K.jsx)(Y.Fork,{className:`w-3.5 h-3.5`}),onSelect:()=>void r.forkSession(e.id),testId:`session-menu-fork`},{key:`delete`,label:`Delete`,icon:(0,K.jsx)(Y.Trash,{className:`w-3.5 h-3.5`}),danger:!0,separated:!0,onSelect:o,testId:`session-menu-delete`}),s}function JB(){let{state:e,actions:t}=q(),[n,r]=(0,v.useState)(null),[i,a]=(0,v.useState)(null),[o,s]=(0,v.useState)(null),[c,l]=(0,v.useState)(null),u=(0,v.useCallback)((e,t,n)=>r({session:e,at:t,el:n}),[]),d=(0,v.useCallback)(()=>r(null),[]),f=(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(iw,{open:n!==null,at:n?.at??{x:0,y:0},anchorEl:n?.el??null,label:`Chat actions`,onClose:d,items:n?qB({session:n.session,link:e.sessionLinks[n.session.id]??null,pinned:Al(e.prefs.pinned,`chat`,n.session.id),actions:t,onSync:()=>a(n.session),onRename:()=>s(n.session),onDelete:()=>l(n.session)}):[]}),(0,K.jsx)(IB,{sessionId:i?.id??null,sessionTitle:i?Q_(i):``,onClose:()=>a(null)}),(0,K.jsx)(QS,{open:c!==null,title:`Delete this chat?`,message:`It is deleted from this PC — the only place it is kept — so it is gone from every device. Your files, folder and code are not touched — only the chat is deleted.`,onConfirm:()=>{c&&t.deleteSession(c.id)},onClose:()=>l(null)}),(0,K.jsx)($S,{open:o!==null,title:`Rename chat`,label:`Session title`,initialValue:o?Q_(o):``,onSubmit:e=>{o&&e!==Q_(o)&&t.renameSession(o.id,e)},onClose:()=>s(null)})]});return{openMenu:u,menuFor:n?.session.id??null,element:f}}function YB({projectId:e,pinned:t,fold:n,actions:r}){let i=[];return e?i.push({key:`open`,label:`Open project`,icon:(0,K.jsx)(Y.Project,{className:`w-3.5 h-3.5`}),onSelect:()=>r.openPage({kind:`project`,projectId:e}),testId:`project-menu-open`},{key:`settings`,label:`Project settings…`,icon:(0,K.jsx)(Y.Settings,{className:`w-3.5 h-3.5`}),onSelect:()=>r.openProjectSettings(e),testId:`project-menu-settings`},{key:`new-chat`,label:`New chat in this project`,icon:(0,K.jsx)(Y.Plus,{className:`w-3.5 h-3.5`}),onSelect:()=>r.newTab({projectId:e}),testId:`project-menu-new-chat`},{key:`pin`,label:t?`Unpin`:`Pin to top`,icon:(0,K.jsx)(Y.Pin,{className:`w-3.5 h-3.5`}),onSelect:()=>r.setPinned(`project`,e,!t),testId:`project-menu-pin`}):i.push({key:`new-project`,label:`New project…`,icon:(0,K.jsx)(Y.Project,{className:`w-3.5 h-3.5`}),onSelect:()=>r.openNewProject(),testId:`project-menu-new-project`}),n&&i.push({key:`fold`,label:n.collapsed?`Expand`:`Collapse`,icon:(0,K.jsx)(Y.Chevron,{open:n.collapsed,className:`w-3.5 h-3.5`}),separated:!0,onSelect:n.onToggle,testId:`project-menu-fold`}),i}var XB=[{value:`activity`,label:`Recent activity`},{value:`name`,label:`Name`},{value:`created`,label:`Date created`}];function ZB(e){let t=e.goal?.trim()??``;return t===``?(e.instructions??``).split(/\r?\n/).find(e=>e.trim()!==``)?.trim()??``:t}function QB(e,t){let n=new Map;for(let e of t){if(!e.projectId)continue;let t=n.get(e.projectId);t?t.push(e):n.set(e.projectId,[e])}return e.map(e=>{let t=n.get(e.id)??[],r=t.reduce((e,t)=>Math.max(e,t.mtime),-1/0),i=Date.parse(e.updatedAt);return{project:e,description:ZB(e),chatCount:e.sessionCount??t.length,working:t.filter(e=>e.status===`running`||e.status===`waiting_permission`).length,lastActivity:Number.isFinite(r)?r:Number.isFinite(i)?i:0}})}function $B(e,t){let n=t.trim().toLowerCase();return n===``?e.slice():e.filter(({project:e})=>[e.name,e.goal??``,e.instructions??``].some(e=>e.toLowerCase().includes(n)))}var eV=(e,t)=>e.project.name.localeCompare(t.project.name,void 0,{sensitivity:`base`});function tV(e,t){let n=e.slice();return t===`name`?n.sort(eV):t===`created`?n.sort((e,t)=>(Date.parse(t.project.createdAt)||0)-(Date.parse(e.project.createdAt)||0)||eV(e,t)):n.sort((e,t)=>t.lastActivity-e.lastActivity||eV(e,t))}function nV(){let{state:e,actions:t}=q(),n=e.scheduledTasksVersion,[r,i]=(0,v.useState)(null),[a,o]=(0,v.useState)(0);return(0,v.useEffect)(()=>{let e=!0;return t.listScheduledTasks({}).then(t=>{e&&i(t)}),()=>{e=!1}},[t,n,a]),{tasks:r,reload:(0,v.useCallback)(()=>o(e=>e+1),[])}}function rV(){let[e,t]=(0,v.useState)(()=>Date.now());return(0,v.useEffect)(()=>{let e=setInterval(()=>t(Date.now()),6e4);return()=>clearInterval(e)},[]),e}function iV(e){return e===1?`1 chat`:`${e} chats`}function aV({card:e,pinned:t,actions:n,onDelete:r}){let i=e.chatCount;return[...YB({projectId:e.project.id,pinned:t,fold:null,actions:n}),{key:`delete`,label:`Delete project`,icon:(0,K.jsx)(Y.Trash,{className:`w-3.5 h-3.5`}),danger:!0,separated:!0,disabled:i>0,...i>0?{hint:`${iV(i)} in it`}:{},onSelect:r,testId:`project-card-delete`}]}function oV(){let{state:e,actions:t}=q(),n=rV(),[r,i]=(0,v.useState)(``),[a,o]=(0,v.useState)(!1),[s,c]=(0,v.useState)(`activity`),[l,u]=(0,v.useState)(null),d=(0,v.useCallback)(()=>u(null),[]),[f,p]=(0,v.useState)(null),m=(0,v.useCallback)(()=>p(null),[]),[h,g]=(0,v.useState)(null),_=(0,v.useRef)(null),y=(0,v.useMemo)(()=>QB(e.vaultProjects,e.sessions),[e.vaultProjects,e.sessions]),b=(0,v.useMemo)(()=>tV($B(y,r),s),[y,r,s]),x=e=>t.openPage({kind:`project`,projectId:e}),S=(e,t,n)=>p({card:e,at:t,el:n});return(0,K.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto bg-bg`,"data-testid":`projects-page`,children:[(0,K.jsxs)(`div`,{className:`mx-auto w-full max-w-5xl px-4 py-6 sm:px-8`,children:[(0,K.jsxs)(`div`,{className:`mb-5 flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(`h1`,{className:`mr-auto text-2xl font-semibold text-fg`,children:`Projects`}),a||r!==``?(0,K.jsx)(`input`,{ref:_,autoFocus:!0,"aria-label":`Search projects`,className:G(Z,`w-56`),placeholder:`Search projects`,value:r,onChange:e=>i(e.target.value),onBlur:()=>{r===``&&o(!1)},onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),i(``),o(!1))},"data-testid":`projects-search`}):null,(0,K.jsx)(US,{label:`Search projects — by name, goal and instructions`,onClick:()=>{o(!0),_.current?.focus()},"data-testid":`projects-search-toggle`,children:(0,K.jsx)(Y.Search,{})}),(0,K.jsx)(US,{label:`Sort — ${XB.find(e=>e.value===s)?.label??``}`,"aria-haspopup":`menu`,onClick:e=>{let t=e.currentTarget.getBoundingClientRect();u({at:{x:t.left,y:t.bottom+2},el:e.currentTarget})},"data-testid":`projects-sort`,children:(0,K.jsx)(Y.Sliders,{})}),(0,K.jsxs)(X,{variant:`inverse`,onClick:()=>t.openNewProject(),"data-testid":`projects-new`,children:[(0,K.jsx)(Y.Plus,{className:`w-3.5 h-3.5`}),`New project`]})]}),e.vaultProjects.length===0?(0,K.jsx)(ZS,{icon:(0,K.jsx)(Y.Project,{className:`h-8 w-8`}),title:`No projects yet`,hint:`A project groups chats, whatever folders they run in, and gives every chat in it the same standing instructions, goal and memory. Projects live in your vault, so they follow you to every PC.`,action:(0,K.jsxs)(X,{variant:`primary`,onClick:()=>t.openNewProject(),children:[(0,K.jsx)(Y.Plus,{className:`w-3.5 h-3.5`}),`New project`]})}):b.length===0?(0,K.jsxs)(`p`,{className:`py-10 text-center text-sm text-fg-muted`,"data-testid":`projects-no-match`,children:[`No project matches “`,r.trim(),`”.`]}):(0,K.jsx)(`div`,{className:`grid grid-cols-1 gap-3 md:grid-cols-2 2xl:grid-cols-3`,"data-testid":`projects-grid`,children:b.map(t=>(0,K.jsx)(sV,{card:t,clock:n,pinned:Al(e.prefs.pinned,`project`,t.project.id),onOpen:x,onMenu:S},t.project.id))})]}),(0,K.jsx)(iw,{open:l!==null,at:l?.at??{x:0,y:0},anchorEl:l?.el??null,label:`Sort projects`,testId:`projects-sort-menu`,onClose:d,items:XB.map(e=>({key:e.value,label:e.label,icon:e.value===s?(0,K.jsx)(Y.Check,{className:`w-3.5 h-3.5 text-accent`}):(0,K.jsx)(`span`,{className:`w-3.5`}),onSelect:()=>c(e.value),testId:`projects-sort-${e.value}`}))}),(0,K.jsx)(iw,{open:f!==null,at:f?.at??{x:0,y:0},anchorEl:f?.el??null,label:`Project actions`,testId:`project-card-menu`,onClose:m,items:f?aV({card:f.card,pinned:Al(e.prefs.pinned,`project`,f.card.project.id),actions:t,onDelete:()=>g(f.card.project)}):[]}),(0,K.jsx)(QS,{open:h!==null,title:h?`Delete ${h.name}?`:`Delete this project?`,message:`Its instructions, goal, memory and settings are removed from your vault, on every device. No chat is filed under it, so no chat changes.`,onConfirm:()=>{h&&t.deleteVaultProject(h.id)},onClose:()=>g(null)})]})}function sV({card:e,clock:t,pinned:n,onOpen:r,onMenu:i}){let{project:a}=e,o=(0,v.useRef)(null);return(0,K.jsxs)(`div`,{ref:o,className:`group relative rounded-xl border border-border bg-surface transition-colors hover:border-fg-faint hover:bg-surface-2/40`,"data-testid":`project-card-${a.id}`,onContextMenu:t=>{t.preventDefault(),o.current&&i(e,{x:t.clientX,y:t.clientY},o.current)},children:[(0,K.jsxs)(`button`,{type:`button`,className:`flex h-full min-h-[7.5rem] w-full flex-col items-start gap-1 p-4 text-left`,onClick:()=>r(a.id),"data-testid":`project-card-open-${a.id}`,children:[(0,K.jsxs)(`span`,{className:`flex w-full min-w-0 items-center gap-2 pr-7`,children:[(0,K.jsx)(Y.Project,{className:`w-4 h-4 shrink-0 text-project`}),(0,K.jsx)(`span`,{className:`min-w-0 truncate text-[15px] font-medium text-fg`,children:a.name}),n?(0,K.jsx)(Y.Pin,{className:`w-3 h-3 shrink-0 text-fg-faint`,title:`Pinned to the top of the session list`}):null]}),e.description?(0,K.jsx)(`span`,{className:`line-clamp-2 text-sm text-fg-muted`,"data-testid":`project-card-description`,children:e.description}):null,(0,K.jsxs)(`span`,{className:`mt-auto flex items-center gap-1.5 pt-2 text-xs text-fg-faint`,children:[e.working>0?(0,K.jsx)(`span`,{className:`inline-block h-2 w-2 rounded-full bg-accent animate-pulse`,title:`${e.working} working now`,"aria-hidden":!0}):null,(0,K.jsxs)(`span`,{"data-testid":`project-card-meta`,children:[iV(e.chatCount),e.lastActivity>0?` · ${G_(e.lastActivity,t)}`:``]})]})]}),(0,K.jsx)(US,{label:`Actions for ${a.name}`,className:`absolute right-2 top-2 p-1 opacity-60 group-hover:opacity-100 focus:opacity-100`,onClick:t=>{let n=t.currentTarget.getBoundingClientRect();o.current&&i(e,{x:n.left,y:n.bottom+2},o.current)},"data-testid":`project-card-menu-${a.id}`,children:(0,K.jsx)(Y.More,{className:`w-4 h-4`})})]})}function cV({projectId:e}){let{state:t,actions:n}=q(),r=rV(),i=JB(),a=t.vaultProjects.find(t=>t.id===e)??null,o=(0,v.useMemo)(()=>t.sessions.filter(n=>n.projectId===e&&!t.remote.tabs[n.id]).sort((e,t)=>t.mtime-e.mtime),[t.sessions,t.remote.tabs,e]),s=(0,v.useCallback)(e=>n.selectSession(e),[n]),c=()=>n.openPage({kind:`projects`});if(!a)return(0,K.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto bg-bg`,"data-testid":`project-page`,children:(0,K.jsx)(ZS,{icon:(0,K.jsx)(Y.Project,{className:`h-8 w-8`}),title:`This project is not here`,hint:`It was deleted, or your vault has not loaded it yet.`,action:(0,K.jsx)(X,{onClick:c,"data-testid":`project-page-back`,children:`All projects`})})});let l=Al(t.prefs.pinned,`project`,a.id),u=a.instructions.trim(),d=a.repositories??[],f=a.sessionCount??o.length;return(0,K.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto bg-bg`,"data-testid":`project-page`,children:[(0,K.jsxs)(`div`,{className:`mx-auto w-full max-w-4xl px-4 py-6 sm:px-8`,children:[(0,K.jsxs)(`button`,{type:`button`,className:`mb-3 inline-flex items-center gap-1 text-xs text-fg-muted hover:text-fg`,onClick:c,"data-testid":`project-page-back`,children:[(0,K.jsx)(Y.Chevron,{className:`w-3 h-3 rotate-180`}),`All projects`]}),(0,K.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(Y.Project,{className:`w-5 h-5 shrink-0 text-project`}),(0,K.jsx)(`h1`,{className:`mr-auto min-w-0 truncate text-2xl font-semibold text-fg`,"data-testid":`project-page-name`,children:a.name}),(0,K.jsx)(US,{label:l?`Unpin from the session list`:`Pin to the top of the session list`,"aria-pressed":l,className:l?`text-accent`:void 0,onClick:()=>n.setPinned(`project`,a.id,!l),"data-testid":`project-page-pin`,children:(0,K.jsx)(Y.Pin,{})}),(0,K.jsxs)(X,{variant:`ghost`,onClick:()=>n.openProjectSettings(a.id),"data-testid":`project-page-settings`,children:[(0,K.jsx)(Y.Settings,{className:`w-3.5 h-3.5`}),`Project settings`]}),(0,K.jsxs)(X,{variant:`inverse`,onClick:()=>n.newTab({projectId:a.id}),"data-testid":`project-page-new-chat`,children:[(0,K.jsx)(Y.Plus,{className:`w-3.5 h-3.5`}),`New chat in this project`]})]}),a.goal?.trim()?(0,K.jsx)(`p`,{className:`mb-4 text-sm text-fg-muted`,"data-testid":`project-page-goal`,children:a.goal.trim()}):null,(0,K.jsxs)(`section`,{className:`mb-5 rounded-xl border border-border bg-surface p-4`,children:[(0,K.jsx)(`h2`,{className:`mb-2 text-xs font-semibold uppercase tracking-wide text-fg-faint`,children:`Instructions`}),u?(0,K.jsx)(`div`,{className:`max-h-64 overflow-y-auto whitespace-pre-wrap break-words text-sm text-fg`,"data-testid":`project-page-instructions`,children:u}):(0,K.jsx)(`p`,{className:`text-sm text-fg-faint`,children:`None — chats here start with nothing extra.`}),d.length>0?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`h2`,{className:`mb-1 mt-4 text-xs font-semibold uppercase tracking-wide text-fg-faint`,children:`Repositories`}),(0,K.jsx)(`ul`,{className:`space-y-0.5 text-sm`,"data-testid":`project-page-repositories`,children:d.map(e=>(0,K.jsx)(`li`,{className:`truncate font-mono text-xs text-fg-muted`,children:e},e))})]}):null]}),(0,K.jsxs)(`section`,{children:[(0,K.jsxs)(`h2`,{className:`mb-1 flex items-center gap-2 text-xs font-semibold uppercase tracking-wide text-fg-faint`,children:[`Chats`,(0,K.jsx)(`span`,{className:`font-normal normal-case`,"data-testid":`project-page-count`,children:f})]}),o.length===0?(0,K.jsx)(`p`,{className:`py-3 text-sm text-fg-faint`,"data-testid":`project-page-no-chats`,children:f>0?`${iV(f)} filed here are older than the list this window holds.`:`No chats in this project yet — start one with “New chat in this project”.`}):(0,K.jsx)(`div`,{className:`rounded-xl border border-border bg-surface p-1`,"data-testid":`project-page-chats`,children:o.map(e=>(0,K.jsx)(KB,{session:e,active:!1,link:t.sessionLinks[e.id]??null,menuOpen:i.menuFor===e.id,onOpen:s,onMenu:i.openMenu,clock:r,testIdPrefix:`project-chat`},e.id))}),f>0&&o.length>0&&f>o.length?(0,K.jsxs)(`p`,{className:`mt-1 text-xs text-fg-faint`,children:[f-o.length,` older `,f-o.length===1?`chat is`:`chats are`,` `,`not in the list this window holds — search for`,` `,f-o.length===1?`it`:`them`,` in the session list.`]}):null]})]}),i.element]})}var lV=`waiting: the chat is busy`;function uV(e){return e.enabled&&typeof e.lastResult==`string`&&e.lastResult.startsWith(`waiting:`)&&e.lastResult!==lV}function dV(e,t){if(!e.enabled||!e.nextRunAt)return!1;let n=Date.parse(e.nextRunAt);return Number.isFinite(n)&&n-t<=36e5}function fV(e,t){let n=e=>e===1?`1 scheduled task`:`${e} scheduled tasks`,r=e.filter(uV).length;if(r>0)return{tone:`stuck`,count:r,text:`${n(r)} could not run — open Scheduled to see why`};let i=e.filter(e=>dV(e,t)).length;return i>0?{tone:`soon`,count:i,text:`${n(i)} due within the hour`}:null}function pV(e){return e.split(/\r?\n/).find(e=>e.trim()!==``)?.trim()??``}function mV(){let{state:e,actions:t}=q(),{tasks:n,reload:r}=nV(),i=rV(),[a,o]=(0,v.useState)(null),[s,c]=(0,v.useState)(null),l=(0,v.useMemo)(()=>{let t=new Map(e.sessions.map(e=>[e.id,Q_(e)]));for(let[n,r]of Object.entries(e.pinnedRows))t.has(n)||t.set(n,Q_(r));return e=>t.get(e)??null},[e.sessions,e.pinnedRows]),u=async(e,t)=>{c(e.id);try{await t()&&r()}finally{c(null)}},d=n?.filter(e=>Re(e)).length??0;return(0,K.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto bg-bg`,"data-testid":`scheduled-page`,children:(0,K.jsxs)(`div`,{className:`mx-auto w-full max-w-4xl px-4 py-6 sm:px-8`,children:[(0,K.jsxs)(`div`,{className:`mb-1 flex items-center gap-2`,children:[(0,K.jsx)(Y.Clock,{className:`w-5 h-5 shrink-0 text-fg-muted`}),(0,K.jsx)(`h1`,{className:`text-2xl font-semibold text-fg`,children:`Scheduled`})]}),(0,K.jsxs)(`p`,{className:`mb-5 text-sm text-fg-muted`,children:[`What OonaCode's scheduler sends into your chats on this PC — once, or on a repeat — even when the chat has gone quiet.`,n&&n.length>0?` ${d} active${n.length>d?`, ${n.length-d} paused or done`:``}.`:``]}),n===null?null:n.length===0?(0,K.jsx)(`div`,{"data-testid":`scheduled-empty`,children:(0,K.jsx)(ZS,{icon:(0,K.jsx)(Y.Clock,{className:`h-8 w-8`}),title:`Nothing scheduled`,hint:`Ask a chat to do something later or on a repeat — “remind me at 9 to check the build”, “every morning, summarise the new issues” — and its model schedules it with OonaCode’s scheduler. Every task, from every chat, shows here.`})}):(0,K.jsx)(`ul`,{className:`space-y-2`,"data-testid":`scheduled-list`,children:n.map(e=>{let n=uV(e),r=dV(e,i),c=l(e.sessionId),d=pV(e.prompt),f=Re(e),p=ze(e);return(0,K.jsxs)(`li`,{className:G(`rounded-xl border p-3 text-sm`,f?`bg-surface`:`bg-surface-2 opacity-60`,n?`border-warn/60`:`border-border`),"data-testid":`scheduled-row-${e.id}`,"data-active":f?`true`:`false`,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-medium text-fg`,title:e.title,children:e.title}),r&&!n?(0,K.jsx)(`span`,{className:`rounded-full bg-accent-soft px-1.5 text-[11px] text-accent`,children:`due soon`}):null,e.createdBy===`model`?(0,K.jsx)(`span`,{className:`text-[11px] text-fg-faint`,children:`set by the agent`}):null,(0,K.jsx)(X,{size:`sm`,variant:`ghost`,disabled:s===e.id||!e.enabled&&e.nextRunAt===null&&`at`in e.when,onClick:()=>void u(e,()=>t.updateScheduledTask(e.id,{enabled:!e.enabled})),"data-testid":`scheduled-row-toggle`,children:e.enabled?`Pause`:`Resume`}),(0,K.jsx)(X,{size:`sm`,variant:a===e.id?`danger`:`ghost`,disabled:s===e.id,onClick:()=>{if(a!==e.id){o(e.id);return}o(null),u(e,()=>t.deleteScheduledTask(e.id))},"data-testid":`scheduled-row-delete`,children:a===e.id?`Delete?`:`Delete`})]}),d?(0,K.jsxs)(`div`,{className:`mt-1 truncate text-fg-muted`,title:e.prompt,"data-testid":`scheduled-row-sends`,children:[`Sends: “`,d,`”`]}):null,(0,K.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-x-3 gap-y-0.5 text-xs text-fg-muted`,children:[(0,K.jsx)(`span`,{"data-testid":`scheduled-row-when`,children:Mp(e.when)}),(0,K.jsx)(`span`,{"data-testid":`scheduled-row-next`,children:Np(e.nextRunAt,e.enabled)}),(0,K.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1`,children:[`in`,(0,K.jsx)(`button`,{type:`button`,className:`min-w-0 truncate text-accent hover:underline`,title:`Open this chat`,onClick:()=>t.selectSession(e.sessionId),"data-testid":`scheduled-row-chat`,children:c??`a chat`})]})]}),e.lastRunAt||e.lastResult?(0,K.jsxs)(`div`,{className:G(`mt-0.5 text-xs`,n?`text-warn`:`text-fg-faint`),"data-testid":`scheduled-row-last`,children:[e.lastRunAt?(0,K.jsxs)(`span`,{title:K_(e.lastRunAt),children:[`last ran `,W_(e.lastRunAt,i)]}):(0,K.jsx)(`span`,{children:`not run yet`}),e.lastResult?` · ${e.lastResult}`:``]}):null,f?null:(0,K.jsxs)(`div`,{className:`mt-0.5 text-xs text-fg-faint`,title:`Tasks that are paused or have finished are deleted 10 days after their last change`,"data-testid":`scheduled-row-deletes`,children:[e.nextRunAt===null?`Finished`:`Paused`,p?` — deleted automatically on ${K_(p)}`:``]})]},e.id)})})]})})}var hV=5e3,gV=12;function _V(e){return Math.min(gV,Math.max(4,e))}var vV=(0,v.memo)(function({messages:e,onPick:t}){let[n,r]=(0,v.useState)(!1),i=(0,v.useRef)(null);return(0,v.useLayoutEffect)(()=>{let e=i.current;n&&e&&(e.scrollTop=e.scrollHeight)},[n]),e.length<2?null:(0,K.jsxs)(`div`,{className:`absolute right-2 top-1/2 z-10 -translate-y-1/2`,"data-testid":`user-message-rail`,onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1),onFocus:()=>r(!0),onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||r(!1)},onKeyDown:e=>{e.key===`Escape`&&r(!1)},children:[(0,K.jsx)(`button`,{type:`button`,"aria-label":`Your messages in this chat`,"aria-haspopup":`true`,"aria-expanded":n,className:`flex flex-col items-end gap-1 p-1 text-fg opacity-70 hover:opacity-100 focus-visible:opacity-100`,onClick:()=>r(!0),"data-testid":`user-message-rail-handle`,children:Array.from({length:_V(e.length)},(e,t)=>(0,K.jsx)(`span`,{className:`block h-[2px] w-5 rounded-full bg-current`},t))}),n?(0,K.jsx)(`div`,{className:`absolute right-full top-1/2 -translate-y-1/2 pr-2`,"data-testid":`user-message-rail-bridge`,children:(0,K.jsx)(`div`,{ref:i,className:`max-h-[60vh] w-72 max-w-[70vw] overflow-y-auto rounded-md border border-border bg-surface p-1 shadow-md`,"data-testid":`user-message-rail-list`,children:e.map(e=>{let n=e.reachable!==!1,i=[e.at?K_(e.at):null,e.label,n?null:`Too far back to jump to (more than ${hV.toLocaleString()} lines ago).`].filter(e=>e!==null).join(`
|
|
155
|
+
`);return(0,K.jsx)(`button`,{type:`button`,"aria-disabled":!n,className:n?`block w-full truncate rounded px-2 py-1 text-left text-xs hover:bg-surface-2 focus-visible:bg-surface-2`:`block w-full cursor-not-allowed truncate rounded px-2 py-1 text-left text-xs opacity-40`,title:i,onClick:()=>{n&&(r(!1),t(e.id))},"data-testid":`user-message-rail-item`,children:e.label},e.id)})})}):null]})}),yV=(0,v.memo)(function({text:e,localFiles:t=!1}){let{head:n,tail:r}=IR(e);return(0,K.jsxs)(K.Fragment,{children:[n?(0,K.jsx)(LI,{text:n,localFiles:t}):null,(0,K.jsx)(LI,{text:r,localFiles:t})]})});function bV(e){let t=(0,v.useRef)(null);(0,v.useEffect)(()=>{let e=t.current;e&&(e.focus(),e.select())},[e.focusSeq]);let n=t=>{t.key===`Enter`||t.key===`ArrowDown`?(t.preventDefault(),e.onStep(t.key===`Enter`&&t.shiftKey?-1:1)):t.key===`ArrowUp`?(t.preventDefault(),e.onStep(-1)):t.key===`Escape`&&(t.preventDefault(),t.stopPropagation(),e.onClose())},r=e.query.trim()!==``&&e.count===0;return(0,K.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border bg-surface px-3 py-1.5`,"data-testid":`chat-search`,role:`search`,children:[(0,K.jsx)(Y.Search,{className:`w-3.5 h-3.5 shrink-0 text-fg-faint`}),(0,K.jsx)(`input`,{ref:t,type:`text`,value:e.query,onChange:t=>e.onQuery(t.target.value),onKeyDown:n,placeholder:`Find in this chat`,"aria-label":`Find in this chat`,spellCheck:!1,className:G(Z,`h-7 min-w-0 flex-1 py-0 text-xs`),"data-testid":`chat-search-input`}),(0,K.jsx)(`span`,{className:G(`shrink-0 tabular-nums text-xs`,r?`text-warn`:`text-fg-muted`),"data-testid":`chat-search-count`,children:e.query.trim()===``?``:Pe(e.index,e.count)}),(0,K.jsx)(US,{label:`Previous match (Shift+Enter)`,onClick:()=>e.onStep(-1),disabled:e.count===0,"data-testid":`chat-search-prev`,children:(0,K.jsx)(Y.ArrowDown,{className:`w-3.5 h-3.5 rotate-180`})}),(0,K.jsx)(US,{label:`Next match (Enter)`,onClick:()=>e.onStep(1),disabled:e.count===0,"data-testid":`chat-search-next`,children:(0,K.jsx)(Y.ArrowDown,{className:`w-3.5 h-3.5`})}),(0,K.jsx)(US,{label:`Close search (Esc)`,onClick:e.onClose,"data-testid":`chat-search-close`,children:(0,K.jsx)(Y.X,{className:`w-3.5 h-3.5`})})]})}var xV=`data-item-id`;function SV(e){return`[${xV}="${e.replace(/["\\]/g,`\\$&`)}"]`}var CV=`oona-search`,wV=`oona-search-current`,TV=2e3;function EV(){let e=globalThis.CSS,t=globalThis.Highlight;return!e?.highlights||typeof t!=`function`?null:{registry:e.highlights,Highlight:t}}function DV(e,t,n,r){let i=EV();if(i===null)return;let a=De(r);if(a===``||t.length===0){OV();return}let o=ke(a),s=[],c=[],l=TV;for(let r of t){let t=e.querySelector(SV(r.id));if(!t)continue;let i=MV(t,o,l);if(l-=i.length,r.id===n?c.push(...i):s.push(...i),l<=0)break}i.registry.set(CV,new i.Highlight(...s)),i.registry.set(wV,new i.Highlight(...c))}function OV(){let e=EV();e!==null&&(e.registry.delete(CV),e.registry.delete(wV))}function kV(e,t){let n=De(t);return n===``?null:MV(e,ke(n),1)[0]??null}function AV(e,t){let n=e.startContainer instanceof Element?e.startContainer:e.startContainer.parentElement;for(;n;){if(n instanceof HTMLElement&&jV(n)){let t=e.getBoundingClientRect(),r=n.getBoundingClientRect();n.scrollTop+=t.top-r.top-(n.clientHeight-t.height)/2}if(n===t)break;n=n.parentElement}}function jV(e){if(e.scrollHeight<=e.clientHeight)return!1;let t=getComputedStyle(e).overflowY;return t===`auto`||t===`scroll`}function MV(e,t,n){let r=e.ownerDocument;if(!r||n<=0)return[];let i=[],a=r.createTreeWalker(e,NodeFilter.SHOW_TEXT);for(let e=a.nextNode();e!==null;e=a.nextNode()){let a=e.data;t.lastIndex=0;for(let o of a.matchAll(t)){if(o[0].length===0)continue;let t=r.createRange();if(t.setStart(e,o.index??0),t.setEnd(e,(o.index??0)+o[0].length),i.push(t),i.length>=n)return i}}return i}function NV(e,t){switch(e.kind){case`user`:return e.text;case`assistant`:return e.text;case`thinking`:return t?e.text:``;case`tool`:return[e.name,Nz(e.name,e.input)??``,PV(e.result)].filter(e=>e!==``).join(`
|
|
156
|
+
`);case`system`:return e.text;case`error`:return e.message;case`permission`:return e.request.toolName;case`result`:case`compact`:return``}}function PV(e){return e===null?``:typeof e.content==`string`?e.content:e.content.map(e=>`text`in e&&typeof e.text==`string`?e.text:``).filter(e=>e!==``).join(`
|
|
157
|
+
`)}function FV(e,t,n){let r=Me(e,t,e=>NV(e,n.showReasoning));if(r.length===0)return[];let i=new Map;for(let t of e)t.kind===`tool`&&i.set(t.toolUseId,t);return r.map(t=>{let n=e[t],r=IV(n,i);return{id:n.id,rootId:r[0]??n.id,path:r}})}function IV(e,t){let n=[],r=e;for(let e=0;e<16&&r.parentToolUseId!==null;e++){let e=t.get(r.parentToolUseId);if(e===void 0)break;n.unshift(e.id),r=e}return n}function LV(e,t){let n=e instanceof Element?e:null,r=e=>e!==null&&t.contains(e)?e:null,i=typeof window<`u`?window.getSelection():null,a=i&&!i.isCollapsed&&i.anchorNode&&t.contains(i.anchorNode)?i.toString():``,o=r(n?.closest(`[data-item-id]`)??null),s=r(n?.closest(`pre`)??null),c=r(n?.closest(`a[href]`)??null);return{selection:a,itemId:o?.getAttribute(`data-item-id`)??null,code:s?.textContent??null,link:c?.href||null}}function RV(e){switch(e.kind){case`user`:case`assistant`:case`thinking`:case`system`:return e.text;case`tool`:{let t=PV(e.result);return t===``?Nz(e.name,e.input)??``:t}case`error`:return e.message;case`permission`:return e.request.toolName;case`result`:case`compact`:return``}}function zV(e){switch(e.kind){case`user`:return`Copy message`;case`assistant`:return`Copy reply`;case`tool`:return e.result?`Copy tool output`:`Copy tool call`;case`thinking`:return`Copy thought`;default:return`Copy text`}}function BV(e){let t=e.trim();return t===``||t.length>80||/[\r\n]/.test(t)?null:t}function VV(e){if(!e)return null;try{let t=new URL(e);return t.protocol===`https:`||t.protocol===`http:`?t.href:null}catch{return null}}function HV(e,t,n={}){let r=[],i=t!==null&&RV(t).trim()!==``;n.canReply!==!1&&(e.selection.trim()!==``||i)&&r.push({key:`reply`,label:e.selection.trim()===``?`Reply`:`Reply to selection`}),r.push({key:`copy`,label:`Copy`,hint:`Ctrl+C`,disabled:e.selection===``,separated:r.length>0}),e.code!==null&&e.code.trim()!==``&&r.push({key:`copy-code`,label:`Copy code block`}),e.link!==null&&(r.push({key:`copy-link`,label:`Copy link address`}),VV(e.link)&&r.push({key:`open-link`,label:`Open link`})),t!==null&&i&&r.push({key:`copy-item`,label:zV(t)});let a=BV(e.selection);if(a!==null){let e=a.length>32?`${a.slice(0,31)}…`:a;r.push({key:`find`,label:`Find “${e}” in this chat`,separated:!0})}return e.itemId!==null&&r.push({key:`select-block`,label:`Select all in this block`,separated:a===null}),r}var UV=`data-pin-message`;function WV(e,t,n){let r=0,i=e-1,a=-1;for(;r<=i;){let e=r+i>>1;t(e)<n?(a=e,r=e+1):i=e-1}return a}function GV(e,t=240){let n=e.replace(/\s+/g,` `).trim();return n.length<=t?n:`${n.slice(0,t-1)}…`}function KV(e){switch(e.status){case`done`:return`answered`;case`skipped`:return`skipped`;case`denied`:case`error`:return`dismissed`;case`cancelled`:return`unanswered`;default:return null}}var qV=(0,v.memo)(function({item:e}){let[t,n]=(0,v.useState)(!1),r=KV(e),i=(0,v.useMemo)(()=>Hl(e.input),[e.input]),a=(0,v.useMemo)(()=>Gl(e.result?.structured)??Gl(e.input),[e.result,e.input]);if(r===null)return null;let o=Wl({outcome:r,questions:i.length,answers:a}),s=r===`answered`&&a?i.map(e=>({question:e.question,answer:a[e.question]})).filter(e=>typeof e.answer==`string`):[],c=r===`answered`;return(0,K.jsxs)(`div`,{className:`my-1 text-xs text-fg-faint`,"data-testid":`question-line-${e.toolUseId}`,children:[(0,K.jsxs)(`button`,{type:`button`,"aria-expanded":s.length>0?t:void 0,disabled:s.length===0,onClick:()=>n(e=>!e),className:`flex w-full min-w-0 items-center gap-2 rounded px-1 py-0.5 text-left enabled:hover:bg-surface-2`,children:[c?(0,K.jsx)(Y.Check,{className:`w-3 h-3 shrink-0 text-ok`}):(0,K.jsx)(Y.X,{className:`w-3 h-3 shrink-0`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,"data-testid":`question-line-text`,children:o}),s.length>0?(0,K.jsx)(Y.Chevron,{open:t,className:`w-3 h-3 shrink-0`}):null]}),t&&s.length>0?(0,K.jsx)(`dl`,{className:`ml-5 mt-1 space-y-1`,"data-testid":`question-line-answers`,children:s.map(e=>(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{className:`text-fg-muted`,children:e.question}),(0,K.jsx)(`dd`,{className:`pre-wrap text-fg`,children:e.answer})]},e.question))}):null]})});function JV(e){return e.map(e=>{let t=e.source,n=t?.type===`base64`&&!!t.data;if(e.type===`image`&&n){let e=t.media_type??`image/png`;return{kind:`picture`,picture:{name:qR(`picture`,e),mediaType:e,base64:t.data}}}if(e.type===`document`&&n){let e=t.media_type??`application/pdf`;return{kind:`file`,label:e===`application/pdf`?`PDF · open`:`File · open`,file:{name:qR(`document`,e),mediaType:e,base64:t.data}}}if(e.type===`text`){let t=e.text??``,n=JR(t);if(n)return{kind:`localpath`,label:`${Y_(n.name,28)} · open`,name:n.name,path:n.path};let r=Lm(t);if(r)return{kind:`file`,label:`${Y_(r.name,28)} · open`,file:{name:r.name,mediaType:`text/plain`,base64:WR(r.content)}}}return{kind:`other`,type:e.type}})}var YV=(0,v.memo)(function({attachments:e}){let t=(0,v.useMemo)(()=>JV(e),[e]),[n,r]=(0,v.useState)(null),i=(0,v.useContext)(mI).notify??void 0;return(0,K.jsxs)(`div`,{className:`mb-1 flex flex-wrap gap-1`,"data-testid":`sent-attachments`,children:[t.map((e,t)=>e.kind===`picture`?(0,K.jsx)(`button`,{type:`button`,"aria-label":`Open picture`,title:`Open picture`,"data-testid":`attachment-picture`,onClick:()=>r(e.picture),className:`cursor-zoom-in rounded border border-border p-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:(0,K.jsx)(`img`,{src:`data:${e.picture.mediaType};base64,${e.picture.base64}`,alt:`attachment`,className:`block max-h-40 rounded`})},t):e.kind===`file`?(0,K.jsxs)(`button`,{type:`button`,"aria-label":`Open ${e.file.name}`,title:`Open ${e.file.name} in its own program`,"data-testid":`attachment-file`,onClick:()=>void ez(e.file,i),className:`inline-flex items-center gap-1 rounded bg-surface-2 px-1.5 py-0.5 text-[11px] font-medium leading-4 text-fg hover:bg-surface-3 focus:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:[(0,K.jsx)(Y.File,{className:`h-3 w-3 text-fg-muted`}),e.label]},t):e.kind===`localpath`?(0,K.jsxs)(`button`,{type:`button`,"aria-label":`Open ${e.name}`,title:`Open ${e.name} — ${e.path}`,"data-testid":`attachment-path`,onClick:()=>void XR(e.path,i),className:`inline-flex items-center gap-1 rounded bg-surface-2 px-1.5 py-0.5 text-[11px] font-medium leading-4 text-fg hover:bg-surface-3 focus:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:[(0,K.jsx)(Y.File,{className:`h-3 w-3 text-fg-muted`}),e.label]},t):(0,K.jsx)(Q,{children:e.type},t)),(0,K.jsx)(pz,{picture:n,onClose:()=>r(null),notify:i})]})});function XV(e){let t=[],n=0;for(;n<e.length;){let r=e[n].item;if(r.kind===`permission`&&r.status!==`pending`){let r=[],i=n;for(;i<e.length;){let t=e[i].item;if(t.kind!==`permission`||t.status===`pending`)break;r.push(t),i+=1}if(r.length>=3){t.push({run:r}),n=i;continue}}t.push(e[n]),n+=1}return t}function ZV(e,t){let n=null;for(let r=0;r<e.length;r++){let i=e[r].item;i.kind===`permission`&&i.status!==`pending`&&(i.status===`allowed`||i.request.toolName===`AskUserQuestion`)&&t(i.request.toolUseId)?n??=e.slice(0,r):n&&n.push(e[r])}return n??e}function QV(e){if(!e)return{flow:void 0,queued:[]};let t=[];for(let n of e)n.kind===`user`&&n.waiting&&!n.failed&&t.push(n);if(t.length===0)return{flow:e,queued:t};let n=new Set(t.map(e=>e.id));return{flow:e.filter(e=>!n.has(e.id)),queued:t}}function $V({items:e,onCancel:t,onSendNow:n}){let[r,i]=(0,v.useState)(()=>new Set),[a,o]=(0,v.useState)({}),[s,c]=(0,v.useState)(()=>new Set),l=e=>{let t=e.requestId;!n||!t||r.has(t)||s.has(t)||(i(e=>new Set(e).add(t)),o(({[t]:e,...n})=>n),n(e).catch(e=>e instanceof Error?e.message:String(e)).then(e=>{e?o(n=>({...n,[t]:e})):c(e=>new Set(e).add(t))}).finally(()=>i(e=>{let n=new Set(e);return n.delete(t),n})))},u=(0,v.useRef)(null),d=e.length;return(0,v.useEffect)(()=>{let e=u.current;e&&(e.scrollTop=e.scrollHeight)},[d]),e.length===0?null:(0,K.jsxs)(`div`,{className:`shrink-0 border-t border-border bg-surface px-3 pb-1 pt-2 sm:px-6`,"data-testid":`queued-strip`,children:[(0,K.jsxs)(`div`,{className:`mb-0.5 text-right text-[11px] text-fg-faint`,children:[e.length===1?`Queued`:`${e.length} queued`,` — the agent reads this at its next step`]}),(0,K.jsx)(`div`,{ref:u,className:`max-h-[200px] overflow-y-auto`,"data-testid":`queued-strip-list`,children:e.map(e=>(0,K.jsxs)(`div`,{className:`relative`,[xV]:e.id,children:[(0,K.jsx)(eH,{children:(0,K.jsx)(rH,{item:e})}),t&&e.requestId?(0,K.jsx)(`button`,{type:`button`,onClick:()=>t(e),title:`Withdraw this message — the agent has not read it yet`,"aria-label":`Withdraw this message`,"data-testid":`queued-cancel-${e.requestId}`,className:`absolute right-1 top-1 rounded-full border border-border bg-surface p-0.5 text-fg-muted shadow-sm hover:bg-surface-2 hover:text-fg`,children:(0,K.jsx)(Y.X,{className:`h-3 w-3`})}):null,n&&e.requestId&&!e.deliveredAt?(0,K.jsxs)(`div`,{className:`-mt-0.5 mb-1 flex flex-wrap items-center justify-end gap-1.5 text-[11px] text-fg-faint`,"data-testid":`queued-now-row-${e.requestId}`,children:[(0,K.jsx)(`span`,{className:`hidden sm:inline`,children:s.has(e.requestId)?`Stopping the current step…`:`Stops the current step`}),(0,K.jsx)(WS,{label:Fe.label,details:Fe.warning}),(0,K.jsxs)(`button`,{type:`button`,onClick:()=>l(e),disabled:r.has(e.requestId)||s.has(e.requestId),title:s.has(e.requestId)?`On its way — the agent takes it as soon as it has stopped its current step (a few seconds at most)`:Fe.warning,"aria-label":`${Fe.label}: ${Fe.warning}`,"data-testid":`queued-now-${e.requestId}`,className:`inline-flex items-center gap-1 rounded border border-border bg-surface px-1.5 py-0.5 text-fg-muted shadow-sm hover:bg-surface-2 hover:text-fg disabled:opacity-50`,children:[r.has(e.requestId)||s.has(e.requestId)?(0,K.jsx)(Y.Spinner,{className:`h-3 w-3`}):null,s.has(e.requestId)?`Sending now…`:r.has(e.requestId)?`Sending…`:Fe.label]}),a[e.requestId]?(0,K.jsx)(`span`,{className:`basis-full text-right text-danger`,role:`status`,"data-testid":`queued-now-refused-${e.requestId}`,children:a[e.requestId]}):null]}):null]},e.id))})]})}function eH({children:e}){let t=(0,v.useRef)(null),[n,r]=(0,v.useState)(!1),[i,a]=(0,v.useState)(!1);return(0,v.useLayoutEffect)(()=>{let e=t.current;if(!e)return;let n=e.scrollHeight>116;n!==i&&a(n)}),(0,K.jsxs)(`div`,{"data-testid":`queued-clamp`,"data-open":n?`true`:`false`,children:[(0,K.jsx)(`div`,{ref:t,className:G(!n&&`overflow-hidden`),style:n?void 0:{maxHeight:112},children:e}),i||n?(0,K.jsx)(`div`,{className:`-mt-1 mb-0.5 text-right`,children:(0,K.jsx)(`button`,{type:`button`,onClick:()=>r(e=>!e),className:`text-[11px] text-fg-muted underline-offset-2 hover:text-fg hover:underline`,"data-testid":`queued-clamp-toggle`,children:n?`Show less`:`Show all`})}):null]})}function tH(e){return e.failed?`failed`:e.optimistic||e.waiting?`pending`:`delivered`}function nH(e){return e.chatMarker===void 0&&!e.compactSummary&&!e.taskNotification&&!e.engineNote&&e.scheduledTask===void 0&&!ie(e.text)&&!ae(e.text)}var rH=(0,v.memo)(function({item:e}){if(e.chatMarker)return(0,K.jsx)(kR,{item:e});if(ae(e.text))return(0,K.jsx)(sH,{item:e});if(e.compactSummary)return(0,K.jsx)(yH,{item:e});if(e.taskNotification)return(0,K.jsx)(vH,{item:e});if(ie(e.text))return(0,K.jsx)(cH,{item:e});if(e.engineNote)return(0,K.jsx)(aH,{item:e});if(e.scheduledTask!==void 0)return(0,K.jsx)(oH,{item:e});let t=tH(e);return(0,K.jsx)(`div`,{className:`my-2 flex justify-end`,"data-testid":`user-bubble`,"data-delivery":t,children:(0,K.jsxs)(`div`,{className:G(`max-w-[85%] rounded-2xl rounded-br-md bg-user-bubble px-3.5 py-2 text-sm`,t===`pending`&&`opacity-70`,e.failed&&`border border-danger/50`),children:[e.attachments.length>0?(0,K.jsx)(YV,{attachments:e.attachments}):null,(0,K.jsx)(iH,{text:e.text}),e.failed?(0,K.jsx)(`div`,{className:`mt-1 text-right text-[10px] text-danger`,"data-testid":`user-not-sent`,children:`Not sent — send it again`}):null,(0,K.jsxs)(`div`,{className:`mt-0.5 flex items-center justify-end gap-1 text-[10px] text-fg-muted`,"data-testid":`user-time`,children:[e.timestamp?(0,K.jsx)(`span`,{title:K_(e.timestamp),children:q_(e.timestamp)}):null,t===`pending`?(0,K.jsx)(`span`,{"data-testid":`user-waiting`,title:e.waiting?`Handed to the agent — it reads this at its next step`:`Sending…`,"aria-label":`not read yet`,children:(0,K.jsx)(Y.Clock,{className:`h-3 w-3`})}):t===`delivered`?(0,K.jsx)(`span`,{"data-testid":`user-delivered`,title:e.deliveredAt?`Read by the agent at ${K_(e.deliveredAt)}`:`Sent to the model`,"aria-label":`read by the agent`,children:(0,K.jsx)(Y.Check,{className:`h-3 w-3`})}):null]})]})})});function iH({text:e}){let t=Zb(e);return t?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`mb-1.5 flex flex-col gap-1`,children:t.quotes.map((e,t)=>(0,K.jsxs)(`button`,{type:`button`,className:`flex min-w-0 max-w-full items-center gap-1.5 rounded-md border-l-2 border-accent bg-accent-soft/60 py-1 pl-2 pr-2 text-left text-xs text-fg-muted hover:text-fg`,title:`Go to the quoted message:\n\n${Qb(e)}`,"data-quote":e,"data-testid":`user-reply-quote`,children:[(0,K.jsx)(Y.Reply,{className:`h-3.5 w-3.5 shrink-0 text-accent`}),(0,K.jsxs)(`span`,{className:`min-w-0 truncate`,children:[(0,K.jsx)(`span`,{className:`text-fg`,children:`Reply to `}),tx(Qb(e))]})]},t))}),t.reply===``?null:(0,K.jsx)(`div`,{className:`pre-wrap`,children:(0,K.jsx)(DI,{text:t.reply})})]}):(0,K.jsx)(`div`,{className:`pre-wrap`,children:(0,K.jsx)(DI,{text:e})})}var aH=(0,v.memo)(function({item:e}){let[t,n]=(0,v.useState)(!1);HR(e.id,n);let r=e.text.trim()?e.text.trim().split(/\s+/).length:0;return(0,K.jsxs)(`div`,{className:`my-2 rounded-lg border border-border bg-surface text-sm`,"data-testid":`engine-note`,title:K_(e.timestamp),children:[(0,K.jsxs)(`button`,{type:`button`,"aria-expanded":t,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-2 px-2.5 py-1.5 text-left text-fg-muted hover:bg-surface-2`,children:[(0,K.jsx)(Y.Info,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`font-medium`,children:`Engine note`}),(0,K.jsxs)(`span`,{className:`min-w-0 truncate text-xs opacity-70`,children:[ue(e.text),r>40?` · ${r.toLocaleString()} words`:``]}),(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(Y.Chevron,{open:t,className:`w-3.5 h-3.5 text-fg-faint`})]}),t?(0,K.jsx)(`div`,{className:`border-t border-border px-3 py-2 text-fg-muted`,children:(0,K.jsx)(LI,{text:e.text})}):null]})}),oH=(0,v.memo)(function({item:e}){let[t,n]=(0,v.useState)(!1);HR(e.id,n);let r=sc(e.text)?.prompt??e.text;return(0,K.jsxs)(`div`,{className:`my-2 rounded-lg border border-border bg-surface text-sm`,"data-testid":`scheduled-task-line`,title:K_(e.timestamp),children:[(0,K.jsxs)(`button`,{type:`button`,"aria-expanded":t,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-2 px-2.5 py-1.5 text-left text-fg-muted hover:bg-surface-2`,children:[(0,K.jsx)(Y.Clock,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`font-medium`,children:`Scheduled task`}),(0,K.jsx)(`span`,{className:`min-w-0 truncate text-xs opacity-70`,children:e.scheduledTask}),(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(Y.Chevron,{open:t,className:`w-3.5 h-3.5 text-fg-faint`})]}),t?(0,K.jsx)(`div`,{className:`border-t border-border px-3 py-2 text-fg-muted`,children:(0,K.jsx)(LI,{text:r})}):null]})}),sH=(0,v.memo)(function({item:e}){return(0,K.jsxs)(`div`,{className:`my-2 flex items-center gap-2 text-xs text-fg-faint`,"data-testid":`interrupt-marker`,title:K_(e.timestamp),children:[(0,K.jsx)(`span`,{className:`h-px flex-1 bg-border`}),(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-full border border-border bg-surface px-2.5 py-0.5`,children:[(0,K.jsx)(Y.Stop,{className:`h-3 w-3 text-danger`}),(0,K.jsx)(`span`,{className:`font-medium text-fg-muted`,children:`User requested stop`})]}),(0,K.jsx)(`span`,{className:`h-px flex-1 bg-border`})]})}),cH=(0,v.memo)(function({item:e}){let[t,n]=(0,v.useState)(!1);return HR(e.id,n),(0,K.jsxs)(`div`,{className:`my-2 rounded-lg border border-border bg-surface text-sm`,"data-testid":`stream-cut`,title:K_(e.timestamp),children:[(0,K.jsxs)(`button`,{type:`button`,"aria-expanded":t,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-2 px-2.5 py-1.5 text-left text-fg-muted hover:bg-surface-2`,children:[(0,K.jsx)(Y.Info,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`font-medium`,children:`Reply cut off`}),(0,K.jsx)(`span`,{className:`text-xs opacity-70`,children:`the stream broke mid-answer; the engine asked the model to resume where it stopped`}),(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(Y.Chevron,{open:t,className:`w-3.5 h-3.5 text-fg-faint`})]}),t?(0,K.jsx)(`div`,{className:`border-t border-border px-3 py-2 text-fg-muted`,children:(0,K.jsx)(LI,{text:e.text})}):null]})}),lH=(0,v.memo)(function({item:e}){let t=cm(e.error,e.text),n=LR(t?rm(e.text):e.text,e.streaming);return(0,K.jsxs)(`div`,{className:`my-2 text-sm`,"data-testid":`assistant-bubble`,title:K_(e.timestamp),children:[(0,K.jsx)(`div`,{className:G(e.streaming&&`caret`),children:e.streaming?(0,K.jsx)(yV,{text:n,localFiles:!0}):(0,K.jsx)(LI,{text:n,localFiles:!0})}),t?(0,K.jsx)(`div`,{className:`mt-1 text-xs text-danger`,"data-testid":`assistant-error`,children:t}):null,e.aborted?(0,K.jsx)(Q,{tone:`warn`,className:`mt-1`,children:`interrupted`}):null]})});function uH(e){if(e.kind!==`user`||!e.taskNotification)return!1;let t=ye(e.text).summary??``;return/orphaned by a previous claude code process exit/i.test(t)||/background .*tasks? didn.t finish before the previous session ended/i.test(t)}function dH(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(`item`in r&&uH(r.item)){let r=[],i=n;for(;i<e.length;){let t=e[i];if(!(`item`in t)||!uH(t.item))break;r.push(t.item),i+=1}if(r.length>=2){t.push({orphans:r}),n=i;continue}}t.push(r),n+=1}return t}function fH(e){return e.kind===`tool`&&e.name===`Agent`&&e.id.startsWith(`subagent:subagents/agent-`)}function pH(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(`item`in r&&fH(r.item)){let r=[],i=n;for(;i<e.length;){let t=e[i];if(!(`item`in t)||!fH(t.item))break;r.push(t),i+=1}if(r.length>=3){t.push({agents:r}),n=i;continue}}t.push(r),n+=1}return t}var mH=(0,v.memo)(function({nodes:e,renderChildren:t}){let[n,r]=(0,v.useState)(!1),i=HR((0,v.useMemo)(()=>e.map(e=>e.item.id),[e]),r),a=n||i,{span:o,when:s}=(0,v.useMemo)(()=>{let t=e.map(e=>e.item.timestamp?Date.parse(e.item.timestamp):NaN).filter(e=>Number.isFinite(e));if(t.length===0)return{span:void 0,when:null};let n=Math.min(...t),r=Math.max(...t),i=zH.format(n),a=zH.format(r),o=new Date(n).toISOString(),s=new Date(r).toISOString(),c=HH(o)===HH(s)?`${UH(o)}, ${LH.format(n)}${n===r?``:` – ${LH.format(r)}`}`:`${UH(o)} → ${UH(s)}`;return{span:i===a?i:`${i} — ${a}`,when:c}},[e]);return(0,K.jsxs)(`div`,{className:`my-2 rounded-lg border border-border bg-surface text-sm`,"data-testid":`earlier-agents`,"data-count":e.length,children:[(0,K.jsxs)(`button`,{type:`button`,"aria-expanded":a,title:o,onClick:()=>r(e=>!e),className:`flex w-full items-center gap-2 px-2.5 py-1.5 text-left text-fg-muted hover:bg-surface-2`,children:[(0,K.jsx)(Y.Info,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`font-medium`,children:`${e.length} earlier agents`}),s?(0,K.jsx)(`span`,{className:`shrink-0 text-xs`,children:s}):null,(0,K.jsx)(`span`,{className:`min-w-0 truncate text-xs opacity-70`,children:`their launch is older than what this chat has loaded — open to read each one’s transcript`}),(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(Y.Chevron,{open:a,className:`w-3.5 h-3.5 text-fg-faint`})]}),a?(0,K.jsx)(`div`,{className:`border-t border-border px-2 py-1`,children:t(e)}):null]})});function hH(e){for(let t of e){let e=ye(t.text).summary??``,n=/(\d+) background .*tasks? didn.t finish/i.exec(e);if(n)return Number(n[1])}return e.length}var gH=(0,v.memo)(function({items:e}){let[t,n]=(0,v.useState)(!1),r=hH(e);return(0,K.jsxs)(`div`,{className:`my-2 rounded-lg border border-border bg-surface text-sm`,"data-testid":`restart-orphans`,"data-count":r,children:[(0,K.jsxs)(`button`,{type:`button`,"aria-expanded":t,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-2 px-2.5 py-1.5 text-left text-fg-muted hover:bg-surface-2`,children:[(0,K.jsx)(Y.Info,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`font-medium`,children:r===1?`1 background task`:`${r} background tasks`}),(0,K.jsx)(`span`,{className:`text-xs font-medium text-warn`,children:`stopped`}),(0,K.jsxs)(`span`,{className:`min-w-0 truncate text-xs opacity-70`,children:[r===1?`it was`:`they were`,` running when OonaCode restarted this chat (an update or a restart); the model can start again what it still needs`]}),(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(Y.Chevron,{open:t,className:`w-3.5 h-3.5 text-fg-faint`})]}),t?(0,K.jsx)(`div`,{className:`border-t border-border px-2 py-1`,children:e.map(e=>(0,K.jsx)(vH,{item:e},e.id))}):null]})});function _H(e){if(!e)return null;if(/orphaned by a previous claude code process exit/i.test(e))return`it was still running when OonaCode restarted this chat (an update or a restart), so it stopped`;let t=/(\d+) background .*tasks? didn.t finish before the previous session ended/i.exec(e);return t?`${t[1]} background tasks were still running when OonaCode restarted this chat (an update or a restart), so they stopped`:e}var vH=(0,v.memo)(function({item:e}){let[t,n]=(0,v.useState)(!1);HR(e.id,n);let r=ye(e.text),i=r.status??`ended`,a=i===`completed`?`text-ok`:i===`failed`?`text-danger`:`text-warn`,o=_H(r.summary);return(0,K.jsxs)(`div`,{className:`my-2 rounded-lg border border-border bg-surface text-sm`,"data-testid":`task-notification`,"data-status":i,title:K_(e.timestamp),children:[(0,K.jsxs)(`button`,{type:`button`,"aria-expanded":t,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-2 px-2.5 py-1.5 text-left text-fg-muted hover:bg-surface-2`,children:[(0,K.jsx)(Y.Info,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`font-medium`,children:`Background task`}),(0,K.jsx)(`span`,{className:`text-xs font-medium ${a}`,children:i}),o?(0,K.jsx)(`span`,{className:`min-w-0 truncate text-xs opacity-70`,title:r.summary??void 0,children:o}):null,(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(Y.Chevron,{open:t,className:`w-3.5 h-3.5 text-fg-faint`})]}),t?(0,K.jsxs)(`div`,{className:`border-t border-border px-3 py-2 text-xs text-fg-muted`,children:[r.note?(0,K.jsx)(`p`,{className:`mb-2`,children:r.note}):null,(0,K.jsx)(`pre`,{className:`whitespace-pre-wrap break-words font-mono text-[11px] text-fg-faint`,children:e.text})]}):null]})}),yH=(0,v.memo)(function({item:e}){let[t,n]=(0,v.useState)(!1);HR(e.id,n);let r=e.text.trim()?e.text.trim().split(/\s+/).length:0;return(0,K.jsxs)(`div`,{className:`my-2 rounded-lg border border-border bg-surface text-sm`,"data-testid":`compact-summary`,title:K_(e.timestamp),children:[(0,K.jsxs)(`button`,{type:`button`,"aria-expanded":t,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-2 px-2.5 py-1.5 text-left text-fg-muted hover:bg-surface-2`,children:[(0,K.jsx)(Y.Info,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`font-medium`,children:`Context compacted`}),(0,K.jsxs)(`span`,{className:`text-xs opacity-70`,children:[`the engine summarised the conversation so far to make room · `,r.toLocaleString(),` `,`words`]}),(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(Y.Chevron,{open:t,className:`w-3.5 h-3.5 text-fg-faint`})]}),t?(0,K.jsx)(`div`,{className:`border-t border-border px-3 py-2 text-fg-muted`,children:(0,K.jsx)(LI,{text:e.text})}):null]})}),bH=(0,v.memo)(function({item:e,modelNameOf:t}){let n=[H_(e.durationMs),`${U_(e.inputTokens)} in${(e.cachedInputTokens??0)>0?` (+${U_(e.cachedInputTokens??0)} cached)`:``} / ${U_(e.outputTokens)} out`,`${e.numTurns} step${e.numTurns===1?``:`s`}`],r=e.safeguards,i=r?fl(r,t):e.isError?om(e):`turn complete`,a=r&&r.outcome===`blocked`||e.isError;return(0,K.jsxs)(`div`,{className:G(`my-2 flex flex-wrap items-center gap-x-2 gap-y-1 text-[11px]`,a?`text-danger`:`text-fg-faint`),"data-testid":`result-line`,title:K_(e.timestamp),children:[a?(0,K.jsx)(Y.Alert,{className:`w-3 h-3`}):(0,K.jsx)(Y.Check,{className:`w-3 h-3`}),(0,K.jsx)(`span`,{"data-testid":`result-outcome`,children:i}),(0,K.jsx)(`span`,{children:`·`}),(0,K.jsx)(`span`,{children:n.join(` · `)}),e.errors.length>0?(0,K.jsx)(`span`,{className:`w-full pre-wrap font-mono`,children:e.errors.join(`
|
|
158
|
+
`)}):null]})}),xH=(0,v.memo)(function({item:e}){return(0,K.jsxs)(`div`,{className:`my-3 flex items-center gap-2 text-[11px] text-fg-faint`,children:[(0,K.jsx)(`div`,{className:`h-px flex-1 bg-border`}),(0,K.jsxs)(`span`,{children:[`Context compacted (`,e.trigger,`) · `,U_(e.preTokens),e.postTokens===null?``:` → ${U_(e.postTokens)}`,` tokens`]}),(0,K.jsx)(`div`,{className:`h-px flex-1 bg-border`})]})}),SH=(0,v.memo)(function({item:e,modelNameOf:t,onOpenSafeguards:n}){let[r,i]=(0,v.useState)(!1),a=e.refusal,o=e=>e?t(e):null,s=e.subtype===gg,c=o(a?.originalModel)??`The model`,l;if(s){let e=o(a?.fallbackModel)??`another model`;l=a?.scope===`local`?`${c}’s safeguards flagged a subagent’s request — ${e} answered it instead`:`${c}’s safeguards flagged this message — ${e} answers instead, for the rest of this run`}else{let t=o(e.refusalBefore?.originalModel);l=t?`${c} refused too, after ${t}’s safeguards had — there is no other model to fall back to`:`${c}’s safeguards refused this message — there is no model to fall back to`}let u=s?e.text||a?.explanation||``:a?.explanation||e.text||``;return(0,K.jsxs)(`div`,{className:G(`my-2 rounded-md border text-xs`,s?`border-warn/40 bg-warn-soft text-warn`:`border-danger/40 bg-danger-soft text-danger`),"data-testid":s?`safeguard-fallback`:`safeguard-no-fallback`,role:s?`note`:`alert`,title:K_(e.timestamp),children:[(0,K.jsxs)(`button`,{type:`button`,"aria-expanded":u?r:void 0,disabled:!u,onClick:()=>i(e=>!e),className:`flex w-full items-start gap-1.5 px-2.5 py-1.5 text-left disabled:cursor-default`,children:[(0,K.jsx)(Y.Shield,{className:`mt-px w-3.5 h-3.5 flex-shrink-0`,"aria-hidden":`true`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 font-medium`,children:l}),a?.category?(0,K.jsx)(`span`,{className:`flex-shrink-0 rounded border border-current/30 px-1 text-[10px] uppercase tracking-wide opacity-80`,"data-testid":`safeguard-category`,title:`The safeguard's category`,children:a.category}):null,u?(0,K.jsx)(Y.Chevron,{open:r,className:`mt-px w-3.5 h-3.5 flex-shrink-0 opacity-70`}):null]}),r&&u?(0,K.jsx)(`div`,{className:`border-t border-current/20 px-3 py-2 text-fg-muted`,children:(0,K.jsx)(CH,{text:u})}):null,!s&&n?(0,K.jsxs)(`div`,{className:`border-t border-current/20 px-2.5 py-1.5 text-fg-muted`,children:[`Nothing could take this message over. Choose which model it falls back to in`,` `,(0,K.jsx)(`button`,{type:`button`,className:`font-medium text-accent underline`,onClick:n,"data-testid":`safeguard-open-settings`,children:`Settings → Safeguards`}),`.`]}):null]})}),CH=(0,v.memo)(function({text:e}){return(0,K.jsx)(LI,{text:e})}),wH=(0,v.memo)(function({item:e,modelNameOf:t,onOpenSafeguards:n}){if(e.subtype===`chat-notice`&&e.chatMarker)return(0,K.jsx)(jR,{marker:e.chatMarker,timestamp:e.timestamp});if(e.subtype===`new-chat`&&e.newChat)return(0,K.jsx)(NR,{chat:e.newChat,timestamp:e.timestamp});if(e.subtype===`safeguard-fallback`||e.subtype===`safeguard-no-fallback`)return(0,K.jsx)(SH,{item:e,modelNameOf:t,onOpenSafeguards:n});let r=e.subtype===`local-command`||e.subtype===`local-command-error`,i=r?le(e.text):null;if(i)return(0,K.jsx)(TH,{item:e,title:i.title});let a=e.subtype===`command`;return e.subtype===`rewind`?(0,K.jsxs)(`div`,{className:`my-3 flex items-center gap-2 text-[11px] text-fg-faint`,"data-testid":`rewind-boundary`,children:[(0,K.jsx)(`span`,{className:`h-px flex-1 bg-border`}),(0,K.jsxs)(`span`,{className:`whitespace-nowrap rounded border border-border bg-surface-2 px-2 py-0.5`,children:[`⟲ `,e.text]}),(0,K.jsx)(`span`,{className:`h-px flex-1 bg-border`})]}):(0,K.jsx)(`div`,{className:G(`my-2 rounded-md border border-border bg-surface-2 px-3 py-1.5 text-xs`,e.subtype===`local-command-error`?`text-danger`:r?`text-fg`:`text-fg-muted`),"data-testid":r||a?`command-echo`:void 0,children:a?(0,K.jsx)(`span`,{className:`font-mono`,children:e.text}):r&&e.text.includes(`
|
|
159
|
+
`)?(0,K.jsx)(EH,{text:e.text}):(0,K.jsx)(`span`,{className:G(`pre-wrap`,r&&`font-semibold`),children:r?ed(e.text):e.text})})}),TH=(0,v.memo)(function({item:e,title:t}){let[n,r]=(0,v.useState)(!1);return HR(e.id,r),(0,K.jsxs)(`div`,{className:`my-2 rounded-lg border border-border bg-surface text-sm`,"data-testid":`context-window-note`,title:K_(e.timestamp),children:[(0,K.jsxs)(`button`,{type:`button`,"aria-expanded":n,onClick:()=>r(e=>!e),className:`flex w-full items-center gap-2 px-2.5 py-1.5 text-left text-fg-muted hover:bg-surface-2`,children:[(0,K.jsx)(Y.Info,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`min-w-0 truncate font-medium`,children:t}),(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(Y.Chevron,{open:n,className:`w-3.5 h-3.5 text-fg-faint`})]}),n?(0,K.jsx)(`div`,{className:`border-t border-border px-3 py-2 text-xs text-fg-muted`,children:e.text}):null]})}),EH=(0,v.memo)(function({text:e}){let t=(0,v.useMemo)(()=>ed(e),[e]);return DH(t)?(0,K.jsx)(`div`,{className:`min-w-0 overflow-x-auto`,"data-testid":`command-output-markdown`,children:(0,K.jsx)(LI,{text:t})}):(0,K.jsx)(`pre`,{className:`overflow-x-auto whitespace-pre font-mono text-[11px] leading-snug`,"data-testid":`command-output-text`,children:t})});function DH(e){return/^#{1,6} /m.test(e)||/^\|[\s:|-]*-{3,}[\s:|-]*\|?\s*$/m.test(e)}var OH=(0,v.memo)(function({item:e}){let t=kH(e.message);return(0,K.jsxs)(`div`,{className:`my-2 flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-xs text-danger`,role:`alert`,title:t===e.message?void 0:e.message,children:[(0,K.jsx)(Y.Alert,{className:`mt-0.5 w-3.5 h-3.5`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-mono`,children:e.code}),`: `,t]})]})});function kH(e){let t=AH(e),n=t.indexOf(`{"type":"error"`);if(n>=0)try{let e=JSON.parse(t.slice(n)).error?.message;typeof e==`string`&&e.trim()&&(t=`${t.slice(0,n).trim()} ${e.trim()}`.trim())}catch{}return t}function AH(e){return e.replace(/<\/?tool_use_error>/g,``).trim()}function jH({label:e,lastFrameAt:t=null}){let n=IH(t),r=n!==null&&n>=3e4,i=n!==null&&n>=3e5;return(0,K.jsxs)(`div`,{className:`my-2 flex flex-wrap items-center gap-2 text-xs text-fg-muted`,"data-testid":`working`,role:`status`,"aria-live":`polite`,children:[(0,K.jsx)(Y.Spinner,{className:`w-3.5 h-3.5`}),(0,K.jsx)(`span`,{className:`blink`,children:e}),(0,K.jsxs)(`span`,{className:`thinking-dots`,"aria-hidden":!0,children:[(0,K.jsx)(`span`,{children:`.`}),(0,K.jsx)(`span`,{children:`.`}),(0,K.jsx)(`span`,{children:`.`})]}),r&&t!==null?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`span`,{"data-testid":`working-quiet`,"aria-hidden":`true`,className:i?`inline-flex items-center gap-1 text-fg`:void 0,title:`Last activity at ${RH.format(t)}`,children:[i?(0,K.jsx)(Y.Alert,{className:`h-3.5 w-3.5 shrink-0 text-warn`}):null,`· nothing from the agent for ${H_(n)}`,i?` — it may be stuck: press Stop, then send a message to continue`:``]}),(0,K.jsx)(`span`,{className:`sr-only`,"data-testid":`working-quiet-sr`,children:i?`Nothing from the agent for over five minutes. It may be stuck: press Stop, then send a message to continue.`:`Nothing from the agent for over thirty seconds.`})]}):null]})}function MH(e,t){return e.item.id===t||e.children.some(e=>MH(e,t))}function NH(e){if(typeof requestAnimationFrame==`function`){let t=requestAnimationFrame(()=>e());return()=>cancelAnimationFrame(t)}let t=setTimeout(e,16);return()=>clearTimeout(t)}function PH(e){let t=e?.pendingPermissions??[];return t.length===0?null:t.some(e=>e.toolName===`AskUserQuestion`)?`answer`:`approval`}function FH(e){return!e||e.status!==`running`||e.pendingPermissions.length>0?null:e.lastFrameAt}function IH(e){let[t,n]=(0,v.useState)(()=>Date.now());return(0,v.useEffect)(()=>{if(e===null)return;n(Date.now());let t=setInterval(()=>n(Date.now()),1e3);return()=>clearInterval(t)},[e]),e===null?null:Math.max(0,t-e)}var LH=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}),RH=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}),zH=new Intl.DateTimeFormat(void 0,{dateStyle:`full`,timeStyle:`long`}),BH=new Intl.DateTimeFormat(void 0,{weekday:`long`,day:`numeric`,month:`long`}),VH=new Intl.DateTimeFormat(void 0,{dateStyle:`full`});function HH(e){let t=Date.parse(e);if(!Number.isFinite(t))return null;let n=new Date(t);return`${n.getFullYear()}-${n.getMonth()+1}-${n.getDate()}`}function UH(e,t=new Date){let n=HH(e);if(n===null)return``;if(n===HH(t.toISOString()))return`Today`;let r=new Date(t);if(r.setDate(r.getDate()-1),n===HH(r.toISOString()))return`Yesterday`;let i=Date.parse(e);return(new Date(i).getFullYear()===t.getFullYear()?BH:VH).format(i)}function WH(){let[e,t]=(0,v.useState)(0),n=HH(new Date().toISOString())??``;return(0,v.useEffect)(()=>{let e=new Date,n=new Date(e.getFullYear(),e.getMonth(),e.getDate()+1,0,0,1),r=setTimeout(()=>t(e=>e+1),n.getTime()-e.getTime());return()=>clearTimeout(r)},[n,e]),n}var GH=(0,v.memo)(function({iso:e,approx:t=!1}){let n=e?Date.parse(e):NaN,r=Number.isFinite(n);return(0,K.jsx)(`span`,{"data-testid":`item-time`,"data-approx":t?`true`:void 0,className:`mb-2 min-w-11 shrink-0 select-none whitespace-nowrap text-right text-[10px] tabular-nums text-fg-muted`,title:r?t?`${zH.format(n)} — about: this block recorded no time of its own`:zH.format(n):void 0,children:r?LH.format(n):``})}),KH=(0,v.memo)(function({iso:e}){return(0,K.jsx)(`div`,{className:`my-3 flex justify-center`,"data-testid":`day-separator`,children:(0,K.jsx)(`span`,{className:`rounded-full border border-border bg-surface px-2.5 py-0.5 text-[11px] text-fg-muted`,children:UH(e)})})});function qH({hasProject:e}){let{actions:t}=q();return(0,K.jsxs)(`div`,{className:`py-10 text-center`,"data-testid":`draft-intro`,children:[(0,K.jsx)(`div`,{className:`text-sm text-fg-muted`,children:`Send a message to start this chat.`}),e?null:(0,K.jsxs)(`div`,{className:`mx-auto mt-2 max-w-md text-xs text-fg-faint`,children:[`It runs in a folder OonaCode makes for it. The agent can still read and write anywhere on this PC — it just asks first.`,` `,(0,K.jsx)(`button`,{type:`button`,className:`underline hover:text-fg`,onClick:()=>t.openDialog(`project`),children:`Use one of your project folders`}),` `,`to load its `,(0,K.jsx)(`code`,{children:`CLAUDE.md`}),` and settings instead.`]})]})}function JH(e,t,n){return e===`waiting_permission`&&!n?`Waiting for your approval`:t??`thinking`}var YH={open:!1,query:``,currentId:null,focusSeq:0},XH=[];function ZH(){let{state:e,actions:t,api:n}=q(),r=AS(),i=jS(),a=OS().sessionId,o=a?e.remote.tabs[a]!==void 0:!1,s=r?.init?.cwd??i?.cwd??null,c=e.info?.homeDir??null,l=e.info?.platform??null,u=(0,v.useMemo)(()=>n.statLocalPaths?new fI({stat:(e,t)=>n.statLocalPaths(e,t)}):null,[n]),d=r?.status===`running`||r?.status===`waiting_permission`,f=(0,v.useRef)(d);return(0,v.useEffect)(()=>{f.current&&!d&&a&&!o&&u?.invalidate(a),f.current=d},[d,a,o,u]),(0,v.useMemo)(()=>{let e=typeof window<`u`?window.oonacode??null:null,r=n.grantLocalFile?.bind(n)??null;return{sessionId:a,cwd:s,homeDir:o?null:c,platform:o?null:l,remote:o,grant:r,openInViewer:o?null:e=>t.openFile(e,a??void 0),bridge:e&&(e.openPath||e.showItemInFolder)?e:null,notify:(e,n)=>t.toast(e,n),stat:o?null:u}},[a,s,o,c,l,n,t,u])}function QH(){let e=ZH(),t=$H();return(0,K.jsx)(mI.Provider,{value:e,children:(0,K.jsx)(ER.Provider,{value:t,children:(0,K.jsx)(eU,{})})})}function $H(){let{state:e,actions:t}=q(),n=OS().sessionId,r=n?e.chatConversations[n]:void 0,i=e.connection.hostId??e.info?.hostId??null;return(0,v.useMemo)(()=>{let e=new Map((r??[]).map(e=>[e.id,e.title?.trim()||null])),a=mp(r);return{openChat:e=>t.selectSession(e),openConversation:e=>t.openConversations(e),conversationTitle:t=>e.get(t)??null,canOpenChat:(e,t)=>e!==n&&(i===null||t===i),answerState:e=>a.get(e)??null}},[t,r,n,i])}function eU(){let{state:e,actions:t,dispatch:n}=q(),r=AS(),i=jS(),a=MS(),o=(0,v.useRef)(null),[s,c]=(0,v.useState)(!0),l=(0,v.useRef)(null),{sessionId:u,focused:d}=OS(),f=u&&!a?e.transcriptLoading[u]===!0:!1,p=e.prefs.showReasoningSummaries,m=r?.items,{flow:h,queued:g}=(0,v.useMemo)(()=>QV(m),[m]),_=(0,v.useRef)([]),y=(0,v.useMemo)(()=>{let e=h?b_(h,_.current):[];return _.current=e,e},[h]),b=(0,v.useRef)([]),x=(0,v.useMemo)(()=>{let e=y.flatMap((e,t)=>{let n=e.item;if(n.kind!==`user`||!nH(n))return[];let r=GV(n.text.slice(0,400))||`(no text)`;return[{id:n.id,label:r,at:n.timestamp??null,reachable:y.length-t<=hV}]}),t=b.current;return t.length===e.length&&e.every((e,n)=>e.id===t[n].id&&e.label===t[n].label&&e.at===t[n].at&&e.reachable===t[n].reachable)?t:(b.current=e,e)},[y]),S=(0,v.useCallback)(e=>{u&&t.jumpToItem(u,e)},[u,t]),C=u?e.windows[u]:void 0,w=(0,v.useMemo)(()=>C??ax(e.prefs.transcriptWindowSize),[C,e.prefs.transcriptWindowSize]),T=(0,v.useMemo)(()=>dx(y,w),[y,w]),[E,D]=(0,v.useState)(YH),O=(0,v.useMemo)(()=>E.open&&h?FV(h,E.query,{showReasoning:p}):XH,[h,E.open,E.query,p]),k=E.currentId===null?-1:O.findIndex(e=>e.id===E.currentId),A=k>=0?O[k]??null:null,j=(0,v.useCallback)(()=>D(e=>({...e,open:!0,focusSeq:e.focusSeq+1})),[]),M=(0,v.useCallback)(()=>D(YH),[]),N=(0,v.useCallback)(e=>D(t=>({...t,query:e,currentId:null})),[]),ee=(0,v.useRef)(null),P=(0,v.useCallback)(e=>{ee.current=null,D(t=>{let n=Ne(t.currentId===null?-1:O.findIndex(e=>e.id===t.currentId),e,O.length);return{...t,currentId:O[n]?.id??null}})},[O]);(0,v.useEffect)(()=>{if(!E.open||E.currentId!==null&&O.some(e=>e.id===E.currentId))return;let e=O.length>0?O[O.length-1]?.id??null:null;e!==E.currentId&&D(t=>({...t,currentId:e}))},[O,E.open,E.currentId]),(0,v.useEffect)(()=>{if(!u||!d||typeof window>`u`)return;let e=e=>{!(e.ctrlKey||e.metaKey)||e.altKey||e.key!==`f`&&e.key!==`F`||(e.preventDefault(),j())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[u,d,j]);let F=(0,v.useMemo)(()=>zR(),[]),I=A?[...A.path,A.id].join(`
|
|
160
|
+
`):``;(0,v.useLayoutEffect)(()=>{F.set(new Set(I===``?[]:I.split(`
|
|
161
|
+
`)))},[I,F]),(0,v.useEffect)(()=>{if(!A||!u){ee.current=null;return}if(ee.current===A.id)return;let e=y.findIndex(e=>e.item.id===A.rootId);if(e<0)return;if(e<T.start){t.revealTranscript(u,y.length-e,y.length,!0);return}let n=o.current;if(n)return NH(()=>{let e=n.querySelector(SV(A.id))??n.querySelector(SV(A.rootId));if(!(e instanceof HTMLElement))return;ee.current=A.id,c(!1);let t=kV(e,E.query);t?AV(t,n):typeof e.scrollIntoView==`function`&&e.scrollIntoView({block:`center`})})},[A,y,T.start,u,t,E.query]);let re=e.jumpTo,L=(0,v.useRef)(re?.seq??0),R=(0,v.useRef)(0);(0,v.useEffect)(()=>{if(!re||!u||re.sessionId!==u||re.seq<=L.current)return;let e=y.findIndex(e=>MH(e,re.itemId));if(e<0){L.current=re.seq;return}if(e<T.start){t.revealTranscript(u,y.length-e,y.length,!0);return}let n=o.current;if(n)return L.current=re.seq,R.current=Date.now(),be.current=!1,NH(()=>{let t=n.querySelector(SV(re.itemId))??n.querySelector(SV(y[e].item.id));if(!(t instanceof HTMLElement))return;c(!1);let r=()=>{typeof t.scrollIntoView==`function`&&t.scrollIntoView({block:`center`})};if(r(),typeof ResizeObserver<`u`){let e=new ResizeObserver(()=>{t.isConnected&&r()});e.observe(xe.current??n);let i=()=>{e.disconnect();for(let e of[`wheel`,`touchstart`,`keydown`,`mousedown`])n.removeEventListener(e,i)};for(let e of[`wheel`,`touchstart`,`keydown`,`mousedown`])n.addEventListener(e,i,{passive:!0});setTimeout(i,800)}t.classList.add(`chat-jump-flash`),setTimeout(()=>t.classList.remove(`chat-jump-flash`),1600)})},[re,y,T.start,u,t]);let z=(0,v.useCallback)(e=>{let n=(e.target instanceof Element?e.target:null)?.closest(`[data-testid="user-reply-quote"]`),i=r?.items;if(!n||!u||!i)return;let a=n.closest(`[data-item-id]`)?.getAttribute(`data-item-id`)??null,o=a?i.findIndex(e=>e.id===a):-1,s=ix((o>=0?i.slice(0,o):i).map(e=>({id:e.id,text:RV(e)})),n.getAttribute(`data-quote`)??``);s&&t.jumpToItem(u,s)},[r?.items,u,t]);(0,v.useEffect)(()=>{let e=o.current;if(!E.open||!e){OV();return}let t=()=>DV(e,O,A?.id??null,E.query);t();let n=NH(t);return()=>{n(),OV()}},[E.open,E.query,O,A,T.items]);let B=A?.id??null,[ie,ae]=(0,v.useState)(null),oe=lw(),se=u!==null&&!oe,ce=(0,v.useCallback)(()=>ae(null),[]),le=(0,v.useCallback)(e=>{if(e.shiftKey)return;let t=o.current;if(!t)return;let n=e.target instanceof Element?e.target:null;n?.closest(`input, textarea, select, [contenteditable="true"]`)||(e.preventDefault(),ae({at:{x:e.clientX,y:e.clientY},target:LV(n,t)}))},[]),ue=(0,v.useMemo)(()=>{let e=ie?.target.itemId;if(!e||!r)return null;let t=r.index.get(e);return t===void 0?null:r.items[t]??null},[ie,r]),de=(0,v.useMemo)(()=>{if(!ie)return[];let{target:e}=ie,n=e=>void OI(e).then(e=>t.toast(e?`success`:`error`,e?`Copied`:`Could not copy to the clipboard`)),r={reply:()=>{if(!u)return;let n=e.selection.trim()===``?$b(ue?RV(ue):``):e.selection;if(n.trim()===``)return;let r=ue?.kind===`tool`?ex(ue.input):null,i=ue?.kind===`assistant`||ue?.kind===`thinking`?`assistant`:ue?.kind===`user`?`user`:ue?.kind===`tool`?{tool:ue.name}:null;t.quoteIntoComposer(u,Xb(n,r,i),{preview:tx(n),itemId:ue?.id??null})},copy:()=>n(e.selection),"copy-code":()=>n(e.code??``),"copy-link":()=>n(e.link??``),"open-link":()=>{let t=VV(e.link);if(!t)return;let n=typeof window<`u`?window.oonacode:void 0;n?.openExternal?n.openExternal(t):window.open(t,`_blank`,`noopener,noreferrer`)},"copy-item":()=>n(ue?RV(ue):``),find:()=>D(t=>({...t,open:!0,query:e.selection.trim(),currentId:null,focusSeq:t.focusSeq+1})),"select-block":()=>{let t=e.itemId?o.current?.querySelector(SV(e.itemId)):null,n=t?.firstElementChild??t,r=window.getSelection();if(!n||!r)return;let i=document.createRange();i.selectNodeContents(n),r.removeAllRanges(),r.addRange(i)}},i={reply:(0,K.jsx)(Y.Reply,{className:`h-3.5 w-3.5`}),copy:(0,K.jsx)(Y.Copy,{className:`h-3.5 w-3.5`}),"copy-code":(0,K.jsx)(Y.Copy,{className:`h-3.5 w-3.5`}),"copy-item":(0,K.jsx)(Y.Copy,{className:`h-3.5 w-3.5`}),"copy-link":(0,K.jsx)(Y.Globe,{className:`h-3.5 w-3.5`}),"open-link":(0,K.jsx)(Y.Globe,{className:`h-3.5 w-3.5`}),find:(0,K.jsx)(Y.Search,{className:`h-3.5 w-3.5`})};return HV(e,ue,{canReply:se}).map(e=>({key:e.key,label:e.label,hint:e.hint,disabled:e.disabled,separated:e.separated,icon:i[e.key]??(0,K.jsx)(`span`,{}),testId:`chat-menu-${e.key}`,onSelect:r[e.key]}))},[ie,ue,t,u,se]),fe=(0,v.useCallback)(()=>{if(!u||!T.hasMore)return;let e=o.current;e&&(l.current=e.scrollHeight-e.scrollTop),t.growTranscript(u,T.total)},[u,T.hasMore,T.total,t]),[pe,me]=(0,v.useState)(null),he=(0,v.useRef)(null),ge=(0,v.useCallback)(()=>{let e=o.current;if(!e){me(null);return}let t=e.querySelectorAll(`[${UV}]`),n=e.getBoundingClientRect().top,r=he.current?.offsetHeight??0,i=WV(t.length,e=>t[e].getBoundingClientRect().top-n,r),a=i<0?null:t[i].getAttribute(UV);me(e=>e===a?e:a)},[]),_e=(0,v.useCallback)(()=>{let e=o.current;if(!e)return;let n={scrollTop:e.scrollTop,scrollHeight:e.scrollHeight,clientHeight:e.clientHeight},r=fx(n);c(r),ge(),r&&u?t.trimTranscript(u,Date.now()-R.current>1500):px(n)&&T.hasMore&&fe()},[u,T.hasMore,fe,t,ge]),ve=(0,v.useCallback)(()=>{let e=o.current;if(!e||!pe)return;let t=e.querySelector(SV(pe));if(!(t instanceof HTMLElement))return;let n=t.getBoundingClientRect().top-e.getBoundingClientRect().top;c(!1),e.scrollTo({top:e.scrollTop+n-(he.current?.offsetHeight??0)})},[pe]),ye=(0,v.useCallback)(()=>{let e=o.current;e&&e.scrollTo({top:e.scrollHeight}),c(!0),u&&t.trimTranscript(u,!0)},[u,t]);(0,v.useLayoutEffect)(()=>{let e=o.current;if(e){if(l.current!==null){e.scrollTop=Math.max(0,e.scrollHeight-l.current),l.current=null;return}s&&(e.scrollTop=e.scrollHeight)}},[T.items,s]);let be=(0,v.useRef)(s);be.current=s;let xe=(0,v.useRef)(null);(0,v.useEffect)(()=>{let e=o.current;if(!e||typeof ResizeObserver>`u`)return;let t=xe.current,n=e.clientWidth,r=e.clientHeight,i=t?.offsetHeight??0,a=new ResizeObserver(()=>{let a=e.clientWidth===n&&e.clientHeight===r,o=(t?.offsetHeight??0)===i;a&&o||(n=e.clientWidth,r=e.clientHeight,i=t?.offsetHeight??0,be.current&&(e.scrollTop=e.scrollHeight))});return a.observe(e),t&&a.observe(t),()=>a.disconnect()},[u]),(0,v.useLayoutEffect)(()=>{ge()},[T.items,ge]);let Se=r?.lastLocalPromptId??null;(0,v.useEffect)(()=>{Se!==null&&ye()},[Se,ye]),(0,v.useEffect)(()=>{c(!0),l.current=null,me(null),D(YH)},[u]);let Ce=e.chatSearchRequest,we=(0,v.useRef)(Ce?.seen?Ce.seq:0);(0,v.useEffect)(()=>{let e=Ce;!e||!u||e.sessionId!==u||e.seq<=we.current||(we.current=e.seq,ee.current=null,D(t=>({open:!0,query:e.query,currentId:null,focusSeq:t.focusSeq+1})),n({type:`chat_search_request_seen`,seq:e.seq}))},[Ce,u,n]);let Te=r?.hasSubagentItems===!0||i?.hasSubagents===!0||Object.keys(r?.agentActivity??{}).length>0,Ee=(0,v.useMemo)(()=>{let e=new Map;if(!Te)return e;for(let t of vL(h??[]))e.set(t.agentId,t.name);return e},[h,Te]),De=(0,v.useRef)(Ee);De.current=Ee;let Oe=(0,v.useRef)(r);Oe.current=r;let ke=(0,v.useCallback)(e=>{let t=Oe.current,n=t?.index.get(e);return n!==void 0&&t?.items[n]?.kind===`tool`},[]),Ae=(0,v.useCallback)(e=>De.current.get(e)??null,[]),je=(0,v.useRef)(e.providers);je.current=e.providers;let Me=(0,v.useCallback)(e=>nl(e,je.current),[]),Pe=(0,v.useCallback)(()=>t.openSettings(`safeguards`),[t]),Fe=WH(),Ie=(0,v.useCallback)((e,n=!1,r=!0)=>{let i=[],a=null,o=null,s=-1/0,c=dH(XV(ZV(e,ke)));for(let e of r?pH(c):c){let t=`run`in e?e.run[0]:`orphans`in e?e.orphans[0]:`agents`in e?e.agents[0].item:e.item,r=`run`in e?e.run[e.run.length-1].timestamp:`orphans`in e?e.orphans[e.orphans.length-1].timestamp:`agents`in e?e.agents[e.agents.length-1].item.timestamp:e.item.timestamp,c=r?Date.parse(r):NaN,u=Number.isFinite(c)&&c>=s;if(n&&r&&u){let e=HH(r);e!==null&&e!==a&&(i.push((0,K.jsx)(KH,{iso:r,today:Fe},`day:${t.id}`)),a=e)}let d=r??o;r&&u&&(o=r,s=c);let f=l(e,d,r===null);f!==null&&i.push(f)}return i;function l(e,r,i){if(`agents`in e){let t=e.agents[0].item;return(0,K.jsxs)(`div`,{[xV]:t.id,className:`flex items-end gap-2`,children:[(0,K.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,K.jsx)(mH,{nodes:e.agents,renderChildren:e=>Ie(e,!1,!1)})}),(0,K.jsx)(GH,{iso:r,approx:i})]},`agents:${t.id}`)}if(`orphans`in e){let t=e.orphans[0];return(0,K.jsxs)(`div`,{[xV]:t.id,className:`flex items-end gap-2`,children:[(0,K.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,K.jsx)(gH,{items:e.orphans})}),(0,K.jsx)(GH,{iso:r,approx:i})]},`orphans:${t.id}`)}if(`run`in e){let t=e.run[0];return(0,K.jsxs)(`div`,{[xV]:t.id,className:`flex items-end gap-2`,children:[(0,K.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,K.jsx)($z,{items:e.run,agentNameOf:Ae})}),(0,K.jsx)(GH,{iso:r,approx:i})]},`run:${t.id}`)}let a=e.item,o=(()=>{switch(a.kind){case`user`:return(0,K.jsx)(rH,{item:a},a.id);case`assistant`:return(0,K.jsx)(lH,{item:a},a.id);case`thinking`:return p?(0,K.jsx)(Wz,{item:a},a.id):null;case`tool`:return a.name===`AskUserQuestion`?(0,K.jsx)(qV,{item:a},a.id):(0,K.jsx)(Uz,{node:e,renderChildren:Ie},a.id);case`result`:return(0,K.jsx)(bH,{item:a,modelNameOf:Me},a.id);case`compact`:return(0,K.jsx)(xH,{item:a},a.id);case`permission`:return a.status===`pending`?null:(0,K.jsx)(eB,{item:a,agentName:a.request.agentId?Ae(a.request.agentId):null,onDecide:e=>t.respondPermission(a.request.requestId,e,u??void 0)},a.id);case`system`:return(0,K.jsx)(wH,{item:a,modelNameOf:Me,onOpenSafeguards:Pe},a.id);case`error`:return(0,K.jsx)(OH,{item:a},a.id)}})();if(o===null)return null;let s=a.kind===`user`&&nH(a);return(0,K.jsxs)(`div`,{[xV]:a.id,...n&&s?{[UV]:a.id}:{},className:G(`flex items-end gap-2`,a.id===B&&`chat-search-current`),children:[(0,K.jsx)(`div`,{className:`min-w-0 flex-1`,children:o}),s?null:(0,K.jsx)(GH,{iso:r,approx:i})]},a.id)}},[t,p,B,Ae,ke,Fe,Me,Pe,u]),Le=(0,v.useMemo)(()=>(ew(u),Ie(T.items,!0)),[Ie,T.items,u]),V=(0,v.useMemo)(()=>{if(pe===null||!h)return null;let e=h.find(e=>e.id===pe);if(!e||e.kind!==`user`)return null;let t=Zb(e.text);return GV(t&&t.reply!==``?t.reply:e.text)},[h,pe]);if(!u)return(0,K.jsx)(ZS,{icon:(0,K.jsx)(Y.Edit,{className:`w-8 h-8`}),title:`No session selected`,hint:`Open a chat tab or pick a session from the sidebar. Sessions run on this PC and are stored in the host's SQLite database.`,action:(0,K.jsxs)(X,{variant:`primary`,onClick:()=>t.newTab(),children:[(0,K.jsx)(Y.Plus,{className:`w-4 h-4`}),` New chat`]})});let Re=r?.init,ze=r?.status===`running`||r?.status===`waiting_permission`,Be=PH(r),Ve=Be===`answer`?`Waiting for your answer`:Be===`approval`?`Waiting for your approval`:JH(r?.status,r?.statusText,e.prefs.autoAcceptPermissions&&!ne(te(i)));return(0,K.jsxs)(`div`,{className:`relative flex h-full min-h-0 flex-col`,children:[E.open?(0,K.jsx)(bV,{query:E.query,index:k,count:O.length,focusSeq:E.focusSeq,onQuery:N,onStep:P,onClose:M}):null,(0,K.jsxs)(`div`,{className:`relative flex min-h-0 flex-1 flex-col`,children:[V===null?null:(0,K.jsx)(`div`,{ref:he,className:`pointer-events-none absolute inset-x-0 top-0 z-10 px-3 pr-12 pt-2 sm:px-6 sm:pr-14`,children:(0,K.jsxs)(`button`,{type:`button`,onClick:ve,title:`Go to this message`,"data-testid":`pinned-user-message`,"data-pinned-id":pe,className:`pointer-events-auto flex w-full items-center gap-2 rounded-lg border border-border bg-surface px-3 py-1.5 text-left text-xs text-fg-muted shadow-md hover:bg-surface-2 hover:text-fg`,children:[(0,K.jsx)(Y.User,{className:`h-3 w-3 shrink-0`}),(0,K.jsx)(`span`,{className:`truncate`,children:V})]})}),(0,K.jsx)(`div`,{ref:o,onScroll:_e,onContextMenu:le,onClick:z,className:`flex-1 overflow-y-auto py-3 pl-3 pr-10 sm:pl-6`,"data-testid":`transcript`,children:(0,K.jsx)(BR.Provider,{value:F,children:(0,K.jsxs)(`div`,{ref:xe,className:`w-full`,children:[a&&a.projectDir?(0,K.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center gap-2 text-[11px] text-fg-faint`,children:[(0,K.jsx)(Y.Folder,{className:`w-3 h-3`}),(0,K.jsx)(`span`,{className:`font-mono`,children:a.projectDir}),(0,K.jsx)(Q,{tone:`accent`,children:`project attached`})]}):null,i||Re?(0,K.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center gap-2 text-[11px] text-fg-faint`,children:[(0,K.jsx)(Y.Folder,{className:`w-3 h-3`}),(0,K.jsx)(`span`,{className:`font-mono`,"data-testid":`chat-cwd`,children:i?.cwd??Re?.cwd}),Re?.model??i?.model?(0,K.jsx)(Q,{children:Us(Re?.model??i?.model??``)}):null,i?.providerId?(0,K.jsx)(Q,{tone:`accent`,children:i.providerId}):null,(0,K.jsx)(Q,{children:Re?.permissionMode??i?.permissionMode??`default`}),Re?(0,K.jsxs)(`span`,{children:[Re.tools.length,` tools · engine `,Re.claudeCodeVersion]}):null]}):null,T.hasMore?(0,K.jsx)(`div`,{className:`mb-2 flex items-center justify-center`,"data-testid":`window-more`,children:(0,K.jsxs)(X,{size:`sm`,onClick:fe,children:[(0,K.jsx)(Y.ArrowDown,{className:`w-3 h-3 rotate-180`}),` Load `,100,` `,`older lines (`,T.hiddenAbove,` hidden)`]})}):null,f&&(!r||r.items.length===0)?(0,K.jsxs)(`div`,{className:`flex items-center gap-2 py-8 text-sm text-fg-muted`,children:[(0,K.jsx)(Y.Spinner,{}),` Loading transcript…`]}):null,!f&&(r?.items.length??0)===0?a?(0,K.jsx)(qH,{hasProject:a.projectDir!==null}):r?(0,K.jsx)(`div`,{className:`py-10 text-center text-sm text-fg-muted`,children:`Send a message to start this session.`}):null:null,Le,ze?(0,K.jsx)(jH,{label:Ve,lastFrameAt:FH(r)}):null,(0,K.jsx)(`div`,{className:`h-2`})]})})}),(0,K.jsx)(iw,{open:ie!==null,at:ie?.at??{x:0,y:0},items:de,onClose:ce,label:`Chat`,testId:`chat-context-menu`})]}),(0,K.jsx)($V,{items:g,onCancel:e=>{e.requestId&&t.cancelQueued(e.requestId,u??void 0)},onSendNow:e=>e.requestId?t.sendQueuedNow(e.requestId,u??void 0):Promise.resolve(null)}),u?(0,K.jsx)(vV,{messages:x,onPick:S}):null,E.open?null:(0,K.jsx)(US,{label:`Find in this chat (Ctrl+F)`,onClick:j,className:`absolute right-5 top-2 border border-border bg-surface shadow-md`,"data-testid":`chat-search-open`,children:(0,K.jsx)(Y.Search,{className:`w-3.5 h-3.5`})}),s?null:(0,K.jsxs)(`button`,{type:`button`,onClick:ye,className:`absolute bottom-3 left-1/2 -translate-x-1/2 rounded-full border border-border bg-surface px-3 py-1 text-xs shadow-md hover:bg-surface-2`,"data-testid":`chat-jump-latest`,children:[(0,K.jsx)(Y.ArrowDown,{className:`mr-1 inline w-3 h-3`}),` Jump to latest`]})]})}function tU(e){return(e/1048576).toFixed(e>=104857600?0:1)+` MB`}function nU(e){switch(e.phase){case`download`:return e.totalBytes?`Downloading the coding engine (v${e.version}) — ${tU(e.receivedBytes)} of ${tU(e.totalBytes)}…`:`Downloading the coding engine (v${e.version}) — ${tU(e.receivedBytes)}…`;case`verify`:return`Verifying the coding engine…`;case`extract`:return`Unpacking the coding engine…`;case`failed`:return`The coding engine could not be downloaded: ${e.error??`unknown error`}. The next message tries again.`;default:return null}}function rU(){let{state:e}=q(),t=e.engineDownload;if(!t)return null;let n=nU(t);if(!n)return null;let r=t.phase===`failed`,i=t.phase===`download`&&t.totalBytes?Math.min(100,Math.round(t.receivedBytes/t.totalBytes*100)):null;return(0,K.jsxs)(`div`,{className:`mx-4 mb-2 rounded-md border px-3 py-2 text-xs `+(r?`border-danger/40 bg-danger/10 text-danger`:`border-accent/40 bg-accent/10 text-fg`),role:`status`,"data-testid":`engine-download`,children:[(0,K.jsx)(`div`,{children:n}),i===null?null:(0,K.jsx)(`div`,{className:`mt-1 h-1 w-full overflow-hidden rounded bg-fg/10`,children:(0,K.jsx)(`div`,{className:`h-full bg-accent`,style:{width:i+`%`}})})]})}var iU=524288,aU={shown:null,bytes:0,pixels:null,error:null,loading:!1},oU=[{value:`source`,label:`Source`},{value:`preview`,label:`Preview`}],sU=`preview`;function cU(){let{state:e,actions:t,api:n}=q(),r=AS(),i=kS(),a=i?e.files[i]:void 0,o=a?.active??null,s=r?.status===`running`||r?.status===`waiting_permission`,[c,l]=(0,v.useState)({sessionId:i,files:{}}),u=c.sessionId===i?c.files:{},[d,f]=(0,v.useState)(sU),p=e=>{sU=e,f(e)},m=(0,v.useRef)(i);m.current=i;let h=(e,t,n)=>l(r=>{let i=r.sessionId===e?r.files:{};return{sessionId:e,files:{...i,[t]:n(i[t]??aU)}}}),g=async e=>{if(!i)return;let t=i;h(t,e,e=>({...e,loading:!0,error:null}));try{let r=await lU(n,t,e);if(m.current!==t)return;h(t,e,e=>{let t=e.shown!==null&&fU(e.shown,r.shown);return{shown:t?e.shown:r.shown,bytes:r.bytes,pixels:t?e.pixels:null,error:null,loading:!1}})}catch(n){if(m.current!==t)return;let r=n instanceof Error?n.message:String(n);h(t,e,e=>({...e,error:r,loading:!1}))}},_=(e,t,n)=>{if(!i||t<=0||n<=0)return;let r=i;l(i=>{let a=i.sessionId===r?i.files[e]:void 0;return!a||a.pixels?.w===t&&a.pixels.h===n?i:{...i,files:{...i.files,[e]:{...a,pixels:{w:t,h:n}}}}})},y=JSON.stringify(a?.open??[]);(0,v.useEffect)(()=>{let e=new Set(JSON.parse(y));l(t=>{let n=Object.keys(t.files).filter(t=>e.has(t));return n.length===Object.keys(t.files).length?t:{...t,files:Object.fromEntries(n.map(e=>[e,t.files[e]]))}})},[y]);let b=(0,v.useRef)(s);if((0,v.useEffect)(()=>{let e=b.current&&!s;b.current=s,o&&(e||!u[o])&&g(o)},[o,s,i]),!i||!a||!o)return null;let x=u[o],S=x?.shown??null,C=S?.kind===`text`&&S.markdown;return(0,K.jsxs)(`section`,{className:`flex min-h-0 min-w-0 flex-1 flex-col bg-bg`,"aria-label":`File viewer`,"data-testid":`file-viewer`,children:[(0,K.jsxs)(`div`,{className:`flex h-8 shrink-0 items-center gap-2 border-b border-border px-3 font-mono text-[11px] text-fg-faint`,children:[(0,K.jsx)(Y.File,{className:`w-3.5 h-3.5 shrink-0`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,title:o,children:o}),x?.pixels?(0,K.jsxs)(`span`,{className:`shrink-0`,"data-testid":`file-viewer-pixels`,children:[x.pixels.w,` × `,x.pixels.h]}):null,S?(0,K.jsx)(`span`,{className:`shrink-0`,children:gF(x.bytes)}):null,C?(0,K.jsx)(`span`,{className:`shrink-0 font-sans`,children:(0,K.jsx)(XS,{label:`Markdown view`,value:d,options:oU,onChange:p})}):null,(0,K.jsx)(`span`,{className:`shrink-0 rounded bg-surface-2 px-1 text-[10px] uppercase tracking-wide`,children:`read-only`}),(0,K.jsx)(US,{label:`Re-read this file`,className:`p-1`,onClick:()=>void g(o),"data-testid":`file-viewer-refresh`,children:(0,K.jsx)(Y.Refresh,{className:`w-3.5 h-3.5`})}),(0,K.jsx)(US,{label:`Back to the chat`,className:`p-1`,onClick:()=>t.showChat(),"data-testid":`file-viewer-back`,children:(0,K.jsx)(Y.X,{className:`w-3.5 h-3.5`})})]}),(0,K.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto px-3 py-2`,"data-testid":`file-viewer-body`,children:(0,K.jsx)(pU,{path:o,loaded:x,markdownMode:d,onPixels:(e,t)=>_(o,e,t)},`${i}\n${o}`)})]})}async function lU(e,t,n){let r=iF(n),i=e.readSessionFileBytes?async()=>new Uint8Array(await e.readSessionFileBytes(t,n)):null;if(i&&r.mime!==null){let e=await i();return{shown:uU(r.kind,r.mime,e),bytes:e.byteLength}}if(i&&r.kind===`unknown`)return dU(await i(),!1);if(!e.readSessionFile)throw Error(`This host cannot read files — update it.`);let a=await e.readSessionFile(t,n),o=r.kind===`markdown`;return pF(a)?i?dU(await i(),o):{shown:{kind:`binary`},bytes:a.length}:{shown:{kind:`text`,text:a,markdown:o},bytes:a.length}}function uU(e,t,n){return e===`pdf`?{kind:`pdf`}:{kind:e,blob:new Blob([n],{type:t}),digest:hF(n)}}function dU(e,t){let n=uF(e);if(n)return{shown:uU(n.kind,n.mime,e),bytes:e.length};let r=mF(e);return{shown:r===null?{kind:`binary`}:{kind:`text`,text:r,markdown:t},bytes:e.length}}function fU(e,t){return`digest`in e&&`digest`in t&&e.kind===t.kind&&e.digest===t.digest}function pU({path:e,loaded:t,markdownMode:n,onPixels:r}){if(!t||t.loading&&t.shown===null)return(0,K.jsx)(mU,{children:`Reading…`});if(t.error&&t.shown===null)return(0,K.jsx)(mU,{tone:`danger`,testId:`file-viewer-error`,children:t.error});let i=t.shown;if(!i)return null;let a=GP(e),o=gF(t.bytes);switch(i.kind){case`image`:return(0,K.jsx)(vU,{blob:i.blob,name:a,onPixels:r},i.digest);case`audio`:case`video`:return(0,K.jsx)(yU,{kind:i.kind,blob:i.blob,name:a,size:o},i.digest);case`pdf`:return(0,K.jsxs)(mU,{testId:`file-viewer-pdf`,children:[a,` is a PDF document (`,o,`). The viewer cannot show PDF files — copy its path from the file list to open it in a PDF reader.`]});case`binary`:return(0,K.jsxs)(mU,{testId:`file-viewer-binary`,children:[a,` is not a text file (`,o,`), and not a picture or a clip the viewer can show.`]});case`text`:return(0,K.jsx)(hU,{path:e,text:i.text,markdown:i.markdown,mode:n})}}function mU({children:e,tone:t,testId:n}){return(0,K.jsx)(`div`,{className:t===`danger`?`py-4 text-xs text-danger`:`py-4 text-xs text-fg-faint`,"data-testid":n,children:e})}function hU({path:e,text:t,markdown:n,mode:r}){let i=t.length>iU,a=i?t.slice(0,iU):t;return(0,K.jsxs)(K.Fragment,{children:[n&&r===`preview`?(0,K.jsx)(`div`,{className:`max-w-3xl py-2 text-sm`,"data-testid":`file-viewer-markdown`,children:(0,K.jsx)(LI,{text:a})}):(0,K.jsx)(AI,{code:a,language:nF(e)}),i?(0,K.jsxs)(`div`,{className:`pb-2 text-[11px] text-fg-faint`,children:[`Showing the first `,gF(iU),` of `,gF(t.length),`.`]}):null]})}function gU(e){let[t,n]=(0,v.useState)(null);return(0,v.useEffect)(()=>{let t=URL.createObjectURL(e);return n(t),()=>URL.revokeObjectURL(t)},[e]),t}var _U={backgroundImage:`repeating-conic-gradient(rgb(128 128 128 / 0.22) 0% 25%, transparent 0% 50%)`,backgroundSize:`16px 16px`};function vU({blob:e,name:t,onPixels:n}){let r=gU(e),[i,a]=(0,v.useState)(!1);return i?(0,K.jsxs)(mU,{testId:`file-viewer-image-error`,children:[t,` could not be drawn — it may be damaged, or not the kind of picture its name says.`]}):r?(0,K.jsx)(`div`,{className:`flex h-full min-h-0 items-center justify-center`,children:(0,K.jsx)(`img`,{src:r,alt:t,draggable:!1,"data-testid":`file-viewer-image`,className:`block max-h-full max-w-full object-contain`,style:_U,onLoad:e=>n(e.currentTarget.naturalWidth,e.currentTarget.naturalHeight),onError:()=>a(!0)})}):null}function yU({kind:e,blob:t,name:n,size:r}){let i=gU(t),[a,o]=(0,v.useState)(null);if((0,v.useEffect)(()=>{let e=e=>{e.effectiveDirective===`media-src`&&e.blockedURI.startsWith(`blob`)&&o(`policy`)};return document.addEventListener(`securitypolicyviolation`,e),()=>document.removeEventListener(`securitypolicyviolation`,e)},[]),a)return(0,K.jsx)(mU,{testId:`file-viewer-media-error`,children:a===`policy`?`${n} (${r}) cannot be played in this window: its security policy does not allow audio or video yet.`:`${n} (${r}) cannot be played here: its format or codec is not one Chromium plays.`});if(!i)return null;let s=()=>o(e=>e??`format`);return e===`audio`?(0,K.jsx)(`div`,{className:`flex h-full min-h-0 items-center justify-center`,children:(0,K.jsx)(`audio`,{src:i,controls:!0,preload:`metadata`,onError:s,"data-testid":`file-viewer-audio`,className:`w-full max-w-xl`})}):(0,K.jsx)(`div`,{className:`flex h-full min-h-0 items-center justify-center`,children:(0,K.jsx)(`video`,{src:i,controls:!0,preload:`metadata`,onError:s,"data-testid":`file-viewer-video`,className:`block max-h-full max-w-full bg-black`})})}function bU(e,t){return t.scrollWidth<=t.clientWidth||Math.abs(e.deltaX)>Math.abs(e.deltaY)||e.deltaY===0?0:e.deltaMode===1?e.deltaY*16:e.deltaMode===2?e.deltaY*t.clientWidth:e.deltaY}function xU(e){let t=e.split(/[\\/]+/).filter(Boolean);return t[t.length-1]??e}function SU({groupId:e,compact:t=!1,split:n=!1,dropIndex:r=null}={}){let{state:i,actions:a}=q(),o=MS(),s=jS(),c=i.layout,l=e&&c.groups[e]?e:c.focused,u=c.groups[l],d=c.focused===l,f=kS(),p=o?.projectDir??(s?.projectDir?s.cwd:null)??null,m=p?xU(p):`no folder`,h=u?.activeId??null,g=h?i.files[h]:void 0,_=g?.active??null,y=i.pageGroup&&c.groups[i.pageGroup]?i.pageGroup:c.focused,b=i.page!==null&&y===l?i.page:null,x=b===null?null:b.kind===`projects`?`Projects`:b.kind===`scheduled`?`Scheduled`:i.vaultProjects.find(e=>e.id===b.projectId)?.name??`Project`,[S,C]=(0,v.useState)(null),[w,T]=(0,v.useState)(null),E=(0,v.useCallback)(()=>T(null),[]),[D,O]=(0,v.useState)(null),k=D?i.remote.tabs[D.id]??null:null,A=(0,v.useRef)(null);(0,v.useEffect)(()=>{A.current?.scrollIntoView({block:`nearest`,inline:`nearest`})},[_]);let j=typeof window<`u`?window.oonacode:void 0,M=typeof j?.openTabsInNewWindow==`function`,N=i.windowRole===`popout`&&typeof j?.moveTabsToMainWindow==`function`,ee=w?.kind===`chat`?wy(c,w.id)??l:l,P=c.groups[ee]?.ids??[],F=ky(c,ee),I=w?w.kind===`chat`?[{key:`rename`,label:`Rename…`,icon:(0,K.jsx)(Y.Edit,{className:`w-3.5 h-3.5`}),onSelect:()=>{a.selectSession(w.id),C(w.id)},testId:`tab-menu-rename`},{key:`split-right`,label:`Split right`,icon:(0,K.jsx)(Y.Columns,{className:`w-3.5 h-3.5`}),separated:!0,onSelect:()=>a.splitTab(`right`,w.id),testId:`tab-menu-split-right`},{key:`split-down`,label:`Split down`,onSelect:()=>a.splitTab(`bottom`,w.id),testId:`tab-menu-split-down`},{key:`move-other-group`,label:`Move to other group`,disabled:F===null,onSelect:()=>a.moveTabToOtherGroup(w.id),testId:`tab-menu-move-other-group`},...M?[{key:`move-new-window`,label:`Move to new window`,icon:(0,K.jsx)(Y.WindowOut,{className:`w-3.5 h-3.5`}),onSelect:()=>void a.moveTabToNewWindow(w.id),testId:`tab-menu-move-new-window`}]:[],...N?[{key:`move-main-window`,label:`Move to main window`,onSelect:()=>void a.moveTabToMainWindow(w.id),testId:`tab-menu-move-main-window`}]:[],{key:`close`,label:`Close`,icon:(0,K.jsx)(Y.X,{className:`w-3.5 h-3.5`}),separated:!0,onSelect:()=>a.closeTab(w.id),testId:`tab-menu-close`},{key:`close-others`,label:`Close other tabs`,disabled:P.length<2,onSelect:()=>{for(let e of P)e!==w.id&&a.closeTab(e)},testId:`tab-menu-close-others`},{key:`close-all`,label:`Close all tabs`,onSelect:()=>{for(let e of P)a.closeTab(e)},testId:`tab-menu-close-all`},{key:`delete`,label:`Delete`,icon:(0,K.jsx)(Y.Trash,{className:`w-3.5 h-3.5`}),danger:!0,separated:!0,onSelect:()=>{i.drafts[w.id]?a.closeTab(w.id):O({id:w.id,title:w.title})},testId:`tab-menu-delete`}]:[{key:`close`,label:`Close`,icon:(0,K.jsx)(Y.X,{className:`w-3.5 h-3.5`}),onSelect:()=>a.closeFile(w.path,h??void 0),testId:`tab-menu-close`},{key:`close-others`,label:`Close other files`,disabled:(g?.open.length??0)<2,onSelect:()=>{for(let e of g?.open??[])e!==w.path&&a.closeFile(e,h??void 0)},testId:`tab-menu-close-others`},{key:`close-all`,label:`Close all files`,onSelect:()=>{for(let e of g?.open??[])a.closeFile(e,h??void 0)},testId:`tab-menu-close-all`}]:[],te=(0,v.useMemo)(()=>t?Cy(c):u?.ids??[],[t,c,u]),ne=(0,v.useMemo)(()=>new Set(Oy(c)),[c]),re=(0,v.useMemo)(()=>te.map(e=>{let n=i.drafts[e],r=i.transcripts[e]?.session??i.sessions.find(t=>t.id===e)??null,a=i.transcripts[e]?.status??r?.status??`idle`;return{id:e,draft:n!==void 0,title:n?ov(n):r?Q_(r):`Session ${e.slice(0,8)}`,customTitle:n?n.title??``:r?.title??``,cwd:n?n.projectDir??``:r?.cwd??``,running:a===`running`||a===`waiting_permission`,waiting:a===`waiting_permission`,error:a===`error`,finished:ne.has(e)?null:Sb(r,a),group:t?wy(c,e)??l:l}}),[te,i.drafts,i.transcripts,i.sessions,t,c,l,ne]),L=(0,v.useCallback)((e,t)=>{C(null),a.renameTab(e,t)},[a]),R=f?i.remote.tabs[f]??null:null,z=(0,v.useRef)(null),B=t?c.groups[c.focused]?.activeId??null:u?.activeId??null;(0,v.useEffect)(()=>{z.current?.scrollIntoView({block:`nearest`,inline:`nearest`})},[B]);let ie=(e,t)=>{if(!Vb())return;let n=typeof window<`u`?window:null;a.tabDraggedOut(t,{screenX:Number.isFinite(e.screenX)?e.screenX:null,screenY:Number.isFinite(e.screenY)?e.screenY:null,outside:n?Ub(e,n):!1})},ae=(0,v.useRef)(null),oe=(0,v.useRef)(null);return(0,v.useEffect)(()=>{let e=ae.current;if(!e)return;let t=e=>{let t=oe.current;if(!t)return;let n=bU(e,t);n!==0&&(e.preventDefault(),t.scrollLeft+=n)},n=e=>{e.button===1&&e.preventDefault()};return e.addEventListener(`wheel`,t,{passive:!1}),e.addEventListener(`mousedown`,n),()=>{e.removeEventListener(`wheel`,t),e.removeEventListener(`mousedown`,n)}},[]),(0,K.jsxs)(`div`,{ref:ae,className:G(`flex h-9 shrink-0 items-stretch gap-1 border-b border-border bg-surface px-1`,n&&(d?`shadow-[inset_0_2px_0_var(--accent)]`:`opacity-95`)),role:`tablist`,"aria-label":`Open chats`,"data-testid":`tab-bar`,"data-group":l,children:[(0,K.jsxs)(`div`,{ref:oe,className:`flex min-w-0 flex-1 items-stretch gap-1 overflow-x-auto`,"data-testid":`tabs-scroller`,"data-tab-strip":!0,children:[b===null?null:(0,K.jsxs)(`div`,{role:`tab`,"aria-selected":!0,tabIndex:0,onAuxClick:e=>{e.button===1&&(e.preventDefault(),a.closePage())},className:`group relative flex min-w-[7rem] max-w-[15rem] shrink-0 items-center gap-1.5 rounded-t-md border-b-2 border-accent bg-surface-2 px-2 text-xs text-fg`,"data-testid":`page-tab`,children:[(0,K.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-1.5 py-1`,children:[b.kind===`scheduled`?(0,K.jsx)(Y.Clock,{className:`w-3 h-3 shrink-0 text-fg-faint`}):(0,K.jsx)(Y.Project,{className:`w-3 h-3 shrink-0 text-project`}),(0,K.jsx)(`span`,{className:`truncate`,children:Y_(x??``,28)})]}),(0,K.jsx)(US,{label:`Close ${x??`page`}`,className:`p-0.5`,onClick:()=>a.closePage(),"data-testid":`page-tab-close`,children:(0,K.jsx)(Y.X,{className:`w-3 h-3`})})]}),re.map((e,i)=>{let o=e.id===B&&_===null&&b===null,s=S===e.id,c=t?te.filter((e,t)=>t<i&&re[t]?.group===l).length:i,u=r!==null&&e.group===l&&r===c;return(0,K.jsxs)(`div`,{ref:e.id===B?z:void 0,role:`tab`,"aria-selected":o,tabIndex:o?0:-1,draggable:!s,"data-tab-id":e.id,"data-tab-group":e.group,onDragStart:t=>zb(t.dataTransfer,{tabId:e.id,groupId:e.group}),onDragEnd:t=>ie(t,e.id),onContextMenu:t=>{t.preventDefault(),T({kind:`chat`,id:e.id,title:e.title,at:{x:t.clientX,y:t.clientY},el:t.currentTarget})},onAuxClick:t=>{t.button===1&&(t.preventDefault(),a.closeTab(e.id))},className:G(`group relative flex min-w-[7rem] max-w-[15rem] shrink-0 items-center gap-1.5 rounded-t-md border-b-2 px-2 text-xs`,o?n&&!d?`border-fg-faint bg-surface-2 text-fg`:`border-accent bg-surface-2 text-fg`:`border-transparent text-fg-muted hover:bg-surface-2`),"data-testid":`tab-${e.id}`,children:[u?(0,K.jsx)(CU,{}):null,s?(0,K.jsx)(wU,{initial:e.customTitle,placeholder:e.title,onCommit:t=>L(e.id,t),onCancel:()=>C(null)}):(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{a.selectSession(e.id),a.showChat(e.id)},onDoubleClick:()=>C(e.id),title:e.cwd?`${e.title}\n${e.cwd}`:`${e.title}\nDouble-click to rename`,className:`flex min-w-0 flex-1 items-center gap-1.5 py-1 text-left`,children:[e.running?(0,K.jsx)(Y.Spinner,{className:G(`w-3 h-3 shrink-0`,e.waiting?`text-warn`:`text-accent`),title:`Agent running`}):e.finished?(0,K.jsx)(`span`,{className:`flex w-3 shrink-0 justify-center`,children:(0,K.jsx)(LB,{mark:e.finished,testId:`tab-finished-${e.id}`})}):e.error?(0,K.jsx)(Y.Alert,{className:`w-3 h-3 shrink-0 text-danger`}):(0,K.jsx)(`span`,{className:`w-3 shrink-0`,"aria-hidden":!0}),(0,K.jsx)(`span`,{className:`truncate`,children:Y_(e.title,28)})]}),(0,K.jsx)(US,{label:`Close ${e.title}`,className:`p-0.5 opacity-0 group-hover:opacity-100 focus:opacity-100`,onClick:()=>a.closeTab(e.id),children:(0,K.jsx)(Y.X,{className:`w-3 h-3`})})]},e.id)}),r!==null&&r>=(u?.ids.length??0)?(0,K.jsx)(`div`,{className:`relative w-2 shrink-0`,"aria-hidden":!0,children:(0,K.jsx)(CU,{})}):null,g?.open.map(e=>{let t=_===e&&b===null,n=GP(e);return(0,K.jsxs)(`div`,{ref:t?A:void 0,role:`tab`,"aria-selected":t,tabIndex:t?0:-1,title:e,onContextMenu:t=>{t.preventDefault(),T({kind:`file`,path:e,at:{x:t.clientX,y:t.clientY},el:t.currentTarget})},onAuxClick:t=>{t.button===1&&(t.preventDefault(),a.closeFile(e,h??void 0))},className:G(`group relative flex min-w-[6rem] max-w-[14rem] shrink-0 items-center gap-1.5 rounded-t-md border-b-2 px-2 text-xs`,t?`border-accent bg-surface-2 text-fg`:`border-transparent text-fg-muted hover:bg-surface-2`),"data-testid":`file-tab-${e}`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>a.activateFile(e,h??void 0),className:`flex min-w-0 flex-1 items-center gap-1.5 py-1 text-left`,children:[(0,K.jsx)(Y.File,{className:`w-3 h-3 shrink-0 text-fg-faint`}),(0,K.jsx)(`span`,{className:`truncate`,children:Y_(n,28)})]}),(0,K.jsx)(US,{label:`Close ${n}`,className:`p-0.5 opacity-0 group-hover:opacity-100 focus:opacity-100`,onClick:()=>a.closeFile(e,h??void 0),"data-testid":`file-tab-close-${e}`,children:(0,K.jsx)(Y.X,{className:`w-3 h-3`})})]},`file:${e}`)})]}),(0,K.jsx)(iw,{open:w!==null,at:w?.at??{x:0,y:0},anchorEl:w?.el??null,label:`Tab actions`,onClose:E,items:I.map(e=>({...e,onSelect:()=>{E(),e.onSelect()}}))}),(0,K.jsx)(QS,{open:D!==null,title:D?`Delete "${Y_(D.title,60)}"?`:`Delete this chat?`,message:k?`It is deleted on ${k.hostName} — the only place it is kept — so it is gone from every device. Files, folders and code on that PC are not touched — only the chat is deleted.`:`It is deleted from this PC — the only place it is kept — so it is gone from every device. Your files, folder and code are not touched — only the chat is deleted.`,onConfirm:()=>{D&&(k?a.deleteRemoteSession(k.hostId,k.sessionId):a.deleteSession(D.id))},onClose:()=>O(null)}),(0,K.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5 pl-1`,children:[(0,K.jsx)(US,{label:`New chat`,onClick:()=>{a.focusGroup(l),a.newTab()},"data-testid":`new-tab`,children:(0,K.jsx)(Y.Plus,{className:`w-4 h-4`})}),(0,K.jsxs)(`button`,{hidden:b!==null,type:`button`,title:R?`Choose a project folder in OonaCode on ${R.hostName}`:p?`${p} — click to change the folder`:`No project folder: this chat runs in its own workspace. Click to use one of your folders.`,"aria-label":R?`Choose a project folder in OonaCode on ${R.hostName}`:`Use a project folder…`,disabled:R!==null,onClick:()=>a.openDialog(`project`),className:`flex max-w-[220px] items-center gap-1 rounded-md border border-border px-2 py-1 text-xs text-fg-muted hover:border-accent/60 hover:text-fg disabled:opacity-50`,"data-testid":`open-project-dialog`,children:[(0,K.jsx)(Y.Folder,{className:`w-3.5 h-3.5 shrink-0`}),(0,K.jsx)(`span`,{className:`hidden truncate sm:inline`,"data-testid":`folder-chip`,children:m})]})]})]})}function CU(){return(0,K.jsx)(`span`,{"aria-hidden":!0,className:`pointer-events-none absolute -left-[3px] top-1 bottom-1 w-[3px] rounded bg-accent`,"data-testid":`tab-drop-mark`})}function wU({initial:e,placeholder:t,onCommit:n,onCancel:r}){let[i,a]=(0,v.useState)(e),o=(0,v.useRef)(null),s=(0,v.useRef)(!1);return(0,v.useEffect)(()=>{o.current?.focus(),o.current?.select()},[]),(0,K.jsx)(`input`,{ref:o,"aria-label":`Rename tab`,"data-testid":`tab-title-input`,className:`min-w-0 flex-1 rounded border border-accent bg-bg px-1 py-0.5 text-xs outline-none`,value:i,maxLength:500,placeholder:t,spellCheck:!1,onChange:e=>a(e.target.value),onKeyDown:e=>{e.stopPropagation(),e.key===`Enter`?(e.preventDefault(),n(i)):e.key===`Escape`&&(e.preventDefault(),s.current=!0,r())},onBlur:()=>{s.current||n(i)}})}function TU({page:e}){return e.kind===`projects`?(0,K.jsx)(oV,{}):e.kind===`project`?(0,K.jsx)(cV,{projectId:e.projectId},e.projectId):(0,K.jsx)(mV,{})}function EU(e){let[t,n]=(0,v.useState)(null);return(0,v.useLayoutEffect)(()=>{let t=e.current;if(!t||typeof ResizeObserver>`u`)return;let r=()=>{let e=t.getBoundingClientRect(),r=Math.round(e.width),i=Math.round(e.height);(r!==0||i!==0)&&n(e=>e&&e.width===r&&e.height===i?e:{width:r,height:i})};r();let i=new ResizeObserver(r);return i.observe(t),()=>i.disconnect()},[e]),t}function DU(){let{state:e}=q(),t=(0,v.useRef)(null),n=EU(t),r=e.layout,i=r.root.type===`split`,a=i&&n!==null&&nb(r,n.width,n.height);return(0,K.jsx)(`div`,{ref:t,className:`relative flex min-h-0 min-w-0 flex-1`,"data-testid":`editor-area`,"data-groups":Sy(r).length,"data-compact":a?`true`:`false`,children:i&&!a?(0,K.jsx)(OU,{node:r.root,path:[]}):(0,K.jsx)(PU,{groupId:r.focused,compact:a})})}function OU({node:e,path:t}){return e.type===`group`?(0,K.jsx)(PU,{groupId:e.id,compact:!1,split:!0}):(0,K.jsx)(jU,{node:e,path:t})}function kU(e){return e.type===`group`?e.id:`split:${kU(e.children[0])}`}var AU=4;function jU({node:e,path:t}){let{actions:n}=q(),r=e.direction===`row`,i=(0,v.useRef)(null),a=(0,v.useRef)([]),o=(0,v.useCallback)(o=>s=>{let c=i.current;if(!c||s.button!==0)return;s.preventDefault();let l=s.currentTarget,u=(r?c.clientWidth:c.clientHeight)-AU*(e.children.length-1);if(u<=0)return;let d=r?s.clientX:s.clientY,f=[...e.sizes],p=(f[o]??0)+(f[o+1]??0),m=e=>(r?tb(e).width:tb(e).height)/u,h=m(e.children[o]),g=m(e.children[o+1]),_=f,v=e=>{let t=((r?e.clientX:e.clientY)-d)/u,n=p<=h+g?p/2:Math.min(p-g,Math.max(h,(f[o]??0)+t));_=[...f],_[o]=n,_[o+1]=p-n;let i=a.current[o],s=a.current[o+1];i&&(i.style.flexGrow=String(_[o])),s&&(s.style.flexGrow=String(_[o+1]))},y=()=>{l.removeEventListener(`pointermove`,v),l.removeEventListener(`pointerup`,y),l.removeEventListener(`pointercancel`,y),n.resizeSplit(t,_)};try{l.setPointerCapture(s.pointerId)}catch{}l.addEventListener(`pointermove`,v),l.addEventListener(`pointerup`,y),l.addEventListener(`pointercancel`,y)},[n,e,t,r]);return(0,K.jsx)(`div`,{ref:i,className:G(`flex min-h-0 min-w-0 flex-1`,r?`flex-row`:`flex-col`),"data-split":e.direction,children:e.children.map((i,s)=>(0,K.jsxs)(v.Fragment,{children:[s>0?(0,K.jsx)(`div`,{role:`separator`,"aria-orientation":r?`vertical`:`horizontal`,"aria-label":`Resize the groups (double-click: make them equal)`,title:`Drag to resize · double-click to make them equal`,onPointerDown:o(s-1),onDoubleClick:()=>n.equalizeSplit(t),className:G(`shrink-0 bg-border transition-colors hover:bg-accent/60`,r?`w-1 cursor-col-resize`:`h-1 cursor-row-resize`),"data-testid":`split-divider-${t.join(`.`)||`root`}-${s-1}`}):null,(0,K.jsx)(`div`,{ref:e=>{a.current[s]=e},className:`flex min-h-0 min-w-0`,style:{flexGrow:e.sizes[s]??1,flexShrink:1,flexBasis:0},"data-split-cell":s,children:(0,K.jsx)(OU,{node:i,path:[...t,s]})})]},kU(i)))})}function MU(e,t){return e===t?!0:!e||!t?!1:e.groupId===t.groupId&&e.zone===t.zone&&e.index===t.index}function NU({target:e}){let t=ab(e.zone);return(0,K.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute z-40 rounded-md border-2 border-accent/70 bg-accent/15 transition-all duration-100`,style:{left:`${t.left*100}%`,top:`${t.top*100}%`,width:`${t.width*100}%`,height:`${t.height*100}%`},"data-testid":`drop-overlay`,"data-zone":e.zone})}function PU({groupId:e,compact:t,split:n=!1}){let{state:r,actions:i}=q(),a=(0,v.useRef)(null),o=r.layout,s=o.groups[e],c=o.focused===e,l=s?.activeId??null,u=r.pageGroup&&o.groups[r.pageGroup]?r.pageGroup:o.focused,d=r.page!==null&&u===e?r.page:null,[f,p]=(0,v.useState)(null);(0,v.useEffect)(()=>{if(f===null||typeof document>`u`)return;let e=()=>p(null);return document.addEventListener(`dragend`,e,!0),document.addEventListener(`drop`,e,!0),()=>{document.removeEventListener(`dragend`,e,!0),document.removeEventListener(`drop`,e,!0)}},[f]);let m=e=>{if(!Hb(e.dataTransfer))return;e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect=`move`;let t=a.current,n=t?Wb(t,e.clientX,e.clientY):null,r=Bb(),i=n&&(!r||Xy(o,r.tabId,n))?n:null;p(e=>MU(e,i)?e:i)},h=e=>{let t=e.relatedTarget;t instanceof Node&&a.current?.contains(t)||p(null)},g=e=>{if(!Hb(e.dataTransfer))return;e.preventDefault(),e.stopPropagation(),p(null);let t=Bb();if(!t)return;let n=a.current,r=n?Wb(n,e.clientX,e.clientY):null;Vb(),r&&i.dropTab(t.tabId,r)},_=()=>i.focusGroup(e);return(0,K.jsx)(`section`,{ref:a,className:G(`relative flex min-h-0 min-w-0 flex-1 flex-col`,n&&`outline-offset-[-1px]`),"aria-label":n?`Editor group ${Sy(o).indexOf(e)+1}`:void 0,"data-editor-group":e,"data-focused":c?`true`:`false`,"data-compact":t?`true`:`false`,"data-testid":`editor-group-${e}`,onPointerDownCapture:_,onFocusCapture:_,onDragEnterCapture:e=>{Hb(e.dataTransfer)&&e.preventDefault()},onDragOverCapture:m,onDragLeave:h,onDropCapture:g,children:(0,K.jsx)(v.Profiler,{id:e,onRender:tw,children:(0,K.jsxs)(DS,{sessionId:d?null:l,groupId:e,focused:c,children:[(0,K.jsx)(SU,{groupId:e,compact:t,split:n,dropIndex:f?.zone===`center`&&f.index!==void 0?f.index:null}),(0,K.jsxs)(`div`,{className:`relative flex min-h-0 min-w-0 flex-1 flex-col`,"data-group-body":!0,children:[d?(0,K.jsx)(TU,{page:d}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(cw,{}),l&&r.files[l]?.active?(0,K.jsx)(cU,{}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(QH,{}),c?(0,K.jsx)(rU,{}):null,(0,K.jsx)(PB,{},l??`none`)]})]}),f&&f.index===void 0?(0,K.jsx)(NU,{target:f}):null]})]})})})}function FU({open:e,onClose:t}){let{state:n,actions:r}=q();(0,v.useEffect)(()=>{e&&r.runDoctor()},[e,r]);let i=n.doctor,a=i?.filter(e=>!e.ok).length??0;return(0,K.jsxs)(JS,{open:e,title:`Doctor`,onClose:t,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(X,{onClick:()=>void r.runDoctor(),children:[(0,K.jsx)(Y.Refresh,{className:`w-3.5 h-3.5`}),` Run again`]}),(0,K.jsx)(X,{variant:`primary`,onClick:t,children:`Close`})]}),children:[n.info?(0,K.jsxs)(`div`,{className:`mb-3 grid grid-cols-1 gap-x-4 gap-y-0.5 text-xs text-fg-muted sm:grid-cols-2`,children:[(0,K.jsxs)(`div`,{children:[`Host: `,n.info.hostName,` (`,n.info.platform,`/`,n.info.arch,`)`]}),(0,K.jsxs)(`div`,{children:[`App: `,Gx(n.info.appVersion,n.info.cliChannel),n.info.cliChannel&&n.info.cliChannel!==`stable`?` — ${n.info.cliChannel} channel (updates stay within it)`:``]}),(0,K.jsxs)(`div`,{className:`truncate`,title:n.info.engine.binaryPath,children:[`Engine: `,n.info.engine.version??`unknown`,` — `,n.info.engine.binaryPath]}),(0,K.jsxs)(`div`,{className:`truncate`,title:n.info.engine.configDir,children:[`Isolated config dir: `,n.info.engine.configDir]}),(0,K.jsxs)(`div`,{children:[`Listening: `,n.info.addresses.join(`, `),`:`,n.info.port]})]}):null,i===null?(0,K.jsxs)(`div`,{className:`flex items-center gap-2 py-6 text-sm text-fg-muted`,children:[(0,K.jsx)(Y.Spinner,{}),` Running checks…`]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`mb-2 text-sm`,children:a===0?(0,K.jsxs)(`span`,{className:`text-ok`,children:[`All `,i.length,` checks passed.`]}):(0,K.jsxs)(`span`,{className:`text-danger`,children:[a,` of `,i.length,` checks need attention.`]})}),(0,K.jsx)(`ul`,{className:`divide-y divide-border rounded-md border border-border`,children:i.map(e=>(0,K.jsxs)(`li`,{className:`flex items-start gap-2 px-3 py-2 text-sm`,children:[e.ok?(0,K.jsx)(Y.Check,{className:`mt-0.5 text-ok`}):(0,K.jsx)(Y.Alert,{className:`mt-0.5 text-danger`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`div`,{className:`font-medium`,children:e.label}),(0,K.jsx)(`div`,{className:`pre-wrap text-xs text-fg-muted`,children:e.detail}),!e.ok&&e.fix?(0,K.jsx)(`div`,{className:`mt-1 pre-wrap rounded bg-surface-2 px-2 py-1 font-mono text-xs`,children:e.fix}):null]})]},e.id))})]})]})}function IU({open:e,onClose:t}){let{state:n,actions:r}=q(),i=jS(),a=MS(),o=n.currentSessionId,[s,c]=(0,v.useState)(``),[l,u]=(0,v.useState)(!1),[d,f]=(0,v.useState)(!1),[p,m]=(0,v.useState)(null),h=a?a.projectDir??null:i?.cwd??null,g=!a&&i!==null&&!i.projectDir;(0,v.useEffect)(()=>{e&&(c(h??``),m(null),u(!1),f(!1))},[e,h]);let _=(0,v.useCallback)(async e=>{let t=e.trim();if(t){u(!0),m(null);try{m(await r.inspectProject(t))}finally{u(!1)}}},[r]),y=(0,v.useCallback)(async()=>{let e=typeof window<`u`?window.oonacode:void 0;if(!e?.pickDirectory)return;let t=await e.pickDirectory({title:`Choose a project folder`});t&&(c(t),await _(t))},[_]),b=(0,v.useCallback)(async()=>{if(!(!p||!o)){f(!0);try{await r.attachProject(p.dir,o)&&t()}finally{f(!1)}}},[p,o,r,t]),x=o===null?null:n.remote.tabs[o]??null,S=p!==null&&h!==null&&LU(p.dir,h),C=o!==null&&x===null&&p!==null&&!S&&p.exists&&p.isDirectory&&p.anchorable;return(0,K.jsx)(JS,{open:e,title:`Use a project folder`,onClose:t,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(X,{onClick:t,children:C?`Not now`:`Close`}),C?(0,K.jsx)(X,{variant:`primary`,busy:d,onClick:()=>void b(),"data-testid":`project-switch`,children:`Switch to this project`}):null]}),children:x?(0,K.jsxs)(zU,{tone:`warn`,testId:`project-remote`,children:[`This chat runs on `,(0,K.jsx)(`strong`,{children:x.hostName}),`, and a project folder is a folder on that PC. Open OonaCode there and choose it from that window — this one can only see this machine's disk, and the folder has to be where the agent actually works.`]}):(0,K.jsxs)(`form`,{className:`space-y-3`,onSubmit:e=>{e.preventDefault(),_(s)},children:[(0,K.jsxs)(`div`,{className:`rounded-md border border-border bg-surface-2 px-3 py-2 text-xs text-fg-muted space-y-1.5`,children:[(0,K.jsxs)(`p`,{children:[(0,K.jsx)(`strong`,{className:`text-fg`,children:`What a project folder is.`}),` It tells this chat which folder on this PC it is working in. The agent then loads that folder's`,(0,K.jsx)(`span`,{className:`font-mono`,children:` CLAUDE.md`}),` and`,` `,(0,K.jsx)(`span`,{className:`font-mono`,children:`.claude/`}),` settings, and — the part you noticed — it stops asking permission for edits and commands inside that folder, because you have said "this is the project, go ahead here".`]}),(0,K.jsxs)(`p`,{children:[(0,K.jsx)(`strong`,{className:`text-fg`,children:`Where it is used.`}),` Every message in this chat runs with that folder as the working directory: relative paths resolve there, the file tools default there, and its project rules apply. Each chat has its own folder; other chats are unaffected. The chat still keeps running in the app-private workspace until you attach one.`]}),(0,K.jsxs)(`p`,{children:[(0,K.jsx)(`strong`,{className:`text-fg`,children:`Good folders:`}),` the root of a code project you own — a repository or app directory, usually the one with a`,` `,(0,K.jsx)(`span`,{className:`font-mono`,children:`CLAUDE.md`}),` or a`,` `,(0,K.jsx)(`span`,{className:`font-mono`,children:`.claude/`}),` folder, a`,` `,(0,K.jsx)(`span`,{className:`font-mono`,children:`.git`}),` repo, or a`,` `,(0,K.jsx)(`span`,{className:`font-mono`,children:`package.json`}),`.`]}),(0,K.jsxs)(`p`,{children:[(0,K.jsx)(`strong`,{className:`text-fg`,children:`Do not set:`}),` your whole home directory, a drive root (`,(0,K.jsx)(`span`,{className:`font-mono`,children:`C:`}),`),`,` `,(0,K.jsx)(`span`,{className:`font-mono`,children:`Desktop`}),`,`,(0,K.jsx)(`span`,{className:`font-mono`,children:` Downloads`}),`, a system or Program Files folder, or a cloud-synced root — attaching there gives the agent silent, unprompted edit access across far more than a project, which is exactly what the permission prompts exist to prevent. OonaCode already refuses the home directory and drive roots for this reason.`]}),(0,K.jsxs)(`p`,{children:[`A folder buys `,(0,K.jsx)(`strong`,{className:`text-fg`,children:`silence and context, never access`}),`: the agent can already read and write anywhere with your approval — outside a project it just asks first.`]})]}),h===null?null:(0,K.jsxs)(`p`,{className:`text-xs text-fg-muted`,"data-testid":`project-current`,children:[`This chat runs in `,(0,K.jsx)(`span`,{className:`break-all font-mono text-fg`,children:h}),g?` — its own workspace, which OonaCode made for it`:``,`.`]}),(0,K.jsx)(KS,{label:`Folder on this PC`,hint:`An absolute path. Only this machine can see it, so OonaCode asks the host what is there.`,children:(0,K.jsxs)(`div`,{className:`flex gap-2`,children:[(0,K.jsx)(`input`,{className:Z,value:s,onChange:e=>{c(e.target.value),m(null)},placeholder:`D:\\projects\\my-app`,"aria-label":`Project folder`,autoFocus:!0,spellCheck:!1}),window.oonacode?.pickDirectory?(0,K.jsxs)(X,{onClick:()=>void y(),children:[(0,K.jsx)(Y.Folder,{className:`w-4 h-4`}),` Browse`]}):null,(0,K.jsx)(X,{busy:l,disabled:s.trim().length===0,onClick:()=>void _(s),"data-testid":`project-check`,children:`Check`})]})}),p?S?(0,K.jsxs)(zU,{tone:`accent`,testId:`project-verdict`,children:[`This chat already runs in `,(0,K.jsx)(`strong`,{className:`font-mono`,children:p.dir}),g?` — type or browse to the folder you want it to move to.`:`.`]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(RU,{result:p,restarts:i!==null}),o===null?(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,children:`Open a chat first — a folder is attached to one chat, not to the app.`}):null]}):(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,children:`A chat does not need a folder. It already has every file tool, everywhere — outside a project it simply asks before touching a file. Naming a project adds that project's configuration and context; it never adds access that was missing.`})]})})}function LU(e,t){let n=e=>{let t=e.trim().replace(/\\/g,`/`).replace(/\/+$/,``);return/^[a-z]:/i.test(t)?t.toLowerCase():t};return n(e)===n(t)}function RU({result:e,restarts:t}){return!e.exists||!e.isDirectory?(0,K.jsxs)(zU,{tone:`danger`,testId:`project-verdict`,children:[(0,K.jsx)(`strong`,{className:`font-mono`,children:e.dir}),` is not a folder on this PC.`]}):e.anchorable?e.looksLikeProject?(0,K.jsxs)(zU,{tone:`accent`,testId:`project-verdict`,children:[(0,K.jsxs)(`div`,{className:`font-medium`,children:[`Switching this chat to `,e.dir,` loads:`]}),(0,K.jsxs)(`ul`,{className:`mt-1 list-disc space-y-0.5 pl-4`,children:[(0,K.jsxs)(`li`,{children:[`its `,(0,K.jsx)(`code`,{children:e.hasClaudeMd?`CLAUDE.md`:`CLAUDE.md (none at the root)`}),` and the ones above it`]}),(0,K.jsxs)(`li`,{children:[(0,K.jsx)(`code`,{children:`.claude/settings.json`}),` and `,(0,K.jsx)(`code`,{children:`settings.local.json`}),e.hasClaudeDir?``:` (none yet)`]}),(0,K.jsx)(`li`,{children:`that project's skills, sub-agents, slash commands and hooks`}),(0,K.jsx)(`li`,{children:`silence: file operations inside it stop raising a permission card`})]}),(0,K.jsx)(`div`,{className:`mt-1.5`,children:t?`The agent restarts once to pick them up and resumes this conversation exactly where it is — nothing is lost.`:`Your first message starts the chat there.`})]}):(0,K.jsxs)(zU,{tone:`accent`,testId:`project-verdict`,children:[(0,K.jsxs)(`div`,{className:`font-medium`,children:[`Switching this chat to `,e.dir,`:`]}),(0,K.jsxs)(`ul`,{className:`mt-1 list-disc space-y-0.5 pl-4`,children:[(0,K.jsxs)(`li`,{children:[`it has no `,(0,K.jsx)(`code`,{children:`CLAUDE.md`}),` and no `,(0,K.jsx)(`code`,{children:`.claude/`}),` folder yet, so nothing is loaded from it — add them later and the next restart picks them up`]}),(0,K.jsx)(`li`,{children:`silence: file operations inside it stop raising a permission card`})]}),(0,K.jsx)(`div`,{className:`mt-1.5`,children:t?`The agent restarts once and resumes this conversation exactly where it is — nothing is lost.`:`Your first message starts the chat there.`})]}):(0,K.jsxs)(zU,{tone:`danger`,testId:`project-verdict`,children:[`OonaCode will not use `,(0,K.jsx)(`strong`,{className:`font-mono`,children:e.dir}),` as a project:`,` `,e.reason??`it is not a usable project directory`,`.`]})}function zU({tone:e,testId:t,children:n}){return(0,K.jsx)(`div`,{className:`rounded-md border px-3 py-2 text-xs ${e===`danger`?`border-danger/40 bg-danger-soft text-danger`:e===`warn`?`border-warn/50 bg-warn-soft text-warn`:`border-accent/40 bg-accent-soft text-fg`}`,"data-testid":t,children:n})}var BU=(e,t)=>`${e}::${t}`;function VU(e){let t=e.indexOf(`::`);return t<=0||t===e.length-2?null:{providerId:e.slice(0,t),model:e.slice(t+2)}}function HU(e){let t=e?.chatDefaults??{};return{name:e?.name??``,goal:e?.goal??``,instructions:e?.instructions??``,repositories:(e?.repositories??[]).join(`
|
|
162
|
+
`),model:t.providerId&&t.model?BU(t.providerId,t.model):``,effort:t.effort??``,cwd:t.cwd??``,memoryEnabled:e?.memoryEnabled===!0,memory:e?.memory??``,tasksEnabled:e?.tasksEnabled!==!1,minInterval:String(e?.minRoutineIntervalMinutes??15)}}var UU=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e.length>0);function WU(e){let t=VU(e.model);return!t&&!e.effort&&!e.cwd.trim()?null:{providerId:t?.providerId??null,model:t?.model??null,effort:e.effort||null,cwd:e.cwd.trim()||null}}function GU(e){if(!e.name.trim())return`A project needs a name.`;let t=Number(e.minInterval);return!Number.isInteger(t)||t<ac.minIntervalFloor||t>ac.minIntervalCeiling?`The minimum interval is a whole number of minutes, ${ac.minIntervalFloor}–${ac.minIntervalCeiling}.`:UU(e.repositories).length>ac.repositories?`At most ${ac.repositories} repositories.`:null}var KU=(e,t)=>(e?.providerId??null)===(t?.providerId??null)&&(e?.model??null)===(t?.model??null)&&(e?.effort??null)===(t?.effort??null)&&(e?.cwd??null)===(t?.cwd??null);function qU(e,t){let n=HU(t),r={};e.name.trim()!==t.name&&(r.name=e.name.trim()),e.goal!==n.goal&&(r.goal=e.goal),e.instructions!==t.instructions&&(r.instructions=e.instructions);let i=UU(e.repositories);i.join(`
|
|
163
|
+
`)!==(t.repositories??[]).join(`
|
|
164
|
+
`)&&(r.repositories=i);let a=WU(e);KU(t.chatDefaults,a)||(r.chatDefaults=a),e.memoryEnabled!==n.memoryEnabled&&(r.memoryEnabled=e.memoryEnabled),e.memory!==n.memory&&(r.memory=e.memory),e.tasksEnabled!==n.tasksEnabled&&(r.tasksEnabled=e.tasksEnabled);let o=Number(e.minInterval);return String(o)!==n.minInterval&&Number.isInteger(o)&&(r.minRoutineIntervalMinutes=o),r}function JU(e){let t=WU(e),n=UU(e.repositories),r=Number(e.minInterval);return{name:e.name.trim(),instructions:e.instructions,...e.goal.trim()?{goal:e.goal}:{},...n.length>0?{repositories:n}:{},...t?{chatDefaults:t}:{},...e.memoryEnabled?{memoryEnabled:!0}:{},...e.memory?{memory:e.memory}:{},...e.tasksEnabled?{}:{tasksEnabled:!1},...Number.isInteger(r)&&r!==15?{minRoutineIntervalMinutes:r}:{}}}function YU(e,t){if(t===null){let t=HU(null);return Object.keys(t).some(n=>e[n]!==t[n])}return Object.keys(qU(e,t)).length>0}function XU(e){let t=typeof window<`u`?window.oonacode:void 0;t?.openExternal?t.openExternal(e):window.open(e,`_blank`,`noopener,noreferrer`)}function ZU({open:e,onClose:t}){let{state:n,actions:r}=q(),i=n.claudeLogin,a=n.ui.claudeLoginMode,[o,s]=(0,v.useState)(``),[c,l]=(0,v.useState)(!1),[u,d]=(0,v.useState)(!1),[f,p]=(0,v.useState)(!1),[m,h]=(0,v.useState)(null),g=(0,v.useRef)(null),[_,y]=(0,v.useState)(0),[b,x]=(0,v.useState)(null),S=i?.phase===`starting`||i?.phase===`awaiting_browser`||i?.phase===`awaiting_code`,C=i!=null&&(S||b!==null&&i.id===b),w=C?i:null,T=C&&S,E=w?.phase??`idle`,D=T?w?.url??w?.fallbackUrl??null:null,O=E===`connected`,k=O||E===`failed`||E===`cancelled`,A=!a&&!S&&!m,j=k&&!A;(0,v.useEffect)(()=>{if(!e)return;s(``),h(null),p(!1),x(null),g.current=null,r.refreshClaudeLogin();let t=setInterval(()=>void r.refreshClaudeLogin(),2e3);return()=>clearInterval(t)},[e,r]),(0,v.useEffect)(()=>{if(!e||!a)return;let t=!1;return(async()=>{let e=await r.startClaudeLogin();t||!e||(e.login?x(e.login.id):h(e))})(),()=>{t=!0}},[e,a,_,r]),(0,v.useEffect)(()=>{!e||!D||!a||g.current===D||!T||(g.current=D,a===`open`?XU(D):navigator.clipboard?navigator.clipboard.writeText(D).then(()=>{d(!0),r.toast(`info`,`Sign-in link copied — paste it into the browser where you are signed in to Claude`),setTimeout(()=>d(!1),2500)}).catch(()=>r.toast(`error`,`Could not copy — use the Copy button below`)):r.toast(`error`,`Could not copy — select the link and copy it by hand`))},[e,D,a,T,r]),(0,v.useEffect)(()=>{w?.phase===`connected`&&r.refreshClaudeSubscription()},[w?.phase,r]);let M=m?.command?`${m.command.file} ${m.command.args.join(` `)}`:null,N=async()=>{if(D)try{await navigator.clipboard.writeText(D),d(!0),setTimeout(()=>d(!1),1500)}catch{r.toast(`error`,`Could not copy — select the link and copy it by hand`)}},ee=async()=>{if(o.trim()){l(!0);try{await r.submitClaudeLoginCode(o)&&s(``)}finally{l(!1)}}},P=A?(0,K.jsxs)(`div`,{className:`flex w-full flex-wrap items-center justify-end gap-2`,children:[(0,K.jsx)(X,{onClick:t,"data-testid":`claude-login-close`,children:`Close`}),(0,K.jsxs)(X,{onClick:()=>r.openClaudeLogin(`copy`),"data-testid":`claude-login-copy-mode`,children:[(0,K.jsx)(Y.Copy,{className:`w-4 h-4`}),` Copy link`]}),(0,K.jsxs)(X,{variant:`primary`,onClick:()=>r.openClaudeLogin(`open`),"data-testid":`claude-login-open-mode`,children:[(0,K.jsx)(Y.LogIn,{className:`w-4 h-4`}),` Sign in with my subscription`]})]}):j||m?(0,K.jsxs)(`div`,{className:`flex w-full items-center justify-end gap-2`,children:[O?null:(0,K.jsx)(X,{onClick:()=>{g.current=null,h(null),x(null),a||r.openClaudeLogin(`open`),y(e=>e+1)},"data-testid":`claude-login-retry`,children:`Try again`}),(0,K.jsx)(X,{variant:`primary`,onClick:t,"data-testid":`claude-login-close`,children:`Close`})]}):(0,K.jsxs)(`div`,{className:`flex w-full items-center justify-end gap-2`,children:[(0,K.jsx)(X,{onClick:t,children:`Keep in background`}),(0,K.jsx)(X,{variant:`danger`,onClick:()=>void r.cancelClaudeLogin(),"data-testid":`claude-login-cancel`,children:`Cancel sign-in`})]});return(0,K.jsx)(JS,{open:e,title:`Connect your Claude subscription`,onClose:t,footer:P,children:(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,children:`Your Claude Pro/Max login runs the genuine Claude Code engine directly against api.anthropic.com — never through the gateway. The token it stores lasts a year and syncs to every PC you sign in to.`}),A?(0,K.jsxs)(`div`,{className:`space-y-2 text-sm`,"data-testid":`claude-login-choose`,children:[(0,K.jsxs)(`p`,{children:[(0,K.jsx)(`span`,{className:`font-medium`,children:`Sign in with my subscription`}),` opens the Claude sign-in page in this PC's browser.`]}),(0,K.jsxs)(`p`,{children:[(0,K.jsx)(`span`,{className:`font-medium`,children:`Copy link`}),` copies the same page's link for the browser where you are already signed in to Claude — any browser on this PC works.`]}),(0,K.jsx)(`p`,{className:`text-fg-faint`,children:`Either way this window connects by itself when you finish signing in.`})]}):null,A?null:(0,K.jsx)(`div`,{className:`rounded-md border border-border bg-surface-2 p-3 text-xs`,"data-testid":`claude-login-wait`,children:D?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`mb-1 text-fg-faint`,children:a===`copy`?`Sign-in link (copied):`:`Sign-in link (opened in your browser):`}),(0,K.jsx)(`div`,{className:`break-all font-mono select-all`,"data-testid":`claude-login-url`,children:D}),(0,K.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[(0,K.jsxs)(X,{size:`sm`,onClick:()=>void N(),"data-testid":`claude-login-copy`,children:[(0,K.jsx)(Y.Copy,{className:`w-3 h-3`}),` `,u?`Copied`:`Copy link`]}),(0,K.jsx)(X,{size:`sm`,onClick:()=>XU(D),children:`Open in browser`})]})]}):O?null:(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-fg-muted`,children:[(0,K.jsx)(Y.Spinner,{className:`w-4 h-4 animate-spin`}),` Preparing your sign-in link…`]})}),(0,K.jsx)(`div`,{className:G(`text-sm`,O?`text-ok`:E===`failed`?`text-danger`:`text-fg-muted`),"data-testid":`claude-login-status`,children:A?null:O?`Connected — your Claude subscription is stored in the vault and runs from this PC.`:T&&D?w?.message??`Waiting for you to finish in the browser…`:w?.message??m?.instructions??`Starting the Claude sign-in…`}),T&&D?(0,K.jsx)(`div`,{className:`text-xs`,children:f?(0,K.jsx)(KS,{label:`The page showed a code instead? Paste it here`,children:(0,K.jsxs)(`div`,{className:`flex gap-2`,children:[(0,K.jsx)(`input`,{className:Z,value:o,onChange:e=>s(e.target.value),placeholder:`paste the code here`,autoComplete:`off`,spellCheck:!1,"data-testid":`claude-login-code`,onKeyDown:e=>{e.key===`Enter`&&ee()}}),(0,K.jsx)(X,{variant:`primary`,busy:c,disabled:!o.trim(),onClick:()=>void ee(),"data-testid":`claude-login-submit`,children:`Continue`})]})}):(0,K.jsx)(`button`,{type:`button`,className:`text-fg-faint underline hover:text-fg`,onClick:()=>p(!0),"data-testid":`claude-login-show-code`,children:`The page showed a code instead? Paste it here`})}):null,M?(0,K.jsxs)(`div`,{className:`rounded-md border border-border bg-surface-2 p-3 text-xs`,children:[(0,K.jsx)(`div`,{className:`mb-1 text-fg-faint`,children:`This host cannot open a terminal for the engine. Run this in a terminal on this PC, then add the printed token as a subscription credential:`}),(0,K.jsx)(AI,{code:M,language:n.info?.platform===`win32`?`powershell`:`bash`})]}):null]})})}function QU({compact:e=!1}){let{actions:t}=q(),[n,r]=(0,v.useState)(null),[i,a]=(0,v.useState)(!1),[o,s]=(0,v.useState)(!1),[c,l]=(0,v.useState)(!1),u=(0,v.useRef)(null),d=(0,v.useCallback)(async()=>{let e=await t.githubLink(`get`);e&&r(e)},[t]);(0,v.useEffect)(()=>{d()},[d]);let f=n?.login.phase===`awaiting_approval`;(0,v.useEffect)(()=>{if(!f)return;let e=setInterval(()=>void d(),2e3);return()=>clearInterval(e)},[f,d]);let p=f?n?.login.verificationUriComplete??n?.login.verificationUri??null:null;if((0,v.useEffect)(()=>{let e=n?.login.id;!f||!p||!e||u.current===e||(u.current=e,XU(p))},[f,p,n?.login.id]),!n)return null;let m=async e=>{a(!0);try{let n=await t.githubLink(e);n&&r(n)}finally{a(!1),s(!1)}},h=e=>{navigator.clipboard?.writeText(e).then(()=>{l(!0),setTimeout(()=>l(!1),2e3)}).catch(()=>t.toast(`error`,`Could not copy — select it and copy by hand`))},g=n.account,_=n.login.phase===`failed`||n.login.phase===`expired`;return(0,K.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-surface-2/40 p-3 text-sm`,"data-testid":`github-link`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(Y.GitBranch,{className:`h-4 w-4 shrink-0`}),g?(0,K.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,"data-testid":`github-linked`,children:[`GitHub linked as `,(0,K.jsxs)(`b`,{children:[`@`,g.login]}),g.name?(0,K.jsxs)(`span`,{className:`text-fg-muted`,children:[` · `,g.name]}):null]}):(0,K.jsx)(`span`,{className:`min-w-0 flex-1`,children:`GitHub not linked`}),g?(0,K.jsx)(X,{size:`sm`,variant:o?`danger`:`ghost`,disabled:i,onClick:()=>o?void m(`unlink`):s(!0),"data-testid":`github-unlink`,children:o?`Unlink — sure?`:`Unlink`}):n.available&&!f?(0,K.jsx)(X,{size:`sm`,variant:`primary`,disabled:i,onClick:()=>void m(`start`),"data-testid":`github-link-start`,children:`Link GitHub`}):null]}),f?(0,K.jsxs)(`div`,{className:`space-y-2`,"data-testid":`github-link-pending`,children:[(0,K.jsxs)(`p`,{className:`text-fg-muted`,children:[`GitHub’s page opened in your browser. If it did not, open`,` `,(0,K.jsx)(`a`,{className:`underline`,href:p??`#`,onClick:e=>{e.preventDefault(),p&&XU(p)},children:p}),` `,`on any device and enter:`]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`code`,{className:`rounded border border-border px-2 py-1 font-mono text-base`,"data-testid":`github-user-code`,children:n.login.userCode}),(0,K.jsxs)(X,{size:`sm`,onClick:()=>n.login.userCode&&h(n.login.userCode),children:[(0,K.jsx)(Y.Copy,{className:`h-3.5 w-3.5`}),` `,c?`Copied`:`Copy`]}),(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:()=>void m(`cancel`),children:`Cancel`})]}),(0,K.jsx)(`p`,{className:`text-xs text-fg-faint`,children:`Waiting for GitHub…`})]}):null,_?(0,K.jsxs)(`p`,{className:`text-xs text-danger`,"data-testid":`github-link-ended`,children:[n.login.message??`The link did not complete.`,` Press Link GitHub to try again.`]}):null,!e||!g?(0,K.jsx)(`p`,{className:`text-xs text-fg-faint`,children:g?`The agent’s git and gh use this account on every PC of yours, for github.com only. The token stays in your encrypted vault and never reaches the OonaCode server.`:n.available?`Public repositories need nothing. For private ones, link GitHub: the agent’s git and gh then sign in as you on every PC of yours. Without it, the agent uses whatever git sign-in this PC already has.`:n.unavailableReason??`Link GitHub is not available.`}):null]})}var $U=`__new__`;function eW({title:e,children:t}){return(0,K.jsxs)(`section`,{className:`space-y-2 border-t border-border pt-3 first:border-t-0 first:pt-0`,children:[(0,K.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-faint`,children:e}),t]})}function tW({open:e,startNew:t=!1,selectId:n=null,onClose:r}){let{state:i,actions:a}=q(),o=i.vaultProjects,s=i.info&&i.info.platform!==`win32`?`${i.info.homeDir??`/home/you`}/src/my-app`:`C:\\src\\my-app`,[c,l]=(0,v.useState)($U),[u,d]=(0,v.useState)(HU(null)),[f,p]=(0,v.useState)(!1),[m,h]=(0,v.useState)(!1),g=(e,t)=>d(n=>({...n,[e]:t}));(0,v.useEffect)(()=>{if(!e)return;a.refreshVaultProjects();let r=n&&o.some(e=>e.id===n)?n:null;l(t?$U:r??o[0]?.id??$U),h(!1)},[e]);let _=c===$U?null:o.find(e=>e.id===c)??null;(0,v.useEffect)(()=>{d(HU(_)),h(!1)},[_?.id,_?.updatedAt]);let y=(0,v.useMemo)(()=>i.providers.filter(e=>e.configured).flatMap(e=>e.definition.models.map(t=>({key:BU(e.definition.id,t.id),label:`${e.definition.displayName} — ${t.displayName||t.id}`,option:t}))),[i.providers]),b=y.find(e=>e.key===u.model)??null,x=u.model&&!b?VU(u.model):null,S=b?Te(b.option):[],C=YU(u,_),w=C?GU(u):null;async function T(){if(!GU(u)){p(!0);try{if(_===null){let e=await a.createVaultProject(JU(u));e&&l(e.id)}else await a.updateVaultProject(_.id,qU(u,_))}finally{p(!1)}}}async function E(){if(_){if(!m){h(!0);return}p(!0);try{await a.deleteVaultProject(_.id)&&l($U)}finally{p(!1)}}}async function D(){let e=await window.oonacode?.pickDirectory?.({title:`The folder new chats in this project run in`,...u.cwd?{defaultPath:u.cwd}:{}});e&&g(`cwd`,e)}let k=e=>i.sessions.filter(t=>t.projectId===e).length,A=e=>e.sessionCount??k(e.id),j=_?A(_):0;return(0,K.jsx)(JS,{open:e,title:`Projects`,onClose:r,wide:!0,footer:(0,K.jsxs)(K.Fragment,{children:[_?j>0?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`text-xs text-fg-muted`,"data-testid":`project-delete-reason`,children:O(j)}),(0,K.jsx)(X,{variant:`ghost`,disabled:!0,"data-testid":`project-delete`,children:`Delete project`})]}):(0,K.jsx)(X,{variant:m?`danger`:`ghost`,onClick:E,disabled:f,"data-testid":`project-delete`,children:m?`Delete ${_.name}?`:`Delete project`}):null,(0,K.jsx)(`span`,{className:`flex-1`}),w?(0,K.jsx)(`span`,{className:`text-xs text-danger`,"data-testid":`project-problem`,children:w}):null,(0,K.jsx)(X,{variant:`ghost`,onClick:r,children:`Close`}),(0,K.jsx)(X,{variant:`primary`,onClick:T,disabled:f||!C||w!==null,"data-testid":`project-save`,children:_===null?`Create project`:`Save`})]}),children:(0,K.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-[180px_1fr]`,children:[(0,K.jsxs)(`div`,{className:`flex flex-col gap-0.5`,"data-testid":`projects-list`,children:[(0,K.jsxs)(`button`,{type:`button`,className:G(`flex items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm`,c===$U?`bg-accent-soft text-fg`:`hover:bg-surface-2 text-fg-muted`),onClick:()=>l($U),"data-testid":`project-new`,children:[(0,K.jsx)(Y.Plus,{className:`w-3.5 h-3.5`}),` New project`]}),o.map(e=>(0,K.jsxs)(`button`,{type:`button`,className:G(`flex items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm`,c===e.id?`bg-accent-soft text-fg`:`hover:bg-surface-2 text-fg`),onClick:()=>l(e.id),"data-testid":`project-item-${e.id}`,children:[(0,K.jsx)(Y.Project,{className:`w-3.5 h-3.5 shrink-0`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.name}),(0,K.jsx)(`span`,{className:`text-[11px] text-fg-faint`,children:A(e)})]},e.id))]}),(0,K.jsxs)(`div`,{className:`max-h-[65vh] space-y-4 overflow-y-auto pr-1`,children:[(0,K.jsxs)(eW,{title:`Project`,children:[(0,K.jsx)(KS,{label:`Name`,children:(0,K.jsx)(`input`,{className:Z,value:u.name,onChange:e=>g(`name`,e.target.value),placeholder:`My app`,maxLength:ac.name,"data-testid":`project-name`})}),(0,K.jsx)(KS,{label:`Goal (optional)`,hint:`What the project is for, in a line or two.`,children:(0,K.jsx)(`input`,{className:Z,value:u.goal,onChange:e=>g(`goal`,e.target.value),placeholder:`A desktop app that…`,maxLength:ac.goal,"data-testid":`project-goal`})}),(0,K.jsx)(KS,{label:`Instructions for the agent (optional)`,children:(0,K.jsx)(`textarea`,{className:G(Z,`h-40 font-mono text-xs`),value:u.instructions,onChange:e=>g(`instructions`,e.target.value),placeholder:`Standing rules for every chat in this project — e.g.
|
|
165
|
+
- push to the feature branch, never to main
|
|
166
|
+
- run the tests before saying a change is done
|
|
167
|
+
- use the browser on port 9170 for anything on the web`,maxLength:ac.instructions,"data-testid":`project-instructions`})})]}),(0,K.jsxs)(eW,{title:`Repositories`,children:[(0,K.jsx)(KS,{label:`One per line (optional)`,hint:`Every chat in the project is told about them.`,children:(0,K.jsx)(`textarea`,{className:G(Z,`h-16 font-mono text-xs`),value:u.repositories,onChange:e=>g(`repositories`,e.target.value),placeholder:`https://github.com/you/app`,"data-testid":`project-repositories`})}),(0,K.jsx)(QU,{compact:!0})]}),(0,K.jsxs)(eW,{title:`New chats`,children:[(0,K.jsx)(KS,{label:`Model`,hint:`What a new chat in this project starts on.`,children:(0,K.jsxs)(`select`,{className:Z,value:u.model,onChange:e=>{g(`model`,e.target.value),g(`effort`,``)},"data-testid":`project-model`,children:[(0,K.jsx)(`option`,{value:``,children:`Whatever a new chat would start on`}),x?(0,K.jsxs)(`option`,{value:u.model,children:[x.model,` (not on this PC)`]}):null,y.map(e=>(0,K.jsx)(`option`,{value:e.key,children:e.label},e.key))]})}),S.length>0?(0,K.jsx)(KS,{label:`Effort`,children:(0,K.jsxs)(`select`,{className:Z,value:u.effort,onChange:e=>g(`effort`,e.target.value),"data-testid":`project-effort`,children:[(0,K.jsx)(`option`,{value:``,children:b&&we(b.option)?`Default (${we(b.option)})`:`Default`}),S.map(e=>(0,K.jsx)(`option`,{value:e,children:e},e))]})}):null,(0,K.jsx)(KS,{label:`Folder`,hint:`Where a new chat runs; left empty, each chat gets its own.`,children:(0,K.jsxs)(`div`,{className:`flex gap-2`,children:[(0,K.jsx)(`input`,{className:G(Z,`flex-1 font-mono text-xs`),value:u.cwd,onChange:e=>g(`cwd`,e.target.value),placeholder:s,"data-testid":`project-cwd`}),window.oonacode?.pickDirectory?(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:()=>void D(),children:`Choose…`}):null]})})]}),(0,K.jsxs)(eW,{title:`Memory`,children:[(0,K.jsxs)(`label`,{className:`flex items-start gap-2 text-sm`,children:[(0,K.jsx)(`input`,{type:`checkbox`,className:`mt-1`,checked:u.memoryEnabled,onChange:e=>g(`memoryEnabled`,e.target.checked),"data-testid":`project-memory-enabled`}),(0,K.jsx)(`span`,{children:`Keep a project memory — notes every chat of the project reads at its start, and the agent keeps up to date.`})]}),u.memoryEnabled?(0,K.jsx)(`textarea`,{className:G(Z,`h-28 font-mono text-xs`),value:u.memory,onChange:e=>g(`memory`,e.target.value),placeholder:`Nothing noted yet.`,maxLength:ac.memory,"data-testid":`project-memory`}):null]}),(0,K.jsxs)(eW,{title:`Scheduled tasks`,children:[(0,K.jsxs)(`label`,{className:`flex items-start gap-2 text-sm`,children:[(0,K.jsx)(`input`,{type:`checkbox`,className:`mt-1`,checked:u.tasksEnabled,onChange:e=>g(`tasksEnabled`,e.target.checked),"data-testid":`project-tasks-enabled`}),(0,K.jsx)(`span`,{children:`The agent may schedule work in this project's chats — once, or on a repeat — with OonaCode's scheduler on this PC.`})]}),u.tasksEnabled?(0,K.jsx)(KS,{label:`Shortest repeat, in minutes`,children:(0,K.jsx)(`input`,{className:G(Z,`w-28`),inputMode:`numeric`,value:u.minInterval,onChange:e=>g(`minInterval`,e.target.value),"data-testid":`project-min-interval`})}):null,_?(0,K.jsx)(TL,{projectId:_.id,showChat:!0}):null]}),(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,children:`Saved settings reach the project's chats at their next message. Projects live in your vault: only your own devices can read them.`})]})]})})}var nW=`(min-width: 768px)`;function rW(){return typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(nW).matches}function iW(){let[e,t]=(0,v.useState)(rW);return(0,v.useEffect)(()=>{if(typeof window>`u`||typeof window.matchMedia!=`function`)return;let e=window.matchMedia(nW),n=()=>t(e.matches);return n(),e.addEventListener?.(`change`,n),()=>e.removeEventListener?.(`change`,n)},[]),e}function aW(e){try{return!!e?.matches(`:hover`)}catch{return!1}}function oW(e){if(typeof document>`u`)return!1;if(document.querySelector(`[role="menu"], [role="dialog"]`))return!0;let t=document.activeElement;return!!(e&&t&&e.contains(t)&&t.tagName===`INPUT`)}function sW({hidden:e,children:t}){let{state:n,actions:r}=q(),i=n.ui.sidebarPinnedOverride??n.prefs.sidebarPinned,a=n.ui.sidebarOpen,[o,s]=(0,v.useState)(null),c=o??n.prefs.sidebarWidth,[l,u]=(0,v.useState)(!1),d=iW(),f=(0,v.useRef)(null),p=(0,v.useRef)(null),m=(0,v.useCallback)(()=>{p.current!==null&&(clearTimeout(p.current),p.current=null)},[]),h=(0,v.useCallback)(()=>{m(),p.current=setTimeout(function e(){if(oW(f.current)){p.current=setTimeout(e,350);return}p.current=null,!aW(f.current)&&u(!1)},350)},[m]);(0,v.useEffect)(()=>m,[m]),(0,v.useEffect)(()=>{u(!1),m()},[i,m]),(0,v.useEffect)(()=>{if(e)return;let t=e=>{if(!(!(e.ctrlKey||e.metaKey)||e.shiftKey||e.altKey)&&(e.key===`k`||e.key===`K`)){if(rW()){if(i)return;u(!0),h()}else a||r.setSidebar(!0)}};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,i,a,h,r]);let g=e=>{e.preventDefault();let t=e.clientX,i=c,a=i,o=e=>{a=yl(i+(e.clientX-t)),s(a)},l=()=>{window.removeEventListener(`pointermove`,o),window.removeEventListener(`pointerup`,l),document.body.style.cursor=``,document.body.style.userSelect=``,s(null),a!==n.prefs.sidebarWidth&&r.savePrefs({sidebarWidth:a})};document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`,window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,l)},_=i||l;return(0,K.jsxs)(K.Fragment,{children:[!i&&!l&&!e?(0,K.jsx)(`div`,{className:`absolute inset-y-0 left-0 z-40 hidden w-2 md:block`,onMouseEnter:()=>{u(!0),h()},"aria-hidden":!0,"data-testid":`sidebar-hover-edge`}):null,(0,K.jsxs)(`aside`,{ref:f,"data-chrome":`sidebar`,hidden:e,inert:!e&&(d?!_:!a),"data-testid":`sidebar-frame`,"data-state":i?`docked`:l?`peek`:`hidden`,style:{"--sidebar-w":`${c}px`},onMouseEnter:i?void 0:m,onMouseLeave:i?void 0:h,className:G(`absolute inset-y-0 left-0 z-30 w-72 max-w-[85vw] border-r border-border bg-surface transition-transform md:w-[var(--sidebar-w)] md:max-w-[70vw]`,a?`translate-x-0`:`-translate-x-full`,i?`md:relative md:z-auto md:translate-x-0`:G(`md:z-40 md:shadow-2xl`,_?`md:translate-x-0`:`md:-translate-x-full`)),children:[t,(0,K.jsx)(`div`,{role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize the session list`,title:`Drag to resize · double-click for the default width`,className:`absolute inset-y-0 -right-1 z-10 hidden w-2 cursor-col-resize hover:bg-accent/30 md:block`,onPointerDown:g,onDoubleClick:()=>void r.savePrefs({sidebarWidth:288}),"data-testid":`sidebar-resize`})]})]})}function cW({open:e,onClose:t}){return(0,K.jsx)(JS,{open:e,title:`Export my chats`,onClose:t,children:(0,K.jsx)(lW,{onDone:t})})}function lW({onDone:e}){let{api:t,state:n}=q(),[r,i]=(0,v.useState)(``),[a,o]=(0,v.useState)(!1),[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)(!1),[d,f]=(0,v.useState)(0),p=n.sessionsTotal||n.sessions.length;(0,v.useEffect)(()=>{if(!a){f(0);return}let e=Date.now(),t=setInterval(()=>f(Math.floor((Date.now()-e)/1e3)),1e3);return()=>clearInterval(t)},[a]);let m=async()=>{if(!t.exportSessionsArchive){c(`this PC is running an older OonaCode that cannot export chats`);return}o(!0),c(null);try{let n=await t.exportSessionsArchive(r),a=URL.createObjectURL(n),o=document.createElement(`a`);o.href=a,o.download=`oonacode-chats-${new Date().toISOString().slice(0,10)}.zip`,o.click(),URL.revokeObjectURL(a),i(``),u(!1),e()}catch(e){c(e instanceof Error?e.message:`the export failed`)}finally{o(!1)}};return(0,K.jsxs)(`div`,{children:[(0,K.jsx)(JS,{open:a,title:`Exporting your chats`,onClose:()=>void 0,children:(0,K.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,K.jsx)(Y.Spinner,{className:`mt-0.5 w-5 h-5 shrink-0 text-accent`}),(0,K.jsxs)(`div`,{className:`min-w-0 text-sm`,children:[(0,K.jsxs)(`div`,{className:`font-medium`,children:[`Packing`,` `,p>0?`${p} chat${p===1?``:`s`}`:`your chats`,`…`]}),(0,K.jsxs)(`div`,{className:`mt-1 tabular text-fg-muted`,children:[Math.floor(d/60),`:`,String(d%60).padStart(2,`0`),` elapsed`]}),(0,K.jsx)(`p`,{className:`mt-2 text-xs text-fg-faint`,children:`Your PC writes the whole archive before the download starts, so nothing appears in your downloads until it is finished. A long history can take a minute or two — this is normal, and you do not need to press anything again.`})]})]})}),(0,K.jsxs)(`p`,{className:`text-sm text-fg-muted`,children:[`One zip with a plain `,(0,K.jsx)(`code`,{children:`.txt`}),` of every conversation on this PC, plus an index. It is for reading and copying from — there is no way to load it back in.`]}),(0,K.jsx)(`p`,{className:`mt-1 text-xs text-warn`,children:`The zip is not encrypted: anyone who opens it can read every conversation in it.`}),l?(0,K.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(`input`,{type:`password`,autoFocus:!0,className:Z+` max-w-[16rem]`,placeholder:`Account password`,value:r,onChange:e=>i(e.target.value),onKeyDown:e=>{e.key===`Enter`&&r&&m()},"data-testid":`export-chats-password`}),(0,K.jsx)(X,{onClick:()=>void m(),disabled:a||!r,children:a?`Exporting…`:`Export`}),(0,K.jsx)(X,{variant:`ghost`,onClick:()=>{u(!1),i(``),c(null)},children:`Cancel`})]}):(0,K.jsx)(X,{className:`mt-2`,onClick:()=>u(!0),"data-testid":`export-chats`,children:`Export chats…`}),s?(0,K.jsx)(`div`,{className:`mt-2 text-xs text-danger`,children:s}):null]})}var uW=new Map,dW=0;function fW(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619)>>>0;return t.toString(16).padStart(8,`0`)}function pW(e){return[e.summaryId,e.language,e.voiceKey,fW(e.text)].join(`|`)}function mW(e,t){let n=pW(e),r=uW.get(n);return r&&(uW.delete(n),r.clips.length!==t&&(_W(r),r=void 0)),r??={key:n,clips:Array(t).fill(void 0),bytes:0},uW.set(n,r),gW(n),r}function hW(e,t,n,r){let i=e.clips[t];i&&(yW(i.url),e.bytes-=i.bytes);let a={url:vW(n),bytes:n.byteLength,...r};return e.clips[t]=a,e.bytes+=a.bytes,uW.delete(e.key),uW.set(e.key,e),gW(e.key),a}function gW(e){let t=0;for(let e of uW.values())t+=e.bytes;for(let[n,r]of uW){if(uW.size<=8&&t<=50331648)return;n!==e&&(uW.delete(n),t-=r.bytes,_W(r))}}function _W(e){for(let t of e.clips)t&&yW(t.url)}function vW(e){return typeof URL<`u`&&typeof URL.createObjectURL==`function`?URL.createObjectURL(new Blob([e],{type:`audio/wav`})):(dW+=1,`clip:${dW}`)}function yW(e){if(e.startsWith(`blob:`))try{URL.revokeObjectURL(e)}catch{}}var bW=()=>new Audio,xW=1e-6,SW=class{#e;#t;#n;#r;#i;#a=new Set;#o;#s=[``,``];#c=0;#l;#u=`idle`;#d;#f=0;#p=0;#m=null;#h=null;#g=0;#_=!1;#v=!1;#y=!1;#b=!1;constructor(e){this.#e=e.tts,this.#t=e.voiceId,this.#n=e.language,this.#r=e.entry,this.#d=zf(e.rate??1),this.#i=e.errorText??(e=>e instanceof Error&&e.message?e.message:String(e));let t=e.timeline;e.entry.clips.forEach((e,n)=>{e&&(t=Ef(t,n,e.seconds,e))}),this.#l=t,this.#o=[bW(),bW()];for(let e of this.#o)e.playbackRate=this.#d,e.preservesPitch=!0}get timeline(){return this.#l}snapshot(){let e=this.#l,t=this.#C(),n=-1;return e.words.length>0&&(n=this.#m??(this.#u===`ended`?e.words.length-1:Math.max(0,Of(e,t+xW)))),{status:this.#u,currentSec:t,durationSec:e.totalSec,durationExact:e.complete||this.#r.clips.every(Boolean),wordIndex:n,sentenceIndex:n>=0?e.words[n].sentence:Df(e,t),rate:this.#d,error:this.#h}}subscribe(e){return this.#a.add(e),()=>this.#a.delete(e)}#x(){for(let e of[...this.#a])e()}#S(e){this.#u=e,this.#x()}#C(){let e=this.#l;if(this.#u===`ended`)return e.totalSec;if(this.#m!==null)return kf(e,this.#m);let t=e.sentences[this.#f];if(!t)return 0;let n=this.#u===`playing`?this.#o[this.#c].currentTime||0:this.#p;return t.startSec+Math.max(0,Math.min(n,t.durationSec))}#w(){let e=this.#l.sentences.length;for(let t=0;t<e;t+=1){let n=(this.#f+t)%e;if(!this.#r.clips[n])return n}return-1}#T(){if(!this.#_||this.#v||this.#y||this.#b)return;let e=this.#w();if(e<0)return;let t=this.#l.sentences[e];this.#v=!0,(async()=>{try{let n=await this.#e.speak({voiceId:this.#t,text:hf(t.spoken,this.#n),speed:1}),r=n.sampleRate>0?n.samples.length/n.sampleRate:0,i=Pf(n.samples,n.sampleRate);if(hW(this.#r,e,Rv(n.samples,n.sampleRate),{seconds:r,...i}),this.#v=!1,this.#b)return;this.#l=Ef(this.#l,e,r,i),this.#u===`buffering`&&e===this.#f?this.#D(this.#f):this.#u===`playing`&&e===this.#f+1&&this.#O(),this.#x(),this.#T()}catch(e){if(this.#v=!1,this.#b)return;this.#E(this.#i(e))}})()}#E(e){this.#y=!0,this.#g+=1,this.#u===`playing`&&(this.#p=this.#o[this.#c].currentTime||0);for(let e of this.#o)e.pause();this.#h=e,this.#S(`error`)}#D(e){let t=++this.#g;this.#f=e;let n=this.#r.clips[e];if(!n){for(let e of this.#o)e.pause();this.#u!==`buffering`&&this.#S(`buffering`),this.#T();return}if(this.#m!==null){let t=this.#l.sentences[e];this.#p=kf(this.#l,this.#m)-t.startSec,this.#m=null}let r=Math.max(0,Math.min(this.#p,Math.max(0,n.seconds-.01))),i=this.#c,a=this.#o[i];this.#o[+(i===0)].pause(),this.#s[i]!==n.url&&(a.src=n.url,this.#s[i]=n.url),a.currentTime=r,a.playbackRate=this.#d,a.preservesPitch=!0,a.onended=()=>{t===this.#g&&this.#k(e)},a.onerror=()=>{t===this.#g&&this.#E(`This window could not play the voice’s audio.`)},this.#p=r;let o=e=>{t!==this.#g||e instanceof Error&&e.name===`AbortError`||this.#E(`This window could not play the voice’s audio${e instanceof Error&&e.message?` (${e.message})`:``}.`)};try{a.play()?.catch?.(o)}catch(e){queueMicrotask(()=>o(e))}this.#O(),this.#u===`playing`?this.#x():this.#S(`playing`)}#O(){let e=this.#r.clips[this.#f+1],t=+(this.#c===0);!e||this.#s[t]===e.url||(this.#o[t].src=e.url,this.#s[t]=e.url)}#k(e){let t=this.#l.sentences.length;if(e+1>=t){this.#g+=1,this.#f=t-1,this.#p=this.#l.sentences[t-1]?.durationSec??0,this.#S(`ended`);return}this.#c=+(this.#c===0),this.#p=0,this.#D(e+1)}play(){if(!(this.#b||this.#u===`playing`||this.#u===`buffering`)){if(this.#l.sentences.length===0){this.#S(`ended`);return}this.#u===`ended`&&(this.#f=0,this.#p=0,this.#m=null),this.#u===`error`&&(this.#y=!1,this.#h=null),this.#_=!0,this.#D(this.#f),this.#T()}}pause(){if(this.#u===`playing`||this.#u===`buffering`){this.#u===`playing`&&(this.#p=this.#o[this.#c].currentTime||0),this.#g+=1;for(let e of this.#o)e.pause();this.#S(`paused`)}}toggle(){this.#u===`playing`||this.#u===`buffering`?this.pause():this.play()}#A(e,t,n){let r=this.#u===`playing`||this.#u===`buffering`;if(this.#g+=1,this.#u===`playing`&&this.#o[this.#c].pause(),this.#f=e,this.#p=t,this.#m=n,r){this.#D(e),this.#T();return}if(this.#m!==null&&this.#r.clips[e]){let t=this.#l.sentences[e];this.#p=kf(this.#l,this.#m)-t.startSec,this.#m=null}this.#S(this.#u===`idle`?`idle`:this.#u===`error`?`error`:`paused`)}seek(e){let t=this.#l;if(t.sentences.length===0)return;let n=Math.max(0,Math.min(t.totalSec,e)),r=Df(t,n),i=t.sentences[r];if(this.#r.clips[r]){this.#A(r,n-i.startSec,null);return}let a=Of(t,n+xW),o=a>=i.wordFrom&&a<i.wordTo?a:i.wordTo>i.wordFrom?i.wordFrom:null;this.#A(r,n-i.startSec,o)}seekWord(e){let t=this.#l;if(t.words.length===0)return;let n=t.words[Math.max(0,Math.min(e,t.words.length-1))],r=t.sentences[n.sentence];this.#r.clips[n.sentence]?this.#A(n.sentence,n.startSec-r.startSec,null):this.#A(n.sentence,0,n.index)}skip(e){this.seek(jf(this.#l,this.#C(),e))}nextSentence(){let e=this.#l.sentences[this.#f+1];e&&this.#A(e.index,0,null)}prevSentence(){let e=this.#l,t=Df(e,Mf(e,this.#C())+xW);this.#A(Math.max(0,t),0,null)}setRate(e){let t=zf(e);if(t!==this.#d){this.#d=t;for(let e of this.#o)e.playbackRate=t,e.preservesPitch=!0;this.#x()}}destroy(){if(!this.#b){this.#b=!0,this.#g+=1;for(let e of this.#o)e.onended=null,e.onerror=null,e.pause();this.#u=`idle`,this.#a.clear()}}};function CW(e){let t=e.now??(()=>Date.now()),n=-1/0,r=0,i=null,a=new Set,o=(e,t)=>{let n=setTimeout(()=>{a.delete(n),e()},t);a.add(n)},s=(a,s)=>{let c=r,l=e.synth.getVoices().find(t=>t.voiceURI===e.voiceURI)??null,u=e.makeUtterance(a);l&&(u.voice=l),u.lang=l?.lang??e.bcp47,u.rate=s.rate;let d=!1,f=()=>!d&&c===r,p=()=>{d=!0,i===u&&(i=null)};u.onstart=()=>{f()&&s.onStart()},u.onboundary=e=>{f()&&(e.name===void 0||e.name===`word`)&&typeof e.charIndex==`number`&&s.onBoundary(e.charIndex)},u.onend=()=>{f()&&(p(),s.onEnd())},u.onerror=e=>{f()&&(p(),e.error!==`interrupted`&&e.error!==`canceled`&&s.onError(Error(`The system voice failed: ${e.error??`unknown error`}`)))},o(()=>{f()&&(p(),e.synth.cancel(),n=t(),s.onEnd())},Nv(a,s.rate)),i=u,e.synth.speak(u)};return{queueAhead:!1,speak(e,i){let a=n+50-t();if(a>0){let t=r;o(()=>{t===r&&s(e,i)},a);return}s(e,i)},stop(){r+=1,i=null;for(let e of a)clearTimeout(e);a.clear();try{e.synth.cancel()}catch{}return n=t(),new Promise(e=>setTimeout(e,50))}}}var wW=e=>typeof requestAnimationFrame==`function`?requestAnimationFrame(e):setTimeout(()=>e(Date.now()),16),TW=e=>{typeof cancelAnimationFrame==`function`?cancelAnimationFrame(e):clearTimeout(e)};function EW(e){let[,t]=(0,v.useReducer)(e=>e+1,0);return(0,v.useEffect)(()=>{if(!e)return;let n=0,r=!1,i=-2,a=0,o=s=>{let c=e.snapshot();if(c.status!==`playing`&&c.status!==`buffering`){r=!1,t();return}(c.wordIndex!==i||s-a>=250)&&(i=c.wordIndex,a=s,t()),n=wW(o)},s=()=>{t();let i=e.snapshot();!r&&(i.status===`playing`||i.status===`buffering`)&&(r=!0,n=wW(o))},c=e.subscribe(s);return s(),()=>{c(),r&&TW(n)}},[e]),e?e.snapshot():null}function DW({summaries:e,loaded:t,selectedId:n,changed:r,notice:i,error:a,locked:o,onSelect:s,onDelete:c}){let l=Lf(e);return(0,K.jsxs)(`section`,{"data-testid":`voice-summaries`,children:[(0,K.jsx)(`h3`,{className:`mb-1 text-xs font-semibold uppercase tracking-wide text-fg-faint`,children:`Summaries`}),a?(0,K.jsx)(`p`,{className:`text-xs text-danger`,children:a}):null,t&&l.length===0?(0,K.jsx)(`p`,{className:`text-fg-muted`,"data-testid":`voice-no-summaries`,children:Xf.noSummaries}):null,l.length>0&&r?(0,K.jsx)(`p`,{className:`mb-1 text-xs text-fg-muted`,"data-testid":`voice-changed`,children:Xf.changedSinceNewest}):null,(0,K.jsx)(`ul`,{className:`flex max-h-44 flex-col gap-1 overflow-y-auto`,children:l.map(e=>{let t=n===e.id,r=Fv(e.createdAt);return(0,K.jsxs)(`li`,{"data-testid":`voice-summary-row`,className:G(`flex items-start gap-2 rounded-md border px-2 py-1.5`,t?`border-accent bg-accent/10`:`border-border`),children:[(0,K.jsx)(`input`,{type:`radio`,name:`voice-summary`,className:`mt-1`,"aria-label":`Summary of ${r}`,checked:t,disabled:o,onChange:()=>s(e.id)}),(0,K.jsxs)(`button`,{type:`button`,className:`flex min-w-0 flex-1 flex-col items-start text-left`,disabled:o,onClick:()=>s(e.id),children:[(0,K.jsxs)(`span`,{className:`font-medium`,children:[r,e.current?(0,K.jsx)(`span`,{className:`ml-2 rounded-full bg-accent/15 px-1.5 text-xs text-accent`,children:Xf.current}):null]}),(0,K.jsxs)(`span`,{className:`text-xs text-fg-muted`,children:[e.words,` words · about `,Jf(e.seconds),` ·`,` `,Kf(e).map(e=>e.toUpperCase()).join(` `),` `,`· `,e.cost.model??`the chat’s model`,` · `,Yf(e.cost)]})]}),(0,K.jsx)(X,{size:`sm`,onClick:()=>c(e.id),disabled:o,"aria-label":`Delete the summary of ${r}`,"data-testid":`voice-summary-delete`,children:(0,K.jsx)(Y.Trash,{className:`h-3.5 w-3.5`})})]},e.id)})}),i?(0,K.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,"data-testid":`voice-notice`,children:i}):null]})}function OW(e){switch(e?.status){case`buffering`:return`Getting the voice ready…`;case`paused`:return`Paused.`;case`ended`:return`Done.`;case`playing`:return`Playing.`;default:return``}}function kW({label:e,onClick:t,disabled:n,children:r,testId:i,primary:a}){return(0,K.jsx)(`button`,{type:`button`,"aria-label":e,title:e,onClick:t,disabled:n,"data-testid":i,className:G(`inline-flex items-center justify-center rounded-full disabled:opacity-40`,a?`h-9 w-9 bg-accent text-accent-fg hover:opacity-90`:`h-8 min-w-8 px-1.5 text-fg-muted hover:bg-surface-2 hover:text-fg`),children:r})}function AW({player:e,snapshot:t,speed:n,onSpeed:r}){let i=t,a=!e||!i,o=i?.status===`playing`||i?.status===`buffering`,s=i?.currentSec??0,c=i?.durationSec??0,l=i&&!i.durationExact?`~`:``,u=`${Ff(s)} / ${l}${Ff(c)}`;return(0,K.jsxs)(`section`,{className:`flex flex-col gap-2 rounded-md border border-border bg-surface-2 px-3 py-2`,"data-testid":`voice-player`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`input`,{type:`range`,"aria-label":`Position`,"aria-valuetext":`${Ff(s)} of ${l}${Ff(c)}`,className:`min-w-0 flex-1`,min:0,max:Math.max(.1,c),step:.1,value:Math.min(s,Math.max(.1,c)),disabled:a,onChange:t=>e?.seek(Number(t.target.value)),"data-testid":`voice-position`}),(0,K.jsx)(`span`,{className:`shrink-0 tabular-nums text-xs text-fg-muted`,"data-testid":`voice-clock`,children:u})]}),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1`,children:[(0,K.jsx)(kW,{label:`Previous sentence`,onClick:()=>e?.prevSentence(),disabled:a,testId:`voice-prev`,children:(0,K.jsx)(Y.SkipBack,{className:`h-4 w-4`})}),(0,K.jsx)(kW,{label:`Back 10 seconds`,onClick:()=>e?.skip(-10),disabled:a,testId:`voice-back`,children:(0,K.jsxs)(`span`,{className:`text-xs font-medium`,children:[`−`,10,`s`]})}),(0,K.jsx)(kW,{label:o?`Pause`:`Play`,onClick:()=>e?.toggle(),disabled:a,testId:`voice-toggle`,primary:!0,children:o?(0,K.jsx)(Y.Pause,{className:`h-4 w-4`}):(0,K.jsx)(Y.Play,{className:`h-4 w-4`})}),(0,K.jsx)(kW,{label:`Forward 10 seconds`,onClick:()=>e?.skip(10),disabled:a,testId:`voice-forward`,children:(0,K.jsxs)(`span`,{className:`text-xs font-medium`,children:[`+`,10,`s`]})}),(0,K.jsx)(kW,{label:`Next sentence`,onClick:()=>e?.nextSentence(),disabled:a,testId:`voice-next`,children:(0,K.jsx)(Y.SkipForward,{className:`h-4 w-4`})}),(0,K.jsxs)(`span`,{className:`ml-1 flex items-center gap-1 text-xs text-fg-muted`,"aria-live":`polite`,"data-testid":`voice-player-status`,children:[i?.status===`buffering`?(0,K.jsx)(Y.Spinner,{className:`h-3.5 w-3.5`}):null,OW(i)]}),(0,K.jsxs)(`label`,{className:`ml-auto flex items-center gap-2 text-xs text-fg-muted`,children:[(0,K.jsxs)(`span`,{className:`tabular-nums`,children:[`Speed ×`,n.toFixed(2)]}),(0,K.jsx)(`input`,{type:`range`,"aria-label":`Speed`,min:Rf,max:2,step:.05,value:n,onChange:e=>r(Number(e.target.value))})]})]})]})}var jW=(0,v.memo)(function({index:e,text:t,current:n,onPick:r}){return(0,K.jsx)(`span`,{"data-word":e,"data-current":n?`true`:void 0,onClick:()=>r(e),className:G(`cursor-pointer rounded-sm hover:bg-accent/10`,n&&`bg-accent/20 text-fg`),children:t})});function MW({text:e,timeline:t,wordIndex:n,onPickWord:r,dir:i,lang:a}){let o=(0,v.useRef)(null),s=(0,v.useRef)(0),c=(0,v.useRef)(0),l=(0,v.useRef)(r);l.current=r;let u=(0,v.useMemo)(()=>e=>l.current(e),[]),d=t&&t.text===e?t.words.length:-1,f=(0,v.useMemo)(()=>{if(!t||d<0)return null;let n=[],r=0;for(let i of t.words)n.push({gap:e.slice(r,i.start),word:{index:i.index,text:e.slice(i.start,i.end)}}),r=i.end;return n.push({gap:e.slice(r),word:null}),n},[d,e]);(0,v.useEffect)(()=>{if(n<0||!o.current||Date.now()-s.current<4e3)return;let e=o.current.querySelector(`[data-word="${n}"]`);e&&(c.current=Date.now(),e.scrollIntoView({block:`nearest`}))},[n]);let p=()=>{s.current=Date.now()},m=e;return f&&(m=f.map((e,t)=>(0,K.jsx)(NW,{gap:e.gap,word:e.word,current:e.word?.index===n,onPick:u},t))),(0,K.jsx)(`p`,{ref:o,className:`max-h-64 overflow-y-auto whitespace-pre-wrap rounded-md border border-border bg-surface-2 px-3 py-2 leading-relaxed`,"data-testid":`voice-summary-text`,dir:i,lang:a,onWheel:p,onTouchMove:p,onScroll:()=>{Date.now()-c.current>200&&p()},children:m})}var NW=(0,v.memo)(function({gap:e,word:t,current:n,onPick:r}){return(0,K.jsxs)(K.Fragment,{children:[e,t?(0,K.jsx)(jW,{index:t.index,text:t.text,current:n,onPick:r}):null]})});function PW(e){let[t,n]=(0,v.useState)([]);return(0,v.useEffect)(()=>{if(!e||typeof window>`u`||!window.speechSynthesis)return;let t=window.speechSynthesis,r=()=>n(t.getVoices());return r(),t.addEventListener?.(`voiceschanged`,r),()=>t.removeEventListener?.(`voiceschanged`,r)},[e]),t}function FW(e){let t=e instanceof Error?e.message:String(e);return/no route for|not_found|404/i.test(t)&&/voice/i.test(t)?`This PC’s OonaCode host does not know "Listen" yet — update OonaCode.`:t}function IW(e){if(!(e instanceof HTMLElement))return!1;let t=e.tagName;return t===`INPUT`||t===`SELECT`||t===`TEXTAREA`||e.isContentEditable}function LW({open:e,onClose:t}){let{state:n,api:r}=q(),i=n.voiceSummarySessionId,a=(0,v.useMemo)(()=>n.sessions.find(e=>e.id===i)??null,[n.sessions,i]),o=typeof window<`u`?window.oonacode?.tts:void 0,s=kv(typeof window<`u`?window.oonacode?.platform:null,typeof navigator<`u`?navigator.userAgent:null),[c,l]=(0,v.useState)(()=>vv()),[u,d]=(0,v.useState)(null),f=PW(e),[p,m]=(0,v.useState)(null),[h,g]=(0,v.useState)(null),[_,y]=(0,v.useState)(null),[b,x]=(0,v.useState)({kind:`idle`}),[S,C]=(0,v.useState)(null),w=(0,v.useRef)(null),[T,E]=(0,v.useState)(null),D=(0,v.useRef)(null),O=(0,v.useRef)(null),k=(0,v.useRef)(null),A=(0,v.useRef)(c.speed);A.current=c.speed;let j=EW(T),M=Dd(c.language)??Dd(`en`),N=(0,v.useCallback)(e=>{l(t=>{let n={...t,...e};return yv(n),n})},[]),ee=(0,v.useMemo)(()=>p?.summaries??[],[p]),P=ee.find(e=>e.id===_)??ee[0]??null,F=(0,v.useCallback)(async()=>{if(!i||!r.listVoiceSummaries)return null;try{let e=await r.listVoiceSummaries(i),t={...e,summaries:Lf(e.summaries)};return m(t),g(null),t}catch(e){return g(FW(e)),null}},[r,i]);(0,v.useEffect)(()=>{e&&(m(null),y(null),C(null),x({kind:`idle`}),F(),o?(d(null),o.listVoices().then(d,()=>d([]))):d([]))},[e,F,o]);let I=a?`${a.entryCount}:${a.mtime}`:null,te=(0,v.useRef)(null),ne=(0,v.useRef)(null);(0,v.useEffect)(()=>{if(!e){te.current=null;return}if(te.current===null){te.current=I;return}I!==te.current&&(te.current=I,!ne.current&&(ne.current=setTimeout(()=>{ne.current=null,F()},800)))},[e,I,F]),(0,v.useEffect)(()=>()=>{ne.current&&clearTimeout(ne.current),ne.current=null},[]);let re=(0,v.useCallback)(()=>{w.current?.abort(),w.current=null,k.current=null,D.current?.destroy(),D.current=null,O.current=null,E(null)},[]);(0,v.useEffect)(()=>{e||re()},[e,re]),(0,v.useEffect)(()=>()=>re(),[re]);let L=(0,v.useMemo)(()=>Dv(M,u??[],f),[M,u,f]),R=Ov(L,c.localVoice[M.code]),z=!!(o&&u&&!u.some(e=>e.engine===`espeak`)),B=b.kind===`summarising`||b.kind===`translating`,ie=!!(r.listVoiceSummaries&&r.createVoiceSummary),ae=typeof window<`u`&&!!window.speechSynthesis,oe=P?qf(P,M.code):null,se=R?.key??null,ce=R?.kind??null,le=P?.id??null,ue=(0,v.useMemo)(()=>{if(!le||oe===null||!se||!ce)return null;let e=xv({key:se,kind:ce,label:``}),t,n;if(e&&o)t=`clip`,n=e;else if(ce===`system`&&ae)t=`system`,n=se.slice(7);else return null;let r={summaryId:le,language:M.code,voiceKey:se,text:oe};return{key:pW(r),...r,bcp47:M.bcp47,kind:t,voiceId:n}},[le,oe,se,ce,o,ae,M]);(0,v.useEffect)(()=>{if(!e||(ue?.key??null)===(O.current?.key??null))return;let t=D.current,n=O.current,r=t?.snapshot()??null;if(t?.destroy(),D.current=null,O.current=ue,!ue){E(null);return}let i=wf(ue.text,{language:ue.language}),a;a=ue.kind===`clip`&&o?new SW({tts:o,voiceId:ue.voiceId,language:ue.language,timeline:i,entry:mW(ue,i.sentences.length),rate:A.current,errorText:FW}):new Bf(CW({synth:window.speechSynthesis,makeUtterance:e=>new SpeechSynthesisUtterance(e),voiceURI:ue.voiceId,bcp47:ue.bcp47}),i,{mode:jv(s),rate:A.current});let c=!1;if(t&&n&&r){let e=r.status===`playing`||r.status===`buffering`;n.summaryId===ue.summaryId&&n.language===ue.language&&n.text===ue.text?(r.wordIndex>=0&&r.status!==`ended`&&a.seekWord(r.wordIndex),c=e):n.summaryId===ue.summaryId&&(c=e)}k.current===ue.key&&(k.current=null,c=!0),D.current=a,E(a),c&&a.play()},[e,ue,o,s]);let de=async()=>{if(!i||!r.createVoiceSummary)return null;x({kind:`summarising`});let e=await r.createVoiceSummary(i,{words:c.words});return C(e.created?null:Xf.unchanged(Fv(e.summary.createdAt))),y(e.summary.id),await F(),e.summary},fe=async()=>{if(!i)return;w.current?.abort();let e=new AbortController;w.current=e;let t=e.signal;k.current=null;try{let e=Gf(p,_)?await de():P;if(t.aborted)return;if(!e)throw Error(`There is no summary to play.`);let n=qf(e,M.code);if(n===null){if(!r.translateVoiceSummary)throw Error(`This host cannot translate yet.`);x({kind:`translating`});let a=await r.translateVoiceSummary(i,e.id,{language:M.code});if(m(t=>RW(t,e.id,a.translation)),t.aborted)return;n=a.translation.text,F()}if(!n.trim())throw Error(`There was nothing to read.`);if(!R||R.kind===`system`&&!ae)throw Error(R?`This window has no system speech.`:Av(M,!!o,s,z));x({kind:`idle`});let a=pW({summaryId:e.id,language:M.code,voiceKey:R.key,text:n});O.current?.key===a&&D.current?D.current.play():k.current=a}catch(e){if(t.aborted)return;x({kind:`error`,message:FW(e)})}finally{w.current===e&&(w.current=null)}},pe=()=>{w.current?.abort(),w.current=null,k.current=null,B&&x({kind:`idle`}),D.current?.pause()},me=e=>{e!==P?.id&&(D.current?.pause(),C(null),y(e))},he=async e=>{if(!(!i||!r.deleteVoiceSummary))try{await r.deleteVoiceSummary(i,e),_===e&&y(null),await F()}catch(e){x({kind:`error`,message:FW(e)})}},ge=e=>{let t=Md(e);N({speed:t}),D.current?.setRate(t)};if((0,v.useEffect)(()=>{if(!e)return;let t=e=>{let t=D.current;if(!t||e.altKey||e.ctrlKey||e.metaKey||IW(e.target))return;let n=e.target instanceof Element?e.target:null;if(!(n&&n!==document.body&&!n.closest(`[aria-label="Listen to this chat"]`))){if(e.key===` `||e.key===`Spacebar`){if(n?.closest(`button`))return;e.preventDefault(),t.toggle()}else if(e.key===`ArrowLeft`||e.key===`ArrowRight`){e.preventDefault();let n=e.key===`ArrowRight`;e.shiftKey?n?t.nextSentence():t.prevSentence():t.skip(n?10:-10)}}};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[e]),!e)return null;let _e=a?Au(a):`this chat`,ve=P?Kf(P):[],ye=new Set(ve),be=oe??P?.text??null,xe=j?.status===`error`?j.error:null,Se=j?.status===`playing`||j?.status===`buffering`,Ce=T&&O.current?.text===be?T.timeline:null;return(0,K.jsx)(JS,{open:e,title:`Listen to this chat`,onClose:t,wide:!0,footer:(0,K.jsxs)(K.Fragment,{children:[B||Se?(0,K.jsxs)(X,{onClick:pe,"data-testid":`voice-stop`,children:[(0,K.jsx)(Y.Stop,{className:`h-4 w-4`}),` Stop`]}):null,(0,K.jsxs)(X,{variant:`primary`,onClick:()=>void fe(),disabled:B||!ie||!i,"data-testid":`voice-play`,children:[(0,K.jsx)(Y.Play,{className:`h-4 w-4`}),` Play`]}),(0,K.jsx)(X,{onClick:t,children:`Close`})]}),children:(0,K.jsxs)(`div`,{className:`flex flex-col gap-3 text-sm`,children:[ie?null:(0,K.jsx)(`p`,{className:`text-danger`,children:`This version of the host cannot make voice summaries.`}),(0,K.jsx)(DW,{summaries:ee,loaded:p!==null,selectedId:P?.id??null,changed:Gf(p,_),notice:S,error:h,locked:B,onSelect:me,onDelete:e=>void he(e)}),(0,K.jsxs)(`p`,{className:`text-xs text-fg-muted`,children:[`A spoken summary of `,(0,K.jsx)(`span`,{className:`font-medium text-fg`,children:_e}),` — its goal, what was done, where it stands and what is pending — written by the chat’s own model, in English. Other languages are translated once by `,Od.label,` on your OonaCode credits and kept with the summary.`]}),(0,K.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-3`,children:[(0,K.jsx)(KS,{label:`Language`,children:(0,K.jsx)(`select`,{"aria-label":`Language`,className:qS,value:M.code,disabled:B,onChange:e=>N({language:e.target.value}),children:Ed.map(e=>{let t=e.name===e.native?e.name:`${e.name} — ${e.native}`;return(0,K.jsx)(`option`,{value:e.code,children:ye.has(e.code)?`${t} ✓`:t},e.code)})})}),o&&u===null?(0,K.jsx)(`p`,{className:`px-1 py-2 text-fg-muted`,"data-testid":`voice-loading`,children:`Looking for this PC’s voices…`}):L.length>0?(0,K.jsx)(KS,{label:`Voice`,children:(0,K.jsx)(`select`,{"aria-label":`Voice`,className:qS,value:R?.key??``,disabled:B,onChange:e=>N({localVoice:{...c.localVoice,[M.code]:e.target.value}}),children:L.map(e=>(0,K.jsx)(`option`,{value:e.key,children:e.label},e.key))})}):(0,K.jsx)(`p`,{className:`rounded-md border border-border bg-surface-2 px-3 py-2 text-fg-muted`,"data-testid":`no-local-voice`,children:Av(M,!!o,s,z)}),(0,K.jsx)(KS,{label:`Length of a new summary`,children:(0,K.jsxs)(`select`,{"aria-label":`Length of a new summary`,className:qS,value:String(c.words),disabled:B,onChange:e=>N({words:Number(e.target.value)}),children:[(0,K.jsx)(`option`,{value:`120`,children:`Short — about 120 words`}),(0,K.jsx)(`option`,{value:`200`,children:`Normal — about 200 words`}),(0,K.jsx)(`option`,{value:`300`,children:`Long — about 300 words`}),[120,200,300].includes(c.words)?null:(0,K.jsxs)(`option`,{value:String(c.words),children:[c.words,` words`]})]})})]}),(0,K.jsx)(zW,{stage:b,playerError:xe}),(0,K.jsx)(AW,{player:T,snapshot:j,speed:c.speed,onSpeed:ge}),P&&be!==null?(0,K.jsxs)(`section`,{children:[(0,K.jsxs)(`div`,{className:`mb-1 flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-faint`,children:Xf.heading(M,oe!==null)}),ve.length>1?(0,K.jsx)(`div`,{className:`flex flex-wrap gap-1`,role:`group`,"aria-label":`Languages it has`,children:ve.map(e=>{let t=Dd(e);if(!t)return null;let n=e===M.code;return(0,K.jsx)(`button`,{type:`button`,"aria-pressed":n,title:t.name===t.native?t.name:`${t.name} — ${t.native}`,disabled:B,onClick:()=>N({language:e}),"data-testid":`voice-lang-chip`,className:G(`rounded-full border px-2 py-0.5 text-xs`,n?`border-accent bg-accent/15 text-accent`:`border-border text-fg-muted hover:bg-surface-2`),children:e.toUpperCase()},e)})}):null]}),(0,K.jsx)(MW,{text:be,timeline:Ce,wordIndex:j?.wordIndex??-1,onPickWord:e=>D.current?.seekWord(e),dir:oe!==null&&M.rtl?`rtl`:`ltr`,lang:oe===null?`en-US`:M.bcp47})]}):null]})})}function RW(e,t,n){return e&&{...e,summaries:e.summaries.map(e=>e.id===t?{...e,translations:[...e.translations.filter(e=>e.language!==n.language),n]}:e)}}function zW({stage:e,playerError:t}){let n=e.kind===`error`?e.message:t;if(n)return(0,K.jsx)(`p`,{className:`rounded-md border border-danger/40 bg-danger/10 px-3 py-2 text-danger`,role:`alert`,"data-testid":`voice-stage`,children:n});if(e.kind!==`summarising`&&e.kind!==`translating`)return null;let r=[{key:`summarising`,label:Xf.generating},{key:`translating`,label:Xf.translating}],i=r.findIndex(t=>t.key===e.kind);return(0,K.jsx)(`ol`,{className:`flex flex-wrap items-center gap-2 text-xs`,"data-testid":`voice-stage`,"aria-live":`polite`,children:r.map((e,t)=>(0,K.jsx)(`li`,{className:G(`rounded-full px-2 py-0.5`,t===i?`bg-accent/15 font-medium text-accent`:t<i?`text-fg-muted line-through`:`text-fg-faint`),children:e.label},e.key))})}function BW(e){return Gd(e).replace(/\n+/g,` `).trim()||e.trim()}function VW(e){let t=e instanceof Error?e.message:String(e);return/no route for|404/i.test(t)&&/about/i.test(t)?`This PC’s OonaCode host cannot read the abouts in other languages yet — update OonaCode. English plays.`:t}function HW(e){return{sessionId:e.sessionId,title:e.title.trim()||`Untitled chat`,about:e.about}}function UW(e){return e.filter(e=>!e.pending&&e.source!==`user`&&(!e.about||e.stale))}function WW({open:e,picked:t}){let{api:n}=q(),r=(0,v.useRef)(n);r.current=n;let i=typeof window<`u`?window.oonacode?.tts:void 0,a=kv(typeof window<`u`?window.oonacode?.platform:null,typeof navigator<`u`?navigator.userAgent:null),[o,s]=(0,v.useState)(()=>vv()),[c,l]=(0,v.useState)(null),u=PW(e),d=Dd(o.language)??Dd(`en`),f=(0,v.useMemo)(()=>Dv(d,c??[],u),[d,c,u]),p=Ov(f,o.localVoice[d.code]),m=!!(i&&c&&!c.some(e=>e.engine===`espeak`)),[h,g]=(0,v.useState)(Qv),[_,y]=(0,v.useState)(null),[b,x]=(0,v.useState)(0),[S,C]=(0,v.useState)(!1),w=(0,v.useRef)({lang:d,voice:p,speed:o.speed,espeakMissing:m,platform:a,tts:i});w.current={lang:d,voice:p,speed:o.speed,espeakMissing:m,platform:a,tts:i};let T=(0,v.useCallback)(e=>{s(t=>{let n={...t,...e};return yv(n),n})},[]),E=(0,v.useMemo)(()=>{let e=Bv();return new ry({words:async e=>{let{lang:t}=w.current;if(!e.about)return{name:BW(e.title),body:[Cd(t.code)]};if(t.code===`en`)return{name:BW(e.title),body:Xd(Gd(e.about))};let n=r.current.translateChatAbout;if(!n)throw Error(`This PC’s OonaCode host cannot read the abouts in other languages yet — update OonaCode. English plays.`);try{let r=await n(e.sessionId,{language:t.code});return r.created&&x(e=>e+1),{name:r.translation.name?BW(r.translation.name):null,body:Xd(r.translation.text)}}catch(e){throw Error(`could not translate it: ${VW(e)}`)}},speak:(t,{signal:n,onItem:r})=>{let i=w.current;return iy(t,{voice:i.voice,language:i.lang,speed:i.speed,tts:i.tts,player:e,synth:typeof window<`u`?window.speechSynthesis:void 0,makeUtterance:e=>new SpeechSynthesisUtterance(e),platform:i.platform,espeakMissing:i.espeakMissing,prepare:hf,signal:n,onItem:r})},silence:()=>{e.stop();try{typeof window<`u`&&window.speechSynthesis?.cancel()}catch{}},onState:g})},[]);(0,v.useEffect)(()=>{if(!e){E.reset();return}s(vv()),i?(l(null),i.listVoices().then(l,()=>l([]))):l([])},[e,i,E]),(0,v.useEffect)(()=>()=>E.dispose(),[E]),(0,v.useEffect)(()=>{E.resetWords()},[d.code,E]);let D=t.map(e=>`${e.sessionId}\u0000${e.title}\u0000${e.about??``}`).join(``);(0,v.useEffect)(()=>{C(!1)},[D,d.code]),(0,v.useEffect)(()=>{let r=n.planChatAboutTranslations;if(!e||d.code===`en`||t.length===0||!r){y(null);return}let i=!0;return r({language:d.code,sessionIds:t.map(e=>e.sessionId)}).then(e=>i&&y(e),()=>i&&y(null)),()=>{i=!1}},[e,d.code,D,b,n]);let O=h.status===`preparing`||h.status===`speaking`,k=d.code!==`en`&&_!==null&&_.language===d.code&&_.needed>gd.confirmAbove,A=(0,v.useCallback)(()=>{C(!1),E.start(t.map(HW),0)},[E,t]),j=(0,v.useCallback)(()=>{if(t.length!==0){if(k&&!S){C(!0);return}A()}},[t.length,k,S,A]);return{prefs:o,update:T,lang:d,options:f,voice:p,espeakMissing:m,voicesLoading:!!i&&c===null,desktop:!!i,platform:a,state:h,busy:O,active:$v(h),plan:_&&_.language===d.code?_:null,confirming:S,play:j,start:A,cancelConfirm:()=>C(!1),pause:()=>E.pause(),resume:()=>E.resume(),stop:()=>E.stop(),next:()=>E.next(),previous:()=>E.previous(),jumpTo:e=>E.jumpTo(e),pickedCount:t.length}}function GW({b:e,picked:t,enabled:n,generateAll:r,onGenerated:i}){let{api:a}=q(),[o,s]=(0,v.useState)(!1),[c,l]=(0,v.useState)(null),u=UW(t),d=u.filter(e=>!e.about).length,f=u.length-d,p=r?.running===!0,m=async()=>{if(a.generateChatAbouts){s(!0),l(null);try{i((await a.generateChatAbouts({sessionIds:u.map(e=>e.sessionId)})).generateAll)}catch(e){l(VW(e))}finally{s(!1)}}},h=e.busy;return(0,K.jsxs)(`section`,{className:`space-y-2 rounded-md border border-border px-3 py-2`,"data-testid":`briefing-panel`,"aria-label":`Listen to the picked chats`,children:[(0,K.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-faint`,children:`Listen to the picked chats`}),(0,K.jsxs)(`p`,{className:`text-xs text-fg-muted`,children:[`Tick chats below, then Play: each chat’s name, then its about, one after another. Another language is translated once by `,Od.label,` on your OonaCode credits and kept, so playing it again costs nothing.`]}),(0,K.jsxs)(`div`,{className:`grid grid-cols-1 gap-2 sm:grid-cols-3`,children:[(0,K.jsx)(KS,{label:`Language`,children:(0,K.jsx)(`select`,{"aria-label":`Language`,className:qS,value:e.lang.code,disabled:h,onChange:t=>e.update({language:t.target.value}),"data-testid":`briefing-language`,children:Ed.map(e=>(0,K.jsx)(`option`,{value:e.code,children:e.name===e.native?e.name:`${e.name} — ${e.native}`},e.code))})}),e.voicesLoading?(0,K.jsx)(`p`,{className:`px-1 py-2 text-xs text-fg-muted`,"data-testid":`briefing-voices-loading`,children:`Looking for this PC’s voices…`}):e.options.length>0?(0,K.jsx)(KS,{label:`Voice`,children:(0,K.jsx)(`select`,{"aria-label":`Voice`,className:qS,value:e.voice?.key??``,disabled:h,onChange:t=>e.update({localVoice:{...e.prefs.localVoice,[e.lang.code]:t.target.value}}),"data-testid":`briefing-voice`,children:e.options.map(e=>(0,K.jsx)(`option`,{value:e.key,children:e.label},e.key))})}):(0,K.jsx)(`p`,{className:`rounded-md border border-border bg-surface-2 px-2 py-1.5 text-xs text-fg-muted sm:col-span-2`,"data-testid":`briefing-no-voice`,children:Av(e.lang,e.desktop,e.platform,e.espeakMissing)}),(0,K.jsx)(KS,{label:`Speed ×${e.prefs.speed.toFixed(2)}`,children:(0,K.jsx)(`input`,{"aria-label":`Speed`,type:`range`,min:Ad.speed.min,max:Ad.speed.max,step:.05,value:e.prefs.speed,disabled:h,onChange:t=>e.update({speed:Number(t.target.value)})})})]}),e.plan&&t.length>0?(0,K.jsxs)(`p`,{className:`text-xs text-fg-muted`,"data-testid":`briefing-cost`,children:[Td(e.plan,e.lang.name),e.plan.needed>0?` — paid once, then kept.`:``]}):null,e.confirming&&e.plan?(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 rounded-md border border-warn/50 bg-warn-soft px-2 py-1.5 text-xs text-fg`,role:`alert`,"data-testid":`briefing-confirm`,children:[(0,K.jsxs)(`p`,{className:`basis-full`,children:[`Before playing: `,Td(e.plan,e.lang.name),` — paid once from your OonaCode credits, then kept.`]}),(0,K.jsx)(X,{size:`sm`,variant:`primary`,onClick:e.start,"data-testid":`briefing-confirm-play`,children:`Translate and play`}),(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:e.cancelConfirm,children:`Cancel`})]}):null,u.length>0&&a.generateChatAbouts?(0,K.jsxs)(`div`,{className:`space-y-1.5 text-xs`,"data-testid":`briefing-need-about`,children:[(0,K.jsx)(`p`,{className:`text-fg-muted`,children:Zv(d,f)}),(0,K.jsxs)(X,{size:`sm`,onClick:()=>void m(),busy:o,disabled:!n||p||e.busy,title:n?void 0:`Chat abouts are off — turn them on above.`,"data-testid":`briefing-write-first`,children:[(0,K.jsx)(Y.Refresh,{className:`h-3 w-3`}),` Write abouts for these first`]})]}):null,c?(0,K.jsx)(`p`,{className:`text-xs text-danger`,"data-testid":`briefing-write-error`,children:c}):null]})}function KW({b:e}){let t=e.state,n=t.index>=0?` (${t.index+1} of ${t.total})`:``,r=null;return t.status===`preparing`?r=`Now: ${t.title??``}${n} — ${e.lang.code===`en`?`getting ready…`:`translating…`}`:t.status===`speaking`?r=`Now: ${t.title??``}${n}`:t.status===`paused`?r=`Paused: ${t.title??``}${n}`:t.status===`done`?r=`Finished — ${t.total} chat${t.total===1?``:`s`} read.`:t.status===`stopped`?r=`Stopped.`:t.status===`error`&&(r=t.error),(0,K.jsxs)(K.Fragment,{children:[r?(0,K.jsx)(`p`,{className:G(`mr-auto min-w-0 basis-full truncate text-xs sm:basis-auto sm:flex-1`,t.status===`error`?`text-danger`:`text-fg-muted`),title:r,"aria-live":`polite`,"data-testid":`briefing-now`,children:r}):null,e.active||t.status===`error`?(0,K.jsxs)(`span`,{className:`inline-flex flex-wrap items-center gap-1`,children:[(0,K.jsx)(X,{size:`sm`,onClick:e.previous,disabled:t.status===`error`,"aria-label":`Previous chat`,title:`Previous chat`,"data-testid":`briefing-previous`,children:(0,K.jsx)(Y.SkipBack,{className:`h-3.5 w-3.5`})}),t.status===`paused`||t.status===`error`?(0,K.jsxs)(X,{size:`sm`,variant:`primary`,onClick:e.resume,"data-testid":`briefing-resume`,children:[(0,K.jsx)(Y.Play,{className:`h-3.5 w-3.5`}),` `,t.status===`error`?`Try again`:`Resume`]}):(0,K.jsxs)(X,{size:`sm`,onClick:e.pause,"data-testid":`briefing-pause`,children:[(0,K.jsx)(Y.Pause,{className:`h-3.5 w-3.5`}),` Pause`]}),(0,K.jsxs)(X,{size:`sm`,onClick:e.stop,"data-testid":`briefing-stop`,children:[(0,K.jsx)(Y.Stop,{className:`h-3.5 w-3.5`}),` Stop`]}),(0,K.jsx)(X,{size:`sm`,onClick:e.next,disabled:t.status===`error`,"aria-label":`Next chat`,title:`Next chat`,"data-testid":`briefing-next`,children:(0,K.jsx)(Y.SkipForward,{className:`h-3.5 w-3.5`})})]}):(0,K.jsxs)(X,{variant:`primary`,onClick:e.play,disabled:e.pickedCount===0||e.voice===null||e.voicesLoading,title:e.pickedCount===0?`Tick the chats to hear first`:void 0,"data-testid":`briefing-play`,children:[(0,K.jsx)(Y.Play,{className:`h-4 w-4`}),` Play `,e.pickedCount,` picked`]})]})}function qW({open:e,onClose:t}){let{state:n,actions:r}=q(),i=n.chatAboutsChange,[a,o]=(0,v.useState)(null),[s,c]=(0,v.useState)(!1),[l,u]=(0,v.useState)(!1),[d,f]=(0,v.useState)(null),[p,m]=(0,v.useState)(``),[h,g]=(0,v.useState)(!1),[_,y]=(0,v.useState)(!1),[b,x]=(0,v.useState)(!1),S=(0,v.useRef)(-1),[C,w]=(0,v.useState)(()=>Kv()),[T,E]=(0,v.useState)(()=>new Set),[D,O]=(0,v.useState)(()=>Date.now()),k=(0,v.useCallback)(async()=>{let e=await r.listChatAbouts();if(e===`unsupported`){c(!0);return}if(e===null){u(!0);return}c(!1),u(!1),o(e),f(e.generateAll)},[r]);(0,v.useEffect)(()=>{e&&(S.current=i.seq,O(Date.now()),k())},[e]);let A=e=>{w(t=>{let n={...t,...e};return qv(n),n}),O(Date.now())};(0,v.useEffect)(()=>{!e||i.seq===S.current||(S.current=i.seq,i.generateAll!==void 0&&f(i.generateAll),k())},[e,i,k]);let j=n.settings?.chatAboutEnabled??a?.settings.enabled??Hu.enabled,M=async e=>{x(!0);try{await r.saveSettings({chatAboutEnabled:e})}finally{x(!1)}k()},N=async()=>{g(!0);try{let e=await r.generateAllChatAbouts();e&&f(e.generateAll)}finally{g(!1)}},ee=async()=>{y(!0);try{let e=await r.stopGenerateAllChatAbouts();e&&f(e.generateAll)}finally{y(!1)}},P=(0,v.useMemo)(()=>bd(C.range,D,{from:C.from,to:C.to}),[C,D]),F=(0,v.useMemo)(()=>{let e=(a?.chats??[]).filter(e=>xd(e.updatedAt,P)),t=e=>{let t=Date.parse(e.updatedAt);return Number.isFinite(t)?t:0};return[...e].sort((e,n)=>t(n)-t(e))},[a,P]),I=(0,v.useMemo)(()=>{let e=p.trim().toLowerCase();return e?F.filter(t=>t.title.toLowerCase().includes(e)||(t.about??``).toLowerCase().includes(e)):F},[F,p]),te=(0,v.useMemo)(()=>I.map(e=>e.sessionId),[I]),ne=te.join(`,`);(0,v.useEffect)(()=>{E(e=>Xv(e,te))},[ne]);let re=(0,v.useMemo)(()=>I.filter(e=>T.has(e.sessionId)),[I,T]),L=Jv(te,T),R=(0,v.useRef)(null);(0,v.useEffect)(()=>{R.current&&(R.current.indeterminate=L===`some`)});let z=WW({open:e,picked:re}),B=z.active||z.state.status===`error`,ie=(0,v.useMemo)(()=>new Set(z.state.playlist),[z.state.playlist]),ae=B?z.state.sessionId:null,oe=e=>E(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),se=_d.find(e=>e.id===C.range)?.label??``,ce=(0,v.useCallback)(e=>n.sessions.find(t=>t.id===e)?.entryCount??null,[n.sessions]),le=a?ud(a.totals):null,ue=d?.running===!0;return(0,K.jsxs)(JS,{open:e,title:`What your chats are about`,onClose:t,wide:!0,footer:(0,K.jsxs)(K.Fragment,{children:[a!==null&&!s?(0,K.jsx)(KW,{b:z}):null,(0,K.jsx)(X,{variant:`ghost`,onClick:t,children:`Close`})]}),children:[(0,K.jsxs)(`p`,{className:`mb-3 flex items-center gap-1.5 text-xs text-fg-muted`,children:[(0,K.jsx)(`span`,{className:`min-w-0`,children:`A short note per chat on this PC saying what it works on, so your other chats can tell which one to ask.`}),(0,K.jsx)(WS,{label:`What your chats are about`,details:(0,K.jsx)(GS,{items:[...hd.what,...hd.when,...hd.who,...hd.yours,...hd.where]})})]}),s?(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,"data-testid":`chat-abouts-unsupported`,children:`OonaCode on this PC is too old for chat abouts. Update it, then open this window again.`}):a===null?(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,"data-testid":`chat-abouts-loading`,children:l?`Could not read the abouts from this PC right now. They show here as soon as it answers.`:`Loading…`}):(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsx)(`div`,{className:`rounded-md border border-border px-3`,children:(0,K.jsx)(YS,{label:`Write an about for every chat`,hint:j?`On: each chat’s housekeeper model writes its about in the background.`:`Off: nothing is written and nothing is spent. Regenerate and “Generate for all chats now” are unavailable.`,details:[hd.switch,...hd.who],checked:j,disabled:b,onChange:e=>void M(e),testId:`chat-abouts-switch`})}),le?(0,K.jsxs)(`div`,{className:`text-xs text-fg-muted`,"data-testid":`chat-abouts-totals`,children:[(0,K.jsx)(`span`,{className:`font-medium text-fg`,children:`All about calls so far: `}),(0,K.jsx)(`span`,{"data-testid":`chat-abouts-totals-line`,children:le.line}),le.unpriced?(0,K.jsx)(`span`,{className:`block text-fg-faint`,"data-testid":`chat-abouts-totals-unpriced`,children:le.unpriced}):null]}):null,(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,K.jsxs)(X,{size:`sm`,variant:`primary`,onClick:()=>void N(),busy:h,disabled:!j||ue,title:j?hd.generateAll:hd.regenerateOff,"data-testid":`chat-abouts-generate-all`,children:[(0,K.jsx)(Y.Refresh,{className:`h-3 w-3`}),` Generate for all chats now`]}),(0,K.jsx)(WS,{label:`Generate for all chats now`,details:hd.generateAll})]}),ue?(0,K.jsxs)(X,{size:`sm`,variant:`danger`,onClick:()=>void ee(),busy:_,title:hd.stop,"data-testid":`chat-abouts-stop`,children:[(0,K.jsx)(Y.Stop,{className:`h-3 w-3`}),` Stop`]}):null]}),d?(0,K.jsx)(JW,{g:d}):null,(0,K.jsx)(GW,{b:z,picked:re,enabled:j,generateAll:d,onGenerated:f}),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-end gap-2`,children:[(0,K.jsxs)(`label`,{className:`flex min-w-0 flex-col gap-1 text-xs font-medium text-fg`,children:[`Last active`,(0,K.jsx)(`select`,{"aria-label":`Last active`,className:G(qS,`text-xs`),value:C.range,onChange:e=>A({range:e.target.value}),"data-testid":`chat-abouts-range`,children:_d.map(e=>(0,K.jsx)(`option`,{value:e.id,children:e.label},e.id))})]}),C.range===`custom`?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`label`,{className:`flex min-w-0 flex-col gap-1 text-xs font-medium text-fg`,children:[`From`,(0,K.jsx)(`input`,{type:`date`,"aria-label":`From`,className:G(Z,`text-xs`),value:C.from,onChange:e=>A({from:e.target.value}),"data-testid":`chat-abouts-from`})]}),(0,K.jsxs)(`label`,{className:`flex min-w-0 flex-col gap-1 text-xs font-medium text-fg`,children:[`To`,(0,K.jsx)(`input`,{type:`date`,"aria-label":`To`,className:G(Z,`text-xs`),value:C.to,onChange:e=>A({to:e.target.value}),"data-testid":`chat-abouts-to`})]})]}):null,(0,K.jsx)(`input`,{className:G(Z,`min-w-[10rem] flex-1 basis-40 text-xs`),type:`search`,value:p,onChange:e=>m(e.target.value),placeholder:`Find a chat by its title or its about`,"aria-label":`Find a chat by its title or its about`,"data-testid":`chat-abouts-filter`})]}),I.length>0?(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 text-xs`,children:[(0,K.jsxs)(`label`,{className:`inline-flex items-center gap-2 font-medium text-fg`,children:[(0,K.jsx)(`input`,{ref:R,type:`checkbox`,checked:L===`all`,"aria-checked":L===`some`?`mixed`:L===`all`,onChange:()=>E(e=>Yv(te,e)),"data-testid":`chat-abouts-select-all`}),`Select all`]}),(0,K.jsxs)(`span`,{className:`text-fg-muted`,"data-testid":`chat-abouts-count`,children:[I.length,` chat`,I.length===1?``:`s`,re.length>0?` · ${re.length} picked`:``]})]}):null,a.chats.length===0?(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,"data-testid":`chat-abouts-empty`,children:`No chats on this PC yet.`}):I.length===0?(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,"data-testid":`chat-abouts-no-match`,children:p.trim()?`No chat matches “${p.trim()}”${C.range===`all`?``:` in ${se.toLowerCase()}`}.`:`No chat was active in ${C.range===`custom`?`that range`:se.toLowerCase()}.`}):(0,K.jsx)(`ul`,{className:`space-y-2`,"data-testid":`chat-abouts-list`,children:I.map(e=>(0,K.jsx)(YW,{row:e,enabled:j,entryCount:ce(e.sessionId),checked:T.has(e.sessionId),onToggle:()=>oe(e.sessionId),playing:ae===e.sessionId,onJump:B&&ie.has(e.sessionId)?()=>z.jumpTo(e.sessionId):null,onOpen:()=>{r.selectSession(e.sessionId)}},e.sessionId))})]})]})}function JW({g:e}){let t=e.total>0?Math.round(Math.min(e.done,e.total)/e.total*100):100;return(0,K.jsxs)(`div`,{className:`space-y-1 text-xs`,"data-testid":`chat-abouts-progress`,children:[(0,K.jsx)(`div`,{className:`text-fg-muted`,"data-testid":`chat-abouts-progress-line`,children:fd(e)}),(0,K.jsx)(`div`,{className:`h-1.5 overflow-hidden rounded-full bg-surface-3`,role:`progressbar`,"aria-label":`Generate for all chats now`,"aria-valuemin":0,"aria-valuemax":e.total,"aria-valuenow":e.done,children:(0,K.jsx)(`div`,{className:G(`h-full rounded-full`,e.running?`bg-accent`:`bg-fg-faint`),style:{width:`${t}%`}})}),!e.running&&e.stoppedReason?(0,K.jsxs)(`div`,{className:`text-warn`,"data-testid":`chat-abouts-stopped-reason`,children:[`Stopped: `,e.stoppedReason]}):null]})}function YW({row:e,enabled:t,entryCount:n,checked:r,onToggle:i,playing:a,onJump:o,onOpen:s}){let c=e.title.trim()||`Untitled chat`,l=ad(e),u=(0,v.useRef)(null);return(0,v.useEffect)(()=>{a&&u.current?.scrollIntoView?.({block:`nearest`})},[a]),(0,K.jsxs)(`li`,{ref:u,className:G(`rounded-md border px-3 py-2 text-xs`,a?`border-accent bg-accent/10`:`border-border`,o?`cursor-pointer hover:border-accent`:``),onClick:o??void 0,title:o&&!a?`Play from this chat`:void 0,"aria-current":a?`true`:void 0,"data-testid":`chat-about-row-${e.sessionId}`,"data-playing":a?`true`:void 0,children:[(0,K.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,K.jsx)(`input`,{type:`checkbox`,className:`shrink-0`,checked:r,onChange:i,onClick:e=>e.stopPropagation(),"aria-label":`Pick ${c}`,"data-testid":`chat-about-pick`}),a?(0,K.jsx)(Y.Speaker,{className:`h-3.5 w-3.5 text-accent`,title:`Playing`}):null,(0,K.jsx)(`button`,{type:`button`,className:`min-w-0 max-w-full truncate text-left text-sm font-medium text-fg hover:text-accent hover:underline`,onClick:e=>{e.stopPropagation(),s()},title:`Open this chat`,"data-testid":`chat-about-open`,children:c}),e.source===`user`?(0,K.jsx)(`span`,{title:hd.yours[0],children:(0,K.jsx)(Q,{tone:`accent`,children:`yours`})}):null,e.stale&&e.about?(0,K.jsx)(`span`,{title:hd.stale,"data-testid":`chat-about-stale`,children:(0,K.jsx)(Q,{tone:`warn`,children:`stale`})}):null,e.pending?(0,K.jsx)(`span`,{"data-testid":`chat-about-pending`,children:(0,K.jsx)(Q,{tone:`accent`,children:`writing…`})}):null]}),e.about?(0,K.jsx)(`p`,{className:`mt-1 whitespace-pre-wrap break-words text-fg`,"data-testid":`chat-about-text`,children:e.about}):null,e.about&&e.stale?(0,K.jsx)(`p`,{className:`mt-0.5 text-warn`,"data-testid":`chat-about-stale-note`,children:`The chat has moved on since this about was written.`}):null,e.about?null:(0,K.jsxs)(`p`,{className:`mt-1 text-fg-muted`,"data-testid":`chat-about-missing`,children:[`No about yet. `,dd(e,{enabled:t,entryCount:n})]}),e.about&&e.lastError?(0,K.jsxs)(`p`,{className:`mt-0.5 text-danger`,"data-testid":`chat-about-error`,children:[`The last attempt failed: `,e.lastError]}):null,(0,K.jsxs)(`div`,{className:`mt-1 flex flex-wrap justify-between gap-x-3 gap-y-0.5 text-[11px] text-fg-faint`,children:[(0,K.jsxs)(`span`,{title:K_(e.updatedAt),"data-testid":`chat-about-active`,children:[`Active `,W_(e.updatedAt)]}),e.about&&e.aboutAt?(0,K.jsxs)(`span`,{title:K_(e.aboutAt),"data-testid":`chat-about-written`,children:[`Written `,W_(e.aboutAt),l?` by ${l}`:``]}):(0,K.jsx)(`span`,{}),(0,K.jsx)(`span`,{title:e.route?`Paid by ${od[e.route]}`:void 0,"data-testid":`chat-about-spend`,children:ld(e.spend,e.route)})]})]})}function XW({open:e,onClose:t}){let{state:n,actions:r}=q(),i=n.nextPromptsChange,[a,o]=(0,v.useState)(null),[s,c]=(0,v.useState)(!1),[l,u]=(0,v.useState)(!1),[d,f]=(0,v.useState)(null),[p,m]=(0,v.useState)(()=>gb()),[h,g]=(0,v.useState)(()=>mb()),[_,y]=(0,v.useState)(()=>new Set),[b,x]=(0,v.useState)(()=>Date.now()),[S,C]=(0,v.useState)(!1),[w,T]=(0,v.useState)(!1),[E,D]=(0,v.useState)({}),[O,k]=(0,v.useState)(()=>new Set),[A,j]=(0,v.useState)({}),[M,N]=(0,v.useState)(()=>new Set),[ee,P]=(0,v.useState)({}),F=(0,v.useRef)(-1),I=(0,v.useCallback)(async()=>{let e=await r.listNextPrompts();if(e===`unsupported`){c(!0);return}if(e===null){u(!0);return}c(!1),u(!1),o(e),f(e.review)},[r]);(0,v.useEffect)(()=>{e&&(F.current=i.seq,x(Date.now()),I())},[e]),(0,v.useEffect)(()=>{!e||i.seq===F.current||(F.current=i.seq,i.review!==void 0&&f(i.review),I())},[e,i,I]);let te=e=>{m(t=>{let n={...t,...e};return _b(n),n}),x(Date.now())},ne=(0,v.useMemo)(()=>{let e=new Map;for(let t of a?.suggestions??[])e.set(t.sessionId,t);return e},[a]),re=(0,v.useMemo)(()=>bd(p.range,b,{from:p.from,to:p.to}),[p,b]),L=(0,v.useMemo)(()=>{let e=e=>{let t=Date.parse(e.updatedAt);return Number.isFinite(t)?t:0};return n.sessions.filter(e=>!n.remote.tabs[e.id]&&xd(e.updatedAt,re)).sort((t,n)=>e(n)-e(t))},[n.sessions,n.remote.tabs,re]),R=(0,v.useMemo)(()=>L.map(e=>e.id),[L]),z=R.join(`,`);(0,v.useEffect)(()=>{y(e=>Xv(e,R))},[z]);let B=(0,v.useMemo)(()=>R.filter(e=>_.has(e)),[R,_]),ie=Jv(R,_),ae=(0,v.useRef)(null);(0,v.useEffect)(()=>{ae.current&&(ae.current.indeterminate=ie===`some`)});let oe=e=>y(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),se=d?.running===!0,ce=a?.model??Vf.model,le=_d.find(e=>e.id===p.range)?.label??``,ue=async()=>{if(B.length!==0){C(!0);try{let e=await r.reviewNextPrompts(B,h);e&&f(e)}finally{C(!1)}}},de=async()=>{T(!0);try{let e=await r.stopNextPromptReview();e&&f(e)}finally{T(!1)}},fe=async e=>{k(t=>new Set(t).add(e)),j(({[e]:t,...n})=>n);try{let t=await r.suggestNextPrompt(e,{windowHours:h,force:!0});if(`error`in t){j(n=>({...n,[e]:t.error}));return}o(n=>n&&{...n,suggestions:[t.suggestion,...n.suggestions.filter(t=>t.sessionId!==e)]})}finally{k(t=>{let n=new Set(t);return n.delete(e),n})}},pe=async(e,t,n)=>{let i=t.trim();if(i){N(t=>new Set(t).add(e));try{if(!await r.sendToChat(e,i))return;n&&r.markNextPromptSent(e,n.id,i),P(t=>({...t,[e]:new Date().toISOString()})),D(({[e]:t,...n})=>n)}finally{N(t=>{let n=new Set(t);return n.delete(e),n})}}};return(0,K.jsxs)(JS,{open:e,title:Wf.managerTitle,onClose:t,wide:!0,footer:(0,K.jsx)(X,{variant:`ghost`,onClick:t,children:`Close`}),children:[(0,K.jsx)(`p`,{className:`mb-3 text-xs text-fg-muted`,"data-testid":`manager-hint`,children:Wf.managerHint}),s?(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,"data-testid":`manager-unsupported`,children:`OonaCode on this PC is too old for the project manager. Update it, then open this window again.`}):a===null?(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,"data-testid":`manager-loading`,children:l?`Could not read the suggestions from this PC right now. They show here as soon as it answers.`:`Loading…`}):(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-end gap-2`,children:[(0,K.jsxs)(`label`,{className:`flex min-w-0 flex-col gap-1 text-xs font-medium text-fg`,children:[`Last active`,(0,K.jsx)(`select`,{"aria-label":`Last active`,className:G(qS,`text-xs`),value:p.range,onChange:e=>te({range:e.target.value}),"data-testid":`manager-range`,children:_d.map(e=>(0,K.jsx)(`option`,{value:e.id,children:e.label},e.id))})]}),p.range===`custom`?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`label`,{className:`flex min-w-0 flex-col gap-1 text-xs font-medium text-fg`,children:[`From`,(0,K.jsx)(`input`,{type:`date`,"aria-label":`From`,className:G(Z,`text-xs`),value:p.from,onChange:e=>te({from:e.target.value}),"data-testid":`manager-from`})]}),(0,K.jsxs)(`label`,{className:`flex min-w-0 flex-col gap-1 text-xs font-medium text-fg`,children:[`To`,(0,K.jsx)(`input`,{type:`date`,"aria-label":`To`,className:G(Z,`text-xs`),value:p.to,onChange:e=>te({to:e.target.value}),"data-testid":`manager-to`})]})]}):null,(0,K.jsxs)(`label`,{className:`flex min-w-0 flex-col gap-1 text-xs font-medium text-fg`,children:[`Read the last`,(0,K.jsx)(`select`,{"aria-label":`Hours of each chat to read`,className:G(qS,`text-xs`),value:h,onChange:e=>{let t=Number(e.target.value);g(t),hb(t)},"data-testid":`manager-window`,children:Hf.map(e=>(0,K.jsxs)(`option`,{value:e,children:[e,` hour`,e===1?``:`s`]},e))})]}),(0,K.jsxs)(`span`,{className:`ml-auto inline-flex items-center gap-1.5`,children:[(0,K.jsxs)(X,{size:`sm`,variant:`primary`,onClick:()=>void ue(),busy:S,disabled:B.length===0||se,"data-testid":`manager-review`,children:[(0,K.jsx)(Y.Lightbulb,{className:`h-3 w-3`}),` Review selected (`,B.length,`)`]}),se?(0,K.jsxs)(X,{size:`sm`,variant:`danger`,onClick:()=>void de(),busy:w,"data-testid":`manager-stop`,children:[(0,K.jsx)(Y.Stop,{className:`h-3 w-3`}),` Stop`]}):null]})]}),d?(0,K.jsxs)(`div`,{className:`space-y-1 text-xs`,"data-testid":`manager-progress`,children:[(0,K.jsx)(`div`,{className:`text-fg-muted`,"data-testid":`manager-progress-line`,children:vb(d)}),(0,K.jsx)(`div`,{className:`h-1.5 overflow-hidden rounded-full bg-surface-3`,role:`progressbar`,"aria-label":`Review`,"aria-valuemin":0,"aria-valuemax":d.total,"aria-valuenow":d.done,children:(0,K.jsx)(`div`,{className:G(`h-full rounded-full`,d.running?`bg-accent`:`bg-fg-faint`),style:{width:`${d.total>0?Math.round(Math.min(d.done,d.total)/d.total*100):100}%`}})})]}):null,L.length>0?(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 text-xs`,children:[(0,K.jsxs)(`label`,{className:`inline-flex items-center gap-2 font-medium text-fg`,children:[(0,K.jsx)(`input`,{ref:ae,type:`checkbox`,checked:ie===`all`,"aria-checked":ie===`some`?`mixed`:ie===`all`,onChange:()=>y(e=>Yv(R,e)),"data-testid":`manager-select-all`}),`Select all`]}),(0,K.jsxs)(`span`,{className:`text-fg-muted`,"data-testid":`manager-count`,children:[L.length,` chat`,L.length===1?``:`s`,B.length>0?` · ${B.length} picked`:``]})]}):null,L.length===0?(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,"data-testid":`manager-empty`,children:n.sessions.length===0?`No chats on this PC yet.`:`No chat was active in ${p.range===`custom`?`that range`:le.toLowerCase()}.`}):(0,K.jsx)(`ul`,{className:`space-y-2`,"data-testid":`manager-list`,children:L.map(e=>{let i=e.id,a=ne.get(i)??null,o=n.transcripts[i]?.status??e.status,s=ee[i]&&(!a?.sentAt||ee[i]>a.sentAt)?ee[i]:a?.sentAt??null;return(0,K.jsx)(ZW,{session:e,status:o,suggestion:a,text:E[i]??a?.prompt??``,edited:E[i]!==void 0,checked:_.has(i),reviewing:O.has(i)||se&&d.current.includes(i),error:A[i]??null,sending:M.has(i),sentAt:s,onToggle:()=>oe(i),onEdit:e=>D(t=>({...t,[i]:e})),onSend:e=>void pe(i,e,a),onSuggest:()=>void fe(i),onOpen:()=>{r.selectSession(i),t()}},i)})}),(0,K.jsx)(`p`,{className:`text-[11px] text-fg-faint`,"data-testid":`manager-cost-note`,children:Wf.costNote(ce)})]})]})}function ZW({session:e,status:t,suggestion:n,text:r,edited:i,checked:a,reviewing:o,error:s,sending:c,sentAt:l,onToggle:u,onEdit:d,onSend:f,onSuggest:p,onOpen:m}){let h=Q_(e),g=Sb(e,t),_=t===`running`||t===`waiting_permission`,v=n?.status===`failed`;return(0,K.jsxs)(`li`,{className:`rounded-md border border-border px-3 py-2 text-xs`,"data-testid":`manager-row-${e.id}`,children:[(0,K.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,K.jsx)(`input`,{type:`checkbox`,className:`shrink-0`,checked:a,onChange:u,"aria-label":`Pick ${h}`,"data-testid":`manager-pick`}),(0,K.jsx)(RB,{status:t}),g?(0,K.jsx)(LB,{mark:g,testId:`manager-finished`}):null,(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm font-medium text-fg`,children:h}),(0,K.jsxs)(`span`,{className:`shrink-0 text-[11px] text-fg-faint`,title:K_(e.updatedAt),"data-testid":`manager-active`,children:[`Active `,W_(e.updatedAt)]})]}),o?(0,K.jsxs)(`p`,{className:`mt-1 flex items-center gap-1.5 text-fg-muted`,"data-testid":`manager-reading`,children:[(0,K.jsx)(Y.Spinner,{className:`h-3 w-3`}),Wf.reviewing(n?.windowHours??Vf.windowHours)]}):null,s?(0,K.jsx)(`p`,{className:`mt-1 text-danger`,"data-testid":`manager-error`,children:s}):null,n?v?(0,K.jsx)(`p`,{className:`mt-1 text-danger`,"data-testid":`manager-failed`,children:n.error??`The suggestion could not be written.`}):(0,K.jsxs)(`div`,{className:`mt-1 space-y-1`,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-start gap-1.5`,children:[(0,K.jsx)(`p`,{className:`min-w-0 flex-1 text-fg`,"data-testid":`manager-state`,children:n.state||`Where the chat stands is not said.`}),n.stale?(0,K.jsx)(`span`,{title:`The chat has moved on since this was written — Suggest for a fresh one.`,"data-testid":`manager-stale`,children:(0,K.jsx)(Q,{tone:`warn`,children:`stale`})}):null,i?(0,K.jsx)(`span`,{title:`Your edit is kept until you send it`,"data-testid":`manager-edited`,children:(0,K.jsx)(Q,{tone:`accent`,children:`edited`})}):null]}),n.why?(0,K.jsx)(`p`,{className:`text-fg-muted`,"data-testid":`manager-why`,children:n.why}):null,n.prompt===``&&!i?(0,K.jsx)(`p`,{className:`text-warn`,"data-testid":`manager-decide`,children:Wf.decideYourself}):null]}):!o&&!s?(0,K.jsx)(`p`,{className:`mt-1 text-fg-faint`,"data-testid":`manager-none`,children:`No suggestion yet — tick it and Review, or press Suggest.`}):null,n&&!v?(0,K.jsx)(`textarea`,{"aria-label":`Message for ${h}`,className:`mt-1.5 min-h-[4rem] w-full resize-y rounded-md border border-border bg-bg px-2 py-1.5 text-xs text-fg focus:border-accent focus:outline-none`,value:r,placeholder:`Write the message yourself, or press Suggest`,onChange:e=>d(e.target.value),"data-testid":`manager-text`}):null,(0,K.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-1.5`,children:[(0,K.jsxs)(X,{size:`sm`,variant:`primary`,disabled:!r.trim()||c,busy:c,onClick:()=>f(r),title:_?`The chat is working: this waits for the running turn`:void 0,"data-testid":`manager-send`,children:[(0,K.jsx)(Y.Send,{className:`h-3 w-3`}),` `,_?`Send — queues behind the running turn`:`Send`]}),(0,K.jsxs)(X,{size:`sm`,variant:`secondary`,disabled:o,onClick:p,"data-testid":`manager-suggest`,children:[(0,K.jsx)(Y.Lightbulb,{className:`h-3 w-3`}),` Suggest`]}),(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:m,"data-testid":`manager-open`,children:`Open chat`}),l?(0,K.jsxs)(`span`,{className:`text-ok`,"data-testid":`manager-sent`,children:[`Sent `,bb(l)]}):null,n?(0,K.jsxs)(`span`,{className:`ml-auto text-[11px] text-fg-faint`,"data-testid":`manager-cost`,children:[Yf(n.cost),` · `,W_(n.createdAt)]}):null]})]})}function QW({open:e,onClose:t}){let{state:n,actions:r}=q(),i=n.assignProjectSessionId,a=i?n.sessions.find(e=>e.id===i)??null:null,o=i?n.drafts[i]??null:null,s=a?.projectId??o?.projectId??null,[c,l]=(0,v.useState)(s),[u,d]=(0,v.useState)(!1);(0,v.useEffect)(()=>{e&&l(s)},[e,s]);let f=a?.status===`running`||a?.status===`waiting_permission`,p=Z_(a?Q_(a):o?.title??`New chat`);async function m(){if(i){d(!0);try{await r.setSessionProject(i,c)&&t()}finally{d(!1)}}}return(0,K.jsxs)(JS,{open:e,title:`Move “${p}” to a project`,onClose:t,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(X,{variant:`ghost`,onClick:()=>{t(),r.openDialog(`projects`)},children:`Manage projects…`}),(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(X,{variant:`ghost`,onClick:t,children:`Cancel`}),(0,K.jsx)(X,{variant:`primary`,onClick:m,disabled:u||c===s,"data-testid":`assign-project-apply`,children:`Apply`})]}),children:[(0,K.jsxs)(`div`,{className:`flex flex-col gap-0.5`,role:`radiogroup`,"aria-label":`Project`,children:[(0,K.jsx)($W,{selected:c===null,onSelect:()=>l(null),label:`No project`,testId:`assign-project-none`}),n.vaultProjects.map(e=>(0,K.jsx)($W,{selected:c===e.id,onSelect:()=>l(e.id),label:e.name,hint:e.instructions.trim()?`has instructions`:void 0,testId:`assign-project-${e.id}`},e.id)),n.vaultProjects.length===0?(0,K.jsxs)(`p`,{className:`px-2 py-2 text-xs text-fg-muted`,children:[`No projects yet — create one under `,(0,K.jsx)(`em`,{children:`Manage projects…`}),`.`]}):null]}),f?(0,K.jsx)(`p`,{className:`mt-2 text-xs text-fg-muted`,"data-testid":`assign-project-busy`,children:`This chat is mid-turn — it moves now and the turn is left alone. The project's instructions reach the agent at your next message.`}):(0,K.jsx)(`p`,{className:`mt-2 text-xs text-fg-muted`,children:`The project's instructions reach the agent on the chat's next start — nothing in the conversation is lost.`})]})}function $W({selected:e,onSelect:t,label:n,hint:r,testId:i}){return(0,K.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":e,onClick:t,className:G(`flex items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm`,e?`bg-accent-soft text-fg`:`hover:bg-surface-2 text-fg`),"data-testid":i,children:[(0,K.jsx)(`span`,{className:G(`inline-block h-3 w-3 rounded-full border`,e?`border-accent bg-accent`:`border-border`)}),(0,K.jsx)(Y.Project,{className:`w-3.5 h-3.5 shrink-0`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:n}),r?(0,K.jsx)(`span`,{className:`text-[11px] text-fg-faint`,children:r}):null]})}var eG=`Install Google’s agy`,tG=`Setting up Google’s agy for you — OonaCode downloads Google’s own release and checks its checksum (about 200 MB, nothing is bundled in OonaCode).`,nG=`OonaCode downloads Google’s own agy release (about 200 MB) and checks its checksum before it uses it. Nothing from Google is bundled inside OonaCode.`,rG=`Sign in with Google`,iG=`This PC’s OonaCode is too old to run chats on Google’s agy — update it from the title bar.`,aG=`Kept on this PC only, in memory: it is gone when OonaCode stops, and it is never synced or sent anywhere.`,oG=new Set([`loadCodeAssist`,`fetchAdminControls`,`retrieveUserQuotaSummary`,`fetchUserInfo`,`fetchAvailableModels`,`listExperiments`,`writeTrajectoryAcls`,`recordTrajectoryAnalytics`]);function sG(e){return e.kind===`tunnel`||e.method!==null&&oG.has(e.method)}function cG(e){let t=[],n=[];for(let r of e)(sG(r)?n:t).push(r);return{main:t,background:n}}function lG(e){if(e.kind===`tunnel`)return{title:e.host??`tunnel`,detail:null};let t=[e.model,e.requestType===`checkpoint`?`checkpoint`:null].filter(e=>!!e).join(` · `);return{title:e.method??`Code Assist call`,detail:t||null}}function uG(e){let{title:t,detail:n}=lG(e);return n?`${t} · ${n}`:t}function dG(e){let t=e.denied||e.error!==null||e.status!==null&&e.status>=400?`danger`:`neutral`;return e.denied?{text:`denied`,tone:t}:e.status===null?e.error===null?{text:`pending`,tone:t}:{text:`error`,tone:t}:{text:String(e.status),tone:t}}var fG=e=>e.toLocaleString(`en-US`);function pG(e){if(!e)return null;let t=e.cached>0?` (${fG(e.cached)} cached)`:``;return`in ${fG(e.input)}${t} · out ${fG(e.output)}`}function mG(e){let t=Date.parse(e);return Number.isFinite(t)?new Date(t).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}):``}function hG(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function gG(e){switch(e){case`ready`:return{label:`Ready`,tone:`ok`};case`not_installed`:return{label:`agy is not installed`,tone:`warn`};case`not_signed_in`:return{label:`Not signed in to agy`,tone:`warn`};default:return{label:`agy did not answer`,tone:`danger`}}}function _G(e){return e.newerThanTested?`This agy is newer than the version OonaCode was tested with (${e.testedVersion}). It usually keeps working; if chats on it start failing, look for an OonaCode update.`:null}function vG(e){let t=e.update;return t?t.state===`waiting`||t.state===`failed`||t.heldBack?t.message:t.state===`updating`?t.message??`OonaCode is updating agy…`:null:null}function yG(e){let t=e.group.trim(),n=e.window.trim();return t&&n.toLowerCase().startsWith(`${t.toLowerCase()} `)&&(n=n.slice(t.length).trim()),t?n?`${t} · ${n}`:t:n}function bG(e){let t=e.remainingPercent,n=t!==null&&Number.isFinite(t),r=K_(e.resetsAt);return{remaining:n?`${Math.round(Math.min(100,Math.max(0,t)))}% left`:`unknown`,tone:cc(t),resets:r?`resets ${r}`:null}}var xG=1e3,SG=2e3;function CG(e){if(!e)return null;if(e.install.state===`working`)return xG;switch(e.login.phase){case`starting`:case`verifying`:return xG;case`awaiting_code`:return SG;default:return null}}function wG(e){if(!e)return!1;if(e.install.state===`working`)return!0;let t=e.login.phase;return t===`starting`||t===`awaiting_code`||t===`verifying`}function TG(e){switch(e){case`manifest`:return`Looking up Google’s latest release…`;case`download`:return`Downloading agy…`;case`verify`:return`Checking the download…`;case`place`:return`Finishing up…`;default:return`Starting the install…`}}function EG(e){let{received:t,total:n}=e;return n===null||!Number.isFinite(n)||n<=0?null:Math.min(100,Math.max(0,Math.floor(t/n*100)))}function DG(e){let{received:t,total:n}=e;return n!==null&&n>0?`${gF(t)} of ${gF(n)}`:t>0?gF(t):null}function OG(e){if(!e)return null;try{return new URL(e).protocol===`https:`?e:null}catch{return null}}function kG(e,t){return t?e.split(t).join(`…`):e}function AG(e,t){return e?`Status…`:t?t.state===`not_installed`?t.install.supported?`Install…`:`Status…`:t.state===`not_signed_in`?`Sign in…`:`Status…`:`Set up…`}var jG=15,MG=2e4,NG=5e3,PG=null;function FG(e){let[t,n]=(0,v.useState)(()=>Date.now());return(0,v.useEffect)(()=>{if(!e)return;n(Date.now());let t=setInterval(()=>n(Date.now()),1e3);return()=>clearInterval(t)},[e]),t}function IG({install:e,busy:t,offer:n,onInstall:r,onCancel:i}){if(e.state===`working`){let n=EG(e),r=DG(e);return(0,K.jsxs)(`div`,{className:`space-y-1.5`,"data-testid":`agy-install`,"data-install-state":`working`,children:[(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,"data-testid":`agy-install-statement`,children:tG}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs text-fg`,role:`status`,"data-testid":`agy-install-phase`,"data-phase":e.phase??void 0,children:[(0,K.jsx)(Y.Spinner,{className:`h-3.5 w-3.5 shrink-0`}),(0,K.jsxs)(`span`,{className:`min-w-0`,children:[TG(e.phase),e.version?` (agy ${e.version})`:``]})]}),(0,K.jsx)(`div`,{className:`h-1.5 w-full overflow-hidden rounded-full bg-surface-3`,role:`progressbar`,"aria-label":`Installing agy`,"aria-valuemin":0,"aria-valuemax":100,...n===null?{}:{"aria-valuenow":n},"data-indeterminate":n===null?`true`:void 0,"data-testid":`agy-install-bar`,children:(0,K.jsx)(`div`,{className:G(`h-full rounded-full bg-accent`,n===null?`w-1/3 animate-pulse`:void 0),style:n===null?void 0:{width:`${n}%`}})}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`text-[11px] text-fg-faint`,"data-testid":`agy-install-bytes`,children:r??``}),(0,K.jsx)(X,{size:`sm`,variant:`ghost`,disabled:t,onClick:i,"data-testid":`agy-install-cancel`,children:`Cancel`})]})]})}return e.supported?e.state===`idle`&&!n?(0,K.jsx)(`div`,{className:`space-y-2`,"data-testid":`agy-install`,"data-install-state":`starting`,children:(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,"data-testid":`agy-install-statement`,children:tG})}):(0,K.jsxs)(`div`,{className:`space-y-2`,"data-testid":`agy-install`,"data-install-state":e.state,children:[e.state===`failed`?(0,K.jsx)(`div`,{className:`rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-xs text-danger`,role:`alert`,"data-testid":`agy-install-failed`,children:e.error??`The install did not finish.`}):(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,"data-testid":`agy-install-explanation`,children:nG}),(0,K.jsxs)(X,{variant:`primary`,busy:t,disabled:t,onClick:r,"data-testid":e.state===`failed`?`agy-install-retry`:`agy-install-button`,children:[(0,K.jsx)(Y.Download,{className:`h-4 w-4`}),` `,e.state===`failed`?`Try again`:eG]})]}):null}function LG({login:e,busy:t,onStart:n,onRestart:r,onCancel:i,onSubmit:a}){let[o,s]=(0,v.useState)(``),[c,l]=(0,v.useState)(!1),u=(0,v.useRef)(null);(0,v.useEffect)(()=>()=>{u.current&&clearTimeout(u.current)},[]),(0,v.useEffect)(()=>{e.phase!==`awaiting_code`&&s(``)},[e.phase]);let d=(0,v.useRef)(null),f=e.phase===`awaiting_code`,p=f?OG(e.url):null,m=f&&e.expiresAt?Date.parse(e.expiresAt):NaN,h=Number.isFinite(m),g=FG(f&&h),_=h?Math.max(0,Math.ceil((m-g)/1e3)):null,y=_===0;(0,v.useEffect)(()=>{y&&s(``)},[y]);let b=(0,v.useRef)(!1);(0,v.useEffect)(()=>{if(e.phase===`starting`&&(b.current=!0),!f||!p||!e.startedAt||PG===e.startedAt)return;let t=h?Date.now()-(m-6e4):1/0;if(!(!b.current&&t>NG)){PG=e.startedAt;try{XU(p)}catch{}}},[e.phase,p,e.startedAt]),(0,v.useEffect)(()=>{f&&Jz(d.current)},[f]);let[x,S]=(0,v.useState)(!1);(0,v.useEffect)(()=>{if(e.phase!==`verifying`){S(!1);return}let t=setTimeout(()=>S(!0),MG);return()=>clearTimeout(t)},[e.phase]);let C=o.trim(),w=Lh(C),T=()=>{!w||t||(s(``),a(C))},E=()=>{p&&OI(p).then(e=>{e&&(l(!0),u.current&&clearTimeout(u.current),u.current=setTimeout(()=>l(!1),1500))})},D=(0,K.jsx)(X,{size:`sm`,variant:`ghost`,disabled:t,onClick:i,"data-testid":`agy-login-cancel`,children:`Cancel`});return(0,K.jsxs)(`div`,{ref:d,className:`space-y-2`,"data-testid":`agy-sign-in`,"data-login-phase":e.phase,children:[(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,"data-testid":`agy-sign-in-explanation`,children:Ih}),e.phase===`starting`?(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,"data-testid":`agy-login-starting`,children:[(0,K.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5 text-xs text-fg`,role:`status`,children:[(0,K.jsx)(Y.Spinner,{className:`h-3.5 w-3.5 shrink-0`}),e.message??`Starting Google’s sign-in…`]}),(0,K.jsx)(`span`,{className:`flex-1`}),D]}):e.phase===`awaiting_code`?(0,K.jsxs)(`div`,{className:`space-y-2`,"data-testid":`agy-login-awaiting`,children:[y?(0,K.jsxs)(`div`,{className:`space-y-2`,"data-testid":`agy-login-expired`,children:[(0,K.jsx)(`div`,{className:`rounded-md border border-warn/40 bg-warn-soft px-3 py-2 text-xs text-warn`,role:`alert`,children:`Time ran out — Google’s agy only waits a minute. Press Sign in again.`}),(0,K.jsxs)(X,{variant:`primary`,busy:t,disabled:t,onClick:r,"data-testid":`agy-login-expired-restart`,children:[(0,K.jsx)(Y.LogIn,{className:`h-4 w-4`}),` Sign in again`]})]}):(0,K.jsxs)(K.Fragment,{children:[e.message?(0,K.jsx)(`p`,{className:`text-xs text-fg`,children:e.message}):null,p?(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,K.jsxs)(`a`,{className:`inline-flex items-center gap-1 text-xs font-medium text-accent underline`,href:p,target:`_blank`,rel:`noopener noreferrer`,onClick:e=>{e.preventDefault(),XU(p)},"data-testid":`agy-login-link`,children:[(0,K.jsx)(Y.ExternalLink,{className:`h-3.5 w-3.5`}),` Open Google’s sign-in page`]}),(0,K.jsxs)(X,{size:`sm`,onClick:E,"data-testid":`agy-login-copy-link`,children:[(0,K.jsx)(Y.Copy,{className:`h-3.5 w-3.5`}),` `,c?`Copied`:`Copy link`]})]}):null,(0,K.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-fg`,children:[(0,K.jsxs)(`span`,{className:`flex items-baseline justify-between gap-2`,children:[`Code from Google`,_===null?null:(0,K.jsxs)(`span`,{role:`timer`,className:G(`font-normal tabular-nums`,_<jG?`font-medium text-warn`:`text-fg-faint`),"data-tone":_<jG?`warn`:`neutral`,"data-testid":`agy-login-countdown`,children:[_,` s left to finish`]})]}),(0,K.jsx)(`input`,{className:`w-full rounded-md border border-border bg-surface px-2.5 py-1.5 font-mono text-xs text-fg placeholder:text-fg-faint focus:border-accent focus:outline-none`,type:`text`,value:o,placeholder:`Paste the code Google shows you`,autoComplete:`off`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,"data-1p-ignore":`true`,"data-lpignore":`true`,"data-form-type":`other`,"data-autofocus":!0,onChange:e=>s(e.target.value),onPaste:e=>{let n=e.clipboardData?.getData(`text`).trim()??``;Lh(n)&&(e.preventDefault(),!t&&(s(``),a(n)))},onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),T())},"data-testid":`agy-login-code`})]}),C&&!w?(0,K.jsx)(`p`,{className:`text-[11px] text-fg-faint`,"data-testid":`agy-login-code-hint`,children:`Paste the code exactly as Google shows it — one line, no spaces.`}):null,(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(X,{variant:`primary`,size:`sm`,disabled:!w||t,onClick:T,"data-testid":`agy-login-continue`,children:`Continue`}),D]})]}),y?(0,K.jsx)(`div`,{className:`flex items-center gap-2`,children:D}):null]}):e.phase===`verifying`?(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,"data-testid":`agy-login-verifying`,children:[(0,K.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5 text-xs text-fg`,role:`status`,children:[(0,K.jsx)(Y.Spinner,{className:`h-3.5 w-3.5 shrink-0`}),e.message??`Checking the code with Google…`]}),(0,K.jsx)(`span`,{className:`flex-1`}),D,x?(0,K.jsx)(`p`,{className:`w-full text-[11px] text-fg-faint`,"data-testid":`agy-login-verifying-slow`,children:`Still waiting for Google…`}):null]}):e.phase===`failed`?(0,K.jsxs)(`div`,{className:`space-y-2`,"data-testid":`agy-login-failed`,children:[(0,K.jsx)(`div`,{className:`rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-xs text-danger`,role:`alert`,children:e.message??`The sign-in did not finish.`}),(0,K.jsxs)(X,{variant:`primary`,busy:t,disabled:t,onClick:n,"data-testid":`agy-sign-in-restart`,children:[(0,K.jsx)(Y.LogIn,{className:`h-4 w-4`}),` Start again`]})]}):(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[e.phase===`done`&&e.message?(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,children:e.message}):null,(0,K.jsxs)(X,{variant:`primary`,busy:t,disabled:t,onClick:n,"data-testid":`agy-sign-in-button`,children:[(0,K.jsx)(Y.LogIn,{className:`h-4 w-4`}),` `,rG]})]})]})}var RG={ok:`bg-ok`,warn:`bg-warn`,danger:`bg-danger`,neutral:`bg-surface-3`},zG={ok:`text-ok`,warn:`text-warn`,danger:`text-danger`,neutral:`text-fg-muted`};function BG({label:e,testid:t,children:n}){return(0,K.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3 py-0.5 text-xs`,children:[(0,K.jsx)(`dt`,{className:`shrink-0 text-fg-faint`,children:e}),(0,K.jsx)(`dd`,{className:`min-w-0 text-right font-medium text-fg`,"data-testid":t,children:n})]})}function VG({definition:e}){let{api:t,socket:n}=q(),[r,i]=(0,v.useState)(null),[a,o]=(0,v.useState)(!1),[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)(0),[d,f]=(0,v.useState)(null),[p,m]=(0,v.useState)(null),h=(0,v.useRef)(!0),g=(0,v.useRef)(0),_=(0,v.useRef)(0);(0,v.useEffect)(()=>(h.current=!0,()=>{h.current=!1}),[]);let y=(0,v.useCallback)(async(e,n=!1)=>{let r=++g.current;if(!t.getAgyStatus){o(!0);return}_.current+=1,n||u(e=>e+1);try{let n=await t.getAgyStatus(e?{refresh:!0}:void 0);if(!h.current||r!==g.current)return;i(n),c(null),o(!1)}catch(e){if(!h.current||r!==g.current)return;rg(e)?o(!0):c($_(e))}finally{--_.current,!n&&h.current&&u(e=>e-1)}},[t]),b=(0,v.useCallback)(async(e,t,n=``)=>{g.current+=1,f(e),m(null);try{let e=await t();return h.current?(g.current+=1,i(e),c(null),o(!1),e):null}catch(e){return h.current&&(rg(e)?o(!0):(m(kG($_(e),n)),y(!1,!0))),null}finally{h.current&&f(null)}},[y]);(0,v.useEffect)(()=>{y(!1)},[y]);let[x,S]=(0,v.useState)(!1),C=(0,v.useCallback)(async()=>{if(!t.agyInstall){o(!0);return}S(!0),await b(`install`,()=>t.agyInstall())},[t,b]),w=(0,v.useRef)(!1);(0,v.useEffect)(()=>{if(!(w.current||!r||!t.agyInstall)){if(r.install.state!==`idle`){w.current=!0;return}r.state!==`not_installed`||!r.install.supported||(w.current=!0,C())}},[r,t,C]);let T=CG(r);(0,v.useEffect)(()=>{if(T===null)return;let e=setInterval(()=>{_.current===0&&y(!1,!0)},T);return()=>clearInterval(e)},[T,y]),(0,v.useEffect)(()=>n.on(`account_changed`,e=>{e.reason===`provider`&&y(!1,!0)}),[n,y]);let E=Ps(e);if(a)return(0,K.jsx)(`div`,{className:`rounded-md border border-warn/40 bg-warn-soft px-3 py-2 text-xs text-warn`,"data-testid":`agy-unsupported`,children:iG});let D=r===null&&s===null,O=l>0,k=wG(r),A=r?.install.state===`working`,j=(0,K.jsx)(X,{variant:`primary`,size:`sm`,busy:O||D,disabled:O||D||k,onClick:()=>void y(!0),"data-testid":`agy-check-again`,children:O||D?`Checking…`:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Y.Refresh,{className:`h-3.5 w-3.5`}),` Check again`]})}),M=r?A?{label:`Installing agy…`,tone:`accent`}:gG(r.state):null;return(0,K.jsxs)(`div`,{className:`space-y-3`,"data-testid":`agy-card`,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs`,children:[(0,K.jsx)(Q,{tone:`ok`,children:E.badge}),(0,K.jsx)(Q,{children:e.kind})]}),(0,K.jsx)(`div`,{className:`rounded-md border border-ok/40 bg-ok-soft px-3 py-2 text-xs text-ok`,"data-testid":`agy-route`,children:E.detail}),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[M?(0,K.jsx)(`span`,{"data-testid":`agy-state`,"data-state":r?.state,children:(0,K.jsx)(Q,{tone:M.tone,children:M.label})}):D?(0,K.jsxs)(`span`,{className:`flex items-center gap-1.5 text-xs text-fg-muted`,"data-testid":`agy-checking`,children:[(0,K.jsx)(Y.Spinner,{className:`h-3.5 w-3.5`}),` Asking agy…`]}):null,(0,K.jsx)(`span`,{className:`flex-1`}),j]}),O&&r?(0,K.jsx)(`p`,{className:`text-[11px] text-fg-faint`,"data-testid":`agy-busy-note`,children:`Asking agy again — this takes a few seconds.`}):null,s?(0,K.jsxs)(`div`,{className:`rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-xs text-danger`,role:`alert`,"data-testid":`agy-failed`,children:[`The host could not check agy: `,s]}):null,r?(0,K.jsxs)(K.Fragment,{children:[r.state!==`ready`&&r.message&&!k?(0,K.jsx)(`p`,{className:`text-xs text-fg`,"data-testid":`agy-message`,children:r.message}):null,r.state===`not_installed`?(0,K.jsx)(IG,{install:r.install,busy:d===`install`||d===`cancel_install`,offer:!t.agyInstall||x&&d!==`install`,onInstall:()=>{w.current=!0,C()},onCancel:()=>{w.current=!0,S(!0),t.cancelAgyInstall&&b(`cancel_install`,()=>t.cancelAgyInstall())}}):null,r.state===`not_signed_in`?(0,K.jsx)(LG,{login:r.login,busy:d===`login`||d===`cancel_login`||d===`code`,onStart:()=>{t.agyLogin?b(`login`,()=>t.agyLogin()):o(!0)},onRestart:()=>{(async()=>{t.cancelAgyLogin&&await b(`cancel_login`,()=>t.cancelAgyLogin()),t.agyLogin?await b(`login`,()=>t.agyLogin()):o(!0)})()},onCancel:()=>{t.cancelAgyLogin&&b(`cancel_login`,()=>t.cancelAgyLogin())},onSubmit:e=>{t.submitAgyLoginCode?b(`code`,()=>t.submitAgyLoginCode(e),e):o(!0)}}):null,p?(0,K.jsx)(`div`,{className:`rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-xs text-danger`,role:`alert`,"data-testid":`agy-action-error`,children:p}):null,(0,K.jsxs)(`dl`,{className:`rounded-md border border-border px-3 py-1.5`,"data-testid":`agy-facts`,children:[(0,K.jsx)(BG,{label:`Installed`,testid:`agy-installed`,children:r.installed?`Yes`:`No`}),r.path?(0,K.jsx)(BG,{label:`Path`,testid:`agy-path`,children:(0,K.jsx)(`span`,{className:`break-all font-mono text-[11px]`,children:r.path})}):null,r.version?(0,K.jsx)(BG,{label:`Version`,testid:`agy-version`,children:r.version}):null,(0,K.jsx)(BG,{label:`Signed in`,testid:`agy-signed-in`,children:r.signedIn===null?r.installed?`Unknown`:`—`:r.signedIn?`Yes`:`No`}),(0,K.jsx)(BG,{label:`Checked`,testid:`agy-checked`,children:(0,K.jsx)(`span`,{title:K_(r.checkedAt),children:W_(r.checkedAt)})})]}),_G(r)?(0,K.jsxs)(`p`,{className:`flex items-start gap-1.5 rounded-md bg-surface-2 px-3 py-2 text-xs text-fg-muted`,"data-testid":`agy-newer-note`,children:[(0,K.jsx)(Y.Info,{className:`mt-px h-3.5 w-3.5 shrink-0`}),_G(r)]}):null,vG(r)?(0,K.jsxs)(`p`,{className:`flex items-start gap-1.5 rounded-md bg-surface-2 px-3 py-2 text-xs text-fg-muted`,"data-testid":`agy-update-note`,children:[(0,K.jsx)(Y.Info,{className:`mt-px h-3.5 w-3.5 shrink-0`}),vG(r)]}):null,r.models.length>0?(0,K.jsxs)(`div`,{"data-testid":`agy-models`,children:[(0,K.jsx)(`div`,{className:`mb-1 text-xs font-medium text-fg-muted`,children:`Models agy offers`}),(0,K.jsx)(`ul`,{className:`space-y-0.5`,children:r.models.map(e=>(0,K.jsxs)(`li`,{className:`flex items-baseline justify-between gap-3 text-xs`,"data-testid":`agy-model-${e.id}`,children:[(0,K.jsx)(`span`,{className:`min-w-0 truncate text-fg`,children:e.displayName}),(0,K.jsx)(`span`,{className:`shrink-0 font-mono text-[11px] text-fg-faint`,children:e.id})]},e.id))})]}):null,r.usage.length>0?(0,K.jsxs)(`div`,{"data-testid":`agy-usage`,children:[(0,K.jsx)(`div`,{className:`mb-1 text-xs font-medium text-fg-muted`,children:`Your plan’s usage`}),(0,K.jsx)(`ul`,{className:`space-y-2`,children:r.usage.map((e,t)=>{let n=bG(e),r=e.remainingPercent;return(0,K.jsxs)(`li`,{"data-testid":`agy-usage-row-${t}`,children:[(0,K.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3 text-xs`,children:[(0,K.jsx)(`span`,{className:`min-w-0 truncate text-fg`,children:yG(e)}),(0,K.jsx)(`span`,{className:G(`shrink-0 font-medium`,zG[n.tone]),"data-tone":n.tone,"data-testid":`agy-usage-remaining-${t}`,children:n.remaining})]}),(0,K.jsx)(`div`,{className:`mt-0.5 h-1.5 w-full overflow-hidden rounded-full bg-surface-3`,role:`progressbar`,"aria-label":`${yG(e)}: ${n.remaining}`,"aria-valuemin":0,"aria-valuemax":100,...r!==null&&Number.isFinite(r)?{"aria-valuenow":Math.round(r)}:{},children:(0,K.jsx)(`div`,{className:G(`h-full rounded-full`,RG[n.tone]),style:{width:`${r!==null&&Number.isFinite(r)?Math.min(100,Math.max(0,r)):0}%`}})}),n.resets?(0,K.jsx)(`div`,{className:`text-[11px] text-fg-faint`,children:n.resets}):null]},`${e.group}-${e.window}-${t}`)})})]}):null]}):null]})}var HG=1e3;function UG(e){return`${(e/1048576).toFixed(+(e<10485760))} MB`}var WG={download:`Downloading Muse from Meta…`,verify:`Checking the download against Meta’s checksum…`,place:`Setting Muse up…`};function GG({open:e,label:t,onClose:n}){let{api:r,actions:i}=q(),[a,o]=(0,v.useState)(null),[s,c]=(0,v.useState)(`checking`),[l,u]=(0,v.useState)(null),[d,f]=(0,v.useState)(!1),p=(0,v.useRef)(null),m=(0,v.useRef)(!1),h=(0,v.useCallback)(async()=>{if(!r.museSetup)return null;try{let e=await r.museSetup();return o(e),e}catch{return null}},[r]),g=(0,v.useCallback)(async()=>{if(!r.museLoginStart){c(`unavailable`);return}u(null),m.current=!1,p.current=null,c(`running`);try{o(await r.museLoginStart())}catch(e){u(e instanceof Error?e.message:String(e)),c(`stopped`)}},[r]);(0,v.useEffect)(()=>{if(!e)return;let t=!0;return c(`checking`),u(null),o(null),(async()=>{if(!r.museSetup||!r.museLoginStart){t&&c(`unavailable`);return}let e=await h();if(t){if(!e){c(`unavailable`);return}e.login.phase===`awaiting_approval`||e.install.state===`working`?c(`running`):e.installed?g():c(`confirm`)}})(),()=>{t=!1}},[e,r,h,g]),(0,v.useEffect)(()=>{if(!e||s!==`running`)return;let t=setInterval(()=>void h(),HG);return()=>clearInterval(t)},[e,s,h]);let _=a?.login??null,y=a?.install??null,b=_?.phase===`awaiting_approval`,x=b&&(_?.verificationUriComplete??_?.verificationUri)?_?.verificationUriComplete??_?.verificationUri??null:null;(0,v.useEffect)(()=>{!e||!x||!_?.id||p.current===_.id||Rh(x)&&(p.current=_.id,XU(x))},[e,x,_?.id]),(0,v.useEffect)(()=>{e&&_?.phase===`connected`&&!m.current&&(m.current=!0,i.refreshCredentials())},[e,_?.phase,i]);let S=async()=>{try{r.museLoginCancel&&o(await r.museLoginCancel())}catch{}c(`stopped`)},C=e=>{if(!navigator.clipboard){i.toast(`error`,`Could not copy — select it and copy by hand`);return}navigator.clipboard.writeText(e).then(()=>{f(!0),setTimeout(()=>f(!1),2e3)}).catch(()=>i.toast(`error`,`Could not copy`))},w=_?.phase===`connected`,T=_?.phase===`failed`||_?.phase===`expired`||_?.phase===`cancelled`,E=y?.state===`failed`,D=y?.state===`working`,O=y?.total&&y.total>0?Math.min(100,Math.floor(y.received/y.total*100)):null,k;return k=s===`unavailable`?(0,K.jsx)(`p`,{"data-testid":`muse-unavailable`,children:`This version of OonaCode on this PC cannot sign in with Meta. Paste your Muse key in the Connect window instead.`}):s===`checking`||!a?(0,K.jsx)(`p`,{children:`Looking at this PC…`}):s===`confirm`?(0,K.jsxs)(`div`,{className:`space-y-2`,"data-testid":`muse-confirm`,children:[(0,K.jsxs)(`p`,{children:[`To sign you in, OonaCode will download Meta’s own `,(0,K.jsx)(`b`,{children:`Muse`}),` program once (about`,` `,360,` MB) into its own folder, checked against Meta’s published checksum. It runs only to sign you in.`]}),(0,K.jsx)(`p`,{className:`text-fg-muted`,children:`You then approve a short code on Meta’s page. Your key is stored in your vault; chats run from this PC straight to Meta, not through Muse. Nothing is downloaded until you press the button.`})]}):w?(0,K.jsx)(`p`,{"data-testid":`muse-connected`,children:`Signed in. Your Meta Muse key is stored in your vault and synced to your other machines; chats on it run from this PC straight to Meta.`}):D?(0,K.jsxs)(`div`,{className:`space-y-2`,"data-testid":`muse-install`,children:[(0,K.jsx)(`p`,{children:WG[y?.phase??`download`]??`Installing Muse…`}),(0,K.jsx)(`div`,{className:`h-2 w-full overflow-hidden rounded bg-surface-2`,children:(0,K.jsx)(`div`,{className:`h-2 bg-accent`,style:{width:`${O??5}%`},"data-testid":`muse-install-bar`})}),(0,K.jsx)(`p`,{className:`text-fg-muted text-xs`,children:y&&y.received>0?`${UG(y.received)}${y.total?` of ${UG(y.total)}`:``}`:`Starting the download…`})]}):E?(0,K.jsx)(`p`,{className:`text-danger`,"data-testid":`muse-install-failed`,children:y?.error??`Muse could not be installed.`}):b&&_?(0,K.jsxs)(`div`,{className:`space-y-3`,"data-testid":`muse-awaiting`,children:[(0,K.jsx)(`p`,{children:`A sign-in page from Meta opened in your browser. If it did not, open the link below on any device and make sure this code matches:`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`code`,{className:`text-lg font-mono px-2 py-1 rounded border border-border`,"data-testid":`muse-user-code`,children:_.userCode}),(0,K.jsxs)(X,{onClick:()=>_.userCode&&C(_.userCode),children:[(0,K.jsx)(Y.Copy,{className:`w-4 h-4`}),` `,d?`Copied`:`Copy code`]})]}),x&&Rh(x)?(0,K.jsxs)(`div`,{className:`flex items-center gap-2 break-all`,children:[(0,K.jsx)(`a`,{className:`underline`,href:x,onClick:e=>{e.preventDefault(),XU(x)},children:x}),(0,K.jsxs)(X,{onClick:()=>C(x),children:[(0,K.jsx)(Y.Copy,{className:`w-4 h-4`}),` Copy link`]})]}):null,(0,K.jsxs)(`p`,{className:`text-fg-muted`,children:[`Waiting for your approval…`,_.expiresAt?` The code expires at ${new Date(_.expiresAt).toLocaleTimeString()}.`:``,` `,`The key is stored in your vault the moment Meta confirms it.`]})]}):T||s===`stopped`?(0,K.jsx)(`p`,{className:T&&_?.phase!==`cancelled`?`text-danger`:``,"data-testid":`muse-ended`,children:l??_?.message??`The sign-in did not complete.`}):(0,K.jsx)(`p`,{children:_?.message??`Getting Meta’s sign-in page ready…`}),(0,K.jsx)(JS,{open:e,title:t,onClose:()=>n(w),footer:(0,K.jsxs)(K.Fragment,{children:[s===`running`&&!w&&!T&&!E?(0,K.jsx)(X,{onClick:()=>void S(),"data-testid":`muse-cancel`,children:`Cancel`}):null,s===`confirm`?(0,K.jsx)(X,{variant:`primary`,onClick:()=>void g(),"data-testid":`muse-start`,children:`Download and sign in`}):null,(s===`stopped`||T||E)&&!w&&s!==`unavailable`?(0,K.jsx)(X,{onClick:()=>void g(),"data-testid":`muse-retry`,children:`Try again`}):null,(0,K.jsx)(X,{variant:`primary`,onClick:()=>n(w),children:w?`Done`:`Close`})]}),children:(0,K.jsx)(`div`,{className:`space-y-3 text-sm`,"data-testid":`muse-login-dialog`,children:k})})}function KG(e,t){let n=e.definition.displayName;return!t||t.id===`payg`||t.id===`api-key`?[`Sign in to the ${n} console.`,`Create an API key (or copy an existing one).`,`Paste it below — OonaCode encrypts it into your vault before it leaves this PC.`]:[`Open the ${n} console and pick the ${t.label} plan.`,t.notes??`Complete the provider’s subscription/token flow in the browser.`,`Copy the token it issues${t.keyFormat?` (looks like ${t.keyFormat})`:``} and paste it below.`]}function qG(e,t){let n=e.find(e=>e.definition.id===t);if(!n)return[];let r=n.definition.clientGroup??n.definition.id,i=e.find(e=>e.definition.id===r);return i?[i,...e.filter(e=>e.definition.clientGroup===r)]:[n]}function JG(e){let t=[];for(let n of e){let e=n.definition,r=ks(e),i=e.credentialClass===`subscription`;if(r.length>1)for(let i of r)t.push({key:`${e.id}:${i.id}`,label:i.id===`token-plan`?`Subscription`:i.id===`payg`?`API`:i.label,provider:n,variantId:i.id,variant:i,isSubscription:!1,hasLoginFlow:!1,loginKind:null,keyFormat:i.keyFormat??e.keyFormat});else t.push({key:e.id,label:e.recordLabel??(i?`Subscription`:`API`),provider:n,variantId:r[0]?.id??null,variant:r[0]??null,isSubscription:i,hasLoginFlow:i&&e.route===`direct`,loginKind:i&&e.route===`direct`?e.museCliLogin?`muse`:e.subscriptionLogin?`oauth`:`claude`:null,keyFormat:r[0]?.keyFormat??e.keyFormat})}return t}function YG(e){let t=(e.provider.credentials??[]).filter(e=>e.class!==`none`);return(e.variantId?t.filter(t=>(t.variantId??`payg`)===e.variantId):t).slice(0,1)}function XG({open:e,providerId:t,onClose:n}){let{state:r,actions:i}=q(),a=(0,v.useMemo)(()=>t?qG(r.providers,t):[],[r.providers,t]),o=(0,v.useMemo)(()=>JG(a),[a]),[s,c]=(0,v.useState)(``),[l,u]=(0,v.useState)(``),[d,f]=(0,v.useState)(``),[p,m]=(0,v.useState)(``),[h,g]=(0,v.useState)(!1),[_,y]=(0,v.useState)(null),[b,x]=(0,v.useState)(!1),S=o.find(e=>e.key===s)??o[0]??null;if((0,v.useEffect)(()=>{if(!e)return;let n=o.find(e=>e.provider.definition.id===t);c((n??o[0])?.key??``),u(``),m(``),y(null),x(!1)},[e,t,o]),(0,v.useEffect)(()=>{if(!e||!S)return;let t=S.provider.definition;f(t.userBaseUrl?S.variant?.baseUrl??t.baseUrl:``)},[e,S,S?.key]),!S)return null;let C=S.provider.definition,w=a[0]?.definition?.displayName??C.displayName;if(C.engine===`agy`)return(0,K.jsx)(JS,{open:e,title:w,onClose:n,footer:(0,K.jsx)(X,{onClick:n,children:`Close`}),children:(0,K.jsx)(VG,{definition:C})});if(b)return(0,K.jsx)(GG,{open:e,label:C.museCliLogin?.signInLabel??`Sign in with Meta`,onClose:e=>{x(!1),e&&n()}});let T=YG(S),E=a.some(e=>(e.credentials??[]).some(e=>e.class!==`none`)),D=C.credentialClass!==`none`,O=Ps(C,{credentialClass:S.isSubscription?`subscription`:C.credentialClass,...C.userBaseUrl&&d.trim()?{baseUrl:d.trim()}:{}}),k=!h&&(!D||l.trim().length>0),A=async()=>{g(!0),y(null);try{if(!D){await i.setActiveProvider(C.id),n();return}let e=await i.probeCredential(C.id,{secret:l.trim(),variantId:S.variantId,...C.userBaseUrl&&d.trim()?{baseUrl:d.trim()}:{}});if(!e.ok){y(e.error??`${w} rejected this key — check it and try again.`);return}let t={};S.variantId&&(t.variant=S.variantId),C.userBaseUrl&&d.trim()&&(t.baseUrl=d.trim()),await i.addCredential({class:S.isSubscription?`subscription`:`api_key`,providerId:C.id,secret:l.trim(),...p.trim()?{label:p.trim()}:{},...Object.keys(t).length>0?{meta:t}:{}})&&(u(``),n())}finally{g(!1)}};return(0,K.jsx)(JS,{open:e,title:`${E?`Manage`:`Connect`} ${w}`,onClose:n,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(X,{onClick:n,children:`Cancel`}),S.loginKind===`oauth`?(0,K.jsxs)(X,{onClick:()=>i.openOauthLogin(S.provider.definition.id),"data-testid":`connect-oauth-signin`,children:[(0,K.jsx)(Y.LogIn,{className:`w-4 h-4`}),` `,S.provider.definition.subscriptionLogin?.signInLabel??`Sign in instead`]}):S.loginKind===`muse`?(0,K.jsxs)(X,{onClick:()=>x(!0),"data-testid":`connect-muse-signin`,children:[(0,K.jsx)(Y.LogIn,{className:`w-4 h-4`}),` `,S.provider.definition.museCliLogin?.signInLabel??`Sign in with Meta`]}):S.loginKind===`claude`?(0,K.jsxs)(X,{onClick:()=>i.openClaudeLogin(null),"data-testid":`connect-claude-signin`,children:[(0,K.jsx)(Y.LogIn,{className:`w-4 h-4`}),` Sign in instead`]}):null,(0,K.jsx)(X,{variant:`primary`,busy:h,disabled:!k,onClick:()=>void A(),children:h?`Checking…`:D?`Save key`:`Use this provider`})]}),children:(0,K.jsxs)(`div`,{className:`space-y-3`,children:[o.length>1?(0,K.jsx)(`div`,{className:`flex gap-1 border-b border-border`,role:`tablist`,children:o.map(e=>{let t=YG(e)[0];return(0,K.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":e.key===S.key,"data-testid":`record-tab-${e.key}`,onClick:()=>c(e.key),className:e.key===S.key?`rounded-t-md border border-b-0 border-border bg-surface-2 px-3 py-1.5 text-sm font-medium`:`px-3 py-1.5 text-sm text-fg-muted hover:text-fg`,children:[e.label,t?(0,K.jsx)(`span`,{className:`ml-1.5 font-mono text-[11px] text-ok`,children:t.masked}):null]},e.key)})}):null,T.length>0?(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,K.jsx)(`div`,{className:`text-xs font-medium text-fg-muted`,children:`Connected`}),T.map(e=>(0,K.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border border-border px-2.5 py-1.5`,"data-testid":`stored-credential-${e.id}`,children:[(0,K.jsx)(Q,{tone:e.class===`subscription`?`accent`:`ok`,children:S.label}),(0,K.jsx)(`span`,{className:`font-mono text-xs`,children:e.masked}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[11px] text-fg-faint`,children:e.label}),(0,K.jsx)(X,{size:`sm`,onClick:()=>void i.testCredential(e.id),children:`Test`}),(0,K.jsx)(X,{size:`sm`,variant:`danger`,onClick:()=>void i.deleteCredential(e.id),children:`Remove`})]},e.id))]}):null,(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs`,children:[(0,K.jsx)(Q,{tone:O.viaGateway?`accent`:`ok`,children:O.badge}),(0,K.jsx)(Q,{children:C.kind}),S.keyFormat?(0,K.jsxs)(`span`,{className:`text-fg-faint`,children:[`key format `,S.keyFormat]}):null]}),(0,K.jsxs)(`div`,{className:O.viaGateway?`rounded-md border border-border bg-surface-2 px-3 py-2 text-xs text-fg-muted`:`rounded-md border border-ok/40 bg-ok-soft px-3 py-2 text-xs text-ok`,"data-testid":`connect-route`,children:[O.detail,D&&!O.viaGateway?` The key is stored in your zero-knowledge vault.`:null]}),D?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`ol`,{className:`ml-4 list-decimal space-y-1 text-xs text-fg-muted`,children:S.loginKind===`muse`?[`Press “${S.provider.definition.museCliLogin?.signInLabel??`Sign in with Meta`}”: OonaCode fetches Meta’s own Muse once into its own folder, you approve a short code on Meta’s page, and the key is stored by itself.`,`Or paste a Muse subscription key, or a Meta Model API key, below.`,`Chats go from this PC straight to Meta; the key stays in your vault.`].map((e,t)=>(0,K.jsx)(`li`,{children:e},t)):S.loginKind===`oauth`?[`Press “${S.provider.definition.subscriptionLogin?.signInLabel??`Sign in`}”: a short code opens in your browser, you approve it, and the subscription is stored by itself — nothing to paste.`,`The token refreshes on its own; sign in again only if the provider says it expired.`,`Or paste an access token below, if you have one from elsewhere.`].map((e,t)=>(0,K.jsx)(`li`,{children:e},t)):S.hasLoginFlow?[`Press “Sign in instead” to get a token through the genuine engine — the fastest way.`,"Or run `claude setup-token` yourself and complete the sign-in in your browser.",`Paste the token it prints below (it looks like sk-ant-oat01-…).`].map((e,t)=>(0,K.jsx)(`li`,{children:e},t)):KG(S.provider,S.variant).map((e,t)=>(0,K.jsx)(`li`,{children:e},t))}),(0,K.jsx)(KS,{label:S.loginKind===`muse`?`Muse key`:S.isSubscription?`Subscription token`:`API key`,hint:`Tried against the provider before it is saved, then encrypted on this PC with your vault key.`,children:(0,K.jsx)(`input`,{className:Z,type:`password`,autoComplete:`off`,spellCheck:!1,value:l,placeholder:S.keyFormat??`sk-…`,onChange:e=>{u(e.target.value),y(null)}})}),_?(0,K.jsx)(`div`,{className:`rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-xs text-danger`,"data-testid":`connect-probe-error`,children:_}):null,C.userBaseUrl?(0,K.jsx)(KS,{label:`Base URL`,hint:`Point this at your own server if it is not the default. Each record has its own endpoint.`,children:(0,K.jsx)(`input`,{className:Z,value:d,spellCheck:!1,onChange:e=>f(e.target.value),placeholder:S.variant?.baseUrl??C.baseUrl})}):null,(0,K.jsx)(KS,{label:`Label (optional)`,children:(0,K.jsx)(`input`,{className:Z,value:p,onChange:e=>m(e.target.value),placeholder:`${w} ${S.label.toLowerCase()} key`})})]}):(0,K.jsxs)(`div`,{className:`rounded-md bg-surface-2 px-3 py-2 text-xs text-fg-muted`,children:[C.displayName,` needs no credential.`]})]})})}function ZG({open:e,onClose:t}){let{state:n,actions:r}=q(),i=n.ui.oauthLoginProviderId,a=i?n.providers.find(e=>e.definition.id===i)??null:null,o=n.oauthLogin&&n.oauthLogin.providerId===i?n.oauthLogin:null,[s,c]=(0,v.useState)(0),[l,u]=(0,v.useState)(!1),d=(0,v.useRef)(null),f=a?.definition.displayName??i??`the provider`,p=a?.definition.subscriptionLogin?.signInLabel??`Sign in to ${f}`,m=o?.phase===`awaiting_approval`,h=m?o?.verificationUriComplete??o?.verificationUri??null:null;(0,v.useEffect)(()=>{if(!e||!i)return;d.current=null,r.startOauthLogin(i);let t=setInterval(()=>void r.refreshOauthLogin(i),2e3);return()=>clearInterval(t)},[e,i,s,r]),(0,v.useEffect)(()=>{!e||!h||!o?.id||d.current===o.id||(d.current=o.id,XU(h))},[e,h,o?.id]),(0,v.useEffect)(()=>{e&&o?.phase===`connected`&&r.refreshCredentials()},[e,o?.phase,r]);let g=e=>{if(!navigator.clipboard){r.toast(`error`,`Could not copy — select it and copy by hand`);return}navigator.clipboard.writeText(e).then(()=>{u(!0),setTimeout(()=>u(!1),2e3)}).catch(()=>r.toast(`error`,`Could not copy`))},_=o?.phase===`connected`||o?.phase===`failed`||o?.phase===`expired`||o?.phase===`cancelled`;return(0,K.jsx)(JS,{open:e,title:p,onClose:t,footer:(0,K.jsxs)(K.Fragment,{children:[m?(0,K.jsx)(X,{onClick:()=>i&&void r.cancelOauthLogin(i),"data-testid":`oauth-login-cancel`,children:`Cancel sign-in`}):null,_&&o?.phase!==`connected`?(0,K.jsx)(X,{onClick:()=>c(e=>e+1),"data-testid":`oauth-login-retry`,children:`Try again`}):null,(0,K.jsx)(X,{variant:`primary`,onClick:t,children:o?.phase===`connected`?`Done`:`Close`})]}),children:(0,K.jsx)(`div`,{className:`space-y-3 text-sm`,"data-testid":`oauth-login-dialog`,children:m&&o?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`p`,{children:[`A sign-in page for `,f,` opened in your browser. If it did not, open the link below on any device and enter this code:`]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`code`,{className:`text-lg font-mono px-2 py-1 rounded border border-border`,"data-testid":`oauth-user-code`,children:o.userCode}),(0,K.jsxs)(X,{onClick:()=>o.userCode&&g(o.userCode),children:[(0,K.jsx)(Y.Copy,{className:`w-4 h-4`}),` `,l?`Copied`:`Copy code`]})]}),h?(0,K.jsxs)(`div`,{className:`flex items-center gap-2 break-all`,children:[(0,K.jsx)(`a`,{className:`underline`,href:h,onClick:e=>{e.preventDefault(),XU(h)},children:h}),(0,K.jsxs)(X,{onClick:()=>g(h),children:[(0,K.jsx)(Y.Copy,{className:`w-4 h-4`}),` Copy link`]})]}):null,(0,K.jsxs)(`p`,{className:`text-fg-muted`,children:[`Waiting for your approval… the code expires`,o.expiresAt?` at ${new Date(o.expiresAt).toLocaleTimeString()}`:` soon`,`. The subscription is stored in your vault the moment `,f,` confirms it.`]})]}):o?.phase===`connected`?(0,K.jsxs)(`p`,{"data-testid":`oauth-login-connected`,children:[`Signed in. Your `,f,` subscription is stored in your vault and synced to your other machines; chats on it run from this PC straight to the provider.`]}):_?(0,K.jsx)(`p`,{className:`text-danger`,"data-testid":`oauth-login-ended`,children:o?.message??`The sign-in did not complete.`}):(0,K.jsx)(`p`,{children:`Starting the sign-in…`})})})}function QG({open:e,onClose:t}){let{state:n,actions:r}=q(),i=(0,v.useMemo)(()=>Rp(n.providers),[n.providers]),[a,o]=(0,v.useState)({}),[s,c]=(0,v.useState)(``),[l,u]=(0,v.useState)(!1);(0,v.useEffect)(()=>{e&&(o({...n.settings?.modelVisibility??{}}),c(``))},[e]);let d=(e,t)=>a[e]??t,f=(e,t,n)=>d(e,n).includes(t),p=(e,t,n)=>{o(r=>{let i=r[e]??n,a=i.includes(t)?i.filter(e=>e!==t):n.filter(e=>e===t||i.includes(e));return{...r,[e]:a}})},m=(e,t,n)=>{o(r=>({...r,[e]:t?[...n]:[]}))},h=async()=>{u(!0);try{let e={};for(let t of i){let n=t.definition.models.map(e=>e.id),r=a[t.definition.id];r&&r.length!==n.length&&(e[t.definition.id]=r)}await r.saveSettings({modelVisibility:e}),t()}finally{u(!1)}},g=s.trim().toLowerCase();return(0,K.jsx)(JS,{open:e,title:`Manage models`,onClose:t,wide:!0,footer:(0,K.jsxs)(`div`,{className:`flex w-full items-center justify-between gap-2`,children:[(0,K.jsxs)(X,{onClick:()=>{t(),r.openSettings(`providers`)},"data-testid":`manage-models-add-provider`,children:[(0,K.jsx)(Y.Plus,{className:`w-3.5 h-3.5`}),` Add provider`]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(X,{onClick:t,children:`Cancel`}),(0,K.jsx)(X,{variant:`primary`,busy:l,onClick:()=>void h(),"data-testid":`manage-models-save`,children:`Save`})]})]}),children:(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,children:`Choose which models the chat's picker offers. A provider with every model checked shows all of them — including ones it adds later.`}),(0,K.jsx)(`input`,{className:Z,value:s,onChange:e=>c(e.target.value),placeholder:`Filter models…`,"data-testid":`manage-models-filter`}),i.length===0?(0,K.jsxs)(`div`,{className:`text-sm text-fg-faint`,children:[`No provider is connected yet — use `,(0,K.jsx)(`strong`,{children:`Add provider`}),` below to connect one.`]}):null,i.map(e=>{let t=e.definition.models.map(e=>e.id),n=e.definition.models.filter(e=>!g||e.id.toLowerCase().includes(g)||(e.displayName??``).toLowerCase().includes(g)),r=d(e.definition.id,t).length;return(0,K.jsxs)(`div`,{className:`rounded-md border border-border p-3`,"data-testid":`manage-models-${e.definition.id}`,children:[(0,K.jsxs)(`div`,{className:`mb-2 flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`font-medium`,children:e.definition.displayName}),(0,K.jsxs)(`span`,{className:`text-xs text-fg-faint`,children:[r===t.length?`all`:r,` of `,t.length,` shown`]}),(0,K.jsxs)(`span`,{className:`ml-auto flex gap-1`,children:[(0,K.jsx)(X,{size:`sm`,onClick:()=>m(e.definition.id,!0,t),children:`All`}),(0,K.jsx)(X,{size:`sm`,onClick:()=>m(e.definition.id,!1,t),children:`None`})]})]}),(0,K.jsxs)(`div`,{className:`grid gap-1 sm:grid-cols-2`,children:[n.map(n=>(0,K.jsxs)(`label`,{className:`flex items-center gap-2 text-xs`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:f(e.definition.id,n.id,t),onChange:()=>p(e.definition.id,n.id,t),"data-testid":`manage-model-${n.id}`}),(0,K.jsxs)(`span`,{className:`truncate`,title:n.id,children:[n.displayName??n.id,n.displayName&&n.displayName!==n.id?(0,K.jsxs)(`span`,{className:`text-fg-faint`,children:[` · `,n.id]}):null]})]},n.id)),n.length===0?(0,K.jsxs)(`div`,{className:`text-xs text-fg-faint`,children:[(0,K.jsx)(Y.Info,{className:`mr-1 inline w-3 h-3`}),` No model matches the filter.`]}):null]})]},e.definition.id)})]})})}var $G={mode:`names`,mine:!0,model:!0,tools:!1,subagents:!1,projectId:null,when:`any`,caseSensitive:!1,wholeWord:!1};function eK(e,t,n){let r=Ae(t,{caseSensitive:n.caseSensitive,wholeWord:n.wholeWord});if(!r)return[{text:e,hit:!1}];let i=[],a=0;for(let t of e.matchAll(r)){let n=t.index??0;t[0].length!==0&&(n>a&&i.push({text:e.slice(a,n),hit:!1}),i.push({text:t[0],hit:!0}),a=n+t[0].length)}return a<e.length&&i.push({text:e.slice(a),hit:!1}),i}function tK(e){return Object.keys($G).some(t=>e[t]!==$G[t])}function nK(e,t=Date.now()){if(e===`any`)return null;if(e===`today`){let e=new Date(t);return e.setHours(0,0,0,0),e}return new Date(t-(e===`week`?7:30)*24*60*60*1e3)}function rK(e,t,n,r=Date.now()){if(n.projectId!==null&&e.projectId!==n.projectId)return!1;let i=nK(n.when,r);if(i&&e.mtime<i.getTime())return!1;if((n.caseSensitive||n.wholeWord)&&t.trim()!==``){let r=[e.title,e.firstPrompt,e.lastPrompt,e.projectDir],i={caseSensitive:n.caseSensitive,wholeWord:n.wholeWord};if(!r.some(e=>typeof e==`string`&&je(e,t,i)))return!1}return!0}function iK(e,t,n=Date.now()){let r=e.trim();if(r.length<2||!t.mine&&!t.model&&!t.tools)return null;let i=nK(t.when,n);return{q:r,limit:200,from:t.mine&&t.model?`both`:t.mine?`user`:t.model?`assistant`:`none`,tools:t.tools,subagents:t.subagents,...i?{since:i.toISOString()}:{},...t.projectId?{projectId:t.projectId}:{},caseSensitive:t.caseSensitive,wholeWord:t.wholeWord}}function aK({label:e,hint:t,checked:n,onChange:r,testId:i}){return(0,K.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2 py-0.5 text-xs`,children:[(0,K.jsx)(`input`,{type:`checkbox`,className:`mt-0.5`,checked:n,onChange:e=>r(e.target.checked),"data-testid":i}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`span`,{className:`text-fg`,children:e}),t?(0,K.jsx)(`span`,{className:`block text-[11px] text-fg-faint`,children:t}):null]})]})}var oK=`w-full rounded-md border border-border bg-surface px-2 py-1 text-xs text-fg focus:outline-none`,sK={names:`Names & prompts`,conversations:`Whole chats`,namesHint:`A chat’s name, its first and last message, and its folder.`,conversationsHint:`Every message of every chat on this PC. Pick whose words to look in.`};function cK({options:e,onChange:t,projects:n,onClose:r,words:i=sK}){let a=(n,r)=>t({...e,[n]:r}),o=e.mode===`conversations`,s=o&&!e.mine&&!e.model&&!e.tools;return(0,K.jsxs)(`div`,{className:`absolute left-2 right-2 top-full z-30 mt-1 space-y-3 rounded-lg border border-border bg-surface p-3 shadow-xl`,onMouseDown:e=>{!(e.target instanceof HTMLSelectElement)&&!(e.target instanceof HTMLInputElement)&&e.preventDefault()},onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),r())},"data-testid":`search-options`,children:[(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,K.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-wide text-fg-faint`,children:`Search in`}),(0,K.jsx)(XS,{label:`Search in`,value:e.mode,options:[{value:`names`,label:i.names},{value:`conversations`,label:i.conversations}],onChange:e=>a(`mode`,e)}),(0,K.jsx)(`p`,{className:`text-[11px] text-fg-faint`,"data-testid":`search-mode-hint`,children:o?i.conversationsHint:i.namesHint})]}),o?(0,K.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,K.jsx)(aK,{label:`My messages`,checked:e.mine,onChange:e=>a(`mine`,e),testId:`search-opt-mine`}),(0,K.jsx)(aK,{label:`Model replies`,checked:e.model,onChange:e=>a(`model`,e),testId:`search-opt-model`}),(0,K.jsx)(aK,{label:`Tool calls & output`,hint:`Commands, file paths and what the tools answered.`,checked:e.tools,onChange:e=>a(`tools`,e),testId:`search-opt-tools`}),(0,K.jsx)(aK,{label:`Subagents’ conversations`,checked:e.subagents,onChange:e=>a(`subagents`,e),testId:`search-opt-subagents`}),s?(0,K.jsx)(`p`,{className:`text-[11px] text-warn`,children:`Tick at least one to search.`}):null]}):null,(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[n?(0,K.jsxs)(`label`,{className:`space-y-1 text-[11px] text-fg-faint`,children:[(0,K.jsx)(`span`,{children:`Project`}),(0,K.jsxs)(`select`,{className:oK,value:e.projectId??``,onChange:e=>a(`projectId`,e.target.value||null),"data-testid":`search-opt-project`,children:[(0,K.jsx)(`option`,{value:``,children:`All projects`}),n.map(e=>(0,K.jsx)(`option`,{value:e.id,children:e.name},e.id))]})]}):null,(0,K.jsxs)(`label`,{className:`space-y-1 text-[11px] text-fg-faint`,children:[(0,K.jsx)(`span`,{children:`When`}),(0,K.jsxs)(`select`,{className:oK,value:e.when,onChange:e=>a(`when`,e.target.value),"data-testid":`search-opt-when`,children:[(0,K.jsx)(`option`,{value:`any`,children:`Any time`}),(0,K.jsx)(`option`,{value:`today`,children:`Today`}),(0,K.jsx)(`option`,{value:`week`,children:`Last 7 days`}),(0,K.jsx)(`option`,{value:`month`,children:`Last 30 days`})]})]})]}),(0,K.jsxs)(`div`,{className:`flex flex-wrap gap-x-4`,children:[(0,K.jsx)(aK,{label:`Match case`,checked:e.caseSensitive,onChange:e=>a(`caseSensitive`,e),testId:`search-opt-case`}),(0,K.jsx)(aK,{label:`Whole words`,checked:e.wholeWord,onChange:e=>a(`wholeWord`,e),testId:`search-opt-word`})]}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between border-t border-border pt-2`,children:[(0,K.jsx)(`button`,{type:`button`,className:G(`text-xs`,tK(e)?`text-accent hover:underline`:`text-fg-faint`),disabled:!tK(e),onClick:()=>t($G),"data-testid":`search-opt-reset`,children:`Reset`}),(0,K.jsx)(`button`,{type:`button`,className:`rounded-md bg-surface-2 px-2 py-1 text-xs text-fg hover:bg-surface-3`,onClick:r,"data-testid":`search-opt-done`,children:`Done`})]})]})}function lK(e){return e.kind===`tool`?e.tool??`Tool`:e.role===`assistant`?`Model`:`You`}function uK({query:e,options:t}){let{state:n,actions:r}=q(),i=(0,v.useMemo)(()=>iK(e,t),[e,t]),[a,o]=(0,v.useState)(null),s=i?JSON.stringify(i):``;(0,v.useEffect)(()=>{if(!i)return;let e=!0,t=setTimeout(()=>{r.searchTranscripts(i).then(t=>{e&&o({key:s,res:t})})},350);return()=>{e=!1,clearTimeout(t)}},[s,r]);let c=a&&a.key===s?a:null,l=(0,v.useMemo)(()=>{let e=new Map;for(let t of c?.res?.hits??[]){let r=n.sessions.find(e=>e.id===t.sessionId)?.title||t.title||`Untitled chat`,i=e.get(t.sessionId)??{title:r,hits:[]};i.hits.push(t),e.set(t.sessionId,i)}return[...e.entries()]},[c,n.sessions]);if(!i)return(0,K.jsx)(`div`,{className:`px-3 py-4 text-center text-xs text-fg-faint`,"data-testid":`transcript-search-idle`,children:e.trim().length<2?`Type at least two characters to search every chat.`:`Tick what to look in — your messages, the model’s replies or the tools’ side.`});if(!c)return(0,K.jsx)(`div`,{className:`px-3 py-4 text-center text-xs text-fg-faint`,"data-testid":`transcript-search-busy`,children:`Searching every chat…`});if(c.res===null)return(0,K.jsx)(`div`,{className:`px-3 py-4 text-center text-xs text-danger`,"data-testid":`transcript-search-failed`,children:`This PC could not search its chats. Try again, or update OonaCode.`});let u=c.res.hits.length;return(0,K.jsxs)(`div`,{className:`pb-2`,"data-testid":`transcript-search-results`,children:[(0,K.jsx)(`div`,{className:`px-3 py-1.5 text-[11px] text-fg-faint`,children:u===0?`No message on this PC says that.`:`${u}${c.res.truncated?`+`:``} ${u===1?`message`:`messages`} in ${l.length} ${l.length===1?`chat`:`chats`}`}),l.map(([n,i])=>(0,K.jsxs)(`div`,{className:`mb-1.5`,"data-testid":`transcript-search-chat-${n}`,children:[(0,K.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-1.5 rounded px-2 py-1 text-left text-[13px] font-semibold text-fg hover:bg-surface-2`,onClick:()=>r.openChatWithSearch(n,e.trim()),children:[(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:i.title}),(0,K.jsx)(`span`,{className:`shrink-0 rounded-full bg-surface-3 px-1.5 text-[10px] font-semibold text-fg-muted`,children:i.hits.length})]}),i.hits.map(i=>(0,K.jsxs)(`button`,{type:`button`,className:`block w-full rounded px-2 py-1 pl-4 text-left text-xs hover:bg-surface-2`,onClick:()=>r.openChatWithSearch(n,e.trim()),"data-testid":`transcript-search-hit`,children:[(0,K.jsxs)(`span`,{className:`mb-0.5 flex items-center gap-1.5 text-[10px] text-fg-faint`,children:[i.kind===`tool`?(0,K.jsx)(Y.Tool,{className:`h-3 w-3`}):i.role===`assistant`?(0,K.jsx)(Y.Bot,{className:`h-3 w-3`}):(0,K.jsx)(Y.User,{className:`h-3 w-3`}),(0,K.jsx)(`span`,{className:`font-medium text-fg-muted`,children:lK(i)}),i.subpath?(0,K.jsx)(`span`,{children:`· subagent`}):null,i.timestamp?(0,K.jsx)(`span`,{className:`ml-auto`,children:W_(i.timestamp)}):null]}),(0,K.jsx)(`span`,{className:`line-clamp-3 text-fg-muted`,children:eK(i.snippet,e,t).map((e,t)=>e.hit?(0,K.jsx)(`mark`,{className:`rounded bg-warn-soft px-0.5 text-fg`,children:e.text},t):(0,K.jsx)(`span`,{children:e.text},t))})]},`${i.seq}`))]},n))]})}function dK(e){return`${e.agentId??`claude-code`}:${e.id}`}function fK(e){let t=Date.parse(e.lastEntryAt??e.updatedAt);return Number.isFinite(t)?t:0}function pK(e,t,n=Date.now()){let r=nK(t.when,n)?.getTime()??null,i=Ae(e,{caseSensitive:t.caseSensitive,wholeWord:t.wholeWord});return e=>r!==null&&fK(e)<r?!1:i===null||[e.title,e.firstPrompt,e.lastPrompt,e.cwd,e.projectName,e.id].some(e=>typeof e==`string`&&(i.lastIndex=0,i.test(e)))}function mK(e,t,n=Date.now()){let r=e.trim();if(r.length<2||!t.mine&&!t.model&&!t.tools)return null;let i=nK(t.when,n);return{q:r,from:t.mine&&t.model?`both`:t.mine?`user`:t.model?`assistant`:`none`,tools:t.tools,subagents:t.subagents,...i?{since:i.toISOString()}:{},caseSensitive:t.caseSensitive,wholeWord:t.wholeWord}}function hK(e,t){let n=new Map;for(let t of e){let e=dK(t);n.set(e,e);for(let r of t.supersedes??[]){let i=dK({agentId:t.agentId,id:r});n.has(i)||n.set(i,e)}}let r=new Map;for(let e of t){let t=n.get(dK(e));if(!t)continue;let i=r.get(t);if(!i){r.set(t,{...e,snippets:e.snippets.slice(0,3)});continue}r.set(t,{...i,hits:i.hits+e.hits,...i.hitsCapped||e.hitsCapped?{hitsCapped:!0}:{},snippets:[...i.snippets,...e.snippets].slice(0,3)})}return r}var gK={new:`New`,imported:`Imported`,behind:`Imported · original moved on`,deleted:`You deleted it in OonaCode`,unavailable:`Cannot be imported yet`};function _K(e){return e.alreadyImported?e.upToDate===!1?`behind`:`imported`:e.deletedHere===!0?`deleted`:vK(e)?`unavailable`:`new`}function vK(e){return typeof e.unavailable==`string`&&e.unavailable.length>0}function yK(e){if(vK(e))return!1;let t=_K(e);return t===`new`||t===`behind`}function bK(e){return _K(e)===`new`}function xK(e,t){return new Set(t?e.filter(bK).map(e=>e.id):[])}function SK(e){if(!e.some(e=>e.projectName))return e;let t=[],n=new Map;for(let r of e){let e=r.projectName??``,i=n.get(e);i||(i=[],n.set(e,i),t.push(e)),i.push(r)}return t.flatMap(e=>n.get(e)??[])}function CK(){return{new:0,imported:0,behind:0,deleted:0,unavailable:0}}function wK(e){let t=new Map;for(let n of e){let e=n.agentId??`claude-code`,r=t.get(e);r||(r={key:e,name:n.agentName??`Claude Code`,rows:[],counts:CK()},t.set(e,r)),r.rows.push(n),r.counts[_K(n)]+=1}for(let e of t.values())e.rows=SK([...e.rows].sort((e,t)=>fK(t)-fK(e)));return[...t.values()]}function TK(e,t){let n=0,r=0,i=0;for(let a of e){let e=t.has(a.id);e&&(n+=1),yK(a)&&(r+=1,e&&(i+=1))}return n===0?`none`:r>0&&i===r?`all`:`some`}function EK(e,t){let n=new Set(t),r=e.filter(yK);if(TK(e,t)===`all`||r.length===0)for(let t of e)n.delete(t.id);else for(let e of r)n.add(e.id);return n}function DK(e,t){let n=0;if(t)for(let r of e)t.has(r)||(n+=1);return{total:e.size,notShown:n}}var OK={names:`Names & folders`,conversations:`Whole conversations`,namesHint:`A chat’s name, its first and last message, and the folder it ran in.`,conversationsHint:`Every message of every chat listed here, read from the other apps’ own files. Pick whose words to look in.`},kK=`Ticks the chats with something to bring in — new ones, and imported ones whose original moved on. An imported chat that is up to date, or one you deleted in OonaCode, is ticked on its own row.`;function AK(e){return e.partial===`time`?`Stopped after ${Math.round(e.elapsedMs/1e3)} s — these are the chats found until then. A longer phrase narrows it.`:e.partial===`chats`?`Stopped at ${e.chats.length} chats — a longer phrase narrows it.`:null}function jK(e){return e?e.replace(/[\\/]+$/,``).split(/[\\/]/).length<=2?e:`…${e.slice(-40)}`:`no folder recorded`}function MK(e){return e<1024?`${e} B`:e<1048576?`${Math.round(e/1024)} KB`:`${(e/1048576).toFixed(1)} MB`}function NK(e){let t=Date.parse(e);return Number.isFinite(t)?new Date(t).toLocaleString(void 0,{dateStyle:`medium`,timeStyle:`short`}):``}var PK=(e,t,n)=>`${e} ${e===1?t:n}`;function FK({open:e,onClose:t,autoOffer:n=!1}){let{state:r,actions:i}=q(),a=r.importProgress,[o,s]=(0,v.useState)(!1),[c,l]=(0,v.useState)(!1),[u,d]=(0,v.useState)(null),[f,p]=(0,v.useState)(null),[m,h]=(0,v.useState)(new Set),[g,_]=(0,v.useState)(new Set),[y,b]=(0,v.useState)(null),x=(0,v.useMemo)(()=>f??[],[f]),S=(0,v.useMemo)(()=>wK(x),[x]),C=(0,v.useMemo)(()=>{let e={new:0,imported:0,behind:0,deleted:0,unavailable:0};for(let t of S)for(let n of Object.keys(e))e[n]+=t.counts[n];return e},[S]),[w,T]=(0,v.useState)(``),[E,D]=(0,v.useState)($G),[O,k]=(0,v.useState)(!1),A=(0,v.useRef)(null),j=w.trim()!==``,M=E.mode===`conversations`,[N,ee]=(0,v.useState)(new Set);(0,v.useEffect)(()=>ee(new Set),[w,E]);let P=(0,v.useMemo)(()=>M?mK(w,E):null,[M,w,E]),F=P?JSON.stringify(P):``,[I,te]=(0,v.useState)(null);(0,v.useEffect)(()=>{if(!e||!P)return;let t=new AbortController,n=!0,r=setTimeout(()=>{i.searchImportChats(P,t.signal).then(e=>{n&&te({key:F,res:e})})},350);return()=>{n=!1,clearTimeout(r),t.abort()}},[e,F,i]);let ne=I&&I.key===F?I:null,re=(0,v.useMemo)(()=>ne?.res?hK(x,ne.res.chats):null,[ne,x]),L=(0,v.useMemo)(()=>j?M?re?x.filter(e=>re.has(dK(e))):[]:x.filter(pK(w,E)):null,[j,M,x,w,E,re]),R=(0,v.useMemo)(()=>L?new Set(L):null,[L]),z=(0,v.useMemo)(()=>L?new Set(L.map(e=>e.id)):null,[L]),B=L??x,ie=(0,v.useMemo)(()=>j?{query:w,options:E,litNames:!M}:null,[j,w,E,M]),ae=(0,v.useMemo)(()=>x.filter(e=>e.alreadyImported&&m.has(e.id)),[x,m]),oe=(0,v.useMemo)(()=>DK(m,z),[m,z]),se=S.length===1?S[0].name:`coding-agent`;(0,v.useEffect)(()=>{if(!e)return;d(null),b(null),_(new Set),h(new Set),T(``),te(null),k(!1),s(!0);let t=n;i.scanClaudeSessions().then(e=>{p(e.sessions),h(xK(e.sessions,t))}).catch(e=>d(e instanceof Error?e.message:String(e))).finally(()=>s(!1))},[e]);let ce=(0,v.useCallback)(e=>h(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),[]),le=r.prefs.claudeImportOffered,ue=(0,v.useCallback)(()=>{le||i.savePrefs({claudeImportOffered:!0}),t()},[le,i,t]),de=async()=>{l(!0),d(null);try{let e=await i.importClaudeSessions([...m],ae.length>0);b({imported:e.imported.length,replaced:e.replaced?.length??0,entries:e.imported.reduce((e,t)=>e+t.entries,0)+(e.replaced??[]).reduce((e,t)=>e+t.entries,0),failed:e.failed.length,filed:e.filed?.length??0,projectsMade:(e.projects??[]).filter(e=>e.created).map(e=>e.name),warnings:e.warnings??[]}),r.prefs.claudeImportOffered||i.savePrefs({claudeImportOffered:!0}),await i.refreshSessions()}catch(e){d(e instanceof Error?e.message:String(e))}finally{l(!1)}},fe=C.imported+C.behind;return(0,K.jsx)(JS,{open:e,title:`Import your ${se} chats`,onClose:ue,wide:!0,footer:(0,K.jsxs)(`div`,{className:`flex w-full items-center justify-between gap-2`,children:[(0,K.jsxs)(`span`,{className:`min-w-0 text-[11px] text-fg-faint`,children:[!y&&oe.notShown>0?(0,K.jsxs)(`span`,{className:`block text-fg-muted`,"data-testid":`import-claude-ticked-hidden`,children:[oe.total,` ticked · `,oe.notShown,` not shown by the search`]}):null,ae.length>0?(0,K.jsxs)(`span`,{className:`block text-warn`,children:[ae.length,` already-imported `,ae.length===1?`chat`:`chats`,` `,`will be REPLACED — the OonaCode copy is rebuilt from the original, and anything added here is lost.`]}):(0,K.jsx)(`span`,{className:`block`,children:`Your other apps stay exactly as they are — this copies, it never moves or deletes.`})]}),(0,K.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,K.jsx)(X,{onClick:ue,"data-testid":`import-claude-close`,children:y?`Done`:`Not now`}),y?null:(0,K.jsxs)(X,{variant:`primary`,busy:c,disabled:oe.total===0,onClick:()=>void de(),"data-testid":`import-claude-run`,children:[`Import `,PK(oe.total,`chat`,`chats`)]})]})]}),children:(0,K.jsxs)(`div`,{className:`space-y-3`,"data-testid":`import-claude-body`,children:[o?(0,K.jsx)(`div`,{className:`text-sm text-fg-muted`,children:`Looking for chats on this PC…`}):null,a&&!y?(0,K.jsxs)(`div`,{className:`space-y-2`,"data-testid":`import-claude-progress`,children:[(0,K.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3 text-sm`,children:[(0,K.jsxs)(`span`,{children:[`Importing `,(0,K.jsx)(`strong`,{children:a.done}),` of `,(0,K.jsx)(`strong`,{children:a.total}),`…`]}),(0,K.jsxs)(`span`,{className:`text-[11px] text-fg-faint`,children:[Math.round(a.done/Math.max(a.total,1)*100),`%`]})]}),(0,K.jsx)(`div`,{className:`h-1.5 w-full overflow-hidden rounded bg-surface-2`,children:(0,K.jsx)(`div`,{className:`h-full bg-accent transition-[width] duration-200`,style:{width:`${Math.round(a.done/Math.max(a.total,1)*100)}%`}})}),a.current?(0,K.jsxs)(`div`,{className:`truncate text-[11px] text-fg-faint`,title:a.current,children:[`reading: `,a.current]}):null,(0,K.jsxs)(`div`,{className:`flex gap-3 text-[11px] text-fg-faint`,children:[(0,K.jsxs)(`span`,{children:[a.imported,` imported`]}),a.skipped>0?(0,K.jsxs)(`span`,{children:[a.skipped,` already in`]}):null,a.failed>0?(0,K.jsxs)(`span`,{className:`text-warn`,children:[a.failed,` could not be read`]}):null]}),(0,K.jsx)(`p`,{className:`text-[11px] text-fg-faint`,children:`A big chat takes a moment — the largest here are over 100 MB. Your Claude Code is only being read.`})]}):null,u?(0,K.jsx)(`div`,{className:`rounded border border-danger/40 bg-danger/10 p-2 text-sm text-danger`,children:u}):null,y?(0,K.jsxs)(`div`,{className:`text-sm`,"data-testid":`import-claude-done`,children:[(0,K.jsxs)(`p`,{children:[`Imported `,(0,K.jsx)(`strong`,{children:y.imported}),` `,y.imported===1?`chat`:`chats`,y.replaced>0?(0,K.jsxs)(K.Fragment,{children:[` and rebuilt `,(0,K.jsx)(`strong`,{children:y.replaced}),` that `,y.replaced===1?`was`:`were`,` already here`]}):null,` `,`(`,y.entries.toLocaleString(),` entries). They are in your sessions list now, and you can carry on typing in them.`]}),y.projectsMade.length>0?(0,K.jsxs)(`p`,{className:`mt-1`,"data-testid":`import-claude-projects-made`,children:[y.projectsMade.length===1?`Created the project `:`Created the projects `,y.projectsMade.map((e,t)=>(0,K.jsxs)(`span`,{children:[t>0?`, `:``,(0,K.jsx)(`strong`,{children:e})]},e)),` `,`and filed `,y.projectsMade.length===1?`its`:`their`,` chats under`,` `,y.projectsMade.length===1?`it`:`them`,`.`]}):null,y.filed>0?(0,K.jsxs)(`p`,{className:`mt-1 text-fg-muted`,"data-testid":`import-claude-filed`,children:[y.filed,` `,y.filed===1?`chat that was`:`chats that were`,` already here`,` `,y.filed===1?`is`:`are`,` now filed under`,` `,y.filed===1?`its`:`their`,` project.`]}):null,y.failed>0?(0,K.jsxs)(`p`,{className:`mt-1 text-warn`,children:[y.failed,` could not be read and were left alone.`]}):null,y.warnings.map(e=>(0,K.jsx)(`p`,{className:`mt-1 text-warn`,children:e},e))]}):null,!o&&!y&&!a&&f!==null&&f.length>0?(0,K.jsxs)(`div`,{className:`space-y-0.5 text-sm`,"data-testid":`import-claude-tally`,children:[(0,K.jsxs)(`p`,{children:[(0,K.jsx)(`strong`,{children:f.length}),` `,f.length===1?`chat`:`chats`,` on this PC`,S.length>0?` — `:``,S.map((e,t)=>(0,K.jsxs)(`span`,{children:[t>0?`, `:``,(0,K.jsx)(`strong`,{children:e.rows.length}),` `,e.name]},e.key))]}),(0,K.jsxs)(`p`,{className:`text-fg-muted`,children:[(0,K.jsx)(`strong`,{className:`text-fg`,children:C.new}),` new`,fe>0?` · ${fe} already imported`:``,C.behind>0?` (${C.behind} behind their original)`:``,C.deleted>0?` · ${C.deleted} you deleted in OonaCode`:``]})]}):null,!o&&!y&&!a&&f!==null&&C.new===0&&!j?(0,K.jsx)(`div`,{className:`text-sm text-fg-muted`,"data-testid":`import-claude-empty`,children:f.length===0?`No chats from a coding agent were found on this PC.`:`Nothing new to import. Every chat is listed below — tick one to import it again.`}):null,!y&&!a&&x.length>0?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`p`,{className:`text-sm text-fg-muted`,children:[`Every chat the coding agents on this PC have, newest first. Importing copies them into OonaCode so you can read them here — and continue them, in the folder each one ran in.`,n&&C.new>0?` The new ones are ticked.`:` Tick the ones you want.`]}),(0,K.jsxs)(`div`,{className:`relative`,"data-testid":`import-search`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,K.jsxs)(`div`,{className:`relative flex-1`,children:[(0,K.jsx)(Y.Search,{className:`pointer-events-none absolute left-2 top-2 w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`input`,{ref:A,"aria-label":`Search the chats to import`,className:G(Z,`pl-7`),placeholder:M?`Search inside every conversation`:`Search by name, message or folder`,value:w,onChange:e=>T(e.target.value),onKeyDown:e=>{e.key===`Escape`&&(w!==``||O)&&(e.preventDefault(),e.stopPropagation(),O?k(!1):T(``))},"data-testid":`import-search-input`})]}),(0,K.jsxs)(US,{label:O?`Hide search options`:`Search options`,className:G(`relative`,O&&`text-accent`),"aria-pressed":O,onMouseDown:e=>e.preventDefault(),onClick:()=>k(e=>!e),"data-testid":`import-search-options-toggle`,children:[(0,K.jsx)(Y.Sliders,{}),tK(E)?(0,K.jsx)(`span`,{className:`absolute right-0.5 top-0.5 h-1.5 w-1.5 rounded-full bg-accent`,"data-testid":`import-search-options-dot`}):null]}),j?(0,K.jsx)(US,{label:`Clear search`,onMouseDown:e=>e.preventDefault(),onClick:()=>{T(``),A.current?.focus()},"data-testid":`import-search-clear`,children:(0,K.jsx)(Y.X,{})}):null]}),O?(0,K.jsx)(cK,{options:E,onChange:D,words:OK,onClose:()=>{k(!1),A.current?.focus()}}):null]}),j?(0,K.jsx)(UK,{query:w,conversations:M,request:P!==null,answer:ne,matches:L?.length??0,messages:[...re?.values()??[]].reduce((e,t)=>e+t.hits,0),capped:[...re?.values()??[]].some(e=>e.hitsCapped)}):null,(0,K.jsx)(`div`,{className:`max-h-96 space-y-3 overflow-y-auto`,"data-testid":`import-claude-list`,children:S.map(e=>{let t=R?e.rows.filter(e=>R.has(e)):e.rows;if(t.length===0)return null;let n=R?!N.has(e.key):!g.has(e.key),r=R?ee:_;return(0,K.jsxs)(`div`,{className:`rounded border border-border`,"data-testid":`import-group-${e.key}`,children:[(0,K.jsx)(RK,{section:e,rows:t,searching:R!==null,open:n,chosen:m,onFold:()=>r(t=>IK(t,e.key)),onTicks:h}),n?t.map(e=>(0,K.jsx)(BK,{row:e,checked:m.has(e.id),onToggle:ce,phrase:ie,hit:re?.get(dK(e))},dK(e))):null]},e.key)})}),(0,K.jsxs)(`div`,{className:`flex items-center gap-3 text-[11px] text-fg-faint`,children:[(0,K.jsx)(`button`,{type:`button`,className:`underline`,title:kK,onClick:()=>h(e=>{let t=new Set(e);for(let e of B)yK(e)&&t.add(e.id);return t}),"data-testid":`import-claude-select-all`,children:L===null?`Select all`:`Select all matches`}),(0,K.jsx)(`button`,{type:`button`,className:`underline`,onClick:()=>h(e=>{if(L===null)return new Set;let t=new Set(e);for(let e of B)t.delete(e.id);return t}),"data-testid":`import-claude-select-none`,children:L===null?`Select none`:`Unselect matches`})]})]}):null]})})}function IK(e,t){let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n}function LK({state:e,disabled:t,onToggle:n,label:r,title:i,testId:a}){let o=(0,v.useRef)(null);return(0,v.useEffect)(()=>{o.current&&(o.current.indeterminate=e===`some`)}),(0,K.jsx)(`input`,{ref:o,type:`checkbox`,className:`shrink-0`,checked:e===`all`,disabled:t,onChange:n,"aria-label":r,title:i,"data-state":e,"data-testid":a})}function RK({section:e,rows:t,searching:n,open:r,chosen:i,onFold:a,onTicks:o}){let s=TK(t,i),c=t.filter(yK).length,l=e.rows.filter(e=>i.has(e.id)).length,u=e.counts,d=u.imported+u.behind===e.rows.length,f=n?`the ${e.name} matches`:`${e.name}`,p=s===`all`?`Untick every chat in ${f}`:c===0&&s===`none`?`Nothing new here — tick a chat on its own row to import it again.`:c===0?`Untick every chat in ${f}`:kK;return(0,K.jsxs)(`div`,{className:`sticky top-0 z-10 flex items-center gap-2 border-b border-border bg-surface-2 px-2 py-1.5`,children:[(0,K.jsx)(LK,{state:s,disabled:c===0&&s===`none`,onToggle:()=>o(e=>EK(t,e)),label:s===`all`?`Untick every chat in ${f}`:`Tick the chats in ${f}`,title:p,testId:`import-group-check-${e.key}`}),(0,K.jsxs)(`button`,{type:`button`,className:`flex min-w-0 flex-1 items-center gap-1.5 text-left text-xs font-medium`,onClick:a,"aria-expanded":r,title:r?`Fold ${e.name}`:`Open ${e.name}`,"data-testid":`import-group-header-${e.key}`,children:[(0,K.jsx)(Y.Chevron,{open:r,className:`w-3 h-3 shrink-0`}),e.name,(0,K.jsxs)(`span`,{className:`truncate font-normal text-fg-faint`,children:[PK(e.rows.length,`chat`,`chats`),n?` · ${PK(t.length,`match`,`matches`)}`:``,u.new>0?` · ${u.new} new`:d?` · all imported`:``,u.behind>0?` · ${u.behind} behind`:``,u.deleted>0?` · ${u.deleted} you deleted`:``,l>0?` · ${l} ticked`:``]})]})]})}function zK({row:e,status:t}){let n=gK[t],r={"data-testid":`import-status-${e.id}`,"data-status":t};switch(t){case`new`:return(0,K.jsx)(`span`,{className:`font-medium text-accent`,...r,children:n});case`imported`:case`behind`:return(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-fg-muted`,title:t===`behind`?`The original has newer messages than the OonaCode copy — importing again brings them in (and replaces the copy).`:`Already in OonaCode. Ticking it rebuilds the OonaCode copy from the original, which replaces it.`,...r,children:[(0,K.jsx)(Y.Check,{className:`w-3 h-3 text-ok`}),n,t===`behind`?(0,K.jsxs)(`span`,{className:`ml-0.5 inline-flex shrink-0 items-center gap-0.5 rounded bg-warn-soft px-1 text-[10px] font-medium leading-4 text-warn`,"data-testid":`import-behind-${e.id}`,"aria-label":`behind its original`,children:[(0,K.jsx)(Y.ArrowDown,{className:`w-2.5 h-2.5`}),`behind`]}):null]});case`deleted`:return(0,K.jsx)(`span`,{className:`text-fg-faint`,title:`You imported this chat and deleted it in OonaCode; its original is still on this PC. Tick it to bring it back.`,...r,children:n});case`unavailable`:return(0,K.jsx)(`span`,{className:`text-warn`,...r,children:n})}}var BK=(0,v.memo)(function({row:e,checked:t,onToggle:n,phrase:r,hit:i}){let a=vK(e),o=e=>r?.litNames?eK(e,r.query,r.options).map((e,t)=>e.hit?(0,K.jsx)(`mark`,{className:`rounded bg-warn-soft px-0.5 text-fg`,children:e.text},t):(0,K.jsx)(`span`,{children:e.text},t)):e;return(0,K.jsxs)(`label`,{className:`flex items-start gap-2 border-b border-border p-2 last:border-b-0 ${a?`cursor-default opacity-60`:`cursor-pointer hover:bg-surface-2`}`,"data-testid":`import-row-${e.id}`,children:[(0,K.jsx)(`input`,{type:`checkbox`,className:`mt-1`,checked:t,disabled:a,onChange:()=>n(e.id),"aria-label":e.title??e.firstPrompt??e.id}),(0,K.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`span`,{className:`block truncate text-sm`,children:e.title||e.firstPrompt?o(e.title||e.firstPrompt||``):(0,K.jsx)(`span`,{className:`text-fg-faint`,children:`(no prompt)`})}),(0,K.jsxs)(`span`,{className:`mt-0.5 block truncate text-[11px] text-fg-faint`,children:[e.projectName?(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-0.5`,children:[(0,K.jsx)(Y.Project,{className:`w-3 h-3`}),o(e.projectName)]}):(0,K.jsxs)(K.Fragment,{children:[e.cwd?(0,K.jsx)(`span`,{title:e.cwd,children:o(jK(e.cwd))}):jK(e.cwd),e.cwd&&!e.cwdExists?` · folder is gone`:``]}),` `,`· `,e.entryCount,` entries`,e.bytes>0?` · ${MK(e.bytes)}`:``,e.model?` · ${e.model}`:``]}),e.unavailable||e.note?(0,K.jsx)(`span`,{className:`mt-0.5 block text-[11px] ${e.unavailable?`text-warn`:`text-fg-faint`}`,"data-testid":`import-row-note-${e.id}`,children:e.unavailable??e.note}):null,i&&r?(0,K.jsx)(HK,{hit:i,query:r.query,options:r.options,testId:`import-row-hits-${e.id}`}):null]}),e.supersedes&&e.supersedes.length>0?(0,K.jsx)(`span`,{className:`mt-0.5 shrink-0 rounded bg-surface-2 px-1 text-[11px] text-fg-faint`,title:`Rewound — replaces ${e.supersedes.length} earlier ${e.supersedes.length===1?`branch`:`branches`} of this chat`,children:`rewound`}):null,(0,K.jsxs)(`span`,{className:`mt-0.5 flex shrink-0 flex-col items-end gap-0.5 text-right text-[11px]`,children:[(0,K.jsx)(`span`,{className:`whitespace-nowrap text-fg-faint`,children:NK(e.lastEntryAt??e.updatedAt)}),(0,K.jsx)(`span`,{className:`whitespace-nowrap`,children:(0,K.jsx)(zK,{row:e,status:_K(e)})})]})]})});function VK(e){let t=e.kind===`tool`?e.tool??`Tool`:e.role===`assistant`?`Model`:`You`;return e.subagent?`${t} (subagent)`:t}function HK({hit:e,query:t,options:n,testId:r}){return(0,K.jsxs)(`span`,{className:`mt-1 block space-y-0.5`,"data-testid":r,children:[(0,K.jsxs)(`span`,{className:`block text-[11px] font-medium text-fg-muted`,children:[e.hits,e.hitsCapped?`+`:``,` `,e.hits===1&&!e.hitsCapped?`message says`:`messages say`,` it`]}),e.snippets.map((e,r)=>(0,K.jsxs)(`span`,{className:`block line-clamp-2 text-[11px] text-fg-muted`,"data-testid":`import-row-snippet`,children:[(0,K.jsxs)(`span`,{className:`font-medium text-fg-faint`,children:[VK(e),`:`]}),` `,eK(e.snippet,t,n).map((e,t)=>e.hit?(0,K.jsx)(`mark`,{className:`rounded bg-warn-soft px-0.5 text-fg`,children:e.text},t):(0,K.jsx)(`span`,{children:e.text},t))]},r))]})}function UK({query:e,conversations:t,request:n,answer:r,matches:i,messages:a,capped:o}){let s=(e,t,n=`text-fg-muted`)=>(0,K.jsx)(`p`,{className:`text-[11px] ${n}`,"data-testid":t,children:e});if(!t)return i===0?s(`No chat’s name, message or folder says “${e.trim()}”. Whole conversations, in the search options, looks inside them.`,`import-search-none`):s(`${i} ${i===1?`chat matches`:`chats match`}`,`import-search-count`);if(!n)return s(e.trim().length<2?`Type at least two characters to search inside the conversations.`:`Tick what to look in — your messages, the model’s replies or the tools’ side.`,`import-search-idle`);if(!r)return s(`Searching every conversation on this PC…`,`import-search-busy`);if(r.res===null)return s(`This PC could not search its conversations. Try again, or update OonaCode.`,`import-search-failed`,`text-danger`);let c=r.res,l=AK(c),u=c.sources.filter(e=>e.note).map(e=>`${e.agentName}: ${e.note}`);return(0,K.jsxs)(`div`,{className:`space-y-0.5`,children:[i===0?s(c.partial===`aborted`?`The search was stopped.`:`No conversation on this PC says that.`,`import-search-none`):s(`${i} ${i===1?`chat says`:`chats say`} it · ${a}${o?`+`:``} ${a===1&&!o?`message`:`messages`}`,`import-search-count`),l?s(l,`import-search-partial`,`text-warn`):null,u.map(e=>(0,K.jsx)(`p`,{className:`text-[11px] text-fg-faint`,"data-testid":`import-search-source-note`,children:e},e))]})}var WK={model:null,previousModel:null,costUsd:0,inputTokens:0,outputTokens:0,turns:0,durationMs:0,contextTokens:null,contextWindow:null,contextUsed:null,costSource:`engine`,credits:null,resetAtIndex:null,didReset:!1,countedResults:0};function GK(e,t){let n=t?Us(t):null,r=null,i=null;for(let t=0;t<e.length;t++){let a=e[t];if(!a||a.kind!==`assistant`||!R(a.model))continue;let o=Us(a.model);n!==null&&o!==n&&(r=t,i=n),n=o}return{index:r,from:i,to:n}}function KK(e){let{items:t,session:n=null,initModel:r=null,boundary:i=null,models:a}=e,o=e.contextTokens!=null&&e.contextTokens>0?e.contextTokens:null;if(t.length===0&&!n)return WK;let s=GK(t,r),c=i&&i.index>=0?Math.min(i.index,t.length):null,l=null,u=null;s.index!==null&&(c===null||s.index>=c)?(l=s.index,u=s.from):c!==null&&(l=c,u=i?.from??s.from);let d=l??0,f=0,p=0,m=0,h=0,g=0,_=0;for(let e=d;e<t.length;e++){let n=t[e];!n||n.kind!==`result`||(_+=1,f+=n.costUsd,p+=n.inputTokens,m+=n.outputTokens,h+=n.numTurns,g+=n.durationMs)}_===0&&l===null&&n&&(f=n.totalCostUsd,p=n.inputTokens,m=n.outputTokens);let v=`engine`,y=null;n&&n.providerId===`oonacode`&&(f=n.totalCostUsd,y=n.poolCredits??null,v=`gateway`);let b=r?Us(r):null,x=i&&c!==null&&l===c?i.to:s.to??n?.model??b??null,S=[x,n?.model??null,b].filter(e=>typeof e==`string`&&e.length>0),C=(a?S.map(e=>a.find(t=>t.id===e)).find(e=>e?.contextWindow!=null):void 0)?.contextWindow??S.map(e=>Eh(e)).find(e=>e!==null)??null;return{model:x,previousModel:u,costUsd:f,inputTokens:p,outputTokens:m,turns:h,durationMs:g,contextTokens:o,contextWindow:C,contextUsed:C&&C>0&&o!==null?Math.min(1,o/C):null,resetAtIndex:l,didReset:l!==null,countedResults:_,costSource:v,credits:y}}var qK=[...hd.what,...hd.when,...hd.who,...hd.yours,...hd.where];function JK({sessionId:e,entryCount:t}){let{state:n,actions:r}=q(),i=n.chatAboutsChange,a=Ku(n.settings??{}),[o,s]=(0,v.useState)(null),[c,l]=(0,v.useState)(!1),[u,d]=(0,v.useState)(!1),[f,p]=(0,v.useState)(``),[m,h]=(0,v.useState)(!1),[g,_]=(0,v.useState)(!1),[y,b]=(0,v.useState)(null),[x,S]=(0,v.useState)(null),C=(0,v.useRef)(i.seq),w=(0,v.useRef)(!0);(0,v.useEffect)(()=>(w.current=!0,()=>{w.current=!1}),[]);let T=(0,v.useCallback)(async()=>{let t=await r.getChatAbout(e);if(w.current){if(t===`unsupported`){l(!0);return}t!==null&&(l(!1),s(t))}},[r,e]);if((0,v.useEffect)(()=>{T()},[T]),(0,v.useEffect)(()=>{i.seq!==C.current&&(C.current=i.seq,id(i,e)&&T())},[i,e,T]),c||o===null)return null;let E=()=>{p(o.about??``),d(!0),S(null),b(null)},D=async()=>{if(pd(f))return;let t=f.trim()===``;h(!0);try{let n=await r.updateChatAbout(e,t?null:f);if(!w.current||!n)return;s(n),d(!1),S(t?a.enabled?`Cleared. The housekeeper writes a new about at the chat’s next change.`:`Cleared. None is written while chat abouts are off.`:null)}finally{w.current&&h(!1)}},O=async()=>{_(!0),b(null),S(null);try{let t=await r.regenerateChatAbout(e);if(!w.current)return;t.about&&s(t.about),t.ok||b(t.error??`The about could not be written.`)}finally{w.current&&_(!1)}},k=md(f,a.maxWords),A=pd(f),j=ad(o);return(0,K.jsxs)(`div`,{className:`mb-2`,"data-testid":`session-about`,children:[(0,K.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[11px] font-semibold uppercase tracking-wide text-fg-faint`,children:[(0,K.jsx)(`span`,{"aria-hidden":`true`,children:(0,K.jsx)(Y.Skill,{className:`w-3.5 h-3.5`})}),`About`,(0,K.jsx)(WS,{label:`About`,details:(0,K.jsx)(GS,{items:qK})}),o.stale&&o.about?(0,K.jsx)(`span`,{title:hd.stale,"data-testid":`session-about-stale`,children:(0,K.jsx)(Q,{tone:`warn`,children:`stale`})}):null]}),u?(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,K.jsx)(`textarea`,{className:G(Z,`min-h-[7rem] resize-y text-xs`),value:f,onChange:e=>p(e.target.value),"aria-label":`This chat’s about`,placeholder:`What this chat works on, for your other chats to read`,autoFocus:!0,"data-testid":`session-about-input`}),(0,K.jsxs)(`div`,{className:G(`text-[11px]`,k.overChars?`text-danger`:k.overWords?`text-warn`:`text-fg-faint`),"data-testid":`session-about-count`,children:[k.words,` / `,a.maxWords,` words · `,k.chars.toLocaleString(`en-US`),` /`,` `,Wu.userChars.toLocaleString(`en-US`),` characters`]}),A?(0,K.jsx)(`div`,{className:`text-[11px] text-danger`,"data-testid":`session-about-problem`,children:A}):k.overWords?(0,K.jsxs)(`div`,{className:`text-[11px] text-warn`,children:[`Longer than the `,a.maxWords,` words the housekeeper writes; your other chats read all of it.`]}):null,(0,K.jsx)(`div`,{className:`text-[11px] text-fg-faint`,children:`Saved empty, it is cleared, and the housekeeper writes one again at the chat’s next change.`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(X,{size:`sm`,variant:`primary`,onClick:()=>void D(),busy:m,disabled:A!==null,"data-testid":`session-about-save`,children:`Save`}),(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:()=>d(!1),disabled:m,"data-testid":`session-about-cancel`,children:`Cancel`})]})]}):(0,K.jsxs)(K.Fragment,{children:[o.about?(0,K.jsx)(`p`,{className:`whitespace-pre-wrap break-words text-xs text-fg`,"data-testid":`session-about-text`,children:o.about}):(0,K.jsxs)(`p`,{className:`text-[11px] text-fg-muted`,"data-testid":`session-about-missing`,children:[`No about yet. `,dd(o,{enabled:a.enabled,entryCount:t})]}),o.about&&o.aboutAt?(0,K.jsxs)(`div`,{className:`mt-0.5 text-[11px] text-fg-faint`,title:K_(o.aboutAt),"data-testid":`session-about-written`,children:[`Written `,W_(o.aboutAt),j?` by ${j}`:``]}):null,o.about&&o.pending?(0,K.jsx)(`div`,{className:`text-[11px] text-accent`,children:`Being written again now…`}):null,o.about&&o.lastError?(0,K.jsxs)(`div`,{className:`text-[11px] text-danger`,"data-testid":`session-about-last-error`,children:[`The last attempt failed: `,o.lastError]}):null,(0,K.jsxs)(`div`,{className:`mt-0.5 text-[11px] text-fg-faint`,title:o.route?`Paid by ${od[o.route]}`:void 0,"data-testid":`session-about-spend`,children:[`Cost so far: `,ld(o.spend,o.route)]}),x?(0,K.jsx)(`div`,{className:`mt-0.5 text-[11px] text-fg-muted`,"data-testid":`session-about-note`,children:x}):null,y?(0,K.jsx)(`div`,{className:`mt-0.5 text-[11px] text-danger`,role:`alert`,"data-testid":`session-about-regen-error`,children:y}):null,(0,K.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-1.5`,children:[(0,K.jsxs)(X,{size:`sm`,variant:`ghost`,onClick:E,disabled:g,title:hd.edit,"data-testid":`session-about-edit`,children:[(0,K.jsx)(Y.Edit,{className:`h-3 w-3`}),` Edit`]}),(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:()=>void O(),disabled:!a.enabled||g,title:a.enabled?hd.regenerate:hd.regenerateOff,"data-testid":`session-about-regenerate`,children:g?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Y.Spinner,{className:`h-3 w-3`}),` Writing…`]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Y.Refresh,{className:`h-3 w-3`}),` Regenerate`]})})]}),a.enabled?null:(0,K.jsx)(`div`,{className:`mt-0.5 text-[11px] text-fg-faint`,"data-testid":`session-about-off`,children:`Regenerate is unavailable: chat abouts are off.`})]})]})}function YK({view:e}){let t=(0,v.useMemo)(()=>hG(e.request??``),[e.request]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`text-[11px] text-fg-faint`,children:e.truncated?`Cut at the size the host keeps.`:`As agy sent it.`}),(0,K.jsx)(kI,{text:t})]}),(0,K.jsx)(`pre`,{className:`mt-0.5 max-h-64 overflow-auto whitespace-pre-wrap break-all rounded-md border border-border bg-code-bg p-2 font-mono text-[11px] leading-snug text-fg`,"data-testid":`agy-request-json`,children:t})]})}function XK({sessionId:e,running:t}){let{api:n}=q(),[r,i]=(0,v.useState)(null),[a,o]=(0,v.useState)(!1),[s,c]=(0,v.useState)(!1),[l,u]=(0,v.useState)(!0),[d,f]=(0,v.useState)(!1),[p,m]=(0,v.useState)({}),h=(0,v.useRef)(!0);(0,v.useEffect)(()=>(h.current=!0,()=>{h.current=!1}),[]);let g=(0,v.useCallback)(async()=>{if(!n.listAgyRequests){o(!0);return}c(!0);try{let t=await n.listAgyRequests(e);if(!h.current)return;o(!1),i(t.requests)}catch(e){if(!h.current)return;rg(e)&&o(!0)}finally{h.current&&c(!1)}},[n,e]);(0,v.useEffect)(()=>{g()},[g]);let _=(0,v.useRef)(t);(0,v.useEffect)(()=>{_.current&&!t&&g(),_.current=t},[t,g]);let{main:y,background:b}=(0,v.useMemo)(()=>cG(r??[]),[r]),x=async t=>{if(p[t.id]){m(e=>{let{[t.id]:n,...r}=e;return r});return}m(e=>({...e,[t.id]:{phase:`loading`}}));let r=e=>{h.current&&m(n=>n[t.id]?{...n,[t.id]:e}:n)};if(!n.getAgyRequestBody)return r({phase:`gone`});try{let i=await n.getAgyRequestBody(e,t.id);r(i.request===null?{phase:`gone`}:{phase:`ready`,view:i})}catch(e){r(rg(e)?{phase:`gone`}:{phase:`failed`,message:$_(e)})}};if(a||r===null)return null;let S=e=>{let{title:t,detail:n}=lG(e),r=dG(e),i=pG(e.usage),a=p[e.id],o=[n,e.ms===null?`running…`:H_(e.ms),i].filter(e=>!!e),s=(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`span`,{className:`flex items-baseline gap-1.5`,children:[(0,K.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-fg-faint`,title:K_(e.at),children:mG(e.at)}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs font-medium text-fg`,children:t}),(0,K.jsx)(`span`,{className:G(`shrink-0 text-[11px] font-medium`,r.tone===`danger`?`text-danger`:`text-fg-muted`),"data-tone":r.tone,"data-testid":`agy-request-status-${e.id}`,children:r.text})]}),(0,K.jsx)(`span`,{className:`block break-words text-[11px] text-fg-faint`,children:o.join(` · `)}),e.error?(0,K.jsx)(`span`,{className:`block break-words text-[11px] text-danger`,children:e.error}):null]});return(0,K.jsxs)(`li`,{className:`rounded-md border border-border px-2 py-1`,"data-testid":`agy-request-${e.id}`,"data-kind":e.kind,children:[e.hasBody?(0,K.jsx)(`button`,{type:`button`,className:`block w-full text-left`,"aria-expanded":a!==void 0,title:`${uG(e)} — show the request`,onClick:()=>void x(e),"data-testid":`agy-request-open-${e.id}`,children:s}):(0,K.jsx)(`div`,{title:uG(e),children:s}),a?(0,K.jsx)(`div`,{className:`mt-1`,"data-testid":`agy-request-body-${e.id}`,children:a.phase===`loading`?(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[11px] text-fg-muted`,children:[(0,K.jsx)(Y.Spinner,{className:`h-3 w-3`}),` Loading the request…`]}):a.phase===`gone`?(0,K.jsx)(`div`,{className:`text-[11px] text-fg-muted`,"data-testid":`agy-request-body-gone`,children:`This request’s body is no longer kept on this PC.`}):a.phase===`failed`?(0,K.jsxs)(`div`,{className:`text-[11px] text-danger`,role:`alert`,children:[`Could not read it: `,a.message]}):(0,K.jsx)(YK,{view:a.view})}):null]},e.id)};return(0,K.jsxs)(`div`,{className:`mb-2`,"data-testid":`agy-requests`,children:[(0,K.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5`,children:[(0,K.jsxs)(`button`,{type:`button`,className:`flex min-w-0 flex-1 items-center gap-1.5 text-left text-[11px] font-semibold uppercase tracking-wide text-fg-faint hover:text-fg-muted`,"aria-expanded":l,onClick:()=>u(e=>!e),"data-testid":`agy-requests-toggle`,children:[(0,K.jsx)(`span`,{"aria-hidden":`true`,children:(0,K.jsx)(Y.Chevron,{className:`h-3 w-3`,open:l})}),`Google agy requests`,(0,K.jsx)(`span`,{className:`font-mono normal-case tracking-normal`,"data-testid":`agy-requests-count`,children:r.length})]}),(0,K.jsx)(US,{label:`Refresh agy requests`,className:`p-1`,disabled:s,onClick:()=>void g(),"data-testid":`agy-requests-refresh`,children:s?(0,K.jsx)(Y.Spinner,{className:`h-3 w-3`}):(0,K.jsx)(Y.Refresh,{className:`h-3 w-3`})})]}),(0,K.jsx)(`p`,{className:`mb-1 text-[11px] leading-snug text-fg-faint`,"data-testid":`agy-requests-privacy`,children:aG}),l?(0,K.jsxs)(K.Fragment,{children:[y.length===0?(0,K.jsx)(`p`,{className:`text-[11px] text-fg-muted`,"data-testid":`agy-requests-empty`,children:`No model calls yet — they appear here as agy talks to Google.`}):(0,K.jsx)(`ul`,{className:`max-h-72 space-y-1 overflow-y-auto`,"data-testid":`agy-requests-main`,children:y.map(S)}),b.length>0?(0,K.jsxs)(`div`,{className:`mt-1.5`,children:[(0,K.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1 text-[11px] text-accent hover:underline`,"aria-expanded":d,onClick:()=>f(e=>!e),"data-testid":`agy-background-toggle`,children:[(0,K.jsx)(Y.Chevron,{className:`h-3 w-3`,open:d}),`background calls (`,b.length,`)`]}),d?(0,K.jsx)(`ul`,{className:`mt-1 max-h-72 space-y-1 overflow-y-auto opacity-70`,"data-testid":`agy-requests-background`,children:b.map(S)}):null]}):null]}):null]})}function ZK({label:e,icon:t,children:n}){return(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3 py-1`,children:[(0,K.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1.5 text-xs text-fg-faint`,children:[t?(0,K.jsx)(`span`,{className:`shrink-0 text-fg-faint`,"aria-hidden":`true`,children:t}):null,e]}),(0,K.jsx)(`span`,{className:`min-w-0 truncate text-right text-xs font-medium text-fg`,children:n})]})}function QK({label:e,icon:t}){return(0,K.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[11px] font-semibold uppercase tracking-wide text-fg-faint`,children:[(0,K.jsx)(`span`,{"aria-hidden":`true`,children:t}),e]})}var $K={provider:(0,K.jsx)(Y.Plug,{className:`w-3.5 h-3.5`}),route:(0,K.jsx)(Y.Globe,{className:`w-3.5 h-3.5`}),model:(0,K.jsx)(Y.Bot,{className:`w-3.5 h-3.5`}),permission:(0,K.jsx)(Y.Shield,{className:`w-3.5 h-3.5`}),context:(0,K.jsx)(Y.Brain,{className:`w-3.5 h-3.5`}),window:(0,K.jsx)(Y.Panel,{className:`w-3.5 h-3.5`}),compactions:(0,K.jsx)(Y.CollapseAll,{className:`w-3.5 h-3.5`}),usage:(0,K.jsx)(Y.Coins,{className:`w-3.5 h-3.5`}),tokensIn:(0,K.jsx)(Y.Download,{className:`w-3.5 h-3.5`}),tokensOut:(0,K.jsx)(Y.Upload,{className:`w-3.5 h-3.5`}),duration:(0,K.jsx)(Y.Clock,{className:`w-3.5 h-3.5`}),turns:(0,K.jsx)(Y.Send,{className:`w-3.5 h-3.5`}),session:(0,K.jsx)(Y.Info,{className:`w-3.5 h-3.5`}),tasks:(0,K.jsx)(Y.Bell,{className:`w-3.5 h-3.5`}),status:(0,K.jsx)(Y.Monitor,{className:`w-3.5 h-3.5`}),updated:(0,K.jsx)(Y.Refresh,{className:`w-3.5 h-3.5`}),entries:(0,K.jsx)(Y.Menu,{className:`w-3.5 h-3.5`}),project:(0,K.jsx)(Y.Project,{className:`w-3.5 h-3.5`}),folder:(0,K.jsx)(Y.Folder,{className:`w-3.5 h-3.5`})};function eq({used:e}){let t=Math.round(e*100);return(0,K.jsx)(`div`,{className:`h-1.5 w-full overflow-hidden rounded-full bg-surface-3`,role:`progressbar`,"aria-valuenow":t,"aria-valuemin":0,"aria-valuemax":100,"aria-label":`Context used`,children:(0,K.jsx)(`div`,{className:G(`h-full rounded-full`,t>=90?`bg-danger`:t>=70?`bg-warn`:`bg-accent`),style:{width:`${t}%`}})})}function tq(){let{state:e,actions:t}=q(),n=jS(),r=n?e.remote.tabs[n.id]!==void 0:!1,i=n?e.drafts[n.id]!==void 0:!1,a=AS(),o=e.currentSessionId,s=n?.projectId?e.vaultProjects.find(e=>e.id===n.projectId):void 0,c=s?.instructions.trim()??``,l=n?.providerId??e.activeProviderId,u=e.providers.find(e=>e.definition.id===l),d=u?.definition.models,f=(0,v.useMemo)(()=>{let e=u?.definition;return e?Ps(e,{credentialClass:(u.credentials.find(e=>e.variantId===n?.variantId)??u.credentials[0])?.class??null}):null},[u,n?.variantId]),p=(0,v.useMemo)(()=>KK({items:a?.items??[],session:n,initModel:a?.init?.model??null,boundary:o?e.modelBoundaries[o]??null:null,models:d,contextTokens:a?.contextTokens??null}),[a?.items,a?.init?.model,a?.contextTokens,n,o,e.modelBoundaries,d]),m=(0,v.useMemo)(()=>(a?.items??[]).filter(e=>e.kind===`user`&&e.compactSummary).length,[a?.items]),h=n?Mh(n.providerId)&&!r&&!i:!1,g=a?.status===`running`||a?.status===`waiting_permission`;return(0,K.jsxs)(`aside`,{className:`flex w-72 shrink-0 flex-col border-l border-border bg-surface`,"aria-label":`Session info`,"data-testid":`session-panel`,children:[(0,K.jsxs)(`div`,{className:`flex h-9 shrink-0 items-center gap-2 border-b border-border px-3`,children:[(0,K.jsx)(Y.Info,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`flex-1 text-xs font-semibold uppercase tracking-wide text-fg-muted`,children:`Session info`}),(0,K.jsx)(US,{label:`Hide session info`,className:`p-1`,onClick:()=>void t.savePrefs({sessionPanelOpen:!1}),children:(0,K.jsx)(Y.X,{className:`w-3.5 h-3.5`})})]}),n?(0,K.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-3 py-2`,children:[p.didReset?(0,K.jsxs)(`div`,{className:`mb-2 rounded-md bg-accent-soft px-2 py-1.5 text-[11px] text-accent`,"data-testid":`stats-reset`,children:[`Statistics restarted at the model change`,p.previousModel?` (was ${p.previousModel})`:``,`.`]}):null,!r&&!i?(0,K.jsx)(JK,{sessionId:n.id,entryCount:n.entryCount??null},n.id):null,(0,K.jsxs)(`div`,{className:`mb-2`,children:[(0,K.jsx)(QK,{label:`Model`,icon:$K.model}),(0,K.jsx)(ZK,{label:`Provider`,icon:$K.provider,children:u?.definition.displayName??l??`—`}),(0,K.jsx)(ZK,{label:`Route`,icon:$K.route,children:f?(0,K.jsx)(Q,{tone:f.viaGateway?`accent`:`ok`,children:f.badge}):`—`}),f?(0,K.jsx)(`div`,{className:`pb-1 text-[11px] leading-snug text-fg-faint`,children:f.detail}):null,(0,K.jsx)(ZK,{label:`Model`,icon:$K.model,children:p.model??n.model??`—`}),(0,K.jsxs)(ZK,{label:`Permission mode`,icon:$K.permission,children:[(0,K.jsx)(Q,{children:P(te(n))}),` `,(0,K.jsx)(Q,{children:n.permissionMode})]})]}),(0,K.jsxs)(`div`,{className:`mb-2`,children:[(0,K.jsx)(QK,{label:`Context`,icon:$K.context}),p.contextUsed!==null&&p.contextTokens!==null?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(eq,{used:p.contextUsed}),(0,K.jsxs)(`div`,{className:`mt-1 text-[11px] text-fg-muted`,"data-testid":`context-used`,children:[U_(p.contextTokens),` / `,U_(p.contextWindow??0),` `,`tokens (`,Math.round(p.contextUsed*100),`%)`]})]}):(0,K.jsx)(`div`,{className:`text-[11px] text-fg-muted`,"data-testid":`context-used`,children:p.contextTokens===null?`Measured at the next reply`:`${U_(p.contextTokens)} tokens (window unknown)`}),(0,K.jsx)(ZK,{label:`Context window`,icon:$K.window,children:(0,K.jsx)(`span`,{"data-testid":`context-window`,children:p.contextWindow?`${U_(p.contextWindow)} tokens`:`unknown`})}),(0,K.jsx)(ZK,{label:`Compactions`,icon:$K.compactions,children:(0,K.jsx)(`span`,{"data-testid":`compaction-count`,children:m})})]}),(0,K.jsxs)(`div`,{className:`mb-2`,children:[(0,K.jsx)(QK,{label:`Usage`,icon:$K.usage}),(0,K.jsx)(ZK,{label:`Tokens in`,icon:$K.tokensIn,children:U_(p.inputTokens)}),(0,K.jsx)(ZK,{label:`Tokens out`,icon:$K.tokensOut,children:U_(p.outputTokens)}),p.credits===null?null:(0,K.jsx)(ZK,{label:`Credits used`,icon:$K.usage,children:p.credits.toLocaleString(`en-US`,{maximumFractionDigits:2})}),(0,K.jsx)(ZK,{label:`Duration`,icon:$K.duration,children:p.countedResults>0&&H_(p.durationMs)||`—`}),(0,K.jsx)(ZK,{label:`Turns`,icon:$K.turns,children:p.countedResults>0?p.turns:`—`})]}),(0,K.jsxs)(`div`,{className:`mb-2`,children:[(0,K.jsx)(QK,{label:`Session`,icon:$K.session}),(0,K.jsx)(ZK,{label:`Status`,icon:$K.status,children:(0,K.jsx)(Q,{tone:a?.status===`error`?`danger`:a?.status===`running`?`accent`:a?.status===`waiting_permission`?`warn`:`neutral`,children:a?.status??n.status})}),(0,K.jsx)(ZK,{label:`Updated`,icon:$K.updated,children:W_(n.updatedAt)}),(0,K.jsx)(ZK,{label:`Entries`,icon:$K.entries,children:n.entryCount}),(0,K.jsx)(ZK,{label:`Project`,icon:$K.project,children:(0,K.jsx)(`span`,{"data-testid":`session-project`,children:s?s.name:`—`})}),c?(0,K.jsx)(`div`,{className:`whitespace-pre-wrap break-words pb-1 text-[11px] leading-snug text-fg-faint`,"data-testid":`session-project-instructions`,children:c.length>300?`${c.slice(0,300)}\u2026`:c}):null,r?null:(0,K.jsx)(`button`,{type:`button`,className:`text-[11px] text-accent hover:underline`,onClick:()=>t.openAssignProject(n.id),"data-testid":`session-change-project`,children:s?`Move to another project…`:`Move to a project…`}),(0,K.jsx)(ZK,{label:`Folder`,icon:$K.folder,children:n.projectDir?`project`:`own workspace`}),(0,K.jsx)(`div`,{className:`mt-1 break-all font-mono text-[10px] text-fg-faint`,"data-testid":`session-folder`,children:n.cwd}),r?null:(0,K.jsx)(`button`,{type:`button`,className:`mt-1 text-[11px] text-accent hover:underline`,onClick:()=>t.openDialog(`project`),"data-testid":`session-change-folder`,children:`Change folder…`})]}),h?(0,K.jsx)(XK,{sessionId:n.id,running:g},n.id):null,r?null:(0,K.jsxs)(`div`,{className:`space-y-1.5`,"data-testid":`session-scheduled-tasks`,children:[(0,K.jsx)(QK,{label:`Scheduled tasks`,icon:$K.tasks}),(0,K.jsx)(TL,{sessionId:n.id})]}),a?.init?(0,K.jsxs)(`div`,{className:`text-[11px] text-fg-faint`,children:[`engine `,a.init.claudeCodeVersion,` · `,a.init.tools.length,` tools`]}):null]}):(0,K.jsx)(`div`,{className:`p-4 text-xs text-fg-faint`,children:`Open a chat to see its statistics.`})]})}var nq=[{kind:`photo`,label:`Photos`,empty:`No pictures in this chat yet.`},{kind:`video`,label:`Videos`,empty:`No videos in this chat yet.`},{kind:`audio`,label:`Audio`,empty:`No sound files in this chat yet.`},{kind:`file`,label:`Files`,empty:`No files in this chat yet.`},{kind:`link`,label:`Links`,empty:`No links in this chat yet.`}];function rq(e){let t=[];for(let n of e){let e=n.at?new Date(n.at):null,r=e!==null&&!Number.isNaN(e.getTime()),i=r?`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}`:`unknown`,a=t[t.length-1];(!a||a.key!==i)&&(a={key:i,label:r?e.toLocaleDateString(void 0,{month:`long`,year:`numeric`}):`Undated`,items:[]},t.push(a)),a.items.push(n)}return t}function iq(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleString(void 0,{day:`numeric`,month:`short`,year:`numeric`,hour:`2-digit`,minute:`2-digit`})}function aq(e){let t=[];e.size!==null&&e.size>=0&&t.push(gF(e.size));let n=iq(e.at);return n&&t.push(n),t.join(` · `)}function oq(e){return e.source===`removed`?!1:e.source!==`path`||e.exists!==!1}function sq(e){return e.source===`removed`?e.removedAfterDays?`Removed after ${e.removedAfterDays} day${e.removedAfterDays===1?``:`s`}`:`Removed to save space`:e.source===`path`&&e.exists===!1?`Moved or deleted`:null}function cq(e,t){let n=new Set(e.map(e=>e.id));return[...e,...t.filter(e=>!n.has(e.id))]}function lq(e){try{let t=new URL(e),n=`${t.pathname===`/`?``:t.pathname}${t.search}${t.hash}`;return{host:t.host,rest:n}}catch{return{host:e,rest:``}}}function uq(e,t){if(!t||!e)return null;let n=`u:${t}`;for(let r of e)if(r.id===n||r.uuid===t)return r.id;return null}function dq(e){let t=new Uint8Array(e),n=``,r=32768;for(let e=0;e<t.length;e+=r)n+=String.fromCharCode(...t.subarray(e,e+r));return btoa(n)}var fq=60,pq=800,mq={items:[],nextBefore:null,loaded:!1,loading:!1,error:null};function hq(){return{photo:mq,video:mq,audio:mq,file:mq,link:mq}}function gq({sessionId:e}){let{state:t,actions:n,api:r}=q(),i=t.remote.tabs[e]!==void 0,a=t.drafts[e]!==void 0,o=t.transcripts[e]??null,s=(0,v.useCallback)(()=>n.setMediaPanel(!1),[n]),[c,l]=(0,v.useState)(`photo`),[u,d]=(0,v.useState)(hq),[f,p]=(0,v.useState)(null),[m,h]=(0,v.useState)(!1),[g,_]=(0,v.useState)(null),y=(0,v.useRef)(u);y.current=u;let b=(0,v.useRef)(!0);(0,v.useEffect)(()=>(b.current=!0,()=>{b.current=!1}),[]);let x=!i&&!a&&typeof r.listChatMedia==`function`,S=(0,v.useCallback)(async()=>{if(r.grantChatMedia)try{let t=await r.grantChatMedia(e);b.current&&_(()=>t.urlOf)}catch{}},[r,e]);(0,v.useEffect)(()=>{x&&S()},[x,S]);let C=(0,v.useCallback)(async(t,n)=>{if(!r.listChatMedia)return;let i=y.current[t];if(i.loading||n===`more`&&!i.nextBefore)return;d(e=>({...e,[t]:{...e[t],loading:!0,error:null}}));let a;try{a=await r.listChatMedia(e,{kind:t,limit:fq,...n===`more`&&i.nextBefore?{before:i.nextBefore}:{}})}catch(e){if(!b.current)return;rg(e)&&e.code!==`session_not_found`&&h(!0),d(n=>({...n,[t]:{...n[t],loading:!1,loaded:!0,error:e instanceof Error?e.message:`The media list could not be read.`}}));return}b.current&&(p(a.counts),d(e=>({...e,[t]:{items:n===`more`?cq(e[t].items,a.items):a.items,nextBefore:a.nextBefore,loaded:!0,loading:!1,error:null}})))},[r,e]);(0,v.useEffect)(()=>{x&&(y.current[c].loaded||C(c,`first`))},[x,c,C]);let w=(0,v.useMemo)(()=>o?o.items.filter(e=>e.kind===`user`).length:0,[o]),T=(0,v.useRef)(w);(0,v.useEffect)(()=>{if(!x||w===T.current)return;let e=setTimeout(()=>{T.current=w,d(e=>{let t=hq();return t[c]={...e[c],loaded:!0},t}),C(c,`first`)},pq);return()=>clearTimeout(e)},[x,w,c,C]);let E=n.toast,D=(0,v.useCallback)(t=>{let r=uq(o?.items,t.entryUuid);if(!r){E(`info`,`That message is not loaded in this window yet — scroll up in the chat.`);return}n.jumpToItem(e,r),typeof window<`u`&&typeof window.matchMedia==`function`&&!window.matchMedia(`(min-width: 1024px)`).matches&&s()},[n,s,E,e,o?.items]),O=(0,v.useCallback)(async t=>{if(!r.readChatMedia)return null;try{return dq(await r.readChatMedia(e,t.id))}catch(e){return E(`error`,`${t.name} could not be read: ${e instanceof Error?e.message:`unknown error`}`),null}},[r,E,e]),k=(0,v.useCallback)(async e=>{if(e.source===`path`&&e.path){await XR(e.path,E);return}let t=await O(e);t!==null&&await ez({name:e.name,mediaType:e.mediaType.split(`;`)[0]??e.mediaType,base64:t},E)},[E,O]),A=typeof window<`u`?window.oonacode:void 0,j=A?.showItemInFolder?e=>{e.path&&A.showItemInFolder?.(e.path).then(e=>{!e.ok&&e.message&&E(`error`,e.message)},()=>E(`error`,`The folder could not be opened.`))}:null,[M,N]=(0,v.useState)(null),ee=(0,v.useMemo)(()=>u.photo.items.filter(oq),[u.photo.items]),P=(0,v.useCallback)(async(e,t=ee)=>{let n=t[e];if(!n)return;let r=await O(n);r===null||!b.current||N({index:e,picture:{id:n.id,name:n.name,mediaType:n.mediaType,base64:r}})},[O,ee]),F=(0,v.useCallback)(()=>N(null),[]),I=M?{index:M.index,total:ee.length,onPrev:M.index>0?()=>void P(M.index-1):null,onNext:M.index<ee.length-1?()=>void P(M.index+1):null}:void 0,[te,ne]=(0,v.useState)(null),re=f?Object.values(f).reduce((e,t)=>e+t,0):null,L=u[c],R=f??Pm();return(0,K.jsxs)(`aside`,{className:`flex w-80 shrink-0 flex-col border-l border-border bg-surface`,"aria-label":`Media in this chat`,"data-testid":`media-panel`,children:[(0,K.jsxs)(`div`,{className:`flex h-9 shrink-0 items-center gap-2 border-b border-border px-3`,children:[(0,K.jsx)(Y.Gallery,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsxs)(`span`,{className:`flex-1 text-xs font-semibold uppercase tracking-wide text-fg-muted`,children:[`Media`,re===null?``:` · ${re}`]}),(0,K.jsx)(US,{label:`Hide media`,className:`p-1`,onClick:s,children:(0,K.jsx)(Y.X,{className:`w-3.5 h-3.5`})})]}),i?(0,K.jsx)(_q,{children:`This chat runs on another PC. Its pictures and files are on that PC — open the media explorer there.`}):a?(0,K.jsx)(_q,{children:`Nothing has been sent in this chat yet.`}):!x||m?(0,K.jsx)(_q,{children:`This PC's OonaCode does not list a chat's media yet — update it.`}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{role:`tablist`,"aria-label":`Kinds of media`,className:`flex shrink-0 gap-0.5 overflow-x-auto border-b border-border px-1.5 py-1`,onKeyDown:e=>{if(e.key!==`ArrowRight`&&e.key!==`ArrowLeft`)return;let t=nq[(nq.findIndex(e=>e.kind===c)+(e.key===`ArrowRight`?1:-1)+nq.length)%nq.length];l(t.kind),e.preventDefault(),requestAnimationFrame(()=>document.getElementById(`media-tab-${t.kind}`)?.focus())},children:nq.map(e=>(0,K.jsxs)(`button`,{id:`media-tab-${e.kind}`,type:`button`,role:`tab`,"aria-selected":c===e.kind,"aria-controls":`media-tabpanel`,tabIndex:c===e.kind?0:-1,onClick:()=>l(e.kind),"data-testid":`media-tab-${e.kind}`,className:G(`flex shrink-0 items-center gap-1 rounded-md px-2 py-1 text-xs`,c===e.kind?`bg-surface-2 font-semibold text-fg`:`text-fg-muted hover:bg-surface-2 hover:text-fg`),children:[e.label,(0,K.jsx)(`span`,{className:`rounded-full bg-surface-3 px-1.5 text-[10px] tabular-nums text-fg-muted`,"data-testid":`media-count-${e.kind}`,children:R[e.kind]})]},e.kind))}),(0,K.jsxs)(`div`,{id:`media-tabpanel`,role:`tabpanel`,"aria-labelledby":`media-tab-${c}`,className:`min-h-0 flex-1 overflow-y-auto px-2 py-2`,"data-testid":`media-tabpanel`,children:[L.error&&L.items.length===0?(0,K.jsx)(`div`,{className:`p-2 text-xs text-danger`,role:`alert`,children:L.error}):L.loaded&&L.items.length===0?(0,K.jsx)(`div`,{className:`p-4 text-center text-xs text-fg-faint`,"data-testid":`media-empty`,children:nq.find(e=>e.kind===c)?.empty}):c===`photo`||c===`video`?(0,K.jsx)(yq,{items:L.items,urlOf:g,onOpen:e=>{if(e.kind===`photo`){let t=ee.findIndex(t=>t.id===e.id);t>=0&&P(t)}else ne(e)},onShowInChat:D,onBroken:S}):(0,K.jsx)(`ul`,{className:`flex flex-col gap-1`,"data-testid":`media-list`,children:L.items.map(e=>(0,K.jsx)(Sq,{item:e,urlOf:g,onOpen:()=>e.kind===`link`&&e.url?XU(e.url):void k(e),onShowInFolder:j&&e.source===`path`&&e.exists!==!1?()=>j(e):null,onShowInChat:()=>D(e)},e.id))}),L.loading?(0,K.jsxs)(`div`,{className:`flex justify-center p-3 text-fg-faint`,"aria-live":`polite`,children:[(0,K.jsx)(Y.Spinner,{className:`w-4 h-4 animate-spin`}),(0,K.jsx)(`span`,{className:`sr-only`,children:`Loading…`})]}):L.nextBefore?(0,K.jsx)(vq,{onLoad:()=>void C(c,`more`)}):null]})]}),(0,K.jsx)(pz,{picture:M?.picture??null,onClose:F,notify:E,...I?{nav:I}:{}}),(0,K.jsx)(Cq,{item:te,src:te&&g?g(te.id):null,onClose:()=>ne(null),onOpen:te?()=>void k(te):null})]})}function _q({children:e}){return(0,K.jsx)(`div`,{className:`p-4 text-xs text-fg-faint`,"data-testid":`media-note`,children:e})}function vq({onLoad:e}){let t=(0,v.useRef)(null),n=(0,v.useRef)(e);return n.current=e,(0,v.useEffect)(()=>{let e=t.current;if(!e||typeof IntersectionObserver>`u`)return;let r=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&n.current()});return r.observe(e),()=>r.disconnect()},[]),(0,K.jsx)(`div`,{ref:t,className:`flex justify-center p-2`,children:(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:e,"data-testid":`media-load-more`,children:`Load more`})})}function yq({items:e,urlOf:t,onOpen:n,onShowInChat:r,onBroken:i}){let a=(0,v.useMemo)(()=>rq(e),[e]);return(0,K.jsx)(`div`,{className:`flex flex-col gap-3`,"data-testid":`media-grid`,children:a.map(e=>(0,K.jsxs)(`section`,{"aria-label":e.label,children:[(0,K.jsx)(`h3`,{className:`mb-1 px-0.5 text-[11px] font-semibold text-fg-faint`,children:e.label}),(0,K.jsx)(`div`,{className:`grid grid-cols-3 gap-1`,children:e.items.map(e=>(0,K.jsx)(bq,{item:e,src:t&&oq(e)?t(e.id):null,onOpen:()=>n(e),onShowInChat:()=>r(e),onBroken:i},e.id))})]},e.key))})}function bq({item:e,src:t,onOpen:n,onShowInChat:r,onBroken:i}){let a=sq(e),[o,s]=(0,v.useState)(!1),c=(0,v.useRef)(!1),l=`${e.name}${e.at?` — ${iq(e.at)}`:``}`;return(0,K.jsxs)(`div`,{className:`group relative aspect-square overflow-hidden rounded-md border border-border bg-surface-2`,"data-testid":`media-tile`,"data-media-id":e.id,children:[a?(0,K.jsxs)(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-1 p-1 text-center text-[10px] text-fg-faint`,title:l,"data-testid":`media-tile-unavailable`,children:[e.kind===`video`?(0,K.jsx)(Y.Film,{className:`w-5 h-5`}):(0,K.jsx)(Y.Image,{className:`w-5 h-5`}),a]}):(0,K.jsxs)(`button`,{type:`button`,onClick:n,title:l,"aria-label":`${e.kind===`video`?`Play`:`View`} ${l}`,className:`block h-full w-full focus:outline-none focus-visible:ring-2 focus-visible:ring-accent`,"data-testid":`media-tile-open`,children:[t&&!o?e.kind===`video`?(0,K.jsx)(`video`,{src:`${t}#t=0.1`,preload:`metadata`,muted:!0,className:`pointer-events-none h-full w-full object-cover`,onError:()=>s(!0)}):(0,K.jsx)(`img`,{src:t,alt:e.name,loading:`lazy`,draggable:!1,className:`h-full w-full object-cover`,onError:()=>{if(!c.current){c.current=!0,i();return}s(!0)}}):(0,K.jsx)(`span`,{className:`flex h-full w-full items-center justify-center text-fg-faint`,children:e.kind===`video`?(0,K.jsx)(Y.Film,{className:`w-5 h-5`}):(0,K.jsx)(Y.Image,{className:`w-5 h-5`})}),e.kind===`video`?(0,K.jsx)(`span`,{className:`pointer-events-none absolute inset-0 flex items-center justify-center`,children:(0,K.jsx)(`span`,{className:`rounded-full bg-black/55 p-2 text-white`,children:(0,K.jsx)(Y.Play,{className:`w-4 h-4`})})}):null]}),(0,K.jsx)(`button`,{type:`button`,onClick:r,title:`Show in chat`,"aria-label":`Show ${e.name} in chat`,className:`absolute bottom-1 right-1 rounded bg-black/55 p-1 text-white opacity-0 transition-opacity focus:opacity-100 group-hover:opacity-100`,"data-testid":`media-show-in-chat`,children:(0,K.jsx)(Y.Chats,{className:`w-3 h-3`})})]})}function xq(e){return e.kind===`link`?(0,K.jsx)(Y.Link,{className:`w-4 h-4`}):e.kind===`audio`?(0,K.jsx)(Y.Music,{className:`w-4 h-4`}):e.kind===`video`?(0,K.jsx)(Y.Film,{className:`w-4 h-4`}):e.kind===`photo`?(0,K.jsx)(Y.Image,{className:`w-4 h-4`}):(0,K.jsx)(Y.File,{className:`w-4 h-4`})}function Sq({item:e,urlOf:t,onOpen:n,onShowInFolder:r,onShowInChat:i}){let[a,o]=(0,v.useState)(!1),s=sq(e),c=e.kind===`link`,l=c&&e.url?lq(e.url):null,u=c?iq(e.at):aq(e),d=e.kind===`audio`&&!s&&t!==null;return(0,K.jsxs)(`li`,{className:`rounded-md border border-transparent px-1.5 py-1.5 hover:border-border hover:bg-surface-2`,"data-testid":`media-row`,"data-media-id":e.id,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[d?(0,K.jsx)(US,{label:a?`Hide the player for ${e.name}`:`Play ${e.name}`,className:`shrink-0 rounded-full bg-accent-soft p-1.5 text-accent`,onClick:()=>o(e=>!e),"aria-pressed":a,"data-testid":`media-play`,children:a?(0,K.jsx)(Y.Pause,{className:`w-3.5 h-3.5`}):(0,K.jsx)(Y.Play,{className:`w-3.5 h-3.5`})}):(0,K.jsx)(`span`,{className:`shrink-0 rounded-md bg-surface-3 p-1.5 text-fg-muted`,"aria-hidden":!0,children:xq(e)}),(0,K.jsxs)(`button`,{type:`button`,onClick:s?void 0:n,disabled:s!==null,title:s?`${e.name} — ${s.toLowerCase()}`:c?`Open ${e.url??``} in the browser`:e.path?`Open ${e.path}`:`Open ${e.name}`,className:`min-w-0 flex-1 text-left disabled:cursor-default`,"data-testid":`media-row-open`,children:[l?(0,K.jsxs)(`span`,{className:`block truncate text-xs`,children:[(0,K.jsx)(`span`,{className:`font-medium text-accent`,children:l.host}),(0,K.jsx)(`span`,{className:`text-fg-muted`,children:l.rest})]}):(0,K.jsx)(`span`,{className:`block truncate text-xs font-medium text-fg`,children:e.name}),(0,K.jsxs)(`span`,{className:`block truncate text-[11px] text-fg-faint`,children:[s?(0,K.jsx)(`span`,{className:`text-warn`,"data-testid":`media-unavailable`,children:s}):null,s&&u?` · `:``,u]})]}),r?(0,K.jsx)(US,{label:`Show in folder`,className:`shrink-0 p-1`,onClick:r,children:(0,K.jsx)(Y.Folder,{className:`w-3.5 h-3.5`})}):null,(0,K.jsx)(US,{label:`Show in chat`,className:`shrink-0 p-1`,onClick:i,"data-testid":`media-show-in-chat`,children:(0,K.jsx)(Y.Chats,{className:`w-3.5 h-3.5`})})]}),a&&d&&t?(0,K.jsx)(`audio`,{controls:!0,autoPlay:!0,preload:`none`,src:t(e.id),className:`mt-1.5 h-8 w-full`,"data-testid":`media-audio`}):null]})}function Cq({item:e,src:t,onClose:n,onOpen:r}){return(0,K.jsx)(JS,{open:e!==null,title:e?.name||`Video`,onClose:n,full:!0,children:e?(0,K.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-2`,"data-testid":`video-viewer`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs text-fg-faint`,children:aq(e)}),r?(0,K.jsx)(X,{size:`sm`,onClick:r,children:`Open externally`}):null]}),t?(0,K.jsx)(`video`,{src:t,controls:!0,autoPlay:!0,className:`min-h-0 w-full flex-1 rounded-md bg-black`,"data-testid":`video-viewer-player`}):(0,K.jsx)(`p`,{className:`text-xs text-fg-faint`,children:`This video cannot be played here.`})]}):null})}function wq(e){let t=e=>e.type===`dir`?0:1;return[...e].sort((e,n)=>t(e)-t(n)||e.name.localeCompare(n.name))}function Tq(e){let t=[];return e.target.type===`file`&&t.push({key:`open`,label:`Open`,icon:(0,K.jsx)(Y.File,{className:`w-3.5 h-3.5`}),onSelect:e.onOpen,testId:`files-menu-open`}),t.push({key:`copy-path`,label:`Copy path`,icon:(0,K.jsx)(Y.Copy,{className:`w-3.5 h-3.5`}),disabled:!e.canCopyPath,onSelect:e.onCopyPath,testId:`files-menu-copy-path`},{key:`copy-relative-path`,label:`Copy relative path`,icon:(0,K.jsx)(Y.Copy,{className:`w-3.5 h-3.5`}),onSelect:e.onCopyRelativePath,testId:`files-menu-copy-relative-path`}),!e.remote&&e.canDelete&&t.push({key:`delete`,label:`Delete…`,icon:(0,K.jsx)(Y.Trash,{className:`w-3.5 h-3.5`}),danger:!0,separated:!0,onSelect:e.onDelete,testId:`files-menu-delete`}),t}function Eq(e,t){return t instanceof $h&&t.status===404&&/^no route for /.test(t.message)?`This host is too old to delete files — update it from the title bar.`:`Could not delete ${GP(e.path)}: ${t instanceof Error?t.message:String(t)}`}function Dq(){let{state:e,dispatch:t,actions:n,api:r}=q(),i=jS(),a=AS(),o=i?.id??null,s=o?e.remote.tabs[o]!==void 0:!1,c=a?.status===`running`||a?.status===`waiting_permission`,l=o?e.files[o]?.active??null:null,u=e.info?.platform??null,d=i?.cwd??``,[f,p]=(0,v.useState)({}),[m,h]=(0,v.useState)(()=>new Set),[g,_]=(0,v.useState)(!1),y=(0,v.useRef)(f);y.current=f;let b=(0,v.useRef)(m);b.current=m;let x=(0,v.useRef)(o);x.current=o;let S=(0,v.useRef)(e.files);S.current=e.files;let[C,w]=(0,v.useState)(null),T=(0,v.useCallback)(()=>w(null),[]),E=(0,v.useCallback)((e,t,n)=>w({target:e,at:t,el:n}),[]),[D,O]=(0,v.useState)(null),[k,A]=(0,v.useState)(!1),j=(0,v.useCallback)(()=>O(null),[]),M=(0,v.useCallback)(async e=>{if(!o||!r.listSessionFiles)return;let t=o;p(t=>({...t,[e]:{...t[e]??{entries:null},loading:!0,error:null}}));try{let n=await r.listSessionFiles(t,e);if(x.current!==t)return;_(!1),p(t=>({...t,[e]:{entries:wq(n.entries),loading:!1,error:null}}))}catch(n){if(x.current!==t)return;rg(n)&&_(!0);let r=n instanceof Error?n.message:String(n);p(t=>({...t,[e]:{entries:t[e]?.entries??null,loading:!1,error:r}}))}},[r,o]);(0,v.useEffect)(()=>{p({}),h(new Set),_(!1),w(null),O(null),o&&!s&&M(``)},[o,s,M]);let N=(0,v.useRef)(c);(0,v.useEffect)(()=>{if(N.current&&!c&&o&&!s)for(let e of Object.keys(y.current))(e===``||b.current.has(e))&&M(e);N.current=c},[c,o,s,M]);let ee=e=>{h(t=>{let n=new Set(t);return n.has(e)?n.delete(e):(n.add(e),y.current[e]?.entries||M(e)),n})},P=()=>{if(o){M(``);for(let e of m)M(e)}},F=(e,t)=>{OI(e).then(e=>n.toast(e?`success`:`error`,e?t:`Could not copy to the clipboard`))},I=async()=>{let e=D,i=o;if(!(!e||!i||!r.deleteSessionFile)){A(!0);try{await r.deleteSessionFile(i,e.path);for(let n of S.current[i]?.open??[])JP(n,e.path)&&t({type:`file_close`,sessionId:i,path:n});x.current===i&&(h(t=>new Set([...t].filter(t=>!JP(t,e.path)))),p(t=>Object.fromEntries(Object.entries(t).filter(([t])=>!JP(t,e.path)))),M(qP(e.path))),n.toast(`success`,`Deleted ${GP(e.path)}`)}catch(t){n.toast(`error`,Eq(e,t)),x.current===i&&M(qP(e.path))}finally{A(!1),O(null)}}},te=C?Tq({target:C.target,remote:s,canDelete:typeof r.deleteSessionFile==`function`,canCopyPath:d!==``,onOpen:()=>n.openFile(C.target.path),onCopyPath:()=>F(ZP(d,C.target.path,u),`Path copied`),onCopyRelativePath:()=>F(XP(C.target.path,YP(d,u)),`Relative path copied`),onDelete:()=>O(C.target)}):[],ne=()=>void n.savePrefs({explorerOpen:!1}),re=i?.cwd?GP(i.cwd)||i.cwd:`Files`,L=f[``],R=C?.target.path??null,z=(0,v.useMemo)(()=>o?s?(0,K.jsx)(kq,{children:`This chat runs on another PC; its files can be browsed there.`}):g?(0,K.jsx)(kq,{children:`This host is too old to list files — update it from the title bar.`}):L?.error&&!L.entries?(0,K.jsx)(kq,{tone:`danger`,children:L.error}):L?.entries?L.entries.length===0?(0,K.jsx)(kq,{children:`The folder is empty.`}):(0,K.jsx)(`ul`,{role:`tree`,"aria-label":`Workspace files`,className:`py-1`,children:(0,K.jsx)(Mq,{rel:``,depth:0,tree:f,expanded:m,activeFile:l,menuPath:R,onToggle:ee,onOpen:e=>n.openFile(e),onMenu:E})}):(0,K.jsx)(kq,{children:`Listing…`}):(0,K.jsx)(kq,{children:`Open a chat to browse the folder it works in.`}),[o,s,g,L,f,m,l,R,n]);return(0,K.jsxs)(`aside`,{className:`flex w-64 shrink-0 flex-col border-r border-border bg-surface`,"aria-label":`Files`,"data-testid":`file-explorer`,children:[(0,K.jsxs)(`div`,{className:`flex h-9 shrink-0 items-center gap-2 border-b border-border px-3`,children:[(0,K.jsx)(Y.Folder,{className:`w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs font-semibold uppercase tracking-wide text-fg-muted`,title:i?.cwd??void 0,children:re}),(0,K.jsx)(US,{label:`Refresh files`,className:`p-1`,onClick:P,disabled:!o||s,"data-testid":`file-explorer-refresh`,children:(0,K.jsx)(Y.Refresh,{className:`w-3.5 h-3.5`})}),(0,K.jsx)(US,{label:`Hide files`,className:`p-1`,onClick:ne,children:(0,K.jsx)(Y.X,{className:`w-3.5 h-3.5`})})]}),(0,K.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:z}),(0,K.jsx)(iw,{open:C!==null,at:C?.at??{x:0,y:0},anchorEl:C?.el??null,label:`File actions`,testId:`files-context-menu`,onClose:T,items:te}),(0,K.jsx)(Oq,{target:D,absolute:D?d?ZP(d,D.path,u):D.path:``,platform:u,busy:k,onConfirm:()=>void I(),onClose:j})]})}function Oq({target:e,absolute:t,platform:n,busy:r,onConfirm:i,onClose:a}){let o=e?.type===`dir`;return(0,K.jsx)(JS,{open:e!==null,title:o?`Delete this folder?`:`Delete this file?`,onClose:a,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(X,{onClick:a,disabled:r,"data-testid":`files-delete-cancel`,children:`Cancel`}),(0,K.jsx)(X,{variant:`danger`,busy:r,onClick:i,"data-testid":`files-delete-confirm`,children:`Delete permanently`})]}),children:(0,K.jsxs)(`div`,{className:`space-y-2 text-sm text-fg-muted`,"data-testid":`files-delete-dialog`,children:[(0,K.jsx)(`p`,{className:`break-all rounded bg-surface-2 px-2 py-1 font-mono text-xs text-fg`,children:t}),(0,K.jsxs)(`p`,{children:[o?`This folder and everything inside it will be deleted from the disk permanently.`:`This file will be deleted from the disk permanently.`,` `,`It does not go to the `,n===`win32`?`Recycle Bin`:`Trash`,`, and it cannot be undone.`]})]})})}function kq({children:e,tone:t}){return(0,K.jsx)(`div`,{className:G(`p-4 text-xs`,t===`danger`?`text-danger`:`text-fg-faint`),children:e})}function Aq(e){let t=e.getBoundingClientRect();return{x:t.left+24,y:t.bottom}}function jq(e,t){return{onContextMenu:n=>{n.preventDefault();let r=n.currentTarget;t(e,n.clientX===0&&n.clientY===0?Aq(r):{x:n.clientX,y:n.clientY},r)},onKeyDown:n=>{(n.key===`ContextMenu`||n.shiftKey&&n.key===`F10`)&&(n.preventDefault(),t(e,Aq(n.currentTarget),n.currentTarget))}}}function Mq({rel:e,depth:t,tree:n,expanded:r,activeFile:i,menuPath:a,onToggle:o,onOpen:s,onMenu:c}){let l=n[e];return l?l.error&&!l.entries?(0,K.jsx)(`li`,{className:`px-2 py-1 text-[11px] text-danger`,style:{paddingLeft:`${.5+t*.75}rem`},children:l.error}):l.entries?(0,K.jsx)(K.Fragment,{children:l.entries.map(l=>{let u=KP(e,l.name),d=a===u;if(l.type===`dir`){let e=r.has(u);return(0,K.jsxs)(`li`,{role:`treeitem`,"aria-expanded":e,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>o(u),...jq({path:u,type:`dir`},c),"data-testid":`explorer-dir-${u}`,className:G(`flex w-full items-center gap-1 py-0.5 pr-2 text-left text-xs text-fg hover:bg-surface-2`,d&&`bg-surface-2`),style:{paddingLeft:`${.5+t*.75}rem`},children:[(0,K.jsx)(Y.ChevronRight,{className:G(`w-3 h-3 shrink-0 text-fg-faint transition-transform`,e&&`rotate-90`)}),(0,K.jsx)(Y.Folder,{className:`w-3.5 h-3.5 shrink-0 text-fg-faint`}),(0,K.jsx)(`span`,{className:`truncate`,children:l.name})]}),e?(0,K.jsx)(`ul`,{role:`group`,children:(0,K.jsx)(Mq,{rel:u,depth:t+1,tree:n,expanded:r,activeFile:i,menuPath:a,onToggle:o,onOpen:s,onMenu:c})}):null]},u)}let f=i===u;return(0,K.jsx)(`li`,{role:`treeitem`,"aria-selected":f,children:(0,K.jsxs)(`button`,{type:`button`,onClick:()=>s(u),...jq({path:u,type:l.type},c),disabled:l.type!==`file`,"data-testid":`explorer-file-${u}`,title:`${u} · ${gF(l.size)}`,className:G(`flex w-full items-center gap-1 py-0.5 pr-2 text-left text-xs hover:bg-surface-2 disabled:opacity-50`,f?`bg-accent-soft text-accent`:d?`bg-surface-2 text-fg`:`text-fg`),style:{paddingLeft:`${.5+t*.75+.9}rem`},children:[(0,K.jsx)(Y.File,{className:`w-3.5 h-3.5 shrink-0 text-fg-faint`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:l.name}),(0,K.jsx)(`span`,{className:`shrink-0 text-[10px] text-fg-faint`,children:gF(l.size)})]})},u)})}):(0,K.jsx)(`li`,{className:`px-2 py-1 text-[11px] text-fg-faint`,style:{paddingLeft:`${.5+t*.75}rem`},children:`Listing…`}):null}var Nq={autoAccept:{hint:`Allow every tool the agent wants to use, without asking you. Off by default.`,details:[`Answered by this PC itself, so it covers EVERY chat running here — started in this app, the oona terminal, your phone, Telegram, the website or another PC.`,`The agent’s questions to you (its multiple-choice cards) still wait for your answer.`,`A chat set to Ask first in the composer still asks you before each tool — that is what Ask first means.`,`Subagents never ask: their tool requests are always allowed.`,`Takes effect at the next tool request, even in a chat that is already working.`,`What a chat may attempt at all is still its own Build / Plan / Ask first / Autonomous choice in the composer; this only answers the prompts it would have shown you.`]},reasoning:{hint:`Show the model’s thinking between its messages.`,details:[`Display only — the model thinks the same either way.`,`Hidden thinking is also left out of chat search (Ctrl+F).`,`For the windows this PC serves (this app, the local web UI). The phone has its own switch.`]},colourScheme:{hint:`System follows your desktop’s light or dark setting.`,details:[`Also colours this window’s title bar and menu.`,`Your own colours per element are under Theme.`]},notifications:{hint:`Desktop notifications from this app while its window is not in front.`,details:[`Nothing pops up while you are looking at the window.`,`Your phone’s push notifications are separate: the phone buzzes only while no window on this PC is open.`]},notifyFinished:{hint:`When a chat’s turn ends — finished, or failed.`,details:[`Named after the chat; clicking the notification opens it.`]},notifyWaiting:{hint:`When a chat waits for you: a permission, or one of the agent’s questions.`,details:[`With auto-accept on, only the agent’s questions still wait for you, so only they notify.`]},notifyError:{hint:`When a chat stops on an error.`,details:[`The error itself is also written into the chat.`]},transcriptWindow:{hint:`How many messages and tool cards of a chat stay drawn; older ones leave the top like a stack and come back when you scroll up.`,details:[`Only what is DRAWN: the whole chat is still kept, and still searched.`,`Smaller is faster on long agentic chats; larger keeps more on screen.`]},defaultCwd:{hint:`The folder a new chat runs in when it is not given one. Empty: each chat gets its own private folder.`,details:[`A folder here becomes each new chat’s project: its CLAUDE.md, .claude settings, hooks and skills load. Your home folder and drive roots never load as a project.`,`Empty is the safe default: the agent then works only inside that chat’s own folder under OonaCode’s data directory.`,`Used by chats started in this app. A project’s own folder (Projects → New chats) wins over it; the oona terminal always uses the folder you run it in.`]},remoteAccess:{hint:`Let your phone, Telegram, the website and your other PCs reach this PC.`,details:[`This PC keeps one outbound, end-to-end encrypted channel to your OonaCode server; every other device reaches it through that channel alone.`,`It is also how they read this PC’s chats: the chats are kept only here, never on our server, so they can be read while this PC is on and reachable.`,`Off: they still see this PC online, marked “remote access off”, and cannot list or open its chats, send prompts, unlock it remotely or delete its chats. This PC also cannot open chats on your other PCs.`,`Takes effect immediately.`]},imageRetention:{hint:`Pictures in this PC’s chat history older than this are replaced with a short note. 0 keeps them forever. Default: a year.`,details:[`Replaced: the pictures stored in this PC’s chats — screenshots and other pictures a tool returned, and pictures you pasted into a message — once they are older than this.`,`Each becomes a one-line note saying a picture was there, why and when it went, e.g. “[Picture removed after 365 days to save space — picture from a tool (PNG), 412 KB]”.`,`Not affected: the words of every chat, and the files on your disk. The chat continues normally — the model no longer needs pictures that old.`,`Runs by itself: a few minutes after this PC’s OonaCode starts, then once a day, in small steps that never hold up a chat. A chat that is working, or was in the last hour, is done at the next run.`,`The database file stops growing from pictures; it does not shrink. The space is reused for new chats.`,`Only this PC holds its chats, so this is every copy there is.`]},chatAbout:{hint:`A short note per chat saying what it works on, which your other chats read through “Talk to other chats”. On by default.`,details:[`Written in the background by each chat’s housekeeper — the cheap helper model of the chat’s own provider — after a turn ends, only when the chat changed since, and at most once per interval below.`,`The same switch covers Regenerate (in a chat’s session info) and “Generate for all chats now” (View → What chats are about…). Off stops all three, so nothing is spent on abouts.`,`Paid by the chat’s own route: an OonaCode pool chat spends credits, your own API key is billed by your provider, and your own subscription’s plan covers it.`,`An about is part of its chat and stays on this PC: it is never uploaded to our server, and your other devices read it from this PC, like the chat.`]},chatAboutInterval:{hint:`At most one background about per chat in this many minutes.`,details:[`Only the background job waits for it: Regenerate and “Generate for all chats now” write at once.`,`A background about is written only after a turn ends and only when the chat changed, so a chat nobody uses costs nothing, whatever this says.`,`Shorter keeps abouts fresher and makes more calls.`]},chatAboutMaxWords:{hint:`The longest about the housekeeper may write.`,details:[`A longer answer is cut at this many words.`,`Applies to every about the housekeeper writes: in the background, by Regenerate and by “Generate for all chats now”. An about you write yourself may be longer (up to 2,000 characters).`,`A longer about costs a few more output tokens, and a chat that lists your chats reads every one of them.`]},chatAboutInputChars:{hint:`How much of a chat the housekeeper reads to write its about.`,details:[`Taken from the chat’s title, project and folder, its previous about, your first message, the newest summary of the earlier conversation, your latest messages and the agent’s last answer — each with a share, so no part crowds out the others.`,`Applies to the background job, Regenerate and “Generate for all chats now”.`,`Most of what a call costs: roughly a quarter as many tokens as characters. More gives a better-informed about and costs more.`]},safeguardFallback:{hint:`When a model refuses a message on content or safety grounds, run that one message once more on another model. On by default.`,details:[`Decided by this PC itself, for EVERY chat running here — started in this app, the oona terminal, your phone, Telegram, the website or another PC.`,`Only that message is sent to the other model; the chat stays on the model you picked. The refusal and the retry are both written into the chat, and the turn line says what happened.`,`Switch automatically: the best other model your chat’s route can serve — a Claude chat tries other Claude models first. Always switch to: the model you choose, every time. Never: the refusal is shown and nothing is retried.`,`OonaCode pool: the model that answers is charged at its own price. Your own key or subscription never switches to another provider — only to another model of the same one.`,`A fallback you set for one model (below) beats this choice, and a chat’s own --fallback-model (terminal, agent API) beats both.`,`Limit: Claude Code’s own engine still moves Opus 5, Opus 5.5 and Fable chats to Opus 4.8 by itself when their safeguards refuse — it cannot be switched off.`,`One retry only: if the second model refuses too, the chat says so and stops.`]},safeguardPerModel:{hint:`Pick the fallback for one model. It beats the choice above for that model only; “Never fall back” stops a model from being retried.`,details:[`Applies when the refused model is the one you name here, in any chat on this PC, however it was started.`,`A model you use through your own key or subscription can only fall back to a model of the same provider; an OonaCode pool model can fall back to any pool model.`,`Up to 64 models. A chat’s own --fallback-model still beats this table.`,`Charged by the model that answers: pool credits at its price, or your own key or plan.`]},keepUnlocked:{hint:`Leave your vault unlocked when you close or quit the app.`,details:[`Off (default): closing the window — to the tray too — or quitting stops the chats that are running and locks this PC until you unlock it. Your phone and other devices cannot use it meanwhile.`,`On: chats keep running and your other devices keep working after the window is closed. Choose it on a PC only you use.`]},server:{hint:`Your account’s OonaCode server.`,details:[`Where your account lives: sign-in, OonaCode-pool models and credits, your encrypted vault, remote access, and app updates.`,`Your own API keys and subscriptions never go through it — this PC calls those providers directly.`,`Set by signing in. (Developers point a build at another server with OONACODE_GATEWAY_URL.)`]},diagnostics:{hint:`While you are signed in, this PC sends OonaCode its warnings and errors, and a short report of any turn that fails.`,details:[`A report names the error, the model and the provider — never the content of your chats.`,`It is how bugs you never reported get fixed. There is no usage tracking.`]},allowDebugging:{hint:`Let a debugger attach to this app’s windows, to see and control them while fixing a bug. Off by default. Takes effect when OonaCode restarts.`,details:[`For finding bugs together: DevTools (chrome://inspect), Playwright or another Chrome DevTools Protocol client attaches to every window of this app — reads what it shows, clicks, types and runs code in it.`,`The risk: while it is on, ANY program on this PC can do the same — read your chats on screen and act as you in OonaCode, with no prompt. Turn it on only while you need it.`,`Only on this PC: the port is opened on 127.0.0.1, never on the network, and web pages in your browser cannot connect to it.`,`Desktop app only, this PC only: the local web UI in a browser, the phone, Telegram and your other PCs are not affected.`,`Read when the app starts, so a change applies at the next start (Restart now). The host service and your chats keep running through the restart.`,`While it is on, every window shows a red “Debugging on” badge and says so in its title.`]},debugPort:{hint:`The port on 127.0.0.1 a debugger connects to.`,details:[`Connect with http://127.0.0.1:<port> — e.g. chrome://inspect → Configure… → localhost:<port>, or Playwright’s connectOverCDP.`,`A port another program already uses is refused when you save.`,`With “Also debug the main process”, the next port is taken too.`]},debugMainProcess:{hint:`Also open Node’s inspector for the app’s main process, on the next port.`,details:[`For bugs in the desktop shell itself (windows, menus, updates, the tray), not in a window’s page.`,`Gives full control of the main process — it can run any program as you. Off unless you choose it.`,`Applies only while “Allow debugging” is on, at the next start.`]}};function Pq(e){if(!Oc(e))return`Off in this run: no debugging port is open.`;let t=[];return e.port!==null&&t.push(e.listening?`On in this run: windows on 127.0.0.1:${e.port}${e.fromCommandLine?` (from the command line)`:``}.`:`Port ${e.port} could not be opened — another program may be using it.`),e.inspectPort!==null&&t.push(e.inspectProblem?`Main-process inspector: ${e.inspectProblem}`:`Main process on 127.0.0.1:${e.inspectPort}.`),t.join(` `)}function Fq(e){return kc(e.saved,e.running)}function Iq(e){return`Debugging is on: ${Ac(e)}. While it is on, any program on this PC can read and control OonaCode. Click to change it in Settings → Developer.`}function Lq({providerId:e,configured:t}){let{api:n,state:r,actions:i}=q(),[a,o]=(0,v.useState)(null);return(0,v.useEffect)(()=>{if(t||!n.getAgyStatus)return;let e=!0;return n.getAgyStatus().then(t=>{e&&o({state:t.state,install:t.install})},()=>{e&&o(null)}),()=>{e=!1}},[n,t,r.providers]),(0,K.jsx)(X,{size:`sm`,variant:t?`secondary`:`primary`,onClick:()=>i.openProviderConnect(e),"data-testid":`agy-provider-button`,children:AG(t,a)})}function Rq(e,t){return t.get(e.providerId)??e.providerId}function zq(e,t,n){let r=Ip(t);if(!r)return[];let i=e.find(e=>e.models.some(e=>e.value===t)),a=sl(r.modelId);return(ll(r.providerId)?e.filter(e=>ll(e.providerId)):e.filter(e=>!ll(e.providerId)&&Rq(e,n)===(i?Rq(i,n):r.providerId))).map(e=>({...e,models:e.models.filter(e=>sl(e.modelId)!==a)})).filter(e=>e.models.length>0)}function Bq({groups:e}){return(0,K.jsx)(K.Fragment,{children:e.map(e=>(0,K.jsx)(`optgroup`,{label:e.label,children:e.models.map(e=>(0,K.jsx)(`option`,{value:e.value,children:e.label},e.value))},`${e.providerId}:${e.variantId??``}`))})}var Vq=[{mode:`auto`,label:`Switch to another model automatically`,hint:`The best other model this chat can use. A Claude chat tries other Claude models first.`},{mode:`model`,label:`Always switch to:`,hint:`The model you choose, every time a model refuses.`},{mode:`off`,label:`Never — show the refusal`,hint:`Nothing is retried; the chat shows the refusal and where to change this.`}];function Hq(){let{state:e,actions:t}=q(),n=cl(e.prefs.safeguardFallback),r=(0,v.useMemo)(()=>Vp(e.providers),[e.providers]),i=(0,v.useMemo)(()=>new Map(e.providers.map(e=>[e.definition.id,e.definition.clientGroup??e.definition.id])),[e.providers]),a=(0,v.useMemo)(()=>r.flatMap(e=>e.models.map(e=>({id:e.modelId,displayName:e.label}))),[r]),o=e=>dl(e,a),[s,c]=(0,v.useState)(!1),l=s?`model`:n.mode,u=e=>void t.savePrefs({safeguardFallback:cl(e)}),d=e=>{if(e===`model`){c(!0);return}c(!1),u({...n,mode:e,model:null})},f=(e=>e?r.flatMap(e=>e.models).find(t=>sl(t.modelId)===sl(e)):void 0)(n.model),[p,m]=(0,v.useState)(``),[h,g]=(0,v.useState)(``),_=(0,v.useMemo)(()=>p?zq(r,p,i):[],[r,p,i]),y=Object.entries(n.perModel),b=y.length>=64,x=p!==``&&h!==``&&(h===`none`||_.some(e=>e.models.some(e=>e.value===h))),S=()=>{let e=Ip(p);if(!e||!x)return;let t=h===`none`?il:Ip(h)?.modelId??``;if(!t)return;let r=sl(e.modelId);b&&n.perModel[r]===void 0||(u({...n,perModel:{...n.perModel,[r]:t}}),m(``),g(``))},C=e=>{let t={...n.perModel};delete t[e],u({...n,perModel:t})};return(0,K.jsxs)(`div`,{className:`space-y-4`,"data-testid":`settings-safeguards`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-sm font-medium text-fg`,children:[(0,K.jsx)(Y.Shield,{className:`w-3.5 h-3.5`}),` When a model refuses a message`,(0,K.jsx)(WS,{label:`When a model refuses a message`,details:(0,K.jsx)(GS,{items:Nq.safeguardFallback.details})})]}),(0,K.jsx)(`p`,{className:`text-xs text-fg-faint`,children:Nq.safeguardFallback.hint}),(0,K.jsx)(`p`,{className:`mt-1 text-xs text-fg-faint`,children:`On the OonaCode pool, the model that answers is charged at its own price. Your own key or subscription never switches to another provider.`}),(0,K.jsx)(`div`,{role:`radiogroup`,"aria-label":`When a model refuses a message`,className:`mt-2 space-y-1`,children:Vq.map(e=>(0,K.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2 rounded-md px-1 py-1.5 hover:bg-surface-2`,children:[(0,K.jsx)(`input`,{type:`radio`,name:`safeguard-mode`,className:`mt-1`,checked:l===e.mode,onChange:()=>d(e.mode),"data-testid":`safeguard-mode-${e.mode}`}),(0,K.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:e.label}),(0,K.jsx)(`span`,{className:`block text-xs text-fg-faint`,children:e.hint}),e.mode===`model`?(0,K.jsxs)(`select`,{className:G(Z,`mt-1.5 max-w-sm`),"aria-label":`Always switch to`,value:f?.value??``,disabled:l!==`model`,onChange:e=>{let t=Ip(e.target.value);t&&(c(!1),u({...n,mode:`model`,model:t.modelId}))},"data-testid":`safeguard-model-select`,children:[(0,K.jsx)(`option`,{value:``,children:n.model&&!f?`${o(n.model)} (not listed)`:`Choose a model…`}),(0,K.jsx)(Bq,{groups:r})]}):null]})]},e.mode))}),(0,K.jsx)(`p`,{className:`mt-2 rounded-md bg-surface-2 px-2.5 py-1.5 text-xs text-fg-muted`,children:`Claude Code’s own engine still moves Opus 5, Opus 5.5 and Fable chats to Opus 4.8 by itself when their safeguards refuse — that cannot be switched off.`})]}),(0,K.jsxs)(`div`,{className:`border-t border-border pt-3`,"data-testid":`safeguard-per-model`,children:[(0,K.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-sm font-medium text-fg`,children:[`Fallback per model`,(0,K.jsx)(WS,{label:`Fallback per model`,details:(0,K.jsx)(GS,{items:Nq.safeguardPerModel.details})})]}),(0,K.jsx)(`p`,{className:`text-xs text-fg-faint`,children:Nq.safeguardPerModel.hint}),y.length>0?(0,K.jsxs)(`table`,{className:`mt-2 w-full text-xs`,"data-testid":`safeguard-table`,children:[(0,K.jsx)(`thead`,{children:(0,K.jsxs)(`tr`,{className:`text-left text-fg-faint`,children:[(0,K.jsx)(`th`,{className:`py-1 pr-2 font-medium`,children:`Refused model`}),(0,K.jsx)(`th`,{className:`py-1 pr-2 font-medium`,children:`Fallback`}),(0,K.jsx)(`th`,{className:`w-8`})]})}),(0,K.jsx)(`tbody`,{children:y.map(([e,t])=>(0,K.jsxs)(`tr`,{className:`border-t border-border`,"data-testid":`safeguard-row-${e}`,children:[(0,K.jsx)(`td`,{className:`py-1.5 pr-2 text-fg`,children:o(e)}),(0,K.jsx)(`td`,{className:`py-1.5 pr-2 text-fg-muted`,children:t===`none`?`Never`:o(t)}),(0,K.jsx)(`td`,{className:`py-1.5 text-right`,children:(0,K.jsx)(US,{label:`Remove the fallback for ${o(e)}`,className:`p-0.5`,onClick:()=>C(e),"data-testid":`safeguard-remove-${e}`,children:(0,K.jsx)(Y.Trash,{className:`w-3 h-3`})})})]},e))})]}):(0,K.jsx)(`p`,{className:`mt-2 text-xs text-fg-muted`,"data-testid":`safeguard-table-empty`,children:`No per-model fallbacks — every model follows the choice above.`}),(0,K.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-end gap-2`,children:[(0,K.jsxs)(`label`,{className:`flex min-w-0 flex-col gap-1 text-xs text-fg-muted`,children:[`When this model refuses`,(0,K.jsxs)(`select`,{className:G(Z,`max-w-56`),value:p,onChange:e=>{m(e.target.value),g(``)},"data-testid":`safeguard-add-refused`,children:[(0,K.jsx)(`option`,{value:``,children:`Choose a model…`}),(0,K.jsx)(Bq,{groups:r})]})]}),(0,K.jsxs)(`label`,{className:`flex min-w-0 flex-col gap-1 text-xs text-fg-muted`,children:[`Use`,(0,K.jsxs)(`select`,{className:G(Z,`max-w-56`),value:h,disabled:p===``,onChange:e=>g(e.target.value),"data-testid":`safeguard-add-fallback`,children:[(0,K.jsx)(`option`,{value:``,children:`Choose a fallback…`}),(0,K.jsx)(`option`,{value:il,children:`Never fall back`}),(0,K.jsx)(Bq,{groups:_})]})]}),(0,K.jsxs)(X,{size:`sm`,variant:`primary`,disabled:!x||b&&n.perModel[sl(Ip(p)?.modelId??``)]===void 0,onClick:S,"data-testid":`safeguard-add`,children:[(0,K.jsx)(Y.Plus,{className:`w-3 h-3`}),` Add`]})]}),b?(0,K.jsxs)(`p`,{className:`mt-1 text-xs text-warn`,children:[`The table is full (`,64,` models). Remove one to add another.`]}):null,r.length===0?(0,K.jsx)(`p`,{className:`mt-1 text-xs text-fg-faint`,children:`No models are listed on this PC yet — connect a provider first.`}):null]})]})}function Uq(){let{actions:e}=q(),[t,n]=(0,v.useState)(void 0),[r,i]=(0,v.useState)(!1),[a,o]=(0,v.useState)(null),s=(0,v.useCallback)(async()=>{n(await e.listSkills())},[e]);return(0,v.useEffect)(()=>{s()},[s]),t===`unsupported`?(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,children:`This PC’s OonaCode is older than skills — update it to manage them here.`}):r?(0,K.jsx)(Wq,{onDone:()=>{i(!1),gB(),YI(),s()}}):(0,K.jsxs)(`div`,{className:`space-y-3`,"data-testid":`skills-section`,children:[(0,K.jsxs)(`p`,{className:`text-xs text-fg-muted`,children:[`Skills every chat on this PC gets — type `,(0,K.jsx)(`span`,{className:`font-mono`,children:`/`}),` in the message box to use one for that message. They work with every model. A change applies from a chat’s next start (a new chat, or one idle for ten minutes).`]}),(0,K.jsxs)(`p`,{className:`text-xs text-fg-muted`,"data-testid":`skills-per-chat-note`,children:[`The model is not shown them on its own: each chat chooses which skills the model may use by itself, in the `,(0,K.jsx)(`span`,{className:`font-medium`,children:`Skills`}),` menu under its message box — only those cost tokens on every message of that chat.`]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsxs)(X,{size:`sm`,onClick:()=>i(!0),"data-testid":`skills-import-open`,children:[(0,K.jsx)(Y.Download,{className:`h-3.5 w-3.5`}),` Import from Claude Code…`]}),t?(0,K.jsx)(`span`,{className:`truncate text-[11px] text-fg-faint`,title:t.dir,children:t.dir}):null]}),t===void 0?(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,children:`Loading…`}):t===null?(0,K.jsx)(`p`,{className:`text-xs text-danger`,children:`The host could not list the skills right now.`}):t.skills.length===0?(0,K.jsxs)(`p`,{className:`text-xs text-fg-muted`,"data-testid":`skills-empty`,children:[`No skills of your own yet. Import them from Claude Code, or put a folder with a`,` `,(0,K.jsx)(`span`,{className:`font-mono`,children:`SKILL.md`}),` in the folder above.`]}):(0,K.jsx)(`ul`,{className:`divide-y divide-border rounded-md border border-border`,children:t.skills.map(t=>(0,K.jsxs)(`li`,{className:`flex items-start gap-3 px-3 py-2 text-sm`,"data-testid":`skill-row`,"data-name":t.name,children:[(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,K.jsxs)(`span`,{className:`font-mono font-medium`,children:[`/`,t.name]}),t.argumentHint?(0,K.jsx)(`span`,{className:`font-mono text-xs text-fg-faint`,children:t.argumentHint}):null,t.broken?(0,K.jsx)(Q,{tone:`warn`,children:`no SKILL.md`}):null]}),t.description?(0,K.jsx)(`div`,{className:`line-clamp-2 text-xs text-fg-muted`,title:t.description,children:t.description}):null,(0,K.jsxs)(`div`,{className:`text-[11px] text-fg-faint`,children:[gF(t.bytes),` · `,t.files,` file`,t.files===1?``:`s`,t.importedFrom?(0,K.jsxs)(K.Fragment,{children:[` `,`· imported `,t.importedAt?W_(t.importedAt):``,` from`,` `,(0,K.jsx)(`span`,{title:t.importedFrom,children:t.importedFrom})]}):null]})]}),(0,K.jsxs)(X,{size:`sm`,variant:`ghost`,busy:a===t.name,"aria-label":`Remove ${t.name}`,onClick:async()=>{o(t.name);let n=await e.removeSkill(t.name);o(null),n&&(gB(),YI(),await s())},"data-testid":`skill-remove`,children:[(0,K.jsx)(Y.Trash,{className:`h-3.5 w-3.5`}),` Remove`]})]},t.name))})]})}function Wq({onDone:e}){let{actions:t}=q(),[n,r]=(0,v.useState)(void 0),[i,a]=(0,v.useState)(()=>new Set),[o,s]=(0,v.useState)(!1),[c,l]=(0,v.useState)(!1),[u,d]=(0,v.useState)(null);(0,v.useEffect)(()=>{let e=!0;return t.scanClaudeSkills().then(t=>{e&&r(t)}),()=>{e=!1}},[t]);let f=(0,v.useMemo)(()=>{let e=new Map;for(let t of n?.skills??[]){let n=t.origin===`plugin`?`Plugin: ${t.plugin??`?`}`:`Your skills`;e.set(n,[...e.get(n)??[],t])}return[...e.entries()]},[n]),p=e=>a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n});return(0,K.jsxs)(`div`,{className:`space-y-3`,"data-testid":`skills-import`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:e,children:`← Back`}),(0,K.jsx)(`span`,{className:`text-sm font-medium`,children:`Import skills from Claude Code`})]}),(0,K.jsxs)(`p`,{className:`text-xs text-fg-muted`,children:[`Tick the skills to copy into OonaCode. Your Claude Code install is only read — nothing in it is changed.`,n?.roots.length?(0,K.jsxs)(K.Fragment,{children:[` `,`Read from `,(0,K.jsx)(`span`,{className:`font-mono`,children:n.roots.join(`, `)}),`.`]}):null]}),n===void 0?(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,children:`Looking…`}):n===null?(0,K.jsx)(`p`,{className:`text-xs text-danger`,children:`The host could not read Claude Code’s skills.`}):n.skills.length===0?(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,"data-testid":`skills-import-empty`,children:`No skills found in Claude Code on this PC.`}):f.map(([e,t])=>(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`mb-1 text-[11px] font-medium uppercase tracking-wide text-fg-faint`,children:e}),(0,K.jsx)(`ul`,{className:`divide-y divide-border rounded-md border border-border`,children:t.map(e=>{let t=!!e.unavailable||e.alreadyInOonaCode&&!o;return(0,K.jsx)(`li`,{className:`px-3 py-1.5 text-sm`,children:(0,K.jsxs)(`label`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(`input`,{type:`checkbox`,className:`mt-1`,checked:i.has(e.key)&&!t,disabled:t,onChange:()=>p(e.key),"data-testid":`skills-import-pick`,"data-name":e.name}),(0,K.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`span`,{className:`font-mono font-medium`,children:[`/`,e.name]}),` `,e.alreadyInOonaCode?(0,K.jsx)(Q,{children:`already in OonaCode`}):null,` `,e.unavailable?(0,K.jsx)(Q,{tone:`warn`,children:e.unavailable}):null,e.description?(0,K.jsx)(`span`,{className:`line-clamp-2 block text-xs text-fg-muted`,children:e.description}):null,e.note?(0,K.jsx)(`span`,{className:`block text-[11px] text-warn`,children:e.note}):null,(0,K.jsxs)(`span`,{className:`block text-[11px] text-fg-faint`,children:[gF(e.bytes),` · `,e.path]})]})]})},e.key)})})]},e)),n&&n.skills.some(e=>e.alreadyInOonaCode)?(0,K.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-fg-muted`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:o,onChange:e=>s(e.target.checked)}),`Replace the ones already in OonaCode`]}):null,u?(0,K.jsx)(`p`,{className:`text-xs text-fg-muted`,role:`status`,"data-testid":`skills-import-outcome`,children:u}):null,(0,K.jsxs)(`div`,{className:`flex gap-2`,children:[(0,K.jsxs)(X,{variant:`primary`,size:`sm`,busy:c,disabled:i.size===0,"data-testid":`skills-import-go`,onClick:async()=>{l(!0);let n=await t.importClaudeSkills([...i],o);if(l(!1),!n)return;let r=n.skipped.map(e=>`${e.name||e.key}: ${e.reason}`);d(`Imported ${n.imported.length}`+(r.length>0?` · skipped ${r.join(`; `)}`:``)),n.skipped.length===0&&e()},children:[`Import `,i.size>0?i.size:``]}),(0,K.jsx)(X,{size:`sm`,onClick:e,children:`Cancel`})]})]})}function Gq({open:e,onClose:t,editingServer:n}){let{actions:r}=q(),[i,a]=(0,v.useState)(``),[o,s]=(0,v.useState)(`all`),[c,l]=(0,v.useState)(null),[u,d]=(0,v.useState)(!1),[f,p]=(0,v.useState)(``),[m,h]=(0,v.useState)(``),[g,_]=(0,v.useState)(``),[y,b]=(0,v.useState)(`stdio`),[x,S]=(0,v.useState)(`npx`),[C,w]=(0,v.useState)(``),[T,E]=(0,v.useState)(``),[D,O]=(0,v.useState)(``),[k,A]=(0,v.useState)(``),[j,M]=(0,v.useState)(!1),[N,ee]=(0,v.useState)({}),[P,F]=(0,v.useState)(!1),[I,te]=(0,v.useState)(null),[ne,re]=(0,v.useState)(!1),[L,R]=(0,v.useState)(null),[z,B]=(0,v.useState)(null);n&&n.id!==z&&(B(n.id),d(!0),l(null),p(n.id),h(n.name),_(n.description??``),b(n.transport),S(n.command??`npx`),w((n.args??[]).join(` `)),E(Object.entries(n.env??{}).map(([e,t])=>`${e}=${t}`).join(`
|
|
168
|
+
`)),O(n.url??``),A(Object.entries(n.headers??{}).map(([e,t])=>`${e}: ${t}`).join(`
|
|
169
|
+
`)),M(n.defaultOn),te(null));let ie=()=>{l(null),d(!1),B(null),p(``),h(``),_(``),b(`stdio`),S(`npx`),w(``),E(``),O(``),A(``),M(!1),ee({}),te(null),R(null)},ae=()=>{ie(),t()},oe=e=>{l(e),d(!1),p(e.id),h(e.name),_(e.description),b(e.transport),S(e.defaultCommand??`npx`),w((e.defaultArgs??[]).join(` `)),E(Object.entries(e.defaultEnv??{}).map(([e,t])=>`${e}=${t}`).join(`
|
|
170
|
+
`)),O(e.defaultUrl??``),A(Object.entries(e.defaultHeaders??{}).map(([e,t])=>`${e}: ${t}`).join(`
|
|
171
|
+
`)),M(!1),ee({}),te(null),R(null)},se=()=>{d(!0),l(null),p(`mcp-custom-${Date.now().toString(36).slice(-4)}`),h(``),_(``),b(`stdio`),S(`npx`),w(``),E(``),O(``),A(``),M(!1),te(null),R(null)},ce=()=>{if(c){let e=[...c.defaultArgs??[]],t={...c.defaultEnv??{}},n=c.defaultUrl??``,r={...c.defaultHeaders??{}};for(let i of c.parameters??[]){let a=N[i.key]??``;i.target===`arg`?e=e.map(e=>e.replace(`\${${i.key}}`,a)):i.target===`env`?a&&(t[i.key]=a):i.target===`url`?n=a||n:i.target===`header`&&a&&(r[i.key]=a)}return{id:f.trim()||c.id,name:m.trim()||c.name,description:g.trim()||c.description,transport:c.transport,command:c.defaultCommand,args:e,env:Object.keys(t).length>0?t:void 0,url:n||void 0,headers:Object.keys(r).length>0?r:void 0,defaultOn:j,enabled:!0,catalogId:c.id}}let e={};for(let t of T.split(`
|
|
172
|
+
`)){let n=t.trim();if(!n||n.startsWith(`#`))continue;let r=n.indexOf(`=`);r>0&&(e[n.slice(0,r).trim()]=n.slice(r+1).trim())}let t={};for(let e of k.split(`
|
|
173
|
+
`)){let n=e.trim();if(!n||n.startsWith(`#`))continue;let r=n.indexOf(`:`);r>0&&(t[n.slice(0,r).trim()]=n.slice(r+1).trim())}let n=C.split(/\s+/).map(e=>e.trim()).filter(e=>e.length>0);return{id:f.trim()||`mcp-${Date.now().toString(36)}`,name:m.trim()||`Custom MCP Server`,description:g.trim()||void 0,transport:y,command:y===`stdio`&&x.trim()||void 0,args:y===`stdio`&&n.length>0?n:void 0,env:y===`stdio`&&Object.keys(e).length>0?e:void 0,url:y===`stdio`?void 0:D.trim()||void 0,headers:y!==`stdio`&&Object.keys(t).length>0?t:void 0,defaultOn:j,enabled:!0}},le=async()=>{F(!0),te(null),R(null);try{let e=ce(),t=await r.testMcpConfig(e);te(t)}catch(e){te({ok:!1,durationMs:0,error:e instanceof Error?e.message:String(e)})}finally{F(!1)}},ue=async()=>{re(!0),R(null);try{let e=ce();n?await r.updateMcpServer(n.id,e):await r.createMcpServer(e),ae()}catch(e){R(e instanceof Error?e.message:String(e))}finally{re(!1)}},de=(0,v.useMemo)(()=>{let e=xu;if(o!==`all`&&o!==`custom`&&(e=e.filter(e=>e.category===o)),i.trim()){let t=i.toLowerCase();e=e.filter(e=>e.name.toLowerCase().includes(t)||e.description.toLowerCase().includes(t)||e.category.toLowerCase().includes(t))}return e},[i,o]),fe=(0,v.useId)();return(0,K.jsx)(JS,{open:e,title:n?`Edit ${n.name}`:c?`Configure ${c.name}`:u?`Add Custom MCP Server`:`Add MCP Server`,onClose:ae,wide:!0,footer:c||u?(0,K.jsxs)(`div`,{className:`flex w-full items-center justify-between gap-2`,children:[(0,K.jsx)(`div`,{children:I?(0,K.jsx)(`span`,{className:G(`text-xs font-medium`,I.ok?`text-ok`:`text-danger`),children:I.ok?`✓ Connected (${I.toolsCount??0} tools, ${I.durationMs}ms)`:`✗ ${I.error||`Connection failed`}`}):null}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(X,{variant:`secondary`,size:`sm`,onClick:le,disabled:P||ne,children:P?`Testing...`:`Test Connection`}),(0,K.jsx)(X,{variant:`primary`,size:`sm`,onClick:ue,disabled:P||ne||!m.trim()&&!c,children:ne?`Saving...`:n?`Update Server`:`Add Server`})]})]}):(0,K.jsx)(X,{onClick:ae,children:`Close`}),children:c||u?(0,K.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[!n&&(0,K.jsxs)(`div`,{className:`flex items-center justify-between border-b border-border pb-2`,children:[(0,K.jsx)(`button`,{type:`button`,onClick:()=>{l(null),d(!1)},className:`flex items-center gap-1 text-accent hover:underline font-medium`,children:`← Back to Catalog`}),c?.docsUrl&&(0,K.jsxs)(`a`,{href:c.docsUrl,target:`_blank`,rel:`noreferrer`,className:`flex items-center gap-1 text-fg-muted hover:text-fg`,children:[(0,K.jsx)(`span`,{children:`Docs`}),(0,K.jsx)(Y.ExternalLink,{className:`w-3 h-3`})]})]}),L&&(0,K.jsx)(`div`,{className:`rounded border border-danger/30 bg-danger/10 p-2 text-danger`,children:L}),c&&(0,K.jsxs)(`div`,{className:`rounded-lg border border-border bg-surface-2 p-3`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`font-semibold text-sm text-fg`,children:c.name}),(0,K.jsx)(Q,{tone:`neutral`,children:c.transport}),(0,K.jsx)(Q,{tone:`accent`,children:c.category})]}),(0,K.jsx)(`p`,{className:`mt-1 text-fg-muted`,children:c.description})]}),c?.parameters&&c.parameters.length>0&&(0,K.jsxs)(`div`,{className:`space-y-3 rounded-lg border border-border p-3`,children:[(0,K.jsx)(`div`,{className:`font-semibold text-fg`,children:`Authentication & Configuration`}),c.parameters.map(e=>(0,K.jsx)(KS,{label:e.label,hint:e.required?`Required`:`Optional`,children:(0,K.jsx)(`input`,{type:e.type===`password`?`password`:`text`,value:N[e.key]??``,placeholder:e.placeholder,onChange:t=>ee({...N,[e.key]:t.target.value}),className:`w-full rounded-md border border-border bg-surface px-2.5 py-1.5 text-sm text-fg placeholder:text-fg-faint focus:border-accent focus:outline-none`})},e.key))]}),u&&(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2`,children:[(0,K.jsx)(KS,{label:`Server ID`,hint:`Unique slug, e.g. postgres-local`,children:(0,K.jsx)(`input`,{type:`text`,value:f,disabled:!!n,onChange:e=>p(e.target.value),className:`w-full rounded-md border border-border bg-surface px-2.5 py-1.5 text-sm text-fg placeholder:text-fg-faint focus:border-accent focus:outline-none`})}),(0,K.jsx)(KS,{label:`Display Name`,hint:`Shown in menus and badges`,children:(0,K.jsx)(`input`,{type:`text`,value:m,placeholder:`My Postgres DB`,onChange:e=>h(e.target.value),className:`w-full rounded-md border border-border bg-surface px-2.5 py-1.5 text-sm text-fg placeholder:text-fg-faint focus:border-accent focus:outline-none`})})]}),(0,K.jsx)(KS,{label:`Description`,hint:`Optional summary`,children:(0,K.jsx)(`input`,{type:`text`,value:g,placeholder:`Primary analytics database`,onChange:e=>_(e.target.value),className:`w-full rounded-md border border-border bg-surface px-2.5 py-1.5 text-sm text-fg placeholder:text-fg-faint focus:border-accent focus:outline-none`})}),(0,K.jsx)(KS,{label:`Transport Type`,children:(0,K.jsxs)(`select`,{value:y,onChange:e=>b(e.target.value),className:`w-full rounded-md border border-border bg-surface px-2.5 py-1.5 text-sm text-fg placeholder:text-fg-faint focus:border-accent focus:outline-none`,children:[(0,K.jsx)(`option`,{value:`stdio`,children:`stdio (Local Subprocess / Command)`}),(0,K.jsx)(`option`,{value:`sse`,children:`sse (Remote Server-Sent Events URL)`}),(0,K.jsx)(`option`,{value:`http`,children:`http (Remote Streamable HTTP URL)`})]})}),y===`stdio`?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(KS,{label:`Command`,hint:`Program on PATH, e.g. npx, uvx, python`,children:(0,K.jsx)(`input`,{type:`text`,value:x,placeholder:`npx`,onChange:e=>S(e.target.value),className:`w-full rounded-md border border-border bg-surface px-2.5 py-1.5 text-sm text-fg placeholder:text-fg-faint focus:border-accent focus:outline-none`})}),(0,K.jsx)(KS,{label:`Arguments`,hint:`Space-separated argument list`,children:(0,K.jsx)(`input`,{type:`text`,value:C,placeholder:`-y @modelcontextprotocol/server-postgres postgresql://...`,onChange:e=>w(e.target.value),className:`w-full rounded-md border border-border bg-surface px-2.5 py-1.5 text-sm text-fg placeholder:text-fg-faint focus:border-accent focus:outline-none`})}),(0,K.jsx)(KS,{label:`Environment Variables`,hint:`One KEY=VALUE per line`,children:(0,K.jsx)(`textarea`,{rows:3,value:T,placeholder:`API_TOKEN=xyz123
|
|
174
|
+
DEBUG=1`,onChange:e=>E(e.target.value),className:`w-full rounded-md border border-border bg-surface px-2.5 py-1.5 text-sm text-fg placeholder:text-fg-faint focus:border-accent focus:outline-none`})})]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(KS,{label:`Endpoint URL`,hint:`https://mcp.domain.com/sse`,children:(0,K.jsx)(`input`,{type:`url`,value:D,placeholder:`https://mcp.example.com/sse`,onChange:e=>O(e.target.value),className:`w-full rounded-md border border-border bg-surface px-2.5 py-1.5 text-sm text-fg placeholder:text-fg-faint focus:border-accent focus:outline-none`})}),(0,K.jsx)(KS,{label:`Headers`,hint:`One Header: Value per line`,children:(0,K.jsx)(`textarea`,{rows:2,value:k,placeholder:`Authorization: Bearer token123`,onChange:e=>A(e.target.value),className:`w-full rounded-md border border-border bg-surface px-2.5 py-1.5 text-sm text-fg placeholder:text-fg-faint focus:border-accent focus:outline-none`})})]})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2 pt-2 border-t border-border`,children:[(0,K.jsx)(`input`,{id:`mcp-default-on`,type:`checkbox`,checked:j,onChange:e=>M(e.target.checked),className:`h-4 w-4 rounded border-border text-accent focus:ring-accent`}),(0,K.jsx)(`label`,{htmlFor:`mcp-default-on`,className:`text-fg font-medium cursor-pointer`,children:`Enable in new chats by default`}),(0,K.jsx)(`span`,{className:`text-fg-muted`,children:`(Leave unchecked for specific databases or billing services)`})]})]}):(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsxs)(`div`,{className:`relative`,children:[(0,K.jsx)(Y.Search,{className:`pointer-events-none absolute left-3 top-2.5 h-4 w-4 text-fg-muted`}),(0,K.jsx)(`input`,{id:fe,type:`text`,value:i,placeholder:`Search MCP providers (Postgres, GitHub, Supabase, Notion, Sentry...)`,onChange:e=>a(e.target.value),className:G(Z,`pl-9`)})]}),(0,K.jsxs)(`div`,{className:`flex flex-wrap gap-1 border-b border-border pb-2 text-xs`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>s(`all`),className:G(`rounded px-2.5 py-1 font-medium transition-colors`,o===`all`?`bg-accent-soft text-accent`:`text-fg-muted hover:bg-surface-2 hover:text-fg`),children:[`All Providers (`,xu.length,`)`]}),bu.map(e=>(0,K.jsx)(`button`,{type:`button`,onClick:()=>s(e.id),className:G(`rounded px-2.5 py-1 font-medium transition-colors`,o===e.id?`bg-accent-soft text-accent`:`text-fg-muted hover:bg-surface-2 hover:text-fg`),children:e.label},e.id)),(0,K.jsxs)(`button`,{type:`button`,onClick:se,className:`ml-auto flex items-center gap-1 rounded border border-dashed border-border px-2.5 py-1 font-medium text-accent hover:bg-surface-2`,children:[(0,K.jsx)(Y.Plus,{className:`w-3 h-3`}),(0,K.jsx)(`span`,{children:`Custom Server`})]})]})]}),(0,K.jsx)(`div`,{className:`grid max-h-[28rem] grid-cols-1 gap-2.5 overflow-y-auto sm:grid-cols-2`,children:de.map(e=>(0,K.jsxs)(`div`,{className:`flex flex-col justify-between rounded-lg border border-border bg-surface p-3 transition-colors hover:border-accent/40`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-1`,children:[(0,K.jsx)(`span`,{className:`font-semibold text-sm text-fg`,children:e.name}),(0,K.jsx)(Q,{tone:`neutral`,children:e.transport})]}),(0,K.jsx)(`p`,{className:`mt-1 line-clamp-2 text-xs text-fg-muted`,children:e.description})]}),(0,K.jsxs)(`div`,{className:`mt-3 flex items-center justify-between pt-2 border-t border-border/50`,children:[(0,K.jsx)(`span`,{className:`text-[11px] text-fg-muted capitalize`,children:e.category}),(0,K.jsx)(X,{variant:`secondary`,size:`sm`,onClick:()=>oe(e),children:`Add`})]})]},e.id))})]})})}function Kq(){let{state:e,actions:t}=q(),n=e.mcpServers??[],r=e.mcpTesting??{},i=e.mcpTestResults??{},[a,o]=(0,v.useState)(!1),[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)(null),d=async e=>{await t.updateMcpServer(e.id,{defaultOn:!e.defaultOn})};return(0,K.jsxs)(`div`,{className:`space-y-6 text-xs text-fg`,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 border-b border-border pb-4`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h3`,{className:`text-base font-semibold text-fg`,children:`MCP Servers`}),(0,K.jsx)(`p`,{className:`mt-1 text-fg-muted`,children:`Configure Model Context Protocol servers to provide databases, cloud APIs, and developer tools to your chats. Each chat can toggle which servers are active.`})]}),(0,K.jsxs)(X,{variant:`primary`,size:`sm`,onClick:()=>o(!0),children:[(0,K.jsx)(Y.Plus,{className:`w-3.5 h-3.5`}),(0,K.jsx)(`span`,{children:`Add MCP Server`})]})]}),n.length===0?(0,K.jsxs)(`div`,{className:`rounded-xl border border-dashed border-border bg-surface-2 p-8 text-center`,children:[(0,K.jsx)(`div`,{className:`mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-accent-soft text-accent`,children:(0,K.jsx)(Y.Plug,{className:`h-6 w-6`})}),(0,K.jsx)(`h4`,{className:`mt-3 text-sm font-semibold text-fg`,children:`No MCP Servers Configured`}),(0,K.jsx)(`p`,{className:`mx-auto mt-1 max-w-sm text-xs text-fg-muted`,children:`Connect databases (PostgreSQL, Supabase), developer services (GitHub, Sentry), or productivity tools (Linear, Notion) to your agent.`}),(0,K.jsx)(`div`,{className:`mt-4`,children:(0,K.jsx)(X,{variant:`primary`,size:`sm`,onClick:()=>o(!0),children:`Browse MCP Catalog`})})]}):(0,K.jsx)(`div`,{className:`space-y-3`,children:n.map(e=>{let n=!!r[e.id],a=i[e.id];return(0,K.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-lg border border-border bg-surface p-3.5 shadow-sm transition-colors hover:border-accent/40`,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,K.jsx)(`span`,{className:`font-semibold text-sm text-fg truncate`,children:e.name}),(0,K.jsx)(Q,{tone:`neutral`,children:e.transport}),e.catalogId&&(0,K.jsx)(Q,{tone:`accent`,children:e.catalogId})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[n?(0,K.jsx)(`span`,{className:`text-[11px] text-fg-muted animate-pulse`,children:`Testing...`}):a?(0,K.jsx)(`span`,{className:G(`rounded px-2 py-0.5 text-[11px] font-medium`,a.ok?`bg-ok/10 text-ok border border-ok/20`:`bg-danger/10 text-danger border border-danger/20`),title:a.error,children:a.ok?`✓ ${a.toolsCount??0} tools (${a.durationMs}ms)`:`✗ Failed`}):null,(0,K.jsx)(X,{variant:`secondary`,size:`sm`,onClick:()=>t.testMcpServer(e.id),disabled:n,title:`Test connection to this server`,children:`Test`}),(0,K.jsx)(X,{variant:`secondary`,size:`sm`,onClick:()=>c(e),title:`Edit server configuration`,children:`Edit`}),(0,K.jsx)(US,{label:`Delete server`,onClick:()=>u(e),className:`text-fg-muted hover:text-danger`,children:(0,K.jsx)(Y.Trash,{className:`w-3.5 h-3.5`})})]})]}),e.description&&(0,K.jsx)(`p`,{className:`text-fg-muted text-xs`,children:e.description}),(0,K.jsx)(`div`,{className:`rounded bg-surface-2 px-2.5 py-1.5 font-mono text-[11px] text-fg-muted overflow-x-auto`,children:e.transport===`stdio`?(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`span`,{className:`text-accent`,children:e.command}),` `,(e.args??[]).join(` `)]}):(0,K.jsx)(`span`,{className:`text-accent`,children:e.url})}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between pt-2 border-t border-border/50 text-[11px]`,children:[(0,K.jsx)(YS,{label:`Default ON for new chats`,checked:e.defaultOn,onChange:()=>d(e)}),(0,K.jsxs)(`span`,{className:`text-fg-muted`,children:[`Updated `,new Date(e.updatedAt).toLocaleDateString()]})]})]},e.id)})}),(0,K.jsx)(QS,{open:l!==null,title:`Remove MCP Server`,message:l?`Are you sure you want to remove MCP server "${l.name}"?`:``,confirmLabel:`Remove`,onConfirm:async()=>{l&&(await t.deleteMcpServer(l.id),u(null))},onClose:()=>u(null)}),(a||s!==null)&&(0,K.jsx)(Gq,{open:a||s!==null,editingServer:s,onClose:()=>{o(!1),c(null)}})]})}var qq=[{id:`general`,label:`General`,icon:Y.Settings},{id:`safeguards`,label:`Safeguards`,icon:Y.Shield},{id:`theme`,label:`Theme`,icon:Y.Palette},{id:`advanced`,label:`Advanced`,icon:Y.Sliders},{id:`skills`,label:`Skills`,icon:Y.Tool},{id:`mcp`,label:`MCP Servers`,icon:Y.Plug},{id:`providers`,label:`Providers`,icon:Y.Globe},{id:`devices`,label:`Devices`,icon:Y.Monitor},{id:`host`,label:`This PC`,icon:Y.Stethoscope},{id:`developer`,label:`Developer`,icon:Y.Bug}];function Jq(){let e=typeof window<`u`?window.oonacode:void 0;return e?.getDebugging&&e.setDebugging?e:null}function Yq(){let{state:e,actions:t}=q(),n=e.prefs,r=e.settings?.theme??`system`;return(0,K.jsxs)(`div`,{className:`space-y-1`,children:[(0,K.jsx)(YS,{label:`Auto-accept permissions`,hint:Nq.autoAccept.hint,details:Nq.autoAccept.details,checked:n.autoAcceptPermissions,onChange:e=>void t.savePrefs({autoAcceptPermissions:e}),testId:`settings-auto-accept`}),(0,K.jsx)(YS,{label:`Show reasoning in the timeline`,hint:Nq.reasoning.hint,details:Nq.reasoning.details,checked:n.showReasoningSummaries,onChange:e=>void t.savePrefs({showReasoningSummaries:e})}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-border py-3`,children:[(0,K.jsxs)(`span`,{children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-1.5 text-sm font-medium text-fg`,children:[`Colour scheme`,(0,K.jsx)(WS,{label:`Colour scheme`,details:(0,K.jsx)(GS,{items:Nq.colourScheme.details})})]}),(0,K.jsx)(`span`,{className:`mt-0.5 block text-xs text-fg-faint`,children:Nq.colourScheme.hint})]}),(0,K.jsx)(XS,{label:`Colour scheme`,value:r,options:[{value:`system`,label:`System`},{value:`dark`,label:`Dark`},{value:`light`,label:`Light`}],onChange:e=>void t.saveSettings({theme:e})})]}),(0,K.jsxs)(`div`,{className:`border-t border-border pt-2`,children:[(0,K.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-fg-faint`,children:[(0,K.jsx)(Y.Bell,{className:`w-3 h-3`}),` Notifications`,(0,K.jsx)(WS,{label:`Notifications`,details:(0,K.jsx)(GS,{items:Nq.notifications.details})})]}),(0,K.jsx)(`p`,{className:`text-xs text-fg-faint`,children:Nq.notifications.hint}),(0,K.jsx)(YS,{label:`Agent finished or needs attention`,hint:Nq.notifyFinished.hint,details:Nq.notifyFinished.details,checked:n.notifications.agentFinished,onChange:e=>void t.savePrefs({notifications:{...n.notifications,agentFinished:e}})}),(0,K.jsx)(YS,{label:`Permission or question waiting for you`,hint:Nq.notifyWaiting.hint,details:Nq.notifyWaiting.details,checked:n.notifications.permissionRequired,onChange:e=>void t.savePrefs({notifications:{...n.notifications,permissionRequired:e}})}),(0,K.jsx)(YS,{label:`Error occurred`,hint:Nq.notifyError.hint,details:Nq.notifyError.details,checked:n.notifications.errorOccurred,onChange:e=>void t.savePrefs({notifications:{...n.notifications,errorOccurred:e}})})]}),e.prefsBackend===`local`?(0,K.jsx)(`div`,{className:`mt-2 rounded-md bg-warn-soft px-3 py-2 text-xs text-warn`,children:`This host does not store UI preferences yet, so they are kept on this device only.`}):null]})}function Xq(e){let t=e.replace(/-/g,` `);return t.charAt(0).toUpperCase()+t.slice(1)}function Zq(e){let t={};if(typeof document>`u`||typeof getComputedStyle!=`function`)return t;let n=document.documentElement,r=n.getAttribute(`data-theme`),i=[];for(let e of hl){let t=n.style.getPropertyValue(`--${e}`);t&&i.push([e,t]),n.style.removeProperty(`--${e}`)}n.setAttribute(`data-theme`,e);let a=getComputedStyle(n);for(let e of hl){let n=a.getPropertyValue(`--${e}`).trim();t[e]=/^#[0-9a-fA-F]{6}$/.test(n)?n.toLowerCase():`#808080`}r===null?n.removeAttribute(`data-theme`):n.setAttribute(`data-theme`,r);for(let[e,t]of i)n.style.setProperty(`--${e}`,t);return t}function Qq(){let{state:e,actions:t}=q(),n=e.prefs,[r,i]=(0,v.useState)(`dark`),a=(0,v.useMemo)(()=>Zq(r),[r]),[o,s]=(0,v.useState)({}),c=(0,v.useRef)(o);c.current=o;let l=(0,v.useRef)(n.themeColors);l.current=n.themeColors;let u=(0,v.useRef)(null),d=()=>{u.current!==null&&(window.clearTimeout(u.current),u.current=null)};(0,v.useEffect)(()=>d,[]);let f=e=>{d();let n=c.current;Object.keys(n).length!==0&&(s({}),t.savePrefs({themeColors:{...l.current,[e]:{...l.current[e],...n}}}))},p=(e,t)=>{s(n=>({...n,[e]:t})),c.current={...c.current,[e]:t},d(),u.current=window.setTimeout(()=>f(r),300)},m={...l.current[r],...o},h=Object.keys(m).length,g=e=>{d(),s({});let n={...m};delete n[e],t.savePrefs({themeColors:{...l.current,[r]:n}})};return(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsx)(`div`,{className:`text-sm font-medium text-fg`,children:`Theme colours`}),(0,K.jsx)(`div`,{className:`mt-0.5 text-xs text-fg-faint`,children:`Choose any colour for any element. A colour you do not choose keeps the theme's own value. Your colours follow your account to every PC.`})]}),(0,K.jsx)(XS,{label:`Edit colour scheme`,value:r,options:[{value:`light`,label:`Light`},{value:`dark`,label:`Dark`}],onChange:e=>{f(r),i(e)}})]}),(0,K.jsx)(`div`,{className:`grid grid-cols-1 gap-x-4 sm:grid-cols-2`,children:hl.map(e=>{let t=m[e]!==void 0,n=m[e]??a[e]??`#808080`;return(0,K.jsxs)(`div`,{className:`flex items-center gap-2 border-t border-border py-1.5`,"data-testid":`theme-color-row-${r}-${e}`,children:[(0,K.jsx)(`input`,{type:`color`,className:`h-6 w-9 shrink-0 cursor-pointer rounded border border-border bg-transparent p-0.5`,value:n,onChange:t=>p(e,t.target.value),"aria-label":`${Xq(e)} colour (${r} scheme)`,"data-testid":`theme-color-${r}-${e}`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs text-fg-muted`,children:Xq(e)}),(0,K.jsx)(`span`,{className:`w-16 shrink-0 text-right font-mono text-[10px] text-fg-faint`,children:t?m[e]:`default`}),t?(0,K.jsx)(US,{label:`Reset ${Xq(e)} to the theme colour`,className:`p-0.5`,"data-testid":`theme-color-clear-${r}-${e}`,onClick:()=>g(e),children:(0,K.jsx)(Y.Refresh,{className:`w-3 h-3`})}):null]},e)})}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-border pt-2`,children:[(0,K.jsx)(`span`,{className:`text-xs text-fg-faint`,"data-testid":`theme-colors-count`,children:h===0?`No custom colours in the ${r} scheme.`:`${h} custom colour${h===1?``:`s`} in the ${r} scheme.`}),(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:()=>{d(),s({}),t.savePrefs({themeColors:{...l.current,[r]:{}}})},disabled:h===0,"data-testid":`theme-reset-${r}`,children:`Reset all`})]})]})}function $q(){let{state:e,actions:t}=q(),n=e.prefs,[r,i]=(0,v.useState)(String(n.transcriptWindowSize));return(0,v.useEffect)(()=>i(String(n.transcriptWindowSize)),[n.transcriptWindowSize]),(0,K.jsx)(`div`,{className:`space-y-1`,children:(0,K.jsx)(KS,{label:`Transcript window size`,hint:`${Nq.transcriptWindow.hint} Scrolling to the top brings back 100 more. 100–${pl}, default 500.`,details:Nq.transcriptWindow.details,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`input`,{className:G(Z,`w-32`),type:`number`,min:100,max:pl,step:100,value:r,onChange:e=>i(e.target.value),onBlur:()=>{let e=Number.parseInt(r,10);Number.isFinite(e)&&t.savePrefs({transcriptWindowSize:e})},"aria-label":`Transcript window size`}),(0,K.jsx)(`span`,{className:`text-xs text-fg-faint`,children:`messages and tool cards`})]})})})}function eJ(){let{state:e,actions:t}=q(),n=(0,v.useMemo)(()=>Ms(e.providers),[e.providers]);return(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[n.length===0?(0,K.jsx)(`div`,{className:`py-6 text-center text-sm text-fg-muted`,children:`No providers in the registry.`}):null,n.map(n=>{let r=n.definition,i=e.activeProviderId===r.id,a=js(e.providers,r.id),o=a.some(e=>e.configured),s=[...new Set(a.flatMap(e=>(e.credentials??[]).map(e=>e.class)))].filter(e=>e!==`none`);return(0,K.jsxs)(`div`,{className:`flex items-center gap-3 rounded-md border border-border px-3 py-2`,"data-testid":`provider-${r.id}`,children:[(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,K.jsx)(`span`,{className:`text-sm font-medium`,children:r.displayName}),i?(0,K.jsx)(Q,{tone:`accent`,children:`active`}):null,r.route===`direct`?(0,K.jsx)(Q,{tone:`ok`,children:`direct`}):null,s.length>0?s.map(e=>(0,K.jsxs)(Q,{tone:`ok`,children:[e===`subscription`?`subscription`:`API key`,` connected`]},e)):o?(0,K.jsx)(Q,{tone:`ok`,children:`connected`}):(0,K.jsx)(Q,{tone:`warn`,children:`not connected`})]}),(0,K.jsxs)(`div`,{className:`truncate text-[11px] text-fg-faint`,children:[r.models.length,` model`,r.models.length===1?``:`s`,r.credentialVariants?.length?` · ${r.credentialVariants.map(e=>e.label).join(` / `)}`:``]})]}),r.engine===`agy`?(0,K.jsx)(Lq,{providerId:r.id,configured:o}):(0,K.jsxs)(X,{size:`sm`,variant:o?`secondary`:`primary`,onClick:()=>t.openProviderConnect(r.id),children:[(0,K.jsx)(Y.Plus,{className:`w-3 h-3`}),` `,o?`Manage…`:`Connect`]})]},r.id)}),(0,K.jsx)(`div`,{className:`pt-3`,children:(0,K.jsx)(QU,{})})]})}function tJ(){let{state:e,actions:t}=q(),[n,r]=(0,v.useState)(null),[i,a]=(0,v.useState)(``);return(0,v.useEffect)(()=>{t.refreshHosts()},[t]),e.account?.loggedIn?e.remote.supported?(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[e.remote.loading?(0,K.jsxs)(`div`,{className:`flex items-center gap-2 py-4 text-sm text-fg-muted`,children:[(0,K.jsx)(Y.Spinner,{}),` Loading devices…`]}):null,e.remote.hosts.map(e=>(0,K.jsxs)(`div`,{className:`flex items-center gap-3 rounded-md border border-border px-3 py-2`,children:[(0,K.jsx)(Y.Monitor,{className:`w-4 h-4 shrink-0 text-fg-faint`}),(0,K.jsx)(`div`,{className:`min-w-0 flex-1`,children:n===e.hostId?(0,K.jsx)(`input`,{className:Z,value:i,autoFocus:!0,"aria-label":`Label for ${e.hostName}`,onChange:e=>a(e.target.value),onKeyDown:n=>{n.key===`Enter`&&i.trim()?(t.renameHost(e.hostId,i.trim()),r(null)):n.key===`Escape`&&r(null)}}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5 text-sm font-medium`,children:[e.label||e.hostName,e.isSelf?(0,K.jsx)(Q,{tone:`accent`,children:`this PC`}):null,(0,K.jsx)(Q,{tone:e.online?`ok`:`neutral`,children:e.online?`online`:`offline`}),e.remoteAccessOff?(0,K.jsx)(Q,{tone:`warn`,children:`remote access off`}):null]}),(0,K.jsxs)(`div`,{className:`truncate text-[11px] text-fg-faint`,children:[e.platform,e.appVersion?` · v${e.appVersion}`:``,e.lastSeenAt?` · seen ${W_(e.lastSeenAt)}`:``]})]})}),n===e.hostId?(0,K.jsx)(X,{size:`sm`,variant:`primary`,onClick:()=>{i.trim()&&t.renameHost(e.hostId,i.trim()),r(null)},children:`Save`}):(0,K.jsxs)(X,{size:`sm`,onClick:()=>{r(e.hostId),a(e.label||e.hostName)},children:[(0,K.jsx)(Y.Edit,{className:`w-3 h-3`}),` Rename`]})]},e.hostId)),!e.remote.loading&&e.remote.hosts.length===0?(0,K.jsx)(`div`,{className:`py-6 text-center text-sm text-fg-muted`,children:`No devices reported yet.`}):null]}):(0,K.jsxs)(`div`,{className:`rounded-md border border-border px-3 py-3 text-sm text-fg-muted`,children:[`This PC's OonaCode is too old to list your account's devices — update it. This PC is`,` `,(0,K.jsx)(`strong`,{children:e.connection.hostName??`unknown`}),`.`]}):(0,K.jsx)(`div`,{className:`py-6 text-center text-sm text-fg-muted`,children:`Sign in to see the devices on your account.`})}function nJ(e,t,n=Date.now()){if(e===0)return`Off — pictures are kept forever.`;if(!t)return`Not run yet — it runs a few minutes after OonaCode starts, then daily.`;let r=W_(t.finishedAt,n);return t.pictures===0?`Last run: nothing to replace, ${r}.`:`Last run: ${t.pictures.toLocaleString(`en-US`)} ${t.pictures===1?`picture`:`pictures`}, ${gF(t.bytesFreed)}, ${r}.`}function rJ({days:e,lastRun:t,onSave:n}){let[r,i]=(0,v.useState)(String(e));(0,v.useEffect)(()=>i(String(e)),[e]);let a=()=>{let t=Number.parseInt(r,10);if(!Number.isFinite(t)){i(String(e));return}let a=t<=0?0:Math.min(Nl,Math.max(1,t));i(String(a)),a!==e&&n(a)};return(0,K.jsxs)(KS,{label:`Replace pictures older than`,hint:Nq.imageRetention.hint,details:Nq.imageRetention.details,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`input`,{className:G(Z,`w-24`),type:`number`,min:0,max:Nl,step:1,value:r,onChange:e=>i(e.target.value),onBlur:a,onKeyDown:e=>{e.key===`Enter`&&a()},"aria-label":`Replace pictures older than (days)`,"data-testid":`settings-image-retention`}),(0,K.jsxs)(`span`,{className:`text-xs text-fg-faint`,children:[`days`,e===365?` (a year)`:``]})]}),(0,K.jsx)(`span`,{className:`text-xs text-fg-muted`,"data-testid":`settings-image-retention-status`,children:nJ(e,t)})]})}function iJ(e,t,n){let r=e.trim(),i=Number(r);return!/^\d+$/.test(r)||i<t||i>n?`A whole number from ${t.toLocaleString(`en-US`)} to ${n.toLocaleString(`en-US`)}.`:null}function aJ({label:e,unit:t,hint:n,details:r,value:i,min:a,max:o,defaultValue:s,onSave:c,testId:l}){let[u,d]=(0,v.useState)(String(i)),[f,p]=(0,v.useState)(null);(0,v.useEffect)(()=>{d(String(i)),p(null)},[i]);let m=()=>{let e=iJ(u,a,o);if(p(e),e)return;let t=Number(u.trim());t!==i&&c(t)},h=e=>e.toLocaleString(`en-US`);return(0,K.jsxs)(KS,{label:e,hint:`${n} ${h(a)}–${h(o)}, default ${h(s)}.`,details:r,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`input`,{className:G(Z,`w-28`,f&&`border-danger`),type:`number`,min:a,max:o,step:1,value:u,onChange:e=>d(e.target.value),onBlur:m,onKeyDown:e=>{e.key===`Enter`&&m()},"aria-label":e,"aria-invalid":f!==null,"data-testid":l}),(0,K.jsx)(`span`,{className:`text-xs text-fg-faint`,children:t})]}),f?(0,K.jsx)(`span`,{className:`text-xs text-danger`,role:`alert`,"data-testid":`${l}-problem`,children:f}):null]})}function oJ({settings:e}){let{actions:t}=q(),n=Uu,r=Hu;return(0,K.jsxs)(`div`,{className:`border-t border-border pt-3`,"data-testid":`settings-chat-abouts`,children:[(0,K.jsxs)(`div`,{className:`mb-1 flex items-center justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-faint`,children:`Chat abouts`}),(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:()=>t.openChatAbouts(),"data-testid":`settings-open-chat-abouts`,children:`What your chats are about…`})]}),e.chatAboutEnabled===void 0?null:(0,K.jsx)(YS,{label:`Write an about for every chat`,hint:Nq.chatAbout.hint,details:Nq.chatAbout.details,checked:e.chatAboutEnabled,onChange:e=>void t.saveSettings({chatAboutEnabled:e}),testId:`settings-chat-about-enabled`}),(0,K.jsxs)(`div`,{className:`space-y-3 pt-1`,children:[e.chatAboutIntervalMinutes===void 0?null:(0,K.jsx)(aJ,{label:`Minutes between background abouts`,unit:`minutes`,hint:Nq.chatAboutInterval.hint,details:Nq.chatAboutInterval.details,value:e.chatAboutIntervalMinutes,min:n.intervalMinutes.min,max:n.intervalMinutes.max,defaultValue:r.intervalMinutes,onSave:e=>void t.saveSettings({chatAboutIntervalMinutes:e}),testId:`settings-chat-about-interval`}),e.chatAboutMaxWords===void 0?null:(0,K.jsx)(aJ,{label:`Longest about`,unit:`words`,hint:Nq.chatAboutMaxWords.hint,details:Nq.chatAboutMaxWords.details,value:e.chatAboutMaxWords,min:n.maxWords.min,max:n.maxWords.max,defaultValue:r.maxWords,onSave:e=>void t.saveSettings({chatAboutMaxWords:e}),testId:`settings-chat-about-max-words`}),e.chatAboutInputChars===void 0?null:(0,K.jsx)(aJ,{label:`How much of a chat is read`,unit:`characters`,hint:Nq.chatAboutInputChars.hint,details:Nq.chatAboutInputChars.details,value:e.chatAboutInputChars,min:n.inputChars.min,max:n.inputChars.max,defaultValue:r.inputChars,onSave:e=>void t.saveSettings({chatAboutInputChars:e}),testId:`settings-chat-about-input-chars`})]})]})}function sJ(){let{state:e,actions:t}=q(),n=e.settings,[r,i]=(0,v.useState)(n?.defaultCwd??``);if((0,v.useEffect)(()=>i(n?.defaultCwd??``),[n?.defaultCwd]),(0,v.useEffect)(()=>{t.refreshSettings()},[t]),!n)return(0,K.jsx)(`div`,{className:`py-6 text-sm text-fg-muted`,children:`Loading settings…`});let a=e.account?.gatewayUrl??n.gatewayUrl??x,o=e=>{let r=e.trim()?e.trim():null;r!==(n.defaultCwd??null)&&t.saveSettings({defaultCwd:r})},s=async()=>{let e=await window.oonacode?.pickDirectory?.({title:`The folder new chats run in`,...r?{defaultPath:r}:{}});e&&(i(e),o(e))};return(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsx)(KS,{label:`Default working directory`,hint:Nq.defaultCwd.hint,details:Nq.defaultCwd.details,children:(0,K.jsxs)(`div`,{className:`flex gap-2`,children:[(0,K.jsx)(`input`,{className:G(Z,`flex-1 font-mono text-xs`),value:r,onChange:e=>i(e.target.value),onBlur:()=>o(r),placeholder:`Empty — each chat gets its own folder`,spellCheck:!1,"data-testid":`settings-default-cwd`}),window.oonacode?.pickDirectory?(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:()=>void s(),children:`Choose…`}):null,r?(0,K.jsx)(X,{size:`sm`,variant:`ghost`,onClick:()=>{i(``),o(``)},children:`Clear`}):null]})}),(0,K.jsxs)(`div`,{className:`border-t border-border pt-1`,children:[(0,K.jsx)(YS,{label:`Remote access`,hint:Nq.remoteAccess.hint,details:Nq.remoteAccess.details,checked:n.relayEnabled??!0,onChange:e=>void t.saveSettings({relayEnabled:e}),testId:`settings-relay`}),(0,K.jsx)(YS,{label:`Keep the vault unlocked when the app closes`,hint:Nq.keepUnlocked.hint,details:Nq.keepUnlocked.details,checked:n.keepUnlockedOnExit??!1,onChange:e=>void t.saveSettings({keepUnlockedOnExit:e}),testId:`settings-keep-unlocked-exit`})]}),n.imageRetentionDays===void 0?null:(0,K.jsx)(`div`,{className:`border-t border-border pt-3`,children:(0,K.jsx)(rJ,{days:n.imageRetentionDays,lastRun:n.imageRetentionLastRun??null,onSave:e=>void t.saveSettings({imageRetentionDays:e})})}),n.chatAboutEnabled!==void 0||n.chatAboutIntervalMinutes!==void 0||n.chatAboutMaxWords!==void 0||n.chatAboutInputChars!==void 0?(0,K.jsx)(oJ,{settings:n}):null,(0,K.jsxs)(`div`,{className:`space-y-2 border-t border-border pt-3 text-xs`,children:[(0,K.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,K.jsxs)(`span`,{children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-1.5 text-sm font-medium text-fg`,children:[`Server`,(0,K.jsx)(WS,{label:`Server`,details:(0,K.jsx)(GS,{items:Nq.server.details})})]}),(0,K.jsx)(`span`,{className:`block text-fg-faint`,children:Nq.server.hint})]}),(0,K.jsx)(`span`,{className:`break-all font-mono text-fg-muted`,"data-testid":`settings-server`,children:a})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-1.5 text-sm font-medium text-fg`,children:[`Diagnostics`,(0,K.jsx)(WS,{label:`Diagnostics`,details:(0,K.jsx)(GS,{items:Nq.diagnostics.details})})]}),(0,K.jsx)(`span`,{className:`block text-fg-faint`,children:Nq.diagnostics.hint})]})]})]})}function cJ(e){return e instanceof Error?e.message:String(e)}function lJ(){let e=Jq(),[t,n]=(0,v.useState)(null),[r,i]=(0,v.useState)(null),[a,o]=(0,v.useState)(``),[s,c]=(0,v.useState)(null),l=(0,v.useRef)(Promise.resolve());if((0,v.useEffect)(()=>{if(!e?.getDebugging)return;let t=!0;return e.getDebugging().then(e=>{t&&(n(e),o(String(e.saved.port)))},e=>{t&&i(cJ(e))}),()=>{t=!1}},[e]),!e)return(0,K.jsx)(`div`,{className:`py-6 text-sm text-fg-muted`,children:`Debugging is a setting of the OonaCode desktop app.`});if(!t)return r?(0,K.jsx)(`div`,{className:`py-6 text-sm text-danger`,role:`alert`,children:r}):(0,K.jsx)(`div`,{className:`py-6 text-sm text-fg-muted`,children:`Loading…`});let u=t=>{l.current=l.current.then(async()=>{try{let r=await e.setDebugging(t);n(r.state),i(r.ok?null:r.problem??`Not saved.`),r.ok&&o(String(r.state.saved.port))}catch(e){i(cJ(e))}})},d=()=>{let e=a.trim(),n=/^\d+$/.test(e)?Number(e):NaN,r=Dc(n);if(r){i(r);return}if(n===t.saved.port){i(null);return}u({port:n})},f=async()=>{try{let t=await e.relaunchApp();t.started?c(t.message||`OonaCode is restarting…`):i(t.message||`OonaCode could not restart.`)}catch(e){i(cJ(e))}},p=Fq(t),m=r!==null&&/^(The port|Ports?) /.test(r);return(0,K.jsxs)(`div`,{className:`space-y-3`,"data-testid":`settings-developer`,children:[(0,K.jsx)(YS,{label:`Allow debugging`,hint:Nq.allowDebugging.hint,details:Nq.allowDebugging.details,checked:t.saved.enabled,onChange:e=>u({enabled:e}),testId:`settings-allow-debugging`}),(0,K.jsx)(KS,{label:`Debugging port`,hint:`${Nq.debugPort.hint} ${Sc}–${Cc}, default ${xc}.`,details:Nq.debugPort.details,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`input`,{className:G(Z,`max-w-28`,m&&`border-danger`),type:`number`,min:Sc,max:Cc,step:1,value:a,onChange:e=>o(e.target.value),onBlur:d,onKeyDown:e=>{e.key===`Enter`&&d()},"aria-label":`Debugging port`,"aria-invalid":m,"data-testid":`settings-debug-port`}),(0,K.jsx)(`span`,{className:`whitespace-nowrap text-xs text-fg-faint`,children:`on 127.0.0.1`})]})}),(0,K.jsx)(YS,{label:`Also debug the main process`,hint:Nq.debugMainProcess.hint,details:Nq.debugMainProcess.details,checked:t.saved.inspectMain,disabled:!t.saved.enabled,onChange:e=>u({inspectMain:e}),testId:`settings-debug-main`}),r?(0,K.jsx)(`div`,{className:`text-xs text-danger`,role:`alert`,"data-testid":`settings-debugging-problem`,children:r}):null,(0,K.jsxs)(`div`,{className:`rounded-md border border-border px-3 py-2 text-xs`,"data-testid":`settings-debugging-status`,children:[(0,K.jsx)(`div`,{className:`text-fg-muted`,children:Pq(t.running)}),p?(0,K.jsxs)(`div`,{className:`mt-2 flex items-center justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`text-warn`,"data-testid":`settings-debugging-restart-note`,children:`Takes effect when OonaCode restarts. The host service and your chats keep running.`}),(0,K.jsx)(X,{size:`sm`,variant:`primary`,onClick:()=>void f(),disabled:s!==null||!e.relaunchApp,"data-testid":`settings-debugging-restart`,children:`Restart now`})]}):null,s?(0,K.jsx)(`div`,{className:`mt-1 text-fg-faint`,children:s}):null]})]})}function uJ({open:e,onClose:t}){let{state:n,actions:r}=q(),[i,a]=(0,v.useState)(`general`),o=n.ui.settingsSection;(0,v.useEffect)(()=>{e&&o&&a(o)},[e,o]),(0,v.useEffect)(()=>{e&&!n.settings&&r.refreshSettings()},[e,n.settings,r]);let s=Jq()!==null,c=s?qq:qq.filter(e=>e.id!==`developer`);return(0,K.jsx)(JS,{open:e,title:`Settings`,onClose:t,wide:!0,footer:(0,K.jsx)(X,{onClick:t,children:`Done`}),children:(0,K.jsxs)(`div`,{className:`flex min-h-[22rem] gap-4`,children:[(0,K.jsxs)(`nav`,{className:`w-36 shrink-0 space-y-0.5`,"aria-label":`Settings sections`,children:[c.map(e=>{let t=e.icon;return(0,K.jsxs)(`button`,{type:`button`,onClick:()=>a(e.id),"aria-current":i===e.id?`true`:void 0,className:G(`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm`,i===e.id?`bg-accent-soft font-medium text-accent`:`text-fg-muted hover:bg-surface-2`),children:[(0,K.jsx)(t,{className:`w-3.5 h-3.5`}),e.label]},e.id)}),(0,K.jsxs)(`div`,{className:`pt-3 text-[11px] text-fg-faint`,children:[`OonaCode Desktop v`,Gx(typeof window<`u`&&window.oonacode?.appVersion||n.connection.appVersion||`0.0.0`,Wx({bridge:typeof window<`u`?window.oonacode:void 0,info:n.info}))]})]}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[i===`general`?(0,K.jsx)(Yq,{}):null,i===`safeguards`?(0,K.jsx)(Hq,{}):null,i===`theme`?(0,K.jsx)(Qq,{}):null,i===`advanced`?(0,K.jsx)($q,{}):null,i===`skills`?(0,K.jsx)(Uq,{}):null,i===`mcp`?(0,K.jsx)(Kq,{}):null,i===`providers`?(0,K.jsx)(eJ,{}):null,i===`devices`?(0,K.jsx)(tJ,{}):null,i===`host`?(0,K.jsx)(sJ,{}):null,i===`developer`&&s?(0,K.jsx)(lJ,{}):null]})]})})}function dJ({toast:e}){let{actions:t}=q();(0,v.useEffect)(()=>{let n=setTimeout(()=>t.dismissToast(e.id),e.kind===`error`?9e3:5e3);return()=>clearTimeout(n)},[e.id,e.kind,t]);let n=e.kind===`error`?`border-danger/50 bg-danger-soft text-danger`:e.kind===`success`?`border-ok/50 bg-ok-soft text-ok`:`border-border bg-surface text-fg`;return(0,K.jsxs)(`div`,{role:e.kind===`error`?`alert`:`status`,className:G(`pointer-events-auto flex max-w-sm items-start gap-2 rounded-md border px-3 py-2 text-sm shadow-md`,n),children:[e.kind===`error`?(0,K.jsx)(Y.Alert,{className:`mt-0.5 w-4 h-4`}):e.kind===`success`?(0,K.jsx)(Y.Check,{className:`mt-0.5 w-4 h-4`}):null,(0,K.jsx)(`div`,{className:`pre-wrap min-w-0 flex-1`,children:e.text}),(0,K.jsx)(`button`,{type:`button`,"aria-label":`Dismiss`,className:`opacity-60 hover:opacity-100`,onClick:()=>t.dismissToast(e.id),children:(0,K.jsx)(Y.X,{className:`w-3.5 h-3.5`})})]})}function fJ(){let{state:e}=q();return e.toasts.length===0?null:(0,K.jsx)(`div`,{className:`pointer-events-none fixed bottom-4 right-4 z-50 flex flex-col gap-2`,children:e.toasts.map(e=>(0,K.jsx)(dJ,{toast:e},e.id))})}var pJ=2e3;function mJ(e){if(!hJ(e))return;let t=typeof window<`u`?window.oonacode:void 0;if(t?.openExternal){t.openExternal(e).catch(()=>void 0);return}typeof window<`u`&&window.open(e,`_blank`,`noopener,noreferrer`)}function hJ(e){if(typeof e!=`string`||e===``)return!1;try{let{protocol:t}=new URL(e);return t===`http:`||t===`https:`}catch{return!1}}function gJ(e){if(e.message)return e.message;switch(e.status){case`denied`:return`That request was denied in the browser. Start again if it was you.`;case`expired`:return`The code expired before it was approved. Start again for a fresh one.`;default:return`The sign-in could not be started. Check that this PC can reach the gateway.`}}function _J({children:e,testId:t}){let{state:n}=q(),r=n.connection.hostName??n.info?.hostName??null;return(0,K.jsxs)(`div`,{className:`flex h-full flex-col bg-bg text-fg`,"data-testid":t,children:[(0,K.jsxs)(`header`,{className:`flex h-12 shrink-0 items-center gap-2 border-b border-border bg-surface px-3`,children:[(0,K.jsx)(`span`,{className:`font-semibold tracking-tight`,children:`OonaCode`}),r?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`text-fg-faint`,children:`/`}),(0,K.jsx)(`span`,{className:`truncate text-sm text-fg-muted`,"data-testid":`frame-host-name`,children:r})]}):null]}),(0,K.jsx)(`main`,{className:`flex min-h-0 flex-1 items-start justify-center overflow-y-auto p-6`,children:(0,K.jsx)(`div`,{className:`w-full max-w-md py-6`,children:e})}),(0,K.jsx)(fJ,{})]})}function vJ(){return(0,K.jsx)(_J,{testId:`account-loading`,children:(0,K.jsxs)(`div`,{role:`status`,className:`flex items-center gap-2 text-sm text-fg-muted`,children:[(0,K.jsx)(Y.Spinner,{className:`w-4 h-4`}),(0,K.jsx)(`span`,{children:`Checking your account…`})]})})}function yJ({link:e}){let{actions:t}=q(),[n,r]=(0,v.useState)(!1),i=e.verificationUrl??``,a=e.verificationUrlComplete??i,o=hJ(a),s=t.refreshAccountLink;return(0,v.useEffect)(()=>{let e=setInterval(()=>void s(),pJ);return()=>clearInterval(e)},[s]),(0,K.jsxs)(`div`,{className:`space-y-3`,"data-testid":`link-waiting`,children:[(0,K.jsxs)(`ol`,{className:`space-y-2 text-sm`,children:[(0,K.jsxs)(`li`,{className:`flex flex-wrap items-baseline gap-2`,children:[(0,K.jsx)(`span`,{className:`text-fg-muted`,children:`1. Open`}),o?(0,K.jsx)(`a`,{className:`break-all font-medium text-accent underline`,href:a,target:`_blank`,rel:`noopener noreferrer`,"data-testid":`link-url`,onClick:e=>{window.oonacode?.openExternal&&(e.preventDefault(),mJ(a))},children:i}):(0,K.jsx)(`span`,{className:`break-all font-medium`,"data-testid":`link-url`,children:i})]}),(0,K.jsxs)(`li`,{className:`flex flex-wrap items-baseline gap-2`,children:[(0,K.jsx)(`span`,{className:`text-fg-muted`,children:`2. Enter`}),(0,K.jsx)(`span`,{className:`select-all rounded-md border border-border bg-surface-2 px-2.5 py-1 font-mono text-base tracking-widest`,"data-testid":`link-user-code`,children:e.userCode})]})]}),(0,K.jsxs)(`p`,{className:`flex items-center gap-2 text-xs text-fg-muted`,role:`status`,children:[(0,K.jsx)(Y.Spinner,{className:`w-3.5 h-3.5`}),(0,K.jsx)(`span`,{children:`Waiting for approval in your browser…`})]}),(0,K.jsx)(`p`,{className:`text-xs text-fg-faint`,children:`Approve this code only if you are looking at it on your own screen right now. It is good for a few minutes and can be used once.`}),(0,K.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[o?(0,K.jsxs)(X,{size:`sm`,onClick:()=>mJ(a),"data-testid":`link-reopen`,children:[(0,K.jsx)(Y.LogIn,{className:`w-3.5 h-3.5`}),` Open the browser again`]}):null,(0,K.jsx)(X,{size:`sm`,variant:`ghost`,busy:n,"data-testid":`link-cancel`,onClick:()=>{r(!0),t.cancelAccountLink().finally(()=>r(!1))},children:`Cancel`})]})]})}function bJ(e){if(typeof e!=`string`||e===``)return null;try{let t=new URL(e).hostname;if(!t)return null;let n=/^api(?:-([a-z0-9-]+))?.(.+)$/i.exec(t),r=n?.[2];return n&&r?n[1]?n[1]+`.`+r:r:t}catch{return null}}function xJ(){let{state:e,actions:t}=q(),n=e.accountLink,r=bJ(n?.verificationUrl??e.settings?.gatewayUrl??e.account?.gatewayUrl??null),[i,a]=(0,v.useState)(!1),o=(0,v.useCallback)(async()=>{a(!0);try{let e=await t.startAccountLink();e?.status===`waiting`&&mJ(e.verificationUrlComplete??e.verificationUrl??``)}finally{a(!1)}},[t]);if(n?.status===`waiting`)return(0,K.jsx)(yJ,{link:n});let s=n&&(n.status===`denied`||n.status===`expired`);return(0,K.jsxs)(`div`,{className:`space-y-2`,children:[s?(0,K.jsx)(`p`,{role:`status`,"data-testid":`link-refused`,className:`rounded-md border border-warn/50 bg-warn-soft px-3 py-2 text-xs text-fg`,children:gJ(n)}):null,(0,K.jsxs)(X,{variant:`primary`,busy:i,onClick:()=>void o(),"data-testid":`link-start`,className:`w-full justify-center`,children:[(0,K.jsx)(Y.LogIn,{className:`w-3.5 h-3.5`}),s?`Try again in your browser`:`Sign in with your browser`]}),(0,K.jsxs)(`p`,{className:`text-xs text-fg-faint`,"data-testid":`link-site-note`,children:[`Opens `,r??`your account page`,` and shows a short code to confirm. Your password is never typed on this machine, and this PC never sees anyone else's.`]})]})}function SJ(){let{state:e}=q(),[t,n]=(0,v.useState)(!1),r=t||e.emailVerification!==null;return(0,K.jsx)(_J,{testId:`sign-in-view`,children:(0,K.jsxs)(`div`,{className:`space-y-5`,children:[(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,K.jsx)(`h1`,{className:`text-xl font-semibold tracking-tight`,children:`Sign in to use OonaCode`}),(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,children:`OonaCode runs the agent on this PC, with your own providers — but it needs an OonaCode account. There is no guest mode.`})]}),(0,K.jsx)(xJ,{}),(0,K.jsx)(`div`,{className:G(`space-y-3 border-t border-border pt-4`,r?``:`text-center`),children:r?(0,K.jsx)(YC,{}):(0,K.jsx)(X,{size:`sm`,variant:`ghost`,"data-testid":`use-password`,onClick:()=>n(!0),children:`Use an email and password instead`})})]})})}function CJ(){let{state:e,actions:t}=q(),[n,r]=(0,v.useState)(``),[i,a]=(0,v.useState)(!0),[o,s]=(0,v.useState)(!1),[c,l]=(0,v.useState)(null),u=(0,v.useRef)(null);return(0,v.useEffect)(()=>{let e=()=>u.current?.focus();e();let t=setTimeout(e,60);return()=>clearTimeout(t)},[]),(0,K.jsxs)(`div`,{className:`flex min-h-screen items-center justify-center bg-surface-1 p-6`,"data-testid":`locked-view`,onMouseDown:()=>u.current?.focus(),children:[(0,K.jsxs)(`form`,{onSubmit:e=>{if(e.preventDefault(),!n||o)return;s(!0),l(null);let a=null;t.unlock(n,{keepUnlocked:i,onError:e=>{a=e}}).then(e=>{s(!1),e?r(``):l(a??`Wrong password — the vault stays locked.`)})},className:`w-full max-w-sm space-y-4 text-center`,children:[(0,K.jsx)(Y.Lock,{className:`mx-auto h-10 w-10 text-fg-faint`}),(0,K.jsx)(`h1`,{className:`text-lg font-semibold`,children:`This device is locked`}),(0,K.jsx)(`p`,{className:`text-sm text-fg-muted`,children:`The vault, your keys and every session on this PC stay unreadable until you unlock — with your account password here, or remotely from another of your devices.`}),(0,K.jsx)(`input`,{ref:u,type:`password`,className:Z,value:n,onChange:e=>r(e.target.value),onMouseDown:e=>e.stopPropagation(),placeholder:`Account password`,autoFocus:!0,"data-testid":`locked-password`}),(0,K.jsxs)(`label`,{className:`flex items-start justify-center gap-2 text-sm text-fg-muted`,children:[(0,K.jsx)(`input`,{type:`checkbox`,className:`mt-1`,checked:i,onChange:e=>a(e.target.checked),"data-testid":`locked-keep-unlocked`}),(0,K.jsx)(`span`,{children:`Keep me unlocked on this PC`})]}),c?(0,K.jsx)(`div`,{className:`text-sm text-danger`,"data-testid":`locked-error`,children:c}):null,(0,K.jsx)(X,{type:`submit`,variant:`primary`,busy:o,disabled:!n,children:`Unlock`}),(0,K.jsxs)(`div`,{className:`text-xs text-fg-faint`,children:[`Signed in as `,e.account?.email??`this account`,` ·`,` `,(0,K.jsx)(`button`,{type:`button`,className:`underline hover:text-fg`,onClick:()=>void t.logout(),children:`Sign out`})]})]}),(0,K.jsx)(fJ,{})]})}function wJ(e){let t=new Date(e);return t.setHours(0,0,0,0),t.getTime()}function TJ(e,t,n){let r=wJ(n),i=e.filter(e=>!t.has(e.id)).sort((e,t)=>t.mtime-e.mtime),a=[],o=[];for(let e of i)(e.mtime>=r?a:o).push(e);return{today:a,older:o}}function EJ(e,t){let n=t.trim().toLowerCase();return n===``||e.toLowerCase().includes(n)}var DJ=3e4,OJ=`flex w-full items-center gap-1 rounded px-2 py-1 text-left text-[11px] font-semibold uppercase tracking-wide text-fg-faint hover:bg-surface-2`,kJ=`flex items-center gap-1 px-2 pb-0.5 pt-2 text-[11px] font-semibold uppercase tracking-wide text-fg-faint`,AJ=`flex w-full items-center gap-1.5 rounded border-l-2 border-project/70 bg-surface-2/40 px-2 py-1.5 text-left text-[13px] font-semibold tracking-normal text-fg hover:bg-surface-2`,jJ=`flex min-w-0 items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm text-fg hover:bg-surface-2`;function MJ(){let{state:e,actions:t}=q(),n=e.ui.sidebarPinnedOverride??e.prefs.sidebarPinned,[r,i]=(0,v.useState)($G),[a,o]=(0,v.useState)({}),[s,c]=(0,v.useState)(!1),l=JB(),[u,d]=(0,v.useState)(null),f=(0,v.useCallback)(()=>d(null),[]),p=zJ(),m=rV(),h=wJ(m),g=e.prefs.sidebarView,_=e.prefs.pinned,y=e=>o(t=>({...t,[e]:t[e]!==!0})),b=e=>a[e]===!0,x=e.prefs.collapsedProjects,S=e=>x.includes(e),C=e=>{let n=S(e)?x.filter(t=>t!==e):[...x,e];t.savePrefs({collapsedProjects:n})},w=(0,v.useCallback)(e=>{t.selectSession(e),window.innerWidth<768&&t.setSidebar(!1)},[t]),T=(0,v.useCallback)(e=>{t.openPage({kind:`project`,projectId:e}),window.innerWidth<768&&t.setSidebar(!1)},[t]),E=e.search.trim()!==``,D=(0,v.useMemo)(()=>{let t=e.sessions.filter(t=>!e.remote.tabs[t.id]);if(!E)return t;let n=Date.now();return t.filter(t=>rK(t,e.search,r,n))},[e.sessions,e.remote.tabs,e.search,E,r]),O=(0,v.useMemo)(()=>{let t=new Map(D.map(e=>[e.id,e])),n=[];for(let r of _)if(r.kind===`chat`){let i=t.get(r.id)??(E?void 0:e.pinnedRows[r.id]);i&&!e.remote.tabs[i.id]&&n.push({kind:`chat`,session:i})}else{let t=e.vaultProjects.find(e=>e.id===r.id);if(!t||!EJ(t.name,E?e.search:``))continue;let i=e.sessions.filter(e=>e.projectId===t.id);n.push({kind:`project`,project:t,sessions:i})}return n},[_,D,E,e.search,e.pinnedRows,e.remote.tabs,e.vaultProjects,e.sessions]),k=(0,v.useMemo)(()=>new Set(_.filter(e=>e.kind===`chat`).map(e=>e.id)),[_]),A=(0,v.useMemo)(()=>g===`recent`?TJ(D,k,h):null,[g,D,k,h]),j=(0,v.useMemo)(()=>new Map(e.vaultProjects.map(e=>[e.id,e.name])),[e.vaultProjects]),M=(0,v.useMemo)(()=>{if(g!==`projects`)return[];let t=new Map;for(let n of e.vaultProjects)t.set(n.id,{name:n.name,sessions:[]});let n=[];for(let e of D){let r=e.projectId?t.get(e.projectId):void 0;r?r.sessions.push(e):n.push(e)}let r=[...t.entries()].map(([e,t])=>({key:e,name:t.name,projectId:e,sessions:t.sessions.slice().sort((e,t)=>t.mtime-e.mtime)}));return r.sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:`base`})),(n.length>0||r.length===0)&&r.push({key:`none`,name:`No project`,projectId:null,sessions:n.slice().sort((e,t)=>t.mtime-e.mtime)}),E?r.filter(e=>e.sessions.length>0):r},[g,e.vaultProjects,D,E]),N=e=>{t.savePrefs({collapsedProjects:e?M.map(e=>e.key):[]})},ee=(0,v.useMemo)(()=>e.remote.hosts.filter(e=>!e.isSelf),[e.remote.hosts]),P=()=>{let e=b(`remote`);y(`remote`),e&&t.refreshHosts()},F=!b(`remote`),I=(0,v.useRef)(!1);I.current=e.remote.loading,(0,v.useEffect)(()=>{if(!F)return;let e=()=>{document.visibilityState===`hidden`||I.current||t.refreshHosts()},n=setInterval(e,DJ);return window.addEventListener(`focus`,e),()=>{clearInterval(n),window.removeEventListener(`focus`,e)}},[F,t]);let te=e=>{t.setSearch(e),t.refreshSessions(e)},[ne,re]=(0,v.useState)(!1),[L,R]=(0,v.useState)(0),z=(0,v.useRef)(null),[B,ie]=(0,v.useState)(!1),[ae,oe]=(0,v.useState)(``),se=r.mode===`conversations`,ce=se?ae:e.search,le=ne||ce!==``||B;(0,v.useEffect)(()=>{ne&&z.current?.focus()},[ne,L]),(0,v.useEffect)(()=>{let e=e=>{!(e.ctrlKey||e.metaKey)||e.shiftKey||e.altKey||(e.key===`k`||e.key===`K`)&&window.oonacode?.host!==`vscode`&&(e.preventDefault(),re(!0),R(e=>e+1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]);let ue=()=>{e.search!==``&&te(``),oe(``),ie(!1),re(!1)},de=t=>{t.mode!==r.mode&&(t.mode===`conversations`?(oe(e.search),e.search!==``&&te(``)):(ae!==``&&te(ae),oe(``))),i(t)},fe=D.length,pe=e=>{e!==g&&t.savePrefs({sidebarView:e})},me=e.page,he={onOpen:w,onMenu:l.openMenu,clock:m},ge=!e.sessionsLoading&&fe===0&&!e.sessionsError?(0,K.jsx)(`div`,{className:`px-3 py-3 text-center text-xs text-fg-faint`,"data-testid":`sessions-empty`,children:E?`No sessions match.`:`No sessions yet — press + to start one.`}):null;return(0,K.jsxs)(`nav`,{className:`flex h-full w-full flex-col bg-surface`,"aria-label":`Sessions`,children:[(0,K.jsxs)(`div`,{className:`relative flex flex-wrap items-center justify-end gap-x-2 gap-y-1 border-b border-border p-2`,children:[(0,K.jsx)(US,{label:`Search chats (Ctrl+K)`,onClick:()=>{re(!0),R(e=>e+1)},"data-testid":`open-search`,children:(0,K.jsx)(Y.Search,{})}),(0,K.jsx)(`span`,{className:`flex-1`}),le?(0,K.jsxs)(`div`,{className:`absolute inset-0 z-10 flex items-center gap-1 bg-surface px-2`,"data-testid":`sidebar-search`,children:[(0,K.jsxs)(`div`,{className:`relative flex-1`,children:[(0,K.jsx)(Y.Search,{className:`pointer-events-none absolute left-2 top-2 w-3.5 h-3.5 text-fg-faint`}),(0,K.jsx)(`input`,{ref:z,"aria-label":`Search sessions`,className:G(Z,`pl-7`),placeholder:se?`Search every chat`:`Search chats`,value:ce,onChange:e=>se?oe(e.target.value):te(e.target.value),onBlur:()=>{ce===``&&!B&&re(!1)},onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),ue())}})]}),(0,K.jsxs)(US,{label:B?`Hide search options`:`Search options`,className:G(`relative`,B&&`text-accent`),"aria-pressed":B,onMouseDown:e=>e.preventDefault(),onClick:()=>ie(e=>!e),"data-testid":`search-options-toggle`,children:[(0,K.jsx)(Y.Sliders,{}),tK(r)?(0,K.jsx)(`span`,{className:`absolute right-0.5 top-0.5 h-1.5 w-1.5 rounded-full bg-accent`,"data-testid":`search-options-dot`}):null]}),(0,K.jsx)(US,{label:`Close search`,onMouseDown:e=>e.preventDefault(),onClick:ue,"data-testid":`close-search`,children:(0,K.jsx)(Y.X,{})})]}):null,le&&B?(0,K.jsx)(cK,{options:r,onChange:de,projects:e.vaultProjects,onClose:()=>{ie(!1),z.current?.focus()}}):null,(0,K.jsx)(US,{label:`Refresh sessions`,onClick:()=>{t.refreshSessions(),t.refreshHosts()},children:(0,K.jsx)(Y.Refresh,{className:e.sessionsLoading?`spin`:``})}),e.account?.loggedIn?(0,K.jsx)(US,{label:`Import chats from your other coding agents`,onClick:()=>t.openDialog(`import-claude`),"data-testid":`open-import-claude`,children:(0,K.jsx)(Y.Download,{})}):null,e.account?.loggedIn?(0,K.jsx)(US,{label:`Export my chats`,onClick:()=>t.openDialog(`export-chats`),"data-testid":`open-export-chats`,children:(0,K.jsx)(Y.Upload,{})}):null,g===`projects`?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(US,{label:`Collapse all projects`,onClick:()=>N(!0),"data-testid":`projects-collapse-all`,children:(0,K.jsx)(Y.CollapseAll,{})}),(0,K.jsx)(US,{label:`Expand all projects`,onClick:()=>N(!1),"data-testid":`projects-expand-all`,children:(0,K.jsx)(Y.ExpandAll,{})})]}):null,(0,K.jsx)(US,{label:`Conversations — what your chats send each other`,onClick:()=>t.openConversations(),"data-testid":`open-conversations`,children:(0,K.jsx)(Y.Chats,{})}),(0,K.jsx)(US,{label:`What your chats are about — each chat’s about and what it cost`,onClick:()=>t.openChatAbouts(),"data-testid":`open-chat-abouts`,children:(0,K.jsx)(Y.Info,{})}),(0,K.jsx)(US,{label:`Project manager — review chats and suggest what to send each next`,onClick:()=>t.openProjectManager(),"data-testid":`open-project-manager`,children:(0,K.jsx)(Y.Clipboard,{})}),(0,K.jsx)(US,{label:n?`Hide the session list — it slides in when the pointer reaches the left edge`:`Pin the session list beside the chat`,className:G(`hidden md:inline-flex`,n?`text-accent`:`text-fg-muted`),"aria-pressed":n,onClick:()=>t.toggleSidebarPinned(),"data-testid":`sidebar-pin`,children:(0,K.jsx)(Y.Pin,{})})]}),(0,K.jsx)(NJ,{clock:m}),(0,K.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-1 pb-2`,children:se&&ae.trim()!==``?(0,K.jsx)(uK,{query:ae,options:r}):(0,K.jsxs)(K.Fragment,{children:[O.length>0?(0,K.jsxs)(`div`,{className:`mb-1`,"data-testid":`section-pinned`,children:[(0,K.jsx)(`div`,{className:kJ,children:(0,K.jsx)(`span`,{children:`Pinned`})}),O.map(t=>t.kind===`chat`?(0,K.jsx)(KB,{session:t.session,active:t.session.id===e.currentSessionId&&me===null,link:e.sessionLinks[t.session.id]??null,menuOpen:l.menuFor===t.session.id,kindIcon:!0,testIdPrefix:`pinned-session`,...he},`chat:${t.session.id}`):(0,K.jsx)(IJ,{project:t.project,sessions:t.sessions,active:me?.kind===`project`&&me.projectId===t.project.id,onOpen:T,onMenu:(e,n)=>d({target:{projectId:t.project.id,foldKey:null},at:e,el:n})},`project:${t.project.id}`))]}):null,(0,K.jsxs)(`div`,{className:`mb-1`,"data-testid":`sessions-local`,children:[e.sessionsError?(0,K.jsx)(`div`,{className:`px-2 py-2 text-xs text-danger`,children:e.sessionsError}):null,A?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{"data-testid":`section-today`,children:[(0,K.jsxs)(`div`,{className:kJ,children:[(0,K.jsx)(`span`,{children:`Today`}),(0,K.jsx)(`span`,{className:`font-normal normal-case`,children:A.today.length||``}),(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(FJ,{view:g,onChange:pe})]}),ge??(A.today.length===0?(0,K.jsx)(`div`,{className:`px-3 py-1 text-xs text-fg-faint`,"data-testid":`today-empty`,children:E?`Nothing from today matches.`:`Nothing yet today.`}):A.today.map(t=>(0,K.jsx)(KB,{session:t,active:t.id===e.currentSessionId&&me===null,link:e.sessionLinks[t.id]??null,menuOpen:l.menuFor===t.id,projectName:t.projectId?j.get(t.projectId)??null:null,...he},t.id)))]}),A.older.length>0?(0,K.jsxs)(`div`,{"data-testid":`section-older`,children:[(0,K.jsxs)(`div`,{className:kJ,children:[(0,K.jsx)(`span`,{children:`Older`}),(0,K.jsx)(`span`,{className:`font-normal normal-case`,children:A.older.length})]}),A.older.map(t=>(0,K.jsx)(KB,{session:t,active:t.id===e.currentSessionId&&me===null,link:e.sessionLinks[t.id]??null,menuOpen:l.menuFor===t.id,projectName:t.projectId?j.get(t.projectId)??null:null,...he},t.id))]}):null]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:kJ,"data-testid":`section-by-project`,children:[(0,K.jsx)(`span`,{children:`By project`}),(0,K.jsx)(`span`,{className:`flex-1`}),(0,K.jsx)(FJ,{view:g,onChange:pe})]}),ge,M.map(n=>{let r=`local:${n.key}`;return(0,K.jsxs)(`div`,{className:`mb-1 pl-2`,"data-testid":`project-group-${n.key}`,children:[(0,K.jsxs)(`div`,{className:`group relative flex items-center`,children:[(0,K.jsx)(BJ,{group:n,collapsed:S(n.key),onToggle:()=>C(n.key),onMenu:(e,t)=>d({target:{projectId:n.projectId,foldKey:n.key},at:e,el:t}),menuOpen:u?.target.foldKey===n.key}),n.projectId?(0,K.jsxs)(`div`,{className:`absolute right-1 hidden items-center rounded bg-surface/90 group-hover:flex group-focus-within:flex`,children:[(0,K.jsx)(US,{label:`Settings of ${n.name}`,className:`p-1`,"data-testid":`project-settings-${n.key}`,onClick:e=>{e.stopPropagation(),t.openProjectSettings(n.projectId)},children:(0,K.jsx)(Y.Settings,{className:`w-3.5 h-3.5`})}),(0,K.jsx)(US,{label:`New chat in ${n.name}`,className:`p-1`,"data-testid":`project-new-chat-${n.key}`,onClick:e=>{e.stopPropagation(),t.newTab({projectId:n.projectId})},children:(0,K.jsx)(Y.Plus,{className:`w-3.5 h-3.5`})})]}):null]}),S(n.key)?null:n.sessions.map(t=>(0,K.jsx)(KB,{session:t,active:t.id===e.currentSessionId&&me===null,link:e.sessionLinks[t.id]??null,menuOpen:l.menuFor===t.id,...he},t.id))]},r)})]})]}),(0,K.jsxs)(`div`,{className:`mb-1`,"data-testid":`sessions-remote`,children:[(0,K.jsxs)(`button`,{type:`button`,className:OJ,onClick:P,"aria-expanded":!b(`remote`),children:[(0,K.jsx)(Y.Chevron,{open:!b(`remote`),className:`w-3 h-3`}),(0,K.jsx)(Y.Globe,{className:`w-3 h-3`}),(0,K.jsx)(`span`,{className:`truncate`,children:`Remote`}),(0,K.jsx)(`span`,{className:`ml-auto font-normal`,children:ee.length})]}),b(`remote`)?null:(0,K.jsxs)(K.Fragment,{children:[!e.remote.supported||e.remote.reason===`logged_out`?(0,K.jsx)(`div`,{className:`px-3 py-3 text-xs text-fg-faint`,children:`Sign in to see the sessions of your other devices.`}):ee.length===0?(0,K.jsx)(`div`,{className:`px-3 py-3 text-xs text-fg-faint`,children:e.remote.loading?`Looking for your other devices…`:`No other devices yet.`}):null,ee.map(e=>(0,K.jsx)(LJ,{host:e,collapsed:b(`host:${e.hostId}`)||a[`host:${e.hostId}`]===void 0,onToggle:()=>{let n=`host:${e.hostId}`,r=a[n]===void 0||a[n]===!0;o(e=>({...e,[n]:!r})),r&&t.refreshHostSessions(e.hostId)}},e.hostId))]})]})]})}),(0,K.jsx)(`div`,{className:`shrink-0 border-t border-border px-3 py-2 text-[11px] text-fg-faint`,children:(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsxs)(`button`,{type:`button`,"data-testid":`app-version`,title:`What's new in this version`,className:`truncate hover:text-fg hover:underline`,onClick:()=>t.openDialog(`whats-new`),children:[`OonaCode Desktop v`,p]}),(0,K.jsx)(US,{label:`Lock this device — vault and sessions`,className:`p-1`,"data-testid":`lock-device`,onClick:()=>c(!0),children:(0,K.jsx)(Y.Lock,{className:`h-3.5 w-3.5`})})]})}),(0,K.jsx)(iw,{open:u!==null,at:u?.at??{x:0,y:0},anchorEl:u?.el??null,label:`Project actions`,testId:`project-context-menu`,onClose:f,items:u?YB({projectId:u.target.projectId,pinned:u.target.projectId!==null&&Al(_,`project`,u.target.projectId),fold:u.target.foldKey===null?null:{collapsed:S(u.target.foldKey),onToggle:()=>C(u.target.foldKey)},actions:t}):[]}),l.element,(0,K.jsx)(QS,{open:s,title:`Lock this device?`,confirmLabel:`Lock`,message:`Every chat closes and nothing on this PC can be read or run until you unlock — here with your password, or remotely from another device.`,onConfirm:()=>void t.lockDevice(),onClose:()=>c(!1)})]})}function NJ({clock:e}){let{state:t,actions:n}=q(),[r,i]=(0,v.useState)(null),a=(0,v.useCallback)(()=>i(null),[]),o=t.page,s=()=>{window.innerWidth<768&&n.setSidebar(!1)};return(0,K.jsxs)(`div`,{className:`shrink-0 border-b border-border px-1 py-1`,"data-testid":`sidebar-nav`,children:[(0,K.jsxs)(`div`,{className:`flex items-center rounded-md hover:bg-surface-2`,children:[(0,K.jsxs)(`button`,{type:`button`,className:G(jJ,`flex-1 hover:bg-transparent`),title:`New chat (Ctrl+T)`,onClick:()=>{n.newTab(),s()},"data-testid":`sidebar-new`,children:[(0,K.jsx)(Y.Edit,{className:`w-4 h-4 shrink-0 text-fg-muted`}),(0,K.jsx)(`span`,{children:`New`})]}),(0,K.jsx)(US,{label:`Start a new chat or a new project`,className:`mr-1 p-1`,"aria-haspopup":`menu`,onClick:e=>{let t=e.currentTarget.getBoundingClientRect();i({at:{x:t.left,y:t.bottom+2},el:e.currentTarget})},"data-testid":`sidebar-new-menu`,children:(0,K.jsx)(Y.Chevron,{open:!0,className:`w-3.5 h-3.5`})})]}),(0,K.jsxs)(`button`,{type:`button`,className:G(jJ,`w-full`,o?.kind===`projects`||o?.kind===`project`?`bg-surface-2 font-medium`:``),"aria-current":o?.kind===`projects`?`page`:void 0,onClick:()=>{n.openPage({kind:`projects`}),s()},"data-testid":`open-projects`,children:[(0,K.jsx)(Y.Project,{className:`w-4 h-4 shrink-0 text-fg-muted`}),(0,K.jsx)(`span`,{children:`Projects`})]}),(0,K.jsx)(PJ,{clock:e,active:o?.kind===`scheduled`,onOpen:()=>{n.openPage({kind:`scheduled`}),s()}}),(0,K.jsx)(iw,{open:r!==null,at:r?.at??{x:0,y:0},anchorEl:r?.el??null,label:`New`,testId:`sidebar-new-context-menu`,onClose:a,items:[{key:`chat`,label:`New chat`,hint:`Ctrl+T`,icon:(0,K.jsx)(Y.Chats,{className:`w-3.5 h-3.5`}),onSelect:()=>{n.newTab(),s()},testId:`sidebar-new-chat`},{key:`project`,label:`New project…`,icon:(0,K.jsx)(Y.Project,{className:`w-3.5 h-3.5`}),onSelect:()=>n.openNewProject(),testId:`sidebar-new-project`}]})]})}function PJ({clock:e,active:t,onOpen:n}){let{tasks:r}=nV(),i=(0,v.useMemo)(()=>r?fV(r,e):null,[r,e]);return(0,K.jsxs)(`button`,{type:`button`,className:G(jJ,`w-full`,t?`bg-surface-2 font-medium`:``),"aria-current":t?`page`:void 0,onClick:n,title:i?.text??`Every scheduled task on this PC`,"data-testid":`open-scheduled`,children:[(0,K.jsx)(Y.Clock,{className:`w-4 h-4 shrink-0 text-fg-muted`}),(0,K.jsx)(`span`,{className:`flex-1`,children:`Scheduled`}),i?(0,K.jsx)(`span`,{className:G(`mr-1 inline-block h-2 w-2 shrink-0 rounded-full`,i.tone===`stuck`?`bg-warn`:`bg-accent`),"aria-label":i.text,"data-testid":`scheduled-dot`,"data-tone":i.tone}):null]})}function FJ({view:e,onChange:t}){let[n,r]=(0,v.useState)(null),i=(0,v.useCallback)(()=>r(null),[]),a=e=>e?(0,K.jsx)(Y.Check,{className:`w-3.5 h-3.5 text-accent`}):(0,K.jsx)(`span`,{className:`w-3.5`});return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(US,{label:`How the list is laid out`,className:`p-0.5 normal-case`,"aria-haspopup":`menu`,onClick:e=>{let t=e.currentTarget.getBoundingClientRect();r({at:{x:t.left,y:t.bottom+2},el:e.currentTarget})},"data-testid":`sidebar-view-options`,children:(0,K.jsx)(Y.Sliders,{className:`w-3.5 h-3.5`})}),(0,K.jsx)(iw,{open:n!==null,at:n?.at??{x:0,y:0},anchorEl:n?.el??null,label:`How the list is laid out`,testId:`sidebar-view-menu`,onClose:i,items:[{key:`recent`,label:`Recent — Today, then Older`,icon:a(e===`recent`),onSelect:()=>t(`recent`),testId:`sidebar-view-recent`},{key:`projects`,label:`By project`,icon:a(e===`projects`),onSelect:()=>t(`projects`),testId:`sidebar-view-projects`}]})]})}function IJ({project:e,sessions:t,active:n,onOpen:r,onMenu:i}){let a=(0,v.useRef)(null),o=e.sessionCount??t.length;return(0,K.jsxs)(`div`,{ref:a,className:G(`group relative flex items-center rounded-md`,n?`bg-accent-soft`:`hover:bg-surface-2`),onContextMenu:e=>{e.preventDefault(),i({x:e.clientX,y:e.clientY},a.current)},children:[(0,K.jsxs)(`button`,{type:`button`,className:`flex min-w-0 flex-1 items-center gap-2 py-1.5 pl-2 pr-8 text-left`,"aria-current":n?`page`:void 0,title:`Open ${e.name}`,onClick:()=>r(e.id),"data-testid":`pinned-project-${e.id}`,children:[(0,K.jsx)(Y.Project,{className:`w-3.5 h-3.5 shrink-0 text-project`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm text-fg`,children:e.name}),(0,K.jsx)(BB,{sessions:t,testId:`pinned-project-busy-${e.id}`}),(0,K.jsx)(`span`,{className:`shrink-0 rounded-full bg-surface-3 px-1.5 py-px text-[10px] font-semibold text-fg-muted`,children:o})]}),(0,K.jsx)(US,{label:`Project actions`,className:`pointer-events-none absolute right-1 bg-surface/90 p-1 opacity-0 group-focus-within:pointer-events-auto group-focus-within:opacity-100 group-hover:pointer-events-auto group-hover:opacity-100`,"data-testid":`pinned-project-menu-${e.id}`,onClick:e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();i({x:t.left,y:t.bottom+2},a.current)},children:(0,K.jsx)(Y.More,{className:`w-3.5 h-3.5`})})]})}function LJ({host:e,collapsed:t,onToggle:n}){let{state:r,actions:i}=q(),a=e.label||e.hostName,o=r.remote.sessions[e.hostId],s=r.remote.unreachable[e.hostId],c=s?Jp(s.reason,a,s.detail):null,[l,u]=(0,v.useState)(null),[d,f]=(0,v.useState)(null),p=e.remoteAccessOff===!0;return(0,K.jsxs)(`div`,{className:`mb-1 pl-2`,"data-testid":`remote-host-${e.hostId}`,children:[(0,K.jsxs)(`div`,{className:`group relative flex items-center`,children:[(0,K.jsxs)(`button`,{type:`button`,className:OJ,onClick:n,"aria-expanded":!t,title:e.online?`${a} — online`:`${a} — offline: its chats can be read while it is online`,children:[(0,K.jsx)(Y.Chevron,{open:!t,className:`w-3 h-3`}),(0,K.jsx)(`span`,{className:G(`inline-block h-2 w-2 shrink-0 rounded-full`,e.online?`bg-ok`:`bg-fg-faint`),"aria-label":e.online?`online`:`offline`}),(0,K.jsx)(`span`,{className:`truncate normal-case`,children:a}),p?(0,K.jsx)(`span`,{className:`shrink-0 rounded-full bg-warn-soft px-1.5 text-[10px] font-normal normal-case text-warn`,"data-testid":`remote-off-${e.hostId}`,children:`remote access off`}):null,(0,K.jsx)(`span`,{className:`ml-auto font-normal`,children:!p&&o?o.length:``})]}),(0,K.jsxs)(`div`,{className:`absolute right-1 hidden items-center rounded bg-surface/90 group-hover:flex group-focus-within:flex`,children:[(0,K.jsx)(US,{label:p?qp(a):e.online?`New chat on ${a}`:`${a} is offline — a new chat has to start on a PC that is awake`,className:`p-1`,disabled:!e.online||p,"data-testid":`remote-new-chat-${e.hostId}`,onClick:()=>void i.newRemoteTab(e.hostId),children:(0,K.jsx)(Y.Plus,{className:`w-3 h-3`})}),(0,K.jsx)(US,{label:`Unlock this device`,className:`p-1`,disabled:p,"data-testid":`remote-unlock-${e.hostId}`,onClick:()=>u(`unlock`),children:(0,K.jsx)(Y.Lock,{className:`w-3 h-3`})}),(0,K.jsx)(US,{label:`Rename device`,className:`p-1`,onClick:()=>u(`rename`),children:(0,K.jsx)(Y.Edit,{className:`w-3 h-3`})})]}),(0,K.jsx)($S,{open:l===`unlock`,title:`Unlock "${a}" remotely`,label:`Your account password — it never leaves this PC: the keys are sealed to that device and the server cannot read them.`,password:!0,submitLabel:`Unlock`,onSubmit:t=>void i.remoteUnlockHost(e.hostId,t),onClose:()=>u(null)}),(0,K.jsx)($S,{open:l===`rename`,title:`Rename device`,label:`Device name`,initialValue:a,onSubmit:t=>{t!==a&&i.renameHost(e.hostId,t)},onClose:()=>u(null)})]}),!t&&p?(0,K.jsx)(`div`,{className:`px-3 py-2 text-xs text-warn`,"data-testid":`remote-off-note-${e.hostId}`,children:qp(a)}):t?null:o===void 0?(0,K.jsx)(`div`,{className:`px-3 py-2 text-xs text-fg-faint`,children:`Loading…`}):o.length===0&&c?(0,K.jsx)(`div`,{className:`px-3 py-2 text-xs text-warn`,"data-testid":`remote-unreachable-${e.hostId}`,children:c}):o.length===0?(0,K.jsx)(`div`,{className:`px-3 py-2 text-xs text-fg-faint`,children:`No sessions on this device.`}):o.map(t=>(0,K.jsx)(RJ,{host:e,session:t,active:t.id===r.currentSessionId&&r.page===null,onConfirmDelete:()=>f(t)},t.id)),(0,K.jsx)(QS,{open:d!==null,title:`Delete this chat?`,message:`It is deleted on ${e.hostName} — the only place it is kept — so it is gone from every device. Files, folders and code on that PC are not touched — only the chat is deleted.`,onConfirm:()=>{d&&i.deleteRemoteSession(e.hostId,d.id)},onClose:()=>f(null)})]})}function RJ({host:e,session:t,active:n,onConfirmDelete:r}){let{actions:i}=q(),a=Q_(t);return(0,K.jsxs)(`div`,{className:G(`group flex items-center rounded-md`,n?`bg-accent-soft`:`hover:bg-surface-2`),children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{i.openRemoteSession(e.hostId,t.id),window.innerWidth<768&&i.setSidebar(!1)},className:`flex min-w-0 flex-1 items-center gap-2 px-2 py-1.5 text-left`,"aria-current":n?`true`:void 0,"data-testid":`remote-session-${t.id}`,title:e.online?void 0:`Read-only until that PC is online`,children:[(0,K.jsx)(RB,{status:t.status}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`div`,{className:G(`truncate text-sm`,n?`font-medium`:``),children:a}),(0,K.jsxs)(`div`,{className:`truncate text-[11px] text-fg-faint`,children:[W_(t.updatedAt),t.model?` · ${t.model}`:``,e.online?``:` · read-only`]})]})]}),(0,K.jsx)(`div`,{className:`mr-1 hidden items-center gap-0.5 rounded bg-surface/90 group-hover:flex group-focus-within:flex`,children:(0,K.jsx)(US,{label:e.online?`Delete this chat`:`That PC is asleep — a chat can only be deleted while the PC that holds it is online`,className:`p-1 hover:text-danger disabled:opacity-40`,disabled:!e.online,"data-testid":`remote-session-delete-${t.id}`,onClick:()=>{r()},children:(0,K.jsx)(Y.Trash,{className:`w-3.5 h-3.5`})})})]})}function zJ(){let{state:e}=q(),t=typeof window<`u`?window.oonacode:void 0;return Gx(t?.appVersion??e.bundleAppVersion??e.connection.appVersion??e.info?.appVersion??`0.0.0`,Wx({bridge:t,info:e.info}))}function BJ({group:e,collapsed:t,onToggle:n,onMenu:r,menuOpen:i=!1}){let a=(0,v.useRef)(null),o=(0,v.useRef)(null),[s,c]=(0,v.useState)(null),l=(0,v.useCallback)(()=>{o.current!==null&&(clearTimeout(o.current),o.current=null),c(null)},[]),u=(0,v.useRef)(i);return u.current=i,(0,v.useEffect)(()=>{i&&l()},[i,l]),(0,v.useEffect)(()=>{if(s===null)return;let e=e=>{nw(e.target,a.current)&&l()};return window.addEventListener(`scroll`,e,!0),()=>window.removeEventListener(`scroll`,e,!0)},[s,l]),(0,v.useEffect)(()=>()=>{o.current!==null&&clearTimeout(o.current)},[]),(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`button`,{ref:a,type:`button`,className:AJ,onClick:()=>{l(),n()},onMouseEnter:()=>{o.current!==null&&clearTimeout(o.current),!u.current&&(o.current=setTimeout(()=>{o.current=null,a.current&&!u.current&&c(a.current.getBoundingClientRect())},450))},onMouseLeave:l,onContextMenu:e=>{e.preventDefault(),l(),r({x:e.clientX,y:e.clientY},a.current)},"aria-expanded":!t,"data-testid":`project-header-${e.key}`,children:[(0,K.jsx)(Y.Chevron,{open:!t,className:`w-3 h-3 shrink-0`}),(0,K.jsx)(Y.Project,{className:`w-3.5 h-3.5 shrink-0 text-project`}),(0,K.jsx)(`span`,{className:`truncate`,children:e.name}),(0,K.jsx)(BB,{sessions:e.sessions,testId:`project-busy-${e.key}`}),(0,K.jsx)(`span`,{className:`ml-auto shrink-0 rounded-full bg-surface-3 px-1.5 py-px text-[10px] font-semibold normal-case tracking-normal text-fg-muted`,"data-testid":`project-count-${e.key}`,children:e.sessions.length})]}),s===null?null:(0,K.jsx)(VJ,{group:e,anchor:s})]})}function VJ({group:e,anchor:t}){let{state:n}=q(),r=e.projectId?n.vaultProjects.find(t=>t.id===e.projectId):void 0,i=e.sessions.filter(e=>e.status===`running`||e.status===`waiting_permission`).length,a=e.sessions.reduce((e,t)=>e===null||t.updatedAt>e?t.updatedAt:e,null),o=[...new Set(e.sessions.map(e=>e.projectDir??e.cwd).filter(e=>typeof e==`string`&&e.length>0))],s=r?.instructions?.trim()??``,c=Math.max(8,Math.min(t.right+8,window.innerWidth-304-8)),l=Math.max(8,Math.min(t.top,window.innerHeight-320));return(0,RS.createPortal)((0,K.jsxs)(`div`,{role:`tooltip`,"data-testid":`project-details-${e.key}`,className:`fixed z-50 max-h-[20rem] w-[19rem] overflow-y-auto rounded-lg border border-border bg-surface p-3 text-xs shadow-lg`,style:{left:c,top:l},children:[(0,K.jsxs)(`div`,{className:`mb-2 flex items-center gap-1.5`,children:[(0,K.jsx)(Y.Project,{className:`w-3.5 h-3.5 shrink-0 text-project`}),(0,K.jsx)(`span`,{className:`truncate text-sm font-medium text-fg`,children:e.name})]}),(0,K.jsxs)(`div`,{className:`space-y-1`,children:[(0,K.jsx)(HB,{label:`Chats`,value:String(e.sessions.length)}),(0,K.jsx)(HB,{label:`Working now`,value:i>0?String(i):null}),(0,K.jsx)(HB,{label:`Last activity`,value:a?W_(a):null}),(0,K.jsx)(HB,{label:o.length>1?`Folders`:`Folder`,value:o.length>1?`${o.length} folders`:o[0]??null})]}),e.projectId?(0,K.jsxs)(`div`,{className:`mt-2 border-t border-border pt-2`,children:[(0,K.jsx)(`div`,{className:`mb-1 text-fg-faint`,children:`Standing instructions`}),s?(0,K.jsx)(`div`,{className:`whitespace-pre-wrap break-words text-fg`,"data-testid":`project-instructions-${e.key}`,children:s.length>400?`${s.slice(0,400)}…`:s}):(0,K.jsx)(`div`,{className:`text-fg-faint`,children:`None — chats here start with nothing extra.`})]}):(0,K.jsx)(`div`,{className:`mt-2 border-t border-border pt-2 text-fg-faint`,children:`Chats filed under no project.`})]}),document.body)}function HJ(){return eS(typeof window<`u`?window.oonacode:void 0)}function UJ(e){if(e.upToDate)return`Everything on this PC is up to date — the app, the host service and the oona CLI.`;let t=[];return e.terminal&&t.push(`OonaCode updates the oona CLI and the host service in place — the service restarts and your chats come back with it.`),e.desktop&&t.push(e.terminal?`Then it downloads the app, installs it and relaunches, restoring your open tabs.`:`OonaCode downloads the update, installs it and relaunches. Your open chat tabs are restored afterwards.`),t.length===0?t.push("This window cannot install updates by itself — run the installer again, or `oona update` in a terminal. Your open chat tabs are stored in the host and come back automatically."):e.manual.length>0&&t.push(e.manual.includes(`desktop`)?`The app itself needs the installer from the website.`:"The rest needs `oona update` in a terminal."),t.join(` `)}var WJ=2*Math.PI*10;function GJ(){return typeof window<`u`&&window.oonacode!==void 0}function KJ(){let{state:e,actions:t}=q(),n=e.update,r=e.updateInstall,i=e.prefs.dismissedUpdateVersion,a=n.version!==``&&(e.updateDismissed===n.version||i===n.version);if(!GJ())return null;let o=Yx({install:r,manifestAvailable:n.available&&!a}),s=e.terminalUpdate.running,c=e.updateChecking||r.phase===`checking`||s,l=n.components.length,u=Math.round(r.percent),d=s?`Updating the CLI and host service`:o===`ready`?`Restart to finish updating`:o===`downloading`?`Downloading update (${u}%)`:o===`available`?`Update available (${l})`:`Check for updates`,f=s?`Updating the oona CLI and the host service…`:o===`ready`?`An update is ready — restart to finish`:o===`downloading`?`Downloading OonaCode ${r.version||`update`} — ${u}%`:o===`available`?`${l} component${l===1?``:`s`} can be updated`:`Check for updates`;return(0,K.jsxs)(`button`,{type:`button`,onClick:()=>{if(o===`idle`){t.checkUpdates(!0);return}if(o===`ready`){t.installUpdate();return}t.openDialog(`update`)},title:f,"aria-label":d,"aria-busy":c||void 0,"data-testid":`update-badge`,"data-state":o,className:G(`relative inline-flex h-7 w-7 items-center justify-center rounded-full border transition-transform hover:scale-105`,o===`idle`?`border-border bg-surface-2 text-fg-muted hover:text-fg`:`border-accent bg-accent-soft text-accent`),children:[o===`downloading`?(0,K.jsxs)(`svg`,{viewBox:`0 0 24 24`,"data-testid":`update-badge-progress`,role:`progressbar`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":u,className:`absolute inset-0 h-full w-full -rotate-90`,children:[(0,K.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`,fill:`none`,strokeWidth:`2`,className:`stroke-border`}),(0,K.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`,fill:`none`,strokeWidth:`2`,strokeLinecap:`round`,strokeDasharray:WJ,strokeDashoffset:WJ*(1-Math.max(0,Math.min(100,u))/100),className:`stroke-accent`})]}):null,c&&o!==`downloading`&&o!==`ready`?(0,K.jsx)(`span`,{"data-testid":`update-badge-checking`,className:`inline-flex`,children:(0,K.jsx)(Y.Spinner,{className:`w-3.5 h-3.5`})}):o===`ready`?(0,K.jsx)(`span`,{"data-testid":`update-badge-ready`,className:`inline-flex`,children:(0,K.jsx)(Y.Refresh,{className:`w-3.5 h-3.5`})}):o===`downloading`?(0,K.jsx)(`span`,{"data-testid":`update-badge-downloading`,className:`text-[9px] font-semibold`,children:u}):(0,K.jsx)(`span`,{"data-testid":o===`available`?`update-badge-available`:`update-badge-idle`,className:`inline-flex`,children:(0,K.jsx)(Y.Download,{className:`w-3.5 h-3.5`})}),o===`available`?(0,K.jsx)(`span`,{className:`absolute -right-0.5 -top-0.5 h-2 w-2 rounded-full bg-accent`,"aria-hidden":!0}):null]})}function qJ(){let{state:e,actions:t}=q(),n=e.updateInstall,r=Math.round(Math.max(0,Math.min(100,n.percent))),i=Qx(n.bytesPerSecond);if(n.phase===`error`)return(0,K.jsxs)(`div`,{className:`rounded-md border border-danger-soft bg-danger-soft px-3 py-2 text-xs text-danger`,"data-testid":`update-error`,role:`alert`,children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(Y.Alert,{className:`mt-0.5 w-3.5 h-3.5 shrink-0`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`div`,{className:`font-medium`,children:`The update could not be downloaded.`}),(0,K.jsx)(`div`,{className:`mt-0.5 pre-wrap break-words`,children:n.error})]})]}),(0,K.jsx)(`div`,{className:`mt-2`,children:(0,K.jsxs)(X,{size:`sm`,onClick:()=>void t.installUpdate(),"data-testid":`update-retry`,children:[(0,K.jsx)(Y.Refresh,{className:`w-3.5 h-3.5`}),` Try again`]})})]});let a=n.phase===`installing`;return(0,K.jsxs)(`div`,{className:`space-y-1.5`,"data-testid":`update-progress`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between text-xs`,children:[(0,K.jsx)(`span`,{className:`font-medium text-fg`,children:a?`Installing and restarting…`:n.phase===`ready`?`Downloaded — restart to install`:`Downloading OonaCode ${n.version||``}`.trim()}),a?null:(0,K.jsxs)(`span`,{className:`text-fg-muted`,children:[r,`%`]})]}),n.notice?(0,K.jsx)(`div`,{className:`pre-wrap text-xs text-warn`,"data-testid":`update-notice`,role:`status`,children:n.notice}):null,(0,K.jsx)(`div`,{className:`h-1.5 w-full overflow-hidden rounded-full bg-surface-2`,children:(0,K.jsx)(`div`,{className:G(`h-full rounded-full bg-accent`,a&&`animate-pulse`),style:{width:`${a?100:r}%`},"data-testid":`update-progress-bar`})}),a?(0,K.jsx)(`div`,{className:`text-xs text-fg-faint`,children:`The host service stops for a few seconds while the installer runs, then OonaCode starts again with your chat tabs.`}):(0,K.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-fg-faint`,children:[(0,K.jsxs)(`span`,{children:[Zx(n.transferred),n.total>0?` of ${Zx(n.total)}`:``]}),i?(0,K.jsx)(`span`,{children:i}):null]})]})}function JJ(){let{state:e,actions:t}=q(),n=e.terminalUpdate;return n.running?(0,K.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border border-border bg-surface-2 px-3 py-2 text-xs`,"data-testid":`terminal-update-running`,role:`status`,children:[(0,K.jsx)(Y.Spinner,{className:`mt-0.5 w-3.5 h-3.5 shrink-0`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`div`,{className:`font-medium text-fg`,children:`Updating the oona CLI and host service...`}),(0,K.jsx)(`div`,{className:`mt-0.5 text-fg-faint`,children:`The host service stops for a few seconds while its installer runs. Your chats are in the database and come back with it.`})]})]}):n.failed?(0,K.jsxs)(`div`,{className:`rounded-md border border-danger-soft bg-danger-soft px-3 py-2 text-xs text-danger`,"data-testid":`terminal-update-error`,role:`alert`,children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(Y.Alert,{className:`mt-0.5 w-3.5 h-3.5 shrink-0`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`div`,{className:`font-medium`,children:`The CLI and host service could not be updated.`}),(0,K.jsx)(`div`,{className:`mt-0.5 pre-wrap break-words`,children:n.message})]})]}),(0,K.jsx)(`div`,{className:`mt-2`,children:(0,K.jsxs)(X,{size:`sm`,onClick:()=>void t.installUpdate(),"data-testid":`terminal-update-retry`,children:[(0,K.jsx)(Y.Refresh,{className:`w-3.5 h-3.5`}),` Try again`]})})]}):null}function YJ({open:e,onClose:t}){let{state:n,actions:r}=q(),i=n.update,a=n.updateInstall,o=r.checkUpdates,s=a.phase===`downloading`||a.phase===`installing`||a.phase===`ready`;(0,v.useEffect)(()=>{!e||s||o(!1)},[e,s,o]);let c=HJ(),l=tS(i.components.map(e=>e.component),c,{checked:i.version!==``,shellEngaged:a.phase!==`idle`&&a.phase!==`checking`}),u=i.version||a.version,d=a.phase===`ready`,f=a.phase===`downloading`||a.phase===`installing`||d||a.phase===`error`,p=n.terminalUpdate.running,m=n.updateChecking||a.phase===`checking`||p;return(0,K.jsx)(JS,{open:e,title:`Update OonaCode`,onClose:t,footer:d?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(X,{onClick:t,children:`Later`}),(0,K.jsxs)(X,{variant:`primary`,onClick:()=>void r.installUpdate(),"data-testid":`update-restart`,children:[(0,K.jsx)(Y.Refresh,{className:`w-4 h-4`}),`Restart and install`]})]}):f?(0,K.jsx)(X,{onClick:t,children:`Close`}):l.upToDate?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(X,{onClick:()=>void r.checkUpdates(!0),busy:m,disabled:m,"data-testid":`update-check-again`,children:[(0,K.jsx)(Y.Refresh,{className:`w-4 h-4`}),`Check again`]}),(0,K.jsx)(X,{variant:`primary`,onClick:t,children:`Close`})]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(X,{onClick:()=>r.dismissUpdate(),children:`Skip this version`}),(0,K.jsx)(X,{onClick:t,children:`Later`}),(0,K.jsxs)(X,{variant:`primary`,busy:m,disabled:m,onClick:()=>void r.installUpdate(),children:[(0,K.jsx)(Y.Download,{className:`w-4 h-4`}),l.label]})]}),children:(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm`,children:[u?(0,K.jsxs)(`span`,{className:`font-medium`,children:[`Release `,u]}):null,i.channel?(0,K.jsx)(Q,{children:i.channel}):null,n.updateChecking?(0,K.jsx)(`span`,{className:`text-xs text-fg-faint`,"data-testid":`update-rechecking`,children:`checking for a newer one…`}):null,i.publishedAt?(0,K.jsxs)(`span`,{className:`text-xs text-fg-faint`,children:[`published `,new Date(i.publishedAt).toLocaleDateString()]}):null]}),f?(0,K.jsx)(qJ,{}):null,(0,K.jsx)(JJ,{}),i.components.length>0?(0,K.jsx)(`ul`,{className:`divide-y divide-border rounded-md border border-border`,children:i.components.map(e=>(0,K.jsxs)(`li`,{className:`flex items-start gap-3 px-3 py-2`,children:[(0,K.jsx)(Y.Download,{className:`mt-0.5 w-3.5 h-3.5 shrink-0 text-accent`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`div`,{className:`text-sm font-medium`,children:e.label}),(0,K.jsxs)(`div`,{className:`text-xs text-fg-muted`,children:[e.current,` → `,(0,K.jsx)(`span`,{className:`font-medium text-fg`,children:e.latest})]}),(0,K.jsx)(`div`,{className:`text-xs text-fg-faint`,"data-testid":`update-how-${e.component}`,children:nS(e.component,c)}),e.notes?(0,K.jsx)(`div`,{className:`mt-0.5 pre-wrap text-xs text-fg-faint`,children:e.notes}):null]})]},e.component))}):null,i.notes?(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`mb-1 text-xs font-semibold uppercase tracking-wide text-fg-faint`,children:`Release notes`}),(0,K.jsx)(`div`,{className:`max-h-48 overflow-y-auto rounded-md bg-surface-2 px-3 py-2 pre-wrap text-xs text-fg-muted`,children:i.notes})]}):null,f?null:(0,K.jsx)(`p`,{className:`text-xs text-fg-faint`,"data-testid":`update-plan-note`,children:UJ(l)})]})})}function XJ(e){switch(e){case`open`:return{cls:`bg-ok`,label:`Connected`};case`connecting`:case`reconnecting`:return{cls:`bg-warn animate-pulse`,label:e===`connecting`?`Connecting…`:`Reconnecting…`};case`unauthorized`:return{cls:`bg-danger`,label:`Unauthorized`};case`closed`:return{cls:`bg-danger`,label:`Disconnected`};default:return{cls:`bg-fg-faint`,label:`Idle`}}}function ZJ(){let{state:e,actions:t}=q(),n=XJ(e.connection.status),r=e.account?.loggedIn===!0,i=typeof window<`u`&&window.oonacode?.host===`vscode`;return(0,K.jsxs)(`header`,{className:`flex h-12 shrink-0 items-center gap-2 border-b border-border bg-surface px-2 sm:px-3`,children:[i?null:(0,K.jsx)(US,{label:`Toggle sidebar`,onClick:()=>{typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(min-width: 768px)`).matches?t.toggleSidebarPinned():t.setSidebar(!e.ui.sidebarOpen)},"data-testid":`toggle-sidebar`,children:(0,K.jsx)(Y.PanelLeft,{})}),(0,K.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[i?null:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`font-semibold tracking-tight`,children:`OonaCode`}),(0,K.jsx)(`span`,{className:`hidden text-fg-faint sm:inline`,children:`/`})]}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>t.openDialog(`session-picker`),title:`Open a session on this PC or another device`,className:`hidden min-w-0 truncate text-sm text-fg-muted hover:text-fg sm:inline`,"data-testid":`host-name`,children:e.connection.hostName??`host`}),(0,K.jsxs)(`span`,{className:`flex items-center gap-1 text-xs text-fg-muted`,title:e.connection.detail??n.label,"data-testid":`connection-status`,children:[(0,K.jsx)(`span`,{className:G(`inline-block h-2 w-2 rounded-full`,n.cls),"aria-hidden":!0}),(0,K.jsx)(`span`,{className:`hidden sm:inline`,children:n.label})]})]}),(0,K.jsxs)(`div`,{className:`ml-auto flex items-center gap-1.5`,children:[(0,K.jsx)($J,{}),(0,K.jsx)(QJ,{}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>t.openDialog(`sticky-notes`),title:`Sticky notes`,"aria-label":`Sticky notes`,"data-testid":`sticky-notes-button`,className:`inline-flex h-7 w-7 items-center justify-center rounded-full border border-border bg-surface-2 text-fg-muted transition-transform hover:scale-105 hover:text-fg`,children:(0,K.jsx)(Y.StickyNote,{className:`w-3.5 h-3.5`})}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>t.openDialog(`bug-report`),title:`Bug Report...`,"aria-label":`Bug Report...`,"data-testid":`bug-report-button`,className:`inline-flex h-7 w-7 items-center justify-center rounded-full border border-border bg-surface-2 text-fg-muted transition-transform hover:scale-105 hover:text-fg`,children:(0,K.jsx)(Y.Bug,{className:`w-3.5 h-3.5`})}),(0,K.jsx)(KJ,{}),e.hostUpdatedTo?(0,K.jsxs)(X,{size:`sm`,variant:`primary`,onClick:()=>window.location.reload(),title:`This window still runs the previous version; the host is now v${e.hostUpdatedTo}`,"data-testid":`reload-for-update`,children:[`Reload for v`,e.hostUpdatedTo]}):null,r?null:(0,K.jsxs)(X,{size:`sm`,variant:`primary`,onClick:()=>t.openDialog(`account`),"data-testid":`sign-in`,children:[(0,K.jsx)(Y.LogIn,{className:`w-3.5 h-3.5`}),` Sign in`]}),(0,K.jsx)(US,{label:e.prefs.explorerOpen?`Hide files`:`Show files`,onClick:()=>void t.savePrefs({explorerOpen:!e.prefs.explorerOpen}),className:e.prefs.explorerOpen?`bg-surface-2 text-fg`:void 0,"data-testid":`toggle-explorer`,children:(0,K.jsx)(Y.Folder,{})}),(0,K.jsx)(US,{label:e.ui.mediaPanelOpen?`Hide media in this chat`:`Media in this chat`,onClick:()=>t.setMediaPanel(!e.ui.mediaPanelOpen),className:e.ui.mediaPanelOpen?`bg-surface-2 text-fg`:void 0,"aria-pressed":e.ui.mediaPanelOpen,disabled:!e.currentSessionId,"data-testid":`toggle-media-panel`,children:(0,K.jsx)(Y.Gallery,{})}),(0,K.jsx)(US,{label:e.prefs.sessionPanelOpen&&!e.ui.mediaPanelOpen?`Hide session info`:`Show session info`,onClick:()=>{if(e.ui.mediaPanelOpen){t.setMediaPanel(!1),e.prefs.sessionPanelOpen||t.savePrefs({sessionPanelOpen:!0});return}t.savePrefs({sessionPanelOpen:!e.prefs.sessionPanelOpen})},className:e.prefs.sessionPanelOpen&&!e.ui.mediaPanelOpen?`bg-surface-2 text-fg`:void 0,"data-testid":`toggle-session-panel`,children:(0,K.jsx)(Y.Panel,{})}),(0,K.jsx)(US,{label:`Doctor`,onClick:()=>t.openDialog(`doctor`),children:(0,K.jsx)(Y.Stethoscope,{})}),r?(0,K.jsx)(eY,{}):null,(0,K.jsx)(US,{label:`Account`,onClick:()=>t.openDialog(`account`),children:(0,K.jsxs)(`span`,{className:`relative`,children:[(0,K.jsx)(Y.User,{}),r?(0,K.jsx)(`span`,{className:G(`absolute -right-0.5 -top-0.5 h-1.5 w-1.5 rounded-full`,e.account?.vaultUnlocked?`bg-ok`:`bg-warn`)}):null]})}),(0,K.jsx)(US,{label:`Settings`,onClick:()=>t.openDialog(`settings`),children:(0,K.jsx)(Y.Settings,{})})]})]})}function QJ(){let{state:e,actions:t}=q(),n=(e.mcpServers??[]).filter(e=>e.enabled!==!1).length;return(0,K.jsxs)(`button`,{type:`button`,onClick:()=>t.openSettings(`mcp`),title:n===0?`No MCP servers configured. Click to open MCP Settings.`:`${n} MCP server${n===1?``:`s`} configured. Click to open MCP Settings.`,"aria-label":`MCP Servers`,"data-testid":`mcp-topbar-badge`,className:G(`inline-flex h-7 items-center gap-1 rounded-full border border-border px-2 text-xs transition-transform hover:scale-105`,n>0?`bg-surface-2 text-fg hover:border-accent hover:text-accent`:`bg-surface text-fg-muted hover:text-fg`),children:[(0,K.jsx)(Y.Plug,{className:G(`w-3.5 h-3.5`,n>0?`text-accent`:`text-fg-muted`)}),(0,K.jsx)(`span`,{className:`font-medium text-[11px]`,children:n})]})}function $J(){let{actions:e}=q(),[t,n]=(0,v.useState)(null);if((0,v.useEffect)(()=>{let e=typeof window<`u`?window.oonacode:void 0;if(!e?.getDebugging)return;let t=!0;return e.getDebugging().then(e=>{t&&n(e.running)},()=>{}),()=>{t=!1}},[]),!t||!Oc(t))return null;let r=Iq(t);return(0,K.jsxs)(`button`,{type:`button`,onClick:()=>e.openSettings(`developer`),title:r,"aria-label":r,"data-testid":`debugging-badge`,className:`inline-flex h-7 shrink-0 items-center gap-1.5 rounded-full bg-red-600 px-2.5 text-[11px] font-semibold text-white hover:bg-red-700`,children:[(0,K.jsx)(`span`,{className:`inline-block h-1.5 w-1.5 rounded-full bg-white`,"aria-hidden":!0}),`Debugging on`]})}function eY(){let{state:e}=q(),[t,n]=(0,v.useState)(!1),r=(0,v.useRef)(null),i=e.plan;(0,v.useEffect)(()=>{if(!t)return;let e=e=>{r.current&&!r.current.contains(e.target)&&n(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[t]);let a=i?i.credits.balance:null,o=i?_x(i):null,s=bx(i),c=xx;return(0,K.jsxs)(`div`,{className:`relative`,ref:r,children:[(0,K.jsx)(US,{label:s?`Credits and plan — ${s.text}`:`Credits and plan`,onClick:()=>n(e=>!e),"data-testid":`balance-badge`,className:t?`bg-surface-2 text-fg`:void 0,children:(0,K.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,K.jsx)(Y.Coins,{}),a===null?null:(0,K.jsx)(`span`,{className:G(`hidden text-xs tabular-nums sm:inline`,s?s.level===`empty`?`text-danger`:`text-warn`:void 0),"data-testid":`balance-credits`,"data-level":s?.level??`ok`,children:c(a)})]})}),t?(0,K.jsx)(`div`,{className:`absolute right-0 top-full z-50 mt-1 w-64 rounded-md border border-border bg-surface p-3 text-sm shadow-lg`,"data-testid":`balance-popover`,children:i===null||o===null?(0,K.jsx)(`div`,{className:`text-fg-muted`,children:`Balance is unavailable — the gateway can't be reached.`}):(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`span`,{className:`text-fg-muted`,children:`Plan`}),(0,K.jsxs)(`span`,{className:`font-medium`,children:[i.planName,i.status===`none`?` (lapsed)`:``]})]}),(0,K.jsx)(`div`,{className:`h-px bg-border`}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`span`,{className:`text-fg-muted`,children:`Credits`}),(0,K.jsx)(`span`,{className:`font-semibold tabular-nums`,children:c(o.balance)})]}),s?(0,K.jsx)(`div`,{className:G(`rounded-sm px-2 py-1 text-[11px]`,s.level===`empty`?`bg-danger-soft text-danger`:`bg-warn-soft text-warn`),"data-testid":`balance-warning`,children:s.text}):null,o.hasSplit?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`span`,{className:`text-fg-muted`,children:`Plan credits`}),(0,K.jsx)(`span`,{className:`tabular-nums`,children:c(o.plan??0)})]}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`span`,{className:`text-fg-muted`,children:`Top-up credits`}),(0,K.jsx)(`span`,{className:`tabular-nums`,children:c(o.topup??0)})]})]}):null,(0,K.jsxs)(`div`,{className:`text-[11px] text-fg-faint`,children:[i.credits.monthlyGrant>0?`Plan credits top up to ${c(i.credits.monthlyGrant)} each 30-day period and expire with it; top-ups never do.`:`This plan pays no monthly credits — the signup gift and anything you buy never expire.`,` `,`Free models never draw on this balance.`]})]})}):null]})}function tY(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(r.error??Error(`could not read the file`)),r.onload=()=>{let e=typeof r.result==`string`?r.result:``,n=e.indexOf(`,`);t(n>=0?e.slice(n+1):``)},r.readAsDataURL(e)})}function nY(e,t){let n=[],r=e.length,i=e.reduce((e,t)=>e+t.size,0);for(let e of t){if(r>=5)return{accepted:n,refused:`At most 5 files per report.`};if(e.size>5242880)return{accepted:n,refused:`${e.name} is ${Zx(e.size)}; a file may be at most ${Zx(ec)}.`};if(i+e.size>12582912)return{accepted:n,refused:`All files together may be at most ${Zx(tc)}.`};n.push(e),r+=1,i+=e.size}return{accepted:n,refused:null}}function rY(e){return e instanceof $h?e.code===`account_required`||e.status===401?`Sign in to OonaCode first — a report is filed under your account so we can answer it.`:rg(e)?`This host build cannot send bug reports yet — update OonaCode on this PC.`:e.status===429?`Too many reports in a minute — wait a moment and send again.`:e.status===413?`The attachments are too large for one report.`:e.message||`The report could not be sent.`:e instanceof Error&&e.message?e.message:`The report could not be sent.`}var iY=0;function aY({open:e,onClose:t}){let{state:n,actions:r,api:i}=q(),[a,o]=(0,v.useState)(``),[s,c]=(0,v.useState)([]),[l,u]=(0,v.useState)(!1),[d,f]=(0,v.useState)(null),[p,m]=(0,v.useState)(!1),h=(0,v.useRef)(null);(0,v.useEffect)(()=>{e&&(o(``),c([]),u(!1),f(null))},[e]);let g=n.account?.loggedIn===!0,_=typeof i.sendBugReport==`function`,y=typeof window<`u`?window.oonacode:void 0,b=y?y.host===`vscode`?`vscode`:`desktop`:`browser`,x=n.currentSessionId?n.sessions.find(e=>e.id===n.currentSessionId)??null:null,S=(0,v.useCallback)(async e=>{let t=Array.from(e);if(t.length===0)return;let{accepted:n,refused:r}=nY(s,t);f(r);let i=t.filter(e=>n.includes(e));if(i.length!==0){m(!0);try{let e=[];for(let t of i){let n=await tY(t);if(!n)continue;let r=t.type||`application/octet-stream`;iY+=1,e.push({key:`f${iY}`,name:t.name,contentType:r,dataBase64:n,size:t.size,preview:r.startsWith(`image/`)?`data:${r};base64,${n}`:null})}c(t=>[...t,...e])}catch(e){f(e instanceof Error?e.message:`could not read the file`)}finally{m(!1)}}},[s]),C=e=>{let t=e.target.files;t&&S(t),e.target.value=``},w=e=>c(t=>t.filter(t=>t.key!==e)),T=async()=>{let e=a.trim();if(!e||l)return;if(!_){f(`This host build cannot send bug reports yet — update OonaCode on this PC.`);return}u(!0),f(null);let o={message:e.slice(0,$s),...s.length>0?{attachments:s.map(({name:e,contentType:t,dataBase64:n})=>({name:e,contentType:t,dataBase64:n}))}:{},...n.currentSessionId?{sessionId:n.currentSessionId}:{},detail:{embedded:b,connection:n.connection.status,...y?.appVersion?{appVersion:y.appVersion}:{},...n.bundleAppVersion?{uiVersion:n.bundleAppVersion}:{},...n.info?.appVersion?{hostVersion:n.info.appVersion}:{},...n.info?.engine?.version?{engineVersion:n.info.engine.version}:{},...x?.status?{sessionStatus:x.status}:{}}};try{let e=await i.sendBugReport(o);r.toast(`success`,`Bug report #${e.id} sent — thank you.`),t()}catch(e){f(rY(e))}finally{u(!1)}},E=$s-a.length;return(0,K.jsx)(JS,{open:e,title:`Bug Report`,onClose:t,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(X,{onClick:t,disabled:l,children:`Cancel`}),(0,K.jsxs)(X,{variant:`primary`,busy:l,disabled:!a.trim()||p,onClick:()=>void T(),"data-testid":`bug-report-send`,children:[(0,K.jsx)(Y.Bug,{className:`w-4 h-4`}),`Send report`]})]}),children:(0,K.jsxs)(`div`,{className:`space-y-3 text-sm`,"data-testid":`bug-report-dialog`,children:[(0,K.jsxs)(`p`,{className:`text-fg-muted`,children:[`Tell us what went wrong and what you expected. Screenshots help. The report is filed under your account with this PC's versions`,x?` and the open chat’s model`:``,`; the chat itself is never sent.`]}),g?null:(0,K.jsx)(`div`,{className:`rounded-md border border-warn/40 bg-warn-soft px-3 py-2 text-xs text-warn`,children:`Sign in to OonaCode to send a report — it is filed under your account so we can answer it.`}),(0,K.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[(0,K.jsx)(`span`,{className:`font-medium text-fg`,children:`What happened?`}),(0,K.jsx)(`textarea`,{name:`message`,className:G(Z,`min-h-32 resize-y`),value:a,maxLength:$s,placeholder:`The answer stopped after a few seconds with “API error”. I was using…`,onChange:e=>o(e.target.value),"data-testid":`bug-report-message`}),(0,K.jsx)(`span`,{className:`text-xs text-fg-faint`,children:E<500?`${E} characters left`:``})]}),(0,K.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`input`,{ref:h,type:`file`,multiple:!0,className:`hidden`,onChange:C,"data-testid":`bug-report-files`}),(0,K.jsxs)(X,{size:`sm`,onClick:()=>h.current?.click(),disabled:l||p||s.length>=5,children:[(0,K.jsx)(Y.Paperclip,{className:`w-3.5 h-3.5`}),`Attach files or pictures`]}),(0,K.jsxs)(`span`,{className:`text-xs text-fg-faint`,children:[`up to `,5,` files,`,` `,Zx(ec),` each`]})]}),s.length>0?(0,K.jsx)(`ul`,{className:`flex flex-wrap gap-2`,"data-testid":`bug-report-attachments`,children:s.map(e=>(0,K.jsxs)(`li`,{className:`flex items-center gap-2 rounded-md border border-border bg-surface-2 px-2 py-1 text-xs`,children:[e.preview?(0,K.jsx)(`img`,{src:e.preview,alt:``,className:`h-8 w-8 rounded object-cover`,"aria-hidden":!0}):(0,K.jsx)(Y.Paperclip,{className:`w-3.5 h-3.5 text-fg-muted`}),(0,K.jsx)(`span`,{className:`max-w-40 truncate`,title:e.name,children:e.name}),(0,K.jsx)(`span`,{className:`text-fg-faint`,children:Zx(e.size)}),(0,K.jsx)(US,{label:`Remove ${e.name}`,onClick:()=>w(e.key),children:(0,K.jsx)(Y.X,{className:`w-3.5 h-3.5`})})]},e.key))}):null]}),d?(0,K.jsx)(`div`,{className:`text-xs text-danger`,role:`alert`,"data-testid":`bug-report-error`,children:d}):null]})})}var oY=`oonacode.stickyNotes.active`;function sY(e){try{e?window.localStorage.setItem(oY,e):window.localStorage.removeItem(oY)}catch{}}function cY(){try{return window.localStorage.getItem(oY)}catch{return null}}function lY({open:e,onClose:t}){let{api:n,actions:r}=q(),i=typeof n.listStickyNotes==`function`,[a,o]=(0,v.useState)(null),[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)(null),[d,f]=(0,v.useState)({kind:`idle`}),[p,m]=(0,v.useState)(null),[h,g]=(0,v.useState)(``),[_,y]=(0,v.useState)(null),[b,x]=(0,v.useState)(!1),S=(0,v.useRef)(new Map),C=(0,v.useRef)(null),w=(0,v.useRef)(Promise.resolve()),T=(0,v.useCallback)(()=>{C.current&&=(clearTimeout(C.current),null);let e=[...S.current.entries()];return S.current.clear(),e.length===0||!n.updateStickyNote?w.current:(f({kind:`saving`}),w.current=w.current.then(async()=>{for(let[t,i]of e)try{await n.updateStickyNote(t,i),f({kind:`saved`,at:new Date().toISOString()})}catch(e){if(e instanceof $h&&e.status===404){o(e=>e?.filter(e=>e.id!==t)??e),r.toast(`info`,`A note was deleted on another device, so its tab was closed.`),f({kind:`idle`});continue}let n=S.current.get(t)??{};S.current.set(t,{...i,...n}),f({kind:`error`,message:$_(e)})}}),w.current)},[n,r]),E=(0,v.useCallback)((e,t)=>{S.current.set(e,{...S.current.get(e)??{},...t}),f(e=>e.kind===`error`?e:{kind:`idle`}),C.current&&clearTimeout(C.current),C.current=setTimeout(()=>void T(),800)},[T]),D=(0,v.useRef)(T);D.current=T,(0,v.useEffect)(()=>{if(!e)return;let t=!0;if(u(null),f({kind:`idle`}),m(null),y(null),i)return n.listStickyNotes().then(e=>{if(!t)return;o(e.notes);let n=cY();c(e.notes.some(e=>e.id===n)?n:e.notes[0]?.id??null)}).catch(e=>{t&&u($_(e))}),()=>{t=!1,D.current()}},[e,i]);let O=(0,v.useCallback)(()=>{D.current(),t()},[t]),k=e=>{e!==s&&(T(),c(e),sY(e),y(null))},A=async()=>{if(!(!n.createStickyNote||b)){x(!0);try{await T();let e=await n.createStickyNote({});o(t=>[...t??[],e]),c(e.id),sY(e.id)}catch(e){f({kind:`error`,message:$_(e)})}finally{x(!1)}}},j=async e=>{if(n.deleteStickyNote){S.current.delete(e),y(null);try{await n.deleteStickyNote(e);let t=(a??[]).filter(t=>t.id!==e);if(o(t),s===e){let e=t[0]?.id??null;c(e),sY(e)}}catch(e){f({kind:`error`,message:$_(e)})}}},M=(e,t)=>{o(n=>n?.map(n=>n.id===e?{...n,text:t}:n)??n),E(e,{text:t})},N=()=>{let e=p;if(!e)return;m(null);let t=h.trim().slice(0,ic.title)||`Note`;t!==a?.find(t=>t.id===e)?.title&&(o(n=>n?.map(n=>n.id===e?{...n,title:t}:n)??n),E(e,{title:t}))},ee=e=>{e.key===`Enter`?(e.preventDefault(),N()):e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),m(null))},P=e=>{e.dataTransfer.files.length>0&&(e.preventDefault(),r.toast(`info`,`Sticky notes keep text only — pictures and files are not saved.`))},F=a?.find(e=>e.id===s)??null,I=(a??[]).reduce((e,t)=>e+t.text.length,0),te=(a?.length??0)>=ic.notes;return(0,K.jsx)(JS,{open:e,title:`Sticky notes`,onClose:O,wide:!0,children:(0,K.jsx)(`div`,{className:`flex min-h-[24rem] flex-col gap-2 text-sm`,"data-testid":`sticky-notes-dialog`,children:i?l?(0,K.jsx)(`p`,{className:`text-danger`,"data-testid":`sticky-notes-error`,children:l}):a===null?(0,K.jsxs)(`p`,{className:`flex items-center gap-1.5 text-fg-muted`,children:[(0,K.jsx)(Y.Spinner,{className:`w-3.5 h-3.5`}),` Opening your notes…`]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{role:`tablist`,"aria-label":`Notes`,className:`flex items-center gap-1 overflow-x-auto border-b border-border pb-1`,children:[a.map(e=>p===e.id?(0,K.jsx)(`input`,{autoFocus:!0,"aria-label":`Note name`,className:G(Z,`h-7 w-40 py-0 text-xs`),value:h,maxLength:ic.title,onChange:e=>g(e.target.value),onBlur:N,onKeyDown:ee,"data-testid":`sticky-note-rename`},e.id):(0,K.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":e.id===s,title:`Double-click to rename`,onClick:()=>k(e.id),onDoubleClick:()=>{k(e.id),m(e.id),g(e.title)},className:G(`max-w-[12rem] shrink-0 truncate rounded-md px-2.5 py-1 text-xs`,e.id===s?`bg-accent-soft font-medium text-fg`:`text-fg-muted hover:bg-surface-2 hover:text-fg`),"data-testid":`sticky-note-tab`,children:e.title||`Note`},e.id)),(0,K.jsx)(`button`,{type:`button`,onClick:()=>void A(),disabled:b||te,title:te?`${ic.notes} notes is the most there can be`:`New note`,"aria-label":`New note`,className:`inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-fg-muted hover:bg-surface-2 hover:text-fg disabled:opacity-40`,"data-testid":`sticky-note-new`,children:(0,K.jsx)(Y.Plus,{className:`w-3.5 h-3.5`})})]}),F?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`textarea`,{"aria-label":`Note: ${F.title}`,className:G(Z,`min-h-[18rem] flex-1 resize-y font-mono text-sm`),value:F.text,maxLength:ic.text,placeholder:`Write anything. It is saved by itself.`,onChange:e=>M(F.id,e.target.value),onBlur:()=>void T(),onDrop:P,spellCheck:!0,"data-testid":`sticky-note-text`}),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-[11px] text-fg-faint`,children:[(0,K.jsx)(`span`,{"data-testid":`sticky-note-status`,children:d.kind===`saving`?`Saving…`:d.kind===`saved`?`Saved ${bb(d.at)}`:d.kind===`error`?null:`Saved in your vault as you type`}),d.kind===`error`?(0,K.jsxs)(`span`,{className:`text-danger`,"data-testid":`sticky-note-save-error`,children:[`Not saved: `,d.message]}):null,(0,K.jsxs)(`span`,{className:`ml-auto`,children:[F.text.length.toLocaleString(),` /`,` `,ic.text.toLocaleString(),` characters`]}),_===F.id?(0,K.jsxs)(`span`,{className:`flex items-center gap-1`,"data-testid":`sticky-note-confirm`,children:[`Delete “`,F.title,`”?`,(0,K.jsx)(X,{size:`sm`,variant:`danger`,onClick:()=>void j(F.id),"data-testid":`sticky-note-delete-yes`,children:`Delete`}),(0,K.jsx)(X,{size:`sm`,onClick:()=>y(null),children:`Keep`})]}):(0,K.jsxs)(X,{size:`sm`,variant:`ghost`,onClick:()=>F.text.trim()?y(F.id):void j(F.id),"data-testid":`sticky-note-delete`,children:[(0,K.jsx)(Y.Trash,{className:`w-3 h-3`}),` Delete note`]})]}),I>ic.totalText*.9?(0,K.jsxs)(`p`,{className:`text-[11px] text-warn`,children:[`Your notes hold `,I.toLocaleString(),` of`,` `,ic.totalText.toLocaleString(),` characters.`]}):null]}):(0,K.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-2 text-fg-muted`,"data-testid":`sticky-notes-empty`,children:[(0,K.jsx)(Y.StickyNote,{className:`w-6 h-6 text-fg-faint`}),(0,K.jsx)(`p`,{children:`No notes yet. They are kept in your vault and follow you to your other PCs.`}),(0,K.jsxs)(X,{variant:`primary`,onClick:()=>void A(),busy:b,children:[(0,K.jsx)(Y.Plus,{className:`w-3.5 h-3.5`}),` New note`]})]})]}):(0,K.jsx)(`p`,{className:`text-fg-muted`,"data-testid":`sticky-notes-unsupported`,children:`OonaCode on this PC is too old for sticky notes. Update it, then try again.`})})})}function uY(e){let t=Date.parse(`${e}T12:00:00`);return Number.isFinite(t)?new Date(t).toLocaleDateString(void 0,{dateStyle:`long`}):e}function dY({open:e,notes:t,onClose:n}){return(0,K.jsx)(JS,{open:e,title:`What's new in OonaCode`,onClose:n,footer:(0,K.jsx)(X,{variant:`primary`,onClick:n,children:`Got it`}),children:(0,K.jsx)(`div`,{className:`space-y-5 text-sm`,"data-testid":`whats-new`,children:t.map(e=>(0,K.jsxs)(`section`,{"data-version":e.version,children:[(0,K.jsxs)(`div`,{className:`mb-2 flex items-baseline gap-2`,children:[(0,K.jsxs)(`h3`,{className:`text-base font-semibold`,children:[`Version `,e.version]}),(0,K.jsx)(`span`,{className:`text-xs text-fg-faint`,children:uY(e.date)})]}),e.added.length>0?(0,K.jsx)(`ul`,{className:`space-y-1.5`,children:e.added.map((e,t)=>(0,K.jsxs)(`li`,{className:`flex gap-2`,children:[(0,K.jsx)(Y.Plus,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-accent`}),(0,K.jsx)(`span`,{children:e})]},t))}):null,e.fixed.length>0?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`mb-1 mt-3 text-xs font-medium uppercase tracking-wide text-fg-faint`,children:`Fixed`}),(0,K.jsx)(`ul`,{className:`space-y-1.5`,children:e.fixed.map((e,t)=>(0,K.jsxs)(`li`,{className:`flex gap-2`,children:[(0,K.jsx)(Y.Check,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-ok`}),(0,K.jsx)(`span`,{children:e})]},t))})]}):null]},`${e.version}:${e.platforms?.join(`,`)??`all`}`))})})}function fY(){let{state:e,actions:t}=q(),n=Gh(e.account);return!n||e.ui.dialog===`account`?null:(0,K.jsxs)(`div`,{role:`status`,"data-testid":`vault-rekey-banner`,className:`flex items-center gap-2 bg-warn-soft px-3 py-1.5 text-xs text-warn`,children:[(0,K.jsx)(Y.Alert,{className:`w-3.5 h-3.5`}),(0,K.jsx)(`span`,{className:`flex-1`,children:Qh(n)}),(0,K.jsx)(X,{size:`sm`,variant:`primary`,onClick:()=>t.openDialog(`account`),children:`Open Account`})]})}function pY({onReconnect:e}){let{state:t}=q(),n=t.connection.status;if(n===`open`||n===`idle`||n===`connecting`)return null;let r=n===`unauthorized`&&!window.oonacode;return(0,K.jsxs)(`div`,{role:`status`,className:G(`flex items-center gap-2 px-3 py-1.5 text-xs`,r?`bg-danger-soft text-danger`:`bg-warn-soft text-warn`),children:[r?(0,K.jsx)(Y.Alert,{className:`w-3.5 h-3.5`}):(0,K.jsx)(Y.Spinner,{className:`w-3.5 h-3.5`}),(0,K.jsx)(`span`,{className:`flex-1`,children:r?`The host rejected this connection${t.connection.detail?` (${t.connection.detail})`:``}. Re-open the UI from the desktop app or paste a fresh token.`:`Reconnecting to the host${t.connection.detail?` — ${t.connection.detail}`:``}…`}),r&&e?(0,K.jsx)(X,{size:`sm`,variant:`danger`,onClick:e,children:`Enter token`}):null]})}function mY(){let{state:e,actions:t}=q(),n=(0,v.useRef)(1);n.current=Object.keys(e.layout.groups).length,(0,v.useEffect)(()=>{if(typeof window>`u`)return;let e=e=>{if(e.ctrlKey||e.metaKey){if(e.key===`Tab`){e.preventDefault(),t.cycleTab(e.shiftKey?-1:1);return}if(!(e.shiftKey||e.altKey)){if(e.key===`\\`||e.code===`Backslash`){e.preventDefault(),t.splitTab(`right`);return}if(/^[1-9]$/.test(e.key)){let r=Number(e.key)-1;if(r>=n.current)return;e.preventDefault(),t.focusGroupAt(r),hY(r)}}}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t])}function hY(e){let t=()=>{(document.querySelectorAll(`[data-editor-group]`)[e]?.querySelector(`[data-testid="composer"] textarea`))?.focus()};typeof requestAnimationFrame==`function`?requestAnimationFrame(t):setTimeout(t,0)}function gY(){let{state:e,actions:t}=q(),n=(0,v.useRef)(!1),r=e.account?.loggedIn===!0,i=e.prefs.claudeImportOffered?3:e.prefs.claudeImportOffers,a=e.ui.dialog===`none`&&e.windowRole===`main`,o=e.settings!==null,s=(0,v.useRef)(e.ui.dialog);s.current=e.ui.dialog,(0,v.useEffect)(()=>{n.current||!o||i>=3||!r||!a||(n.current=!0,t.scanClaudeSessions().then(e=>{if(e.sessions.some(e=>!e.alreadyImported&&e.deletedHere!==!0&&!e.unavailable)){if(s.current!==`none`){n.current=!1;return}t.offerImport(),t.savePrefs({claudeImportOffers:i+1})}}).catch(()=>{}))},[t,a,r,i,o])}function _Y(){let{state:e,actions:t}=q(),n=(0,v.useRef)(!1),[r,i]=(0,v.useState)(null),a=typeof window<`u`?window.oonacode:void 0,o=a?.appVersion??e.bundleAppVersion??null,s=e.settings!==null,c=e.prefs.lastSeenReleaseNotes,l=e.sessionListLoaded,u=e.sessionsTotal>0||e.sessions.length>0,d=e.settings?.uiPrefs,f=d!==void 0&&!(`lastSeenReleaseNotes`in d),p=e.ui.dialog===`none`&&e.windowRole===`main`,m=e.info?.platform??a?.platform??null;(0,v.useEffect)(()=>{if(n.current||!s||!o||!p||c===null&&!l||(n.current=!0,f))return;let{record:e,show:r}=Rl(o,c,u,void 0,m);e!==null&&t.savePrefs({lastSeenReleaseNotes:e}),r.length!==0&&(i(r),t.openDialog(`whats-new`))},[t,f,p,o,c,m,l,s,u]);let h=e.ui.dialog===`whats-new`;return(0,v.useEffect)(()=>{!h&&r&&i(null)},[r,h]),r??(o?Ll(o,`0`,void 0,m):[])}function vY({onUnauthorized:e}){let{state:t,actions:n}=q(),r=(0,v.useCallback)(()=>n.openDialog(`none`),[n]),i=_Y();gY();let a=typeof window<`u`&&window.oonacode?.host===`vscode`,o=t.ui.sidebarOpen&&!a;return mY(),(0,K.jsxs)(`div`,{className:`flex h-full flex-col bg-bg text-fg`,children:[(0,K.jsx)(ZJ,{}),(0,K.jsx)(pY,{onReconnect:e}),(0,K.jsx)(fY,{}),(0,K.jsxs)(`div`,{className:`relative flex min-h-0 flex-1`,children:[(0,K.jsx)(sW,{hidden:a,children:(0,K.jsx)(MJ,{})}),o?(0,K.jsx)(`div`,{className:`absolute inset-0 z-20 bg-black/30 md:hidden`,onClick:()=>n.setSidebar(!1),"aria-hidden":!0}):null,t.prefs.explorerOpen?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`absolute inset-0 z-20 bg-black/30 md:hidden`,onClick:()=>void n.savePrefs({explorerOpen:!1}),"aria-hidden":!0}),(0,K.jsx)(`div`,{className:`absolute inset-y-0 left-0 z-30 flex max-w-[85vw] md:static md:z-auto md:max-w-none`,children:(0,K.jsx)(Dq,{})})]}):null,(0,K.jsx)(`main`,{className:`flex min-w-0 flex-1 flex-col`,children:(0,K.jsx)(DU,{})}),t.ui.mediaPanelOpen&&t.currentSessionId?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`absolute inset-0 z-20 bg-black/30 lg:hidden`,onClick:()=>n.setMediaPanel(!1),"aria-hidden":!0}),(0,K.jsx)(`div`,{className:`absolute inset-y-0 right-0 z-30 flex max-w-[85vw] lg:static lg:z-auto lg:max-w-none`,children:(0,K.jsx)(gq,{sessionId:t.currentSessionId},t.currentSessionId)})]}):t.prefs.sessionPanelOpen?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`absolute inset-0 z-20 bg-black/30 lg:hidden`,onClick:()=>void n.savePrefs({sessionPanelOpen:!1}),"aria-hidden":!0}),(0,K.jsx)(`div`,{className:`absolute inset-y-0 right-0 z-30 flex max-w-[85vw] lg:static lg:z-auto lg:max-w-none`,children:(0,K.jsx)(tq,{},t.currentSessionId??`none`)})]}):null]}),(0,K.jsx)(IU,{open:t.ui.dialog===`project`,onClose:r}),(0,K.jsx)(tW,{open:t.ui.dialog===`projects`,startNew:t.projectsStartNew,selectId:t.projectsSelectId,onClose:r}),(0,K.jsx)(QW,{open:t.ui.dialog===`assign-project`,onClose:r}),(0,K.jsx)(uJ,{open:t.ui.dialog===`settings`,onClose:r}),(0,K.jsx)(QC,{open:t.ui.dialog===`account`,onClose:r}),(0,K.jsx)(FU,{open:t.ui.dialog===`doctor`,onClose:r}),(0,K.jsx)(sw,{open:t.ui.dialog===`session-picker`,onClose:r}),(0,K.jsx)(YJ,{open:t.ui.dialog===`update`,onClose:r}),(0,K.jsx)(aY,{open:t.ui.dialog===`bug-report`,onClose:r}),(0,K.jsx)(lY,{open:t.ui.dialog===`sticky-notes`,onClose:r}),(0,K.jsx)(ZU,{open:t.ui.dialog===`claude-login`,onClose:r}),(0,K.jsx)(ZG,{open:t.ui.dialog===`oauth-login`,onClose:r}),(0,K.jsx)(QG,{open:t.ui.dialog===`manage-models`,onClose:r}),(0,K.jsx)(FK,{open:t.ui.dialog===`import-claude`,autoOffer:t.importOffered,onClose:r}),(0,K.jsx)(cW,{open:t.ui.dialog===`export-chats`,onClose:r}),(0,K.jsx)(JL,{open:t.ui.dialog===`conversations`,selectId:t.conversationsSelectId,onClose:r}),(0,K.jsx)(qW,{open:t.ui.dialog===`chat-abouts`,onClose:r}),(0,K.jsx)(XW,{open:t.ui.dialog===`project-manager`,onClose:r}),(0,K.jsx)(LW,{open:t.ui.dialog===`voice-summary`,onClose:r}),(0,K.jsx)(dY,{open:t.ui.dialog===`whats-new`,notes:i,onClose:r}),(0,K.jsx)(XG,{open:t.ui.connectProviderId!==null,providerId:t.ui.connectProviderId,onClose:()=>n.openProviderConnect(null)}),(0,K.jsx)(fJ,{})]})}function yY({onUnauthorized:e}){let{state:t}=q(),n=t.account?.loggedIn===!0&&!t.account.vaultUnlocked;return(0,v.useEffect)(()=>{window.oonacode?.setVaultLocked?.(n)},[n]),t.accountLoaded?t.account?.loggedIn?!t.account.vaultUnlocked&&Gh(t.account)===null?(0,K.jsx)(CJ,{}):(0,K.jsx)(vY,{onUnauthorized:e}):(0,K.jsx)(SJ,{}):(0,K.jsx)(vJ,{})}function bY({api:e,socket:t,relay:n,initialSessionId:r,onUnauthorized:i,reportError:a}){return(0,K.jsx)(LS,{api:e,socket:t,relay:n??null,initialSessionId:r??null,onUnauthorized:i,...a?{reportError:a}:{},children:(0,K.jsx)(yY,{onUnauthorized:i})})}var xY=`oonacode.host.connection`,SY=`session`;function CY(e){let t=e.replace(/^#\/?\??/,``),n=new URLSearchParams(t),r=n.get(`token`),i=n.get(`host`)??n.get(`baseUrl`),a=n.get(SY);n.delete(`token`),n.delete(`host`),n.delete(`baseUrl`);let o=n.toString();return{token:r&&r.trim()?r.trim():null,baseUrl:i,sessionId:a,restHash:o?`#${o}`:``}}function wY(e){if(!e)return null;try{let t=e.getItem(xY);if(!t)return null;let n=JSON.parse(t);if(typeof n.baseUrl==`string`&&typeof n.token==`string`&&n.token)return{baseUrl:tg(n.baseUrl),token:n.token}}catch{}return null}function TY(e,t){if(e)try{t?e.setItem(xY,JSON.stringify(t)):e.removeItem(xY)}catch{}}async function EY(e){let t=CY(e.location.hash);if(t.token){let n={baseUrl:tg(t.baseUrl??e.location.origin),token:t.token};TY(e.storage,n);let r=`${e.location.pathname}${e.location.search}${t.restHash}`;try{e.replaceUrl?.(r)}catch{}return{connection:n,source:`hash`,sessionId:t.sessionId}}if(e.bridge&&typeof e.bridge.getConnection==`function`)try{let n=await e.bridge.getConnection();if(n&&typeof n.token==`string`&&n.token&&typeof n.baseUrl==`string`){let r={baseUrl:tg(n.baseUrl),token:n.token};return TY(e.storage,r),{connection:r,source:`bridge`,sessionId:t.sessionId}}}catch{}let n=wY(e.storage);return n?{connection:n,source:`storage`,sessionId:t.sessionId}:{connection:null,source:`none`,sessionId:t.sessionId}}function DY(e=window){let t=null;try{t=e.sessionStorage}catch{t=null}return EY({location:e.location,storage:t,replaceUrl:t=>e.history.replaceState(null,``,t),bridge:e.oonacode})}var OY=1;function kY(){let e=globalThis.crypto;return e&&typeof e.randomUUID==`function`?e.randomUUID():`c-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function AY(e,t){return`${tg(e).replace(/^http(s?):/i,`ws$1:`)}${b}?token=${encodeURIComponent(t)}`}var jY=class{clientId;opts;ws=null;_status=`idle`;attempts=0;preOpenFailures=0;epoch=0;reconnectTimer=null;pingTimer=null;manuallyClosed=!1;handlers=new Map;anyHandlers=new Set;statusHandlers=new Set;subscriptions=new Map;promptCounter=0;constructor(e){this.opts={clientKind:`web`,minBackoffMs:500,maxBackoffMs:15e3,pingIntervalMs:25e3,authProbeAfterFailures:2,...e,baseUrl:tg(e.baseUrl)},this.clientId=e.clientId??kY()}get status(){return this._status}connect(){this.manuallyClosed=!1,!(this.ws&&(this._status===`open`||this._status===`connecting`))&&this.open()}close(){this.manuallyClosed=!0,this.epoch+=1,this.clearTimers();let e=this.ws;if(this.ws=null,e){e.onopen=e.onclose=e.onerror=e.onmessage=null;try{e.close(1e3,`client closed`)}catch{}}this.setStatus(`closed`)}send(e){let t=this.ws;if(!t||t.readyState!==OY)return!1;try{return t.send(JSON.stringify(e)),!0}catch{return!1}}on(e,t){let n=this.handlers.get(e);n||(n=new Set,this.handlers.set(e,n));let r=t;return n.add(r),()=>{n?.delete(r)}}onAny(e){return this.anyHandlers.add(e),()=>{this.anyHandlers.delete(e)}}onStatus(e){return this.statusHandlers.add(e),e(this._status),()=>{this.statusHandlers.delete(e)}}subscribe(e,t){let n=this.subscriptions.get(e),r=t??n;this.subscriptions.set(e,r),this.send(r===void 0?{type:`subscribe`,sessionId:e}:{type:`subscribe`,sessionId:e,afterSeq:r})}unsubscribe(e){this.subscriptions.delete(e),this.send({type:`unsubscribe`,sessionId:e})}noteSeq(e,t){if(t===null||!this.subscriptions.has(e))return;let n=this.subscriptions.get(e);(n===void 0||t>n)&&this.subscriptions.set(e,t)}prompt(e,t,n={}){let r=n.requestId??`req-${this.clientId.slice(0,8)}-${++this.promptCounter}`,i={type:`prompt`,sessionId:e,requestId:r,text:t};if(n.attachments&&n.attachments.length>0&&(i.attachments=n.attachments),n.options&&(i.options=n.options),!this.send(i))throw Error(`not connected`);return r}respondPermission(e,t,n){return this.send({type:`permission_response`,sessionId:e,requestId:t,decision:n})}interrupt(e){return this.send({type:`interrupt`,sessionId:e})}setModel(e,t){return this.send({type:`set_model`,sessionId:e,model:t})}setPermissionMode(e,t,n){return this.send({type:`set_permission_mode`,sessionId:e,mode:t,...n===void 0?{}:{posture:n}})}setEffort(e,t){return this.send({type:`set_effort`,sessionId:e,effort:t})}open(){this.clearTimers(),this.epoch+=1,this.setStatus(this.attempts===0?`connecting`:`reconnecting`);let e=AY(this.opts.baseUrl,this.opts.token),t=this.opts.createWebSocket??(e=>new WebSocket(e)),n;try{n=t(e)}catch(e){this.scheduleReconnect(String(e?.message??e));return}this.ws=n;let r=!1;n.onopen=()=>{if(this.ws===n){r=!0,this.attempts=0,this.preOpenFailures=0,this.setStatus(`open`),this.send({type:`hello`,protocolVersion:1,clientKind:this.opts.clientKind,clientId:this.clientId,...this.opts.clientVersion?{clientVersion:this.opts.clientVersion}:{}});for(let[e,t]of this.subscriptions)this.send(t===void 0?{type:`subscribe`,sessionId:e}:{type:`subscribe`,sessionId:e,afterSeq:t});this.opts.pingIntervalMs>0&&(this.pingTimer=setInterval(()=>this.send({type:`ping`,ts:Date.now()}),this.opts.pingIntervalMs))}},n.onmessage=e=>{if(this.ws!==n)return;let t;try{t=typeof e.data==`string`?JSON.parse(e.data):null}catch{return}Le(t)&&this.dispatch(t)},n.onerror=()=>{},n.onclose=e=>{if(this.ws!==n)return;if(this.ws=null,this.pingTimer&&=(clearInterval(this.pingTimer),null),this.manuallyClosed){this.setStatus(`closed`);return}if(e.code===4401||e.code===4403||e.code===1008){this.setStatus(`unauthorized`,e.reason||`host rejected the token or origin`);return}let t=e.reason||`closed (${e.code})`;if(this.preOpenFailures=r?0:this.preOpenFailures+1,!r&&this.opts.authProbeAfterFailures>0&&this.preOpenFailures>=this.opts.authProbeAfterFailures){this.probeAuthThenReconnect(t);return}this.scheduleReconnect(t)}}async probeAuthThenReconnect(e){let t=this.epoch;this.setStatus(`reconnecting`,e);let n=this.opts.fetchImpl??((e,t)=>fetch(e,t)),r=!1;try{let e=await n(`${this.opts.baseUrl}${V.health}`,{method:`GET`,headers:{authorization:`Bearer ${this.opts.token}`}});if(e.status===401||e.status===403)r=!0;else if(e.status===200){let t=await e.json().catch(()=>null);r=!(t&&typeof t==`object`&&typeof t.hostId==`string`)}}catch{}if(!(this.manuallyClosed||t!==this.epoch)){if(r){this.setStatus(`unauthorized`,`host rejected the token`);return}this.scheduleReconnect(e)}}dispatch(e){e.type===`agent`&&e.seq!==null&&this.noteSeq(e.sessionId,e.seq);let t=this.handlers.get(e.type);if(t)for(let n of[...t])MY(()=>n(e));for(let t of[...this.anyHandlers])MY(()=>t(e))}scheduleReconnect(e){this.attempts+=1;let t=Math.min(this.opts.maxBackoffMs,this.opts.minBackoffMs*2**Math.min(this.attempts-1,10)),n=Math.round(t*(.7+Math.random()*.6));this.setStatus(`reconnecting`,e);let r=this.opts.setTimeoutImpl??setTimeout;this.reconnectTimer=r(()=>{this.reconnectTimer=null,this.manuallyClosed||this.open()},n)}clearTimers(){this.reconnectTimer&&=((this.opts.clearTimeoutImpl??clearTimeout)(this.reconnectTimer),null),this.pingTimer&&=(clearInterval(this.pingTimer),null)}setStatus(e,t){this._status=e;for(let n of[...this.statusHandlers])MY(()=>n(e,t))}};function MY(e){try{e()}catch(e){console.error(`[HostSocket] handler failed`,e)}}var NY=/([?&#](?:token|access_token|key|api_key|secret|password)=)[^&#\s"']*/gi,PY=/\b(Bearer|Basic)\s+[A-Za-z0-9\-._~+/=]{8,}/g;function FY(e){return e.replace(NY,`$1[redacted]`).replace(PY,`$1 [redacted]`)}function IY(e,t){return e.length<=t?e:`${e.slice(0,t-1)}…`}function LY(e){return typeof e==`object`&&!!e&&typeof e.message==`string`}function RY(e){if(LY(e)){let t=typeof e.name==`string`&&e.name?e.name:`Error`,n=typeof e.stack==`string`&&e.stack?e.stack:null;return{message:e.message||t,stack:n}}return typeof e==`string`?{message:IY(e,512),stack:null}:{message:`Unhandled rejection (${e===null?`null`:Array.isArray(e)?`array`:typeof e})`,stack:null}}function zY(e){return e?e.split(`
|
|
175
|
+
`).find(e=>/^\s+at\s/.test(e))?.trim()??``:``}function BY(e){let t=e.now??(()=>Date.now()),n=e.maxPerMinute??5,r=e.embedded??`browser`,i=[],a=new Map,o=(e,t)=>{for(;i.length>0&&(i[0]??0)<=t-6e4;)i.shift();for(let[e,n]of a)n<=t-6e4&&a.delete(e);return a.has(e)||i.length>=n?!1:(i.push(t),a.set(e,t),!0)},s=async(n,i={})=>{try{let a=e.api.reportError;if(typeof a!=`function`)return!1;let{message:s,stack:c}=RY(n),l=t();if(!o(`${s}\n${zY(c)}`,l))return!1;let u={client:`web-ui`,message:IY(FY(s),Zs),detail:{source:`manual`,...i,embedded:r},at:new Date(l).toISOString()};return c&&(u.stack=IY(FY(c),Qs)),e.appVersion&&(u.appVersion=e.appVersion),e.platform&&(u.platform=e.platform),await a.call(e.api,u),!0}catch{return!1}},c=e=>{if(typeof e?.message!=`string`)return;let t=e.error??null;if(t===null&&!e.message)return;let n={source:`window.onerror`};typeof e.filename==`string`&&e.filename&&(n.filename=e.filename),typeof e.lineno==`number`&&e.lineno>0&&(n.lineno=e.lineno),typeof e.colno==`number`&&e.colno>0&&(n.colno=e.colno),s(t??e.message,n)},l=e=>{s(e?.reason,{source:`unhandledrejection`})};return{install:t=>{if(typeof e.api.reportError!=`function`)return()=>{};let n=e=>c(e),r=e=>l(e);return t.addEventListener(`error`,n),t.addEventListener(`unhandledrejection`,r),()=>{t.removeEventListener(`error`,n),t.removeEventListener(`unhandledrejection`,r)}},report:s,handleErrorEvent:c,handleRejectionEvent:l}}var VY=1;function HY(e,t){return`${tg(e).replace(/^http(s?):/i,`ws$1:`)}${V.remoteWs}?token=${encodeURIComponent(t)}`}function UY(e){return`tab-${e}-${Math.random().toString(36).slice(2,10)}`}var WY=class{#e;#t=new Map;#n=new Set;#r=null;#i=`idle`;#a=null;#o=0;#s=!1;#c=0;#l=null;constructor(e){this.#e=e}get status(){return this.#i}get pairingCount(){return this.#t.size}onStatus(e){return this.#n.add(e),e(this.#i),()=>{this.#n.delete(e)}}connect(){if(this.#r||this.#i===`connecting`)return;this.#s=!1,this.#d(`connecting`);let e=HY(this.#e.baseUrl,this.#e.token),t=this.#e.createWebSocket??(e=>new WebSocket(e)),n;try{n=t(e)}catch{this.#d(`closed`),this.#u();return}this.#r=n,n.onopen=()=>{if(this.#r===n){this.#o=0,this.#d(`open`),this.#f({type:`remote_hello`,protocolVersion:1,clientId:this.#e.clientId??`web-ui`,...this.#e.clientVersion?{clientVersion:this.#e.clientVersion}:{}});for(let e of this.#t.values())this.#p(e)}},n.onmessage=e=>{this.#r===n&&this.#h(e.data)},n.onerror=()=>void 0,n.onclose=()=>{if(this.#r===n){this.#r=null;for(let e of this.#t.values())this.#m(e,{state:`host_offline`,online:!1,detail:`reconnecting to this PC…`}),e.onReach?.({kind:`ended`});this.#i!==`unavailable`&&this.#d(`closed`),this.#u()}}}close(){this.#s=!0,this.#l=null,this.#a&&(this.#e.clearTimeoutImpl??clearTimeout)(this.#a),this.#a=null,this.#t.clear();let e=this.#r;if(this.#r=null,e){e.onopen=e.onclose=e.onerror=e.onmessage=null;try{e.close(1e3,`closed`)}catch{}}this.#d(`idle`)}#u(){let e=this.#e.reconnectDelayMs??1e3;if(this.#s||e<=0||this.#a||this.#t.size===0)return;let t=this.#e.maxReconnectDelayMs??2e4;this.#o+=1;let n=Math.min(e*2**Math.min(this.#o-1,5),t),r=this.#e.setTimeoutImpl??setTimeout;this.#a=r(()=>{this.#a=null,this.#s||this.connect()},n)}#d(e,t){if(this.#i!==e){this.#i=e;for(let n of[...this.#n])n(e,t)}}#f(e){let t=this.#r;if(!t||t.readyState!==VY)return!1;try{return t.send(JSON.stringify(e)),!0}catch{return!1}}attach(e){this.#c+=1;let t=UY(this.#c),n={pairingId:t,hostId:e.hostId,sessionId:e.sessionId,state:`unavailable`,online:!1,detail:null,onFrame:e.onFrame,onState:e.onState,...e.onReach?{onReach:e.onReach}:{}};return this.#t.set(t,n),this.#r&&this.#r.readyState===VY?(this.#l!==null&&this.#m(n,{detail:this.#l}),this.#p(n)):this.connect(),{pairingId:t,hostId:e.hostId,sessionId:e.sessionId,send:e=>this.send(t,e),setReach:e=>this.#f({type:`remote_reach_set`,pairingId:t,folders:e}),answerReach:(e,n)=>this.#f({type:`remote_reach_answer`,pairingId:t,requestId:e,allow:n}),detach:()=>this.detach(t)}}detach(e){this.#t.get(e)&&(this.#t.delete(e),this.#f({type:`remote_detach`,pairingId:e}),this.#t.size===0&&this.close())}send(e,t){let n=this.#t.get(e);return!n||!n.online?!1:this.#f({type:`remote_send`,pairingId:e,frame:t})}#p(e){this.#f({type:`remote_attach`,pairingId:e.pairingId,hostId:e.hostId,sessionId:e.sessionId})}#m(e,t){Object.assign(e,t),e.onState({pairingId:e.pairingId,hostId:e.hostId,sessionId:e.sessionId,state:e.state,online:e.online,detail:e.detail})}#h(e){let t;try{let n=JSON.parse(typeof e==`string`?e:String(e));if(!Ve(n))return;t=n}catch{return}switch(t.type){case`remote_welcome`:if(!t.canRelay){let e=t.reason??`this PC cannot reach your other devices right now`;this.#l=e,this.#d(`unavailable`,e);for(let t of this.#t.values())this.#m(t,{state:`unavailable`,online:!1,detail:e});return}this.#l=null,this.#i===`unavailable`&&this.#d(`open`);for(let e of this.#t.values())e.online||this.#p(e);return;case`remote_status`:{let e=this.#t.get(t.pairingId);if(!e)return;this.#m(e,{state:t.state,online:He(t.state),detail:t.detail??null});return}case`remote_frame`:this.#t.get(t.pairingId)?.onFrame(t.frame);return;case`remote_reach_state`:this.#t.get(t.pairingId)?.onReach?.({kind:`state`,linked:t.linked,folders:t.folders,...t.refusals?{refusals:t.refusals}:{}});return;case`remote_reach_ask`:this.#t.get(t.pairingId)?.onReach?.({kind:`ask`,requestId:t.requestId,summary:t.summary});return;case`remote_reach_ask_end`:this.#t.get(t.pairingId)?.onReach?.({kind:`ask_end`,requestId:t.requestId});return;case`remote_error`:{let e=t.pairingId?this.#t.get(t.pairingId):void 0;e&&this.#m(e,{state:`error`,online:!1,detail:t.message});return}default:return}}};function GY({defaultBaseUrl:e,error:t,onConnect:n}){let[r,i]=(0,v.useState)(e),[a,o]=(0,v.useState)(``),s=r.trim().length>0&&a.trim().length>0;return(0,K.jsx)(`div`,{className:`flex min-h-full items-center justify-center bg-bg p-4`,children:(0,K.jsxs)(`form`,{className:`w-full max-w-md space-y-4 rounded-xl border border-border bg-surface p-6 shadow-md`,onSubmit:e=>{e.preventDefault(),s&&n({baseUrl:r.trim(),token:a.trim()})},children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Connect to your OonaCode host`}),(0,K.jsxs)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:[`This page needs the host's access token. It is normally passed automatically when you open the UI from the desktop app or run`,` `,(0,K.jsx)(`code`,{className:`rounded bg-surface-2 px-1 font-mono`,children:`oona web`}),`.`]})]}),t?(0,K.jsx)(`div`,{className:`rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-sm text-danger`,role:`alert`,children:t}):null,(0,K.jsx)(KS,{label:`Host URL`,children:(0,K.jsx)(`input`,{className:Z,value:r,onChange:e=>i(e.target.value),placeholder:`http://127.0.0.1:41317`,spellCheck:!1,autoComplete:`url`})}),(0,K.jsx)(KS,{label:`Host token`,hint:'Found in host/host.json ("token") in the OonaCode folder of the PC running the host — %LOCALAPPDATA%\\OonaCode on Windows, ~/Library/Application Support/OonaCode on macOS, ~/.oonacode on Linux — printed by `oona serve --show-token`, or embedded in the URL printed by `oona web --print`.',children:(0,K.jsx)(`input`,{className:Z,type:`password`,value:a,onChange:e=>o(e.target.value),autoComplete:`off`,spellCheck:!1,autoFocus:!0})}),(0,K.jsx)(X,{type:`submit`,variant:`primary`,className:`w-full justify-center`,disabled:!s,children:`Connect`})]})})}function KY(e){return!!e&&e.platform===`linux`&&e.host!==`vscode`&&!!e.onMenuModel}var qY=e=>!!e&&e.type!==`separator`&&e.enabled;function JY(e,t,n){let r=e.length;for(let i=1;i<=r;i+=1){let a=((t+n*i)%r+r)%r;if(qY(e[a]))return a}return-1}function YY({label:e,mnemonic:t,show:n}){let r=n&&t?e.toLowerCase().indexOf(t):-1;return r<0?e:(0,K.jsxs)(K.Fragment,{children:[e.slice(0,r),(0,K.jsx)(`span`,{className:`underline underline-offset-2`,children:e[r]}),e.slice(r+1)]})}function XY({bridge:e}){let[t,n]=(0,v.useState)(null),[r,i]=(0,v.useState)(null),[a,o]=(0,v.useState)(-1),[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)(!1),d=(0,v.useRef)(null);(0,v.useEffect)(()=>e.onMenuModel?.(e=>{n(e),i(null),o(-1),c(null)}),[e]);let f=t?.items??[],p=(0,v.useCallback)(e=>e===null?[]:f[e]?.submenu??[],[f]),m=(0,v.useCallback)(()=>{i(null),o(-1),c(null)},[]),h=(0,v.useCallback)((e,t)=>{i(e);let n=p(e);o(t?JY(n,-1,1):-1),t&&c(e)},[p]),g=(0,v.useCallback)(t=>{!t||!qY(t)||t.type===`submenu`||(m(),e.invokeMenuItem?.(t.id))},[e,m]);if((0,v.useEffect)(()=>{if(f.length===0)return;let e=!1,t=()=>r!==null||s!==null,n=e=>{e.preventDefault(),e.stopPropagation()},l=l=>{if(l.key===`Alt`){e=!l.repeat,u(!0);return}e=!1;let d=!l.ctrlKey&&!l.metaKey&&!l.shiftKey;if(!t()){if(l.key===`F10`&&d&&!l.altKey){n(l),c(0);return}if(l.altKey&&d&&l.key.length===1){let e=f.findIndex(e=>e.mnemonic===l.key.toLowerCase());e>=0&&(n(l),h(e,!0))}return}let _=p(r),v=s??r??0,y=e=>{let t=(v+e+f.length)%f.length;r===null?c(t):h(t,!0)};switch(l.key){case`Escape`:n(l),r!==null&&s!==null?(i(null),o(-1)):m();return;case`ArrowLeft`:n(l),y(-1);return;case`ArrowRight`:n(l),y(1);return;case`ArrowDown`:n(l),r===null?h(v,!0):o(JY(_,a,1));return;case`ArrowUp`:n(l),r===null?(h(v,!0),o(JY(p(v),0,-1))):o(JY(_,a<0?0:a,-1));return;case`Home`:n(l),r!==null&&o(JY(_,-1,1));return;case`End`:n(l),r!==null&&o(JY(_,0,-1));return;case`Enter`:case` `:n(l),r===null?h(v,!0):g(_[a]);return;case`Tab`:m();return}if(l.key.length===1&&!l.ctrlKey&&!l.metaKey){n(l);let e=l.key.toLowerCase();if(r!==null)g(_.find(t=>t.mnemonic===e&&qY(t)));else{let t=f.findIndex(t=>t.mnemonic===e);t>=0&&h(t,!0)}return}m()},_=n=>{n.key===`Alt`&&(u(!1),e&&(e=!1,t()?m():c(0)))},v=()=>{e=!1,u(!1),m()},y=e=>{(r!==null||s!==null)&&(d.current&&e.target instanceof Node&&d.current.contains(e.target)||m())};return window.addEventListener(`keydown`,l,!0),window.addEventListener(`keyup`,_,!0),window.addEventListener(`blur`,v),document.addEventListener(`mousedown`,y,!0),()=>{window.removeEventListener(`keydown`,l,!0),window.removeEventListener(`keyup`,_,!0),window.removeEventListener(`blur`,v),document.removeEventListener(`mousedown`,y,!0)}},[f,r,s,a,p,h,g,m]),!t||f.length===0)return null;let _=l||s!==null;return(0,K.jsx)(`div`,{ref:d,role:`menubar`,"aria-label":`Application menu`,className:`flex h-7 shrink-0 items-stretch gap-px border-b border-border bg-surface px-1 text-[13px] text-fg select-none`,children:f.map((e,t)=>{let n=r===t;return(0,K.jsxs)(`div`,{className:`relative flex`,children:[(0,K.jsx)(`button`,{type:`button`,role:`menuitem`,"aria-haspopup":`menu`,"aria-expanded":n,tabIndex:-1,disabled:!e.enabled,"data-menu-top":e.id,onMouseDown:e=>{e.preventDefault(),n?m():h(t,!1)},onMouseEnter:()=>{r!==null&&r!==t&&h(t,!1)},className:G(`my-0.5 rounded-sm px-2.5`,n||s===t?`bg-surface-3`:`hover:bg-surface-2`,!e.enabled&&`text-fg-faint`),children:(0,K.jsx)(YY,{label:e.label,mnemonic:e.mnemonic,show:_})}),n&&e.submenu?(0,K.jsx)(ZY,{entries:e.submenu,active:a,showMnemonics:_,onHover:o,onRun:g}):null]},e.id)})})}function ZY({entries:e,active:t,showMnemonics:n,onHover:r,onRun:i,nested:a=!1}){let[o,s]=(0,v.useState)(null);return(0,K.jsx)(`div`,{role:`menu`,className:G(`absolute z-[70] min-w-[15rem] rounded-md border border-border bg-surface py-1 text-fg shadow-lg`,a?`top-0 left-full -mt-1 ml-px`:`top-full left-0 mt-px`),children:e.map((e,a)=>{if(e.type===`separator`)return(0,K.jsx)(`div`,{role:`separator`,className:`my-1 border-t border-border`},e.id);let c=e.type===`checkbox`?`menuitemcheckbox`:e.type===`radio`?`menuitemradio`:`menuitem`,l=e.type===`checkbox`||e.type===`radio`;return(0,K.jsxs)(`div`,{role:c,"aria-disabled":!e.enabled||void 0,"aria-checked":l?e.checked:void 0,"aria-haspopup":e.type===`submenu`?`menu`:void 0,"data-menu-entry":e.id,onMouseDown:e=>e.preventDefault(),onMouseEnter:()=>{r(a),s(e.type===`submenu`?a:null)},onClick:()=>i(e),className:G(`relative flex cursor-default items-center gap-2 px-3 py-1`,a===t&&e.enabled&&`bg-surface-2`,!e.enabled&&`text-fg-faint`),children:[(0,K.jsx)(`span`,{className:`w-4 shrink-0 text-center`,"aria-hidden":!0,children:l&&e.checked?e.type===`radio`?`•`:`✓`:``}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:(0,K.jsx)(YY,{label:e.label,mnemonic:e.mnemonic,show:n})}),e.accelerator?(0,K.jsx)(`span`,{className:`shrink-0 pl-6 text-xs text-fg-faint`,children:e.accelerator}):null,e.type===`submenu`?(0,K.jsx)(`span`,{className:`shrink-0 pl-4 text-fg-faint`,"aria-hidden":!0,children:`›`}):null,e.type===`submenu`&&o===a&&e.submenu?(0,K.jsx)(ZY,{entries:e.submenu,active:-1,showMnemonics:n,onHover:()=>{},onRun:i,nested:!0}):null]},e.id)})})}function QY(e){return!!e&&typeof e==`object`&&typeof e.hostId==`string`}function $Y(e){return Math.min(5e3,500*2**Math.max(0,e))}async function eX(e){let t=e.sleep??(e=>new Promise(t=>setTimeout(t,e)));for(let n=0;;n++){if(e.cancelled?.())return null;try{let t=await e.getConnection();if(t&&typeof t.token==`string`&&t.token&&typeof t.baseUrl==`string`&&await e.accepts(t).catch(()=>!1))return t}catch{}await t($Y(n))}}function tX(){let[e,t]=(0,v.useState)(void 0),[n,r]=(0,v.useState)(null),[i,a]=(0,v.useState)(null),[o,s]=(0,v.useState)(0),c=(0,v.useRef)(!1),l=(0,v.useRef)(!1);(0,v.useEffect)(()=>()=>{l.current=!0},[]);let u=(0,v.useCallback)(()=>{let e=window.oonacode;return!e||typeof e.getConnection!=`function`?!1:c.current?!0:(c.current=!0,eX({getConnection:()=>e.getConnection(),accepts:e=>ng(e).health().then(e=>QY(e),()=>!1),cancelled:()=>l.current}).then(e=>{c.current=!1,e&&(TY(window.sessionStorage,e),s(e=>e+1),t({baseUrl:e.baseUrl,token:e.token}))}),!0)},[]);(0,v.useEffect)(()=>{DY().then(e=>{r(e.sessionId),!(!e.connection&&u())&&t(e.connection)})},[u]),(0,v.useEffect)(()=>{e!==void 0&&document.getElementById(`oona-splash`)?.remove()},[e]);let d=(0,v.useCallback)(()=>{TY(window.sessionStorage,null),!u()&&(a(`The host rejected the token. Paste a current one from the host.`),t(null))},[u]),f=(0,v.useMemo)(()=>{if(!e)return null;let t=ng(e),n=window.oonacode?.window?.id;return{api:t,socket:new jY({baseUrl:e.baseUrl,token:e.token,clientKind:window.oonacode?`desktop`:`web`,clientVersion:window.oonacode?.appVersion,...n?{clientId:`${n.slice(0,16)}-${kY()}`}:{}}),relay:new WY({baseUrl:e.baseUrl,token:e.token,clientId:window.oonacode?`desktop`:`web-ui`,...window.oonacode?.appVersion?{clientVersion:window.oonacode.appVersion}:{}})}},[e]),p=(0,v.useMemo)(()=>f?BY({api:f.api,appVersion:window.oonacode?.appVersion??null,platform:window.oonacode?.platform??null,embedded:window.oonacode?`desktop`:`browser`}):null,[f]);return(0,v.useEffect)(()=>p?.install(window),[p]),e===void 0?null:!e||!f?(0,K.jsx)(GY,{defaultBaseUrl:window.location.origin,error:i,onConnect:e=>{TY(window.sessionStorage,e),a(null),t(e)}}):(0,K.jsx)(bY,{api:f.api,socket:f.socket,relay:f.relay,initialSessionId:n,onUnauthorized:d,...p?{reportError:p.report}:{}},o)}function nX({children:e}){let t=typeof window>`u`?void 0:window.oonacode;return KY(t)?(0,K.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,K.jsx)(XY,{bridge:t}),(0,K.jsx)(`div`,{className:`min-h-0 flex-1`,children:e})]}):(0,K.jsx)(K.Fragment,{children:e})}var rX=document.getElementById(`root`);(0,y.createRoot)(rX).render((0,K.jsx)(v.StrictMode,{children:(0,K.jsx)(nX,{children:(0,K.jsx)(tX,{})})}));
|