@vibelet/cli 1.2.159 → 1.2.161
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/dist/index.cjs +1 -1
- package/dist/runtime-version.cjs +1 -1
- package/dist/web/assets/{highlighted-body-TPN3WLV5-BC0VGzp5.js → highlighted-body-TPN3WLV5-BSoiY9JZ.js} +1 -1
- package/dist/web/assets/{index-B_j1n1Aj.js → index-2DF4OVL_.js} +2 -2
- package/dist/web/assets/{mermaid-O7DHMXV3-Cdr-BNO7.js → mermaid-O7DHMXV3-CNThkwJH.js} +86 -86
- package/dist/web/index.html +1 -1
- package/package.json +1 -1
package/dist/runtime-version.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var c=require("node:fs"),n=require("node:path"),p="@vibelet/cli";function i(r){try{let e=JSON.parse((0,c.readFileSync)(r,"utf8"));if(e.name===p&&typeof e.version=="string"&&e.version.length>0)return e.version}catch{}return null}function l(){return"1.2.
|
|
1
|
+
var c=require("node:fs"),n=require("node:path"),p="@vibelet/cli";function i(r){try{let e=JSON.parse((0,c.readFileSync)(r,"utf8"));if(e.name===p&&typeof e.version=="string"&&e.version.length>0)return e.version}catch{}return null}function l(){return"1.2.161"}var a=l();process.stdout.write(`${a}
|
|
2
2
|
`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{R as c,M as p,B as x}from"./mermaid-O7DHMXV3-
|
|
1
|
+
import{R as c,M as p,B as x}from"./mermaid-O7DHMXV3-CNThkwJH.js";import{r,j as d}from"./index-2DF4OVL_.js";var R=({code:i,language:e,raw:t,className:g,startLine:u,...m})=>{let{shikiTheme:o}=r.useContext(c),a=p(),[n,s]=r.useState(t);return r.useEffect(()=>{if(!a){s(t);return}let l=a.highlight({code:i,language:e,themes:o},h=>{s(h)});l&&s(l)},[i,e,o,a,t]),d.jsx(x,{className:g,language:e,result:n,startLine:u,...m})};export{R as HighlightedCodeBlockBody};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mermaid-O7DHMXV3-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mermaid-O7DHMXV3-CNThkwJH.js","assets/mermaid-O7DHMXV3-CxQgajYu.css"])))=>i.map(i=>d[i]);
|
|
2
2
|
(function(){const u=document.createElement("link").relList;if(u&&u.supports&&u.supports("modulepreload"))return;for(const y of document.querySelectorAll('link[rel="modulepreload"]'))d(y);new MutationObserver(y=>{for(const g of y)if(g.type==="childList")for(const A of g.addedNodes)A.tagName==="LINK"&&A.rel==="modulepreload"&&d(A)}).observe(document,{childList:!0,subtree:!0});function o(y){const g={};return y.integrity&&(g.integrity=y.integrity),y.referrerPolicy&&(g.referrerPolicy=y.referrerPolicy),y.crossOrigin==="use-credentials"?g.credentials="include":y.crossOrigin==="anonymous"?g.credentials="omit":g.credentials="same-origin",g}function d(y){if(y.ep)return;y.ep=!0;const g=o(y);fetch(y.href,g)}})();var Io={exports:{}},Zs={};var Qm;function Mg(){if(Qm)return Zs;Qm=1;var i=Symbol.for("react.transitional.element"),u=Symbol.for("react.fragment");function o(d,y,g){var A=null;if(g!==void 0&&(A=""+g),y.key!==void 0&&(A=""+y.key),"key"in y){g={};for(var Y in y)Y!=="key"&&(g[Y]=y[Y])}else g=y;return y=g.ref,{$$typeof:i,type:d,key:A,ref:y!==void 0?y:null,props:g}}return Zs.Fragment=u,Zs.jsx=o,Zs.jsxs=o,Zs}var Vm;function _g(){return Vm||(Vm=1,Io.exports=Mg()),Io.exports}var c=_g(),Wo={exports:{}},Se={};var Xm;function Dg(){if(Xm)return Se;Xm=1;var i=Symbol.for("react.transitional.element"),u=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),d=Symbol.for("react.strict_mode"),y=Symbol.for("react.profiler"),g=Symbol.for("react.consumer"),A=Symbol.for("react.context"),Y=Symbol.for("react.forward_ref"),U=Symbol.for("react.suspense"),C=Symbol.for("react.memo"),G=Symbol.for("react.lazy"),q=Symbol.for("react.activity"),Q=Symbol.iterator;function L(S){return S===null||typeof S!="object"?null:(S=Q&&S[Q]||S["@@iterator"],typeof S=="function"?S:null)}var $={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},F=Object.assign,Ce={};function Ee(S,R,X){this.props=S,this.context=R,this.refs=Ce,this.updater=X||$}Ee.prototype.isReactComponent={},Ee.prototype.setState=function(S,R){if(typeof S!="object"&&typeof S!="function"&&S!=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,S,R,"setState")},Ee.prototype.forceUpdate=function(S){this.updater.enqueueForceUpdate(this,S,"forceUpdate")};function Qe(){}Qe.prototype=Ee.prototype;function Z(S,R,X){this.props=S,this.context=R,this.refs=Ce,this.updater=X||$}var O=Z.prototype=new Qe;O.constructor=Z,F(O,Ee.prototype),O.isPureReactComponent=!0;var we=Array.isArray;function pe(){}var be={H:null,A:null,T:null,S:null},nt=Object.prototype.hasOwnProperty;function Te(S,R,X){var I=X.ref;return{$$typeof:i,type:S,key:R,ref:I!==void 0?I:null,props:X}}function Ve(S,R){return Te(S.type,R,S.props)}function lt(S){return typeof S=="object"&&S!==null&&S.$$typeof===i}function Fe(S){var R={"=":"=0",":":"=2"};return"$"+S.replace(/[=:]/g,function(X){return R[X]})}var ut=/\/+/g;function Rt(S,R){return typeof S=="object"&&S!==null&&S.key!=null?Fe(""+S.key):R.toString(36)}function J(S){switch(S.status){case"fulfilled":return S.value;case"rejected":throw S.reason;default:switch(typeof S.status=="string"?S.then(pe,pe):(S.status="pending",S.then(function(R){S.status==="pending"&&(S.status="fulfilled",S.value=R)},function(R){S.status==="pending"&&(S.status="rejected",S.reason=R)})),S.status){case"fulfilled":return S.value;case"rejected":throw S.reason}}throw S}function M(S,R,X,I,ie){var ve=typeof S;(ve==="undefined"||ve==="boolean")&&(S=null);var ce=!1;if(S===null)ce=!0;else switch(ve){case"bigint":case"string":case"number":ce=!0;break;case"object":switch(S.$$typeof){case i:case u:ce=!0;break;case G:return ce=S._init,M(ce(S._payload),R,X,I,ie)}}if(ce)return ie=ie(S),ce=I===""?"."+Rt(S,0):I,we(ie)?(X="",ce!=null&&(X=ce.replace(ut,"$&/")+"/"),M(ie,R,X,"",function(ue){return ue})):ie!=null&&(lt(ie)&&(ie=Ve(ie,X+(ie.key==null||S&&S.key===ie.key?"":(""+ie.key).replace(ut,"$&/")+"/")+ce)),R.push(ie)),1;ce=0;var Xe=I===""?".":I+":";if(we(S))for(var ze=0;ze<S.length;ze++)I=S[ze],ve=Xe+Rt(I,ze),ce+=M(I,R,X,ve,ie);else if(ze=L(S),typeof ze=="function")for(S=ze.call(S),ze=0;!(I=S.next()).done;)I=I.value,ve=Xe+Rt(I,ze++),ce+=M(I,R,X,ve,ie);else if(ve==="object"){if(typeof S.then=="function")return M(J(S),R,X,I,ie);throw R=String(S),Error("Objects are not valid as a React child (found: "+(R==="[object Object]"?"object with keys {"+Object.keys(S).join(", ")+"}":R)+"). If you meant to render a collection of children, use an array instead.")}return ce}function V(S,R,X){if(S==null)return S;var I=[],ie=0;return M(S,I,"","",function(ve){return R.call(X,ve,ie++)}),I}function ee(S){if(S._status===-1){var R=S._result;R=R(),R.then(function(X){(S._status===0||S._status===-1)&&(S._status=1,S._result=X)},function(X){(S._status===0||S._status===-1)&&(S._status=2,S._result=X)}),S._status===-1&&(S._status=0,S._result=R)}if(S._status===1)return S._result.default;throw S._result}var ge=typeof reportError=="function"?reportError:function(S){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var R=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof S=="object"&&S!==null&&typeof S.message=="string"?String(S.message):String(S),error:S});if(!window.dispatchEvent(R))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",S);return}console.error(S)},le={map:V,forEach:function(S,R,X){V(S,function(){R.apply(this,arguments)},X)},count:function(S){var R=0;return V(S,function(){R++}),R},toArray:function(S){return V(S,function(R){return R})||[]},only:function(S){if(!lt(S))throw Error("React.Children.only expected to receive a single React element child.");return S}};return Se.Activity=q,Se.Children=le,Se.Component=Ee,Se.Fragment=o,Se.Profiler=y,Se.PureComponent=Z,Se.StrictMode=d,Se.Suspense=U,Se.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=be,Se.__COMPILER_RUNTIME={__proto__:null,c:function(S){return be.H.useMemoCache(S)}},Se.cache=function(S){return function(){return S.apply(null,arguments)}},Se.cacheSignal=function(){return null},Se.cloneElement=function(S,R,X){if(S==null)throw Error("The argument must be a React element, but you passed "+S+".");var I=F({},S.props),ie=S.key;if(R!=null)for(ve in R.key!==void 0&&(ie=""+R.key),R)!nt.call(R,ve)||ve==="key"||ve==="__self"||ve==="__source"||ve==="ref"&&R.ref===void 0||(I[ve]=R[ve]);var ve=arguments.length-2;if(ve===1)I.children=X;else if(1<ve){for(var ce=Array(ve),Xe=0;Xe<ve;Xe++)ce[Xe]=arguments[Xe+2];I.children=ce}return Te(S.type,ie,I)},Se.createContext=function(S){return S={$$typeof:A,_currentValue:S,_currentValue2:S,_threadCount:0,Provider:null,Consumer:null},S.Provider=S,S.Consumer={$$typeof:g,_context:S},S},Se.createElement=function(S,R,X){var I,ie={},ve=null;if(R!=null)for(I in R.key!==void 0&&(ve=""+R.key),R)nt.call(R,I)&&I!=="key"&&I!=="__self"&&I!=="__source"&&(ie[I]=R[I]);var ce=arguments.length-2;if(ce===1)ie.children=X;else if(1<ce){for(var Xe=Array(ce),ze=0;ze<ce;ze++)Xe[ze]=arguments[ze+2];ie.children=Xe}if(S&&S.defaultProps)for(I in ce=S.defaultProps,ce)ie[I]===void 0&&(ie[I]=ce[I]);return Te(S,ve,ie)},Se.createRef=function(){return{current:null}},Se.forwardRef=function(S){return{$$typeof:Y,render:S}},Se.isValidElement=lt,Se.lazy=function(S){return{$$typeof:G,_payload:{_status:-1,_result:S},_init:ee}},Se.memo=function(S,R){return{$$typeof:C,type:S,compare:R===void 0?null:R}},Se.startTransition=function(S){var R=be.T,X={};be.T=X;try{var I=S(),ie=be.S;ie!==null&&ie(X,I),typeof I=="object"&&I!==null&&typeof I.then=="function"&&I.then(pe,ge)}catch(ve){ge(ve)}finally{R!==null&&X.types!==null&&(R.types=X.types),be.T=R}},Se.unstable_useCacheRefresh=function(){return be.H.useCacheRefresh()},Se.use=function(S){return be.H.use(S)},Se.useActionState=function(S,R,X){return be.H.useActionState(S,R,X)},Se.useCallback=function(S,R){return be.H.useCallback(S,R)},Se.useContext=function(S){return be.H.useContext(S)},Se.useDebugValue=function(){},Se.useDeferredValue=function(S,R){return be.H.useDeferredValue(S,R)},Se.useEffect=function(S,R){return be.H.useEffect(S,R)},Se.useEffectEvent=function(S){return be.H.useEffectEvent(S)},Se.useId=function(){return be.H.useId()},Se.useImperativeHandle=function(S,R,X){return be.H.useImperativeHandle(S,R,X)},Se.useInsertionEffect=function(S,R){return be.H.useInsertionEffect(S,R)},Se.useLayoutEffect=function(S,R){return be.H.useLayoutEffect(S,R)},Se.useMemo=function(S,R){return be.H.useMemo(S,R)},Se.useOptimistic=function(S,R){return be.H.useOptimistic(S,R)},Se.useReducer=function(S,R,X){return be.H.useReducer(S,R,X)},Se.useRef=function(S){return be.H.useRef(S)},Se.useState=function(S){return be.H.useState(S)},Se.useSyncExternalStore=function(S,R,X){return be.H.useSyncExternalStore(S,R,X)},Se.useTransition=function(){return be.H.useTransition()},Se.version="19.2.7",Se}var Zm;function Nd(){return Zm||(Zm=1,Wo.exports=Dg()),Wo.exports}var v=Nd(),Po={exports:{}},Ks={},ed={exports:{}},td={};var Km;function zg(){return Km||(Km=1,(function(i){function u(M,V){var ee=M.length;M.push(V);e:for(;0<ee;){var ge=ee-1>>>1,le=M[ge];if(0<y(le,V))M[ge]=V,M[ee]=le,ee=ge;else break e}}function o(M){return M.length===0?null:M[0]}function d(M){if(M.length===0)return null;var V=M[0],ee=M.pop();if(ee!==V){M[0]=ee;e:for(var ge=0,le=M.length,S=le>>>1;ge<S;){var R=2*(ge+1)-1,X=M[R],I=R+1,ie=M[I];if(0>y(X,ee))I<le&&0>y(ie,X)?(M[ge]=ie,M[I]=ee,ge=I):(M[ge]=X,M[R]=ee,ge=R);else if(I<le&&0>y(ie,ee))M[ge]=ie,M[I]=ee,ge=I;else break e}}return V}function y(M,V){var ee=M.sortIndex-V.sortIndex;return ee!==0?ee:M.id-V.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var g=performance;i.unstable_now=function(){return g.now()}}else{var A=Date,Y=A.now();i.unstable_now=function(){return A.now()-Y}}var U=[],C=[],G=1,q=null,Q=3,L=!1,$=!1,F=!1,Ce=!1,Ee=typeof setTimeout=="function"?setTimeout:null,Qe=typeof clearTimeout=="function"?clearTimeout:null,Z=typeof setImmediate<"u"?setImmediate:null;function O(M){for(var V=o(C);V!==null;){if(V.callback===null)d(C);else if(V.startTime<=M)d(C),V.sortIndex=V.expirationTime,u(U,V);else break;V=o(C)}}function we(M){if(F=!1,O(M),!$)if(o(U)!==null)$=!0,pe||(pe=!0,Fe());else{var V=o(C);V!==null&&J(we,V.startTime-M)}}var pe=!1,be=-1,nt=5,Te=-1;function Ve(){return Ce?!0:!(i.unstable_now()-Te<nt)}function lt(){if(Ce=!1,pe){var M=i.unstable_now();Te=M;var V=!0;try{e:{$=!1,F&&(F=!1,Qe(be),be=-1),L=!0;var ee=Q;try{t:{for(O(M),q=o(U);q!==null&&!(q.expirationTime>M&&Ve());){var ge=q.callback;if(typeof ge=="function"){q.callback=null,Q=q.priorityLevel;var le=ge(q.expirationTime<=M);if(M=i.unstable_now(),typeof le=="function"){q.callback=le,O(M),V=!0;break t}q===o(U)&&d(U),O(M)}else d(U);q=o(U)}if(q!==null)V=!0;else{var S=o(C);S!==null&&J(we,S.startTime-M),V=!1}}break e}finally{q=null,Q=ee,L=!1}V=void 0}}finally{V?Fe():pe=!1}}}var Fe;if(typeof Z=="function")Fe=function(){Z(lt)};else if(typeof MessageChannel<"u"){var ut=new MessageChannel,Rt=ut.port2;ut.port1.onmessage=lt,Fe=function(){Rt.postMessage(null)}}else Fe=function(){Ee(lt,0)};function J(M,V){be=Ee(function(){M(i.unstable_now())},V)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(M){M.callback=null},i.unstable_forceFrameRate=function(M){0>M||125<M?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):nt=0<M?Math.floor(1e3/M):5},i.unstable_getCurrentPriorityLevel=function(){return Q},i.unstable_next=function(M){switch(Q){case 1:case 2:case 3:var V=3;break;default:V=Q}var ee=Q;Q=V;try{return M()}finally{Q=ee}},i.unstable_requestPaint=function(){Ce=!0},i.unstable_runWithPriority=function(M,V){switch(M){case 1:case 2:case 3:case 4:case 5:break;default:M=3}var ee=Q;Q=M;try{return V()}finally{Q=ee}},i.unstable_scheduleCallback=function(M,V,ee){var ge=i.unstable_now();switch(typeof ee=="object"&&ee!==null?(ee=ee.delay,ee=typeof ee=="number"&&0<ee?ge+ee:ge):ee=ge,M){case 1:var le=-1;break;case 2:le=250;break;case 5:le=1073741823;break;case 4:le=1e4;break;default:le=5e3}return le=ee+le,M={id:G++,callback:V,priorityLevel:M,startTime:ee,expirationTime:le,sortIndex:-1},ee>ge?(M.sortIndex=ee,u(C,M),o(U)===null&&M===o(C)&&(F?(Qe(be),be=-1):F=!0,J(we,ee-ge))):(M.sortIndex=le,u(U,M),$||L||($=!0,pe||(pe=!0,Fe()))),M},i.unstable_shouldYield=Ve,i.unstable_wrapCallback=function(M){var V=Q;return function(){var ee=Q;Q=V;try{return M.apply(this,arguments)}finally{Q=ee}}}})(td)),td}var $m;function Rg(){return $m||($m=1,ed.exports=zg()),ed.exports}var nd={exports:{}},un={};var Jm;function kg(){if(Jm)return un;Jm=1;var i=Nd();function u(U){var C="https://react.dev/errors/"+U;if(1<arguments.length){C+="?args[]="+encodeURIComponent(arguments[1]);for(var G=2;G<arguments.length;G++)C+="&args[]="+encodeURIComponent(arguments[G])}return"Minified React error #"+U+"; visit "+C+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function o(){}var d={d:{f:o,r:function(){throw Error(u(522))},D:o,C:o,L:o,m:o,X:o,S:o,M:o},p:0,findDOMNode:null},y=Symbol.for("react.portal");function g(U,C,G){var q=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:y,key:q==null?null:""+q,children:U,containerInfo:C,implementation:G}}var A=i.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function Y(U,C){if(U==="font")return"";if(typeof C=="string")return C==="use-credentials"?C:""}return un.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=d,un.createPortal=function(U,C){var G=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!C||C.nodeType!==1&&C.nodeType!==9&&C.nodeType!==11)throw Error(u(299));return g(U,C,null,G)},un.flushSync=function(U){var C=A.T,G=d.p;try{if(A.T=null,d.p=2,U)return U()}finally{A.T=C,d.p=G,d.d.f()}},un.preconnect=function(U,C){typeof U=="string"&&(C?(C=C.crossOrigin,C=typeof C=="string"?C==="use-credentials"?C:"":void 0):C=null,d.d.C(U,C))},un.prefetchDNS=function(U){typeof U=="string"&&d.d.D(U)},un.preinit=function(U,C){if(typeof U=="string"&&C&&typeof C.as=="string"){var G=C.as,q=Y(G,C.crossOrigin),Q=typeof C.integrity=="string"?C.integrity:void 0,L=typeof C.fetchPriority=="string"?C.fetchPriority:void 0;G==="style"?d.d.S(U,typeof C.precedence=="string"?C.precedence:void 0,{crossOrigin:q,integrity:Q,fetchPriority:L}):G==="script"&&d.d.X(U,{crossOrigin:q,integrity:Q,fetchPriority:L,nonce:typeof C.nonce=="string"?C.nonce:void 0})}},un.preinitModule=function(U,C){if(typeof U=="string")if(typeof C=="object"&&C!==null){if(C.as==null||C.as==="script"){var G=Y(C.as,C.crossOrigin);d.d.M(U,{crossOrigin:G,integrity:typeof C.integrity=="string"?C.integrity:void 0,nonce:typeof C.nonce=="string"?C.nonce:void 0})}}else C==null&&d.d.M(U)},un.preload=function(U,C){if(typeof U=="string"&&typeof C=="object"&&C!==null&&typeof C.as=="string"){var G=C.as,q=Y(G,C.crossOrigin);d.d.L(U,G,{crossOrigin:q,integrity:typeof C.integrity=="string"?C.integrity:void 0,nonce:typeof C.nonce=="string"?C.nonce:void 0,type:typeof C.type=="string"?C.type:void 0,fetchPriority:typeof C.fetchPriority=="string"?C.fetchPriority:void 0,referrerPolicy:typeof C.referrerPolicy=="string"?C.referrerPolicy:void 0,imageSrcSet:typeof C.imageSrcSet=="string"?C.imageSrcSet:void 0,imageSizes:typeof C.imageSizes=="string"?C.imageSizes:void 0,media:typeof C.media=="string"?C.media:void 0})}},un.preloadModule=function(U,C){if(typeof U=="string")if(C){var G=Y(C.as,C.crossOrigin);d.d.m(U,{as:typeof C.as=="string"&&C.as!=="script"?C.as:void 0,crossOrigin:G,integrity:typeof C.integrity=="string"?C.integrity:void 0})}else d.d.m(U)},un.requestFormReset=function(U){d.d.r(U)},un.unstable_batchedUpdates=function(U,C){return U(C)},un.useFormState=function(U,C,G){return A.H.useFormState(U,C,G)},un.useFormStatus=function(){return A.H.useHostTransitionStatus()},un.version="19.2.7",un}var Fm;function Og(){if(Fm)return nd.exports;Fm=1;function i(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(u){console.error(u)}}return i(),nd.exports=kg(),nd.exports}var Im;function Ug(){if(Im)return Ks;Im=1;var i=Rg(),u=Nd(),o=Og();function d(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 y(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function g(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,(t.flags&4098)!==0&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function A(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 Y(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 U(e){if(g(e)!==e)throw Error(d(188))}function C(e){var t=e.alternate;if(!t){if(t=g(e),t===null)throw Error(d(188));return t!==e?null:e}for(var n=e,l=t;;){var a=n.return;if(a===null)break;var s=a.alternate;if(s===null){if(l=a.return,l!==null){n=l;continue}break}if(a.child===s.child){for(s=a.child;s;){if(s===n)return U(a),e;if(s===l)return U(a),t;s=s.sibling}throw Error(d(188))}if(n.return!==l.return)n=a,l=s;else{for(var r=!1,h=a.child;h;){if(h===n){r=!0,n=a,l=s;break}if(h===l){r=!0,l=a,n=s;break}h=h.sibling}if(!r){for(h=s.child;h;){if(h===n){r=!0,n=s,l=a;break}if(h===l){r=!0,l=s,n=a;break}h=h.sibling}if(!r)throw Error(d(189))}}if(n.alternate!==l)throw Error(d(190))}if(n.tag!==3)throw Error(d(188));return n.stateNode.current===n?e:t}function G(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=G(e),t!==null)return t;e=e.sibling}return null}var q=Object.assign,Q=Symbol.for("react.element"),L=Symbol.for("react.transitional.element"),$=Symbol.for("react.portal"),F=Symbol.for("react.fragment"),Ce=Symbol.for("react.strict_mode"),Ee=Symbol.for("react.profiler"),Qe=Symbol.for("react.consumer"),Z=Symbol.for("react.context"),O=Symbol.for("react.forward_ref"),we=Symbol.for("react.suspense"),pe=Symbol.for("react.suspense_list"),be=Symbol.for("react.memo"),nt=Symbol.for("react.lazy"),Te=Symbol.for("react.activity"),Ve=Symbol.for("react.memo_cache_sentinel"),lt=Symbol.iterator;function Fe(e){return e===null||typeof e!="object"?null:(e=lt&&e[lt]||e["@@iterator"],typeof e=="function"?e:null)}var ut=Symbol.for("react.client.reference");function Rt(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===ut?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case F:return"Fragment";case Ee:return"Profiler";case Ce:return"StrictMode";case we:return"Suspense";case pe:return"SuspenseList";case Te:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case $:return"Portal";case Z:return e.displayName||"Context";case Qe:return(e._context.displayName||"Context")+".Consumer";case O:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case be:return t=e.displayName||null,t!==null?t:Rt(e.type)||"Memo";case nt:t=e._payload,e=e._init;try{return Rt(e(t))}catch{}}return null}var J=Array.isArray,M=u.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,V=o.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ee={pending:!1,data:null,method:null,action:null},ge=[],le=-1;function S(e){return{current:e}}function R(e){0>le||(e.current=ge[le],ge[le]=null,le--)}function X(e,t){le++,ge[le]=e.current,e.current=t}var I=S(null),ie=S(null),ve=S(null),ce=S(null);function Xe(e,t){switch(X(ve,t),X(ie,e),X(I,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?fm(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=fm(t),e=hm(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}R(I),X(I,e)}function ze(){R(I),R(ie),R(ve)}function ue(e){e.memoizedState!==null&&X(ce,e);var t=I.current,n=hm(t,e.type);t!==n&&(X(ie,e),X(I,n))}function Ae(e){ie.current===e&&(R(I),R(ie)),ce.current===e&&(R(ce),Gs._currentValue=ee)}var Gt,ne;function qe(e){if(Gt===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);Gt=t&&t[1]||"",ne=-1<n.stack.indexOf(`
|
|
3
3
|
at`)?" (<anonymous>)":-1<n.stack.indexOf("@")?"@unknown:0:0":""}return`
|
|
4
4
|
`+Gt+e+ne}var at=!1;function dn(e,t){if(!e||at)return"";at=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var l={DetermineComponentFrameRoot:function(){try{if(t){var H=function(){throw Error()};if(Object.defineProperty(H.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(H,[])}catch(_){var w=_}Reflect.construct(e,[],H)}else{try{H.call()}catch(_){w=_}e.call(H.prototype)}}else{try{throw Error()}catch(_){w=_}(H=e())&&typeof H.catch=="function"&&H.catch(function(){})}}catch(_){if(_&&w&&typeof _.stack=="string")return[_.stack,w.stack]}return[null,null]}};l.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var a=Object.getOwnPropertyDescriptor(l.DetermineComponentFrameRoot,"name");a&&a.configurable&&Object.defineProperty(l.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var s=l.DetermineComponentFrameRoot(),r=s[0],h=s[1];if(r&&h){var b=r.split(`
|
|
@@ -14,7 +14,7 @@ This action cannot be undone from Vibelet Web.`)}function Qp(i){return`Remote fi
|
|
|
14
14
|
`).replace(Xv,"").replace(Zv,"").trim()}function kd(i){const u=$v(i);return Kv.has(u)?"":u}function Jv(i){return kd(i).length>0}function Od(i){const u=kd(i);if(!u)return"";try{const o=JSON.parse(u);if(o&&typeof o=="object"&&!Array.isArray(o)){const d=typeof o.query=="string"?Gu(o.query):"";if(d)return d;const y=typeof o.command=="string"?Gu(o.command):"";if(y)return y;const g=typeof o.description=="string"?Gu(o.description):"";if(g)return g}}catch{}return Gu(u)}function Fv(i,u){if(!u)return[];switch((i??"").toLowerCase()){case"read":return ud(u);case"write":{const d=ud(u),y=zt(u,"content");return y&&d.push({label:"Content",isDiff:!0,value:"",diffNew:$s(y,500)}),d}case"edit":{const d=ud(u),y=zt(u,"old_string")||zt(u,"oldString"),g=zt(u,"new_string")||zt(u,"newString");return(y||g)&&d.push({label:"Change",isDiff:!0,value:"",diffOld:$s(y,300),diffNew:$s(g,300)}),d}case"bash":{const d=zt(u,"command");return d?[{label:"Command",value:d,isCode:!0}]:[]}case"websearch":{const d=zt(u,"query");return d?[{label:"Query",value:d}]:[]}case"webfetch":{const d=[],y=zt(u,"url");y&&d.push({label:"URL",value:y});const g=zt(u,"prompt");return g&&d.push({label:"Prompt",value:$s(g,200)}),d}case"glob":{const d=zt(u,"pattern");return d?[{label:"Pattern",value:d}]:[]}case"grep":{const d=[],y=zt(u,"pattern");y&&d.push({label:"Pattern",value:y,isCode:!0});const g=zt(u,"path");return g&&d.push({label:"In",value:g,isFilePath:!0}),d}default:{const d=[],y=zt(u,"command");if(y)return[{label:"Command",value:y,isCode:!0}];const g=zt(u,"file_path")||zt(u,"filePath");g&&d.push({label:"Path",value:g,isFilePath:!0});const A=zt(u,"description");A&&d.push({label:"Description",value:$s(A,200)});const Y=zt(u,"query");Y&&d.push({label:"Query",value:Y});const U=zt(u,"url");return U&&d.push({label:"URL",value:U}),d}}}function ip(i){return i.role==="tool"?!0:i.type!=="info"?!1:!/^Error:/i.test(i.content.trim())}function Vp(i){const u=[];for(const d of i){const y=d.toolName?.trim();y&&!u.includes(y)&&u.push(y)}return u.length?u.join(", "):i.map(d=>Od(d.content)).find(Boolean)??""}const Iv=/^[A-Za-z][A-Za-z0-9_-]*$/,Wv=[{name:"clear",commandName:"clear",title:"Clear session",description:"Clear this session in place.",source:"Vibelet",agents:["claude","codex"],argsHint:""},{name:"new",commandName:"new",title:"New session",description:"Start a fresh session with the same assistant and directory.",source:"Vibelet",agents:["claude","codex"],argsHint:""},{name:"exit",commandName:"exit",title:"Archive session",description:"Archive this session and return to the session list.",source:"Vibelet",agents:["claude","codex"],argsHint:""},{name:"quit",commandName:"exit",title:"Archive session",description:"Alias for /exit.",source:"Vibelet",agents:["claude","codex"],argsHint:""},{name:"q",commandName:"exit",title:"Archive session",description:"Alias for /exit.",source:"Vibelet",agents:["claude","codex"],argsHint:""},{name:"compact",commandName:"compact",title:"Compact context",description:"Ask the assistant runtime to compact the current session.",source:"Native",agents:["claude","codex"],argsHint:""},{name:"goal",commandName:"goal",title:"Goal",description:"View, set, pause, resume, or clear the current goal.",source:"Native",agents:["claude","codex"],argsHint:"[objective|status|pause|resume|clear]"}];function Xp(i){return Wv.filter(u=>!i||u.agents.includes(i))}function Ud(i){return i.trim().toLowerCase()}function rd(i){if(!i.startsWith("/")||i.startsWith("//"))return null;const u=/^\/([A-Za-z0-9_-]*)$/.exec(i);if(!u)return null;const o=u[1]??"";return o&&!Iv.test(o)?null:{start:0,end:i.length,keyword:Ud(o)}}function Pv(i,u,o=8){const d=Ud(u);return(d?i.filter(g=>g.name.includes(d)||g.title.toLowerCase().includes(d)).sort((g,A)=>sp(g,d)-sp(A,d)):[...i]).slice(0,o)}function sp(i,u){return i.name===u?0:i.name.startsWith(u)?1:i.name.includes(u)?2:3}function e1(i,u,o){return`${i.slice(0,u.start)}${Zp(o,"")}${i.slice(u.end)}`}function t1(i,u,o){return u?e1(i,u,o):`${Zp(o,i)}${i}`}function Zp(i,u){const o=u.length>0,d=o&&!/^\s/.test(u),y=!!(i.argsHint&&!o);return`/${i.name}${y||d?" ":""}`}function n1(i,u){const o=i.trim();if(!o.startsWith("/")||o.startsWith("//"))return null;const d=/^\/([A-Za-z][A-Za-z0-9_-]*)(?:\s+([\s\S]*))?$/.exec(o);if(!d)return null;const y=Ud(d[1]??""),g=Xp(u).find(Y=>Y.name===y);if(!g)return null;const A=d[2]?.trim()??"";switch(g.commandName){case"clear":return{raw:o,command:{name:"clear"}};case"new":return{raw:o,command:{name:"new"}};case"exit":return{raw:o,command:{name:"exit"}};case"compact":return{raw:o,command:{name:"compact"}};case"goal":{const Y=A.toLowerCase();return!A||Y==="status"||Y==="show"||Y==="usage"||Y==="help"?{raw:o,command:{name:"goal",operation:"status"}}:Y==="clear"||Y==="reset"?{raw:o,command:{name:"goal",operation:"clear"}}:Y==="pause"||Y==="paused"?{raw:o,command:{name:"goal",operation:"pause"}}:Y==="resume"||Y==="active"?{raw:o,command:{name:"goal",operation:"resume"}}:{raw:o,command:{name:"goal",operation:"set",objective:A}}}}}function l1(i){return i.startsWith("//")?i.slice(1):i}function a1(i){return i.name==="compact"?"/compact":i.name!=="goal"?null:i.operation==="clear"?"/goal clear":i.operation==="pause"?"/goal pause":i.operation==="resume"?"/goal resume":i.operation==="set"&&i.objective?.trim()?`/goal ${i.objective.trim()}`:"/goal"}function i1(i){const u=typeof i?.objective=="string"?i.objective.trim():"";return u?`Goal${typeof i?.status=="string"&&i.status?` (${i.status})`:""}: ${u}`:"Goal: none."}function cp(i){return i==="subscriptionRequired"?"Error: Agent commands require an active Pro subscription.":`Error: ${i||"Command failed."}`}const s1=/^[A-Za-z_][A-Za-z0-9._:-]*$/,c1=/(?:^|\s)\$([A-Za-z_][A-Za-z0-9._:-]*|)$/;function nc(i){return i.trim().toLowerCase()}function u1(i){const u=i.trim(),o=/^\$([A-Za-z_][A-Za-z0-9._:-]*)(?:\s+([\s\S]*))?$/.exec(u);return o?{name:nc(o[1]??""),...o[2]?.trim()?{args:o[2].trim()}:{}}:null}function od(i){const u=c1.exec(i);if(!u||u.index+u[0].length!==i.length)return null;const o=u[1]??"";if(o&&!s1.test(o))return null;const d=u[0].lastIndexOf("$");return{start:u.index+d,end:i.length,keyword:nc(o)}}function r1(i,u,o){return`${i.slice(0,u.start)}$${nc(o)} ${i.slice(u.end)}`}function o1(i,u,o=8){const d=nc(u);return(d?i.filter(g=>nc(g.name).includes(d)):i).slice(0,o)}function Js({icon:i,label:u,menuLabel:o,options:d,value:y,onSelect:g,align:A="left",disabled:Y,selected:U,wide:C}){const[G,q]=v.useState(!1);return c.jsxs("div",{className:"composer-menu",onBlur:Q=>{const L=Q.relatedTarget;(!L||!Q.currentTarget.contains(L))&&q(!1)},onKeyDown:Q=>{Q.key==="Escape"&&q(!1)},children:[c.jsxs("button",{"aria-expanded":G,"aria-haspopup":"menu",className:`composer-option-button ${G||U?"selected":""}`,disabled:Y,onClick:()=>q(Q=>!Q),title:o,type:"button",children:[c.jsx(i,{"aria-hidden":"true"}),c.jsx("span",{children:u}),c.jsx(i0,{"aria-hidden":"true"})]}),G?c.jsx("div",{className:`composer-option-popover ${C?"wide":""} ${A==="right"?"align-right":""}`,role:"menu","aria-label":o,children:d.map(Q=>{const L=Q.icon,$=Q.value===y;return c.jsxs("button",{"aria-checked":$,className:$?"selected":"",disabled:Q.disabled,onClick:()=>{g(Q.value),q(!1)},role:"menuitemradio",title:Q.description??Q.label,type:"button",children:[c.jsx("span",{className:"composer-menu-icon",children:L?c.jsx(L,{"aria-hidden":"true"}):$?c.jsx(Fa,{"aria-hidden":"true"}):null}),c.jsxs("span",{children:[c.jsx("strong",{children:Q.label}),Q.description?c.jsx("small",{children:Q.description}):null]}),$?c.jsx(Fa,{className:"composer-menu-check","aria-hidden":"true"}):null]},Q.value)})}):null]})}function d1({visible:i,skills:u,onClose:o,onSelect:d,t:y}){return i?c.jsxs("div",{className:"skill-suggestion-popover",children:[c.jsxs("header",{children:[c.jsx("strong",{children:y.skills}),c.jsx("button",{type:"button",className:"icon-button",onClick:o,title:y.closeSkills,children:c.jsx(jn,{"aria-hidden":"true"})})]}),u.length?c.jsx("div",{className:"skill-suggestion-list",children:u.map(g=>c.jsxs("button",{onClick:()=>d(g),title:g.description??g.name,type:"button",children:[c.jsxs("span",{children:[c.jsxs("strong",{children:["$",g.name]}),g.description?c.jsx("small",{children:g.description}):null]}),c.jsx("em",{children:g.source})]},`${g.source}:${g.name}`))}):c.jsx("p",{children:y.noSkillsFound})]}):null}function f1({visible:i,commands:u,onClose:o,onSelect:d,t:y}){return i?c.jsxs("div",{className:"skill-suggestion-popover command-suggestion-popover",children:[c.jsxs("header",{children:[c.jsx("strong",{children:y.commands}),c.jsx("button",{type:"button",className:"icon-button",onClick:o,title:y.closeCommands,children:c.jsx(jn,{"aria-hidden":"true"})})]}),u.length?c.jsx("div",{className:"skill-suggestion-list",children:u.map(g=>c.jsxs("button",{onClick:()=>d(g),title:g.description,type:"button",children:[c.jsxs("span",{children:[c.jsxs("strong",{children:["/",g.name]}),c.jsx("small",{children:g.argsHint?`${g.title} ${g.argsHint}`:g.title})]}),c.jsx("em",{children:g.source})]},g.name))}):c.jsx("p",{children:y.noCommandsFound})]}):null}const up=[{value:"normal",label:"Normal",description:"Ask before risky actions",icon:Iu},{value:"plan",label:"Plan",description:"Plan before edits",icon:Op},{value:"acceptEdits",label:"Edits",description:"Auto-accept file edits",icon:Fa},{value:"autoApprove",label:"Auto",description:"Approve supported actions",icon:ec}],rp=[{value:"",label:"Effort",description:"Use daemon default",icon:ol},{value:"minimal",label:"Minimal",icon:ol},{value:"low",label:"Low",icon:ol},{value:"medium",label:"Medium",icon:ol},{value:"high",label:"High",icon:ol},{value:"xhigh",label:"X High",icon:ol},{value:"max",label:"Max",icon:ol},{value:"ultra",label:"Ultra",icon:ol}];function h1({activeQueue:i,agent:u,attachments:o,approvalMode:d,activeModelOptions:y,busy:g,draft:A,effort:Y,fastMode:U,model:C,phase:G,quickReplies:q,sendShortcut:Q,skills:L,uploadBusy:$,t:F,onApprovalModeChange:Ce,onCancelQueuedTurn:Ee,onDraftChange:Qe,onEffortChange:Z,onFastModeChange:O,onModelChange:we,onRefreshSkills:pe,onRemoveAttachment:be,onSendShortcutChange:nt,onSubmit:Te,onUploadFiles:Ve}){const lt=v.useRef(null),Fe=v.useRef(null),[ut,Rt]=v.useState(!1),[J,M]=v.useState(!1),[V,ee]=v.useState(!1),[ge,le]=v.useState(!1),[S,R]=v.useState(""),[X,I]=v.useState(""),ie=G==="connected",ve=v.useMemo(()=>Xp(u),[u]),ce=v.useMemo(()=>rd(A),[A]),Xe=ce?`${ce.start}:${ce.end}:${ce.keyword}`:"",ze=!!(ge||ce&&X!==Xe),ue=v.useMemo(()=>Pv(ve,ce?.keyword??"",8),[ve,ce?.keyword]),Ae=v.useMemo(()=>od(A),[A]),Gt=Ae?`${Ae.start}:${Ae.end}:${Ae.keyword}`:"",ne=!!(!ze&&(V||Ae&&S!==Gt)),qe=v.useMemo(()=>o1(L,Ae?.keyword??"",8),[Ae?.keyword,L]),dn=y.find(K=>K.value===C)?.label??(C||"Default"),Pn=up.find(K=>K.value===d)?.label??d,kt=rp.find(K=>K.value===Y)?.label??Y,ft=Q==="enter"?F.sendShortcutEnter:F.sendShortcutModEnter,Ht=v.useMemo(()=>[{value:"enter",label:F.sendShortcutEnter,description:F.sendShortcutEnterDescription,icon:ep},{value:"modEnter",label:F.sendShortcutModEnter,description:F.sendShortcutModEnterDescription,icon:Y0}],[F]),Ot=y.map(K=>({value:K.value,label:K.label,description:K.desc,icon:ld}));Ot.some(K=>K.value==="")||Ot.unshift({value:"",label:"Default",description:"Use daemon default model",icon:ld}),v.useEffect(()=>{Ae||(R(""),ee(!1))},[Ae]),v.useEffect(()=>{ce||(I(""),le(!1))},[ce]);const Pt=async(K,yt)=>{await Ve(K),yt.value=""},qt=async K=>{K.preventDefault(),Rt(!1),ie&&await Ve(K.dataTransfer.files)},rt=async K=>{!ie||!K.clipboardData.files.length||await Ve(K.clipboardData.files)},ht=()=>{Gt&&R(Gt),ee(!1),Fe.current?.focus()},en=()=>{Xe&&I(Xe),le(!1),Fe.current?.focus()},At=()=>{if(ze){en();return}I(""),!rd(A)&&A.length===0&&Qe("/"),le(!0),Fe.current?.focus()},Ze=K=>{const yt=rd(A),D=t1(A,yt,K);Qe(D),le(!1),I(""),Fe.current?.focus()},fn=()=>{if(ne){ht();return}if(pe(),R(""),!od(A)){const K=A.length===0||/\s$/.test(A)?"":" ";Qe(`${A}${K}$`)}ee(!0),Fe.current?.focus()},He=K=>{const yt=od(A),D=yt?r1(A,yt,K.name):A.trim().length?`${A}${/\s$/.test(A)?"":" "}$${K.name} `:`$${K.name} `;Qe(D),ee(!1),R(""),Fe.current?.focus()},Et=K=>{K.key!=="Enter"||K.nativeEvent.isComposing||!(Q==="enter"?!K.shiftKey:K.metaKey||K.ctrlKey)||(K.preventDefault(),Te())};return c.jsxs("form",{className:`composer ${ut?"dragging":""}`,onDragEnter:K=>{K.preventDefault(),Rt(!0)},onDragLeave:()=>Rt(!1),onDragOver:K=>K.preventDefault(),onDrop:K=>{qt(K)},onSubmit:K=>{Te(K)},children:[i.length?c.jsxs("div",{className:"composer-queue-banner",children:[c.jsx(Ad,{"aria-hidden":"true"}),c.jsxs("div",{children:[c.jsxs("strong",{children:[i.length," queued"]}),c.jsx("span",{children:i[0]?.content??"A turn is waiting for this session."})]}),c.jsxs("button",{className:"icon-text-button",disabled:g||!i[0],onClick:()=>i[0]&&Ee(i[0]),type:"button",children:[c.jsx(jn,{"aria-hidden":"true"}),"Withdraw"]})]}):null,J&&q.length?c.jsx("div",{className:"quick-reply-row",children:q.slice(0,6).map(K=>c.jsx("button",{onClick:()=>Qe(A?`${A}
|
|
15
15
|
${K}`:K),type:"button",children:K},K))}):null,c.jsx(d1,{visible:ne,skills:qe,onClose:ht,onSelect:He,t:F}),c.jsx(f1,{visible:ze,commands:ue,onClose:en,onSelect:Ze,t:F}),c.jsx("textarea",{ref:Fe,value:A,onChange:K=>Qe(K.target.value),onPaste:K=>{rt(K)},onKeyDown:Et,placeholder:F.messagePlaceholder,rows:3,disabled:!ie}),c.jsxs("div",{className:"composer-toolbar",children:[c.jsxs("div",{className:"composer-leading-controls",children:[c.jsx("button",{type:"button",className:"icon-button",onClick:()=>lt.current?.click(),title:F.uploadFiles,disabled:!ie||$,children:c.jsx(md,{"aria-hidden":"true"})}),q.length?c.jsx("button",{className:`icon-button ${J?"selected":""}`,type:"button",title:J?F.hideQuickReplies:F.showQuickReplies,onClick:()=>M(K=>!K),children:c.jsx(fv,{"aria-hidden":"true"})}):null,c.jsx("button",{className:`icon-button ${ne?"selected":""}`,type:"button",title:F.skills,onClick:fn,disabled:!ie||$,children:c.jsx(ec,{"aria-hidden":"true"})}),c.jsx("button",{className:`icon-button ${ze?"selected":""}`,type:"button",title:F.commands,onClick:At,disabled:!ie||$,children:c.jsx(pd,{"aria-hidden":"true"})})]}),c.jsx("input",{ref:lt,type:"file",multiple:!0,hidden:!0,onChange:K=>{Pt(K.currentTarget.files,K.currentTarget)}}),c.jsxs("div",{className:"composer-control-strip",children:[c.jsx(Js,{icon:Iu,label:Pn,menuLabel:"Approval mode",options:up,value:d,onSelect:Ce,wide:!0}),c.jsx(Js,{icon:ld,label:dn,menuLabel:"Model",options:Ot,value:C,onSelect:we,align:"right",wide:!0}),c.jsx(Js,{icon:ol,label:kt||"Effort",menuLabel:"Effort",options:rp,value:Y,onSelect:Z,align:"right"}),c.jsx(Js,{icon:ec,label:U?"Fast":"Normal",menuLabel:"Fast mode",options:[{value:"off",label:"Normal",description:"Use standard execution",icon:ol},{value:"on",label:"Fast",description:"Prefer faster responses",icon:ec}],value:U?"on":"off",onSelect:K=>O(K==="on"),align:"right",selected:U,wide:!0}),c.jsx(Js,{icon:ep,label:ft,menuLabel:F.sendShortcut,options:Ht,value:Q,onSelect:nt,align:"right",wide:!0})]}),c.jsx("button",{type:"submit",className:"send-button",disabled:!ie||g||!A.trim(),"aria-label":F.send,title:F.send,children:c.jsx(Fg,{"aria-hidden":"true"})})]}),o.length||$?c.jsx("div",{className:"attachment-row",children:o.length?c.jsx("div",{className:"attachment-list",children:o.map(K=>c.jsxs("span",{children:[c.jsx(Md,{"aria-hidden":"true"}),K.name||Ja(K.path),c.jsx("small",{children:Bp(K.size)}),c.jsx("button",{type:"button",onClick:()=>be(K.path),title:F.removeAttachment,children:c.jsx(jn,{"aria-hidden":"true"})})]},K.path))}):c.jsxs("span",{className:"attachment-empty",children:[c.jsx("span",{className:"loading-spinner small","aria-hidden":"true"}),F.uploading]})}):null]})}function m1({cwd:i,paths:u,onClose:o,onOpenRemoteFile:d}){return u.length?c.jsxs("div",{className:"side-drawer",role:"dialog","aria-modal":"true","aria-label":"Attachment preview",children:[c.jsx("button",{className:"side-drawer-backdrop",onClick:o,type:"button","aria-label":"Close attachment preview"}),c.jsxs("aside",{className:"side-drawer-panel",children:[c.jsxs("header",{className:"side-drawer-header",children:[c.jsxs("div",{children:[c.jsx("strong",{children:"Attachments"}),c.jsxs("span",{children:[u.length," file",u.length===1?"":"s"]})]}),c.jsx("button",{className:"icon-button",onClick:o,type:"button",title:"Close",children:c.jsx(jn,{"aria-hidden":"true"})})]}),c.jsx("div",{className:"stack-list",children:u.map(y=>c.jsxs("button",{className:"data-row attachment-preview-row",onClick:()=>d(y,i),type:"button",children:[c.jsx(Md,{"aria-hidden":"true"}),c.jsxs("span",{children:[c.jsx("strong",{children:Ja(y)}),c.jsx("small",{children:y})]}),c.jsx(Ed,{"aria-hidden":"true"})]},y))})]})]}):null}const p1="modulepreload",y1=function(i){return"/web/"+i},op={},Kp=function(u,o,d){let y=Promise.resolve();if(o&&o.length>0){let U=function(C){return Promise.all(C.map(G=>Promise.resolve(G).then(q=>({status:"fulfilled",value:q}),q=>({status:"rejected",reason:q}))))};document.getElementsByTagName("link");const A=document.querySelector("meta[property=csp-nonce]"),Y=A?.nonce||A?.getAttribute("nonce");y=U(o.map(C=>{if(C=y1(C),C in op)return;op[C]=!0;const G=C.endsWith(".css"),q=G?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${C}"]${q}`))return;const Q=document.createElement("link");if(Q.rel=G?"stylesheet":p1,G||(Q.as="script"),Q.crossOrigin="",Q.href=C,Y&&Q.setAttribute("nonce",Y),document.head.appendChild(Q),G)return new Promise((L,$)=>{Q.addEventListener("load",L),Q.addEventListener("error",()=>$(new Error(`Unable to preload CSS for ${C}`)))})}))}function g(A){const Y=new Event("vite:preloadError",{cancelable:!0});if(Y.payload=A,window.dispatchEvent(Y),!Y.defaultPrevented)throw A}return y.then(A=>{for(const Y of A||[])Y.status==="rejected"&&g(Y.reason);return u().catch(g)})};function g1({message:i,onClose:u,onCopy:o}){if(!i)return null;const d=i.content;return c.jsxs("section",{className:"message-source-inline","aria-label":"Markdown source",children:[c.jsxs("header",{className:"inline-detail-header",children:[c.jsxs("div",{className:"inline-detail-title",children:[c.jsx("strong",{children:"Markdown Source"}),c.jsx("span",{children:i.type==="info"?"info":i.role})]}),c.jsxs("div",{className:"row-actions",children:[c.jsx("button",{className:"icon-button",onClick:()=>o(d),type:"button",title:"Copy Markdown source",children:c.jsx(Zi,{"aria-hidden":"true"})}),c.jsx("button",{className:"icon-button",onClick:u,type:"button",title:"Close source",children:c.jsx(jn,{"aria-hidden":"true"})})]})]}),c.jsx("pre",{className:"json-box markdown-source-box",children:d})]})}function v1({field:i}){return i.isDiff?c.jsxs("div",{className:"tool-field diff",children:[c.jsx("span",{children:i.label}),i.diffOld?c.jsxs("pre",{className:"tool-diff old",children:[c.jsx("b",{children:"-"}),i.diffOld]}):null,i.diffNew?c.jsxs("pre",{className:"tool-diff new",children:[c.jsx("b",{children:"+"}),i.diffNew]}):null]}):c.jsxs("div",{className:`tool-field ${i.isCode?"code":""} ${i.isFilePath?"path":""}`,children:[c.jsx("span",{children:i.label}),c.jsx("pre",{children:i.value})]})}function b1({message:i,onCopy:u}){const o=Fv(i.toolName,i.toolInput),d=Od(i.content),y=kd(i.content),g=Jv(i.content)&&!o.length,A=i.toolName??"Tool";return c.jsxs("section",{className:"tool-detail-card",children:[c.jsxs("header",{children:[c.jsx("span",{className:"tool-detail-icon",children:c.jsx(zd,{"aria-hidden":"true"})}),c.jsxs("div",{children:[c.jsx("strong",{children:A}),d?c.jsx("small",{title:d,children:d}):null]}),c.jsx("button",{className:"icon-button",onClick:()=>u(i.content),type:"button",title:"Copy output",children:c.jsx(Zi,{"aria-hidden":"true"})})]}),o.length?c.jsx("div",{className:"tool-fields",children:o.map((Y,U)=>c.jsx(v1,{field:Y},`${Y.label}:${U}`))}):null,g?c.jsx("pre",{className:"json-box compact",children:y}):null]})}function $p({messages:i,onClose:u,onCopy:o}){if(!i.length)return null;const y=i.filter(U=>U.role==="tool").length||i.length,g=y===1?"1 Tool Call":`${y} Tool Calls`,A=Vp(i),Y=i.map(U=>U.content).join(`
|
|
16
16
|
|
|
17
|
-
`);return c.jsxs("section",{className:"tool-inline-panel","aria-label":"Tool details",children:[c.jsxs("header",{className:"inline-detail-header",children:[c.jsxs("div",{className:"inline-detail-title",children:[c.jsx("strong",{children:g}),c.jsx("span",{title:A,children:A||"tool detail"})]}),c.jsxs("div",{className:"row-actions",children:[c.jsx("button",{className:"icon-button",onClick:()=>o(Y),type:"button",title:"Copy output",children:c.jsx(Zi,{"aria-hidden":"true"})}),c.jsx("button",{className:"icon-button",onClick:u,type:"button",title:"Close tool details",children:c.jsx(jn,{"aria-hidden":"true"})})]})]}),c.jsx("div",{className:"tool-detail-list",children:i.map((U,C)=>c.jsx(b1,{message:U,onCopy:o},`${U.historyKey??U.timestamp??U.toolName??"tool"}:${C}`))})]})}const S1=v.lazy(async()=>Kp(()=>import("./mermaid-O7DHMXV3-Cdr-BNO7.js").then(i=>i.a),__vite__mapDeps([0,1])).then(i=>({default:i.MessageMarkdown})));function x1({activeMatch:i,baseCwd:u,message:o,onCopy:d,onCloseSource:y,onCloseTool:g,onOpenAttachment:A,onOpenRemoteFile:Y,onToggleSource:U,onToggleTool:C,sourceOpen:G,toolOpen:q}){const Q=o.role==="tool"?Od(o.content):"";return c.jsxs("article",{className:`message ${o.role} ${o.type==="info"?"info":""} ${i?"match":""}`,children:[c.jsxs("div",{className:"message-meta",children:[c.jsx("span",{children:o.type==="info"?"info":o.role}),c.jsxs("div",{className:"message-meta-side",children:[c.jsx("time",{children:Wu(o.timestamp)}),c.jsxs("div",{className:"message-actions","aria-label":"Message actions",role:"group",children:[c.jsx("button",{"aria-label":"Copy message",onClick:()=>d(o.content),title:"Copy message",type:"button",children:c.jsx(Zi,{"aria-hidden":"true"})}),c.jsx("button",{"aria-label":"View Markdown source","aria-expanded":G,onClick:U,title:G?"Hide Markdown source":"View Markdown source",type:"button",children:c.jsx(f0,{"aria-hidden":"true"})})]})]})]}),o.role==="tool"?c.jsxs("button",{className:"tool-inline-summary","aria-expanded":q,onClick:C,type:"button",children:[c.jsxs("span",{children:[c.jsx(xv,{"aria-hidden":"true"}),o.toolName??"Tool"]}),Q?c.jsx("small",{children:Q}):null]}):o.role==="assistant"?c.jsx(v.Suspense,{fallback:c.jsx("pre",{children:o.content}),children:c.jsx(S1,{baseCwd:u,content:o.content,onOpenRemoteFile:Y})}):c.jsx("pre",{children:o.content}),o.images?.length?c.jsxs("div",{className:"message-files",children:[o.images.map(L=>c.jsxs("button",{className:"file-pill",onClick:()=>Y(L,u),title:L,type:"button",children:[c.jsx(Md,{"aria-hidden":"true"}),Ja(L)]},L)),c.jsxs("button",{className:"file-pill",onClick:()=>A(o.images??[]),type:"button",children:[c.jsx(x0,{"aria-hidden":"true"}),"Preview"]})]}):null,G?c.jsx(g1,{message:o,onClose:y,onCopy:d}):null,o.role==="tool"&&q?c.jsx($p,{messages:[o],onClose:g,onCopy:d}):null]})}function j1({matchCount:i,query:u,onChange:o,onNext:d}){return c.jsxs("div",{className:"message-search-bar",children:[c.jsx(Dd,{"aria-hidden":"true"}),c.jsx("input",{value:u,onChange:y=>o(y.target.value),onKeyDown:y=>{y.key==="Enter"&&d()},placeholder:"Search this session"}),c.jsx("span",{children:u.trim()?`${i} match${i===1?"":"es"}`:"all messages"}),u?c.jsx("button",{"aria-label":"Clear message search",className:"icon-button mini-button",onClick:()=>o(""),type:"button",children:c.jsx(jn,{"aria-hidden":"true"})}):null]})}function N1({activeMatch:i,expanded:u,messages:o,onToggle:d}){const y=o.filter(Y=>Y.role==="tool").length||o.length,g=Vp(o),A=y===1?"1 tool call":`${y} tool calls`;return c.jsxs("button",{className:`tool-group-bubble ${i?"match":""} ${u?"expanded":""}`,type:"button",onClick:d,"aria-expanded":u,"aria-label":g?`${A}: ${g}`:A,children:[c.jsxs("span",{className:"tool-group-header",children:[c.jsxs("span",{className:"tool-group-title",children:[c.jsx(zd,{"aria-hidden":"true"}),c.jsx("strong",{children:A})]}),c.jsx(l0,{className:"tool-group-chevron","aria-hidden":"true"})]}),g?c.jsx("span",{className:"tool-group-summary",children:g}):null]})}function C1({activeSession:i,activeUsage:u,messages:o,renameTitle:d,busy:y,onBrowseFiles:g,onClose:A,onExport:Y,onJumpToMessage:U,onRename:C,onRenameTitleChange:G,onToggleArchived:q,onTogglePinned:Q,onViewChanges:L}){const[$,F]=v.useState(""),Ce=v.useMemo(()=>Gp(i),[i]),Ee=v.useMemo(()=>{const Z=$.trim().toLowerCase();return Z?o.map((O,we)=>({message:O,index:we})).filter(({message:O})=>O.role!=="user"&&O.role!=="assistant"?!1:O.content.toLowerCase().includes(Z)).slice(0,20):[]},[o,$]),Qe=Z=>{Z.preventDefault(),C()};return c.jsxs("div",{className:"session-detail-drawer",role:"dialog","aria-label":"Session details",children:[c.jsx("div",{className:"drawer-backdrop",onClick:A,"aria-hidden":"true"}),c.jsxs("aside",{className:"session-detail-panel",children:[c.jsxs("header",{className:"drawer-header",children:[c.jsxs("div",{children:[c.jsx("span",{className:"eyebrow",children:i.agent}),c.jsx("strong",{title:Wn(i),children:Wn(i)})]}),c.jsx("button",{className:"icon-button",type:"button",onClick:A,"aria-label":"Close session details",children:c.jsx(jn,{"aria-hidden":"true"})})]}),c.jsxs("form",{className:"detail-title-form",onSubmit:Qe,children:[c.jsx("input",{value:d,onChange:Z=>G(Z.target.value),placeholder:Wn(i)}),c.jsx("button",{className:"primary-button",disabled:y,type:"submit",children:"Rename"})]}),c.jsxs("div",{className:"detail-info-grid",children:[c.jsxs("div",{children:[c.jsx($a,{"aria-hidden":"true"}),c.jsx("span",{children:"Working directory"}),c.jsx("strong",{title:i.cwd,children:i.cwd})]}),c.jsxs("div",{children:[c.jsx(V0,{"aria-hidden":"true"}),c.jsx("span",{children:"Messages"}),c.jsx("strong",{children:o.filter(Z=>Z.role==="user"||Z.role==="assistant").length})]}),c.jsxs("div",{children:[c.jsx(k0,{"aria-hidden":"true"}),c.jsx("span",{children:"Session"}),c.jsx("strong",{title:i.sessionId,children:i.sessionId})]}),c.jsxs("div",{children:[c.jsx(zd,{"aria-hidden":"true"}),c.jsx("span",{children:"Runtime"}),c.jsx("strong",{children:i.runtime.state})]})]}),i.branch||i.diffStat?c.jsxs("button",{className:"detail-command-card",type:"button",onClick:L,children:[c.jsx(zp,{"aria-hidden":"true"}),c.jsxs("span",{children:[i.branch??"Changes",i.diffStat?` · +${i.diffStat.additions} -${i.diffStat.deletions}`:""]})]}):null,c.jsxs("label",{className:"detail-search",children:[c.jsx(Dd,{"aria-hidden":"true"}),c.jsx("input",{value:$,onChange:Z=>F(Z.target.value),placeholder:"Search messages"}),$.trim()?c.jsxs("small",{children:[Ee.length||"No"," results"]}):null]}),$.trim()&&Ee.length?c.jsx("div",{className:"detail-search-results",children:Ee.map(({message:Z,index:O})=>c.jsxs("button",{type:"button",onClick:()=>{U(O,$),A()},children:[c.jsx("span",{children:Z.role}),c.jsx("strong",{children:Z.content})]},`${Z.historyKey??Z.timestamp??O}:${O}`))}):null,$.trim()?null:c.jsxs(c.Fragment,{children:[c.jsxs("button",{className:"detail-command-card",type:"button",onClick:g,children:[c.jsx($a,{"aria-hidden":"true"}),c.jsx("span",{children:"Browse files"})]}),c.jsxs("button",{className:"detail-command-card",type:"button",onClick:()=>{navigator.clipboard?.writeText(Ce)},children:[c.jsx(r0,{"aria-hidden":"true"}),c.jsx("span",{title:Ce,children:Ce})]}),c.jsxs("div",{className:"detail-action-grid",children:[c.jsxs("button",{className:"icon-text-button",disabled:y,type:"button",onClick:Q,children:[c.jsx(_d,{"aria-hidden":"true"}),i.pinned?"Unpin":"Pin"]}),c.jsxs("button",{className:"icon-text-button",disabled:y,type:"button",onClick:q,children:[c.jsx(Cd,{"aria-hidden":"true"}),i.archived?"Unarchive":"Archive"]}),c.jsxs("button",{className:"icon-text-button",type:"button",onClick:Y,children:[c.jsx(Xi,{"aria-hidden":"true"}),"Export"]})]}),u?c.jsxs("p",{className:"detail-usage",children:["Usage: ",u.limits?.fiveHour?.usedPercent??"-","% 5h ·"," ",u.limits?.weekly?.usedPercent??"-","% weekly"]}):null,c.jsxs("p",{className:"detail-usage",children:["Created ",Wu(i.createdAt)]})]})]})]})}function Jp(i,u){return`${i.historyKey??i.timestamp??i.toolName??i.content.slice(0,24)??"message"}:${u}`}function A1(i){const u=[];for(let o=0;o<i.length;o+=1){const d=i[o];if(!ip(d)){u.push({type:"message",index:o,message:d});continue}const y=[];let g=o;for(;g<i.length&&ip(i[g]);)y.push({index:g,message:i[g]}),g+=1;u.push({type:"toolGroup",entries:y,id:`tool-group:${y.map(({index:A,message:Y})=>Jp(Y,A)).join("|")}`}),o=g-1}return u}function E1({activeSession:i,activeSessionId:u,activeModelOptions:o,activeQueue:d,activeUsage:y,agent:g,approvalMode:A,attachments:Y,busy:U,cwd:C,draft:G,effort:q,errorText:Q,fastMode:L,historyLoading:$,messages:F,model:Ce,phase:Ee,quickReplies:Qe,renameTitle:Z,respondingSessionIds:O,sendShortcut:we,skills:pe,uploadBusy:be,detailsOpen:nt,t:Te,onApprovalModeChange:Ve,onBrowseFiles:lt,onCancelQueuedTurn:Fe,onClearInterrupt:ut,onDraftChange:Rt,onDetailsOpenChange:J,onEffortChange:M,onExportActiveSession:V,onFastModeChange:ee,onModelChange:ge,onOpenRemoteFile:le,onRefreshSessions:S,onRefreshSkills:R,onRenameSession:X,onRenameTitleChange:I,onRemoveAttachment:ie,onRestoreSnapshot:ve,onSendShortcutChange:ce,onSubmit:Xe,onToggleArchived:ze,onTogglePinned:ue,onUploadFiles:Ae,onViewChanges:Gt}){const[ne,qe]=v.useState(""),[at,dn]=v.useState(0),[Pn,kt]=v.useState(null),[ft,Ht]=v.useState(null),[Ot,Pt]=v.useState(!1),[qt,rt]=v.useState([]),ht=v.useRef(null),en=v.useRef([]),At=v.useRef(null),Ze=v.useRef(null),fn=v.useRef(0),He=v.useMemo(()=>A1(F),[F]),Et=v.useMemo(()=>{const fe=ne.trim().toLowerCase();return fe?F.map((Be,gt)=>({index:gt,message:Be})).filter(({message:Be})=>Be.content.toLowerCase().includes(fe)):[]},[ne,F]),K=fe=>{navigator.clipboard?.writeText(fe).catch(()=>{})},yt=()=>{if(!Et.length)return;const fe=at%Et.length,Be=Et[fe]?.index;typeof Be=="number"&&en.current[Be]?.scrollIntoView({behavior:"smooth",block:"center"}),dn(gt=>(gt+1)%Et.length)},D=v.useCallback(()=>{const fe=ht.current;fe&&(fe.scrollTop=fe.scrollHeight,Pt(!1))},[]),de=v.useCallback((fe="smooth")=>{const Be=ht.current;Be&&(Be.scrollTo({top:Be.scrollHeight,behavior:fe}),Pt(!1))},[]),re=()=>{const fe=ht.current;if(!fe)return;const Be=fe.scrollHeight-fe.scrollTop-fe.clientHeight;Pt(Be>180)},Ne=v.useMemo(()=>{const fe=F.at(-1);return fe?`${F.length}:${fe.historyKey??""}:${fe.timestamp??""}:${fe.content.length}`:"0"},[F]);v.useLayoutEffect(()=>{At.current!==u&&(At.current=u,Ze.current=u,fn.current=0,kt(null),Ht(null));const fe=fn.current===0&&F.length>0;fn.current=F.length;const Be=ht.current;if(!Be)return;if(fe||Ze.current===u&&(!$||F.length>0)){D();const dl=requestAnimationFrame(D),nl=window.setTimeout(D,120),vt=window.setTimeout(D,360);return Ze.current=null,Pt(!1),()=>{cancelAnimationFrame(dl),window.clearTimeout(nl),window.clearTimeout(vt)}}Be.scrollHeight-Be.scrollTop-Be.clientHeight<240&&D()},[u,$,Ne,F.length,Ee,D]);const Ke=Et.length&&ne.trim()?Et[(at+Et.length-1)%Et.length]?.index:void 0,Nn=i?Wn(i):"New session",Bt=i?.cwd??(C.trim().length>0&&C!=="."?C:""),el=i?.agent??g,tl=el==="codex"?"Codex":"Claude";return c.jsxs("section",{className:"chat-pane","aria-label":"Chat",children:[c.jsxs("header",{className:"chat-header",children:[c.jsxs("button",{className:"chat-title-block chat-title-button",type:"button",onClick:()=>i&&J(!0),children:[c.jsx("span",{className:`agent-status-pill ${el}`,children:tl}),c.jsx("h1",{title:Nn,children:Nn}),Bt?c.jsx("p",{title:Bt,children:Bt}):null,i?.branch||i?.diffStat?c.jsxs("div",{className:"header-metadata",children:[i.branch?c.jsx("span",{children:i.branch}):null,i.diffStat?c.jsxs("span",{children:["+",i.diffStat.additions," -",i.diffStat.deletions]}):null,i.runtime.state?c.jsx("span",{children:i.runtime.state}):null,i.terminal?.mode?c.jsx("span",{children:i.terminal.mode}):null]}):null]}),c.jsxs("div",{className:"header-actions",children:[c.jsx("button",{type:"button",className:"icon-button",onClick:()=>i&&Gt(i.sessionId),title:Te.viewChanges,disabled:!i,children:c.jsx(zp,{"aria-hidden":"true"})}),c.jsx("button",{type:"button",className:`icon-button ${i?.pinned?"selected":""}`,onClick:ue,title:i?.pinned?Te.unpin:Te.pin,disabled:!i||U,children:c.jsx(_d,{"aria-hidden":"true"})}),c.jsx("button",{type:"button",className:`icon-button ${i?.archived?"selected":""}`,onClick:ze,title:i?.archived?Te.unarchive:Te.archive,disabled:!i||U,children:c.jsx(Cd,{"aria-hidden":"true"})}),c.jsx("button",{type:"button",className:"icon-button",onClick:ve,title:Te.restoreSnapshot,children:c.jsx(tv,{"aria-hidden":"true"})}),c.jsx("button",{type:"button",className:"icon-button",onClick:S,title:Te.refreshSessions,children:c.jsx(tc,{"aria-hidden":"true"})})]})]}),c.jsxs("div",{className:"chat-notices","aria-live":"polite",children:[Q?c.jsxs("div",{className:"notice error",children:[c.jsx(jn,{"aria-hidden":"true"}),c.jsx("span",{children:Q})]}):null,i?.interruptReason?c.jsxs("div",{className:"notice warning",children:[c.jsx(ec,{"aria-hidden":"true"}),c.jsx("span",{children:i.interruptReason.humanText||i.interruptReason.kind}),c.jsx("button",{className:"icon-text-button",disabled:U,onClick:ut,type:"button",children:Te.clear})]}):null,i?.stallWarning?c.jsxs("div",{className:"notice warning",children:[c.jsx(Ad,{"aria-hidden":"true"}),c.jsx("span",{children:i.stallWarning.humanText||"Agent may be stalled"})]}):null]}),Ee==="missing-pair"?c.jsxs("div",{className:"empty-state",children:[c.jsx(wd,{"aria-hidden":"true"}),c.jsx("h2",{children:Te.openDaemonWebLink}),c.jsx("p",{children:Te.openDaemonWebLinkHint}),c.jsx("code",{children:"vibelet --access=quick"})]}):c.jsxs("div",{className:"message-scroll",ref:ht,onScroll:re,children:[c.jsx(j1,{matchCount:Et.length,query:ne,onChange:fe=>{qe(fe),dn(0)},onNext:yt}),$&&F.length===0?c.jsxs("div",{className:"loading-line",children:[c.jsx("span",{className:"loading-spinner","aria-hidden":"true"}),Te.loadingHistory]}):null,!$&&F.length===0?c.jsxs("div",{className:"empty-state compact",children:[c.jsx(Iu,{"aria-hidden":"true"}),c.jsx("h2",{children:i?Te.noVisibleMessages:Te.startDaemonSession}),c.jsx("p",{children:Te.emptyChatHint})]}):null,He.map(fe=>{if(fe.type==="toolGroup"){const vt=fe.entries.map(Qt=>Qt.message),ga=fe.entries.some(Qt=>Ke===Qt.index),On=ft===fe.id;return c.jsx("div",{className:"message-frame tool info",ref:Qt=>{for(const fl of fe.entries)en.current[fl.index]=Qt},children:c.jsxs("div",{className:"inline-message-stack",children:[c.jsx(N1,{activeMatch:ga,expanded:On,messages:vt,onToggle:()=>Ht(Qt=>Qt===fe.id?null:fe.id)}),On?c.jsx($p,{messages:vt,onClose:()=>Ht(null),onCopy:K}):null]})},fe.id)}const{index:Be,message:gt}=fe,kn=Jp(gt,Be),dl=Pn===kn,nl=ft===kn;return c.jsx("div",{className:`message-frame ${gt.role} ${gt.type==="info"?"info":""}`,ref:vt=>{en.current[Be]=vt},children:c.jsx(x1,{activeMatch:Ke===Be,baseCwd:i?.cwd,message:gt,onCopy:K,onCloseSource:()=>kt(null),onCloseTool:()=>Ht(null),onOpenAttachment:rt,onOpenRemoteFile:le,onToggleSource:()=>kt(vt=>vt===kn?null:kn),onToggleTool:()=>Ht(vt=>vt===kn?null:kn),sourceOpen:dl,toolOpen:nl})},kn)}),u&&O.has(u)?c.jsxs("div",{className:"typing-line",children:[c.jsx("span",{}),Te.agentResponding]}):null,Ot?c.jsx("button",{className:"scroll-latest-button",type:"button","aria-label":Te.scrollToLatest,title:Te.scrollToLatest,onClick:()=>de(),children:c.jsx($g,{"aria-hidden":"true"})}):null]}),Ee!=="missing-pair"?c.jsx(h1,{activeModelOptions:o,activeQueue:d,agent:g,approvalMode:A,attachments:Y,busy:U,draft:G,effort:q,fastMode:L,model:Ce,phase:Ee,quickReplies:Qe,sendShortcut:we,skills:pe,uploadBusy:be,onApprovalModeChange:Ve,onCancelQueuedTurn:Fe,onDraftChange:Rt,onEffortChange:M,onFastModeChange:ee,onModelChange:ge,onRemoveAttachment:ie,onRefreshSkills:R,onSendShortcutChange:ce,onSubmit:Xe,onUploadFiles:Ae,t:Te}):null,nt&&i?c.jsx(C1,{activeSession:i,activeUsage:y,busy:U,messages:F,renameTitle:Z,onBrowseFiles:()=>{J(!1),lt()},onClose:()=>J(!1),onExport:V,onJumpToMessage:(fe,Be)=>{qe(Be),dn(0),en.current[fe]?.scrollIntoView({behavior:"smooth",block:"center"})},onRename:X,onRenameTitleChange:I,onToggleArchived:ze,onTogglePinned:ue,onViewChanges:()=>Gt(i.sessionId)}):null,c.jsx(m1,{cwd:i?.cwd,paths:qt,onClose:()=>rt([]),onOpenRemoteFile:le})]})}const T1=[{tab:"session",label:"Session controls",Icon:Op},{tab:"files",label:"Files",Icon:$a},{tab:"admin",label:"Settings",Icon:sv}];function w1({value:i,onChange:u}){return c.jsx("div",{className:"control-tabs",children:T1.map(({tab:o,label:d,Icon:y})=>c.jsx("button",{className:i===o?"selected":"",onClick:()=>u(o),title:d,type:"button",children:c.jsx(y,{"aria-hidden":"true"})},o))})}function M1({cwd:i,entries:u,error:o,loaded:d,loading:y,path:g,onPathChange:A,onListDirectory:Y,onOpenRemoteFile:U}){return c.jsxs(c.Fragment,{children:[c.jsxs("label",{className:"field",children:[c.jsx("span",{children:"Path"}),c.jsxs("div",{className:"field-row",children:[c.jsx("input",{value:g,onChange:C=>A(C.target.value)}),c.jsx("button",{className:"icon-button",onClick:()=>Y(),type:"button",children:y?c.jsx(hd,{"aria-hidden":"true"}):c.jsx(tc,{"aria-hidden":"true"})})]})]}),o?c.jsx("p",{className:"empty-copy",children:o}):null,y?c.jsx("p",{className:"empty-copy",children:"Loading files..."}):null,c.jsxs("div",{className:"file-list tree-list",children:[Ju(g)?c.jsxs("button",{onClick:()=>Y(Ju(g)??g),type:"button",children:[c.jsx($a,{"aria-hidden":"true"}),".."]}):null,u.map(C=>{const G=$u(g,C.name);return c.jsxs("button",{onClick:()=>C.isDirectory?Y(G):U(G,i),type:"button",children:[C.isDirectory?c.jsx(Ku,{"aria-hidden":"true"}):c.jsx(Td,{"aria-hidden":"true"}),C.name]},`${C.name}:${C.isDirectory}`)})]}),d&&!y&&!o&&u.length===0?c.jsx("p",{className:"empty-copy",children:"No files in this directory."}):null]})}const _1=v.lazy(()=>Kp(()=>import("./mermaid-O7DHMXV3-Cdr-BNO7.js").then(i=>i.a),__vite__mapDeps([0,1])).then(i=>({default:i.MessageMarkdown})));function D1({file:i,mode:u,onModeChange:o,onOpenRemoteFile:d,onTextChange:y}){return c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"segmented editor-mode-tabs",children:[c.jsx("button",{className:u==="edit"?"selected":"",onClick:()=>o("edit"),type:"button",children:"Editor"}),c.jsx("button",{className:u==="preview"?"selected":"",onClick:()=>o("preview"),type:"button",children:"Preview"}),c.jsx("button",{className:u==="source"?"selected":"",onClick:()=>o("source"),type:"button",children:"Source"})]}),u==="edit"?c.jsx("textarea",{className:"remote-editor",value:i.text,onChange:g=>y(g.target.value),rows:14}):u==="preview"?c.jsx("div",{className:"remote-markdown-preview",children:c.jsx(v.Suspense,{fallback:c.jsx("pre",{className:"json-box source-viewer",children:i.text}),children:c.jsx(_1,{content:i.text,baseCwd:i.cwd,onOpenRemoteFile:d})})}):c.jsx("pre",{className:"json-box source-viewer",children:i.text})]})}function z1({busy:i,cwd:u,directory:o,newDirName:d,remoteFileMode:y,remoteFile:g,remoteFileConflict:A,onCreateDirectory:Y,onDirectoryPathChange:U,onDownloadRemoteFile:C,onListDirectory:G,onNewDirNameChange:q,onOpenRemoteFile:Q,onRemoteFileModeChange:L,onRemoteFileTextChange:$,onSaveRemoteFile:F}){return c.jsxs(c.Fragment,{children:[c.jsxs("section",{className:"control-section",children:[c.jsx("h2",{children:"File Tree"}),c.jsx(M1,{cwd:u,entries:o.entries,error:o.error,loaded:o.loaded,loading:o.loading,path:o.path,onListDirectory:G,onOpenRemoteFile:Q,onPathChange:U}),c.jsxs("div",{className:"field-row",children:[c.jsx("input",{value:d,onChange:Ce=>q(Ce.target.value),placeholder:"New folder"}),c.jsxs("button",{className:"icon-text-button",onClick:Y,type:"button",disabled:!d.trim(),children:[c.jsx(Ku,{"aria-hidden":"true"}),"Create"]})]})]}),c.jsxs("section",{className:"control-section remote-file-section",children:[c.jsx("h2",{children:"Remote File"}),g?c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"file-title",children:[g.kind==="image"?c.jsx(U0,{"aria-hidden":"true"}):c.jsx(Td,{"aria-hidden":"true"}),c.jsxs("div",{children:[c.jsx("strong",{children:Ja(g.path)}),c.jsxs("span",{children:[g.contentType," · ",Bp(g.size)]})]})]}),c.jsxs("div",{className:"attention-actions",children:[c.jsxs("button",{className:"icon-text-button",onClick:C,type:"button",children:[c.jsx(Xi,{"aria-hidden":"true"}),"Download"]}),c.jsxs("button",{className:"icon-text-button",onClick:()=>navigator.clipboard?.writeText(g.path),type:"button",children:[c.jsx(Zi,{"aria-hidden":"true"}),"Copy path"]})]}),g.kind==="text"?c.jsxs(c.Fragment,{children:[c.jsx(D1,{file:g,mode:y,onModeChange:L,onOpenRemoteFile:Q,onTextChange:$}),c.jsxs("button",{className:"primary-button full-width",disabled:!g.dirty||i,onClick:()=>F(),type:"button",children:[c.jsx(lv,{"aria-hidden":"true"}),"Save file"]}),A?c.jsxs("div",{className:"notice warning inline-notice",children:[c.jsx(Ad,{"aria-hidden":"true"}),c.jsx("span",{children:Qp(g.path)}),c.jsx("button",{className:"danger-button",disabled:i,onClick:()=>Vi(`Overwrite ${Ja(g.path)}?`)&&F({force:!0}),type:"button",children:"Force save"})]}):null]}):g.kind==="image"&&g.objectUrl?c.jsx("img",{className:"remote-image",src:g.objectUrl,alt:Ja(g.path)}):c.jsx("p",{className:"empty-copy",children:"Binary preview is not available. Use download to inspect this file."})]}):c.jsx("p",{className:"empty-copy",children:"Select an attachment or a file from the directory browser."})]})]})}function R1({activeApproval:i,activeQuestion:u,busy:o,questionAnswers:d,t:y,onCancelQuestion:g,onQuestionChoice:A,onRespondApproval:Y,onRespondQuestion:U}){const C=!!(i||u);return c.jsxs(c.Fragment,{children:[C?null:c.jsxs("section",{className:"control-section",children:[c.jsx("h2",{children:y.pendingActions}),c.jsx("p",{className:"empty-copy",children:y.noPendingActions})]}),i?c.jsxs("section",{className:"attention-panel",children:[c.jsxs("div",{className:"attention-head",children:[c.jsx(Iu,{"aria-hidden":"true"}),c.jsxs("div",{children:[c.jsx("h2",{children:y.approvalRequired}),c.jsx("p",{children:i.toolName})]})]}),c.jsx("p",{children:i.description}),c.jsx("pre",{children:Yp(i.input)}),c.jsxs("div",{className:"attention-actions",children:[c.jsxs("button",{type:"button",className:"danger-button",onClick:()=>Y(!1),disabled:o,children:[c.jsx(jn,{"aria-hidden":"true"}),y.deny]}),c.jsxs("button",{type:"button",className:"approve-button",onClick:()=>Y(!0),disabled:o,children:[c.jsx(Fa,{"aria-hidden":"true"}),y.approve]})]})]}):null,u?c.jsxs("section",{className:"attention-panel",children:[c.jsxs("div",{className:"attention-head",children:[c.jsx(wd,{"aria-hidden":"true"}),c.jsxs("div",{children:[c.jsx("h2",{children:y.inputNeeded}),c.jsxs("p",{children:[u.questions.length," question",u.questions.length>1?"s":""]})]})]}),u.questions.map(G=>c.jsxs("div",{className:"question-block",children:[c.jsx("strong",{children:G.question}),c.jsx("div",{className:"choice-list",children:G.options.map(q=>{const Q=(d[G.id]??[]).includes(q.label);return c.jsxs("button",{className:Q?"selected":"",onClick:()=>A(G.id,q.label,G.multiSelect),type:"button",children:[c.jsx("span",{children:q.label}),q.description?c.jsx("small",{children:q.description}):null]},q.label)})})]},G.id)),c.jsxs("div",{className:"attention-actions",children:[c.jsxs("button",{type:"button",className:"danger-button",onClick:g,disabled:o,children:[c.jsx(jn,{"aria-hidden":"true"}),y.cancel]}),c.jsxs("button",{type:"button",className:"approve-button",onClick:U,disabled:o,children:[c.jsx(Fa,{"aria-hidden":"true"}),y.submit]})]})]}):null]})}function dp({session:i,active:u,responding:o,tagLabels:d,onSelect:y,onContextMenu:g,onViewChanges:A}){const Y=!!i.diffStat&&(i.diffStat.additions>0||i.diffStat.deletions>0),U=Wn(i);return c.jsxs("button",{className:`session-row ${u?"active":""} ${i.archived?"archived":""}`,onContextMenu:g,onClick:y,title:U,type:"button",children:[c.jsxs("span",{className:"session-row-head",children:[c.jsx("strong",{children:U}),o?c.jsx(c0,{"aria-label":"Responding"}):null]}),c.jsx("span",{children:i.cwd}),d?.length?c.jsx("span",{className:"directory-tag-row",title:"Directory tags",children:d.map(C=>c.jsx("em",{children:C},C))}):null,c.jsxs("small",{children:[i.agent," · ",Wu(i.lastActivityAt),i.branch?` · ${i.branch}`:"",i.diffStat&&!A?` · +${i.diffStat.additions}/-${i.diffStat.deletions}`:"",i.pinned?" · pinned":"",i.archived?" · archived":""]}),Y&&A&&i.diffStat?c.jsxs("span",{className:"session-diff-badge",role:"button",tabIndex:0,title:"View changes",onClick:C=>{C.stopPropagation(),A()},onKeyDown:C=>{(C.key==="Enter"||C.key===" ")&&(C.preventDefault(),C.stopPropagation(),A())},children:[c.jsxs("span",{className:"diff-add",children:["+",i.diffStat.additions]}),c.jsxs("span",{className:"diff-del",children:["-",i.diffStat.deletions]})]}):null]})}function Fp({ariaLabel:i,options:u,value:o,disabled:d,onChange:y}){return c.jsx("div",{className:"chip-group",role:"radiogroup","aria-label":i,children:u.map(g=>c.jsx("button",{"aria-checked":o===g.value,className:o===g.value?"selected":"",disabled:d,onClick:()=>y(g.value),role:"radio",title:g.title??g.label,type:"button",children:g.label},g.value))})}function k1({agentFilter:i,t:u,onAgentFilterChange:o}){return c.jsxs("div",{className:"session-filter-panel",children:[c.jsx("span",{className:"filter-section-label",children:u.agentFilterLabel}),c.jsx(Fp,{ariaLabel:u.agentFilterLabel,value:i,options:[{value:"all",label:u.agentFilterAll},{value:"claude",label:u.agentFilterClaude},{value:"codex",label:u.agentFilterCodex}],onChange:o})]})}function ya(i){return typeof i=="string"&&i.trim().length>0?i:void 0}function O1({activeSessionId:i,busy:u,collapsedFolders:o,currentCwd:d,displayName:y,directoryTags:g,folderCounts:A,groupFolders:Y,groupedSessions:U,hideArchived:C,inventoryVersion:G,nextCursor:q,phase:Q,pendingSessionIds:L,respondingSessionIds:$,search:F,sessionAgentFilter:Ce,sessionsCount:Ee,sinceFilter:Qe,statusText:Z,t:O,visibleSessions:we,onLoadMore:pe,onCopyResumeCommand:be,onCreateDirectory:nt,onCreateSession:Te,onDeleteSession:Ve,onListDirectories:lt,onBrowseFolder:Fe,onEditFolderTags:ut,onOpenSessionDetails:Rt,onResetFilters:J,onSearchChange:M,onSearchCommit:V,onSelectSession:ee,onToggleSessionArchived:ge,onToggleSessionPinned:le,onSessionAgentFilterChange:S,onSinceFilterChange:R,onToggleFolder:X,onToggleGroupFolders:I,onToggleHideArchived:ie,onToggleCollapse:ve,onViewChanges:ce}){const[Xe,ze]=v.useState(!1),[ue,Ae]=v.useState(null),Gt=v.useRef(0),[ne,qe]=v.useState(null),at=v.useRef(null),dn=Ce!=="all"||Qe!=="30d"||Y||C,Pn=!!(q?.lastActivityAt&&q.sessionId),kt=ue?!!L?.has(ue.session.sessionId):!1,ft=D=>g[ya(D)??"/"]??[],Ht=Q==="connected"?`${we.length}/${Ee} sessions · v${G??"-"}`:O.sameOriginAccess,Ot=`${Z} · ${Ht}`;v.useEffect(()=>{if(!Xe&&!ue&&!ne)return;const D=re=>{const Ne=re.target;Ne instanceof Node&&at.current?.contains(Ne)||(ze(!1),Ae(null),qe(null))},de=re=>{re.key==="Escape"&&(ze(!1),Ae(null),qe(null))};return document.addEventListener("pointerdown",D),document.addEventListener("keydown",de),()=>{document.removeEventListener("pointerdown",D),document.removeEventListener("keydown",de)}},[ue,ne,Xe]);const Pt=(D,de)=>{const re=D.currentTarget.getBoundingClientRect(),Ne=320,Ke=430,Nn=ya(de),Bt=Nn??ya(d)??".";Ae(null),qe({...Nn?{folder:Nn}:{},cwd:Bt,x:Math.max(10,Math.min(re.right-Ne,window.innerWidth-Ne-10)),y:Math.max(10,Math.min(re.bottom+8,window.innerHeight-Ke-10))})},qt=(D,de)=>{D.preventDefault();const re=224,Ne=306;qe(null),Ae({session:de,x:Math.min(D.clientX,window.innerWidth-re-10),y:Math.min(D.clientY,window.innerHeight-Ne-10)})},rt=()=>Ae(null),ht=D=>{if(!ue)return;const{session:de}=ue;rt(),D(de)},en=D=>{if(!ne)return;const de=ya(ne.cwd)??ya(ne.folder)??ya(d)??".";qe(null),Te(de,D)},At=D=>{const de=ya(D)??ya(d)??".",re=++Gt.current;qe(Ne=>Ne&&{...Ne,browser:{path:de,entries:[],loading:!0,loaded:!1,createMode:!1,newFolderName:"",creating:!1}}),lt(de).then(Ne=>{Gt.current===re&&qe(Ke=>Ke?.browser?{...Ke,browser:{...Ke.browser,path:de,entries:Ne.filter(Nn=>Nn.isDirectory),loading:!1,loaded:!0,error:void 0}}:Ke)}).catch(Ne=>{Gt.current===re&&qe(Ke=>Ke?.browser?{...Ke,browser:{...Ke.browser,path:de,entries:[],loading:!1,loaded:!0,error:Ne instanceof Error?Ne.message:String(Ne)}}:Ke)})},Ze=()=>{ne&&At(ne.cwd||ne.folder||d||".")},fn=()=>{qe(D=>D?.browser?{...D,cwd:D.browser.path,browser:void 0}:D)},He=D=>{qe(de=>de?.browser?{...de,browser:{...de.browser,newFolderName:D,createError:void 0}}:de)},Et=()=>{qe(D=>D?.browser?{...D,browser:{...D.browser,createMode:!0,newFolderName:"",createError:void 0}}:D)},K=()=>{qe(D=>D?.browser?{...D,browser:{...D.browser,createMode:!1,newFolderName:"",createError:void 0,creating:!1}}:D)},yt=()=>{const D=ne?.browser,de=D?.newFolderName??"";if(!D||de.trim().length===0||D.creating)return;if(de.includes("/")||de.includes("\\")||de==="."||de===".."){qe(Ne=>Ne?.browser?{...Ne,browser:{...Ne.browser,createError:O.folderCreateFailed}}:Ne);return}const re=$u(D.path,de);qe(Ne=>Ne?.browser?{...Ne,browser:{...Ne.browser,creating:!0,createError:void 0}}:Ne),nt(re).then(()=>{At(D.path)}).catch(Ne=>{qe(Ke=>Ke?.browser?{...Ke,browser:{...Ke.browser,creating:!1,createError:Ne instanceof Error?Ne.message:String(Ne)}}:Ke)})};return c.jsxs("aside",{className:"session-rail","aria-label":"Sessions",children:[c.jsxs("div",{className:"brand-block",children:[c.jsx("div",{className:"brand-mark",children:c.jsx(pd,{"aria-hidden":"true"})}),c.jsxs("div",{className:"brand-copy",children:[c.jsx("strong",{children:"Vibelet Web"}),c.jsx("span",{children:y??"Daemon workspace"})]}),ve?c.jsx("button",{"aria-label":O.collapseSessionSidebar,className:"sidebar-panel-collapse-button session-rail-collapse-button",onClick:ve,title:O.collapseSessionSidebar,type:"button",children:c.jsx(Rp,{"aria-hidden":"true"})}):null]}),c.jsxs("div",{className:`connection-strip ${Q}`,title:Ot,children:[c.jsx(kp,{"aria-hidden":"true"}),c.jsx("strong",{className:"connection-status-label",children:Z})]}),c.jsxs("div",{className:"rail-list-heading",children:[c.jsx("span",{children:O.sessions}),c.jsx("button",{"aria-label":O.newSession,className:"rail-create-button",disabled:u||Q!=="connected",onClick:D=>Pt(D),title:O.newSession,type:"button",children:c.jsx(md,{"aria-hidden":"true"})})]}),c.jsxs("div",{className:"search-filter-wrap",ref:at,children:[c.jsxs("div",{className:"search-box",children:[c.jsx(Dd,{"aria-hidden":"true"}),c.jsx("input",{value:F,onBlur:V,onChange:D=>M(D.target.value),onKeyDown:D=>{D.key==="Enter"&&V()},placeholder:O.searchSessions}),c.jsx("button",{"aria-expanded":Xe,"aria-label":O.sessionFilters,className:`filter-toggle ${Xe||dn?"selected":""}`,onClick:()=>ze(D=>!D),title:O.sessionFilters,type:"button",children:c.jsx(w0,{"aria-hidden":"true"})})]}),Xe?c.jsxs("div",{className:"filter-popover",role:"dialog","aria-label":O.sessionFilters,children:[c.jsx(k1,{agentFilter:Ce,t:O,onAgentFilterChange:S}),c.jsxs("div",{className:"filter-section",children:[c.jsx("span",{className:"filter-section-label",children:O.searchTimeRangeLabel}),c.jsx("div",{className:"rail-filters",role:"group","aria-label":O.searchTimeRangeLabel,children:["all","7d","30d","90d"].map(D=>c.jsx("button",{className:Qe===D?"selected":"",onClick:()=>R(D),type:"button",children:D==="all"?O.searchTimeRangeAllTime:D==="7d"?O.searchTimeRangeLast7Days:D==="30d"?O.searchTimeRangeLast30Days:O.searchTimeRangeLast90Days},D))})]}),c.jsxs("div",{className:"filter-section",children:[c.jsx("span",{className:"filter-section-label",children:O.filterViewOptions}),c.jsxs("div",{className:"filter-switch-card",children:[c.jsxs("button",{"aria-pressed":Y,className:Y?"selected":"",onClick:I,type:"button",children:[c.jsx("span",{children:O.groupByFolder}),c.jsx("span",{className:"filter-switch-track","aria-hidden":"true",children:c.jsx("span",{})})]}),c.jsxs("button",{"aria-pressed":C,className:C?"selected":"",onClick:ie,type:"button",children:[c.jsx("span",{children:O.hideArchived}),c.jsx("span",{className:"filter-switch-track","aria-hidden":"true",children:c.jsx("span",{})})]})]})]}),dn?c.jsx("button",{className:"filter-reset-button",onClick:J,type:"button",children:O.resetFilters}):null]}):null]}),c.jsxs("div",{className:"session-list",children:[Y?U.map(D=>{const de=o[D.folder];return c.jsxs("div",{className:"folder-group",children:[c.jsxs("div",{className:"folder-header",children:[c.jsxs("button",{onClick:()=>X(D.folder),type:"button",children:[c.jsx(Ku,{"aria-hidden":"true"}),c.jsx("span",{children:D.folder}),c.jsx("small",{children:A[D.folder]??D.sessions.length})]}),c.jsx("button",{className:"mini-button",disabled:Q!=="connected",onClick:()=>Fe(D.folder),title:O.browseFolder,type:"button",children:c.jsx($a,{"aria-hidden":"true"})}),c.jsx("button",{className:"mini-button",onClick:()=>ut(D.folder),title:O.editDirectoryTags,type:"button",children:c.jsx(pv,{"aria-hidden":"true"})}),c.jsx("button",{className:"mini-button",disabled:u||Q!=="connected",onClick:re=>Pt(re,D.folder),title:O.newSession,type:"button",children:c.jsx(md,{"aria-hidden":"true"})})]}),ft(D.folder).length?c.jsx("div",{className:"folder-tag-row",children:ft(D.folder).map(re=>c.jsx("span",{children:re},re))}):null,de?null:D.sessions.map(re=>c.jsx(dp,{active:re.sessionId===i,responding:$.has(re.sessionId),session:re,tagLabels:ft(re.cwd),onContextMenu:Ne=>qt(Ne,re),onSelect:()=>ee(re.sessionId),onViewChanges:ce?()=>ce(re.sessionId):void 0},re.sessionId))]},D.folder)}):we.map(D=>c.jsx(dp,{active:D.sessionId===i,responding:$.has(D.sessionId),session:D,tagLabels:ft(D.cwd),onContextMenu:de=>qt(de,D),onSelect:()=>ee(D.sessionId),onViewChanges:ce?()=>ce(D.sessionId):void 0},D.sessionId)),we.length===0?c.jsx("p",{className:"empty-copy",children:O.noSessionsMatch}):null,Pn&&q?c.jsxs("button",{className:"icon-text-button load-more-button",disabled:u,onClick:()=>pe(q),type:"button",children:[c.jsx(tc,{"aria-hidden":"true"}),O.loadMore]}):null]}),ne?c.jsxs("div",{className:"session-create-menu",role:"dialog","aria-label":O.newSession,style:{left:ne.x,top:ne.y},onPointerDown:D=>D.stopPropagation(),children:[c.jsxs("label",{className:"session-create-field",children:[c.jsx("span",{children:O.workingDirectory}),c.jsxs("div",{className:"session-create-input-row",children:[c.jsx("input",{"aria-label":O.workingDirectory,placeholder:O.workingDirectoryPlaceholder,value:ne.cwd,onChange:D=>qe(de=>de&&{...de,cwd:D.target.value}),onKeyDown:D=>{D.key==="Enter"&&(D.preventDefault(),en("claude"))}}),c.jsx("button",{"aria-label":O.browseDirectories,className:"session-create-icon-button",onClick:Ze,title:O.browseDirectories,type:"button",children:c.jsx($a,{"aria-hidden":"true"})})]})]}),ne.browser?c.jsxs("div",{className:"session-create-browser",children:[c.jsxs("div",{className:"session-create-browser-bar",children:[c.jsx("span",{title:ne.browser.path,children:ne.browser.path}),c.jsx("button",{"aria-label":O.refreshSessions,className:"session-create-icon-button",onClick:()=>At(ne.browser?.path??ne.cwd),title:O.refreshSessions,type:"button",children:ne.browser.loading?c.jsx(hd,{className:"spin","aria-hidden":"true"}):c.jsx(tc,{"aria-hidden":"true"})})]}),ne.browser.createMode?c.jsxs("div",{className:"session-create-new-folder",children:[c.jsx("input",{"aria-label":O.newFolder,disabled:ne.browser.creating,placeholder:O.newFolderPlaceholder,value:ne.browser.newFolderName,onChange:D=>He(D.target.value),onKeyDown:D=>{D.key==="Enter"&&(D.preventDefault(),yt())}}),c.jsx("button",{"aria-label":O.cancel,className:"session-create-icon-button",disabled:ne.browser.creating,onClick:K,title:O.cancel,type:"button",children:c.jsx(jn,{"aria-hidden":"true"})}),c.jsx("button",{"aria-label":O.create,className:"session-create-icon-button",disabled:ne.browser.creating||!ne.browser.newFolderName.trim(),onClick:yt,title:O.create,type:"button",children:ne.browser.creating?c.jsx(hd,{className:"spin","aria-hidden":"true"}):c.jsx(Fa,{"aria-hidden":"true"})})]}):c.jsxs("button",{className:"session-create-secondary-button",onClick:Et,type:"button",children:[c.jsx(A0,{"aria-hidden":"true"}),O.newFolder]}),ne.browser.createError?c.jsx("p",{className:"session-create-error",children:ne.browser.createError}):null,c.jsxs("div",{className:"session-create-folder-list",children:[Ju(ne.browser.path)?c.jsxs("button",{className:"session-create-folder-row",onClick:()=>At(Ju(ne.browser?.path??"")??ne.cwd),type:"button",children:[c.jsx($a,{"aria-hidden":"true"}),".."]}):null,ne.browser.loading?c.jsx("p",{className:"empty-copy",children:O.loadingDirectories}):null,!ne.browser.loading&&ne.browser.error?c.jsx("p",{className:"session-create-error",children:ne.browser.error}):null,!ne.browser.loading&&!ne.browser.error&&ne.browser.loaded&&ne.browser.entries.length===0?c.jsx("p",{className:"empty-copy",children:O.remoteFolderEmpty}):null,!ne.browser.loading&&!ne.browser.error?ne.browser.entries.map(D=>{const de=$u(ne.browser?.path??ne.cwd,D.name);return c.jsxs("button",{className:"session-create-folder-row",onClick:()=>At(de),type:"button",children:[c.jsx(Ku,{"aria-hidden":"true"}),c.jsx("span",{children:D.name})]},`${D.name}:${de}`)}):null]}),c.jsxs("button",{className:"session-create-select-button",onClick:fn,type:"button",children:[c.jsx(Fa,{"aria-hidden":"true"}),O.chooseThisFolder]})]}):null,c.jsxs("button",{type:"button",onClick:()=>en("claude"),children:[c.jsx(e0,{"aria-hidden":"true"}),c.jsxs("span",{children:[c.jsx("strong",{children:"Claude"}),c.jsx("small",{children:O.claudeSession})]})]}),c.jsxs("button",{type:"button",onClick:()=>en("codex"),children:[c.jsx(pd,{"aria-hidden":"true"}),c.jsxs("span",{children:[c.jsx("strong",{children:"Codex"}),c.jsx("small",{children:O.codexSession})]})]})]}):null,ue?c.jsxs("div",{className:"session-context-menu",role:"menu",style:{left:ue.x,top:ue.y},onPointerDown:D=>D.stopPropagation(),children:[c.jsxs("button",{type:"button",role:"menuitem",onClick:()=>ht(D=>ee(D.sessionId)),children:[c.jsx(Ed,{"aria-hidden":"true"}),O.open]}),c.jsxs("button",{type:"button",role:"menuitem",disabled:kt,onClick:()=>ht(Rt),children:[c.jsx(q0,{"aria-hidden":"true"}),O.details]}),c.jsxs("button",{type:"button",role:"menuitem",disabled:kt,onClick:()=>ht(be),children:[c.jsx(Zi,{"aria-hidden":"true"}),O.copyResumeCommand]}),c.jsxs("button",{type:"button",role:"menuitem",disabled:kt||!ce||!ue.session.branch&&!ue.session.diffStat,onClick:()=>ht(D=>ce?.(D.sessionId)),children:[c.jsx(v0,{"aria-hidden":"true"}),O.viewChanges]}),c.jsx("span",{className:"context-menu-separator"}),c.jsxs("button",{type:"button",role:"menuitem",disabled:kt,onClick:()=>ht(le),children:[c.jsx(_d,{"aria-hidden":"true"}),ue.session.pinned?O.unpin:O.pin]}),c.jsxs("button",{type:"button",role:"menuitem",disabled:kt,onClick:()=>ht(ge),children:[c.jsx(Cd,{"aria-hidden":"true"}),ue.session.archived?O.unarchive:O.archive]}),c.jsxs("button",{className:"danger",type:"button",role:"menuitem",onClick:()=>ht(Ve),children:[c.jsx(Up,{"aria-hidden":"true"}),O.delete]})]}):null]})}function U1({busy:i,connected:u,dismissed:o,feedback:d,synced:y,t:g,onPull:A,onPushMerge:Y,onPushReplace:U,onSkip:C}){const G=!u||i!==null;return c.jsxs("section",{className:"control-section compact-section archive-sync-panel",children:[c.jsx("h2",{children:g.archiveSyncTitle}),c.jsx("p",{className:"empty-copy",children:y?g.archiveSyncSynced:o?g.archiveSyncSkippedState:g.archiveSyncBody}),c.jsxs("div",{className:"action-grid archive-sync-actions",children:[c.jsxs("button",{className:"icon-text-button",disabled:G,onClick:Y,type:"button",children:[c.jsx(z0,{"aria-hidden":"true"}),i==="pushMerge"?g.archiveSyncSyncing:g.archiveSyncPushMerge]}),c.jsxs("button",{className:"icon-text-button",disabled:G,onClick:A,type:"button",children:[c.jsx(Xi,{"aria-hidden":"true"}),i==="pull"?g.archiveSyncSyncing:g.archiveSyncPull]}),c.jsxs("button",{className:"icon-text-button",disabled:G,onClick:U,type:"button",children:[c.jsx(bv,{"aria-hidden":"true"}),i==="pushReplace"?g.archiveSyncSyncing:g.archiveSyncPushReplace]}),c.jsxs("button",{className:"icon-text-button",disabled:G,onClick:C,type:"button",children:[c.jsx(Xg,{"aria-hidden":"true"}),g.archiveSyncSkip]})]}),d?c.jsx("p",{className:`empty-copy ${d.tone==="error"?"error-copy":"success-copy"}`,children:d.message}):null]})}function H1({pairing:i,phase:u,t:o,onForgetPairing:d}){const y=u==="connected"?"connected":i?u:o.notPaired;return c.jsxs("section",{className:"control-section compact-section",children:[c.jsx("h2",{children:o.currentDevice}),c.jsxs("dl",{children:[c.jsxs("div",{children:[c.jsx("dt",{children:o.daemon}),c.jsx("dd",{children:i?.displayName??i?.daemonId??o.notPaired})]}),c.jsxs("div",{children:[c.jsx("dt",{children:o.status}),c.jsx("dd",{children:y})]})]}),c.jsx("div",{className:"action-grid",children:c.jsxs("button",{className:"danger-button",disabled:!i,onClick:d,type:"button",children:[c.jsx(wd,{"aria-hidden":"true"}),o.forget]})})]})}function q1({connected:i,metadata:u,showUpdate:o,updateBusy:d,restartBusy:y,t:g,updateStatus:A,onUpdate:Y,onRestart:U}){const C=u.version&&u.latestVersion&&o?`${u.version} -> ${u.latestVersion}`:u.version||g.unknown;return c.jsxs("section",{className:"control-section compact-section",children:[c.jsx("h2",{children:g.desktopConnector}),c.jsx("dl",{children:c.jsxs("div",{children:[c.jsx("dt",{children:g.version}),c.jsx("dd",{children:u.loading?g.checking:C})]})}),c.jsxs("div",{className:"action-grid",children:[o?c.jsxs("button",{className:"primary-button",disabled:!i||d||y,onClick:Y,type:"button",children:[c.jsx(Xi,{"aria-hidden":"true"}),d?g.updating:g.update]}):null,c.jsxs("button",{className:"danger-button",disabled:!i||y,onClick:U,type:"button",children:[c.jsx(tc,{"aria-hidden":"true"}),y?g.restarting:g.restart]})]}),u.error?c.jsx("p",{className:"empty-copy",children:u.error}):null,A?c.jsx("p",{className:"empty-copy",children:A}):null]})}function B1({language:i,t:u,onLanguageChange:o}){return c.jsxs("section",{className:"control-section compact-section",children:[c.jsx("h2",{children:u.language}),c.jsxs("label",{className:"field",children:[c.jsx("span",{children:u.displayLanguage}),c.jsx(Fp,{ariaLabel:u.displayLanguage,options:[{value:"system",label:u.followSystem},{value:"en",label:u.english},{value:"zh",label:u.chinese}],value:i,onChange:d=>o(d)})]})]})}function L1({notificationsBlocked:i,permission:u,settings:o,t:d,onToggleEnabled:y}){return c.jsxs("section",{className:"control-section compact-section",children:[c.jsx("h2",{children:d.notifications}),c.jsxs("label",{className:`toggle-field notification-toggle ${i?"disabled":""}`,children:[c.jsxs("span",{children:[c.jsx(Wg,{"aria-hidden":"true"}),d.browserAlerts]}),c.jsx("input",{type:"checkbox",checked:o.enabled&&!i&&u==="granted",disabled:i,onChange:g=>y(g.target.checked)})]}),i?c.jsx("p",{className:"empty-copy",children:d.notificationsBlocked}):null]})}function Y1({activeDaemonId:i,busy:u,t:o,targets:d,onConnect:y,onForget:g}){return c.jsxs("section",{className:"control-section compact-section",children:[c.jsx("h2",{children:o.savedDevices}),c.jsxs("div",{className:"stack-list",children:[d.map(A=>c.jsxs("div",{className:"data-row target-row",children:[c.jsxs("div",{children:[c.jsxs("strong",{children:[A.label,A.daemonId===i?` · ${o.active}`:""]}),c.jsxs("span",{children:[A.displayName??A.daemonId," ·"," ",A.lastConnectedAt?Wu(A.lastConnectedAt):o.notConnectedRecently]})]}),c.jsxs("div",{className:"row-actions",children:[c.jsx("button",{"aria-label":`Connect to ${A.label}`,className:"icon-button",disabled:u,onClick:()=>y(A),type:"button",children:c.jsx(kp,{"aria-hidden":"true"})}),c.jsx("button",{"aria-label":`Forget ${A.label}`,className:"icon-button danger-icon",disabled:u,onClick:()=>g(A.daemonId),type:"button",children:c.jsx(Up,{"aria-hidden":"true"})})]})]},A.daemonId)),d.length===0?c.jsx("p",{className:"empty-copy",children:o.noSavedDevices}):null]})]})}const fp={loading:!1,files:null,error:null};function G1({client:i,sessionId:u,sessionTitle:o,onClose:d}){const[y,g]=v.useState("unstaged"),[A,Y]=v.useState({unstaged:fp,staged:fp}),[U,C]=v.useState(null),[G,q]=v.useState(null),[Q,L]=v.useState(!1),[$,F]=v.useState(null),Ce=A[y],Ee=v.useCallback(async Z=>{Y(O=>({...O,[Z]:{loading:!0,files:O[Z].files,error:null}}));try{const O=await i.request({action:"session.gitDiff.list",id:i.makeId("gitDiffList"),sessionId:u,scope:Z});Y(we=>({...we,[Z]:{loading:!1,files:O.files,error:null}}))}catch(O){Y(we=>({...we,[Z]:{loading:!1,files:null,error:O instanceof Error?O.message:String(O)}}))}},[i,u]);v.useEffect(()=>{!A[y].files&&!A[y].loading&&!A[y].error&&Ee(y)},[y,A,Ee]),v.useEffect(()=>{C(null),q(null),F(null)},[y]),v.useEffect(()=>{if(!U){q(null),F(null);return}let Z=!1;return L(!0),F(null),i.request({action:"session.gitDiff.file",id:i.makeId("gitDiffFile"),sessionId:u,scope:y,path:U}).then(O=>{Z||(q(O),L(!1))}).catch(O=>{Z||(F(O instanceof Error?O.message:String(O)),L(!1))}),()=>{Z=!0}},[i,u,y,U]);const Qe=v.useMemo(()=>{const Z=O=>O?O.reduce((we,pe)=>({adds:we.adds+pe.additions,dels:we.dels+pe.deletions,count:we.count+1}),{adds:0,dels:0,count:0}):{adds:0,dels:0,count:0};return{unstaged:Z(A.unstaged.files),staged:Z(A.staged.files)}},[A]);return c.jsxs("div",{className:"diff-drawer",role:"dialog","aria-label":"Git diff",children:[c.jsx("div",{className:"diff-drawer-backdrop",onClick:d,"aria-hidden":"true"}),c.jsxs("div",{className:"diff-drawer-panel",children:[c.jsxs("header",{className:"diff-drawer-header",children:[c.jsxs("div",{children:[c.jsx("strong",{children:"Changes"}),c.jsx("span",{children:o})]}),c.jsx("button",{type:"button",className:"icon-button",onClick:d,"aria-label":"Close changes",children:c.jsx(jn,{"aria-hidden":"true"})})]}),c.jsx("div",{className:"diff-tabs",role:"tablist",children:["unstaged","staged"].map(Z=>{const O=Qe[Z],we=y===Z;return c.jsxs("button",{type:"button",role:"tab","aria-selected":we,className:`diff-tab ${we?"active":""}`,onClick:()=>g(Z),children:[c.jsx("span",{className:"diff-tab-label",children:Z==="unstaged"?"Working":"Staged"}),O.count>0?c.jsxs("span",{className:"diff-tab-meta",children:[c.jsxs("span",{className:"diff-add",children:["+",O.adds]}),c.jsxs("span",{className:"diff-del",children:["-",O.dels]})]}):null]},Z)})}),c.jsxs("div",{className:"diff-body",children:[c.jsxs("aside",{className:"diff-files","aria-label":"Changed files",children:[Ce.loading&&!Ce.files?c.jsx("p",{className:"diff-empty",children:"Loading…"}):null,Ce.error?c.jsx("p",{className:"diff-empty diff-error",children:Ce.error}):null,Ce.files&&Ce.files.length===0?c.jsx("p",{className:"diff-empty",children:"No changes."}):null,Ce.files?.map(Z=>c.jsxs("button",{type:"button",className:`diff-file ${U===Z.path?"active":""}`,onClick:()=>C(Z.path),children:[c.jsx("span",{className:`diff-status diff-status-${Z.status}`,children:Z.status}),c.jsx("span",{className:"diff-file-path",title:Z.path,children:Z.path}),c.jsxs("span",{className:"diff-file-stats",children:[Z.binary?c.jsx("span",{className:"diff-binary",children:"bin"}):null,!Z.binary&&Z.additions>0?c.jsxs("span",{className:"diff-add",children:["+",Z.additions]}):null,!Z.binary&&Z.deletions>0?c.jsxs("span",{className:"diff-del",children:["-",Z.deletions]}):null]})]},Z.path))]}),c.jsx("section",{className:"diff-patch","aria-label":"File diff",children:U?Q?c.jsx("p",{className:"diff-empty",children:"Loading patch…"}):$?c.jsx("p",{className:"diff-empty diff-error",children:$}):G?.binary?c.jsx("p",{className:"diff-empty",children:"Binary file — no inline diff."}):G?c.jsx(Q1,{patch:G.patch,truncated:G.truncated}):null:c.jsxs("div",{className:"diff-empty",children:[c.jsx(Td,{"aria-hidden":"true"}),c.jsx("p",{children:"Select a file to view its diff."})]})})]})]})]})}function Q1({patch:i,truncated:u}){const o=v.useMemo(()=>i.split(`
|
|
17
|
+
`);return c.jsxs("section",{className:"tool-inline-panel","aria-label":"Tool details",children:[c.jsxs("header",{className:"inline-detail-header",children:[c.jsxs("div",{className:"inline-detail-title",children:[c.jsx("strong",{children:g}),c.jsx("span",{title:A,children:A||"tool detail"})]}),c.jsxs("div",{className:"row-actions",children:[c.jsx("button",{className:"icon-button",onClick:()=>o(Y),type:"button",title:"Copy output",children:c.jsx(Zi,{"aria-hidden":"true"})}),c.jsx("button",{className:"icon-button",onClick:u,type:"button",title:"Close tool details",children:c.jsx(jn,{"aria-hidden":"true"})})]})]}),c.jsx("div",{className:"tool-detail-list",children:i.map((U,C)=>c.jsx(b1,{message:U,onCopy:o},`${U.historyKey??U.timestamp??U.toolName??"tool"}:${C}`))})]})}const S1=v.lazy(async()=>Kp(()=>import("./mermaid-O7DHMXV3-CNThkwJH.js").then(i=>i.a),__vite__mapDeps([0,1])).then(i=>({default:i.MessageMarkdown})));function x1({activeMatch:i,baseCwd:u,message:o,onCopy:d,onCloseSource:y,onCloseTool:g,onOpenAttachment:A,onOpenRemoteFile:Y,onToggleSource:U,onToggleTool:C,sourceOpen:G,toolOpen:q}){const Q=o.role==="tool"?Od(o.content):"";return c.jsxs("article",{className:`message ${o.role} ${o.type==="info"?"info":""} ${i?"match":""}`,children:[c.jsxs("div",{className:"message-meta",children:[c.jsx("span",{children:o.type==="info"?"info":o.role}),c.jsxs("div",{className:"message-meta-side",children:[c.jsx("time",{children:Wu(o.timestamp)}),c.jsxs("div",{className:"message-actions","aria-label":"Message actions",role:"group",children:[c.jsx("button",{"aria-label":"Copy message",onClick:()=>d(o.content),title:"Copy message",type:"button",children:c.jsx(Zi,{"aria-hidden":"true"})}),c.jsx("button",{"aria-label":"View Markdown source","aria-expanded":G,onClick:U,title:G?"Hide Markdown source":"View Markdown source",type:"button",children:c.jsx(f0,{"aria-hidden":"true"})})]})]})]}),o.role==="tool"?c.jsxs("button",{className:"tool-inline-summary","aria-expanded":q,onClick:C,type:"button",children:[c.jsxs("span",{children:[c.jsx(xv,{"aria-hidden":"true"}),o.toolName??"Tool"]}),Q?c.jsx("small",{children:Q}):null]}):o.role==="assistant"?c.jsx(v.Suspense,{fallback:c.jsx("pre",{children:o.content}),children:c.jsx(S1,{baseCwd:u,content:o.content,onOpenRemoteFile:Y})}):c.jsx("pre",{children:o.content}),o.images?.length?c.jsxs("div",{className:"message-files",children:[o.images.map(L=>c.jsxs("button",{className:"file-pill",onClick:()=>Y(L,u),title:L,type:"button",children:[c.jsx(Md,{"aria-hidden":"true"}),Ja(L)]},L)),c.jsxs("button",{className:"file-pill",onClick:()=>A(o.images??[]),type:"button",children:[c.jsx(x0,{"aria-hidden":"true"}),"Preview"]})]}):null,G?c.jsx(g1,{message:o,onClose:y,onCopy:d}):null,o.role==="tool"&&q?c.jsx($p,{messages:[o],onClose:g,onCopy:d}):null]})}function j1({matchCount:i,query:u,onChange:o,onNext:d}){return c.jsxs("div",{className:"message-search-bar",children:[c.jsx(Dd,{"aria-hidden":"true"}),c.jsx("input",{value:u,onChange:y=>o(y.target.value),onKeyDown:y=>{y.key==="Enter"&&d()},placeholder:"Search this session"}),c.jsx("span",{children:u.trim()?`${i} match${i===1?"":"es"}`:"all messages"}),u?c.jsx("button",{"aria-label":"Clear message search",className:"icon-button mini-button",onClick:()=>o(""),type:"button",children:c.jsx(jn,{"aria-hidden":"true"})}):null]})}function N1({activeMatch:i,expanded:u,messages:o,onToggle:d}){const y=o.filter(Y=>Y.role==="tool").length||o.length,g=Vp(o),A=y===1?"1 tool call":`${y} tool calls`;return c.jsxs("button",{className:`tool-group-bubble ${i?"match":""} ${u?"expanded":""}`,type:"button",onClick:d,"aria-expanded":u,"aria-label":g?`${A}: ${g}`:A,children:[c.jsxs("span",{className:"tool-group-header",children:[c.jsxs("span",{className:"tool-group-title",children:[c.jsx(zd,{"aria-hidden":"true"}),c.jsx("strong",{children:A})]}),c.jsx(l0,{className:"tool-group-chevron","aria-hidden":"true"})]}),g?c.jsx("span",{className:"tool-group-summary",children:g}):null]})}function C1({activeSession:i,activeUsage:u,messages:o,renameTitle:d,busy:y,onBrowseFiles:g,onClose:A,onExport:Y,onJumpToMessage:U,onRename:C,onRenameTitleChange:G,onToggleArchived:q,onTogglePinned:Q,onViewChanges:L}){const[$,F]=v.useState(""),Ce=v.useMemo(()=>Gp(i),[i]),Ee=v.useMemo(()=>{const Z=$.trim().toLowerCase();return Z?o.map((O,we)=>({message:O,index:we})).filter(({message:O})=>O.role!=="user"&&O.role!=="assistant"?!1:O.content.toLowerCase().includes(Z)).slice(0,20):[]},[o,$]),Qe=Z=>{Z.preventDefault(),C()};return c.jsxs("div",{className:"session-detail-drawer",role:"dialog","aria-label":"Session details",children:[c.jsx("div",{className:"drawer-backdrop",onClick:A,"aria-hidden":"true"}),c.jsxs("aside",{className:"session-detail-panel",children:[c.jsxs("header",{className:"drawer-header",children:[c.jsxs("div",{children:[c.jsx("span",{className:"eyebrow",children:i.agent}),c.jsx("strong",{title:Wn(i),children:Wn(i)})]}),c.jsx("button",{className:"icon-button",type:"button",onClick:A,"aria-label":"Close session details",children:c.jsx(jn,{"aria-hidden":"true"})})]}),c.jsxs("form",{className:"detail-title-form",onSubmit:Qe,children:[c.jsx("input",{value:d,onChange:Z=>G(Z.target.value),placeholder:Wn(i)}),c.jsx("button",{className:"primary-button",disabled:y,type:"submit",children:"Rename"})]}),c.jsxs("div",{className:"detail-info-grid",children:[c.jsxs("div",{children:[c.jsx($a,{"aria-hidden":"true"}),c.jsx("span",{children:"Working directory"}),c.jsx("strong",{title:i.cwd,children:i.cwd})]}),c.jsxs("div",{children:[c.jsx(V0,{"aria-hidden":"true"}),c.jsx("span",{children:"Messages"}),c.jsx("strong",{children:o.filter(Z=>Z.role==="user"||Z.role==="assistant").length})]}),c.jsxs("div",{children:[c.jsx(k0,{"aria-hidden":"true"}),c.jsx("span",{children:"Session"}),c.jsx("strong",{title:i.sessionId,children:i.sessionId})]}),c.jsxs("div",{children:[c.jsx(zd,{"aria-hidden":"true"}),c.jsx("span",{children:"Runtime"}),c.jsx("strong",{children:i.runtime.state})]})]}),i.branch||i.diffStat?c.jsxs("button",{className:"detail-command-card",type:"button",onClick:L,children:[c.jsx(zp,{"aria-hidden":"true"}),c.jsxs("span",{children:[i.branch??"Changes",i.diffStat?` · +${i.diffStat.additions} -${i.diffStat.deletions}`:""]})]}):null,c.jsxs("label",{className:"detail-search",children:[c.jsx(Dd,{"aria-hidden":"true"}),c.jsx("input",{value:$,onChange:Z=>F(Z.target.value),placeholder:"Search messages"}),$.trim()?c.jsxs("small",{children:[Ee.length||"No"," results"]}):null]}),$.trim()&&Ee.length?c.jsx("div",{className:"detail-search-results",children:Ee.map(({message:Z,index:O})=>c.jsxs("button",{type:"button",onClick:()=>{U(O,$),A()},children:[c.jsx("span",{children:Z.role}),c.jsx("strong",{children:Z.content})]},`${Z.historyKey??Z.timestamp??O}:${O}`))}):null,$.trim()?null:c.jsxs(c.Fragment,{children:[c.jsxs("button",{className:"detail-command-card",type:"button",onClick:g,children:[c.jsx($a,{"aria-hidden":"true"}),c.jsx("span",{children:"Browse files"})]}),c.jsxs("button",{className:"detail-command-card",type:"button",onClick:()=>{navigator.clipboard?.writeText(Ce)},children:[c.jsx(r0,{"aria-hidden":"true"}),c.jsx("span",{title:Ce,children:Ce})]}),c.jsxs("div",{className:"detail-action-grid",children:[c.jsxs("button",{className:"icon-text-button",disabled:y,type:"button",onClick:Q,children:[c.jsx(_d,{"aria-hidden":"true"}),i.pinned?"Unpin":"Pin"]}),c.jsxs("button",{className:"icon-text-button",disabled:y,type:"button",onClick:q,children:[c.jsx(Cd,{"aria-hidden":"true"}),i.archived?"Unarchive":"Archive"]}),c.jsxs("button",{className:"icon-text-button",type:"button",onClick:Y,children:[c.jsx(Xi,{"aria-hidden":"true"}),"Export"]})]}),u?c.jsxs("p",{className:"detail-usage",children:["Usage: ",u.limits?.fiveHour?.usedPercent??"-","% 5h ·"," ",u.limits?.weekly?.usedPercent??"-","% weekly"]}):null,c.jsxs("p",{className:"detail-usage",children:["Created ",Wu(i.createdAt)]})]})]})]})}function Jp(i,u){return`${i.historyKey??i.timestamp??i.toolName??i.content.slice(0,24)??"message"}:${u}`}function A1(i){const u=[];for(let o=0;o<i.length;o+=1){const d=i[o];if(!ip(d)){u.push({type:"message",index:o,message:d});continue}const y=[];let g=o;for(;g<i.length&&ip(i[g]);)y.push({index:g,message:i[g]}),g+=1;u.push({type:"toolGroup",entries:y,id:`tool-group:${y.map(({index:A,message:Y})=>Jp(Y,A)).join("|")}`}),o=g-1}return u}function E1({activeSession:i,activeSessionId:u,activeModelOptions:o,activeQueue:d,activeUsage:y,agent:g,approvalMode:A,attachments:Y,busy:U,cwd:C,draft:G,effort:q,errorText:Q,fastMode:L,historyLoading:$,messages:F,model:Ce,phase:Ee,quickReplies:Qe,renameTitle:Z,respondingSessionIds:O,sendShortcut:we,skills:pe,uploadBusy:be,detailsOpen:nt,t:Te,onApprovalModeChange:Ve,onBrowseFiles:lt,onCancelQueuedTurn:Fe,onClearInterrupt:ut,onDraftChange:Rt,onDetailsOpenChange:J,onEffortChange:M,onExportActiveSession:V,onFastModeChange:ee,onModelChange:ge,onOpenRemoteFile:le,onRefreshSessions:S,onRefreshSkills:R,onRenameSession:X,onRenameTitleChange:I,onRemoveAttachment:ie,onRestoreSnapshot:ve,onSendShortcutChange:ce,onSubmit:Xe,onToggleArchived:ze,onTogglePinned:ue,onUploadFiles:Ae,onViewChanges:Gt}){const[ne,qe]=v.useState(""),[at,dn]=v.useState(0),[Pn,kt]=v.useState(null),[ft,Ht]=v.useState(null),[Ot,Pt]=v.useState(!1),[qt,rt]=v.useState([]),ht=v.useRef(null),en=v.useRef([]),At=v.useRef(null),Ze=v.useRef(null),fn=v.useRef(0),He=v.useMemo(()=>A1(F),[F]),Et=v.useMemo(()=>{const fe=ne.trim().toLowerCase();return fe?F.map((Be,gt)=>({index:gt,message:Be})).filter(({message:Be})=>Be.content.toLowerCase().includes(fe)):[]},[ne,F]),K=fe=>{navigator.clipboard?.writeText(fe).catch(()=>{})},yt=()=>{if(!Et.length)return;const fe=at%Et.length,Be=Et[fe]?.index;typeof Be=="number"&&en.current[Be]?.scrollIntoView({behavior:"smooth",block:"center"}),dn(gt=>(gt+1)%Et.length)},D=v.useCallback(()=>{const fe=ht.current;fe&&(fe.scrollTop=fe.scrollHeight,Pt(!1))},[]),de=v.useCallback((fe="smooth")=>{const Be=ht.current;Be&&(Be.scrollTo({top:Be.scrollHeight,behavior:fe}),Pt(!1))},[]),re=()=>{const fe=ht.current;if(!fe)return;const Be=fe.scrollHeight-fe.scrollTop-fe.clientHeight;Pt(Be>180)},Ne=v.useMemo(()=>{const fe=F.at(-1);return fe?`${F.length}:${fe.historyKey??""}:${fe.timestamp??""}:${fe.content.length}`:"0"},[F]);v.useLayoutEffect(()=>{At.current!==u&&(At.current=u,Ze.current=u,fn.current=0,kt(null),Ht(null));const fe=fn.current===0&&F.length>0;fn.current=F.length;const Be=ht.current;if(!Be)return;if(fe||Ze.current===u&&(!$||F.length>0)){D();const dl=requestAnimationFrame(D),nl=window.setTimeout(D,120),vt=window.setTimeout(D,360);return Ze.current=null,Pt(!1),()=>{cancelAnimationFrame(dl),window.clearTimeout(nl),window.clearTimeout(vt)}}Be.scrollHeight-Be.scrollTop-Be.clientHeight<240&&D()},[u,$,Ne,F.length,Ee,D]);const Ke=Et.length&&ne.trim()?Et[(at+Et.length-1)%Et.length]?.index:void 0,Nn=i?Wn(i):"New session",Bt=i?.cwd??(C.trim().length>0&&C!=="."?C:""),el=i?.agent??g,tl=el==="codex"?"Codex":"Claude";return c.jsxs("section",{className:"chat-pane","aria-label":"Chat",children:[c.jsxs("header",{className:"chat-header",children:[c.jsxs("button",{className:"chat-title-block chat-title-button",type:"button",onClick:()=>i&&J(!0),children:[c.jsx("span",{className:`agent-status-pill ${el}`,children:tl}),c.jsx("h1",{title:Nn,children:Nn}),Bt?c.jsx("p",{title:Bt,children:Bt}):null,i?.branch||i?.diffStat?c.jsxs("div",{className:"header-metadata",children:[i.branch?c.jsx("span",{children:i.branch}):null,i.diffStat?c.jsxs("span",{children:["+",i.diffStat.additions," -",i.diffStat.deletions]}):null,i.runtime.state?c.jsx("span",{children:i.runtime.state}):null,i.terminal?.mode?c.jsx("span",{children:i.terminal.mode}):null]}):null]}),c.jsxs("div",{className:"header-actions",children:[c.jsx("button",{type:"button",className:"icon-button",onClick:()=>i&&Gt(i.sessionId),title:Te.viewChanges,disabled:!i,children:c.jsx(zp,{"aria-hidden":"true"})}),c.jsx("button",{type:"button",className:`icon-button ${i?.pinned?"selected":""}`,onClick:ue,title:i?.pinned?Te.unpin:Te.pin,disabled:!i||U,children:c.jsx(_d,{"aria-hidden":"true"})}),c.jsx("button",{type:"button",className:`icon-button ${i?.archived?"selected":""}`,onClick:ze,title:i?.archived?Te.unarchive:Te.archive,disabled:!i||U,children:c.jsx(Cd,{"aria-hidden":"true"})}),c.jsx("button",{type:"button",className:"icon-button",onClick:ve,title:Te.restoreSnapshot,children:c.jsx(tv,{"aria-hidden":"true"})}),c.jsx("button",{type:"button",className:"icon-button",onClick:S,title:Te.refreshSessions,children:c.jsx(tc,{"aria-hidden":"true"})})]})]}),c.jsxs("div",{className:"chat-notices","aria-live":"polite",children:[Q?c.jsxs("div",{className:"notice error",children:[c.jsx(jn,{"aria-hidden":"true"}),c.jsx("span",{children:Q})]}):null,i?.interruptReason?c.jsxs("div",{className:"notice warning",children:[c.jsx(ec,{"aria-hidden":"true"}),c.jsx("span",{children:i.interruptReason.humanText||i.interruptReason.kind}),c.jsx("button",{className:"icon-text-button",disabled:U,onClick:ut,type:"button",children:Te.clear})]}):null,i?.stallWarning?c.jsxs("div",{className:"notice warning",children:[c.jsx(Ad,{"aria-hidden":"true"}),c.jsx("span",{children:i.stallWarning.humanText||"Agent may be stalled"})]}):null]}),Ee==="missing-pair"?c.jsxs("div",{className:"empty-state",children:[c.jsx(wd,{"aria-hidden":"true"}),c.jsx("h2",{children:Te.openDaemonWebLink}),c.jsx("p",{children:Te.openDaemonWebLinkHint}),c.jsx("code",{children:"vibelet --access=quick"})]}):c.jsxs("div",{className:"message-scroll",ref:ht,onScroll:re,children:[c.jsx(j1,{matchCount:Et.length,query:ne,onChange:fe=>{qe(fe),dn(0)},onNext:yt}),$&&F.length===0?c.jsxs("div",{className:"loading-line",children:[c.jsx("span",{className:"loading-spinner","aria-hidden":"true"}),Te.loadingHistory]}):null,!$&&F.length===0?c.jsxs("div",{className:"empty-state compact",children:[c.jsx(Iu,{"aria-hidden":"true"}),c.jsx("h2",{children:i?Te.noVisibleMessages:Te.startDaemonSession}),c.jsx("p",{children:Te.emptyChatHint})]}):null,He.map(fe=>{if(fe.type==="toolGroup"){const vt=fe.entries.map(Qt=>Qt.message),ga=fe.entries.some(Qt=>Ke===Qt.index),On=ft===fe.id;return c.jsx("div",{className:"message-frame tool info",ref:Qt=>{for(const fl of fe.entries)en.current[fl.index]=Qt},children:c.jsxs("div",{className:"inline-message-stack",children:[c.jsx(N1,{activeMatch:ga,expanded:On,messages:vt,onToggle:()=>Ht(Qt=>Qt===fe.id?null:fe.id)}),On?c.jsx($p,{messages:vt,onClose:()=>Ht(null),onCopy:K}):null]})},fe.id)}const{index:Be,message:gt}=fe,kn=Jp(gt,Be),dl=Pn===kn,nl=ft===kn;return c.jsx("div",{className:`message-frame ${gt.role} ${gt.type==="info"?"info":""}`,ref:vt=>{en.current[Be]=vt},children:c.jsx(x1,{activeMatch:Ke===Be,baseCwd:i?.cwd,message:gt,onCopy:K,onCloseSource:()=>kt(null),onCloseTool:()=>Ht(null),onOpenAttachment:rt,onOpenRemoteFile:le,onToggleSource:()=>kt(vt=>vt===kn?null:kn),onToggleTool:()=>Ht(vt=>vt===kn?null:kn),sourceOpen:dl,toolOpen:nl})},kn)}),u&&O.has(u)?c.jsxs("div",{className:"typing-line",children:[c.jsx("span",{}),Te.agentResponding]}):null,Ot?c.jsx("button",{className:"scroll-latest-button",type:"button","aria-label":Te.scrollToLatest,title:Te.scrollToLatest,onClick:()=>de(),children:c.jsx($g,{"aria-hidden":"true"})}):null]}),Ee!=="missing-pair"?c.jsx(h1,{activeModelOptions:o,activeQueue:d,agent:g,approvalMode:A,attachments:Y,busy:U,draft:G,effort:q,fastMode:L,model:Ce,phase:Ee,quickReplies:Qe,sendShortcut:we,skills:pe,uploadBusy:be,onApprovalModeChange:Ve,onCancelQueuedTurn:Fe,onDraftChange:Rt,onEffortChange:M,onFastModeChange:ee,onModelChange:ge,onRemoveAttachment:ie,onRefreshSkills:R,onSendShortcutChange:ce,onSubmit:Xe,onUploadFiles:Ae,t:Te}):null,nt&&i?c.jsx(C1,{activeSession:i,activeUsage:y,busy:U,messages:F,renameTitle:Z,onBrowseFiles:()=>{J(!1),lt()},onClose:()=>J(!1),onExport:V,onJumpToMessage:(fe,Be)=>{qe(Be),dn(0),en.current[fe]?.scrollIntoView({behavior:"smooth",block:"center"})},onRename:X,onRenameTitleChange:I,onToggleArchived:ze,onTogglePinned:ue,onViewChanges:()=>Gt(i.sessionId)}):null,c.jsx(m1,{cwd:i?.cwd,paths:qt,onClose:()=>rt([]),onOpenRemoteFile:le})]})}const T1=[{tab:"session",label:"Session controls",Icon:Op},{tab:"files",label:"Files",Icon:$a},{tab:"admin",label:"Settings",Icon:sv}];function w1({value:i,onChange:u}){return c.jsx("div",{className:"control-tabs",children:T1.map(({tab:o,label:d,Icon:y})=>c.jsx("button",{className:i===o?"selected":"",onClick:()=>u(o),title:d,type:"button",children:c.jsx(y,{"aria-hidden":"true"})},o))})}function M1({cwd:i,entries:u,error:o,loaded:d,loading:y,path:g,onPathChange:A,onListDirectory:Y,onOpenRemoteFile:U}){return c.jsxs(c.Fragment,{children:[c.jsxs("label",{className:"field",children:[c.jsx("span",{children:"Path"}),c.jsxs("div",{className:"field-row",children:[c.jsx("input",{value:g,onChange:C=>A(C.target.value)}),c.jsx("button",{className:"icon-button",onClick:()=>Y(),type:"button",children:y?c.jsx(hd,{"aria-hidden":"true"}):c.jsx(tc,{"aria-hidden":"true"})})]})]}),o?c.jsx("p",{className:"empty-copy",children:o}):null,y?c.jsx("p",{className:"empty-copy",children:"Loading files..."}):null,c.jsxs("div",{className:"file-list tree-list",children:[Ju(g)?c.jsxs("button",{onClick:()=>Y(Ju(g)??g),type:"button",children:[c.jsx($a,{"aria-hidden":"true"}),".."]}):null,u.map(C=>{const G=$u(g,C.name);return c.jsxs("button",{onClick:()=>C.isDirectory?Y(G):U(G,i),type:"button",children:[C.isDirectory?c.jsx(Ku,{"aria-hidden":"true"}):c.jsx(Td,{"aria-hidden":"true"}),C.name]},`${C.name}:${C.isDirectory}`)})]}),d&&!y&&!o&&u.length===0?c.jsx("p",{className:"empty-copy",children:"No files in this directory."}):null]})}const _1=v.lazy(()=>Kp(()=>import("./mermaid-O7DHMXV3-CNThkwJH.js").then(i=>i.a),__vite__mapDeps([0,1])).then(i=>({default:i.MessageMarkdown})));function D1({file:i,mode:u,onModeChange:o,onOpenRemoteFile:d,onTextChange:y}){return c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"segmented editor-mode-tabs",children:[c.jsx("button",{className:u==="edit"?"selected":"",onClick:()=>o("edit"),type:"button",children:"Editor"}),c.jsx("button",{className:u==="preview"?"selected":"",onClick:()=>o("preview"),type:"button",children:"Preview"}),c.jsx("button",{className:u==="source"?"selected":"",onClick:()=>o("source"),type:"button",children:"Source"})]}),u==="edit"?c.jsx("textarea",{className:"remote-editor",value:i.text,onChange:g=>y(g.target.value),rows:14}):u==="preview"?c.jsx("div",{className:"remote-markdown-preview",children:c.jsx(v.Suspense,{fallback:c.jsx("pre",{className:"json-box source-viewer",children:i.text}),children:c.jsx(_1,{content:i.text,baseCwd:i.cwd,onOpenRemoteFile:d})})}):c.jsx("pre",{className:"json-box source-viewer",children:i.text})]})}function z1({busy:i,cwd:u,directory:o,newDirName:d,remoteFileMode:y,remoteFile:g,remoteFileConflict:A,onCreateDirectory:Y,onDirectoryPathChange:U,onDownloadRemoteFile:C,onListDirectory:G,onNewDirNameChange:q,onOpenRemoteFile:Q,onRemoteFileModeChange:L,onRemoteFileTextChange:$,onSaveRemoteFile:F}){return c.jsxs(c.Fragment,{children:[c.jsxs("section",{className:"control-section",children:[c.jsx("h2",{children:"File Tree"}),c.jsx(M1,{cwd:u,entries:o.entries,error:o.error,loaded:o.loaded,loading:o.loading,path:o.path,onListDirectory:G,onOpenRemoteFile:Q,onPathChange:U}),c.jsxs("div",{className:"field-row",children:[c.jsx("input",{value:d,onChange:Ce=>q(Ce.target.value),placeholder:"New folder"}),c.jsxs("button",{className:"icon-text-button",onClick:Y,type:"button",disabled:!d.trim(),children:[c.jsx(Ku,{"aria-hidden":"true"}),"Create"]})]})]}),c.jsxs("section",{className:"control-section remote-file-section",children:[c.jsx("h2",{children:"Remote File"}),g?c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"file-title",children:[g.kind==="image"?c.jsx(U0,{"aria-hidden":"true"}):c.jsx(Td,{"aria-hidden":"true"}),c.jsxs("div",{children:[c.jsx("strong",{children:Ja(g.path)}),c.jsxs("span",{children:[g.contentType," · ",Bp(g.size)]})]})]}),c.jsxs("div",{className:"attention-actions",children:[c.jsxs("button",{className:"icon-text-button",onClick:C,type:"button",children:[c.jsx(Xi,{"aria-hidden":"true"}),"Download"]}),c.jsxs("button",{className:"icon-text-button",onClick:()=>navigator.clipboard?.writeText(g.path),type:"button",children:[c.jsx(Zi,{"aria-hidden":"true"}),"Copy path"]})]}),g.kind==="text"?c.jsxs(c.Fragment,{children:[c.jsx(D1,{file:g,mode:y,onModeChange:L,onOpenRemoteFile:Q,onTextChange:$}),c.jsxs("button",{className:"primary-button full-width",disabled:!g.dirty||i,onClick:()=>F(),type:"button",children:[c.jsx(lv,{"aria-hidden":"true"}),"Save file"]}),A?c.jsxs("div",{className:"notice warning inline-notice",children:[c.jsx(Ad,{"aria-hidden":"true"}),c.jsx("span",{children:Qp(g.path)}),c.jsx("button",{className:"danger-button",disabled:i,onClick:()=>Vi(`Overwrite ${Ja(g.path)}?`)&&F({force:!0}),type:"button",children:"Force save"})]}):null]}):g.kind==="image"&&g.objectUrl?c.jsx("img",{className:"remote-image",src:g.objectUrl,alt:Ja(g.path)}):c.jsx("p",{className:"empty-copy",children:"Binary preview is not available. Use download to inspect this file."})]}):c.jsx("p",{className:"empty-copy",children:"Select an attachment or a file from the directory browser."})]})]})}function R1({activeApproval:i,activeQuestion:u,busy:o,questionAnswers:d,t:y,onCancelQuestion:g,onQuestionChoice:A,onRespondApproval:Y,onRespondQuestion:U}){const C=!!(i||u);return c.jsxs(c.Fragment,{children:[C?null:c.jsxs("section",{className:"control-section",children:[c.jsx("h2",{children:y.pendingActions}),c.jsx("p",{className:"empty-copy",children:y.noPendingActions})]}),i?c.jsxs("section",{className:"attention-panel",children:[c.jsxs("div",{className:"attention-head",children:[c.jsx(Iu,{"aria-hidden":"true"}),c.jsxs("div",{children:[c.jsx("h2",{children:y.approvalRequired}),c.jsx("p",{children:i.toolName})]})]}),c.jsx("p",{children:i.description}),c.jsx("pre",{children:Yp(i.input)}),c.jsxs("div",{className:"attention-actions",children:[c.jsxs("button",{type:"button",className:"danger-button",onClick:()=>Y(!1),disabled:o,children:[c.jsx(jn,{"aria-hidden":"true"}),y.deny]}),c.jsxs("button",{type:"button",className:"approve-button",onClick:()=>Y(!0),disabled:o,children:[c.jsx(Fa,{"aria-hidden":"true"}),y.approve]})]})]}):null,u?c.jsxs("section",{className:"attention-panel",children:[c.jsxs("div",{className:"attention-head",children:[c.jsx(wd,{"aria-hidden":"true"}),c.jsxs("div",{children:[c.jsx("h2",{children:y.inputNeeded}),c.jsxs("p",{children:[u.questions.length," question",u.questions.length>1?"s":""]})]})]}),u.questions.map(G=>c.jsxs("div",{className:"question-block",children:[c.jsx("strong",{children:G.question}),c.jsx("div",{className:"choice-list",children:G.options.map(q=>{const Q=(d[G.id]??[]).includes(q.label);return c.jsxs("button",{className:Q?"selected":"",onClick:()=>A(G.id,q.label,G.multiSelect),type:"button",children:[c.jsx("span",{children:q.label}),q.description?c.jsx("small",{children:q.description}):null]},q.label)})})]},G.id)),c.jsxs("div",{className:"attention-actions",children:[c.jsxs("button",{type:"button",className:"danger-button",onClick:g,disabled:o,children:[c.jsx(jn,{"aria-hidden":"true"}),y.cancel]}),c.jsxs("button",{type:"button",className:"approve-button",onClick:U,disabled:o,children:[c.jsx(Fa,{"aria-hidden":"true"}),y.submit]})]})]}):null]})}function dp({session:i,active:u,responding:o,tagLabels:d,onSelect:y,onContextMenu:g,onViewChanges:A}){const Y=!!i.diffStat&&(i.diffStat.additions>0||i.diffStat.deletions>0),U=Wn(i);return c.jsxs("button",{className:`session-row ${u?"active":""} ${i.archived?"archived":""}`,onContextMenu:g,onClick:y,title:U,type:"button",children:[c.jsxs("span",{className:"session-row-head",children:[c.jsx("strong",{children:U}),o?c.jsx(c0,{"aria-label":"Responding"}):null]}),c.jsx("span",{children:i.cwd}),d?.length?c.jsx("span",{className:"directory-tag-row",title:"Directory tags",children:d.map(C=>c.jsx("em",{children:C},C))}):null,c.jsxs("small",{children:[i.agent," · ",Wu(i.lastActivityAt),i.branch?` · ${i.branch}`:"",i.diffStat&&!A?` · +${i.diffStat.additions}/-${i.diffStat.deletions}`:"",i.pinned?" · pinned":"",i.archived?" · archived":""]}),Y&&A&&i.diffStat?c.jsxs("span",{className:"session-diff-badge",role:"button",tabIndex:0,title:"View changes",onClick:C=>{C.stopPropagation(),A()},onKeyDown:C=>{(C.key==="Enter"||C.key===" ")&&(C.preventDefault(),C.stopPropagation(),A())},children:[c.jsxs("span",{className:"diff-add",children:["+",i.diffStat.additions]}),c.jsxs("span",{className:"diff-del",children:["-",i.diffStat.deletions]})]}):null]})}function Fp({ariaLabel:i,options:u,value:o,disabled:d,onChange:y}){return c.jsx("div",{className:"chip-group",role:"radiogroup","aria-label":i,children:u.map(g=>c.jsx("button",{"aria-checked":o===g.value,className:o===g.value?"selected":"",disabled:d,onClick:()=>y(g.value),role:"radio",title:g.title??g.label,type:"button",children:g.label},g.value))})}function k1({agentFilter:i,t:u,onAgentFilterChange:o}){return c.jsxs("div",{className:"session-filter-panel",children:[c.jsx("span",{className:"filter-section-label",children:u.agentFilterLabel}),c.jsx(Fp,{ariaLabel:u.agentFilterLabel,value:i,options:[{value:"all",label:u.agentFilterAll},{value:"claude",label:u.agentFilterClaude},{value:"codex",label:u.agentFilterCodex}],onChange:o})]})}function ya(i){return typeof i=="string"&&i.trim().length>0?i:void 0}function O1({activeSessionId:i,busy:u,collapsedFolders:o,currentCwd:d,displayName:y,directoryTags:g,folderCounts:A,groupFolders:Y,groupedSessions:U,hideArchived:C,inventoryVersion:G,nextCursor:q,phase:Q,pendingSessionIds:L,respondingSessionIds:$,search:F,sessionAgentFilter:Ce,sessionsCount:Ee,sinceFilter:Qe,statusText:Z,t:O,visibleSessions:we,onLoadMore:pe,onCopyResumeCommand:be,onCreateDirectory:nt,onCreateSession:Te,onDeleteSession:Ve,onListDirectories:lt,onBrowseFolder:Fe,onEditFolderTags:ut,onOpenSessionDetails:Rt,onResetFilters:J,onSearchChange:M,onSearchCommit:V,onSelectSession:ee,onToggleSessionArchived:ge,onToggleSessionPinned:le,onSessionAgentFilterChange:S,onSinceFilterChange:R,onToggleFolder:X,onToggleGroupFolders:I,onToggleHideArchived:ie,onToggleCollapse:ve,onViewChanges:ce}){const[Xe,ze]=v.useState(!1),[ue,Ae]=v.useState(null),Gt=v.useRef(0),[ne,qe]=v.useState(null),at=v.useRef(null),dn=Ce!=="all"||Qe!=="30d"||Y||C,Pn=!!(q?.lastActivityAt&&q.sessionId),kt=ue?!!L?.has(ue.session.sessionId):!1,ft=D=>g[ya(D)??"/"]??[],Ht=Q==="connected"?`${we.length}/${Ee} sessions · v${G??"-"}`:O.sameOriginAccess,Ot=`${Z} · ${Ht}`;v.useEffect(()=>{if(!Xe&&!ue&&!ne)return;const D=re=>{const Ne=re.target;Ne instanceof Node&&at.current?.contains(Ne)||(ze(!1),Ae(null),qe(null))},de=re=>{re.key==="Escape"&&(ze(!1),Ae(null),qe(null))};return document.addEventListener("pointerdown",D),document.addEventListener("keydown",de),()=>{document.removeEventListener("pointerdown",D),document.removeEventListener("keydown",de)}},[ue,ne,Xe]);const Pt=(D,de)=>{const re=D.currentTarget.getBoundingClientRect(),Ne=320,Ke=430,Nn=ya(de),Bt=Nn??ya(d)??".";Ae(null),qe({...Nn?{folder:Nn}:{},cwd:Bt,x:Math.max(10,Math.min(re.right-Ne,window.innerWidth-Ne-10)),y:Math.max(10,Math.min(re.bottom+8,window.innerHeight-Ke-10))})},qt=(D,de)=>{D.preventDefault();const re=224,Ne=306;qe(null),Ae({session:de,x:Math.min(D.clientX,window.innerWidth-re-10),y:Math.min(D.clientY,window.innerHeight-Ne-10)})},rt=()=>Ae(null),ht=D=>{if(!ue)return;const{session:de}=ue;rt(),D(de)},en=D=>{if(!ne)return;const de=ya(ne.cwd)??ya(ne.folder)??ya(d)??".";qe(null),Te(de,D)},At=D=>{const de=ya(D)??ya(d)??".",re=++Gt.current;qe(Ne=>Ne&&{...Ne,browser:{path:de,entries:[],loading:!0,loaded:!1,createMode:!1,newFolderName:"",creating:!1}}),lt(de).then(Ne=>{Gt.current===re&&qe(Ke=>Ke?.browser?{...Ke,browser:{...Ke.browser,path:de,entries:Ne.filter(Nn=>Nn.isDirectory),loading:!1,loaded:!0,error:void 0}}:Ke)}).catch(Ne=>{Gt.current===re&&qe(Ke=>Ke?.browser?{...Ke,browser:{...Ke.browser,path:de,entries:[],loading:!1,loaded:!0,error:Ne instanceof Error?Ne.message:String(Ne)}}:Ke)})},Ze=()=>{ne&&At(ne.cwd||ne.folder||d||".")},fn=()=>{qe(D=>D?.browser?{...D,cwd:D.browser.path,browser:void 0}:D)},He=D=>{qe(de=>de?.browser?{...de,browser:{...de.browser,newFolderName:D,createError:void 0}}:de)},Et=()=>{qe(D=>D?.browser?{...D,browser:{...D.browser,createMode:!0,newFolderName:"",createError:void 0}}:D)},K=()=>{qe(D=>D?.browser?{...D,browser:{...D.browser,createMode:!1,newFolderName:"",createError:void 0,creating:!1}}:D)},yt=()=>{const D=ne?.browser,de=D?.newFolderName??"";if(!D||de.trim().length===0||D.creating)return;if(de.includes("/")||de.includes("\\")||de==="."||de===".."){qe(Ne=>Ne?.browser?{...Ne,browser:{...Ne.browser,createError:O.folderCreateFailed}}:Ne);return}const re=$u(D.path,de);qe(Ne=>Ne?.browser?{...Ne,browser:{...Ne.browser,creating:!0,createError:void 0}}:Ne),nt(re).then(()=>{At(D.path)}).catch(Ne=>{qe(Ke=>Ke?.browser?{...Ke,browser:{...Ke.browser,creating:!1,createError:Ne instanceof Error?Ne.message:String(Ne)}}:Ke)})};return c.jsxs("aside",{className:"session-rail","aria-label":"Sessions",children:[c.jsxs("div",{className:"brand-block",children:[c.jsx("div",{className:"brand-mark",children:c.jsx(pd,{"aria-hidden":"true"})}),c.jsxs("div",{className:"brand-copy",children:[c.jsx("strong",{children:"Vibelet Web"}),c.jsx("span",{children:y??"Daemon workspace"})]}),ve?c.jsx("button",{"aria-label":O.collapseSessionSidebar,className:"sidebar-panel-collapse-button session-rail-collapse-button",onClick:ve,title:O.collapseSessionSidebar,type:"button",children:c.jsx(Rp,{"aria-hidden":"true"})}):null]}),c.jsxs("div",{className:`connection-strip ${Q}`,title:Ot,children:[c.jsx(kp,{"aria-hidden":"true"}),c.jsx("strong",{className:"connection-status-label",children:Z})]}),c.jsxs("div",{className:"rail-list-heading",children:[c.jsx("span",{children:O.sessions}),c.jsx("button",{"aria-label":O.newSession,className:"rail-create-button",disabled:u||Q!=="connected",onClick:D=>Pt(D),title:O.newSession,type:"button",children:c.jsx(md,{"aria-hidden":"true"})})]}),c.jsxs("div",{className:"search-filter-wrap",ref:at,children:[c.jsxs("div",{className:"search-box",children:[c.jsx(Dd,{"aria-hidden":"true"}),c.jsx("input",{value:F,onBlur:V,onChange:D=>M(D.target.value),onKeyDown:D=>{D.key==="Enter"&&V()},placeholder:O.searchSessions}),c.jsx("button",{"aria-expanded":Xe,"aria-label":O.sessionFilters,className:`filter-toggle ${Xe||dn?"selected":""}`,onClick:()=>ze(D=>!D),title:O.sessionFilters,type:"button",children:c.jsx(w0,{"aria-hidden":"true"})})]}),Xe?c.jsxs("div",{className:"filter-popover",role:"dialog","aria-label":O.sessionFilters,children:[c.jsx(k1,{agentFilter:Ce,t:O,onAgentFilterChange:S}),c.jsxs("div",{className:"filter-section",children:[c.jsx("span",{className:"filter-section-label",children:O.searchTimeRangeLabel}),c.jsx("div",{className:"rail-filters",role:"group","aria-label":O.searchTimeRangeLabel,children:["all","7d","30d","90d"].map(D=>c.jsx("button",{className:Qe===D?"selected":"",onClick:()=>R(D),type:"button",children:D==="all"?O.searchTimeRangeAllTime:D==="7d"?O.searchTimeRangeLast7Days:D==="30d"?O.searchTimeRangeLast30Days:O.searchTimeRangeLast90Days},D))})]}),c.jsxs("div",{className:"filter-section",children:[c.jsx("span",{className:"filter-section-label",children:O.filterViewOptions}),c.jsxs("div",{className:"filter-switch-card",children:[c.jsxs("button",{"aria-pressed":Y,className:Y?"selected":"",onClick:I,type:"button",children:[c.jsx("span",{children:O.groupByFolder}),c.jsx("span",{className:"filter-switch-track","aria-hidden":"true",children:c.jsx("span",{})})]}),c.jsxs("button",{"aria-pressed":C,className:C?"selected":"",onClick:ie,type:"button",children:[c.jsx("span",{children:O.hideArchived}),c.jsx("span",{className:"filter-switch-track","aria-hidden":"true",children:c.jsx("span",{})})]})]})]}),dn?c.jsx("button",{className:"filter-reset-button",onClick:J,type:"button",children:O.resetFilters}):null]}):null]}),c.jsxs("div",{className:"session-list",children:[Y?U.map(D=>{const de=o[D.folder];return c.jsxs("div",{className:"folder-group",children:[c.jsxs("div",{className:"folder-header",children:[c.jsxs("button",{onClick:()=>X(D.folder),type:"button",children:[c.jsx(Ku,{"aria-hidden":"true"}),c.jsx("span",{children:D.folder}),c.jsx("small",{children:A[D.folder]??D.sessions.length})]}),c.jsx("button",{className:"mini-button",disabled:Q!=="connected",onClick:()=>Fe(D.folder),title:O.browseFolder,type:"button",children:c.jsx($a,{"aria-hidden":"true"})}),c.jsx("button",{className:"mini-button",onClick:()=>ut(D.folder),title:O.editDirectoryTags,type:"button",children:c.jsx(pv,{"aria-hidden":"true"})}),c.jsx("button",{className:"mini-button",disabled:u||Q!=="connected",onClick:re=>Pt(re,D.folder),title:O.newSession,type:"button",children:c.jsx(md,{"aria-hidden":"true"})})]}),ft(D.folder).length?c.jsx("div",{className:"folder-tag-row",children:ft(D.folder).map(re=>c.jsx("span",{children:re},re))}):null,de?null:D.sessions.map(re=>c.jsx(dp,{active:re.sessionId===i,responding:$.has(re.sessionId),session:re,tagLabels:ft(re.cwd),onContextMenu:Ne=>qt(Ne,re),onSelect:()=>ee(re.sessionId),onViewChanges:ce?()=>ce(re.sessionId):void 0},re.sessionId))]},D.folder)}):we.map(D=>c.jsx(dp,{active:D.sessionId===i,responding:$.has(D.sessionId),session:D,tagLabels:ft(D.cwd),onContextMenu:de=>qt(de,D),onSelect:()=>ee(D.sessionId),onViewChanges:ce?()=>ce(D.sessionId):void 0},D.sessionId)),we.length===0?c.jsx("p",{className:"empty-copy",children:O.noSessionsMatch}):null,Pn&&q?c.jsxs("button",{className:"icon-text-button load-more-button",disabled:u,onClick:()=>pe(q),type:"button",children:[c.jsx(tc,{"aria-hidden":"true"}),O.loadMore]}):null]}),ne?c.jsxs("div",{className:"session-create-menu",role:"dialog","aria-label":O.newSession,style:{left:ne.x,top:ne.y},onPointerDown:D=>D.stopPropagation(),children:[c.jsxs("label",{className:"session-create-field",children:[c.jsx("span",{children:O.workingDirectory}),c.jsxs("div",{className:"session-create-input-row",children:[c.jsx("input",{"aria-label":O.workingDirectory,placeholder:O.workingDirectoryPlaceholder,value:ne.cwd,onChange:D=>qe(de=>de&&{...de,cwd:D.target.value}),onKeyDown:D=>{D.key==="Enter"&&(D.preventDefault(),en("claude"))}}),c.jsx("button",{"aria-label":O.browseDirectories,className:"session-create-icon-button",onClick:Ze,title:O.browseDirectories,type:"button",children:c.jsx($a,{"aria-hidden":"true"})})]})]}),ne.browser?c.jsxs("div",{className:"session-create-browser",children:[c.jsxs("div",{className:"session-create-browser-bar",children:[c.jsx("span",{title:ne.browser.path,children:ne.browser.path}),c.jsx("button",{"aria-label":O.refreshSessions,className:"session-create-icon-button",onClick:()=>At(ne.browser?.path??ne.cwd),title:O.refreshSessions,type:"button",children:ne.browser.loading?c.jsx(hd,{className:"spin","aria-hidden":"true"}):c.jsx(tc,{"aria-hidden":"true"})})]}),ne.browser.createMode?c.jsxs("div",{className:"session-create-new-folder",children:[c.jsx("input",{"aria-label":O.newFolder,disabled:ne.browser.creating,placeholder:O.newFolderPlaceholder,value:ne.browser.newFolderName,onChange:D=>He(D.target.value),onKeyDown:D=>{D.key==="Enter"&&(D.preventDefault(),yt())}}),c.jsx("button",{"aria-label":O.cancel,className:"session-create-icon-button",disabled:ne.browser.creating,onClick:K,title:O.cancel,type:"button",children:c.jsx(jn,{"aria-hidden":"true"})}),c.jsx("button",{"aria-label":O.create,className:"session-create-icon-button",disabled:ne.browser.creating||!ne.browser.newFolderName.trim(),onClick:yt,title:O.create,type:"button",children:ne.browser.creating?c.jsx(hd,{className:"spin","aria-hidden":"true"}):c.jsx(Fa,{"aria-hidden":"true"})})]}):c.jsxs("button",{className:"session-create-secondary-button",onClick:Et,type:"button",children:[c.jsx(A0,{"aria-hidden":"true"}),O.newFolder]}),ne.browser.createError?c.jsx("p",{className:"session-create-error",children:ne.browser.createError}):null,c.jsxs("div",{className:"session-create-folder-list",children:[Ju(ne.browser.path)?c.jsxs("button",{className:"session-create-folder-row",onClick:()=>At(Ju(ne.browser?.path??"")??ne.cwd),type:"button",children:[c.jsx($a,{"aria-hidden":"true"}),".."]}):null,ne.browser.loading?c.jsx("p",{className:"empty-copy",children:O.loadingDirectories}):null,!ne.browser.loading&&ne.browser.error?c.jsx("p",{className:"session-create-error",children:ne.browser.error}):null,!ne.browser.loading&&!ne.browser.error&&ne.browser.loaded&&ne.browser.entries.length===0?c.jsx("p",{className:"empty-copy",children:O.remoteFolderEmpty}):null,!ne.browser.loading&&!ne.browser.error?ne.browser.entries.map(D=>{const de=$u(ne.browser?.path??ne.cwd,D.name);return c.jsxs("button",{className:"session-create-folder-row",onClick:()=>At(de),type:"button",children:[c.jsx(Ku,{"aria-hidden":"true"}),c.jsx("span",{children:D.name})]},`${D.name}:${de}`)}):null]}),c.jsxs("button",{className:"session-create-select-button",onClick:fn,type:"button",children:[c.jsx(Fa,{"aria-hidden":"true"}),O.chooseThisFolder]})]}):null,c.jsxs("button",{type:"button",onClick:()=>en("claude"),children:[c.jsx(e0,{"aria-hidden":"true"}),c.jsxs("span",{children:[c.jsx("strong",{children:"Claude"}),c.jsx("small",{children:O.claudeSession})]})]}),c.jsxs("button",{type:"button",onClick:()=>en("codex"),children:[c.jsx(pd,{"aria-hidden":"true"}),c.jsxs("span",{children:[c.jsx("strong",{children:"Codex"}),c.jsx("small",{children:O.codexSession})]})]})]}):null,ue?c.jsxs("div",{className:"session-context-menu",role:"menu",style:{left:ue.x,top:ue.y},onPointerDown:D=>D.stopPropagation(),children:[c.jsxs("button",{type:"button",role:"menuitem",onClick:()=>ht(D=>ee(D.sessionId)),children:[c.jsx(Ed,{"aria-hidden":"true"}),O.open]}),c.jsxs("button",{type:"button",role:"menuitem",disabled:kt,onClick:()=>ht(Rt),children:[c.jsx(q0,{"aria-hidden":"true"}),O.details]}),c.jsxs("button",{type:"button",role:"menuitem",disabled:kt,onClick:()=>ht(be),children:[c.jsx(Zi,{"aria-hidden":"true"}),O.copyResumeCommand]}),c.jsxs("button",{type:"button",role:"menuitem",disabled:kt||!ce||!ue.session.branch&&!ue.session.diffStat,onClick:()=>ht(D=>ce?.(D.sessionId)),children:[c.jsx(v0,{"aria-hidden":"true"}),O.viewChanges]}),c.jsx("span",{className:"context-menu-separator"}),c.jsxs("button",{type:"button",role:"menuitem",disabled:kt,onClick:()=>ht(le),children:[c.jsx(_d,{"aria-hidden":"true"}),ue.session.pinned?O.unpin:O.pin]}),c.jsxs("button",{type:"button",role:"menuitem",disabled:kt,onClick:()=>ht(ge),children:[c.jsx(Cd,{"aria-hidden":"true"}),ue.session.archived?O.unarchive:O.archive]}),c.jsxs("button",{className:"danger",type:"button",role:"menuitem",onClick:()=>ht(Ve),children:[c.jsx(Up,{"aria-hidden":"true"}),O.delete]})]}):null]})}function U1({busy:i,connected:u,dismissed:o,feedback:d,synced:y,t:g,onPull:A,onPushMerge:Y,onPushReplace:U,onSkip:C}){const G=!u||i!==null;return c.jsxs("section",{className:"control-section compact-section archive-sync-panel",children:[c.jsx("h2",{children:g.archiveSyncTitle}),c.jsx("p",{className:"empty-copy",children:y?g.archiveSyncSynced:o?g.archiveSyncSkippedState:g.archiveSyncBody}),c.jsxs("div",{className:"action-grid archive-sync-actions",children:[c.jsxs("button",{className:"icon-text-button",disabled:G,onClick:Y,type:"button",children:[c.jsx(z0,{"aria-hidden":"true"}),i==="pushMerge"?g.archiveSyncSyncing:g.archiveSyncPushMerge]}),c.jsxs("button",{className:"icon-text-button",disabled:G,onClick:A,type:"button",children:[c.jsx(Xi,{"aria-hidden":"true"}),i==="pull"?g.archiveSyncSyncing:g.archiveSyncPull]}),c.jsxs("button",{className:"icon-text-button",disabled:G,onClick:U,type:"button",children:[c.jsx(bv,{"aria-hidden":"true"}),i==="pushReplace"?g.archiveSyncSyncing:g.archiveSyncPushReplace]}),c.jsxs("button",{className:"icon-text-button",disabled:G,onClick:C,type:"button",children:[c.jsx(Xg,{"aria-hidden":"true"}),g.archiveSyncSkip]})]}),d?c.jsx("p",{className:`empty-copy ${d.tone==="error"?"error-copy":"success-copy"}`,children:d.message}):null]})}function H1({pairing:i,phase:u,t:o,onForgetPairing:d}){const y=u==="connected"?"connected":i?u:o.notPaired;return c.jsxs("section",{className:"control-section compact-section",children:[c.jsx("h2",{children:o.currentDevice}),c.jsxs("dl",{children:[c.jsxs("div",{children:[c.jsx("dt",{children:o.daemon}),c.jsx("dd",{children:i?.displayName??i?.daemonId??o.notPaired})]}),c.jsxs("div",{children:[c.jsx("dt",{children:o.status}),c.jsx("dd",{children:y})]})]}),c.jsx("div",{className:"action-grid",children:c.jsxs("button",{className:"danger-button",disabled:!i,onClick:d,type:"button",children:[c.jsx(wd,{"aria-hidden":"true"}),o.forget]})})]})}function q1({connected:i,metadata:u,showUpdate:o,updateBusy:d,restartBusy:y,t:g,updateStatus:A,onUpdate:Y,onRestart:U}){const C=u.version&&u.latestVersion&&o?`${u.version} -> ${u.latestVersion}`:u.version||g.unknown;return c.jsxs("section",{className:"control-section compact-section",children:[c.jsx("h2",{children:g.desktopConnector}),c.jsx("dl",{children:c.jsxs("div",{children:[c.jsx("dt",{children:g.version}),c.jsx("dd",{children:u.loading?g.checking:C})]})}),c.jsxs("div",{className:"action-grid",children:[o?c.jsxs("button",{className:"primary-button",disabled:!i||d||y,onClick:Y,type:"button",children:[c.jsx(Xi,{"aria-hidden":"true"}),d?g.updating:g.update]}):null,c.jsxs("button",{className:"danger-button",disabled:!i||y,onClick:U,type:"button",children:[c.jsx(tc,{"aria-hidden":"true"}),y?g.restarting:g.restart]})]}),u.error?c.jsx("p",{className:"empty-copy",children:u.error}):null,A?c.jsx("p",{className:"empty-copy",children:A}):null]})}function B1({language:i,t:u,onLanguageChange:o}){return c.jsxs("section",{className:"control-section compact-section",children:[c.jsx("h2",{children:u.language}),c.jsxs("label",{className:"field",children:[c.jsx("span",{children:u.displayLanguage}),c.jsx(Fp,{ariaLabel:u.displayLanguage,options:[{value:"system",label:u.followSystem},{value:"en",label:u.english},{value:"zh",label:u.chinese}],value:i,onChange:d=>o(d)})]})]})}function L1({notificationsBlocked:i,permission:u,settings:o,t:d,onToggleEnabled:y}){return c.jsxs("section",{className:"control-section compact-section",children:[c.jsx("h2",{children:d.notifications}),c.jsxs("label",{className:`toggle-field notification-toggle ${i?"disabled":""}`,children:[c.jsxs("span",{children:[c.jsx(Wg,{"aria-hidden":"true"}),d.browserAlerts]}),c.jsx("input",{type:"checkbox",checked:o.enabled&&!i&&u==="granted",disabled:i,onChange:g=>y(g.target.checked)})]}),i?c.jsx("p",{className:"empty-copy",children:d.notificationsBlocked}):null]})}function Y1({activeDaemonId:i,busy:u,t:o,targets:d,onConnect:y,onForget:g}){return c.jsxs("section",{className:"control-section compact-section",children:[c.jsx("h2",{children:o.savedDevices}),c.jsxs("div",{className:"stack-list",children:[d.map(A=>c.jsxs("div",{className:"data-row target-row",children:[c.jsxs("div",{children:[c.jsxs("strong",{children:[A.label,A.daemonId===i?` · ${o.active}`:""]}),c.jsxs("span",{children:[A.displayName??A.daemonId," ·"," ",A.lastConnectedAt?Wu(A.lastConnectedAt):o.notConnectedRecently]})]}),c.jsxs("div",{className:"row-actions",children:[c.jsx("button",{"aria-label":`Connect to ${A.label}`,className:"icon-button",disabled:u,onClick:()=>y(A),type:"button",children:c.jsx(kp,{"aria-hidden":"true"})}),c.jsx("button",{"aria-label":`Forget ${A.label}`,className:"icon-button danger-icon",disabled:u,onClick:()=>g(A.daemonId),type:"button",children:c.jsx(Up,{"aria-hidden":"true"})})]})]},A.daemonId)),d.length===0?c.jsx("p",{className:"empty-copy",children:o.noSavedDevices}):null]})]})}const fp={loading:!1,files:null,error:null};function G1({client:i,sessionId:u,sessionTitle:o,onClose:d}){const[y,g]=v.useState("unstaged"),[A,Y]=v.useState({unstaged:fp,staged:fp}),[U,C]=v.useState(null),[G,q]=v.useState(null),[Q,L]=v.useState(!1),[$,F]=v.useState(null),Ce=A[y],Ee=v.useCallback(async Z=>{Y(O=>({...O,[Z]:{loading:!0,files:O[Z].files,error:null}}));try{const O=await i.request({action:"session.gitDiff.list",id:i.makeId("gitDiffList"),sessionId:u,scope:Z});Y(we=>({...we,[Z]:{loading:!1,files:O.files,error:null}}))}catch(O){Y(we=>({...we,[Z]:{loading:!1,files:null,error:O instanceof Error?O.message:String(O)}}))}},[i,u]);v.useEffect(()=>{!A[y].files&&!A[y].loading&&!A[y].error&&Ee(y)},[y,A,Ee]),v.useEffect(()=>{C(null),q(null),F(null)},[y]),v.useEffect(()=>{if(!U){q(null),F(null);return}let Z=!1;return L(!0),F(null),i.request({action:"session.gitDiff.file",id:i.makeId("gitDiffFile"),sessionId:u,scope:y,path:U}).then(O=>{Z||(q(O),L(!1))}).catch(O=>{Z||(F(O instanceof Error?O.message:String(O)),L(!1))}),()=>{Z=!0}},[i,u,y,U]);const Qe=v.useMemo(()=>{const Z=O=>O?O.reduce((we,pe)=>({adds:we.adds+pe.additions,dels:we.dels+pe.deletions,count:we.count+1}),{adds:0,dels:0,count:0}):{adds:0,dels:0,count:0};return{unstaged:Z(A.unstaged.files),staged:Z(A.staged.files)}},[A]);return c.jsxs("div",{className:"diff-drawer",role:"dialog","aria-label":"Git diff",children:[c.jsx("div",{className:"diff-drawer-backdrop",onClick:d,"aria-hidden":"true"}),c.jsxs("div",{className:"diff-drawer-panel",children:[c.jsxs("header",{className:"diff-drawer-header",children:[c.jsxs("div",{children:[c.jsx("strong",{children:"Changes"}),c.jsx("span",{children:o})]}),c.jsx("button",{type:"button",className:"icon-button",onClick:d,"aria-label":"Close changes",children:c.jsx(jn,{"aria-hidden":"true"})})]}),c.jsx("div",{className:"diff-tabs",role:"tablist",children:["unstaged","staged"].map(Z=>{const O=Qe[Z],we=y===Z;return c.jsxs("button",{type:"button",role:"tab","aria-selected":we,className:`diff-tab ${we?"active":""}`,onClick:()=>g(Z),children:[c.jsx("span",{className:"diff-tab-label",children:Z==="unstaged"?"Working":"Staged"}),O.count>0?c.jsxs("span",{className:"diff-tab-meta",children:[c.jsxs("span",{className:"diff-add",children:["+",O.adds]}),c.jsxs("span",{className:"diff-del",children:["-",O.dels]})]}):null]},Z)})}),c.jsxs("div",{className:"diff-body",children:[c.jsxs("aside",{className:"diff-files","aria-label":"Changed files",children:[Ce.loading&&!Ce.files?c.jsx("p",{className:"diff-empty",children:"Loading…"}):null,Ce.error?c.jsx("p",{className:"diff-empty diff-error",children:Ce.error}):null,Ce.files&&Ce.files.length===0?c.jsx("p",{className:"diff-empty",children:"No changes."}):null,Ce.files?.map(Z=>c.jsxs("button",{type:"button",className:`diff-file ${U===Z.path?"active":""}`,onClick:()=>C(Z.path),children:[c.jsx("span",{className:`diff-status diff-status-${Z.status}`,children:Z.status}),c.jsx("span",{className:"diff-file-path",title:Z.path,children:Z.path}),c.jsxs("span",{className:"diff-file-stats",children:[Z.binary?c.jsx("span",{className:"diff-binary",children:"bin"}):null,!Z.binary&&Z.additions>0?c.jsxs("span",{className:"diff-add",children:["+",Z.additions]}):null,!Z.binary&&Z.deletions>0?c.jsxs("span",{className:"diff-del",children:["-",Z.deletions]}):null]})]},Z.path))]}),c.jsx("section",{className:"diff-patch","aria-label":"File diff",children:U?Q?c.jsx("p",{className:"diff-empty",children:"Loading patch…"}):$?c.jsx("p",{className:"diff-empty diff-error",children:$}):G?.binary?c.jsx("p",{className:"diff-empty",children:"Binary file — no inline diff."}):G?c.jsx(Q1,{patch:G.patch,truncated:G.truncated}):null:c.jsxs("div",{className:"diff-empty",children:[c.jsx(Td,{"aria-hidden":"true"}),c.jsx("p",{children:"Select a file to view its diff."})]})})]})]})]})}function Q1({patch:i,truncated:u}){const o=v.useMemo(()=>i.split(`
|
|
18
18
|
`),[i]);return c.jsxs("div",{className:"diff-patch-view",children:[o.map((d,y)=>{const g=V1(d);return c.jsx("div",{className:`diff-line ${g}`,children:c.jsx("span",{className:"diff-line-text",children:d||" "})},y)}),u?c.jsx("p",{className:"diff-empty",children:"Patch truncated — file is larger than the inline limit."}):null]})}function V1(i){return i.startsWith("diff ")||i.startsWith("index ")||i.startsWith("---")||i.startsWith("+++")?"header":i.startsWith("@@")?"hunk":i.startsWith("+")?"add":i.startsWith("-")?"del":"ctx"}const Ip="pair",Ia="vibelet.web.pairing",hp="vibelet.web.deviceId";class Fu extends Error{constructor(u,o){super(o),this.code=u,this.name="PairingCreateError"}}function Hd(i){return!!i&&typeof i=="object"&&!Array.isArray(i)}function X1(i){const u=i.replace(/-/g,"+").replace(/_/g,"/"),o=u.padEnd(Math.ceil(u.length/4)*4,"=");return decodeURIComponent(Array.from(atob(o),d=>`%${d.charCodeAt(0).toString(16).padStart(2,"0")}`).join(""))}function Z1(i){const[u,o,d,y,g,A]=i;return!o||!Number.isFinite(d)||d<=0?null:{kind:u==="relay"?"relay":"direct",host:o,port:Math.floor(d),source:y,stability:g,...A===!0?{secure:!0}:{}}}function K1(i){if(!Hd(i))return null;const{kind:u,host:o,port:d,source:y,stability:g,secure:A}=i;return u!=="direct"&&u!=="relay"||typeof o!="string"||!o.trim()||typeof d!="number"||!Number.isFinite(d)||d<=0||typeof y!="string"||typeof g!="string"?null:{kind:u,host:o.trim(),port:Math.floor(d),source:y,stability:g,...A===!0?{secure:!0}:{}}}function $1(i){const u=i.trim().split(".");if(u.length!==4)return!1;const o=u.map(g=>/^\d+$/.test(g)?Number(g):Number.NaN);if(o.some(g=>!Number.isInteger(g)||g<0||g>255))return!1;const[d,y]=o;return d===10||d===172&&y>=16&&y<=31||d===192&&y===168}function J1(i){const u=i.trim();return u.includes(":")&&!u.startsWith("[")?`[${u}]`:u}function F1(i,u){return u.protocol==="https:"&&i.secure!==!0?null:`${i.secure===!0?"wss":"ws"}://${J1(i.host)}:${i.port}`}function mp(i){return $1(i.host)?0:i.source==="local_network"?1:i.source==="configured_host"?2:3}function I1(i,u){const o=u?.port??i.port,d=u?.canonicalHost??i.canonicalHost;if(!d||typeof o!="number"||!Number.isFinite(o))return[];const y=Math.floor(o);return[{kind:"direct",host:d,port:y,source:"fallback",stability:"stable"},...[...u?.fallbackHosts??[],...i.fallbackHosts??[]].map(g=>({kind:"direct",host:g,port:y,source:"fallback",stability:"stable"}))]}function W1(i,u,o=window.location){const d=[...u?.connections??[],...i.connections??[],...I1(i,u)].map(K1).filter(y=>!!y).filter(y=>y.kind==="direct").sort((y,g)=>mp(y)-mp(g));for(const y of d){const g=F1(y,o);if(g)return g}}function P1(i){if(!i.d||!i.c)return null;const u=Array.isArray(i.o)?i.o.map(Z1).filter(o=>!!o):void 0;return{daemonId:i.d,pairNonce:i.c,...i.n?{displayName:i.n}:{},...i.h?{canonicalHost:i.h}:{},...Number.isFinite(i.p)?{port:i.p}:{},...Array.isArray(i.f)?{fallbackHosts:i.f.filter(o=>typeof o=="string")}:{},...u?.length?{connections:u}:{},...i.e?{expiresAt:i.e}:{}}}function eb(i){return!i.daemonId||!i.pairNonce?null:{daemonId:i.daemonId,displayName:i.displayName,canonicalHost:i.canonicalHost,fallbackHosts:i.fallbackHosts,port:i.port,connections:i.connections,pairNonce:i.pairNonce,expiresAt:i.expiresAt}}function tb(i=window.location.hash){const u=i.startsWith("#")?i.slice(1):i,o=new URLSearchParams(u).get(Ip);if(!o)return null;try{const d=JSON.parse(X1(o));if(!Hd(d))return null;if(d.t==="vp")return P1(d);if(d.type==="vibelet-pair")return eb(d)}catch{return null}return null}function nb(){if(!window.location.hash.includes(`${Ip}=`))return;const i=`${window.location.pathname}${window.location.search}`;window.history.replaceState(null,"",i)}function lb(i=window.localStorage){const u=i.getItem(hp);if(u)return u;const o=typeof crypto.randomUUID=="function"?crypto.randomUUID():`web_${Date.now().toString(36)}_${Math.random().toString(36).slice(2)}`;return i.setItem(hp,o),o}function pp(i){const u=i.getItem(Ia);if(!u)return null;try{const o=JSON.parse(u);return!o.daemonId||!o.deviceId||!o.pairToken?null:{daemonId:o.daemonId,displayName:o.displayName,deviceId:o.deviceId,pairToken:o.pairToken,pairedAt:o.pairedAt??new Date().toISOString(),webSocketUrl:typeof o.webSocketUrl=="string"?o.webSocketUrl:void 0}}catch{return null}}function qd(i){if(typeof window>"u")return null;try{return i===window.localStorage?window.sessionStorage:null}catch{return null}}function ab(i=window.localStorage,u=qd(i)){const o=pp(i);if(o)return o;const d=u?pp(u):null;return d?(i.setItem(Ia,JSON.stringify(d)),u?.removeItem(Ia),d):null}function yp(i,u=window.localStorage,o=qd(u)){u.setItem(Ia,JSON.stringify(i)),o?.removeItem(Ia)}function gp(i=window.localStorage,u=qd(i)){i.removeItem(Ia),u?.removeItem(Ia)}function ib(i,u=Date.now()){if(!i.expiresAt)return!1;const o=new Date(i.expiresAt).getTime();return Number.isFinite(o)&&o<u}async function sb(i){const u=await i.text().catch(()=>"");try{const o=JSON.parse(u);if(Hd(o)&&o.error==="pair_window_expired")return new Fu("pair_window_expired","Pairing link expired.")}catch{}return new Fu("pairing_failed",u||"Pairing failed.")}async function cb(i,u=lb()){if(ib(i))throw new Fu("pair_window_expired","Pairing link expired.");const o=await fetch("/pair/create",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({daemonId:i.daemonId,pairNonce:i.pairNonce,deviceId:u,deviceName:"Vibelet Web"})});if(!o.ok)throw await sb(o);const d=await o.json();return{daemonId:d.daemonId,displayName:d.displayName||i.displayName,deviceId:d.deviceId,pairToken:d.pairToken,pairedAt:new Date().toISOString(),webSocketUrl:W1(i,d)}}function vp(i){return`${i}_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}function ub(i,u=window.location){return i?.webSocketUrl?i.webSocketUrl:`${u.protocol==="https:"?"wss:":"ws:"}//${u.host}`}class rb{socket=null;pending=new Map;messageListeners=new Set;closeListeners=new Set;async connect(u){this.disconnect();const o=new WebSocket(ub(u));this.socket=o;const d=new Promise((y,g)=>{o.onopen=()=>y(),o.onerror=()=>g(new Error("WebSocket connection failed."))});return o.onmessage=y=>this.handleSocketMessage(y.data),o.onclose=()=>{this.socket===o&&(this.socket=null),this.rejectPending(new Error("WebSocket disconnected.")),this.closeListeners.forEach(y=>y())},await d,await this.request({action:"auth.hello",id:vp("auth"),pairToken:u.pairToken,daemonId:u.daemonId,deviceId:u.deviceId,locale:navigator.language})}request(u,o={}){return!this.socket||this.socket.readyState!==WebSocket.OPEN?Promise.reject(new Error("WebSocket is not connected.")):new Promise((d,y)=>{const g={resolve:d,reject:y};o.timeoutMs&&o.timeoutMs>0&&(g.timeoutId=setTimeout(()=>{this.pending.delete(u.id),y(new Error(o.timeoutMessage||"Request timed out."))},o.timeoutMs)),this.pending.set(u.id,g),this.socket?.send(JSON.stringify(u))})}send(u){this.socket?.readyState===WebSocket.OPEN&&this.socket.send(JSON.stringify(u))}onMessage(u){return this.messageListeners.add(u),()=>this.messageListeners.delete(u)}onClose(u){return this.closeListeners.add(u),()=>this.closeListeners.delete(u)}disconnect(){this.rejectPending(new Error("WebSocket disconnected.")),this.socket?.close(1e3,"client disconnect"),this.socket=null}get isConnected(){return this.socket?.readyState===WebSocket.OPEN}makeId(u){return vp(u)}handleSocketMessage(u){if(typeof u!="string")return;let o;try{o=JSON.parse(u)}catch{return}if(o.type!=="pong"){if(o.type==="response"){const d=this.pending.get(o.id);if(d){this.pending.delete(o.id),d.timeoutId&&clearTimeout(d.timeoutId),o.ok?d.resolve(o.data):d.reject(new Error(o.error||"Request failed."));return}}this.messageListeners.forEach(d=>d(o))}}rejectPending(u){for(const o of this.pending.values())o.timeoutId&&clearTimeout(o.timeoutId),o.reject(u);this.pending.clear()}}function ob(){"serviceWorker"in navigator&&window.addEventListener("load",()=>{navigator.serviceWorker.register("/web/sw.js",{scope:"/web/"}).catch(()=>{})})}function db(i=window.location.search){const u=new URLSearchParams(i);return[u.get("title"),u.get("text"),u.get("url")].map(d=>d?.trim()).filter(d=>!!d).join(`
|
|
19
19
|
|
|
20
20
|
`)}function fb(){const i=new URL(window.location.href);let u=!1;for(const o of["title","text","url"])i.searchParams.has(o)&&(i.searchParams.delete(o),u=!0);u&&window.history.replaceState(null,"",`${i.pathname}${i.search}${i.hash}`)}function hb(i){return i.filter(u=>u.archived===!0).map(u=>u.sessionId)}function mb(i,u,o){return i.ok?{tone:"success",message:u.replace("{n}",String(i.archivedSessionIds.length))}:i.error==="timeout"?{tone:"error",message:o.timeout}:i.error==="not_connected"?{tone:"error",message:o.disconnected}:{tone:"error",message:o.generic.replace("{error}",i.error)}}async function pb(i,u,o){if(!i?.isConnected)return{ok:!1,error:"not_connected"};try{const d=await i.request({action:"sessions.archiveSync",id:i.makeId("archive_sync"),mode:u,...u==="pull"?{}:{archivedSessionIds:o??[]}});return{ok:!0,archivedSessionIds:Array.isArray(d.archivedSessionIds)?d.archivedSessionIds.filter(y=>typeof y=="string"&&y.length>0):[]}}catch(d){return{ok:!1,error:d instanceof Error?d.message:String(d)}}}const Wp="vibelet.web.composerDrafts",bd={draftsBySessionId:{},newSessionDraft:""};function bp(i){return!!i&&typeof i=="object"&&!Array.isArray(i)}function Pp(i){return bp(i)?{draftsBySessionId:bp(i.draftsBySessionId)?Object.fromEntries(Object.entries(i.draftsBySessionId).filter(o=>typeof o[1]=="string")):{},newSessionDraft:typeof i.newSessionDraft=="string"?i.newSessionDraft:""}:bd}function yb(i=window.localStorage){const u=i.getItem(Wp);if(!u)return bd;try{return Pp(JSON.parse(u))}catch{return bd}}function Fs(i,u=window.localStorage){u.setItem(Wp,JSON.stringify(Pp(i)))}function Is(i,u,o){if(!u)return{...i,newSessionDraft:o};const d={...i.draftsBySessionId};return o.trim()?d[u]=o:delete d[u],{...i,draftsBySessionId:d}}function Ws(i,u){return u?i.draftsBySessionId[u]??"":i.newSessionDraft}function gb(i,u,o){if(!u||!o||u===o)return i;const d=i.draftsBySessionId[u];if(d===void 0)return i;const y={...i.draftsBySessionId};return delete y[u],d.trim()&&(y[o]=d),{...i,draftsBySessionId:y}}const ey="vibelet.web.savedTargets",ty=12;function vb(i){return!!i&&typeof i=="object"&&!Array.isArray(i)}function bb(i){if(!vb(i)||typeof i.daemonId!="string"||typeof i.deviceId!="string"||typeof i.pairToken!="string"||typeof i.pairedAt!="string")return null;const u=typeof i.displayName=="string"?i.displayName:void 0,o=typeof i.label=="string"&&i.label.trim()?i.label.trim():u||i.daemonId.slice(0,10);return{daemonId:i.daemonId,deviceId:i.deviceId,pairToken:i.pairToken,pairedAt:i.pairedAt,displayName:u,webSocketUrl:typeof i.webSocketUrl=="string"?i.webSocketUrl:void 0,label:o,lastConnectedAt:typeof i.lastConnectedAt=="string"?i.lastConnectedAt:void 0}}function ny(i){if(!Array.isArray(i))return[];const u=new Set,o=[];for(const d of i){const y=bb(d);if(!(!y||u.has(y.daemonId))&&(u.add(y.daemonId),o.push(y),o.length>=ty))break}return o}function Sb(i=window.localStorage){const u=i.getItem(ey);if(!u)return[];try{return ny(JSON.parse(u))}catch{return[]}}function Sp(i,u=window.localStorage){u.setItem(ey,JSON.stringify(ny(i)))}function xb(i,u,o=new Date().toISOString()){return[{...u,label:u.displayName||u.daemonId.slice(0,10),lastConnectedAt:o},...i.filter(y=>y.daemonId!==u.daemonId)].slice(0,ty)}function jb(i,u){return i.filter(o=>o.daemonId!==u)}const dd={version:"",latestVersion:"",loading:!1,error:null};function xp(i){const u=i.match(/^\d+/);return u?Number(u[0]):0}function Nb(i,u){const o=i.split(/[+-]/,1)[0].split(".").map(xp),d=u.split(/[+-]/,1)[0].split(".").map(xp),y=Math.max(o.length,d.length);for(let g=0;g<y;g+=1){const A=o[g]??0,Y=d[g]??0;if(A<Y)return-1;if(A>Y)return 1}return 0}function Cb(i,u){return Nb(i,u)<0}function Ab(i){const u=i.toLowerCase();if(u.includes("alpha"))return"alpha";if(u.includes("beta"))return"beta";if(i.trim())return"latest"}function Eb(i,u,o){const d=i?.webSocketUrl?i.webSocketUrl:u.origin;try{const y=new URL(d);return y.protocol==="ws:"&&(y.protocol="http:"),y.protocol==="wss:"&&(y.protocol="https:"),y.pathname="/health",y.search="",y.hash="",y.toString()}catch{return new URL("/health",u.origin).toString()}}function Tb(i){if(!i||typeof i!="object")return{version:"",latestVersion:""};const u=i;return{version:typeof u.version=="string"?u.version.trim():"",latestVersion:typeof u.latestVersion=="string"?u.latestVersion.trim():""}}const wb=/[\n,,]+/,Mb=6,_b=18;function Bd(i){return typeof i=="string"&&i.trim().length>0?i:"/"}function Db(i){const u=i.replace(/\s+/g," ").trim();return u?u.slice(0,_b):null}function Pu(i){if(!Array.isArray(i))return[];const u=new Set,o=[];for(const d of i){if(typeof d!="string")continue;const y=Db(d);if(!y)continue;const g=y.toLowerCase();if(!u.has(g)&&(u.add(g),o.push(y),o.length>=Mb))break}return o}function zb(i){return Pu(i.split(wb))}function Rb(i){return Pu(i).join(", ")}function kb(i){if(!i||typeof i!="object"||Array.isArray(i))return{};const u={};for(const[o,d]of Object.entries(i)){const y=Pu(Array.isArray(d)?d:[]);y.length>0&&(u[Bd(o)]=y)}return u}function Ob(i,u,o){const d=Bd(u),y=Pu(o);if(y.length===0){const{[d]:g,...A}=i;return A}return{...i,[d]:y}}function fd(i){return typeof i=="string"&&i.trim().length>0?i:void 0}function Ub(i=window.location.search){const u=new URLSearchParams(i),o=fd(u.get("folder")),d=fd(u.get("file")),y=fd(u.get("cwd"));return{...o?{folder:o}:{},...d?{file:d}:{},...y?{cwd:y}:{}}}function Hb(i,u,o=[]){const d=new URLSearchParams(i);for(const g of o)d.delete(g);for(const[g,A]of Object.entries(u))A?d.set(g,A):d.delete(g);const y=d.toString();return y?`?${y}`:""}function jp(i,u={}){const o=u.history??window.history,d=u.location??window.location,y=[];i.folder&&y.push("file","cwd"),i.file&&y.push("folder");const g=Hb(d.search,i,y),A=`${d.pathname}${g}${d.hash}`;if(u.replace){o.replaceState(null,"",A);return}o.pushState(null,"",A)}function er(i,u){return!!u&&Object.hasOwn(i,u)}function qb(i,u){const o=i.map(d=>({...d}));return u?Rd(o,u):o}function Np(i,u,o){return u?{...i,[u]:o.map(d=>({...d}))}:i}function Bb(i,u,o){return!u||o.length===0?i:{...i,[u]:[...i[u]??[],...o.map(d=>({...d}))]}}function Lb(i,u,o){return!u||!o?i:{...i,[u]:Rd(i[u]??[],o)}}function Yb(i,u,o){if(!u||!o||u===o||!er(i,u))return i;const d={...i};return d[o]=i[u],delete d[u],d}function Gb(i,u){if(!er(i,u))return i;const o={...i};return delete o[u],o}const Qb=6;function Vb(i,u){return u.has(i.sessionId)||i.runtime?.isResponding===!0||i.runtime?.state==="daemonActive"||i.runtime?.state==="externalRunning"}function Xb(i,u,o,d,y=Qb){if(y<=0)return[];const g=[];for(const A of i){if(g.length>=y)break;!A.sessionId||!Vb(A,o)||er(u,A.sessionId)||d.has(A.sessionId)||g.push(A)}return g}function Sd(i,u=typeof navigator>"u"?"en":navigator.language){return i==="en"||i==="zh"?i:u.toLowerCase().startsWith("zh")?"zh":"en"}const Zb={en:{daemonWorkspace:"Daemon workspace",sameOriginAccess:"same-origin daemon access",sessions:"Sessions",collapseSessionSidebar:"Hide sessions sidebar",expandSessionSidebar:"Show sessions sidebar",collapseControlsSidebar:"Hide controls sidebar",expandControlsSidebar:"Show controls sidebar",newSession:"New session",claudeSession:"Claude session",codexSession:"Codex session",workingDirectory:"Working directory",workingDirectoryPlaceholder:"~/project or /repo",browseDirectories:"Browse directories",chooseThisFolder:"Choose this folder",newFolder:"New folder",newFolderPlaceholder:"Folder name",folderCreateFailed:"Could not create folder.",loadingDirectories:"Loading folders...",remoteFolderEmpty:"No folders in this directory.",create:"Create",searchSessions:"Search sessions",sessionFilters:"Session filters",filterViewOptions:"View options",resetFilters:"Reset filters",searchTimeRangeLabel:"Search within",searchTimeRangeLast7Days:"Last 7 days",searchTimeRangeLast30Days:"Last 30 days",searchTimeRangeLast90Days:"Last 90 days",searchTimeRangeAllTime:"All time",agentFilterLabel:"Assistant",agentFilterAll:"All assistants",agentFilterClaude:"Claude",agentFilterCodex:"Codex",groupByFolder:"Group by folder",hideArchived:"Active only",noSessionsMatch:"No sessions match this view.",loadMore:"Load more",open:"Open",details:"Details",copyResumeCommand:"Copy resume command",viewChanges:"View changes",pin:"Pin",unpin:"Unpin",archive:"Archive",unarchive:"Unarchive",delete:"Delete",connectedTo:i=>`Connected to ${i}`,connectingToDaemon:"Opening secure daemon channel",reconnectingToDaemon:"Reconnecting to daemon",connectionFailed:"Connection failed",pairingFailed:"Pairing failed",pairingLinkExpired:"This pairing link has expired. Open a fresh Vibelet Web link from the host computer.",missingPair:"Open the link printed by vibelet",pendingActions:"Pending Actions",noPendingActions:"No approvals or questions.",approvalRequired:"Approval Required",inputNeeded:"Input Needed",deny:"Deny",approve:"Approve",cancel:"Cancel",submit:"Submit",clear:"Clear",restoreSnapshot:"Restore daemon snapshot",refreshSessions:"Refresh sessions",openDaemonWebLink:"Open the daemon web link",openDaemonWebLinkHint:"Run Vibelet with remote access and open the Web UI link printed by the CLI.",loadingHistory:"Loading history",noVisibleMessages:"No visible messages yet",startDaemonSession:"Start a daemon session",emptyChatHint:"Send a prompt from this browser; the daemon keeps Claude or Codex running on the host machine.",agentResponding:"Agent is responding",scrollToLatest:"Scroll to latest",currentDevice:"Current Device",daemon:"Daemon",status:"Status",active:"active",notPaired:"not paired",forget:"Forget",notifications:"Notifications",browserAlerts:"Browser alerts",notificationsBlocked:"Notifications are blocked by this browser.",savedDevices:"Saved Devices",noSavedDevices:"No saved devices yet.",notConnectedRecently:"not connected recently",desktopConnector:"Desktop Connector",version:"Version",checking:"checking...",unknown:"unknown",update:"Update",updating:"Updating...",restart:"Restart",restarting:"Restarting...",language:"Language",displayLanguage:"Display language",followSystem:"Auto",english:"English",chinese:"中文",skills:"Skills",closeSkills:"Close skills",noSkillsFound:"No skills found.",messagePlaceholder:"Type a message or $ for skills...",uploadFiles:"Upload files",showQuickReplies:"Show quick replies",hideQuickReplies:"Hide quick replies",removeAttachment:"Remove attachment",send:"Send",sendShortcut:"Send shortcut",sendShortcutEnter:"Enter",sendShortcutEnterDescription:"Enter sends; Shift+Enter inserts a newline",sendShortcutModEnter:"Mod+Enter",sendShortcutModEnterDescription:"Cmd/Ctrl+Enter sends; Enter inserts a newline",uploading:"Uploading...",commands:"Commands",closeCommands:"Close commands",noCommandsFound:"No commands found.",directoryTags:"Directory tags",editDirectoryTags:"Edit directory tags",browseFolder:"Browse folder",archiveSyncTitle:"Archive sync",archiveSyncBody:"Sync archived sessions with the paired desktop connector.",archiveSyncSynced:"Archive state is synced with this connector.",archiveSyncSkippedState:"Archive sync was skipped for this connector.",archiveSyncPushReplace:"Use browser",archiveSyncPushMerge:"Merge",archiveSyncPull:"Use desktop",archiveSyncSkip:"Skip",archiveSyncSyncing:"Syncing...",archiveSyncSuccessPush:"Desktop archive updated with {n} sessions.",archiveSyncSuccessMerge:"Merged. {n} archived sessions now stored on the paired computer.",archiveSyncSuccessPull:"Pulled {n} archived sessions from the paired computer.",archiveSyncSkipped:"Skipped archive sync for this connector.",archiveSyncFailedTimeout:"Sync timed out. Please try again.",archiveSyncFailedDisconnected:"Not connected to a paired computer.",archiveSyncFailedGeneric:"Sync failed: {error}"},zh:{daemonWorkspace:"Daemon 工作区",sameOriginAccess:"同源 daemon 访问",sessions:"会话",collapseSessionSidebar:"隐藏会话侧栏",expandSessionSidebar:"显示会话侧栏",collapseControlsSidebar:"隐藏控制侧栏",expandControlsSidebar:"显示控制侧栏",newSession:"新建会话",claudeSession:"Claude 会话",codexSession:"Codex 会话",workingDirectory:"工作目录",workingDirectoryPlaceholder:"~/project 或 /repo",browseDirectories:"浏览目录",chooseThisFolder:"选择此文件夹",newFolder:"新建文件夹",newFolderPlaceholder:"文件夹名称",folderCreateFailed:"无法创建文件夹。",loadingDirectories:"正在加载文件夹...",remoteFolderEmpty:"此目录下没有文件夹。",create:"创建",searchSessions:"搜索会话",sessionFilters:"会话筛选",filterViewOptions:"视图选项",resetFilters:"重置筛选",searchTimeRangeLabel:"搜索范围",searchTimeRangeLast7Days:"近 7 天",searchTimeRangeLast30Days:"近 30 天",searchTimeRangeLast90Days:"近 90 天",searchTimeRangeAllTime:"全部时间",agentFilterLabel:"助手",agentFilterAll:"全部助手",agentFilterClaude:"Claude",agentFilterCodex:"Codex",groupByFolder:"按文件夹分组",hideArchived:"仅显示活跃会话",noSessionsMatch:"没有符合条件的会话。",loadMore:"加载更多",open:"打开",details:"详情",copyResumeCommand:"复制恢复命令",viewChanges:"查看变更",pin:"置顶",unpin:"取消置顶",archive:"归档",unarchive:"取消归档",delete:"删除",connectedTo:i=>`已连接到 ${i}`,connectingToDaemon:"正在打开安全 daemon 通道",reconnectingToDaemon:"正在重连 daemon",connectionFailed:"连接失败",pairingFailed:"配对失败",pairingLinkExpired:"这个配对链接已过期。请在主机上重新打开 vibelet 打印的新 Web 链接。",missingPair:"打开 vibelet 打印的链接",pendingActions:"待处理",noPendingActions:"没有需要处理的审批或问题。",approvalRequired:"需要审批",inputNeeded:"需要输入",deny:"拒绝",approve:"同意",cancel:"取消",submit:"提交",clear:"清除",restoreSnapshot:"恢复 daemon 快照",refreshSessions:"刷新会话",openDaemonWebLink:"打开 daemon web 链接",openDaemonWebLinkHint:"用远程访问启动 Vibelet,然后打开 CLI 打印的 Web UI 链接。",loadingHistory:"正在加载历史",noVisibleMessages:"还没有可见消息",startDaemonSession:"开始 daemon 会话",emptyChatHint:"从浏览器发送提示词;daemon 会在主机上保持 Claude 或 Codex 运行。",agentResponding:"Agent 正在回复",scrollToLatest:"滚动到最新",currentDevice:"当前设备",daemon:"Daemon",status:"状态",active:"当前",notPaired:"未配对",forget:"忘记",notifications:"通知",browserAlerts:"浏览器提醒",notificationsBlocked:"浏览器已阻止通知。",savedDevices:"已保存设备",noSavedDevices:"还没有保存的设备。",notConnectedRecently:"最近未连接",desktopConnector:"桌面连接器",version:"版本",checking:"检查中...",unknown:"未知",update:"更新",updating:"更新中...",restart:"重启",restarting:"重启中...",language:"语言",displayLanguage:"显示语言",followSystem:"自动",english:"English",chinese:"中文",skills:"技能",closeSkills:"关闭技能",noSkillsFound:"没有找到技能。",messagePlaceholder:"输入消息,或输入 $ 选择技能...",uploadFiles:"上传文件",showQuickReplies:"显示快捷回复",hideQuickReplies:"隐藏快捷回复",removeAttachment:"移除附件",send:"发送",sendShortcut:"发送快捷键",sendShortcutEnter:"回车",sendShortcutEnterDescription:"回车发送;Shift+回车换行",sendShortcutModEnter:"Cmd/Ctrl+回车",sendShortcutModEnterDescription:"Cmd/Ctrl+回车发送;回车换行",uploading:"上传中...",commands:"命令",closeCommands:"关闭命令",noCommandsFound:"没有找到命令。",directoryTags:"目录标签",editDirectoryTags:"编辑目录标签",browseFolder:"浏览文件夹",archiveSyncTitle:"归档同步",archiveSyncBody:"将已归档会话与配对的桌面连接器同步。",archiveSyncSynced:"归档状态已与此连接器同步。",archiveSyncSkippedState:"此连接器已跳过归档同步。",archiveSyncPushReplace:"以浏览器为准",archiveSyncPushMerge:"合并",archiveSyncPull:"以桌面端为准",archiveSyncSkip:"跳过",archiveSyncSyncing:"同步中...",archiveSyncSuccessPush:"已用浏览器归档列表覆盖桌面端({n} 条)。",archiveSyncSuccessMerge:"已合并完成,桌面端当前共 {n} 条归档。",archiveSyncSuccessPull:"已从桌面端拉取 {n} 条归档到浏览器。",archiveSyncSkipped:"已跳过此连接器的归档同步。",archiveSyncFailedTimeout:"同步超时,请稍后重试。",archiveSyncFailedDisconnected:"当前未连接到配对电脑。",archiveSyncFailedGeneric:"同步失败:{error}"}},ly="vibelet.web.preferences",ay=8,Cp=12,Kb=10,iy={searchHistory:[],sinceFilter:"30d",hideArchived:!1,groupFolders:!1,collapsedFolders:{},agentFilter:"all",directoryTags:{},archiveSyncedDaemonIds:{},archiveSyncCardDismissedDaemonIds:{}},Xu={quickReplies:["Continue","Summarize the current state","Show the next step"],recentCwds:[],favoriteCwds:[],initialMessageHistory:[],sendShortcut:"enter"},Zu={leftSidebarCollapsed:!1,rightSidebarCollapsed:!1},xd={version:3,theme:"system",language:"system",sessionList:iy,composer:Xu,layout:Zu};function lc(i){return!!i&&typeof i=="object"&&!Array.isArray(i)}function jd(i,u){if(!Array.isArray(i))return[];const o=new Set,d=[];for(const y of i){if(typeof y!="string")continue;const g=y.trim();if(!(!g||o.has(g))&&(o.add(g),d.push(g),d.length>=u))break}return d}function Ap(i,u){if(!Array.isArray(i))return[];const o=new Set,d=[];for(const y of i)if(!(typeof y!="string"||y.trim().length===0||o.has(y))&&(o.add(y),d.push(y),d.length>=u))break;return d}function sy(i){return lc(i)?Object.fromEntries(Object.entries(i).filter(u=>typeof u[1]=="boolean")):{}}function Ep(i){return sy(i)}function Tp(i){return i==="all"||i==="7d"||i==="30d"||i==="90d"?i:"30d"}function wp(i){return i==="claude"||i==="codex"?i:"all"}function $b(i,u){if(!lc(i))return iy;const o=u!==2&&Tp(i.sinceFilter)==="all"&&typeof i.groupFolders=="boolean"&&i.groupFolders&&typeof i.hideArchived=="boolean"&&!i.hideArchived&&wp(i.agentFilter)==="all"&&(i.statusFilter===void 0||i.statusFilter==="all");return{searchHistory:jd(i.searchHistory,ay),sinceFilter:o?"30d":Tp(i.sinceFilter),hideArchived:typeof i.hideArchived=="boolean"?i.hideArchived:!1,groupFolders:o?!1:typeof i.groupFolders=="boolean"?i.groupFolders:!1,collapsedFolders:sy(i.collapsedFolders),agentFilter:wp(i.agentFilter),directoryTags:kb(i.directoryTags),archiveSyncedDaemonIds:Ep(i.archiveSyncedDaemonIds),archiveSyncCardDismissedDaemonIds:Ep(i.archiveSyncCardDismissedDaemonIds)}}function Jb(i){if(!lc(i))return Xu;const u=jd(i.quickReplies,20);return{quickReplies:u.length?u:Xu.quickReplies,recentCwds:Ap(i.recentCwds,Cp),favoriteCwds:Ap(i.favoriteCwds,Cp),initialMessageHistory:jd(i.initialMessageHistory,Kb),sendShortcut:i.sendShortcut==="modEnter"?"modEnter":Xu.sendShortcut}}function Fb(i){return lc(i)?{leftSidebarCollapsed:typeof i.leftSidebarCollapsed=="boolean"?i.leftSidebarCollapsed:Zu.leftSidebarCollapsed,rightSidebarCollapsed:typeof i.rightSidebarCollapsed=="boolean"?i.rightSidebarCollapsed:Zu.rightSidebarCollapsed}:Zu}function cy(i){return lc(i)?{version:3,theme:i.theme==="light"||i.theme==="dark"?i.theme:"system",language:i.language==="en"||i.language==="zh"?i.language:"system",sessionList:$b(i.sessionList,i.version),composer:Jb(i.composer),layout:Fb(i.layout)}:xd}function uy(i=window.localStorage){const u=i.getItem(ly);if(!u)return xd;try{return cy(JSON.parse(u))}catch{return xd}}function Qu(i,u=window.localStorage){u.setItem(ly,JSON.stringify(cy(i)))}function Ib(i,u){const o=u.trim();return o?[o,...i.filter(d=>d!==o)].slice(0,ay):i}function Wb(i,u){const o=u.trim().toLowerCase();return o?[Wn(i),i.cwd,i.agent,i.branch??"",...i.titleAliases??[]].some(d=>d.toLowerCase().includes(o)):!0}function Pb(i,u){return i.filter(o=>u.hideArchived&&o.archived||u.agentFilter!=="all"&&o.agent!==u.agentFilter?!1:Wb(o,u.search))}const ry="vibelet.web.sessionListCache",oy=120;function eS(i){return!!i&&typeof i=="object"&&!Array.isArray(i)}function tS(i){if(!eS(i)||typeof i.daemonId!="string"||!i.daemonId)return null;const u=Lp(i.page);return{daemonId:i.daemonId,page:{...u,sessions:u.sessions.slice(0,oy)},cachedAt:typeof i.cachedAt=="string"?i.cachedAt:new Date(0).toISOString()}}function nS(i,u=window.localStorage){if(!i)return null;try{const o=u.getItem(ry);if(!o)return null;const d=tS(JSON.parse(o));return d?.daemonId===i?d.page:null}catch{return null}}function lS(i,u,o=window.localStorage,d=new Date().toISOString()){if(!i)return;const y={daemonId:i,page:{...u,sessions:u.sessions.slice(0,oy)},cachedAt:d};o.setItem(ry,JSON.stringify(y))}const Ki=.9,aS=Math.round(280*Ki),iS=Math.round(560*Ki),sS=Math.round(260*Ki),cS=Math.round(520*Ki),uS=Math.round(366*Ki),rS=Math.round(330*Ki),Mp=15e3;function Ps(i){return typeof i=="string"&&i.trim().length>0?i:void 0}function oS(i){return i instanceof Error&&i.message==="auth_failed"}function dS(i,u){return i instanceof Fu&&i.code==="pair_window_expired"?u.pairingLinkExpired:i instanceof Error?i.message:String(i)}function _p(i,u,o){return Math.min(Math.max(Math.round(i),u),o)}function fS(){const i=v.useRef(null),u=v.useRef(async()=>{}),o=v.useRef(null),d=v.useRef(vd()),y=v.useRef(Bv()),g=v.useRef(uy()),A=v.useRef(yb()),Y=v.useRef(Sb()),U=v.useRef(d.current),C=v.useRef(y.current),G=v.useRef(A.current),q=v.useRef(null),Q=v.useRef(null),L=v.useRef(null),$=v.useRef({}),F=v.useRef(null),Ce=v.useRef(new Set),Ee=v.useRef(null),Qe=v.useRef(null),Z=v.useRef(new Set),O=v.useRef(null),we=v.useRef(0),pe=v.useRef(new Set),be=v.useRef({}),nt=v.useRef(!1),Te=v.useRef(!1),[Ve,lt]=v.useState("connecting"),[Fe,ut]=v.useState("Preparing Vibelet Web"),[Rt,J]=v.useState(null),[M,V]=v.useState(null),[ee,ge]=v.useState([]),[le,S]=v.useState({}),[R,X]=v.useState({}),[I,ie]=v.useState(),[ve,ce]=v.useState({}),[Xe,ze]=v.useState(),[ue,Ae]=v.useState(null),[Gt,ne]=v.useState(null),[qe,at]=v.useState([]),[dn,Pn]=v.useState(!1),[kt,ft]=v.useState(()=>new Set),[Ht,Ot]=v.useState({}),[Pt,qt]=v.useState({}),[rt,ht]=v.useState({}),[en,At]=v.useState({}),[Ze,fn]=v.useState("claude"),[He,Et]=v.useState(Rn),[K,yt]=v.useState(yd),[D,de]=v.useState(!1),[re,Ne]=v.useState(""),[Ke,Nn]=v.useState(""),[Bt,el]=v.useState(!1),[tl,fe]=v.useState(""),[Be,gt]=v.useState([]),[kn,dl]=v.useState(!1),[nl,vt]=v.useState(A.current),[ga,On]=v.useState(()=>Ws(A.current,null)),[Qt,fl]=v.useState(g.current),[hn,$i]=v.useState(""),[Ji,ac]=v.useState(g.current.sessionList.searchHistory),[Vt,Tt]=v.useState(g.current.sessionList.sinceFilter),[ot,hl]=v.useState(g.current.sessionList.hideArchived),[va,ic]=v.useState(g.current.sessionList.groupFolders),[Fi,sc]=v.useState(g.current.sessionList.collapsedFolders),[Xt,Wa]=v.useState(g.current.sessionList.agentFilter),ll=Qt.sessionList.directoryTags,Hl=Qt.sessionList.archiveSyncedDaemonIds,ba=Qt.sessionList.archiveSyncCardDismissedDaemonIds,ml=Qt.composer,[bt,Ii]=v.useState(Y.current),[al,Oe]=v.useState(!1),[Zt,ql]=v.useState("session"),[cc,Sa]=v.useState(!1),[Pa,xa]=v.useState(g.current.layout.leftSidebarCollapsed),[pl,Un]=v.useState(g.current.layout.rightSidebarCollapsed),[Kt,uc]=v.useState(uS),[ei,Wi]=v.useState(rS),[rc,ti]=v.useState({}),[tr,mn]=v.useState({}),[Pi,oc]=v.useState([]),[tn,Cn]=v.useState({path:Rn,entries:[],loading:!1,loaded:!1}),[ni,es]=v.useState(""),[Ie,li]=v.useState(null),[dc,ai]=v.useState(!1),[ts,fc]=v.useState("edit"),[ja,yl]=v.useState({statusText:"",loading:!1,action:null}),[$t,gl]=v.useState(dd),[Na,Bl]=v.useState(y.current),[pn,ii]=v.useState(d.current),[Ca,ns]=v.useState(null),[Aa,An]=v.useState(null),En=v.useMemo(()=>Lu(Lu(ee,Object.values(R)),Object.values(le)),[R,le,ee]),Ea=v.useMemo(()=>new Set(Object.keys(le)),[le]),ye=v.useMemo(()=>En.find(f=>f.sessionId===ue)??null,[ue,En]),il=v.useMemo(()=>ue&&Ht[ue]?Ht[ue]:Object.values(Ht)[0]??null,[ue,Ht]),nn=v.useMemo(()=>ue&&Pt[ue]?Pt[ue]:Object.values(Pt)[0]??null,[ue,Pt]),hc=ue?en[ue]??[]:[],si=rc[Ze]??[],ci=tr[Ze],ui=v.useMemo(()=>Pb(En,{search:hn,hideArchived:ot,agentFilter:Xt}),[En,ot,hn,Xt]),ln=v.useMemo(()=>zv(ui),[ui]),vl=Sd(Qt.language),me=Zb[vl],Ta=["workspace",Pa&&"left-sidebar-collapsed"].filter(Boolean).join(" "),nr=["wide-main",pl&&"right-sidebar-collapsed"].filter(Boolean).join(" "),ls=v.useMemo(()=>({"--left-pane-width":`${Kt}px`,"--right-pane-width":`${ei}px`}),[Kt,ei]),ri=v.useCallback(f=>m=>{m.preventDefault();const p=m.clientX,N=Kt,B=ei,P=Lt=>{const mt=Lt.clientX-p;if(f==="left"){uc(_p(N+mt,aS,iS));return}Wi(_p(B-mt,sS,cS))},he=()=>{document.body.classList.remove("pane-resizing"),window.removeEventListener("pointermove",P),window.removeEventListener("pointerup",he)};document.body.classList.add("pane-resizing"),window.addEventListener("pointermove",P),window.addEventListener("pointerup",he,{once:!0})},[Kt,ei]);v.useEffect(()=>{o.current=ue},[ue]),v.useEffect(()=>{Ee.current=M},[M]),v.useEffect(()=>{pe.current=kt},[kt]),v.useEffect(()=>{C.current=Na},[Na]),v.useEffect(()=>{U.current=pn},[pn]),v.useEffect(()=>{G.current=nl},[nl]),v.useEffect(()=>{fl(f=>{const m={...f,sessionList:{...f.sessionList,searchHistory:Ji,sinceFilter:Vt,hideArchived:ot,groupFolders:va,collapsedFolders:Fi,agentFilter:Xt},layout:{...f.layout,leftSidebarCollapsed:Pa,rightSidebarCollapsed:pl}};return Qu(m),m})},[Fi,va,ot,Pa,pl,Ji,Xt,Vt]);const Xn=v.useCallback(f=>{On(f),vt(m=>{const p=Is(m,o.current,f);return G.current=p,Fs(p),p})},[]),wa=v.useCallback(f=>{vt(m=>{const p=Is(m,null,f);return G.current=p,Fs(p),p}),o.current||On(f)},[]),mc=v.useCallback(()=>{ac(f=>Ib(f,hn))},[hn]),pc=v.useCallback(f=>{Ii(f),Sp(f)},[]),lr=v.useCallback(f=>{fl(m=>{const p={...m,language:f};return Qu(p),p})},[]),oi=v.useCallback(f=>{fl(m=>{const p={...m,sessionList:f(m.sessionList)};return Qu(p),p})},[]),as=v.useCallback(f=>{fl(m=>{const p={...m,composer:f(m.composer)};return Qu(p),p})},[]);v.useEffect(()=>{ob();const f=db();f&&(wa(f),ql("session"),fb())},[wa]),v.useEffect(()=>{Zt==="admin"&&ii(vd())},[Zt]),v.useEffect(()=>()=>{O.current&&window.clearTimeout(O.current),Ie?.objectUrl&&URL.revokeObjectURL(Ie.objectUrl)},[Ie?.objectUrl]);const Ll=v.useCallback((f,m=!1)=>{ge(p=>Lu(m?p:[],f.sessions)),X(p=>{const N=new Set(f.sessions.map(P=>P.sessionId)),B=Object.fromEntries(Object.entries(p).filter(([P])=>!N.has(P)));return Object.keys(B).length===Object.keys(p).length?p:B}),ie(f.nextCursor),ze(f.inventoryVersion),f.folderCounts&&ce(f.folderCounts),m||lS(Ee.current?.daemonId,f),ut(f.inventoryBackfillInFlight?"Connected, indexing local sessions":"Connected")},[]),di=v.useCallback(async f=>{const m=i.current;if(!m?.isConnected)return;const p=[...new Set(f.map(N=>N.cwd).filter(Boolean))];if(p.length!==0)try{const N=await m.request({action:"sessions.gitMetadata",id:m.makeId("git"),cwds:p});ge(B=>B.map(P=>({...P,branch:N.branches[P.cwd]??P.branch,diffStat:N.diffStats[P.cwd]??P.diffStat})))}catch{}},[]),fi=v.useCallback((f,m=pe.current)=>{const p=i.current;if(!p?.isConnected||f.length===0)return;const N=Xb(f,$.current,m,Ce.current);for(const B of N)Ce.current.add(B.sessionId),p.request({action:"session.history",id:p.makeId("history_prefetch"),sessionId:B.sessionId,agent:B.agent},{timeoutMessage:"History prefetch timed out.",timeoutMs:Mp}).catch(()=>{}).finally(()=>{Ce.current.delete(B.sessionId)})},[]),yc=v.useCallback(f=>{const m=Qv(f,{currentActiveSessionId:o.current,currentCwd:He});if(Ll(m.page,!1),ie(m.page.nextCursor),ze(m.page.inventoryVersion),m.messages&&m.activeSessionId){$.current=Np($.current,m.activeSessionId,m.messages);const p=$.current[m.activeSessionId]??[];L.current=m.activeSessionId,at(p)}Ae(m.activeSessionId),m.activeAgent&&fn(m.activeAgent),m.activeCwd&&Et(m.activeCwd),m.activeApprovalMode&&yt(m.activeApprovalMode),m.questionAnswers&&ht(m.questionAnswers),pe.current=new Set(m.respondingSessionIds),ft(pe.current),Ot(m.pendingApprovals),qt(m.pendingQuestions),At(m.pendingQueues),di(f.sessions),fi(f.sessions,new Set(m.respondingSessionIds))},[He,di,fi,Ll]),is=v.useCallback(async()=>{const f=i.current;if(!f?.isConnected)return;const m=await f.request({action:"reconnect.snapshot",id:f.makeId("snapshot"),activeSessionId:o.current??void 0,activeAgent:ye?.agent??Ze,agent:Xt==="all"?void 0:Xt,search:hn.trim()||void 0,sinceMs:np(Vt),hideArchived:ot,skipGitMetadata:!0});yc(m.snapshot)},[ye?.agent,Ze,yc,ot,hn,Xt,Vt]),it=v.useCallback(async f=>{const m=i.current;if(!m?.isConnected)return;const p=await m.request({action:"sessions.list",id:m.makeId(f?.append?"sessions_more":"sessions"),limit:Cv,cursor:f?.cursor,agent:Xt==="all"?void 0:Xt,search:hn.trim()||void 0,sinceMs:np(Vt),hideArchived:ot,skipGitMetadata:!0,force:f?.force}),N=Lp(p);Ll(N,f?.append),Ae(B=>B??N.sessions[0]?.sessionId??null),di(N.sessions),fi(N.sessions)},[ot,di,fi,hn,Xt,Ll,Vt]),rn=v.useCallback(f=>f&&Q.current&&Q.current!==f?!1:(Q.current=null,Pn(!1),!0),[]),Zn=v.useCallback(f=>er($.current,f)?(L.current=f,at($.current[f]??[]),!0):!1,[]),hi=v.useCallback((f,m,p)=>{$.current=Np($.current,f,m);const N=$.current[f]??[];return p?.renderActive!==!1&&f===o.current&&(L.current=f,at(N)),N},[]),Kn=v.useCallback((f,m)=>{$.current=Bb($.current,f,m),f===o.current&&(L.current=f,at($.current[f]??[]))},[]),mi=v.useCallback((f,m)=>{$.current=Lb($.current,f,m),f===o.current&&(L.current=f,at($.current[f]??[]))},[]),pi=v.useCallback((f,m)=>{Kn(f,[{role:"assistant",type:"info",content:m,timestamp:new Date().toISOString()}])},[Kn]),Ma=v.useCallback(f=>{$.current=Gb($.current,f)},[]),gc=v.useCallback(async f=>{const m=i.current;if(m?.isConnected){if(Zn(f.sessionId)){rn(f.sessionId);return}Q.current=f.sessionId,Pn(!0),J(null);try{await m.request({action:"session.history",id:m.makeId("history"),sessionId:f.sessionId,agent:f.agent},{timeoutMessage:"History request timed out.",timeoutMs:Mp})}catch(p){Q.current===f.sessionId&&J(p instanceof Error?p.message:String(p))}finally{rn(f.sessionId)}}},[rn,Zn]),Yl=v.useCallback(async(f,m)=>{const p=i.current;if(p?.isConnected)try{const[N,B,P]=await Promise.all([p.request({action:"models.list",id:p.makeId("models"),agent:f}),p.request({action:"usage.limits.fetch",id:p.makeId("usage"),agent:f}),p.request({action:"skills.list",id:p.makeId("skills"),cwd:m||void 0})]);ti(he=>({...he,[f]:N.options??[]})),mn(he=>({...he,[f]:B})),oc(Array.isArray(P.skills)?P.skills:[])}catch(N){J(N instanceof Error?N.message:String(N))}},[]),Gl=v.useCallback((f,m,p="info")=>{const N=i.current;N?.isConnected&&N.request({action:"log.report",id:N.makeId("log"),entries:[{level:p,event:f,data:m,ts:new Date().toISOString()}]}).catch(()=>{})},[]),Ql=v.useCallback(async(f=Ee.current)=>{if(!f){gl(dd);return}gl(m=>({...m,loading:!0,error:null}));try{const m=await fetch(Eb(f,window.location,{sameOrigin:!1}),{cache:"no-store"});if(!m.ok)throw new Error(`HTTP ${m.status}`);const p=Tb(await m.json().catch(()=>null));gl({...p,loading:!1,error:null})}catch{gl(m=>({...m,loading:!1,error:"Could not read connector version."}))}},[]);v.useEffect(()=>{Zt==="admin"&&Ve==="connected"&&Ql()},[Zt,Ve,Ql]);const yi=v.useCallback(f=>{Bl(m=>{const p={...m,...f};return C.current=p,Lv(p),p})},[]),$n=v.useCallback((f,m)=>{!f||!m||f===m||(Ae(p=>p===f?m:p),q.current===f&&(q.current=m),L.current===f&&(L.current=m),$.current=Yb($.current,f,m),pe.current=lp(pe.current,f,m),ft(p=>lp(p,f,m)),Ot(p=>sd(p,f,m)),qt(p=>sd(p,f,m)),At(p=>sd(p,f,m)),X(p=>{const N=p[f];if(!N)return p;const B={...p};return delete B[f],B[m]={...N,sessionId:m},B}),vt(p=>{const N=gb(p,f,m);return N!==p&&(G.current=N,Fs(N)),N}))},[]),vc=v.useCallback(async(f,m,p)=>{const N=typeof p.sessionId=="string"?p.sessionId:f,B=typeof p.oldSessionId=="string"?p.oldSessionId:f;B&&N&&B!==N&&$n(B,N),m.name==="clear"?(hi(N,[]),At(P=>{const he={...P};return delete he[N],delete he[B],he}),Ot(P=>{const he={...P};return delete he[N],delete he[B],he}),qt(P=>{const he={...P};return delete he[N],delete he[B],he}),Ae(N)):m.name==="new"?(Ae(N),L.current=N,Zn(N)):m.name==="exit"?(ge(P=>P.map(he=>he.sessionId===N?{...he,archived:!0}:he)),Ae(null),L.current=null,q.current=null,at([])):m.name==="goal"&&"goal"in p&&pi(N,i1(p.goal)),p.turnStarted&&!p.queued&&(pe.current=new Set(pe.current).add(N),ft(P=>new Set(P).add(N))),await it({force:!0})},[pi,$n,Zn,hi,it]),gi=v.useCallback((f,m,p,N,B)=>{const P=C.current;if(!P[N]||Z.current.has(f))return;Gv(m,p,{onClick:()=>{window.focus(),B&&Ae(B)},permission:U.current,settings:P,tag:f,visibilityState:document.visibilityState})&&Z.current.add(f)},[]),bc=v.useCallback(f=>{switch(f.type){case"response":{if(Vu(f.data)&&typeof f.data.oldSessionId=="string"&&typeof f.data.sessionId=="string"){const{oldSessionId:m,sessionId:p}=f.data;$n(m,p)}break}case"sessions.changed":it({force:!0}).catch(m=>J(m instanceof Error?m.message:String(m)));break;case"session.history":rn(f.sessionId),hi(f.sessionId,qb(f.messages,f.partialReplyText)),f.sessionId===o.current&&(At(m=>({...m,[f.sessionId]:f.pendingQueue??[]})),Ot(m=>{const p={...m};return f.pendingApproval?p[f.sessionId]={type:"approval.request",sessionId:f.sessionId,...f.pendingApproval}:delete p[f.sessionId],p}),qt(m=>{const p={...m};if(f.pendingQuestion){const N={type:"question.request",sessionId:f.sessionId,...f.pendingQuestion};p[f.sessionId]=N,ht(gd(N))}else delete p[f.sessionId];return p})),ft(m=>{const p=new Set(m);return f.isResponding||f.externallyResponding?(p.add(f.sessionId),pe.current=new Set(p)):(p.delete(f.sessionId),pe.current=new Set(p)),p});break;case"session.history.append":Kn(f.sessionId,f.messages);break;case"text.delta":mi(f.sessionId,f.content),pe.current=new Set(pe.current).add(f.sessionId),ft(m=>new Set(m).add(f.sessionId));break;case"tool.call":Kn(f.sessionId,[{role:"tool",type:"info",toolName:f.toolName,toolInput:f.input,content:`Tool call: ${f.toolName}
|