waterplane 0.1.15 → 0.1.17
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/CHANGELOG.md +23 -0
- package/README.md +2 -0
- package/node_modules/@waterplane/shared/dist/exposure.js +1 -0
- package/node_modules/@waterplane/shared/dist/exposure.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/working.d.ts +18 -0
- package/node_modules/@waterplane/shared/dist/working.js +80 -9
- package/node_modules/@waterplane/shared/dist/working.js.map +1 -1
- package/node_modules/@waterplane/shared/dist/yamlfront.d.ts +8 -0
- package/node_modules/@waterplane/shared/dist/yamlfront.js +23 -5
- package/node_modules/@waterplane/shared/dist/yamlfront.js.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/packages/host/dist/context.js +15 -5
- package/packages/host/dist/context.js.map +1 -1
- package/packages/web/dist/assets/{demo-TmjAByxC.js → demo-DkCtg-SJ.js} +1 -1
- package/packages/web/dist/assets/{index-CVkUvHP9.js → index-BYRdfW3T.js} +1 -1
- package/packages/web/dist/assets/index-DcZrEQNl.css +1 -0
- package/packages/web/dist/assets/{shared-PjlyyA4P.js → shared-DjRRLGfw.js} +4 -4
- package/packages/web/dist/assets/{sheets-DqpgjB8i.js → sheets-BGN7Cs73.js} +4 -4
- package/packages/web/dist/build-id.txt +1 -1
- package/packages/web/dist/buildstamp.json +1 -1
- package/packages/web/dist/index.html +5 -5
- package/packages/web/dist/sw.js +2 -2
- package/release.json +3 -3
- package/tools/repohealth/lang/typescript-resolve.mjs +4 -2
- package/packages/web/dist/assets/index-CpdyS6Xe.css +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Aa as e,As as t,Bi as n,Bl as r,Bn as i,Bs as a,Cs as o,Ct as s,Dt as c,Et as l,F as u,Fl as d,Fs as f,Go as p,Gs as m,Hs as h,I as g,Ii as _,Is as v,Jo as y,Js as b,Jt as x,Ko as S,L as C,Ls as w,Ma as T,Ms as E,N as D,Na as O,Ns as k,O as ee,Oa as A,Os as te,P as j,Pa as ne,Pl as M,Ps as N,Qa as P,Rl as re,Rs as F,Sl as I,Ss as L,St as ie,Tl as R,Ts as ae,Uo as z,Vn as B,Vo as oe,Ws as se,Xi as ce,Xn as le,Xo as V,Y as H,Yi as ue,Yt as de,ac as fe,at as pe,bi as me,bs as he,bt as ge,ca as _e,cc as ve,cr as ye,du as be,er as xe,eu as Se,f as Ce,ft as we,gr as Te,ht as Ee,j as De,ja as Oe,js as ke,k as Ae,ka as je,ks as Me,l as Ne,la as Pe,lc as Fe,ls as Ie,mi as Le,mo as Re,mt as ze,ot as Be,qa as Ve,qi as He,qo as Ue,qs as We,ru as Ge,sc as Ke,ss as qe,to as Je,uc as Ye,uu as Xe,vc as Ze,vs as Qe,ws as $e,wu as et,xc as tt,xs as nt,xt as rt,ys as it,yt as at,yu as ot,zl as st,zs as ct}from"./shared-PjlyyA4P.js";import{C as lt,S as ut,T as dt,a as ft,b as pt,f as mt,l as ht,m as U,n as gt,p as _t,t as vt,u as yt,v as bt,w as xt,x as St,y as Ct}from"./demo-TmjAByxC.js";import{$ as wt,$a as Tt,$c as W,$d as Et,$i as Dt,$l as Ot,$n as kt,$o as At,$r as jt,$s as Mt,$t as Nt,$u as Pt,A as Ft,Aa as It,Ac as Lt,Ad as Rt,Ai as zt,Al as Bt,An as Vt,Ao as Ht,Ar as Ut,As as Wt,At as Gt,Au as Kt,B as qt,Ba as Jt,Bc as Yt,Bd as Xt,Bi as Zt,Bl as Qt,Bn as $t,Bo as en,Br as tn,Bs as nn,Bt as rn,Bu as an,C as on,Ca as sn,Cc as cn,Cd as ln,Ci as un,Cl as G,Cn as dn,Co as fn,Cr as pn,Cs as mn,Ct as hn,Cu as gn,D as _n,Da as vn,Dc as yn,Dd as bn,Di as xn,Dl as Sn,Dn as Cn,Do as wn,Dr as Tn,Ds as En,Dt as Dn,Du as On,E as kn,Ea as An,Ec as jn,Ed as Mn,Ei as Nn,El as Pn,En as Fn,Eo as In,Er as Ln,Es as Rn,Et as zn,Eu as Bn,F as Vn,Fa as Hn,Fc as Un,Fd as Wn,Fi as Gn,Fl as Kn,Fn as qn,Fo as Jn,Fr as Yn,Fs as Xn,Ft as Zn,Fu as Qn,G as $n,Ga as er,Gc as K,Gd as tr,Gi as nr,Gl as rr,Gn as ir,Go as ar,Gs as or,Gt as sr,Gu as cr,H as lr,Ha as ur,Hc as dr,Hd as fr,Hi as pr,Hl as mr,Hn as hr,Ho as gr,Hr as _r,Hs as vr,Ht as yr,Hu as br,I as xr,Ia as Sr,Ic as Cr,Id as wr,Ii as Tr,Il as Er,In as Dr,Io as Or,Ir as kr,Is as Ar,It as jr,Iu as Mr,J as Nr,Jc as Pr,Jd as Fr,Ji as Ir,Jl as Lr,Jn as Rr,Jo as zr,Js as Br,Jt as Vr,Ju as Hr,K as Ur,Ka as Wr,Kc as q,Kd as Gr,Ki as Kr,Kl as qr,Kn as Jr,Ko as Yr,Kr as Xr,Ks as Zr,Kt as Qr,Ku as $r,L as ei,La as ti,Lc as ni,Ld as ri,Li as ii,Ll as ai,Ln as oi,Lo as si,Lr as ci,Ls as li,Lt as ui,Lu as di,M as fi,Ma as pi,Mc as mi,Md as hi,Mi as gi,Ml as _i,Mn as vi,Mo as yi,Mr as bi,Ms as xi,Mt as Si,Mu as Ci,N as wi,Na as Ti,Nc as Ei,Nd as Di,Ni as Oi,Nl as ki,Nn as Ai,No as ji,Nr as Mi,Ns as Ni,Nt as Pi,Nu as Fi,O as Ii,Oa as Li,Oc as Ri,Od as zi,Oi as Bi,Ol as Vi,On as Hi,Oo as Ui,Or as Wi,Os as Gi,Ot as Ki,Ou as qi,P as Ji,Pa as Yi,Pc as Xi,Pd as Zi,Pi as Qi,Pl as $i,Pn as ea,Po as ta,Pr as na,Ps as ra,Pt as ia,Pu as aa,Q as oa,Qa as sa,Qc as ca,Qd as la,Qi as ua,Ql as da,Qn as fa,Qo as pa,Qr as ma,Qs as ha,Qt as ga,Qu as _a,R as va,Ra as ya,Rc as ba,Rd as xa,Ri as Sa,Rl as Ca,Rn as wa,Ro as Ta,Rr as Ea,Rs as Da,Rt as Oa,Ru as ka,S as Aa,Sa as ja,Sc as Ma,Sd as Na,Si as Pa,Sl as Fa,Sn as Ia,So as La,Sr as Ra,Ss as za,St as Ba,Su as Va,T as Ha,Ta as Ua,Tc as Wa,Td as Ga,Ti as Ka,Tl as qa,Tn as Ja,To as Ya,Tr as Xa,Ts as Za,Tt as Qa,Tu as $a,U as eo,Ua as to,Uc as no,Ud as ro,Ui as io,Ul as ao,Un as oo,Uo as so,Ur as co,Us as lo,Ut as uo,Uu as fo,V as po,Va as mo,Vc as ho,Vd as go,Vi as _o,Vl as vo,Vn as yo,Vo as bo,Vr as xo,Vs as So,Vt as Co,Vu as wo,W as To,Wa as Eo,Wc as Do,Wd as Oo,Wi as ko,Wl as Ao,Wn as jo,Wo as Mo,Wr as No,Ws as Po,Wt as Fo,Wu as Io,X as Lo,Xa as Ro,Xc as zo,Xd as Bo,Xi as Vo,Xl as Ho,Xn as Uo,Xo as Wo,Xr as Go,Xs as Ko,Xt as qo,Xu as Jo,Y as Yo,Ya as Xo,Yc as Zo,Yd as Qo,Yi as $o,Yl as es,Yn as ts,Yo as ns,Yr as rs,Ys as is,Yt as as,Yu as os,Z as ss,Za as cs,Zc as ls,Zd as us,Zi as ds,Zl as fs,Zn as ps,Zo as ms,Zr as hs,Zs as gs,Zt as _s,Zu as vs,_ as ys,_a as bs,_c as xs,_d as Ss,_i as Cs,_l as ws,_n as Ts,_o as Es,_r as Ds,_s as Os,_t as ks,_u as As,a as js,aa as Ms,ac as Ns,ad as Ps,af as Fs,ai as Is,al as Ls,an as Rs,ao as zs,ar as Bs,as as Vs,at as Hs,au as Us,b as Ws,ba as Gs,bc as Ks,bd as qs,bi as Js,bl as Ys,bn as Xs,bo as Zs,br as Qs,bs as $s,bt as ec,bu as tc,c as nc,ca as rc,cc as ic,cd as ac,cf as oc,ci as sc,cl as cc,cn as lc,co as uc,cr as dc,cs as fc,ct as pc,cu as mc,d as hc,da as gc,dc as _c,dd as vc,di as yc,dl as bc,dn as xc,do as Sc,dr as Cc,ds as wc,dt as Tc,du as Ec,ea as Dc,ec as Oc,ed as kc,ef as Ac,ei as jc,el as Mc,en as Nc,eo as Pc,er as Fc,es as Ic,et as Lc,eu as Rc,f as zc,fa as Bc,fc as Vc,fd as Hc,fi as Uc,fl as Wc,fn as Gc,fo as Kc,fr as qc,fs as Jc,ft as Yc,fu as Xc,g as Zc,ga as Qc,gc as $c,gd as el,gi as tl,gl as nl,gn as rl,go as il,gr as al,gs as ol,gt as sl,gu as cl,h as ll,ha as ul,hc as dl,hd as fl,hi as pl,hl as ml,hn as hl,ho as gl,hr as _l,hs as vl,ht as yl,hu as bl,i as xl,ia as Sl,ic as J,id as Cl,if as wl,ii as Tl,il as El,in as Dl,io as Ol,ir as kl,it as Al,iu as jl,j as Ml,ja as Nl,jc as Pl,jd as Fl,ji as Il,jl as Ll,jn as Rl,jo as zl,jr as Bl,js as Vl,jt as Hl,ju as Ul,k as Wl,ka as Gl,kc as Kl,kd as ql,ki as Jl,kl as Yl,kn as Xl,ko as Zl,kr as Ql,ks as $l,kt as eu,ku as tu,l as nu,la as ru,lc as iu,ld as au,lf as ou,li as su,ll as cu,ln as lu,lo as uu,lr as du,ls as fu,lt as pu,lu as mu,m as hu,ma as gu,mc as _u,md as vu,mi as yu,ml as bu,mn as xu,mo as Su,mr as Cu,ms as wu,mt as Tu,mu as Eu,n as Du,na as Ou,nc as ku,nd as Au,nf as ju,ni as Mu,nl as Nu,nn as Pu,no as Fu,nr as Iu,ns as Lu,nt as Ru,nu as zu,o as Bu,oa as Vu,oc as Hu,od as Uu,of as Wu,oi as Gu,ol as Ku,on as qu,oo as Ju,or as Yu,os as Xu,ot as Zu,ou as Qu,p as $u,pa as ed,pc as td,pd as nd,pi as rd,pl as id,pn as ad,po as od,pr as sd,ps as cd,pt as ld,pu as ud,q as dd,qa as fd,qc as pd,qd as md,qi as hd,ql as gd,qn as _d,qo as Y,qr as vd,qs as yd,qt as bd,qu as xd,r as Sd,ra as Cd,rc as wd,rd as Td,rf as Ed,ri as Dd,rl as Od,rn as kd,ro as Ad,rr as jd,rs as Md,rt as Nd,ru as Pd,s as Fd,sa as Id,sc as Ld,sd as Rd,sf as zd,si as Bd,sl as Vd,sn as Hd,so as Ud,sr as Wd,ss as Gd,st as Kd,su as qd,t as Jd,ta as Yd,tc as Xd,td as Zd,tf as Qd,ti as $d,tl as ef,tn as tf,to as nf,tr as rf,ts as af,tt as of,tu as sf,u as cf,ua as lf,uc as uf,ud as df,uf as ff,ui as pf,ul as mf,un as hf,uo as gf,ur as _f,us as vf,ut as yf,uu as bf,v as xf,va as Sf,vc as Cf,vd as wf,vi as Tf,vl as Ef,vn as Df,vo as Of,vr as kf,vs as Af,vt as jf,vu as Mf,w as Nf,wa as Pf,wc as Ff,wd as If,wi as Lf,wl as Rf,wn as zf,wo as Bf,wr as Vf,ws as Hf,wt as Uf,wu as Wf,x as Gf,xa as Kf,xc as qf,xd as Jf,xi as Yf,xl as Xf,xn as Zf,xo as Qf,xr as $f,xs as ep,xt as tp,xu as np,y as rp,ya as ip,yc as ap,yd as op,yi as sp,yl as cp,yn as lp,yo as up,yr as dp,ys as fp,yt as pp,yu as mp,z as hp,za as gp,zc as _p,zd as vp,zi as yp,zl as bp,zn as xp,zo as Sp,zr as Cp,zs as wp,zt as Tp,zu as Ep}from"./sheets-DqpgjB8i.js";import{i as Dp,n as Op,r as kp,t as Ap}from"./react-CoSyT_xY.js";import{$i as jp,$r as Mp,A as Np,Ar as Pp,At as Fp,B as Ip,Ci as Lp,Cn as Rp,Cr as zp,Ct as Bp,D as Vp,Fr as Hp,Gn as Up,Gr as Wp,Gt as Gp,Hi as Kp,Hr as qp,Ht as Jp,In as Yp,It as Xp,J as Zp,Jr as Qp,K as $p,Ki as em,Kn as tm,L as nm,Li as rm,Lt as im,M as am,Mi as om,Mn as sm,Mr as cm,Nn as lm,Nr as um,O as dm,Or as fm,Ot as pm,P as mm,Pi as hm,Pr as gm,Pt as _m,Qi as vm,Qt as ym,R as bm,Rr as xm,Rt as Sm,S as Cm,Si as wm,St as Tm,Ti as Em,Tn as Dm,Ui as Om,Un as km,Ur as Am,Ut as jm,Vn as Mm,W as Nm,Wn as Pm,X as Fm,Xi as Im,Xt as Lm,Y as Rm,Yi as zm,Yr as Bm,Yt as Vm,Z as Hm,Zi as Um,Zr as Wm,_ as Gm,b as Km,bi as qm,bn as Jm,bt as Ym,c as Xm,cr as Zm,di as Qm,dr as $m,en as eh,er as th,et as nh,fi as rh,fn as ih,g as ah,gi as oh,gn as sh,gt as ch,h as lh,hi as uh,hn as dh,i as X,in as fh,it as ph,jn as mh,jr as hh,k as gh,ki as _h,kn as vh,kr as yh,kt as bh,ln as xh,m as Sh,mi as Ch,mn as wh,mt as Th,ni as Eh,nn as Dh,on as Oh,or as kh,ot as Ah,pn as jh,pr as Mh,qi as Nh,qr as Ph,r as Fh,ra as Ih,ri as Lh,rt as Rh,s as zh,si as Bh,ta as Vh,ti as Hh,tr as Uh,u as Wh,ui as Gh,ut as Kh,vi as qh,vn as Jh,wi as Yh,wn as Xh,xn as Zh,xt as Qh,yi as $h,yn as eg,z as tg,zi as ng,zn as rg,zt as ig}from"./icons-B48F-4nA.js";import{n as ag,t as og}from"./xterm-C8zLTNGk.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),ft(Ac())||ff(),Ac()&&Fs(Wu());var Z=Dp(),sg=Op();async function cg(e,t){let[n,r]=await Promise.all([el.artifacts(e,`outbox`,void 0,{signal:t}).then(e=>e.files).catch(()=>[]),el.inbox(e,t).catch(()=>[])]);return[...n,...r].map(e=>e.relPath).filter(Boolean)}function lg(e,t){return tc(e??``,t=>cg(e,t),{enabled:t&&!!e}).data??void 0}var ug={fresh:0,warm:1,heavy:2,steep:3},dg=60;function fg(e,t,n){if((ug[n[e]]??0)>=ug[t])return{notice:!1,next:n};let r={...n,[e]:t},i=Object.keys(r);if(i.length>dg)for(let e of i.slice(0,i.length-dg))delete r[e];return{notice:!0,next:r}}function pg(e,t,n){if(t==null){if(!(e in n))return{notice:!1,next:n};let t={...n};return delete t[e],{notice:!1,next:t}}if(n[e]===t)return{notice:!1,next:n};let r={...n,[e]:t},i=Object.keys(r);if(i.length>dg)for(let e of i.slice(0,i.length-dg))delete r[e];return{notice:!0,next:r}}var mg={warn:1,high:2};function hg(e,t,n){if(!t||(mg[n[e]]??0)>=mg[t])return{notice:!1,next:n};let r={...n,[e]:t},i=Object.keys(r);if(i.length>dg)for(let e of i.slice(0,i.length-dg))delete r[e];return{notice:!0,next:r}}function gg(){let e=q(`spendWarn`),t=dl();return n=>n?T(n.contextSpark?.costUsd,t,e):null}function _g(e){let t=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{if(!e||!e.running)return;let n=I(e.contextSpark,{lastTurnAt:e.lastTurnAt,turnActive:e.turnActive,now:Date.now()});if(!n||n.level===`fresh`)return;let r=t.current??=St(U.costNoticed,{}),{notice:i,next:a}=fg(e.id,n.level,r);i&&(t.current=a,dt(U.costNoticed,a),G(n.advice?`${n.note} ${n.advice}`:n.note))},[e]);let n=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{if(!e)return;let t=e.contextSpark,r=e.running?R(t?.liveAgentTok,t?.liveAgentAt,Date.now(),Yt()):null,i=n.current??=St(U.agentNoticed,{}),{notice:a,next:o}=pg(e.id,r?t?.liveAgentId??`agent`:null,i);o!==i&&(n.current=o,dt(U.agentNoticed,o)),a&&r&&G(r)},[e]);let r=(0,Z.useRef)(null),i=gg()(e);(0,Z.useEffect)(()=>{if(!e||!i)return;let t=r.current??=St(U.spendNoticed,{}),{notice:n,next:a}=hg(e.id,i.level,t);n&&(r.current=a,dt(U.spendNoticed,a),G(`${i.text} Marks are set in Settings › Sessions › spend marks. Nothing was stopped.`))},[e,i]);let a=(0,Z.useRef)(new Set);(0,Z.useEffect)(()=>{if(!e)return;let t=e.budget,{notice:n,next:r}=up(e.id,t?.verdict.state===`over`,a.current);a.current=r,n&&t&&G(Of(e.title,t))},[e])}function vg(e,t){let[n,r]=(0,Z.useState)(!1),i=(0,Z.useRef)(!1);return(0,Z.useEffect)(()=>{if(e){i.current=!0,r(!1);return}if(!i.current)return;i.current=!1,r(!0);let n=window.setTimeout(()=>r(!1),t);return()=>window.clearTimeout(n)},[e,t]),n}var yg=6e3,bg=2e4,xg=9e4,Sg=1500,Cg=5e3,wg=45e3,Tg=`pending:`,Eg=e=>!!e?.startsWith(Tg),Dg=e=>`${Tg}${e}`,Og=`${Tg}later:`,kg=e=>!!e?.startsWith(Og),Ag=e=>`${Og}${e}`,jg=(e,t)=>Eg(e)&&t?`create:${t}`:e;function Mg(e,t){let n=e.attempts??0,r=1+Math.min(3,n);return e.mode===`op`?(t==null?bg:Math.max(bg,Math.min(12e4,t*6)))*r:e.mode===`backlog`||e.mode===`upload`?yg*r:xg}function Ng(e,t,n=Date.now()){let r=(e.tries??0)+1;return{...e,status:`queued`,attempts:t?Math.max(0,(e.attempts??1)-1):e.attempts,tries:r,retryAt:n+F(r)}}function Pg(e){return e.pendingCreate&&e.holdUntilIdle?!0:void 0}function Fg(e,t,n){let r=new Set;for(let i of e)i.status!==`queued`||i.pendingCreate||(i.mode??`input`)===`input`&&(!t.has(i.sessionId)||n.has(i.sessionId))&&r.add(i.sessionId);return[...r]}function Ig(e,t){if(e.mode===`op`){let t=e.cwd.split(`/`).filter(Boolean).pop()??``;return e.op?.t===`schedule.run`?`Scheduled run, by hand`:e.sessionId===`fanout`?`Fan-out`:e.sessionId.startsWith(`fu:`)?`Fan-out follow-up`:e.sessionId.startsWith(`build:`)?`${t||`repo`} · builds`:`${t||`repo`} · new session`}let n=t.find(t=>t.id===e.sessionId);return n?`${n.title}${e.mode===`backlog`?` · backlog`:``}`:`${e.cwd.split(`/`).filter(Boolean).pop()??e.cwd}${e.mode===`backlog`?` · backlog`:` · session gone`}`}function Lg(e,t=Date.now()){let n=e.map(e=>e.sentAt??e.ts),r=n.length?Math.min(...n):t,i=Math.max(0,Math.round((t-r)/1e3)),a=e.length>1?` (${e.length})`:``,o=e.some(e=>e.mode===`upload`)?`Uploading`:`Sending`,s=e.filter(e=>e.status===`queued`&&e.retryAt!=null).map(e=>e.retryAt);if(s.length===e.length&&s.length){let n=Math.max(1e3,Math.min(...s)-t),r=n<6e4?`${Math.round(n/1e3)}s`:`${Math.round(n/6e4)} min`,i=e.length===1&&e[0].waitReason?` — ${e[0].waitReason}`:``;return`${o}${a}…${i?`${i};`:``} retrying in ${r}`}return`${o}${a}… ${i}s${i>=20?` — no receipt yet, will retry`:``}`}function Rg(e){let t=Gn(e).trim().replace(/\s+/g,` `);return t?t.length>64?`${t.slice(0,64)}…`:t:e.mode===`upload`?`a file`:`an action`}function zg(e){return new Set(e.filter(Ze).map(e=>e.id))}function Bg(e,t){for(let n of e)if(!t.has(n))return!0;return!1}function Vg(e,t){return{...e,status:`pending`,attempts:(e.attempts??0)+1,sentAt:t,firstTryAt:e.firstTryAt??t,waitReason:void 0}}function Hg(e){let t=e.firstTryAt;return e.mode===`upload`?null:e.mode===`op`?e.op?t==null?e.op:A(e.op,t):null:e.mode===`backlog`?{t:`backlog.add`,text:e.text,repoDir:e.cwd,label:e.label??e.text.slice(0,40),fire:e.fire,targetSessionId:e.targetSessionId,autoFire:e.autoFire,ackId:e.ackId,firstSentAt:t,steps:e.steps,resume:e.resume,...typeof e.closeWhenDone==`boolean`?{closeWhenDone:e.closeWhenDone}:{},...e.flagWhenDone?{flagWhenDone:!0}:{},...e.budget?{budget:e.budget}:{},...e.launch?{launch:e.launch}:{},...e.pastBudget?{pastBudget:!0}:{}}:e.answer?{t:`session.input`,id:e.sessionId,data:e.text,ackId:e.ackId,firstSentAt:t,expectPrompt:e.answer.fingerprint,promptSubmit:e.answer.submitBox,promptChoice:e.answer.choice,...e.answer.text===void 0?{}:{promptText:e.answer.text}}:{t:`session.input`,id:e.sessionId,data:e.text,ackId:e.ackId,firstSentAt:t,submit:!0,cwd:e.cwd,view:e.view}}function Ug(e){return`sending “${e}”…`}var Wg=`pending:`;function Gg(e){let t=e.remembered;if(t?.startsWith(Wg)){let n=t.slice(8);if(e.pendingAlive(n))return{do:`enter`,ack:n}}else if(t){let n=e.sessions.find(e=>e.id===t);if(n&&n.running)return{do:`attach`,id:n.id}}let n=e.sessions.find(t=>t.running&&!t.companionOf&&t.cwd===e.cwd&&e.isShell(t.backend));return n?{do:`attach`,id:n.id}:{do:`open`}}function Kg(e,t,n){return e===`${Wg}${t}`?n:e}function qg(e,t,n){let r=!1,i={};for(let[a,o]of Object.entries(e)){let e=Kg(o,t,n);e!==o&&(r=!0),i[a]=e}return r?i:e}function Jg(e){return`back to ${e}`}function Yg(e,t){return!!e&&!!t&&e.sessionId===t}var Xg=Xc({}),Zg=Xc(null);function Qg(e,t,n){Xg.set(n=>n[e]===t?n:{...n,[e]:t}),n&&Zg.set(()=>({sessionId:t,to:n}))}function $g(e,t){Xg.set(n=>qg(n,e,t)),Zg.set(n=>{if(!n)return n;let r=Kg(n.sessionId,e,t);return r===n.sessionId?n:{...n,sessionId:r}})}function e_(){Zg.set(null)}var t_=3e4;function n_(e){return e?.adoptedAt&&Date.now()-e.adoptedAt>t_?void 0:e}function r_(e,t,n){let r=(0,Z.useRef)(new Map),i=(0,Z.useMemo)(()=>{if(!Eg(e))return null;let n=e.slice(Tg.length);return t.find(e=>e.ackId===n&&qi(e))??null},[t,e]);return{pendingKept:r,pendingEntry:i,pendingSession:(0,Z.useMemo)(()=>{if(e&&!Eg(e)){if(n.some(t=>t.id===e))return null;let t=n_(r.current.get(e));return t?.adoptedAt?{id:e,cwd:t.cwd,title:t.title,remoteControl:!1,running:!0,createdAt:t.ts}:null}if(!Eg(e))return null;if(kg(e)){let t=e.slice(Og.length);return{id:e,cwd:t,title:Td(t)||`new session`,remoteControl:!1,running:!0,createdAt:Date.now()}}let t=i,a=n_(r.current.get(e.slice(Tg.length)));if(!t&&!a)return null;let o=t?.op,s=t?.cwd||a?.cwd||``;return{id:e,cwd:s,title:o?.title||a?.title||Td(s)||`new session`,remoteControl:!1,running:!0,createdAt:t?.ts??a?.ts??Date.now(),model:o?.launch?.model,effort:o?.launch?.effort,permissionMode:o?.launch?.permissionMode,remoteControlled:o?.launch?.remoteControlled}},[i,e,n])}}function i_(e){let{outboxRef:n,pendingKept:r,activeIdRef:i,connRef:a,wantNavRef:o,buffers:s,pendingEntry:c}=e,l=t=>e.writeOutbox(t),u=(t,n)=>e.addOutbox(t,n),d=(t,n,r,i)=>e.queueOp(t,n,r,i),f=e.setOverlay,p=e.setActiveId,m=e.setLastVisitedId;function h(e){let t=n.current.find(t=>qi(t)&&t.cwd===e&&t.status!==`failed`);t&&_(t.ackId)}function g(e){o.current=!1,f(null),p(Ag(e))}function _(e){let t=n.current.find(t=>t.ackId===e),i=t?.op;for(t&&r.current.set(e,{cwd:t.cwd,title:i?.title||Td(t.cwd),ts:t.ts});r.current.size>8;)r.current.delete(r.current.keys().next().value);o.current=!1,f(null),p(Dg(e))}function v(){let e=c,t=e?.op;if(!e||e.status!==`failed`||t?.t!==`session.create`)return;W(`action:session.pending.retry`);let r=n.current.filter(t=>t.mode===`input`&&t.createAck===e.ackId&&t.status===`failed`).sort((e,t)=>e.ts-t.ts),i=new Set([e.ackId,...r.map(e=>e.ackId)]);l(n.current.filter(e=>!i.has(e.ackId)));let o=Mr(),{ackId:s,...u}=t;d(u,e.sessionId,e.text,{cwd:e.cwd,focus:!0,ackId:o});for(let e of r)b(e.cwd,e.text,o,e.kind===`command`?`command`:`prompt`);_(o),G(a.current.status===`open`?`trying again…`:`queued — it opens when the link is back`)}function y(e,t){let n=Dg(e),a=r.current.get(e);if(a){let n={...a,adoptedAt:Date.now()};r.current.set(e,n),r.current.set(t,n)}if($g(e,t),i.current!==n)return;let o=Ul(n);o&&wo(t,o),wo(n,``),s.current.has(t)||s.current.set(t,[]),p(t),m(t)}function b(e,t,n,r=`prompt`){u({ackId:Mr(),sessionId:`create:${e}`,cwd:e,text:t,ts:Date.now(),status:`queued`,attempts:0,kind:r,mode:`input`,pendingCreate:!0,holdUntilIdle:!0,createAck:n,armed:!0})}function x(e,r){let i=new Set(t(n.current,e,r).map(e=>e.ackId));l(n.current.map(e=>i.has(e.ackId)?{...e,noTtl:!0}:e))}function S(e,r,i){let a=new Set(t(n.current,e,i).map(e=>e.ackId));l(n.current.map(e=>a.has(e.ackId)?(Mn(),{...e,status:`failed`,reason:r,failedAt:Date.now()}):e))}function C(e,t){let r=e.upload?.relPath;if(!r)return;let i=e=>e.text.includes(r)||e.mode===`op`&&JSON.stringify(e.op??``).includes(r);l(n.current.map(n=>n.ackId!==e.ackId&&n.status===`queued`&&n.sessionId===e.sessionId&&i(n)?(Mn(),{...n,status:`failed`,reason:t,failedAt:Date.now()}):n))}return{enterPending:_,enterOldestPending:h,enterLater:g,retryPendingCreate:v,adoptPendingSession:y,queueSessionPrompt:b,holdForLaunch:x,failPendingCreates:S,failDependentUploads:C}}function a_(e){let{connRef:t,sessionsRef:r,backendsRef:i,exitedRef:s,outboxRef:c,ackTimers:l,uploadsInFlight:u,uploadAborts:d,busyLanesRef:f,budgetHeldLanesRef:p,busySerialRef:m,serialWatchRef:h,budgetRef:g,autoSendRef:_,holdQueueRef:y,flushIdleReason:b,queueBlockedRef:x,readModeRef:S,serialSessionsRef:C,sessions:T}=e,{inflightRef:E,upBytesRef:D}=e.up,O=()=>e.up.refreshUploadLabel(),k=t=>e.writeOutbox(t),ee=(t,n)=>e.addOutbox(t,n),A=t=>e.addOutboxFirstInLane(t),j=(t,n,r)=>e.failOutbox(t,n,r),ne=t=>e.holdWall(t),M=(t,n,r,i)=>e.queueSessionPrompt(t,n,r,i);async function P(e,t=!0){if(e.mode!==`upload`)return;let n=e.upload?await Ei(`uploads`,e.ackId):null;n&&e.upload&&await Yn(e.upload.relPath,n),t&&await mi(`uploads`,e.ackId)}function re(e){return Mg(e,zi())}function F(e){let t=Date.now();k(c.current.map(n=>{if(n.ackId!==e||n.status===`failed`)return n;let r=(n.round??0)+1,i=ct(r);return{...n,status:`queued`,attempts:0,round:r,retryAt:t+i,waitReason:`the desktop hasn't answered yet`}}));let n=c.current.find(t=>t.ackId===e);n&&(n.round??0)===1&&G(`still sending — the desktop hasn't confirmed yet. Retrying in ${Math.round(ct(1)/6e4)} min; your text is safe.`)}function I(e,n=yg){let r=window.setTimeout(()=>{l.current.delete(e);let n=c.current,r=t.current.status!==`open`;n.some(t=>t.ackId===e&&t.status===`pending`)&&(qs(),k(n.map(t=>t.ackId===e?Ng(t,r):t))),R()},n);l.current.set(e,r)}function ie(){if(t.current.status!==`open`||kc().pending.includes(`sessions`))return[];let e=new Set(r.current.filter(e=>e.running).map(e=>e.id));return Fg(c.current,e,s.current)}function R(n=!1){if(n&&(y.current=!1,k(c.current.map(e=>e.status===`queued`?{...e,armed:!0,retryAt:void 0,waitReason:void 0,holdUntilIdle:e.holdUntilIdle&&(e.pendingCreate||ne(e.sessionId))?!0:void 0}:e))),t.current.status!==`open`)return b.current=L([],{online:!1,queued:1}),0;let a=ie(),s=ke(c.current,{now:Date.now(),inflight:[...l.current.keys(),...u.current],maxAttempts:8,minTryMs:w,busyLanes:f.current,busySerial:(()=>{let e=o(Pa(r.current,i.current),h.current,Date.now());return m.current=e.busy,h.current=e.watches,e.busy})(),budgetBlocked:g.current?.verdict.blocked??!1,goneLanes:a,budgetHeldLanes:p.current});s.release.length&&k(te(c.current,s.release));for(let e of s.expire)Ga(),F(e.ackId);let d={autoSend:_.current,hold:y.current},v=0,S=[...s.blocked];for(let e of s.send){if(!$e(e,d)){S.push({ackId:e.ackId,sessionId:e.sessionId,reason:`gate`});continue}let n=Date.now(),r=Vg(e,n);if(k(c.current.map(t=>t.ackId===e.ackId?Vg(t,n):t)),e.mode===`upload`){ue(e),v++;continue}let i=Hg(r);i&&t.current.send(i),I(e.ackId,re(e)),v++}let C=new Map(S.map(e=>[e.ackId,e.reason]));return x.current=C,e.setQueueBlocked(C),b.current=v?null:L(S,{online:!0,queued:c.current.filter(e=>e.status===`queued`).length,serialText:(()=>{let e=S.find(e=>e.reason===`serial`),t=e&&c.current.find(t=>t.ackId===e.ackId);return t?.serial?un(t.serial,r.current,i.current):void 0})()}),v}function z(e=`nothing queued`){return b.current??e}function B(){window.setTimeout(()=>{R()},450)}function oe(e){let t=v(c.current,e)[0],n=t?{relPath:t,reason:`it never uploaded`}:Bn(e);return n?`${n.relPath.split(`/`).pop()} — ${n.reason}. Re-attach it before sending.`:null}function se(e,t){let n=oe(e);if(n)return G(n),!1;let r=N(c.current,e,t);return r.some((e,t)=>e!==c.current[t])&&k(r),!0}function ce(e){let t=oe(e.join(`
|
|
1
|
+
import{Aa as e,As as t,Bi as n,Bl as r,Bn as i,Bs as a,Cs as o,Ct as s,Dt as c,Et as l,F as u,Fl as d,Fs as f,Go as p,Gs as m,Hs as h,I as g,Ii as _,Is as v,Jo as y,Js as b,Jt as x,Ko as S,L as C,Ls as w,Ma as T,Ms as E,N as D,Na as O,Ns as k,O as ee,Oa as A,Os as te,P as j,Pa as ne,Pl as M,Ps as N,Qa as P,Rl as re,Rs as F,Sl as I,Ss as L,St as ie,Tl as R,Ts as ae,Uo as z,Vn as B,Vo as oe,Ws as se,Xi as ce,Xn as le,Xo as V,Y as H,Yi as ue,Yt as de,ac as fe,at as pe,bi as me,bs as he,bt as ge,ca as _e,cc as ve,cr as ye,du as be,er as xe,eu as Se,f as Ce,ft as we,gr as Te,ht as Ee,j as De,ja as Oe,js as ke,k as Ae,ka as je,ks as Me,l as Ne,la as Pe,lc as Fe,ls as Ie,mi as Le,mo as Re,mt as ze,ot as Be,qa as Ve,qi as He,qo as Ue,qs as We,ru as Ge,sc as Ke,ss as qe,to as Je,uc as Ye,uu as Xe,vc as Ze,vs as Qe,ws as $e,wu as et,xc as tt,xs as nt,xt as rt,ys as it,yt as at,yu as ot,zl as st,zs as ct}from"./shared-DjRRLGfw.js";import{C as lt,S as ut,T as dt,a as ft,b as pt,f as mt,l as ht,m as U,n as gt,p as _t,t as vt,u as yt,v as bt,w as xt,x as St,y as Ct}from"./demo-DkCtg-SJ.js";import{$ as wt,$a as Tt,$c as W,$d as Et,$i as Dt,$l as Ot,$n as kt,$o as At,$r as jt,$s as Mt,$t as Nt,$u as Pt,A as Ft,Aa as It,Ac as Lt,Ad as Rt,Ai as zt,Al as Bt,An as Vt,Ao as Ht,Ar as Ut,As as Wt,At as Gt,Au as Kt,B as qt,Ba as Jt,Bc as Yt,Bd as Xt,Bi as Zt,Bl as Qt,Bn as $t,Bo as en,Br as tn,Bs as nn,Bt as rn,Bu as an,C as on,Ca as sn,Cc as cn,Cd as ln,Ci as un,Cl as G,Cn as dn,Co as fn,Cr as pn,Cs as mn,Ct as hn,Cu as gn,D as _n,Da as vn,Dc as yn,Dd as bn,Di as xn,Dl as Sn,Dn as Cn,Do as wn,Dr as Tn,Ds as En,Dt as Dn,Du as On,E as kn,Ea as An,Ec as jn,Ed as Mn,Ei as Nn,El as Pn,En as Fn,Eo as In,Er as Ln,Es as Rn,Et as zn,Eu as Bn,F as Vn,Fa as Hn,Fc as Un,Fd as Wn,Fi as Gn,Fl as Kn,Fn as qn,Fo as Jn,Fr as Yn,Fs as Xn,Ft as Zn,Fu as Qn,G as $n,Ga as er,Gc as K,Gd as tr,Gi as nr,Gl as rr,Gn as ir,Go as ar,Gs as or,Gt as sr,Gu as cr,H as lr,Ha as ur,Hc as dr,Hd as fr,Hi as pr,Hl as mr,Hn as hr,Ho as gr,Hr as _r,Hs as vr,Ht as yr,Hu as br,I as xr,Ia as Sr,Ic as Cr,Id as wr,Ii as Tr,Il as Er,In as Dr,Io as Or,Ir as kr,Is as Ar,It as jr,Iu as Mr,J as Nr,Jc as Pr,Jd as Fr,Ji as Ir,Jl as Lr,Jn as Rr,Jo as zr,Js as Br,Jt as Vr,Ju as Hr,K as Ur,Ka as Wr,Kc as q,Kd as Gr,Ki as Kr,Kl as qr,Kn as Jr,Ko as Yr,Kr as Xr,Ks as Zr,Kt as Qr,Ku as $r,L as ei,La as ti,Lc as ni,Ld as ri,Li as ii,Ll as ai,Ln as oi,Lo as si,Lr as ci,Ls as li,Lt as ui,Lu as di,M as fi,Ma as pi,Mc as mi,Md as hi,Mi as gi,Ml as _i,Mn as vi,Mo as yi,Mr as bi,Ms as xi,Mt as Si,Mu as Ci,N as wi,Na as Ti,Nc as Ei,Nd as Di,Ni as Oi,Nl as ki,Nn as Ai,No as ji,Nr as Mi,Ns as Ni,Nt as Pi,Nu as Fi,O as Ii,Oa as Li,Oc as Ri,Od as zi,Oi as Bi,Ol as Vi,On as Hi,Oo as Ui,Or as Wi,Os as Gi,Ot as Ki,Ou as qi,P as Ji,Pa as Yi,Pc as Xi,Pd as Zi,Pi as Qi,Pl as $i,Pn as ea,Po as ta,Pr as na,Ps as ra,Pt as ia,Pu as aa,Q as oa,Qa as sa,Qc as ca,Qd as la,Qi as ua,Ql as da,Qn as fa,Qo as pa,Qr as ma,Qs as ha,Qt as ga,Qu as _a,R as va,Ra as ya,Rc as ba,Rd as xa,Ri as Sa,Rl as Ca,Rn as wa,Ro as Ta,Rr as Ea,Rs as Da,Rt as Oa,Ru as ka,S as Aa,Sa as ja,Sc as Ma,Sd as Na,Si as Pa,Sl as Fa,Sn as Ia,So as La,Sr as Ra,Ss as za,St as Ba,Su as Va,T as Ha,Ta as Ua,Tc as Wa,Td as Ga,Ti as Ka,Tl as qa,Tn as Ja,To as Ya,Tr as Xa,Ts as Za,Tt as Qa,Tu as $a,U as eo,Ua as to,Uc as no,Ud as ro,Ui as io,Ul as ao,Un as oo,Uo as so,Ur as co,Us as lo,Ut as uo,Uu as fo,V as po,Va as mo,Vc as ho,Vd as go,Vi as _o,Vl as vo,Vn as yo,Vo as bo,Vr as xo,Vs as So,Vt as Co,Vu as wo,W as To,Wa as Eo,Wc as Do,Wd as Oo,Wi as ko,Wl as Ao,Wn as jo,Wo as Mo,Wr as No,Ws as Po,Wt as Fo,Wu as Io,X as Lo,Xa as Ro,Xc as zo,Xd as Bo,Xi as Vo,Xl as Ho,Xn as Uo,Xo as Wo,Xr as Go,Xs as Ko,Xt as qo,Xu as Jo,Y as Yo,Ya as Xo,Yc as Zo,Yd as Qo,Yi as $o,Yl as es,Yn as ts,Yo as ns,Yr as rs,Ys as is,Yt as as,Yu as os,Z as ss,Za as cs,Zc as ls,Zd as us,Zi as ds,Zl as fs,Zn as ps,Zo as ms,Zr as hs,Zs as gs,Zt as _s,Zu as vs,_ as ys,_a as bs,_c as xs,_d as Ss,_i as Cs,_l as ws,_n as Ts,_o as Es,_r as Ds,_s as Os,_t as ks,_u as As,a as js,aa as Ms,ac as Ns,ad as Ps,af as Fs,ai as Is,al as Ls,an as Rs,ao as zs,ar as Bs,as as Vs,at as Hs,au as Us,b as Ws,ba as Gs,bc as Ks,bd as qs,bi as Js,bl as Ys,bn as Xs,bo as Zs,br as Qs,bs as $s,bt as ec,bu as tc,c as nc,ca as rc,cc as ic,cd as ac,cf as oc,ci as sc,cl as cc,cn as lc,co as uc,cr as dc,cs as fc,ct as pc,cu as mc,d as hc,da as gc,dc as _c,dd as vc,di as yc,dl as bc,dn as xc,do as Sc,dr as Cc,ds as wc,dt as Tc,du as Ec,ea as Dc,ec as Oc,ed as kc,ef as Ac,ei as jc,el as Mc,en as Nc,eo as Pc,er as Fc,es as Ic,et as Lc,eu as Rc,f as zc,fa as Bc,fc as Vc,fd as Hc,fi as Uc,fl as Wc,fn as Gc,fo as Kc,fr as qc,fs as Jc,ft as Yc,fu as Xc,g as Zc,ga as Qc,gc as $c,gd as el,gi as tl,gl as nl,gn as rl,go as il,gr as al,gs as ol,gt as sl,gu as cl,h as ll,ha as ul,hc as dl,hd as fl,hi as pl,hl as ml,hn as hl,ho as gl,hr as _l,hs as vl,ht as yl,hu as bl,i as xl,ia as Sl,ic as J,id as Cl,if as wl,ii as Tl,il as El,in as Dl,io as Ol,ir as kl,it as Al,iu as jl,j as Ml,ja as Nl,jc as Pl,jd as Fl,ji as Il,jl as Ll,jn as Rl,jo as zl,jr as Bl,js as Vl,jt as Hl,ju as Ul,k as Wl,ka as Gl,kc as Kl,kd as ql,ki as Jl,kl as Yl,kn as Xl,ko as Zl,kr as Ql,ks as $l,kt as eu,ku as tu,l as nu,la as ru,lc as iu,ld as au,lf as ou,li as su,ll as cu,ln as lu,lo as uu,lr as du,ls as fu,lt as pu,lu as mu,m as hu,ma as gu,mc as _u,md as vu,mi as yu,ml as bu,mn as xu,mo as Su,mr as Cu,ms as wu,mt as Tu,mu as Eu,n as Du,na as Ou,nc as ku,nd as Au,nf as ju,ni as Mu,nl as Nu,nn as Pu,no as Fu,nr as Iu,ns as Lu,nt as Ru,nu as zu,o as Bu,oa as Vu,oc as Hu,od as Uu,of as Wu,oi as Gu,ol as Ku,on as qu,oo as Ju,or as Yu,os as Xu,ot as Zu,ou as Qu,p as $u,pa as ed,pc as td,pd as nd,pi as rd,pl as id,pn as ad,po as od,pr as sd,ps as cd,pt as ld,pu as ud,q as dd,qa as fd,qc as pd,qd as md,qi as hd,ql as gd,qn as _d,qo as Y,qr as vd,qs as yd,qt as bd,qu as xd,r as Sd,ra as Cd,rc as wd,rd as Td,rf as Ed,ri as Dd,rl as Od,rn as kd,ro as Ad,rr as jd,rs as Md,rt as Nd,ru as Pd,s as Fd,sa as Id,sc as Ld,sd as Rd,sf as zd,si as Bd,sl as Vd,sn as Hd,so as Ud,sr as Wd,ss as Gd,st as Kd,su as qd,t as Jd,ta as Yd,tc as Xd,td as Zd,tf as Qd,ti as $d,tl as ef,tn as tf,to as nf,tr as rf,ts as af,tt as of,tu as sf,u as cf,ua as lf,uc as uf,ud as df,uf as ff,ui as pf,ul as mf,un as hf,uo as gf,ur as _f,us as vf,ut as yf,uu as bf,v as xf,va as Sf,vc as Cf,vd as wf,vi as Tf,vl as Ef,vn as Df,vo as Of,vr as kf,vs as Af,vt as jf,vu as Mf,w as Nf,wa as Pf,wc as Ff,wd as If,wi as Lf,wl as Rf,wn as zf,wo as Bf,wr as Vf,ws as Hf,wt as Uf,wu as Wf,x as Gf,xa as Kf,xc as qf,xd as Jf,xi as Yf,xl as Xf,xn as Zf,xo as Qf,xr as $f,xs as ep,xt as tp,xu as np,y as rp,ya as ip,yc as ap,yd as op,yi as sp,yl as cp,yn as lp,yo as up,yr as dp,ys as fp,yt as pp,yu as mp,z as hp,za as gp,zc as _p,zd as vp,zi as yp,zl as bp,zn as xp,zo as Sp,zr as Cp,zs as wp,zt as Tp,zu as Ep}from"./sheets-BGN7Cs73.js";import{i as Dp,n as Op,r as kp,t as Ap}from"./react-CoSyT_xY.js";import{$i as jp,$r as Mp,A as Np,Ar as Pp,At as Fp,B as Ip,Ci as Lp,Cn as Rp,Cr as zp,Ct as Bp,D as Vp,Fr as Hp,Gn as Up,Gr as Wp,Gt as Gp,Hi as Kp,Hr as qp,Ht as Jp,In as Yp,It as Xp,J as Zp,Jr as Qp,K as $p,Ki as em,Kn as tm,L as nm,Li as rm,Lt as im,M as am,Mi as om,Mn as sm,Mr as cm,Nn as lm,Nr as um,O as dm,Or as fm,Ot as pm,P as mm,Pi as hm,Pr as gm,Pt as _m,Qi as vm,Qt as ym,R as bm,Rr as xm,Rt as Sm,S as Cm,Si as wm,St as Tm,Ti as Em,Tn as Dm,Ui as Om,Un as km,Ur as Am,Ut as jm,Vn as Mm,W as Nm,Wn as Pm,X as Fm,Xi as Im,Xt as Lm,Y as Rm,Yi as zm,Yr as Bm,Yt as Vm,Z as Hm,Zi as Um,Zr as Wm,_ as Gm,b as Km,bi as qm,bn as Jm,bt as Ym,c as Xm,cr as Zm,di as Qm,dr as $m,en as eh,er as th,et as nh,fi as rh,fn as ih,g as ah,gi as oh,gn as sh,gt as ch,h as lh,hi as uh,hn as dh,i as X,in as fh,it as ph,jn as mh,jr as hh,k as gh,ki as _h,kn as vh,kr as yh,kt as bh,ln as xh,m as Sh,mi as Ch,mn as wh,mt as Th,ni as Eh,nn as Dh,on as Oh,or as kh,ot as Ah,pn as jh,pr as Mh,qi as Nh,qr as Ph,r as Fh,ra as Ih,ri as Lh,rt as Rh,s as zh,si as Bh,ta as Vh,ti as Hh,tr as Uh,u as Wh,ui as Gh,ut as Kh,vi as qh,vn as Jh,wi as Yh,wn as Xh,xn as Zh,xt as Qh,yi as $h,yn as eg,z as tg,zi as ng,zn as rg,zt as ig}from"./icons-B48F-4nA.js";import{n as ag,t as og}from"./xterm-C8zLTNGk.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),ft(Ac())||ff(),Ac()&&Fs(Wu());var Z=Dp(),sg=Op();async function cg(e,t){let[n,r]=await Promise.all([el.artifacts(e,`outbox`,void 0,{signal:t}).then(e=>e.files).catch(()=>[]),el.inbox(e,t).catch(()=>[])]);return[...n,...r].map(e=>e.relPath).filter(Boolean)}function lg(e,t){return tc(e??``,t=>cg(e,t),{enabled:t&&!!e}).data??void 0}var ug={fresh:0,warm:1,heavy:2,steep:3},dg=60;function fg(e,t,n){if((ug[n[e]]??0)>=ug[t])return{notice:!1,next:n};let r={...n,[e]:t},i=Object.keys(r);if(i.length>dg)for(let e of i.slice(0,i.length-dg))delete r[e];return{notice:!0,next:r}}function pg(e,t,n){if(t==null){if(!(e in n))return{notice:!1,next:n};let t={...n};return delete t[e],{notice:!1,next:t}}if(n[e]===t)return{notice:!1,next:n};let r={...n,[e]:t},i=Object.keys(r);if(i.length>dg)for(let e of i.slice(0,i.length-dg))delete r[e];return{notice:!0,next:r}}var mg={warn:1,high:2};function hg(e,t,n){if(!t||(mg[n[e]]??0)>=mg[t])return{notice:!1,next:n};let r={...n,[e]:t},i=Object.keys(r);if(i.length>dg)for(let e of i.slice(0,i.length-dg))delete r[e];return{notice:!0,next:r}}function gg(){let e=q(`spendWarn`),t=dl();return n=>n?T(n.contextSpark?.costUsd,t,e):null}function _g(e){let t=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{if(!e||!e.running)return;let n=I(e.contextSpark,{lastTurnAt:e.lastTurnAt,turnActive:e.turnActive,now:Date.now()});if(!n||n.level===`fresh`)return;let r=t.current??=St(U.costNoticed,{}),{notice:i,next:a}=fg(e.id,n.level,r);i&&(t.current=a,dt(U.costNoticed,a),G(n.advice?`${n.note} ${n.advice}`:n.note))},[e]);let n=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{if(!e)return;let t=e.contextSpark,r=e.running?R(t?.liveAgentTok,t?.liveAgentAt,Date.now(),Yt()):null,i=n.current??=St(U.agentNoticed,{}),{notice:a,next:o}=pg(e.id,r?t?.liveAgentId??`agent`:null,i);o!==i&&(n.current=o,dt(U.agentNoticed,o)),a&&r&&G(r)},[e]);let r=(0,Z.useRef)(null),i=gg()(e);(0,Z.useEffect)(()=>{if(!e||!i)return;let t=r.current??=St(U.spendNoticed,{}),{notice:n,next:a}=hg(e.id,i.level,t);n&&(r.current=a,dt(U.spendNoticed,a),G(`${i.text} Marks are set in Settings › Sessions › spend marks. Nothing was stopped.`))},[e,i]);let a=(0,Z.useRef)(new Set);(0,Z.useEffect)(()=>{if(!e)return;let t=e.budget,{notice:n,next:r}=up(e.id,t?.verdict.state===`over`,a.current);a.current=r,n&&t&&G(Of(e.title,t))},[e])}function vg(e,t){let[n,r]=(0,Z.useState)(!1),i=(0,Z.useRef)(!1);return(0,Z.useEffect)(()=>{if(e){i.current=!0,r(!1);return}if(!i.current)return;i.current=!1,r(!0);let n=window.setTimeout(()=>r(!1),t);return()=>window.clearTimeout(n)},[e,t]),n}var yg=6e3,bg=2e4,xg=9e4,Sg=1500,Cg=5e3,wg=45e3,Tg=`pending:`,Eg=e=>!!e?.startsWith(Tg),Dg=e=>`${Tg}${e}`,Og=`${Tg}later:`,kg=e=>!!e?.startsWith(Og),Ag=e=>`${Og}${e}`,jg=(e,t)=>Eg(e)&&t?`create:${t}`:e;function Mg(e,t){let n=e.attempts??0,r=1+Math.min(3,n);return e.mode===`op`?(t==null?bg:Math.max(bg,Math.min(12e4,t*6)))*r:e.mode===`backlog`||e.mode===`upload`?yg*r:xg}function Ng(e,t,n=Date.now()){let r=(e.tries??0)+1;return{...e,status:`queued`,attempts:t?Math.max(0,(e.attempts??1)-1):e.attempts,tries:r,retryAt:n+F(r)}}function Pg(e){return e.pendingCreate&&e.holdUntilIdle?!0:void 0}function Fg(e,t,n){let r=new Set;for(let i of e)i.status!==`queued`||i.pendingCreate||(i.mode??`input`)===`input`&&(!t.has(i.sessionId)||n.has(i.sessionId))&&r.add(i.sessionId);return[...r]}function Ig(e,t){if(e.mode===`op`){let t=e.cwd.split(`/`).filter(Boolean).pop()??``;return e.op?.t===`schedule.run`?`Scheduled run, by hand`:e.sessionId===`fanout`?`Fan-out`:e.sessionId.startsWith(`fu:`)?`Fan-out follow-up`:e.sessionId.startsWith(`build:`)?`${t||`repo`} · builds`:`${t||`repo`} · new session`}let n=t.find(t=>t.id===e.sessionId);return n?`${n.title}${e.mode===`backlog`?` · backlog`:``}`:`${e.cwd.split(`/`).filter(Boolean).pop()??e.cwd}${e.mode===`backlog`?` · backlog`:` · session gone`}`}function Lg(e,t=Date.now()){let n=e.map(e=>e.sentAt??e.ts),r=n.length?Math.min(...n):t,i=Math.max(0,Math.round((t-r)/1e3)),a=e.length>1?` (${e.length})`:``,o=e.some(e=>e.mode===`upload`)?`Uploading`:`Sending`,s=e.filter(e=>e.status===`queued`&&e.retryAt!=null).map(e=>e.retryAt);if(s.length===e.length&&s.length){let n=Math.max(1e3,Math.min(...s)-t),r=n<6e4?`${Math.round(n/1e3)}s`:`${Math.round(n/6e4)} min`,i=e.length===1&&e[0].waitReason?` — ${e[0].waitReason}`:``;return`${o}${a}…${i?`${i};`:``} retrying in ${r}`}return`${o}${a}… ${i}s${i>=20?` — no receipt yet, will retry`:``}`}function Rg(e){let t=Gn(e).trim().replace(/\s+/g,` `);return t?t.length>64?`${t.slice(0,64)}…`:t:e.mode===`upload`?`a file`:`an action`}function zg(e){return new Set(e.filter(Ze).map(e=>e.id))}function Bg(e,t){for(let n of e)if(!t.has(n))return!0;return!1}function Vg(e,t){return{...e,status:`pending`,attempts:(e.attempts??0)+1,sentAt:t,firstTryAt:e.firstTryAt??t,waitReason:void 0}}function Hg(e){let t=e.firstTryAt;return e.mode===`upload`?null:e.mode===`op`?e.op?t==null?e.op:A(e.op,t):null:e.mode===`backlog`?{t:`backlog.add`,text:e.text,repoDir:e.cwd,label:e.label??e.text.slice(0,40),fire:e.fire,targetSessionId:e.targetSessionId,autoFire:e.autoFire,ackId:e.ackId,firstSentAt:t,steps:e.steps,resume:e.resume,...typeof e.closeWhenDone==`boolean`?{closeWhenDone:e.closeWhenDone}:{},...e.flagWhenDone?{flagWhenDone:!0}:{},...e.budget?{budget:e.budget}:{},...e.launch?{launch:e.launch}:{},...e.pastBudget?{pastBudget:!0}:{}}:e.answer?{t:`session.input`,id:e.sessionId,data:e.text,ackId:e.ackId,firstSentAt:t,expectPrompt:e.answer.fingerprint,promptSubmit:e.answer.submitBox,promptChoice:e.answer.choice,...e.answer.text===void 0?{}:{promptText:e.answer.text}}:{t:`session.input`,id:e.sessionId,data:e.text,ackId:e.ackId,firstSentAt:t,submit:!0,cwd:e.cwd,view:e.view}}function Ug(e){return`sending “${e}”…`}var Wg=`pending:`;function Gg(e){let t=e.remembered;if(t?.startsWith(Wg)){let n=t.slice(8);if(e.pendingAlive(n))return{do:`enter`,ack:n}}else if(t){let n=e.sessions.find(e=>e.id===t);if(n&&n.running)return{do:`attach`,id:n.id}}let n=e.sessions.find(t=>t.running&&!t.companionOf&&t.cwd===e.cwd&&e.isShell(t.backend));return n?{do:`attach`,id:n.id}:{do:`open`}}function Kg(e,t,n){return e===`${Wg}${t}`?n:e}function qg(e,t,n){let r=!1,i={};for(let[a,o]of Object.entries(e)){let e=Kg(o,t,n);e!==o&&(r=!0),i[a]=e}return r?i:e}function Jg(e){return`back to ${e}`}function Yg(e,t){return!!e&&!!t&&e.sessionId===t}var Xg=Xc({}),Zg=Xc(null);function Qg(e,t,n){Xg.set(n=>n[e]===t?n:{...n,[e]:t}),n&&Zg.set(()=>({sessionId:t,to:n}))}function $g(e,t){Xg.set(n=>qg(n,e,t)),Zg.set(n=>{if(!n)return n;let r=Kg(n.sessionId,e,t);return r===n.sessionId?n:{...n,sessionId:r}})}function e_(){Zg.set(null)}var t_=3e4;function n_(e){return e?.adoptedAt&&Date.now()-e.adoptedAt>t_?void 0:e}function r_(e,t,n){let r=(0,Z.useRef)(new Map),i=(0,Z.useMemo)(()=>{if(!Eg(e))return null;let n=e.slice(Tg.length);return t.find(e=>e.ackId===n&&qi(e))??null},[t,e]);return{pendingKept:r,pendingEntry:i,pendingSession:(0,Z.useMemo)(()=>{if(e&&!Eg(e)){if(n.some(t=>t.id===e))return null;let t=n_(r.current.get(e));return t?.adoptedAt?{id:e,cwd:t.cwd,title:t.title,remoteControl:!1,running:!0,createdAt:t.ts}:null}if(!Eg(e))return null;if(kg(e)){let t=e.slice(Og.length);return{id:e,cwd:t,title:Td(t)||`new session`,remoteControl:!1,running:!0,createdAt:Date.now()}}let t=i,a=n_(r.current.get(e.slice(Tg.length)));if(!t&&!a)return null;let o=t?.op,s=t?.cwd||a?.cwd||``;return{id:e,cwd:s,title:o?.title||a?.title||Td(s)||`new session`,remoteControl:!1,running:!0,createdAt:t?.ts??a?.ts??Date.now(),model:o?.launch?.model,effort:o?.launch?.effort,permissionMode:o?.launch?.permissionMode,remoteControlled:o?.launch?.remoteControlled}},[i,e,n])}}function i_(e){let{outboxRef:n,pendingKept:r,activeIdRef:i,connRef:a,wantNavRef:o,buffers:s,pendingEntry:c}=e,l=t=>e.writeOutbox(t),u=(t,n)=>e.addOutbox(t,n),d=(t,n,r,i)=>e.queueOp(t,n,r,i),f=e.setOverlay,p=e.setActiveId,m=e.setLastVisitedId;function h(e){let t=n.current.find(t=>qi(t)&&t.cwd===e&&t.status!==`failed`);t&&_(t.ackId)}function g(e){o.current=!1,f(null),p(Ag(e))}function _(e){let t=n.current.find(t=>t.ackId===e),i=t?.op;for(t&&r.current.set(e,{cwd:t.cwd,title:i?.title||Td(t.cwd),ts:t.ts});r.current.size>8;)r.current.delete(r.current.keys().next().value);o.current=!1,f(null),p(Dg(e))}function v(){let e=c,t=e?.op;if(!e||e.status!==`failed`||t?.t!==`session.create`)return;W(`action:session.pending.retry`);let r=n.current.filter(t=>t.mode===`input`&&t.createAck===e.ackId&&t.status===`failed`).sort((e,t)=>e.ts-t.ts),i=new Set([e.ackId,...r.map(e=>e.ackId)]);l(n.current.filter(e=>!i.has(e.ackId)));let o=Mr(),{ackId:s,...u}=t;d(u,e.sessionId,e.text,{cwd:e.cwd,focus:!0,ackId:o});for(let e of r)b(e.cwd,e.text,o,e.kind===`command`?`command`:`prompt`);_(o),G(a.current.status===`open`?`trying again…`:`queued — it opens when the link is back`)}function y(e,t){let n=Dg(e),a=r.current.get(e);if(a){let n={...a,adoptedAt:Date.now()};r.current.set(e,n),r.current.set(t,n)}if($g(e,t),i.current!==n)return;let o=Ul(n);o&&wo(t,o),wo(n,``),s.current.has(t)||s.current.set(t,[]),p(t),m(t)}function b(e,t,n,r=`prompt`){u({ackId:Mr(),sessionId:`create:${e}`,cwd:e,text:t,ts:Date.now(),status:`queued`,attempts:0,kind:r,mode:`input`,pendingCreate:!0,holdUntilIdle:!0,createAck:n,armed:!0})}function x(e,r){let i=new Set(t(n.current,e,r).map(e=>e.ackId));l(n.current.map(e=>i.has(e.ackId)?{...e,noTtl:!0}:e))}function S(e,r,i){let a=new Set(t(n.current,e,i).map(e=>e.ackId));l(n.current.map(e=>a.has(e.ackId)?(Mn(),{...e,status:`failed`,reason:r,failedAt:Date.now()}):e))}function C(e,t){let r=e.upload?.relPath;if(!r)return;let i=e=>e.text.includes(r)||e.mode===`op`&&JSON.stringify(e.op??``).includes(r);l(n.current.map(n=>n.ackId!==e.ackId&&n.status===`queued`&&n.sessionId===e.sessionId&&i(n)?(Mn(),{...n,status:`failed`,reason:t,failedAt:Date.now()}):n))}return{enterPending:_,enterOldestPending:h,enterLater:g,retryPendingCreate:v,adoptPendingSession:y,queueSessionPrompt:b,holdForLaunch:x,failPendingCreates:S,failDependentUploads:C}}function a_(e){let{connRef:t,sessionsRef:r,backendsRef:i,exitedRef:s,outboxRef:c,ackTimers:l,uploadsInFlight:u,uploadAborts:d,busyLanesRef:f,budgetHeldLanesRef:p,busySerialRef:m,serialWatchRef:h,budgetRef:g,autoSendRef:_,holdQueueRef:y,flushIdleReason:b,queueBlockedRef:x,readModeRef:S,serialSessionsRef:C,sessions:T}=e,{inflightRef:E,upBytesRef:D}=e.up,O=()=>e.up.refreshUploadLabel(),k=t=>e.writeOutbox(t),ee=(t,n)=>e.addOutbox(t,n),A=t=>e.addOutboxFirstInLane(t),j=(t,n,r)=>e.failOutbox(t,n,r),ne=t=>e.holdWall(t),M=(t,n,r,i)=>e.queueSessionPrompt(t,n,r,i);async function P(e,t=!0){if(e.mode!==`upload`)return;let n=e.upload?await Ei(`uploads`,e.ackId):null;n&&e.upload&&await Yn(e.upload.relPath,n),t&&await mi(`uploads`,e.ackId)}function re(e){return Mg(e,zi())}function F(e){let t=Date.now();k(c.current.map(n=>{if(n.ackId!==e||n.status===`failed`)return n;let r=(n.round??0)+1,i=ct(r);return{...n,status:`queued`,attempts:0,round:r,retryAt:t+i,waitReason:`the desktop hasn't answered yet`}}));let n=c.current.find(t=>t.ackId===e);n&&(n.round??0)===1&&G(`still sending — the desktop hasn't confirmed yet. Retrying in ${Math.round(ct(1)/6e4)} min; your text is safe.`)}function I(e,n=yg){let r=window.setTimeout(()=>{l.current.delete(e);let n=c.current,r=t.current.status!==`open`;n.some(t=>t.ackId===e&&t.status===`pending`)&&(qs(),k(n.map(t=>t.ackId===e?Ng(t,r):t))),R()},n);l.current.set(e,r)}function ie(){if(t.current.status!==`open`||kc().pending.includes(`sessions`))return[];let e=new Set(r.current.filter(e=>e.running).map(e=>e.id));return Fg(c.current,e,s.current)}function R(n=!1){if(n&&(y.current=!1,k(c.current.map(e=>e.status===`queued`?{...e,armed:!0,retryAt:void 0,waitReason:void 0,holdUntilIdle:e.holdUntilIdle&&(e.pendingCreate||ne(e.sessionId))?!0:void 0}:e))),t.current.status!==`open`)return b.current=L([],{online:!1,queued:1}),0;let a=ie(),s=ke(c.current,{now:Date.now(),inflight:[...l.current.keys(),...u.current],maxAttempts:8,minTryMs:w,busyLanes:f.current,busySerial:(()=>{let e=o(Pa(r.current,i.current),h.current,Date.now());return m.current=e.busy,h.current=e.watches,e.busy})(),budgetBlocked:g.current?.verdict.blocked??!1,goneLanes:a,budgetHeldLanes:p.current});s.release.length&&k(te(c.current,s.release));for(let e of s.expire)Ga(),F(e.ackId);let d={autoSend:_.current,hold:y.current},v=0,S=[...s.blocked];for(let e of s.send){if(!$e(e,d)){S.push({ackId:e.ackId,sessionId:e.sessionId,reason:`gate`});continue}let n=Date.now(),r=Vg(e,n);if(k(c.current.map(t=>t.ackId===e.ackId?Vg(t,n):t)),e.mode===`upload`){ue(e),v++;continue}let i=Hg(r);i&&t.current.send(i),I(e.ackId,re(e)),v++}let C=new Map(S.map(e=>[e.ackId,e.reason]));return x.current=C,e.setQueueBlocked(C),b.current=v?null:L(S,{online:!0,queued:c.current.filter(e=>e.status===`queued`).length,serialText:(()=>{let e=S.find(e=>e.reason===`serial`),t=e&&c.current.find(t=>t.ackId===e.ackId);return t?.serial?un(t.serial,r.current,i.current):void 0})()}),v}function z(e=`nothing queued`){return b.current??e}function B(){window.setTimeout(()=>{R()},450)}function oe(e){let t=v(c.current,e)[0],n=t?{relPath:t,reason:`it never uploaded`}:Bn(e);return n?`${n.relPath.split(`/`).pop()} — ${n.reason}. Re-attach it before sending.`:null}function se(e,t){let n=oe(e);if(n)return G(n),!1;let r=N(c.current,e,t);return r.some((e,t)=>e!==c.current[t])&&k(r),!0}function ce(e){let t=oe(e.join(`
|
|
2
2
|
`));return!t||(G(t),!1)}function le(e,n,r,i,a=!1){if(!a&&de(r)){let t=T.find(t=>t.id===e);t&&(t.hooked?t.turnActive:t.running&&!t.idle)&&(a=!0,G(`${r.trim().split(/\s+/)[0]} opens a view — held until this turn ends`))}if(!se(r,jg(e,n)))return!1;if(kg(e))return G(`this session starts only when its backlog item runs — write it in the box and Send`),!1;if(Eg(e))return M(n,r,e.slice(Tg.length),i),R(),!0;let o=Mr(),s=t.current.status!==`open`;return ee({ackId:o,sessionId:e,cwd:n,text:r,ts:Date.now(),status:`queued`,attempts:0,kind:i,mode:`input`,offline:s,armed:!s,holdUntilIdle:a||void 0,view:S.current?`read`:`term`}),s||pe(e),R(),!0}function V(e,n,r,i){let a=i?.ackId??Mr(),o=t.current.status!==`open`,s=i?.cwd??``,c=(i?.serial??C.current)&&e.t===`session.create`&&e.prompt&&s?ae(s):void 0;return ee({ackId:a,sessionId:n,cwd:s,text:r,ts:Date.now(),status:`queued`,attempts:0,mode:`op`,serial:c,op:{...e,ackId:a},focus:i?.focus&&!o?!0:void 0,offline:o,armed:!o},i?.frontOfLane),i?.track&&Sc(a),o||pe(n),R(),o}async function H(e,t,n,r,i){r=jg(r,i);let a=Mr(),{name:o,relPath:s}=Ep(n);return await Un(`uploads`,a,t),await Ei(`uploads`,a)?(ee({ackId:a,sessionId:r,cwd:i,text:`file · ${o}`,ts:Date.now(),status:`queued`,attempts:0,mode:`upload`,upload:{repoId:e,name:o,relPath:s,size:t.size,type:t.type||`application/octet-stream`},armed:!0}),R(),{relPath:s,ackId:a}):null}async function ue(e){let n=e.upload;if(!n){j(e.ackId,`not an image`),B();return}u.current.add(e.ackId);let r=new AbortController;d.current.set(e.ackId,r),E.current++,D.current.startedAt||(D.current.startedAt=Date.now()),D.current.total+=n.size,O();let i=0,o=Date.now(),s=!1,l=0,f=()=>{window.clearTimeout(l),l=window.setTimeout(()=>{s=!0,r.abort(new me(`upload`,wg))},wg)};f();try{let t=await Ei(`uploads`,e.ackId);if(!t){j(e.ackId,`the file's bytes are no longer on this device`);return}let a=await el.uploadInbox(n.repoId,t,n.name,r.signal,e=>{D.current.sent+=Math.max(0,e-i),i=e,f(),O()},!0),s=a.saved?.[0]?.relPath;if(!s){j(e.ackId,a.skipped?.[0]?.error||`the host refused the file`);return}Fu(n.repoId,s,a.saved[0].mtime),io(n.size,Date.now()-o),mi(`uploads`,e.ackId),s!==n.relPath&&fe(n.relPath,s),k(c.current.filter(t=>t.ackId!==e.ackId))}catch(n){if(n?.permanent){j(e.ackId,n.message);return}let r=a({responded:n?.responded,stalled:s,socketOpen:t.current.status===`open`});k(c.current.map(t=>t.ackId===e.ackId&&t.status===`pending`?Ng(t,r):t))}finally{window.clearTimeout(l),D.current.sent+=Math.max(0,n.size-i),E.current=Math.max(0,E.current-1),O(),d.current.delete(e.ackId),u.current.delete(e.ackId),B()}}function fe(t,n){k(c.current.map(e=>{if(!e.text.includes(t))return e;let r=e.text.split(t).join(n);if(e.mode===`op`&&e.op){let i={...e.op};return typeof i.text==`string`&&(i.text=i.text.split(t).join(n)),typeof i.prompt==`string`&&(i.prompt=i.prompt.split(t).join(n)),{...e,text:r,op:i}}return{...e,text:r,label:e.mode===`backlog`?r.slice(0,40):e.label}})),e.setCompose(e=>e.includes(t)?e.split(t).join(n):e)}function pe(e){let t=c.current.filter(t=>t.sessionId===e&&t.status===`queued`&&!t.armed);t.length&&(k(c.current.map(t=>t.sessionId===e&&t.status===`queued`?{...t,armed:!0}:t)),G(`sending ${t.length} earlier queued message${t.length>1?`s`:``} first`))}function he(e){if(!se(e.text,e.targetSessionId??e.repoDir))return null;let n=Mr(),r=t.current.status!==`open`;return ee({ackId:n,sessionId:e.targetSessionId??e.repoDir,cwd:e.repoDir,text:e.text,ts:Date.now(),status:`queued`,attempts:0,mode:`backlog`,label:e.label,fire:e.fire,autoFire:e.autoFire,targetSessionId:e.targetSessionId,steps:e.steps&&e.steps.length>1?e.steps:void 0,resume:e.resume||void 0,closeWhenDone:typeof e.closeWhenDone==`boolean`?e.closeWhenDone:void 0,flagWhenDone:e.flagWhenDone===!0||void 0,budget:e.budget,launch:e.launch,pastBudget:e.pastBudget||void 0,offline:r,armed:!r}),r||pe(e.targetSessionId??e.repoDir),R(),r}function ge(e,r,i,a,o,s){let c=e.prompt;if(!c)return;let l=t.current.status!==`open`;A({ackId:Mr(),sessionId:e.id,cwd:e.cwd,text:r,ts:Date.now(),status:`queued`,attempts:0,mode:`input`,answer:{fingerprint:n(c),question:c.question,label:i,...a?{submitBox:!0}:{},...o==null?{}:{choice:o},...s===void 0?{}:{text:s}},offline:l,armed:!0}),G(l?`answer saved — “${i}” goes out when the link is back`:Ug(i)),R()}return{retainUploadBytes:P,ackWindowFor:re,nextRound:F,armAckTimeout:I,goneLanes:ie,flushOutbox:R,idleReason:z,releaseLane:B,uploadRefusal:oe,guardUploadRefs:se,guardChain:ce,submitInput:le,queueOp:V,queueImageUpload:H,runUpload:ue,rewriteQueuedPath:fe,armLane:pe,queueBacklog:he,answerPrompt:ge}}function o_(e){let{outboxRef:t,outbox:n,pendingKept:r,activeIdRef:i,connRef:a,sessions:o,activeId:s}=e,c=t=>e.writeOutbox(t),l=t=>e.flushOutbox(t),u=t=>e.idleReason(t),d=t=>e.holdWall(t),f=(t,n)=>e.retainUploadBytes(t,n),p=(t,n,r)=>e.failPendingCreates(t,n,r),m=(t,n,r)=>e.queueSessionPrompt(t,n,r),h=e.openSend,g=e.sendTargetFor,_=e.setActiveId,v=e.setCompose;function y(){let e=yp(n);if(!e){G(ii(n)?`those are files, not text — open the message that names one and re-attach it there`:`nothing to put back — the failed items are actions, not text`);return}let t=n.filter(e=>e.status===`failed`&&e.mode!==`op`).length-1;h({prompts:[Gn(e)],target:g(e.sessionId,e.cwd),cwdHint:e.cwd,repoId:ne(e),ackId:e.ackId,repair:!0,openAfter:!0,origin:t>0?`This one never went — ${t} more under Manage`:`This one never went`})}function b(){for(let e of t.current)e.status===`failed`&&e.mode===`upload`&&f(e);c(t.current.filter(e=>e.status!==`failed`))}function x(e,n){c(t.current.map(t=>{if(t.ackId!==e||t.status!==`queued`)return t;if(t.mode===`op`){let e=t.op;return e?.t===`session.create`?{...t,text:n,op:{...e,prompt:n}}:!e||e.t!==`fanout.run`&&e.t!==`fanout.followup`?t:{...t,text:n,op:{...e,text:n}}}return{...t,text:n,label:t.mode===`backlog`?n.slice(0,40):t.label}}))}function S(e,n){let r=t.current,i=r.find(t=>t.ackId===e);return i?Qe(i)?(W(`action:queue.retarget`),c(he(r,e,{...n,ackId:Mr()})),G(n.mode===`backlog`?`moved to that repo's backlog`:`moved to that session`),!0):(G(i.mode===`op`?`an action can't be re-aimed`:`already on its way`),!1):!1}function C(e){let n=t.current,r=n.find(t=>t.ackId===e);if(!r)return;if(!Qe(r)){G(`already on its way`);return}if(de(r.text??``)){r.holdUntilIdle||w(e),G(Is(`idle`,{online:a.current.status===`open`,holder:`phone`,phoneHold:`opens-a-view`}));return}W(`action:queue.handtodesktop`);let i=Mr();c(he(n,e,{sessionId:r.sessionId,cwd:r.cwd,ackId:i,mode:`backlog`,targetSessionId:r.sessionId}).map(e=>e.ackId===i?{...e,autoFire:!0,holdUntilIdle:void 0,kind:void 0}:e)),l(),G(Is(`idle`,{online:a.current.status===`open`,holder:`desktop`}))}function w(e){W(`action:queue.hold`),c(t.current.map(t=>t.ackId===e&&t.status===`queued`?{...t,holdUntilIdle:!t.holdUntilIdle||void 0}:t)),l()}function T(e){W(`action:queue.serial`),c(t.current.map(t=>t.ackId===e&&t.status===`queued`&&Kt(t)?{...t,serial:t.serial?void 0:ae(t.cwd)}:t)),l()}function E(e){return t.current.filter(t=>t.mode!==`op`||t.status===`pending`?!1:t.op?.t===`schedule.run`?t.op.id===e:t.op?.t===`schedule.save`&&t.op.entry?.id===e)}function D(e){if(!e.length)return;let n=new Set(e.map(e=>e.ackId));c(t.current.filter(e=>!n.has(e.ackId)))}function O(e){let n=t.current.find(t=>t.ackId===e);r.current.delete(e),i.current===Dg(e)&&_(null),n?f(n):mi(`uploads`,e),n?.mode===`upload`&&n.upload&&di(n.upload.relPath,`the upload was canceled`),c(t.current.filter(t=>t.ackId!==e)),n&&qi(n)&&p(n.sessionId,`the session it was queued for was discarded`,n.ackId)}function k(e,n){let r=t.current.find(t=>t.ackId===e);!r||!qi(r)||r.status!==`queued`?G(`that session is already on its way`):(W(`action:queue.addprompt`),m(r.cwd,n,r.ackId),G(`queued — it runs after the one before it finishes`))}function ee(e,n){c(it(t.current,e,n))}function A(e){let n=t.current,r=n.find(t=>t.ackId===e);if(!r)return;if(r.status===`failed`){if(!xn(r)){G(Nn(r)?`it may already be in that session — open it and look, or rewrite it to send a fresh copy`:`the desktop remembers refusing this exact message — rewrite it to send it as a new one`);return}r.mode===`upload`&&r.upload&&(Wf(r.upload.relPath),na(r.upload.relPath)),n=c(n.map(t=>t.ackId===e?{...t,status:`queued`,attempts:0,tries:0,round:void 0,retryAt:void 0,waitReason:void 0,ts:Date.now(),reason:void 0,armed:!0}:t))}let i=n.find(t=>t.ackId===e);if(!i)return;let a=n.indexOf(i),o=n.filter((e,t)=>t<a&&e.sessionId===i.sessionId&&e.status===`queued`&&!e.armed),s=i.holdUntilIdle&&!i.pendingCreate?d(i.sessionId):null;s?G(s):(c(n.map((t,n)=>t.ackId===e?{...t,armed:!0,retryAt:void 0,waitReason:void 0,serial:void 0,holdUntilIdle:Pg(t)}:n<a&&t.sessionId===i.sessionId&&t.status===`queued`?{...t,armed:!0,retryAt:void 0,waitReason:void 0,holdUntilIdle:Pg(t)}:t)),l()?o.length&&G(`${o.length} earlier message${o.length>1?`s`:``} in this session go first`):G(u(`nothing left to send`)))}function te(){let e=t.current.filter(xn);if(!e.length){G(`nothing to try again`);return}for(let t of e)t.mode===`upload`&&t.upload&&(Wf(t.upload.relPath),na(t.upload.relPath));let n=new Set(e.map(e=>e.ackId));c(t.current.map(e=>n.has(e.ackId)?{...e,status:`queued`,attempts:0,tries:0,round:void 0,retryAt:void 0,waitReason:void 0,ts:Date.now(),reason:void 0,failState:void 0,failedAt:void 0,armed:!0}:e));let r=l();G(r?`${e.length} back in the queue — sending…`:`${e.length} back in the queue — ${u(`waiting`)}`)}function j(e){let n=t.current.find(t=>t.ackId===e);if(!n)return;if(n.mode===`op`){G(`that's an action — discard it instead`);return}if(n.pendingCreate){O(e),v(e=>e?`${e}\n${n.text}`:n.text),G(`moved into the message box`);return}O(e);let r=o.find(e=>e.id===n.sessionId);if(!r){v(e=>e?`${e}\n${n.text}`:n.text),G(`moved into the message box`);return}let i=Ul(r.id),a=i?`${i}\n${n.text}`:n.text;wo(r.id,a),s===r.id&&v(a),G(`moved into ${r.title}'s message box`)}function ne(t){return e.repoForCwd(t.cwd)?.id??null}return{restoreOutbox:y,dismissOutbox:b,editQueued:x,retargetQueued:S,handToDesktop:C,toggleHoldQueued:w,toggleSerialQueued:T,scheduleQueueRows:E,dropScheduleQueue:D,removeQueued:O,addPromptToQueuedCreate:k,moveQueued:ee,sendQueuedNow:A,retryFailedQueued:te,restoreQueued:j,repoIdOfEntry:ne}}function s_(){let[e,t]=(0,Z.useState)(null),[n,r]=(0,Z.useState)(0),[i,a]=(0,Z.useState)(null),o=(0,Z.useRef)(0),s=(0,Z.useRef)(0),c=(0,Z.useRef)({sent:0,total:0,startedAt:0,fullAt:0}),l=(0,Z.useRef)(new Set),u=(0,Z.useRef)(null);function d(){let e=o.current;if(r(s.current),e<=0){c.current={sent:0,total:0,startedAt:0,fullAt:0},t(null),a(null);return}let n=Date.now(),{sent:i,total:l,startedAt:u}=c.current,d=u?n-u:0,f=d>700&&i>4e4?i/1024/(d/1e3):null,p=l>0&&i>=l;p?c.current.fullAt||(c.current.fullAt=n):c.current.fullAt=0;let m=c.current.fullAt?Math.round((n-c.current.fullAt)/1e3):0,h=l>0?p?100:Math.min(99,Math.round(i/l*100)):0,g=l>i?pr(l-i,f):null;t(l<=0?`Uploading ${e}…`:p?`Sent ${Uu(l)} · waiting for the host${m>2?` · ${m}s`:``}`:`Uploading ${e} · ${h}% · ${Uu(i)}/${Uu(l)}${f?` · ${Math.round(f)} kB/s`:``}${g?` · ${g}`:``}`),a({sent:i,total:l,pct:h,kbps:f,waiting:p})}let f=e!=null,p=vg(f,900);return(0,Z.useEffect)(()=>{if(!f)return;let e=window.setInterval(()=>d(),1e3);return()=>window.clearInterval(e)},[f]),{uploading:e,parking:n,upProg:i,setUploading:t,setUpProg:a,inflightRef:o,parkingRef:s,upBytesRef:c,allBufsRef:l,uploadBufRef:u,refreshUploadLabel:d,uploadPending:f,uploadRowLinger:p}}function c_(e){let{inflightRef:t,parkingRef:n,upBytesRef:r,allBufsRef:i,uploadBufRef:a,setUploading:o,setUpProg:s}=e.up,c=()=>e.up.refreshUploadLabel(),{uploadsInFlight:l,uploadAborts:u,sessionsRef:d,activeIdRef:f,composeTextRef:p,connRef:m,repos:h}=e,g=e.getActive,_=(t,n,r,i,a)=>e.queueImageUpload(t,n,r,i,a),v=t=>e.removeQueued(t),y=t=>e.queueBacklog(t),b=(t,n,r,i,a)=>e.submitInput(t,n,r,i,a),x=t=>e.pushHistory(t),S=e.setCompose;function C(e){let t=a.current;if(t&&!t.closed&&t.repoId===e)return t;let n=g(),r=n?{id:n.id,cwd:n.cwd}:void 0,o={repoId:e,slots:[],started:0,done:0,closed:!1,submit:!1,queue:!1,ctrl:new AbortController,ackIds:[],target:r};return i.current.add(o),a.current=o}function w(e,r,i,a,o){let s=e.started++;e.slots[s]=null,t.current++,n.current++,c(),(async()=>{let l=null,u=h.find(t=>t.id===e.repoId)?.worktreePath??e.repoId,d=e.target?.id??`create:${u}`;try{let t=r instanceof Blob?r:await r,{width:n}=_o(),s=await ko(t,i,n),c=await _(e.repoId,s.blob,s.name,d,e.target?.cwd??u);if(!c)e.fail??=`this browser can't hold files offline — reconnect and re-attach`,G(e.fail);else{e.ackIds.push(c.ackId);let t=await Promise.resolve(a),n=s.width&&s.height?{w:s.width,h:s.height}:o??null,r=t?kt(t,n):``;l=r?`${c.relPath} (marked: ${r})`:c.relPath}}catch{e.fail??=`couldn't read that image`}t.current=Math.max(0,t.current-1),n.current=Math.max(0,n.current-1),e.ctrl.signal.aborted?c():(e.slots[s]=l,e.done++,c(),E(e))})()}function T(){let e=new Set(l.current);for(let t of i.current){t.ctrl.abort();for(let n of t.ackIds)e.add(n)}if(a.current){a.current.ctrl.abort();for(let t of a.current.ackIds)e.add(t)}if(i.current.clear(),a.current=null,e.size||t.current){for(let t of e)u.current.get(t)?.abort(),v(t);t.current=0,n.current=0,r.current={sent:0,total:0,startedAt:0,fullAt:0},o(null),s(null),G(`Uploads canceled`)}}function E(t){if(t.finalized||t.done<t.started||!t.closed)return;t.finalized=!0,i.current.delete(t),a.current===t&&(a.current=null);let n=t.slots.filter(e=>!!e);if(!n.length){G(t.fail??`Upload failed`);return}let r=n.join(` `);Ss(r);let o=t.target?d.current.find(e=>e.id===t.target.id&&e.running):null,s=!t.target||f.current===t.target.id,c=p.current,l=c?`${c}${c.endsWith(` `)?``:` `}${r}`:r;if(t.queue&&t.target){let i=(s?l:r).trim();if(y({text:i,repoDir:t.target.cwd,label:i.slice(0,40),targetSessionId:o?t.target.id:void 0,autoFire:!0})===null)return;x(i),s&&S(``),s&&kg(t.target.id)&&e.setActiveId(null),G(o?`Attached ${n.length} · ${Is(`idle`,{online:m.current.status===`open`,holder:`desktop`})}`:`Attached ${n.length} · waiting in this repo's backlog — it opens a session of its own when it runs`)}else if(t.submit&&o){let e=s?l:r;if(!b(o.id,o.cwd,e,e.trimStart().startsWith(`/`)?`command`:`prompt`))return;x(e),s&&S(``),G(`Attached ${n.length} · submitted`)}else s?(S(l),G(t.submit&&!kg(t.target?.id)?`Attached ${n.length} · session gone, in box`:`Attached ${n.length} · ready`)):G(`Attached ${n.length} · copied (switched away)`)}return{ensureUploadBuf:C,queueUpload:w,cancelUploads:T,settleUploads:E}}function l_(e){let{ackTimers:t,outboxRef:n,serialWatchRef:r}=e,i=e,a=t=>e.writeOutbox(t),o=t=>e.flushOutbox(t),s=(t,n,r)=>e.failOutbox(t,n,r),c=()=>e.releaseLane(),l=e.applyDeliverySettled,u=(t,n,r)=>e.failPendingCreates(t,n,r),d=(t,n)=>e.adoptPendingSession(t,n),f=(t,n)=>e.holdForLaunch(t,n);function p(e){let r=t.current.get(e.ackId);r!=null&&(clearTimeout(r),t.current.delete(e.ackId)),e.ok?a(n.current.filter(t=>t.ackId!==e.ackId)):s(e.ackId,e.reason||`could not queue`),c()}function m(e){let o=t.current.get(e.ackId);o!=null&&(clearTimeout(o),t.current.delete(e.ackId));let l=n.current.find(t=>t.ackId===e.ackId);gf(e.ackId,e.ok,e.runId,e.reason),l?.op?.t===`signin.continue`&&G(e.reason||(e.ok?`continuing after the sign-in`:`nothing was continued`)),e.ok?(a(n.current.filter(t=>t.ackId!==e.ackId)),l&&qi(l)&&(l.serial&&e.sessionId&&(r.current=[...r.current.filter(e=>e.group!==l.serial),{group:l.serial,sessionId:e.sessionId,at:Date.now()}]),e.sessionId?(a(Me(n.current,l.sessionId,e.sessionId,Date.now(),l.ackId)),d(l.ackId,e.sessionId)):e.launchId?f(l.sessionId,l.ackId):u(l.sessionId,`the session was never named — re-aim these or discard them`,l.ackId)),l?.focus&&e.sessionId&&i.focusSession(e.sessionId)):(s(e.ackId,e.reason||`could not start`,`refused`),l?.op?.t===`intent.requeue`&&G(e.reason||`it was not put back — the desktop refused it`)),c()}function h(e){let r=t.current.get(e.ackId);r!=null&&(clearTimeout(r),t.current.delete(e.ackId));let i=n.current.find(t=>t.ackId===e.ackId);if(e.ok)e.state===`forked`?G(e.reason||`forked into a new session`):i&&If(Date.now()-i.ts),i?.answer&&Fa(Ug(i.answer.label)),a(n.current.filter(t=>t.ackId!==e.ackId)),c();else if(e.retryable)a(n.current.map(t=>t.ackId===e.ackId&&t.status===`pending`?{...Ng(t,!1),waitReason:e.reason||void 0}:t)),c();else if(e.state===`rescued`)a(n.current.filter(t=>t.ackId!==e.ackId)),G(e.reason||`that session is gone — the words are a backlog item now`),c();else{if(s(e.ackId,e.reason||`session gone`,e.state===`unconfirmed`||e.state===`unsubmitted`||e.state===`stale`?e.state:`other`),e.state===`stale`){let e=i?.answer;G(e?`“${e.label}” wasn't sent — that question is gone: ${e.question.slice(0,60)}`:`answer not sent — that question is gone`)}else e.state===`unsubmitted`&&G(`prompt is in the composer but Return didn't take — open the session and press Return`);c()}}function g(e){for(let t of e.items)l(t)}function _(e){l(e.item)}function v(e){i.setLaunches(e.launches);for(let t of e.launches)(t.state===`failed`||t.state===`canceled`)&&u(`create:${t.cwd}`,t.reason||`the session never opened`,t.id)}function y(e){a(Me(n.current,`create:${e.cwd}`,e.sessionId,Date.now(),e.id)),d(e.id,e.sessionId),o()}function b(e){let t={budget:e.budget,verdict:e.verdict,...e.periods?{periods:e.periods}:{}};i.setBudget(t),i.budgetRef.current=t,e.verdict.blocked||o()}return{onBacklogAck:p,onOpAck:m,onInputAck:h,onDeliveryList:g,onDeliverySettled:_,onLaunchList:v,onLaunchOpened:y,onBudget:b}}function u_(e,t,n){if(!Array.isArray(e)||!e.length)return{doc:t,n:0};let r=new Set(t.notes.map(e=>e.id)),i=new Map(t.tombs.map(e=>[e.id,e.gone])),a=new Map,o=t;for(let t of e){if(!t||typeof t!=`object`)continue;let e=t;if(typeof e.id!=`string`||!e.id||typeof e.text!=`string`||!e.text.trim()||r.has(e.id))continue;let s=typeof e.ts==`number`&&Number.isFinite(e.ts)?e.ts:n,c=i.get(e.id);if(c!==void 0&&c>=s)continue;let l=a.get(e.id);if(l!==void 0&&l>=s)continue;let u={id:e.id,text:e.text,ts:s},d=Array.isArray(e.steps)?e.steps.filter(e=>typeof e==`string`&&!!e.trim()):[];d.length&&(u.steps=d),typeof e.cwd==`string`&&e.cwd&&(u.cwd=e.cwd),o=xe(o,u),a.set(e.id,s)}return{doc:o,n:a.size}}function d_(){if(pt(U.padRescueMigrated))return 0;let e=()=>lt(U.padRescueMigrated,String(Date.now())),{doc:t,n}=u_(St(U.padRescue,[]),aa(),Date.now());return n?Io(t)?(e(),n):0:(e(),0)}function f_(e){if(pt(U.giveupsMigrated))return e;let t=St(U.giveups,[]);if(lt(U.giveupsMigrated,String(Date.now())),!Array.isArray(t)||!t.length)return e;let n=new Set(e.map(e=>e.ackId)),r=new Map(Fi().map(e=>[e.id,e])),i=[];for(let e of t){if(!e||e.retriedAt||e.ackId&&n.has(e.ackId)||e.bytes||e.kind===`file`||e.kind===`answer`)continue;let t=e.padId?r.get(e.padId):void 0,a=(t?[t.text,...t.steps??[]].join(`
|
|
3
3
|
|
|
4
4
|
`):e.text??``).trim();if(!a)continue;let o=e.cwd??``;i.push({ackId:Mr(),sessionId:o||`unknown`,cwd:o,text:a,ts:e.ts??Date.now(),status:`failed`,mode:`backlog`,label:a.slice(0,40),failedAt:e.ts??Date.now(),failState:e.failState,reason:e.reason?`${e.reason}${t?``:e.clipped?` (only the shortened copy was kept)`:``}`:`this one never reached a session`})}return i.length?[...e,...i.sort((e,t)=>e.ts-t.ts)]:e}function p_(e){Ec(Ci);let t=ud(bf),n=ud(mu),{conn:r,...i}=e,{status:a,connRef:s,reconnectAsk:c,setReconnectAsk:l}=r,{sessions:u}=i,d=mc(u),p=mc(i.backends),m=mc(i.activeId),h=no(`confirmQueue`),[g,v]=(0,Z.useState)(null),y=(0,Z.useRef)(null),[b,x]=(0,Z.useState)([]),S=mc(b),[,C]=(0,Z.useState)(0),w=t.some(e=>e.status===`pending`||e.status===`queued`&&e.retryAt!=null);(0,Z.useEffect)(()=>{if(!w)return;let e=window.setInterval(()=>C(e=>e+1),1e3);return()=>window.clearInterval(e)},[w]);let T=vg(t.some(e=>e.status!==`failed`),Sg),D=(0,Z.useRef)(t),O=(0,Z.useRef)(new Map),ee=(0,Z.useRef)(new Set),A=(0,Z.useRef)(new Map),te=(0,Z.useRef)(new Set),j=(0,Z.useRef)(new Set),ne=(0,Z.useRef)(new Set),M=(0,Z.useRef)([]),N=(0,Z.useRef)(new Map),P=(0,Z.useRef)(!1),re=(0,Z.useRef)(null),F=(0,Z.useRef)(new Map),{pendingKept:I,pendingEntry:L,pendingSession:ie}=r_(i.activeId,t,u),R=s_(),ae={...i,connRef:s,status:a,reconnectAsk:c,setReconnectAsk:l,sessionsRef:d,backendsRef:p,activeIdRef:m,getActive:()=>u.find(e=>e.id===i.activeId)??ie,budgetRef:y,setBudget:v,launchesRef:S,setLaunches:x,serialSessionsRef:no(`serialSessions`),confirmQueueRef:h,autoSendRef:no(`autoSend`)},z=ae,B={...ae,outbox:t,outboxRef:D,ackTimers:O,uploadsInFlight:ee,uploadAborts:A,busyLanesRef:te,budgetHeldLanesRef:j,busySerialRef:ne,serialWatchRef:M,holdQueueRef:P,flushIdleReason:re,queueBlockedRef:F,setQueueBlocked:e=>mu.set(e),pendingKept:I,pendingEntry:L,up:R},oe=e=>B.writeOutbox(e),se=e=>B.flushOutbox(e),ce=(e,t)=>B.retainUploadBytes(e,t),V=(e,t,n)=>B.failPendingCreates(e,t,n),H=(e,t)=>B.failDependentUploads(e,t);function ue(e){let t=d.current.find(t=>t.id===e);if(!t)return null;let n=k({...Yf(t,p.current),turnActive:void 0});return n===`limit`?`blocked on a usage limit — it goes out at the reset`:n===`auth`?`that session is signed out — it goes out once you sign in there`:n===`net`?`the desktop is retrying that session's last turn after a network error — it goes out once that gets through`:n===`awaitingAnswer`?t.awaitingInput?`a dialog is open in that session — answer it first`:`a question is on screen in that session — answer it first`:null}function de(e){return br(e),D.current=e,bf.set(e),ts(e.filter(e=>e.status!==`failed`).length),e}function pe(e,t=!1){let n=D.current,r=t?f(n,e.sessionId):n.length,i=[...n.slice(0,r),e,...n.slice(r)];if(i.length>500){let e=i.length-500,t=new Set(i.filter(e=>e.status!==`failed`).slice(0,e).map(e=>e.ackId));t.size&&(i=i.map(e=>t.has(e.ackId)?(Mn(),{...e,status:`failed`,reason:`queue full — older messages were pushed out`,failedAt:Date.now()}):e),G(`queue full — ${t.size} older message${t.size>1?`s`:``} stopped; their words are in ${fd.activity}`))}if(i.length>1e3){let e=i.filter(e=>e.status===`failed`),t=new Set(e.slice(0,i.length-np).map(e=>e.ackId));t.size&&(i=i.filter(e=>!t.has(e.ackId)),G(`${t.size} of the oldest failed sends had to be dropped — this device is out of room for them`))}oe(i)}function me(e){pe(e,!0)}function he(e,t,n){let r=D.current,i=r.find(t=>t.ackId===e&&t.status!==`failed`);if(i&&(Mn(),G(Lf(n,t,z.overlayRef.current===`queue`)),oe(r.map(r=>r.ackId===e?{...r,status:`failed`,reason:t,failState:n??`other`,failedAt:Date.now()}:r)),qi(i)&&V(i.sessionId,`the session never opened — ${t}`,i.ackId),i.mode===`upload`&&i.upload)){di(i.upload.relPath,`it never uploaded — ${t}`),ce(i,!1),H(i,`the image it refers to never uploaded — ${t}`);for(let e of z.launchesRef.current)e.state===`waiting`&&e.needs.includes(i.upload.relPath)&&s.current.send({t:`launch.cancel`,id:e.id})}}function ge(e){if(!e.ackId||e.verdict===`open`)return;let t=D.current.find(t=>t.ackId===e.ackId&&t.status===`failed`);if(!t)return;if(e.verdict===`landed`){oe(D.current.filter(e=>e.ackId!==t.ackId)),G(`“${t.text.slice(0,40)}${t.text.length>40?`…`:``}” did run after all — cleared from the queue`);return}let n=e.verdict===`composer`?`still in that session's composer — open it and press Return`:e.reason??(e.verdict===`absent`?`checked — it never landed`:`still unreadable — the desktop could not tell`);oe(D.current.map(e=>e.ackId===t.ackId?{...e,reason:n,hostSettled:!0}:e))}Object.assign(B,{writeOutbox:de,addOutbox:pe,addOutboxFirstInLane:me,failOutbox:he,applyDeliverySettled:ge,holdWall:ue}),Object.assign(B,a_(B)),Object.assign(B,i_(B)),Object.assign(B,o_(B)),Object.assign(B,c_(B));let _e=l_(B);(0,Z.useEffect)(()=>{if(a!==`open`)return;let e=D.current.filter(e=>e.status===`queued`&&e.offline&&!e.armed);if(h.current&&e.length>0){P.current=!0,l(!0),se();return}P.current=!1;let t=se();if(t>0){let e=D.current.filter(e=>e.status!==`failed`).length;G(e>t?`sending ${e} queued messages…`:`sent ${t} queued message${t>1?`s`:``}`)}},[a]);let ve=t.filter(e=>e.status===`queued`&&e.offline&&!e.armed);(0,Z.useEffect)(()=>{c&&!ve.length&&(P.current=!1,l(!1))},[c,ve.length]),(0,Z.useEffect)(()=>{if(a===`open`)return;let e=D.current.filter(e=>e.status===`pending`&&e.mode!==`upload`);if(!e.length)return;for(let t of e){let e=O.current.get(t.ackId);e!=null&&(clearTimeout(e),O.current.delete(t.ackId))}let t=new Set(e.map(e=>e.ackId));oe(D.current.map(e=>t.has(e.ackId)?{...e,status:`queued`,attempts:Math.max(0,(e.attempts??1)-1),retryAt:void 0,waitReason:void 0}:e))},[a]),(0,Z.useEffect)(()=>{let e=window.setInterval(()=>{se()},Cg);return()=>window.clearInterval(e)},[]);let ye=t.filter(e=>e.status===`queued`).length,be=(0,Z.useRef)(ye);be.current=ye,(0,Z.useEffect)(()=>{let e=`queue`,t=()=>navigator.serviceWorker?.getRegistration?.(),n=()=>{try{t()?.then(t=>t?.getNotifications({tag:e}).then(e=>e.forEach(e=>e.close())).catch(()=>{})).catch(()=>{})}catch{}},r=()=>{let r=be.current;if(r<=0)n();else if(`Notification`in window&&Notification.permission===`granted`)try{t()?.then(t=>t?.showNotification(`Messages still queued`,{body:`${r} message${r>1?`s`:``} waiting to go out. Open ${fe.name} to send ${r>1?`them`:`it`}.`,tag:e,silent:!0})).catch(()=>{})}catch{}},i=()=>{document.visibilityState===`hidden`?r():n()};return window.addEventListener(`pagehide`,r),document.addEventListener(`visibilitychange`,i),()=>{window.removeEventListener(`pagehide`,r),document.removeEventListener(`visibilitychange`,i)}},[]),(0,Z.useEffect)(()=>{if(!(ye>0))try{navigator.serviceWorker?.getRegistration?.()?.then(e=>e?.getNotifications({tag:`queue`}).then(e=>e.forEach(e=>e.close())).catch(()=>{})).catch(()=>{})}catch{}},[ye]),(0,Z.useEffect)(()=>{let e=e=>E(Yf(e,p.current));te.current=new Set(u.filter(e).map(e=>e.id));let t=zg(u),n=Bg(j.current,t);j.current=t;{let e=o(Pa(u,p.current),M.current,Date.now());ne.current=e.busy,M.current=e.watches}let r=!1,i=N.current;for(let t of u){let n=e(t);i.get(t.id)&&!n&&(r=!0),i.set(t.id,n)}let a=new Set(u.map(e=>e.id));for(let e of i.keys())a.has(e)||i.delete(e);(r||n)&&se()},[u,i.backends]);let[xe,Se]=(0,Z.useState)(0);(0,Z.useEffect)(()=>ri(()=>Se(e=>e+1)),[]),(0,Z.useEffect)(()=>{let e=t.filter(e=>e.status===`queued`||e.status===`pending`).length;Jf(e+wr(_))},[t,xe]),(0,Z.useEffect)(()=>{let e=D.current.map(e=>e.status===`pending`?{...e,status:`queued`,retryAt:void 0,waitReason:void 0}:e),t=new Set(e.filter(qi).map(e=>e.sessionId)),n=new Set(e.filter(qi).map(e=>e.ackId)),r=e=>e.pendingCreate&&(e.createAck?!n.has(e.createAck):!t.has(e.sessionId));e=e.map(e=>r(e)?(Mn(),{...e,pendingCreate:void 0,status:`failed`,reason:`the session it was queued for is gone`,failedAt:Date.now()}):e),oe(f_(e));let i=d_();i&&G(le(i))},[]);let Ce=B,we=(...e)=>Object.fromEntries(e.map(e=>[e,Ce[e]]));return{...we(`writeOutbox`,`addOutbox`,`addOutboxFirstInLane`,`failOutbox`,`applyDeliverySettled`,`holdWall`),...we(`retainUploadBytes`,`ackWindowFor`,`nextRound`,`armAckTimeout`,`goneLanes`,`flushOutbox`,`idleReason`,`releaseLane`,`uploadRefusal`,`guardUploadRefs`,`guardChain`,`submitInput`,`queueOp`,`queueImageUpload`,`runUpload`,`rewriteQueuedPath`,`armLane`,`queueBacklog`,`answerPrompt`),...we(`enterPending`,`enterOldestPending`,`enterLater`,`retryPendingCreate`,`adoptPendingSession`,`queueSessionPrompt`,`holdForLaunch`,`failPendingCreates`,`failDependentUploads`),...we(`restoreOutbox`,`dismissOutbox`,`editQueued`,`retargetQueued`,`handToDesktop`,`toggleHoldQueued`,`toggleSerialQueued`,`scheduleQueueRows`,`dropScheduleQueue`,`removeQueued`,`addPromptToQueuedCreate`,`moveQueued`,`sendQueuedNow`,`retryFailedQueued`,`restoreQueued`,`repoIdOfEntry`),..._e,entries:t,outboxRef:D,blocked:n,holdQueueRef:P,flushIdleReason:re,parkedSends:ve,sendSettled:T,budget:g,launches:b,laneLabel:e=>Ig(e,u),PENDING_PREFIX:Tg,isPendingId:Eg,pendingLaneId:Dg,laneFor:jg,pendingEntry:L,pendingSession:ie,uploads:{uploading:R.uploading,parking:R.parking,upProg:R.upProg,current:()=>R.uploadBufRef.current,ensureUploadBuf:Ce.ensureUploadBuf,queueUpload:Ce.queueUpload,settleUploads:Ce.settleUploads,cancelUploads:Ce.cancelUploads,parkingRef:R.parkingRef,uploadBufRef:R.uploadBufRef,allBufsRef:R.allBufsRef,uploadPending:R.uploadPending,uploadRowLinger:R.uploadRowLinger}}}function m_(e,t,n){if(n?.v===1)return!1;let r=t?.model;if(!r)return!1;let i=fu(e,t?.backend)?.models.where;return i?i[r]===`hosted`:!1}function h_(){let e=St(U.hostedAck,null);return e&&typeof e.v==`number`?e:null}function g_(e=Date.now()){let t={at:e,v:1};return dt(U.hostedAck,t),t}function __(){Ct(U.hostedAck)}var Q=Ap();function v_({primary:e,targets:t,onOpen:n,onClose:r}){let[i,a]=(0,Z.useState)(null),[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)(``),u=tc(e.id,()=>el.gitBranches(e.id)),d=u.data;function f(n){if(e.branch===n)return e.worktreePath;let r=t.find(t=>t.repoName===e.repoName&&t.branch===n);return r?r.worktreePath:null}async function p(t){s(null);let r=f(t);if(r){n(r,`${e.repoName} · ${t}`);return}a(t);let i=await el.newWorktree(e.id,t);a(null),i.path?n(i.path,`${e.repoName} · ${i.branch??t}`):s(i.error||`could not create worktree`)}return(0,Q.jsxs)(`div`,{className:`sheet`,children:[(0,Q.jsx)(pa,{title:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(th,{size:16}),` `,e.repoName,` · branch`]}),onClose:r}),(0,Q.jsxs)(`div`,{className:`form`,children:[(0,Q.jsx)(`input`,{className:`search`,placeholder:`Filter, or type a new branch name…`,value:c,onChange:e=>l(e.target.value),onKeyDown:e=>{e.key===`Enter`&&c.trim()&&p(c.trim())}}),c.trim()&&!d?.some(e=>e.name===c.trim())&&(0,Q.jsxs)(`button`,{className:`send`,disabled:!!i,onClick:()=>p(c.trim()),children:[(0,Q.jsx)(pm,{size:16}),` Create & open “`,c.trim(),`”`]})]}),o&&(0,Q.jsx)(`div`,{className:`err`,children:o}),(0,Q.jsxs)(`div`,{className:`list`,children:[(0,Q.jsx)(ar,{res:u,empty:!d?.length,thing:`branches`,noun:`branch list`,children:`No local branches.`}),d?.filter(e=>e.name.toLowerCase().includes(c.trim().toLowerCase())).map(e=>{let t=!!f(e.name);return(0,Q.jsxs)(Yr,{as:`button`,disabled:i===e.name,onClick:()=>p(e.name),children:[(0,Q.jsx)(`span`,{className:`gstat ${e.current?`g-added`:``}`,children:e.current?`●`:`○`}),(0,Q.jsx)(zr,{className:`mono`,children:e.name}),(0,Q.jsx)(Y,{children:i===e.name?`creating…`:e.current?`primary`:t?`worktree`:`new worktree`})]},e.name)})]})]})}function y_({cur:e,backends:t,modelInput:n,setModelInput:r,submitInput:i,relaunch:a,sessionCan:o,sessionCant:s,onClose:c}){let l=Rn(t,e.backend),u=o(e,`slash`),d=ol(t,e.backend),f=t=>{i(e.id,e.cwd,`/model ${t}`,`command`),c(),G(`/model ${t}`)},p=t=>a(e,t),m=e=>u?f(e):p({model:e}),h=Hf(t,e.backend,u),g=t=>{h?(i(e.id,e.cwd,`/effort ${t}`,`command`),c(),G(`/effort ${t}`)):p({effort:t})};return(0,Q.jsxs)(`div`,{className:`sheet`,children:[(0,Q.jsx)(pa,{title:`Switch model`,onClose:c}),(0,Q.jsxs)(Wo,{children:[`Current: `,Vt(e.model)||`default`,e.effort?` · ${e.effort}`:``,`.`,` `,u?(0,Q.jsxs)(Q.Fragment,{children:[`Picking a model sends `,(0,Q.jsx)(`span`,{className:`mono`,children:`/model`}),` to this session.`]}):`Picking a model is a launch flag here — it kills and relaunches this session.`]}),(0,Q.jsxs)(`div`,{className:`list`,children:[l.aliases.length>0&&(0,Q.jsx)(`div`,{className:`section`,children:`Aliases`}),l.aliases.map(t=>(0,Q.jsxs)(Yr,{as:`button`,onClick:()=>m(t),children:[(0,Q.jsx)(zr,{className:`mono`,children:t}),e.model===t&&(0,Q.jsx)(ns,{tone:`ok`,children:`current`})]},t)),l.ids.length>0&&(0,Q.jsx)(`div`,{className:`section`,children:`Versions`}),l.ids.map(t=>(0,Q.jsxs)(Yr,{as:`button`,onClick:()=>m(t),children:[(0,Q.jsx)(zr,{className:`mono`,children:t}),e.model===t&&(0,Q.jsx)(ns,{tone:`ok`,children:`current`})]},t)),(0,Q.jsx)(`div`,{className:`section`,children:`Custom`}),l.freeText&&(0,Q.jsx)(Wo,{children:Os(t,e.backend)}),(0,Q.jsxs)(`div`,{className:`form`,children:[(0,Q.jsx)(`input`,{className:`search mono`,placeholder:l.ids[0]?`e.g. ${l.ids[0]}`:`model id`,value:n,onChange:e=>r(e.target.value),onKeyDown:e=>{e.key===`Enter`&&n.trim()&&(m(n.trim()),r(``))}}),(0,Q.jsx)(`button`,{className:`send`,onClick:()=>{n.trim()?(m(n.trim()),r(``)):G(`type a model id first`)},children:u?`Send /model`:`Relaunch on it`})]}),u?(0,Q.jsx)(Yr,{as:`button`,onClick:()=>{i(e.id,e.cwd,`/model`,`command`),c()},children:(0,Q.jsx)(zr,{children:`Open the model picker…`})}):(0,Q.jsx)(so,{cants:[{label:`the CLI’s own model picker`,reason:s(e,`slash`)}]})]}),d.length>0?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Wo,{children:h?(0,Q.jsxs)(Q.Fragment,{children:[`Picking an effort sends `,(0,Q.jsx)(`span`,{className:`mono`,children:`/effort`}),` to this session.`]}):`Effort is a launch flag here — picking it kills + relaunches this session.`}),(0,Q.jsx)(`div`,{className:`form`,children:(0,Q.jsx)(`div`,{className:`annot-tools`,children:d.map(t=>(0,Q.jsx)(J,{className:e.effort===t?`active`:``,onClick:()=>g(t),children:t},t))})})]}):(0,Q.jsx)(so,{cants:[{label:`effort`,reason:s(e,`effort`)??`this session has no effort setting`}]})]})}function b_(e){let{backends:t,launch:n,setOverlay:r}=e;return{branches:()=>e.branchPick?(0,Q.jsx)(v_,{primary:e.branchPick,targets:e.repos,onClose:()=>{r(null),e.setBranchPick(null)},onOpen:(t,n)=>{r(null),e.setBranchPick(null),e.openCwd(t,n)}}):null,new:()=>(0,Q.jsx)(Xs,{root:e.root,repos:e.repos,onClose:()=>r(null),onChanged:e.refreshRepos,onOpen:e.openCwd,backends:Xn(t)?[...Vs(t)]:void 0,backend:n.backend,onBackend:e.pickBackend,onBuildApp:lu}),launchask:()=>{if(!e.launchAskFor)return null;let i=e.launchAskFor;return(0,Q.jsx)(xc,{title:i.title,backends:t,defaults:n,budget:i.budget,onRecheck:e.recheckBackends,onStart:(t,n)=>{e.setLaunchAskFor(null),r(null),i.run(t,n)},onClose:()=>{e.setLaunchAskFor(null),r(null),i.onCancel?.()}})},hostedack:()=>{if(!e.hostedAskFor)return null;let n=e.hostedAskFor;return(0,Q.jsx)(hf,{title:n.title,backends:t,launch:n.launch,onAccept:()=>{g_(),e.setHostedAskFor(null),r(null),n.run(n.launch,n.budget)},onClose:()=>{e.setHostedAskFor(null),r(null),n.onCancel?.()}})},model:()=>e.active?(0,Q.jsx)(y_,{cur:e.active,backends:t,modelInput:e.modelInput,setModelInput:e.setModelInput,submitInput:e.submitInput,relaunch:e.relaunch,sessionCan:e.sessionCan,sessionCant:e.sessionCant,onClose:()=>r(null)}):null}}var x_=`This desktop can’t open a shell — it needs an update.`,S_=1200;function C_(e){let{backends:t,setOverlay:n,geomRef:r,setRepos:i,setReposAt:a,setReposFailAt:o}=e,s=no(`launchAsk`),{queueOp:c,enterPending:l,queueSessionPrompt:u}=e.queue,d=e.repoForCwd,[f,m]=(0,Z.useState)(null),[h,g]=(0,Z.useState)(null),[_,v]=(0,Z.useState)(yi),[y,b]=(0,Z.useState)(null),[x,S]=(0,Z.useState)(``),C=(0,Z.useRef)(t);C.current=t;function w(){el.repos().then(e=>{i(e),Ta(e),a(Date.now()),Pt(`repos`)}).catch(()=>{o(Date.now())})}function T(e){v(t=>{let n={...t,...e};return Object.keys(n).forEach(e=>{n[e]||delete n[e]}),dt(U.launch,n),n})}let E=e=>ep(e,C.current);function D(e){let{launch:t,...n}=e,i=t?mn(t,C.current):null;return i&&G(i),{t:`session.create`,...n,cols:r.current.cols,rows:r.current.rows,...t?{launch:E(t)}:null}}function O(e,t,r){let i=Jc(C.current,t.launch?.backend);return i&&!ra(s.current,!!t.resume,!!t.override)?(G(`Not started — ${i}`),t.onCancel?.(),!0):ra(s.current,!!t.resume,!!t.override)?(m({title:e,run:(n,i)=>{k(e,n,r,t.onCancel,i)||r(n,i)},onCancel:t.onCancel,budget:t.budget}),n(`launchask`),!0):!t.resume&&k(e,t.launch,r,t.onCancel,void 0)}function k(e,t,r,i,a){return!t||!m_(C.current,t,h_())?!1:(W(`overlay:hostedack`),g({title:e,launch:t,run:r,onCancel:i,budget:a}),n(`hostedack`),!0)}let ee=(e,n)=>Af(t,e?fc(e):void 0,n),A=(e,n)=>cd(t,e?fc(e):void 0,n),te=e=>{if(e.unadopted)return(0,Z.createElement)(gr,null,e.unadopted);if($s(t,e.launch?.backend)||Hi(e))return null;let n=cd(t,e.launch?.backend,`resumePick`);return n?(0,Z.createElement)(gr,null,n):null},j=e=>T({backend:e,model:void 0,effort:void 0});function ne(t){let n=e.openingCwds().get(t.worktreePath);n&&G(n.status===`pending`?`${n.n>1?`${n.n} already opening`:`one already opening`} in ${t.repoName} — this is another`:`${n.n>1?`${n.n} already queued`:`one already queued`} in ${t.repoName} — this is another`),!O(p(t),{launch:_},(e,n)=>M(t,e,n??void 0))&&M(t,_)}function M(e,t,n){let r=Mr();c(D({cwd:e.worktreePath,title:p(e),launch:t,...n?{budget:n}:{}}),`create:${e.worktreePath}`,`open ${p(e)}`,{cwd:e.worktreePath,focus:!0,ackId:r})&&W(`action:repo.new.offline`),l(r)}function N(e){let t=xi(C.current);return t?(W(`action:shell.new`),I(e.worktreePath,`shell · ${p(e)}`,!1,void 0,{backend:t.id})):(G(x_),null)}function P(e){let t=xi(C.current);return t?(W(`action:shell.companion`),I(e.cwd,`shell · ${e.title}`,!1,void 0,{backend:t.id},void 0,void 0,e.id)):(G(x_),null)}function re(){return xi(C.current)?null:x_}function F(t,n={}){let r=xi(C.current);if(!r)return G(x_),null;let i=bl(),a=n.cwd||e.root,o=Gg({remembered:Xg.get()[t]??null,sessions:i.world.sessions,cwd:a,isShell:e=>$s(C.current,e),pendingAlive:e=>i.queue.entries.some(t=>t.ackId===e&&t.status!==`failed`)}),s=null;if(o.do===`attach`){let e=i.world.sessions.find(e=>e.id===o.id);W(`action:shell.focus`),i.nav.attach(e),s=e.id}else o.do===`enter`?(l(o.ack),s=Dg(o.ack)):(W(`action:shell.new`),s=I(a,n.title||`shell · ${Td(a)}`,!1,void 0,{backend:r.id}));return s?(Qg(t,s,n.back),s):null}function I(e,t,n=!1,r,i,a,o,s){if(n&&$s(C.current,i?.backend)&&(n=!1,r=void 0,a=void 0),O(t,{resume:n,override:!!i,launch:i??_},(i,c)=>{I(e,t,n,r,i,a,c===void 0?o:c??void 0,s)}))return null;W(n?`action:session.resume`:`action:session.new`);let u=Mr();return c(D({cwd:e,title:t,resume:n,resumeMode:r,resumeSessionId:a,launch:i??_,...o?{budget:o}:{},...s?{companionOf:s}:{}}),`create:${e}`,`${n?`resume`:`open`} ${t}`,{cwd:e,focus:!0,ackId:u}),l(u),Dg(u)}async function L(e){let t=d(e)?.id;if(!t)return null;try{let e=await Promise.race([el.gitStatus(t),new Promise(e=>setTimeout(()=>e(null),S_))]),n=e?.files.length??0;return!e||e.clean||n===0?null:`The worktree has ${n} uncommitted change${n===1?``:`s`} — those edits stay exactly as they are, but the reopened session won't remember making them.`}catch{return null}}async function ie(e,t){let n=t.sourceId||Hi(e);if(!n){G(`This session's conversation is not identified yet, so it cannot be cut here.`);return}let r={...t,sourceId:n};if(r.mode===`reset`){let t=await L(e.cwd),n=[`This session reopens holding the conversation up to just before turn #${r.n}. #${r.n} and everything after it are left behind.`,...e.turnActive?[`A turn is running right now — it will be interrupted.`]:[],`Nothing is deleted: the later turns stay on disk under this conversation and stay listed in the archive. Deleting one is a separate act.`,`No file in the repo is touched — only the conversation is rewound.`,...t?[t]:[]];if(!await So({title:`Reset to before #${r.n}?`,lines:n,confirmLabel:`Reset`}))return}let i=r.mode===`fork`?`${e.title} (before #${r.n})`:e.title,a={model:e.model,effort:e.effort,permissionMode:e.permissionMode,remoteControlled:e.remoteControlled,backend:e.backend},o=c(D({cwd:e.cwd,title:i,launch:a,resumeMode:`fork`,resumeSessionId:r.sourceId,forkAtTurn:r.turnId,...r.mode===`reset`?{replaceSessionId:e.id}:null}),`create:${e.cwd}`,r.mode===`fork`?`fork ${e.title} before #${r.n}`:`reset ${e.title} to before #${r.n}`,{cwd:e.cwd,focus:!0});G(o?`queued — the link dropped; it runs when it is back`:r.mode===`fork`?`forking before #${r.n} — a new session opens here`:`resetting to before #${r.n}…`)}function R(r,i,a){let o={model:r.model,effort:r.effort,permissionMode:r.permissionMode,remoteControlled:r.remoteControlled,backend:r.backend},s=E({...o,...i}),l=Hi(r),u=a?.prompt?.trim()||void 0,d=u?w_(u):[];c(D({cwd:r.cwd,title:r.title,launch:s,replaceSessionId:r.id,...u?{prompt:u}:{},...d.length?{needs:d}:{},...l?{resumeMode:`continue`,resumeSessionId:l}:{}}),`create:${r.cwd}`,`relaunch ${r.title} · ${Ja(s,vf(t,s.backend),t)}`,{cwd:r.cwd,focus:!a?.quiet||e.active?.id===r.id,frontOfLane:d.length>0}),!a?.quiet&&(n(null),G(`relaunch · ${Ja(s,vf(t,s.backend),t)}`))}function ae(e,t,n,r,i,a,o,s){if(O(t,{override:!!i,launch:i??_,onCancel:o,budget:s},(i,c)=>ae(e,t,n,r,i,a,o,c===void 0?s:c??void 0)))return;let d=i??_;W(`action:session.newprompt`);let f=n.map(e=>e.trim()).filter(Boolean),[p,...m]=f,h=w_(p??``),g=Mr(),v=c(D({cwd:e,title:t,prompt:p,launch:d,needs:h.length?h:void 0,...s?{budget:s}:{},...a?{resume:!0,resumeMode:`continue`}:{}}),`create:${e}`,p??`open ${t}`,{cwd:e,focus:!0,frontOfLane:h.length>0,ackId:g,serial:r});for(let t of m)u(e,t,g);l(g);let y=m.length>0;G(v?y?`queued — the session opens and runs ${f.length} prompts when the link is back`:`queued — the session opens and runs this when the link is back`:y?`starting… ${m.length} more queued behind it`:`starting…`)}return{launch:_,setLaunch:v,setLaunchOpt:T,pickBackend:j,wireLaunch:E,sessionCan:ee,sessionCant:A,reopenCant:te,refreshRepos:w,openRepo:ne,openShell:N,openCompanionShell:P,focusShell:F,shellCant:re,openCwd:I,runForkRequest:ie,startSessionWithPrompt:ae,relaunch:R,setBranchPick:b,sheets:b_({backends:t,launch:_,root:e.root,repos:e.repos,active:e.active,launchAskFor:f,setLaunchAskFor:m,hostedAskFor:h,setHostedAskFor:g,branchPick:y,setBranchPick:b,modelInput:x,setModelInput:S,setOverlay:n,submitInput:e.queue.submitInput,refreshRepos:w,openCwd:I,pickBackend:j,relaunch:R,sessionCan:ee,sessionCant:A,recheckBackends:()=>{bl().conn.send({t:`backends.recheck`})}})}}function w_(e){let t=new Set;for(let n of e.matchAll(/\.claude\/inbox\/[A-Za-z0-9._-]+/g))t.add(n[0]);return[...t]}var T_=e=>e.preventDefault();function E_(e){let{q:t,status:n,reconnectAsk:r,setReconnectAsk:i,autoSend:a,confirmQueue:o,pullRecords:s,setOverlay:c,stripSessionId:l}=e,{entries:u,parkedSends:d,sendSettled:f,holdQueueRef:p,flushIdleReason:m,flushOutbox:h,idleReason:g,restoreOutbox:_,dismissOutbox:v,laneLabel:y}=t,b=Date.now(),x=u.filter(e=>Bi(e,b)===`confirming`),S=u.filter(e=>Ka(Bi(e,b))),C=e=>Bi(e,b)===`retrying`,w=u.filter(e=>e.status===`queued`&&!C(e)),T=l&&n===`open`&&!p.current&&w.length>0&&w.every(e=>e.sessionId===l)?[]:w,E=u.filter(e=>e.status===`pending`||C(e)),D=E.length>0,O=r&&d.length>0,k=(0,Q.jsx)(Kr,{records:s,onRemove:e=>{W(`action:pull.strip.remove`);for(let t of e)Lt.remove(t.item.id);let t=e.filter(e=>!e.local).map(e=>({t:`pull.dismiss`,id:e.item.id})),n=`removed ${e.length===1?e[0].item.name:`${e.length} stopped downloads`}`;t.length?bl().conn.liveSendAll(t,n,`${n} here — the desktop's queue still lists ${t.length===1?`it`:`them`} until the link is back`):G(n)},onOpen:()=>{W(`overlay:pull`),c(`pull`)}}),ee=Pl(s,Cr()).length>0;return!O&&!S.length&&!x.length&&!T.length&&!D&&!ee&&!f?null:(0,Q.jsxs)(Q.Fragment,{children:[k,(0,Q.jsx)(hd,{records:s}),r&&d.length>0&&(0,Q.jsxs)(`div`,{className:`outbox-recover ask`,children:[(0,Q.jsx)(Qh,{size:14}),(0,Q.jsxs)(`span`,{children:[`Back online — send `,d.length,` message`,d.length>1?`s`:``,` you queued while offline?`]}),(0,Q.jsxs)(J,{onPointerDown:T_,onClick:()=>{W(`action:queue.confirm.send`);let e=h(!0);i(!1),G(e?`sending queued messages…`:g(`nothing left to send`))},children:[(0,Q.jsx)(Rh,{size:14}),` Send`]}),(0,Q.jsxs)(J,{onPointerDown:T_,onClick:()=>{W(`action:queue.confirm.review`),c(`queue`)},children:[(0,Q.jsx)(Xh,{size:14}),` Review`]}),(0,Q.jsxs)(J,{onPointerDown:T_,onClick:()=>{W(`action:queue.confirm.hold`),i(!1)},title:`keep them queued — nothing is sent until you release it`,children:[(0,Q.jsx)(X,{size:14}),` Hold`]})]}),S.length===0&&x.length===0&&w.length===0&&!D&&f&&(0,Q.jsxs)(`div`,{className:`outbox-recover sending`,children:[(0,Q.jsx)(wm,{size:14}),(0,Q.jsx)(`span`,{children:`sent`})]}),(S.length>0||x.length>0||T.length>0||D)&&(0,Q.jsx)(`div`,{className:`outbox-recover ${S.length?`failed`:x.length?`confirming`:T.length?`queued`:`sending`}`,children:S.length>0?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Gm,{size:14}),(0,Q.jsxs)(`span`,{children:[S.length,` message`,S.length>1?`s`:``,` not delivered`,S.length===1&&S[0].reason?` — ${S[0].reason}`:``]}),(0,Q.jsxs)(J,{onPointerDown:T_,onClick:_,children:[(0,Q.jsx)(Th,{size:14}),` Restore`]}),(0,Q.jsxs)(J,{onPointerDown:T_,onClick:()=>{W(`action:queue.manage`),Ql(S,`the messages that were not delivered`)},children:[(0,Q.jsx)(Xh,{size:14}),` Manage`]}),(0,Q.jsxs)(J,{onPointerDown:T_,onClick:v,children:[(0,Q.jsx)(X,{size:14}),` Dismiss`]}),S.length>1?(0,Q.jsxs)(`div`,{className:`outbox-which`,children:[S.slice(0,3).map(e=>(0,Q.jsxs)(`button`,{className:`outbox-which-row`,onPointerDown:T_,title:`open this one in ${fd.activity}`,onClick:()=>{W(`action:queue.which`),Ql([e],`the message you tapped`)},children:[(0,Q.jsx)(`span`,{className:`outbox-which-where`,children:y(e)}),(0,Q.jsx)(`span`,{className:`outbox-which-text`,children:Rg(e)})]},e.ackId)),S.length>3?(0,Q.jsxs)(`button`,{className:`outbox-which-row more`,onPointerDown:T_,onClick:()=>{W(`action:queue.which.more`),Ql(S,`the messages that were not delivered`)},children:[S.length-3,` more — open the list`]}):null]}):null]}):x.length>0?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(rg,{size:14}),(0,Q.jsx)(`span`,{children:Jl(x.length)}),(0,Q.jsxs)(J,{onPointerDown:T_,onClick:()=>{W(`action:queue.confirming`),Ql(x,`the messages the desktop is still confirming`)},children:[(0,Q.jsx)(Xh,{size:14}),` Which`]})]}):T.length>0?(0,Q.jsxs)(Q.Fragment,{children:[n===`open`?p.current?(0,Q.jsx)(Xp,{size:14}):(0,Q.jsx)(rg,{size:14}):(0,Q.jsx)(Bm,{size:14}),(0,Q.jsxs)(`span`,{children:[T.length,` queued`,p.current?` — held until you send them`:n===`open`?D?` — going out one per session`:m.current?` — ${m.current}`:` — going out one per session`:` — will send when the connection is back`]}),(0,Q.jsxs)(J,{onPointerDown:T_,onClick:()=>{W(`action:outbox.retry`),h(!0)||G(g(`nothing left to send`))},children:[(0,Q.jsx)(Th,{size:14}),` Send now`]}),(n!==`open`||p.current||!(a&&!o))&&(0,Q.jsxs)(J,{className:a&&!o?`active`:``,onPointerDown:T_,title:a&&!o?`queued messages go out by themselves as soon as the connection is back — tap to hold them instead`:`send everything queued the moment the connection is back, without asking`,onClick:()=>{let e=!(a&&!o);W(`action:outbox.auto`),K(`autoSend`,e),K(`confirmQueue`,!e),e&&(p.current=!1,i(!1),h()),G(e?`auto-send on — the queue goes out as soon as the link is back`:`auto-send off — the queue waits for “Send now”`)},children:[(0,Q.jsx)(Fh,{size:14}),` auto `,a&&!o?`on`:`off`]}),(0,Q.jsxs)(J,{onPointerDown:T_,onClick:()=>{W(`action:queue.manage`),Ql(T,`the messages still waiting to go out`)},children:[(0,Q.jsx)(Xh,{size:14}),` Manage`]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Jh,{size:14,className:`spin`}),(0,Q.jsx)(`span`,{children:Lg(E)}),(0,Q.jsxs)(J,{onPointerDown:T_,onClick:()=>{W(`action:queue.manage`),Ql(E,`the messages going out now`)},children:[(0,Q.jsx)(Xh,{size:14}),` Manage`]})]})})]})}function D_(e,t){if(!e||e.kind===`after`)return null;if(e.kind===`at`){if(e.rule.kind===`once`&&!(typeof e.rule.at==`number`&&e.rule.at>t))return null;let{name:n,...r}=e;return r}return e}function O_(e){return e===`now`||e===`idle`?e:null}function k_(e){return e===`this`||e===`new`?e:null}function A_(e,t,n,r,i=40){if(!t)return e;let a={...e[t],at:r};if(n.mode!==void 0){let e=O_(n.mode);e?a.mode=e:delete a.mode}if(n.when!==void 0){let e=D_(n.when,r);e?a.when=e:delete a.when}if(n.where!==void 0){let e=k_(n.where);e?a.where=e:delete a.where}let o={...e,[t]:a},s=Object.keys(o);if(s.length<=i)return o;s.sort((e,t)=>(o[e].at??0)-(o[t].at??0));for(let e of s.slice(0,s.length-i))delete o[e];return o}function j_(e,t){return t?O_(e[t]?.mode)??`now`:`now`}function M_(e,t){return t?k_(e[t]?.where)??`this`:`this`}function N_(e,t,n){return t?D_(e[t]?.when,n):null}function P_(e){return`When is set the way you last sent to ${e} — open When to change it`}function F_(e){let{connRef:t,liveSend:n,liveSendAll:r,queue:a,sessions:o,getVisibleRepos:s,intents:c,usage:l,launch:u,wireLaunch:d,geomRef:f,repoForCwd:m,startSessionWithPrompt:g,setOverlay:_,attach:v}=e,{pendingSession:y,budget:b}=a,{guardChain:x,guardUploadRefs:S,queueOp:C,submitInput:w,queueBacklog:T,writeOutbox:E,outboxRef:D,addOutbox:O,flushOutbox:k,queueImageUpload:ee}=a,A=a.entries,te=bs(),[j,ne]=(0,Z.useState)(null),M=(0,Z.useRef)(null);M.current=j;let N=(0,Z.useRef)(null),P=(0,Z.useRef)(St(U.sendMemory,{}));function re(e,t){let n=A_(P.current,e,t,Date.now());n!==P.current&&(P.current=n,dt(U.sendMemory,n))}function F(e,t){let n=t.kind===`at`?{kind:`at`,rule:t.rule,graceMin:t.graceMin}:t.kind===`after`?{kind:`after`,id:t.id,onlyIfOk:t.onlyIfOk,title:t.title}:{kind:t.kind},i=t.kind===`at`?Xe(t.rule):t.kind===`now`?Jt:se(t,Wr(t,l??void 0)),a=[...new Set(e.flatMap(e=>{let t=c.find(t=>t.id===e)?.cwd,n=t?m(t):null,r=n?V(n):t?Td(t):``;return r?[r]:[]}))],o=b?.verdict.blocked&&mo(e,c).length>0?b.verdict.resumeAt?h(b.verdict.resumeAt):`it clears`:null,s=t.kind===`at`?sp(e.length,i):Tf(e.length,i,a,o),u=t.kind===`at`?c.find(t=>t.id===e[0])?.cwd:void 0;return u&&yc(e[0],u),r(e.map(e=>({t:`intent.update`,id:e,patch:{trigger:n,...t.kind===`at`?{holdForHost:!!t.waitUntilFree}:{}}})),s,Js)}let I=(e,n)=>{let i=c.find(t=>t.id===e[0]),a=i?.trigger.kind===`at`?{kind:`at`,rule:i.trigger.rule,graceMin:i.trigger.graceMin,...i.holdForHost?{waitUntilFree:!0}:{}}:sa(36e5),u=!1;return(0,Q.jsx)(Hd,{seed:{retime:{ids:e},when:a,draftKey:`send.retime`},sessions:o,repos:s(),outbox:A,online:t.current.status===`open`,usage:l,intents:c,buildName:te,onAttach:async()=>[],onAnnotate:()=>{},onSend:t=>(u=F(e,t.when),u),onClose:()=>u?n.onSent():n.onCancel(),budgetHeld:b?.verdict.blocked?{note:Ge(b.verdict),resumeAt:b.verdict.resumeAt,ids:mo(e,c)}:null,onPastBudget:e=>{r(e.map(e=>({t:`intent.waive`,id:e,rung:`budget`,on:!0})),Eo(e.length),`no connection — the backlog lives on the desktop, so nothing here changed. Adding still queues.`)&&n.onSent()}})};function L(e,t){let n=e?o.find(t=>t.id===e&&t.running):void 0;return n?{kind:`session`,sessionId:n.id,cwd:n.cwd}:t?{kind:`repo`,cwd:t}:void 0}function ie(e){let t=e.target.kind===`repos`,n=e.payload.kind===`prompt`?e.payload.steps:[],r=n[0]??``;return{prompts:n.length?[...n]:[r],target:t&&e.target.kind===`repos`?{kind:`repos`,dirs:e.target.dirs,...e.budget?{budget:e.budget}:{},...e.launch?{launch:e.launch}:{},...e.flagWhenDone?{flagWhenDone:!0}:{}}:{kind:`repo`,cwd:e.cwd,...typeof e.closeWhenDone==`boolean`?{closeWhenDone:e.closeWhenDone}:{},...e.flagWhenDone?{flagWhenDone:!0}:{},...e.budget?{budget:e.budget}:{},...e.launch?{launch:e.launch}:{}},when:e.trigger.kind===`at`?{kind:`at`,rule:e.trigger.rule,graceMin:e.trigger.graceMin??120,name:e.label||be(e.title,r)||void 0,waitUntilFree:e.serial===!0&&e.holdForHost===!0||void 0}:void 0,cwdHint:e.cwd||null,scheduleId:e.id,origin:`Editing a schedule`}}function R(e){let t=e.action;return{prompts:t.kind===`backlog`&&t.steps?.length?[...t.steps]:[ot(t)],target:t.kind===`fanout`?{kind:`repos`,dirs:t.dirs,...t.budget?{budget:t.budget}:{},...t.launch?{launch:t.launch}:{}}:{kind:`repo`,cwd:t.repoDir,...t.kind===`backlog`&&typeof t.closeWhenDone==`boolean`?{closeWhenDone:t.closeWhenDone}:{},...t.kind===`backlog`&&t.flagWhenDone?{flagWhenDone:!0}:{},...t.kind===`backlog`&&t.budget?{budget:t.budget}:{},...t.kind===`backlog`&&t.launch?{launch:t.launch}:{}},when:{kind:`at`,rule:e.rule,graceMin:e.graceMin??120,name:be(e.name,ot(t))||void 0,waitUntilFree:e.waitUntilFree},cwdHint:t.kind===`fanout`?t.dirs[0]??null:t.repoDir,scheduleId:e.id,origin:`Editing a schedule`}}function ae(e){let t=(y?[...o,y]:o).find(t=>t.id===e);t&&v(t)}function z(e){let t=fo(Tt,(e.prompts?.length?e.prompts:[``]).join(`\f`),e.cwdHint);t===`kept`?G(i):t===`refused`&&G(B),N.current=null,ne(Pc(e,t)),_(`send`)}function oe(e,r){let i=e.prompts.map(e=>e.trim()).filter(Boolean),a=i[0]??``,o=a.slice(0,40),s=e=>e.trimStart().startsWith(`/`)?`command`:`prompt`;if(e.target.kind!==`shell`&&!x(i))return!1;let _=r.scheduleId?c.find(e=>e.id===r.scheduleId)??null:null,v=Ro(e,_);if(v.kind===`refuse`)return G(v.why),!1;if(v.kind===`patch`&&_){let t=e.target.kind===`repo`||e.target.kind===`repos`?e.target.budget:void 0;if(JSON.stringify(t??null)!==JSON.stringify(_.budget??null))return G(`a budget can't be changed on a row that is already waiting — remove the budget change, or post this as a new row`),!1;let r={payload:{kind:`prompt`,steps:i},trigger:e.when.kind===`after`?{kind:`after`,id:e.when.id,onlyIfOk:e.when.onlyIfOk,title:e.when.title}:e.when.kind===`at`?{kind:`at`,rule:e.when.rule,graceMin:e.when.graceMin}:{kind:e.when.kind===`idle`?`idle`:`now`},target:e.target.kind===`session`?{kind:`session`,sessionId:e.target.sessionId}:{kind:`repo`},cwd:e.target.kind===`session`||e.target.kind===`repo`?e.target.cwd:void 0,resume:e.target.kind===`repo`?!!e.target.resume:void 0,closeWhenDone:e.target.kind===`repo`?e.target.closeWhenDone??null:void 0,flagWhenDone:e.target.kind===`repo`?cs(e.target,e.when)??null:void 0,launch:e.target.kind===`repo`?e.target.launch?d(e.target.launch):null:void 0,holdForHost:e.when.kind===`at`?!!e.when.waitUntilFree:void 0,label:o};return W(`action:send.retime`),n({t:`intent.update`,id:_.id,patch:r},Xo(e.when),`no connection — this row's clock lives on the desktop and nothing here changed. Its words are still in the box.`)?(e.when.kind===`at`&&_.cwd&&yc(_.id,_.cwd),!0):!1}if(e.when.kind===`at`&&e.target.kind===`session`){let t=e.when,n=e.target,s={id:r.scheduleId??`i_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,6)}`,cwd:n.cwd,payload:{kind:`prompt`,steps:i},target:{kind:`session`,sessionId:n.sessionId},trigger:{kind:`at`,rule:t.rule,graceMin:t.graceMin},holdForHost:t.waitUntilFree||void 0,auto:!0,pinned:!0,label:o};if(W(`action:send.clockSession`),!S(i.join(`
|