cogpit 3.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +136 -90
- package/dist/web/assets/CommandPaletteHost-B-n0sXM6.js +1 -0
- package/dist/web/assets/{ConfigBrowser-CXvr5BFb.js → ConfigBrowser-DOdqaQra.js} +1 -1
- package/dist/web/assets/{HighlightedEditor-DWc-xoSc.js → HighlightedEditor-D75svkum.js} +1 -1
- package/dist/web/assets/{KeyboardShortcutsDialog-C1of2PBc.js → KeyboardShortcutsDialog-DeIXxXmj.js} +1 -1
- package/dist/web/assets/{MobileFileChanges-BAEIKapA.js → MobileFileChanges-Dze0jsvc.js} +1 -1
- package/dist/web/assets/{PluginsDialog-BgnTB0-z.js → PluginsDialog-qcJTbfeg.js} +1 -1
- package/dist/web/assets/{PreviewPanel-DgbgRibz.js → PreviewPanel-DChL85Uq.js} +1 -1
- package/dist/web/assets/{ProjectFilesPanel-BGpyS_aw.js → ProjectFilesPanel-DJ-_Lb_R.js} +3 -3
- package/dist/web/assets/{ProjectSwitcherModal-CEypvUNm.js → ProjectSwitcherModal-BUV_fZ5V.js} +1 -1
- package/dist/web/assets/{TerminalOutput-Dq6QP83Y.js → TerminalOutput-BCG6Ppu3.js} +1 -1
- package/dist/web/assets/{ThemeSelectorModal-DeYABHF9.js → ThemeSelectorModal-t2P0tZVJ.js} +1 -1
- package/dist/web/assets/WorkflowsPanel-Bv2RwtYI.js +1 -0
- package/dist/web/assets/WorktreePanel-F9QlbnAH.js +1 -0
- package/dist/web/assets/{edition-ui-CFlDe2_U.js → edition-ui-C0x29noh.js} +1 -1
- package/dist/web/assets/index-BO-Nd-ib.css +1 -0
- package/dist/web/assets/{index-DYugSKH5.js → index-BtmLHL6v.js} +4 -4
- package/dist/web/assets/{index-Ch-IpPaH.js → index-C4W7tiDS.js} +1 -1
- package/dist/web/assets/{index-Bm91RnFy.js → index-CRUYvx2l.js} +1 -1
- package/dist/web/assets/{index-DsnL-sXV.js → index-CW9tjG1S.js} +86 -86
- package/dist/web/assets/index-bXbR7jwp.js +1 -0
- package/dist/web/assets/{session-parser.worker-CXlsiJzz.js → session-parser.worker-CkTPpg3t.js} +11 -11
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/assets/CommandPaletteHost-fa5vgo7-.js +0 -1
- package/dist/web/assets/WorkflowsPanel-CNxUSC9Q.js +0 -1
- package/dist/web/assets/WorktreePanel-DJYEUobs.js +0 -1
- package/dist/web/assets/index-DVp2Xjmx.js +0 -1
- package/dist/web/assets/index-TCQKag8a.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as M,a as He,c as B,j as s}from"./vendor-react-gGw_S5I_.js";import{ap as We,U as Je,bF as Xe,B as V,b4 as Ze,aV as qe,A as Ce,b8 as et,bG as Oe,H as Ee,T as Ve,Z as Ae,bH as tt,bv as st,bu as nt,bt as it,bI as lt,bJ as ot,bK as at,bL as rt,J as xe,bM as ct,bN as dt,_ as ut,a1 as ft,bO as mt,bP as xt,bQ as ht,bR as gt,bS as pt,R as bt,bT as jt,L as wt,M as Nt,N as vt,O as yt,Q as St,af as It,p as _t,bU as Tt,bV as qt,q as Ct}from"./index-DsnL-sXV.js";import{b as kt,am as At,as as Qe,C as De,at as _e,ai as Et,au as Rt,aa as Mt,L as Lt,av as Ft,aw as Ot,a as $t,J as Dt}from"./vendor-ui-Br3ZTAXZ.js";import"./vendor-shiki-DOn6sF-i.js";import"./vendor-markdown-BE1gYnO9.js";const zt=4e3;function Vt(){const o=We(),[e,t]=M.useState([]),[n,i]=M.useState(!1),[a,r]=M.useState(null),c=M.useRef(!1),d=M.useRef(o.key);M.useEffect(()=>(c.current=!1,()=>{c.current=!0}),[]),M.useLayoutEffect(()=>{d.current=o.key},[o.key]);const f=M.useCallback(async()=>{const b=()=>c.current||d.current!==o.key;try{const x=await Je(Xe("/api/mission-control",o));if(b())return;if(!x.ok)throw new Error(`Mission Control request failed (${x.status})`);const g=await x.json();if(b())return;t(Array.isArray(g.summaries)?g.summaries:[]),r(null)}catch(x){if(b())return;r(x instanceof Error?x.message:"Failed to load Mission Control")}finally{b()||i(!1)}},[o]);M.useEffect(()=>{i(!0);const b=()=>{(typeof document>"u"||document.visibilityState==="visible")&&f()},x=()=>{document.visibilityState==="visible"&&f()};b();const g=setInterval(b,zt);return document.addEventListener("visibilitychange",x),()=>{clearInterval(g),document.removeEventListener("visibilitychange",x)}},[f]);const m=M.useMemo(()=>{const b=new Map;for(const x of e)b.set(x.sessionId,x);return b},[e]),y=M.useCallback(()=>{f()},[f]);return{summaries:m,loading:n,error:a,refresh:y}}const Re="data-view-transition-kind",Ut="(prefers-reduced-motion: reduce)";let me=null,ze=null;function Yt(o,e,t){t===null?o.removeAttribute(e):o.setAttribute(e,t)}function Pt(o,e){const t={root:o,kind:e,previousKind:o.getAttribute(Re)};return o.setAttribute(Re,e),ze=t,t}function Te(o){ze===o&&(o.root.getAttribute(Re)===o.kind&&Yt(o.root,Re,o.previousKind),ze=null)}function Bt(){const o=me;if(o){me=null;try{o.transition.skipTransition()}catch{Te(o.tag);return}Te(o.tag)}}function Qt(){if(typeof window>"u"||typeof window.matchMedia!="function")return!1;try{return window.matchMedia(Ut).matches}catch{return!1}}function Gt(o,{kind:e}){Bt();const t=typeof document>"u"?null:document,n=t==null?void 0:t.startViewTransition;if(!t||!(typeof n=="function")||Qt())return o(),null;const a=Pt(t.documentElement,e);let r=!1,c=!1,d;const f=m=>{if(!r){r=!0;try{m?He.flushSync(o):o()}catch(y){throw c=!0,d=y,y}}};try{const m=n.call(t,()=>f(!0)),y={transition:m,tag:a};return me=y,m.ready.catch(()=>{}),m.updateCallbackDone.catch(()=>{}),m.finished.then(()=>{me===y&&(me=null),Te(a)},()=>{me===y&&(me=null),Te(a)}),m}catch{if(Te(a),c)throw d;return f(!1),null}}function Kt(o){const e={};for(const t of o)t.type==="boolean"?e[t.name]=t.defaultValue===!0:t.defaultValue!==void 0?e[t.name]=String(t.defaultValue):e[t.name]="";return e}function Ht(o,e){const t={};for(const n of o){const i=e[n.name];if(typeof i=="boolean"){t[n.name]=i;continue}i!==""&&(t[n.name]=n.type==="number"||n.type==="integer"?Number(i):i)}return t}function Wt(o,e){return o.every(t=>{if(!t.required)return!0;const n=e[t.name];return typeof n=="boolean"?!0:n===""?!1:t.type==="number"||t.type==="integer"?Number.isFinite(Number(n)):!0})}function Jt(o){const e=B.c(52),{request:t,responding:n,onAnswer:i}=o;let a;e[0]!==t.fields?(a=()=>Kt(t.fields),e[0]=t.fields,e[1]=a):a=e[1];const[r,c]=M.useState(a);let d;e[2]!==t.fields||e[3]!==r?(d=Wt(t.fields,r),e[2]=t.fields,e[3]=r,e[4]=d):d=e[4];const f=d,m=t.displayName||t.title||t.serverName;let y;e[5]===Symbol.for("react.memo_cache_sentinel")?(y=(j,v)=>{c(p=>({...p,[j]:v}))},e[5]=y):y=e[5];const b=y;let x;e[6]!==i||e[7]!==t.requestId?(x=()=>i==null?void 0:i(t.requestId,{action:"decline"}),e[6]=i,e[7]=t.requestId,e[8]=x):x=e[8];const g=x;if(t.mode==="url"&&t.url){const j=t.url;let v;e[9]!==t.message?(v=s.jsx("p",{className:"text-sm leading-relaxed text-foreground",children:t.message}),e[9]=t.message,e[10]=v):v=e[10];let p;e[11]!==j?(p=s.jsx("p",{className:"mt-1 truncate font-mono text-xs text-muted-foreground",title:j,children:j}),e[11]=j,e[12]=p):p=e[12];let w;e[13]!==g||e[14]!==i||e[15]!==t.requestId||e[16]!==n||e[17]!==j?(w=i&&s.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[s.jsxs(V,{size:"sm",disabled:n,onClick:()=>{window.open(j,"_blank","noopener,noreferrer"),i(t.requestId,{action:"accept"})},children:["Open link",s.jsx(kt,{"data-icon":"inline-end"})]}),s.jsx(V,{variant:"ghost",size:"sm",disabled:n,onClick:g,children:"Decline"})]}),e[13]=g,e[14]=i,e[15]=t.requestId,e[16]=n,e[17]=j,e[18]=w):w=e[18];let _;return e[19]!==m||e[20]!==v||e[21]!==p||e[22]!==w?(_=s.jsxs(Ye,{server:m,children:[v,p,w]}),e[19]=m,e[20]=v,e[21]=p,e[22]=w,e[23]=_):_=e[23],_}let l;e[24]!==t.message?(l=s.jsx("p",{className:"text-sm leading-relaxed text-foreground",children:t.message}),e[24]=t.message,e[25]=l):l=e[25];let h;if(e[26]!==i||e[27]!==t.fields||e[28]!==t.requestId||e[29]!==n||e[30]!==r){let j;e[32]!==i||e[33]!==t.requestId||e[34]!==n||e[35]!==r?(j=v=>s.jsx(Xt,{id:`elicit-${t.requestId}-${v.name}`,field:v,value:r[v.name],disabled:n||!i,onChange:p=>b(v.name,p)},v.name),e[32]=i,e[33]=t.requestId,e[34]=n,e[35]=r,e[36]=j):j=e[36],h=t.fields.map(j),e[26]=i,e[27]=t.fields,e[28]=t.requestId,e[29]=n,e[30]=r,e[31]=h}else h=e[31];let u;e[37]!==h?(u=s.jsx("div",{className:"mt-3 flex flex-col gap-3",children:h}),e[37]=h,e[38]=u):u=e[38];let S;e[39]!==f||e[40]!==g||e[41]!==i||e[42]!==t.fields||e[43]!==t.requestId||e[44]!==n||e[45]!==r?(S=i&&s.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[s.jsx(V,{size:"sm",disabled:n||!f,onClick:()=>i(t.requestId,{action:"accept",content:Ht(t.fields,r)}),children:"Send"}),s.jsx(V,{variant:"ghost",size:"sm",disabled:n,onClick:g,children:"Decline"})]}),e[39]=f,e[40]=g,e[41]=i,e[42]=t.fields,e[43]=t.requestId,e[44]=n,e[45]=r,e[46]=S):S=e[46];let I;return e[47]!==m||e[48]!==l||e[49]!==u||e[50]!==S?(I=s.jsxs(Ye,{server:m,children:[l,u,S]}),e[47]=m,e[48]=l,e[49]=u,e[50]=S,e[51]=I):I=e[51],I}function Xt(o){const e=B.c(55),{id:t,field:n,value:i,disabled:a,onChange:r}=o;if(n.type==="boolean"){const g=i===!0;let l;e[0]!==r?(l=I=>r(I===!0),e[0]=r,e[1]=l):l=e[1];let h;e[2]!==a||e[3]!==t||e[4]!==g||e[5]!==l?(h=s.jsx(et,{id:t,checked:g,disabled:a,onCheckedChange:l}),e[2]=a,e[3]=t,e[4]=g,e[5]=l,e[6]=h):h=e[6];let u;e[7]!==n?(u=s.jsx($e,{field:n}),e[7]=n,e[8]=u):u=e[8];let S;return e[9]!==t||e[10]!==h||e[11]!==u?(S=s.jsxs(Oe,{htmlFor:t,className:"items-start gap-2 font-normal",children:[h,u]}),e[9]=t,e[10]=h,e[11]=u,e[12]=S):S=e[12],S}if(n.type==="enum"){let g;e[13]!==n?(g=s.jsx($e,{field:n}),e[13]=n,e[14]=g):g=e[14];let l;e[15]!==t||e[16]!==g?(l=s.jsx(Oe,{htmlFor:t,children:g}),e[15]=t,e[16]=g,e[17]=l):l=e[17];let h;e[18]!==i?(h=typeof i=="string"&&i?[i]:[],e[18]=i,e[19]=h):h=e[19];let u;e[20]!==r?(u=w=>{w[0]&&r(w[0])},e[20]=r,e[21]=u):u=e[21];const S=n.label;let I;e[22]!==n.options?(I=n.options??[],e[22]=n.options,e[23]=I):I=e[23];let j;if(e[24]!==a||e[25]!==I){let w;e[27]!==a?(w=_=>s.jsx(Ee,{value:_.value,disabled:a,className:"w-full justify-start px-3",children:_.label},_.value),e[27]=a,e[28]=w):w=e[28],j=I.map(w),e[24]=a,e[25]=I,e[26]=j}else j=e[26];let v;e[29]!==n.label||e[30]!==t||e[31]!==h||e[32]!==u||e[33]!==j?(v=s.jsx(Ve,{id:t,value:h,onValueChange:u,orientation:"vertical",variant:"outline",size:"sm",className:"w-full items-stretch","aria-label":S,children:j}),e[29]=n.label,e[30]=t,e[31]=h,e[32]=u,e[33]=j,e[34]=v):v=e[34];let p;return e[35]!==l||e[36]!==v?(p=s.jsxs("div",{className:"flex flex-col gap-1.5",children:[l,v]}),e[35]=l,e[36]=v,e[37]=p):p=e[37],p}let c;e[38]!==n?(c=s.jsx($e,{field:n}),e[38]=n,e[39]=c):c=e[39];let d;e[40]!==t||e[41]!==c?(d=s.jsx(Oe,{htmlFor:t,children:c}),e[40]=t,e[41]=c,e[42]=d):d=e[42];const f=n.type==="string"?"text":"number",m=typeof i=="string"?i:"";let y;e[43]!==r?(y=g=>r(g.target.value),e[43]=r,e[44]=y):y=e[44];let b;e[45]!==a||e[46]!==n.label||e[47]!==t||e[48]!==f||e[49]!==m||e[50]!==y?(b=s.jsx(Ze,{id:t,"aria-label":n.label,type:f,value:m,disabled:a,onChange:y}),e[45]=a,e[46]=n.label,e[47]=t,e[48]=f,e[49]=m,e[50]=y,e[51]=b):b=e[51];let x;return e[52]!==d||e[53]!==b?(x=s.jsxs("div",{className:"flex flex-col gap-1.5",children:[d,b]}),e[52]=d,e[53]=b,e[54]=x):x=e[54],x}function $e(o){const e=B.c(8),{field:t}=o;let n;e[0]!==t.required?(n=t.required&&s.jsx("span",{className:"ml-0.5 text-warning",children:"*"}),e[0]=t.required,e[1]=n):n=e[1];let i;e[2]!==t.description?(i=t.description&&s.jsx("span",{className:"block text-xs font-normal text-muted-foreground",children:t.description}),e[2]=t.description,e[3]=i):i=e[3];let a;return e[4]!==t.label||e[5]!==n||e[6]!==i?(a=s.jsxs("span",{className:"min-w-0",children:[t.label,n,i]}),e[4]=t.label,e[5]=n,e[6]=i,e[7]=a):a=e[7],a}function Ye(o){const e=B.c(8),{server:t,children:n}=o;let i;e[0]===Symbol.for("react.memo_cache_sentinel")?(i=s.jsx(At,{className:"text-info"}),e[0]=i):i=e[0];let a;e[1]!==t?(a=s.jsxs(qe,{children:[t," needs input"]}),e[1]=t,e[2]=a):a=e[2];let r;e[3]!==n?(r=s.jsx("div",{className:"col-start-2 mt-1 min-w-0",children:n}),e[3]=n,e[4]=r):r=e[4];let c;return e[5]!==a||e[6]!==r?(c=s.jsxs(Ce,{className:"border-info/40 bg-info/5",children:[i,a,r]}),e[5]=a,e[6]=r,e[7]=c):c=e[7],c}const Zt=["allow","allow_always","deny"],es=[{decision:"allow",label:"Allow",variant:"default"},{decision:"deny",label:"Deny",variant:"destructive"},{decision:"allow_always",label:"Always",variant:"outline"}];function ts(o,e){return(o.availableDecisions??Zt).includes(e)}function ss(o){const e=B.c(22),{request:t,queued:n,responding:i,onRespond:a}=o;let r;if(e[0]!==a||e[1]!==n||e[2]!==t||e[3]!==i){let c;e[5]!==t?(c=S=>ts(t,S.decision),e[5]=t,e[6]=c):c=e[6];const d=es.filter(c);t.defaultToNo&&d.sort(is);const f=d.some(ns);let m;e[7]===Symbol.for("react.memo_cache_sentinel")?(m=s.jsx(Qe,{className:"text-warning"}),e[7]=m):m=e[7];const y=t.title||`Allow ${t.toolName}?`;let b;e[8]!==y?(b=s.jsx("span",{className:"min-w-0 flex-1 truncate",children:y}),e[8]=y,e[9]=b):b=e[9];let x;e[10]!==n?(x=n>0&&s.jsxs("span",{className:"shrink-0 font-mono text-xs text-warning",children:["+",n]}),e[10]=n,e[11]=x):x=e[11];let g;e[12]!==b||e[13]!==x?(g=s.jsxs(qe,{className:"flex min-w-0 items-center gap-2",children:[b,x]}),e[12]=b,e[13]=x,e[14]=g):g=e[14];let l;e[15]!==t.toolName?(l=s.jsx("span",{className:"shrink-0 font-mono text-xs text-muted-foreground",children:t.toolName}),e[15]=t.toolName,e[16]=l):l=e[16];let h;e[17]!==t.summary?(h=t.summary&&s.jsx("code",{className:"min-w-0 flex-1 truncate rounded bg-muted px-2 py-1 font-mono text-xs text-foreground",children:t.summary}),e[17]=t.summary,e[18]=h):h=e[18];let u;e[19]!==l||e[20]!==h?(u=s.jsxs("div",{className:"col-start-2 mt-2 flex min-w-0 items-center gap-2",children:[l,h]}),e[19]=l,e[20]=h,e[21]=u):u=e[21],r=s.jsxs(Ce,{className:"border-warning/40 bg-warning/5",children:[m,g,u,a&&(f?s.jsx("div",{className:"col-start-2 mt-3 flex items-center gap-2",children:d.map(S=>{const{decision:I,label:j,variant:v}=S;return s.jsx(V,{autoFocus:t.defaultToNo&&I==="deny",size:"xs",variant:v,disabled:i,onClick:()=>a(t.requestId,I),children:j},`${t.requestId}:${I}`)})}):s.jsx("p",{className:"col-start-2 mt-2 text-xs text-warning",children:"Resolve this approval in its own provider"}))]}),e[0]=a,e[1]=n,e[2]=t,e[3]=i,e[4]=r}else r=e[4];return r}function ns(o){return o.decision!=="allow_always"}function is(o,e){return+(e.decision==="deny")-+(o.decision==="deny")}function ls(o){return o.some(e=>e.options.length===0||e.options.some(t=>t.hasPreview))}function os(o){const e=B.c(64),{request:t,responding:n,gone:i,onAnswer:a,onOpenSession:r}=o,c=t.questions,[d,f]=M.useState(0);let m;e[0]===Symbol.for("react.memo_cache_sentinel")?(m={},e[0]=m):m=e[0];const y=M.useRef(m);let b;e[1]===Symbol.for("react.memo_cache_sentinel")?(b=new Set,e[1]=b):b=e[1];const[x,g]=M.useState(b);if(c.length===0)return null;if(ls(c)){let N;e[2]!==c[0].question?(N=s.jsx("p",{className:"text-sm leading-relaxed text-foreground",children:c[0].question}),e[2]=c[0].question,e[3]=N):N=e[3];let E;e[4]===Symbol.for("react.memo_cache_sentinel")?(E=s.jsx(De,{"data-icon":"inline-end"}),e[4]=E):E=e[4];let T;e[5]!==r?(T=s.jsxs(V,{variant:"outline",size:"sm",onClick:r,className:"mt-3",children:["Open full question",E]}),e[5]=r,e[6]=T):T=e[6];let z;return e[7]!==N||e[8]!==T?(z=s.jsxs(Pe,{children:[N,T]}),e[7]=N,e[8]=T,e[9]=z):z=e[9],z}const l=c[d],h=n||!a;let u;e[10]!==l.question||e[11]!==d||e[12]!==a||e[13]!==c.length||e[14]!==t.toolUseId?(u=function(E){const T={...y.current,[l.question]:E};if(d+1<c.length){y.current=T,g(new Set),f(d+1);return}a==null||a(t.toolUseId,T)},e[10]=l.question,e[11]=d,e[12]=a,e[13]=c.length,e[14]=t.toolUseId,e[15]=u):u=e[15];const S=u;let I;e[16]!==l.header?(I=l.header&&s.jsx(Ae,{variant:"outline",className:"border-info/40 text-info",children:l.header}),e[16]=l.header,e[17]=I):I=e[17];let j;e[18]!==d||e[19]!==c.length?(j=c.length>1&&s.jsxs("span",{className:"ml-auto shrink-0 font-mono text-xs text-muted-foreground",children:[d+1," of ",c.length]}),e[18]=d,e[19]=c.length,e[20]=j):j=e[20];let v;e[21]!==I||e[22]!==j?(v=s.jsxs("div",{className:"flex items-baseline gap-1.5",children:[I,j]}),e[21]=I,e[22]=j,e[23]=v):v=e[23];let p;e[24]!==l.question?(p=s.jsx("p",{className:"mt-2 line-clamp-3 text-sm leading-relaxed text-foreground",title:l.question,children:l.question}),e[24]=l.question,e[25]=p):p=e[25];let w;e[26]!==x?(w=[...x],e[26]=x,e[27]=w):w=e[27];let _;e[28]!==S||e[29]!==l.multiSelect?(_=N=>{l.multiSelect?g(new Set(N)):N[0]&&S(N[0])},e[28]=S,e[29]=l.multiSelect,e[30]=_):_=e[30];const $=l.multiSelect,L=l.question;let C;if(e[31]!==l.options||e[32]!==h){let N;e[34]!==h?(N=E=>s.jsx(as,{option:E,disabled:h},E.label),e[34]=h,e[35]=N):N=e[35],C=l.options.map(N),e[31]=l.options,e[32]=h,e[33]=C}else C=e[33];let q;e[36]!==l.multiSelect||e[37]!==l.question||e[38]!==C||e[39]!==w||e[40]!==_?(q=s.jsx(Ve,{value:w,onValueChange:_,multiple:$,orientation:"vertical",variant:"outline",size:"sm",className:"mt-3 w-full items-stretch","aria-label":L,children:C}),e[36]=l.multiSelect,e[37]=l.question,e[38]=C,e[39]=w,e[40]=_,e[41]=q):q=e[41];let Q;e[42]!==S||e[43]!==l.multiSelect||e[44]!==d||e[45]!==a||e[46]!==c.length||e[47]!==n||e[48]!==x?(Q=l.multiSelect&&a&&s.jsx(V,{size:"sm",disabled:n||x.size===0,onClick:()=>S(tt(x)),children:d+1<c.length?"Next":"Send"}),e[42]=S,e[43]=l.multiSelect,e[44]=d,e[45]=a,e[46]=c.length,e[47]=n,e[48]=x,e[49]=Q):Q=e[49];let U;e[50]===Symbol.for("react.memo_cache_sentinel")?(U=s.jsx(De,{"data-icon":"inline-end"}),e[50]=U):U=e[50];let A;e[51]!==r?(A=s.jsxs(V,{variant:"ghost",size:"sm",onClick:r,className:"ml-auto text-muted-foreground",children:["Open session",U]}),e[51]=r,e[52]=A):A=e[52];let F;e[53]!==Q||e[54]!==A?(F=s.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[Q,A]}),e[53]=Q,e[54]=A,e[55]=F):F=e[55];let O;e[56]!==i?(O=i&&s.jsx("p",{className:"mt-2 text-xs text-warning",children:"This question may already be answered. Open the session to check."}),e[56]=i,e[57]=O):O=e[57];let D;return e[58]!==q||e[59]!==F||e[60]!==O||e[61]!==v||e[62]!==p?(D=s.jsxs(Pe,{children:[v,p,q,F,O]}),e[58]=q,e[59]=F,e[60]=O,e[61]=v,e[62]=p,e[63]=D):D=e[63],D}function as(o){const e=B.c(17),{option:t,disabled:n}=o;let i;e[0]!==t.label?(i=s.jsx("span",{className:"min-w-0 flex-1 truncate text-left",children:t.label}),e[0]=t.label,e[1]=i):i=e[1];const a=i;if(!t.description){let m;return e[2]!==n||e[3]!==a||e[4]!==t.label?(m=s.jsx(Ee,{value:t.label,disabled:n,className:"w-full justify-start px-3",children:a}),e[2]=n,e[3]=a,e[4]=t.label,e[5]=m):m=e[5],m}let r;e[6]!==n||e[7]!==t.label?(r=s.jsx(Ee,{value:t.label,disabled:n,className:"w-full justify-start px-3"}),e[6]=n,e[7]=t.label,e[8]=r):r=e[8];let c;e[9]!==a||e[10]!==r?(c=s.jsx(nt,{render:r,children:a}),e[9]=a,e[10]=r,e[11]=c):c=e[11];let d;e[12]!==t.description?(d=s.jsx(st,{side:"right",className:"max-w-72 text-left",children:t.description}),e[12]=t.description,e[13]=d):d=e[13];let f;return e[14]!==c||e[15]!==d?(f=s.jsxs(it,{children:[c,d]}),e[14]=c,e[15]=d,e[16]=f):f=e[16],f}function Pe(o){const e=B.c(4),{children:t}=o;let n,i;e[0]===Symbol.for("react.memo_cache_sentinel")?(n=s.jsx(_e,{className:"text-info"}),i=s.jsx(qe,{children:"Answer to continue"}),e[0]=n,e[1]=i):(n=e[0],i=e[1]);let a;return e[2]!==t?(a=s.jsxs(Ce,{className:"border-info/40 bg-info/5",children:[n,i,s.jsx("div",{className:"col-start-2 mt-1 min-w-0",children:t})]}),e[2]=t,e[3]=a):a=e[3],a}function rs(o){const e=B.c(15),{request:t,responding:n,onChoose:i}=o;let a,r;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=s.jsx(Qe,{className:"text-warning"}),r=s.jsx(qe,{children:"Claude declined this request"}),e[0]=a,e[1]=r):(a=e[0],r=e[1]);let c;e[2]!==t.originalModel?(c=s.jsxs("p",{className:"text-sm leading-relaxed text-foreground",children:[t.originalModel," would not answer. Retrying on a fallback model may work."]}),e[2]=t.originalModel,e[3]=c):c=e[3];let d;e[4]!==t.guidanceText?(d=t.guidanceText&&s.jsx("p",{className:"mt-1 text-sm leading-relaxed text-muted-foreground",children:t.guidanceText}),e[4]=t.guidanceText,e[5]=d):d=e[5];let f;e[6]!==i||e[7]!==t.fallbackModel||e[8]!==t.requestId||e[9]!==n?(f=i&&s.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-2",children:[s.jsxs(V,{size:"sm",disabled:n,onClick:()=>i(t.requestId,"retry_fallback"),children:["Retry on ",t.fallbackModel]}),s.jsx(V,{variant:"outline",size:"sm",disabled:n,onClick:()=>i(t.requestId,"edit_prompt"),children:"Edit prompt"}),s.jsx(V,{variant:"ghost",size:"sm",disabled:n,className:"ml-auto text-muted-foreground",onClick:()=>i(t.requestId,"cancelled"),children:"Dismiss"})]}),e[6]=i,e[7]=t.fallbackModel,e[8]=t.requestId,e[9]=n,e[10]=f):f=e[10];let m;return e[11]!==c||e[12]!==d||e[13]!==f?(m=s.jsxs(Ce,{className:"border-warning/40 bg-warning/5",children:[a,r,s.jsxs("div",{className:"col-start-2 mt-1 min-w-0",children:[c,d,f]})]}),e[11]=c,e[12]=d,e[13]=f,e[14]=m):m=e[14],m}function cs(o){return o==="awaiting_approval"||o==="awaiting_prompt"||o==="awaiting_question"||o==="awaiting_answer"}function Ge(o){return o.canAnswer&&cs(o.state)}function Me(o){return o==="done"||o==="failed"}const Be={awaiting_approval:0,awaiting_prompt:1,awaiting_question:2,awaiting_answer:3,running:4,failed:5,done:6};function ds(o,e,t,n,i,a){return t?"awaiting_approval":n?"awaiting_prompt":i?"awaiting_question":a||o.agentStatus==="deferred"||o.agentStatus==="idle"&&e?"awaiting_answer":o.agentTerminalReason?"failed":e&&o.agentStatus&&at.has(o.agentStatus)?"running":"done"}const us=6;function fs({sessions:o,procBySession:e,summaries:t,permissionsBySession:n,questionsBySession:i,elicitationsBySession:a,dialogsBySession:r,awaitingPlan:c,newlyCompleted:d,canAnswer:f=()=>!0,finishedLimit:m=us,now:y=Date.now()}){const b=[];for(const l of lt(o)){const h=n.get(l.sessionId)??[],u=i.get(l.sessionId)??[],S=a.get(l.sessionId)??[],I=r.get(l.sessionId)??[],j=c.has(l.sessionId),v=h.length+u.length+S.length+I.length+Number(j);l.teamName&&l.agentName&&v===0||b.push({session:l,state:ds(l,ot(l,e,y),h.length>0,S.length>0||I.length>0,u.length>0,j),summary:t.get(l.sessionId)??null,permissions:h,questions:u,elicitations:S,dialogs:I,canAnswer:f(l)})}const x=b.filter(l=>Me(l.state)),g=[...x.filter(l=>d.has(l.session.sessionId)),...x.filter(l=>!d.has(l.session.sessionId))].slice(0,m);return[...b.filter(l=>!Me(l.state)),...g].sort((l,h)=>Be[l.state]-Be[h.state])}function ms(o,e){switch(e){case"running":return o.filter(t=>t.state==="running");case"needs-you":return o.filter(Ge);case"finished":return o.filter(t=>Me(t.state));default:return o}}function xs(o){const e={total:o.length,running:0,needsYou:0,finished:0,failed:0};for(const t of o)t.state==="running"&&e.running++,Ge(t)&&e.needsYou++,Me(t.state)&&e.finished++,t.state==="failed"&&e.failed++;return e}function hs(o){return o>=90?"text-destructive":o>=70?"text-warning":"text-muted-foreground"}const gs={awaiting_approval:{label:"Waiting for approval",text:"text-warning",shell:"border-warning/40 bg-warning/5",icon:_e},awaiting_prompt:{label:"Waiting for your input",text:"text-info",shell:"border-info/40 bg-info/5",icon:_e},awaiting_question:{label:"Waiting for your answer",text:"text-info",shell:"border-info/40 bg-info/5",icon:_e},awaiting_answer:{label:"Waiting for your answer",text:"text-warning",shell:"border-warning/40 bg-warning/5",icon:_e},running:{label:"Running",text:"text-info",shell:"border-border",icon:null},done:{label:"Done",text:"text-success",shell:"border-border",icon:Rt},failed:{label:"Failed",text:"text-destructive",shell:"border-destructive/40",icon:Et}};function ps(o){const e=B.c(3),{icon:t}=o;if(!t){let i;return e[0]===Symbol.for("react.memo_cache_sentinel")?(i=s.jsx("span",{className:"size-2 shrink-0 rounded-full bg-info"}),e[0]=i):i=e[0],i}let n;return e[1]!==t?(n=s.jsx(t,{className:"size-3.5 shrink-0"}),e[1]=t,e[2]=n):n=e[2],n}const bs=M.memo(function(e){const t=B.c(99),{card:n,customName:i,projectLabel:a,responding:r,goneQuestions:c,compact:d,onOpen:f,onRespond:m,onAnswerQuestion:y,onAnswerElicitation:b,onChooseDialog:x}=e,g=d===void 0?!1:d,{session:l,state:h,summary:u,permissions:S,questions:I,elicitations:j,dialogs:v,canAnswer:p}=n,w=gs[h],_=S[0],$=I[0],L=j[0],C=v[0],q=!!(_||$||L||C);let Q;t[0]!==i||t[1]!==l?(Q=rt(l,i),t[0]=i,t[1]=l,t[2]=Q):Q=t[2];const U=Q,A=g&&"gap-1.5 py-2";let F;t[3]!==w.shell||t[4]!==A?(F=xe("motion-card motion-list-item group flex min-w-0 flex-col gap-2 rounded-lg border bg-card p-3 text-left transition-colors hover:border-foreground/20",w.shell,A),t[3]=w.shell,t[4]=A,t[5]=F):F=t[5];const O=`Open session ${U}`;let D;t[6]!==a?(D=s.jsx("span",{className:"min-w-0 flex-1 truncate font-mono text-xs text-muted-foreground",children:a}),t[6]=a,t[7]=D):D=t[7];let N;t[8]!==l.access?(N=s.jsx(ct,{access:l.access}),t[8]=l.access,t[9]=N):N=t[9];let E;t[10]!==u?(E=(u==null?void 0:u.model)&&s.jsx("span",{className:"shrink-0 font-mono text-xs text-muted-foreground",children:dt(u.model)}),t[10]=u,t[11]=E):E=t[11];let T;t[12]===Symbol.for("react.memo_cache_sentinel")?(T=s.jsx(De,{"data-icon":"inline-end",className:"shrink-0 text-transparent transition-colors group-hover:text-muted-foreground"}),t[12]=T):T=t[12];let z;t[13]!==D||t[14]!==N||t[15]!==E?(z=s.jsxs("span",{className:"flex min-w-0 items-center gap-1.5",children:[D,N,E,T]}),t[13]=D,t[14]=N,t[15]=E,t[16]=z):z=t[16];const G=g?"truncate":"line-clamp-2";let oe;t[17]!==G?(oe=xe("text-sm font-medium leading-snug text-foreground",G),t[17]=G,t[18]=oe):oe=t[18];let K;t[19]!==oe||t[20]!==U?(K=s.jsx("span",{className:oe,children:U}),t[19]=oe,t[20]=U,t[21]=K):K=t[21];let ae;t[22]!==f||t[23]!==z||t[24]!==K||t[25]!==O?(ae=s.jsxs(V,{variant:"ghost",onClick:f,className:"-m-1 h-auto min-w-0 flex-col items-stretch justify-start gap-1 whitespace-normal p-1 text-left","aria-label":O,children:[z,K]}),t[22]=f,t[23]=z,t[24]=K,t[25]=O,t[26]=ae):ae=t[26];let re;t[27]!==w.text?(re=xe("flex items-center gap-1.5 text-xs font-medium",w.text),t[27]=w.text,t[28]=re):re=t[28];let ce;t[29]!==w.icon?(ce=s.jsx(ps,{icon:w.icon}),t[29]=w.icon,t[30]=ce):ce=t[30];let le;t[31]!==w.label?(le=s.jsx("span",{className:"truncate",children:w.label}),t[31]=w.label,t[32]=le):le=t[32];const ue=l.lastActivityAt||l.lastModified;let H;t[33]!==ue?(H=ut(ue),t[33]=ue,t[34]=H):H=t[34];let de;t[35]!==H?(de=s.jsx("span",{className:"ml-auto shrink-0 font-mono text-xs font-normal text-muted-foreground",children:H}),t[35]=H,t[36]=de):de=t[36];let W;t[37]!==re||t[38]!==ce||t[39]!==le||t[40]!==de?(W=s.jsxs("div",{className:re,children:[ce,le,de]}),t[37]=re,t[38]=ce,t[39]=le,t[40]=de,t[41]=W):W=t[41];let J;t[42]!==p||t[43]!==m||t[44]!==S.length||t[45]!==_||t[46]!==r||t[47]!==l.sessionId?(J=_&&s.jsx(ss,{request:_,queued:S.length-1,responding:r.has(_.requestId),onRespond:p?(Y,P)=>m(l.sessionId,Y,P):void 0}),t[42]=p,t[43]=m,t[44]=S.length,t[45]=_,t[46]=r,t[47]=l.sessionId,t[48]=J):J=t[48];let X;t[49]!==p||t[50]!==C||t[51]!==x||t[52]!==_||t[53]!==r||t[54]!==l.sessionId?(X=!_&&C&&s.jsx(rs,{request:C,responding:r.has(C.requestId),onChoose:p?(Y,P)=>x(l.sessionId,Y,P):void 0},C.requestId),t[49]=p,t[50]=C,t[51]=x,t[52]=_,t[53]=r,t[54]=l.sessionId,t[55]=X):X=t[55];let Z;t[56]!==p||t[57]!==C||t[58]!==L||t[59]!==b||t[60]!==_||t[61]!==r||t[62]!==l.sessionId?(Z=!_&&!C&&L&&s.jsx(Jt,{request:L,responding:r.has(L.requestId),onAnswer:p?(Y,P)=>b(l.sessionId,Y,P):void 0},L.requestId),t[56]=p,t[57]=C,t[58]=L,t[59]=b,t[60]=_,t[61]=r,t[62]=l.sessionId,t[63]=Z):Z=t[63];let ee;t[64]!==p||t[65]!==C||t[66]!==L||t[67]!==c||t[68]!==y||t[69]!==f||t[70]!==$||t[71]!==_||t[72]!==r||t[73]!==l.sessionId?(ee=!_&&!C&&!L&&$&&s.jsx(os,{request:$,responding:r.has($.toolUseId),gone:c.has($.toolUseId),onAnswer:p?(Y,P)=>y(l.sessionId,Y,P):void 0,onOpenSession:f},$.toolUseId),t[64]=p,t[65]=C,t[66]=L,t[67]=c,t[68]=y,t[69]=f,t[70]=$,t[71]=_,t[72]=r,t[73]=l.sessionId,t[74]=ee):ee=t[74];let te;t[75]!==q||t[76]!==p?(te=q&&!p&&s.jsxs("p",{className:"flex items-center gap-1.5 rounded-md bg-muted/50 px-2.5 py-2 text-xs text-muted-foreground",children:[s.jsx(Mt,{"data-icon":"inline-start",className:"size-3.5 shrink-0"}),"View only · you can’t answer this"]}),t[75]=q,t[76]=p,t[77]=te):te=t[77];let se;t[78]!==q||t[79]!==u?(se=!q&&(u==null?void 0:u.currentTool)&&s.jsx(js,{tool:u.currentTool}),t[78]=q,t[79]=u,t[80]=se):se=t[80];let ne;t[81]!==q||t[82]!==g||t[83]!==u?(ne=!g&&!q&&(u==null?void 0:u.lastAssistantText)&&s.jsx("p",{className:"line-clamp-4 text-sm leading-relaxed text-muted-foreground",children:u.lastAssistantText}),t[81]=q,t[82]=g,t[83]=u,t[84]=ne):ne=t[84];let ie;t[85]!==u?(ie=u&&s.jsx(ws,{summary:u}),t[85]=u,t[86]=ie):ie=t[86];let fe;return t[87]!==ae||t[88]!==W||t[89]!==J||t[90]!==X||t[91]!==Z||t[92]!==ee||t[93]!==te||t[94]!==se||t[95]!==ne||t[96]!==ie||t[97]!==F?(fe=s.jsxs("div",{className:F,children:[ae,W,J,X,Z,ee,te,se,ne,ie]}),t[87]=ae,t[88]=W,t[89]=J,t[90]=X,t[91]=Z,t[92]=ee,t[93]=te,t[94]=se,t[95]=ne,t[96]=ie,t[97]=F,t[98]=fe):fe=t[98],fe});function js(o){const e=B.c(7),{tool:t}=o;let n;e[0]!==t.name?(n=s.jsx("span",{className:"shrink-0 font-mono text-xs text-muted-foreground",children:t.name}),e[0]=t.name,e[1]=n):n=e[1];let i;e[2]!==t.summary?(i=s.jsx("code",{className:"min-w-0 flex-1 truncate font-mono text-xs text-foreground/80",children:t.summary}),e[2]=t.summary,e[3]=i):i=e[3];let a;return e[4]!==n||e[5]!==i?(a=s.jsxs("div",{className:"flex min-w-0 items-center gap-2 rounded-md bg-muted/50 px-2.5 py-2",children:[n,i]}),e[4]=n,e[5]=i,e[6]=a):a=e[6],a}function ws(o){const e=B.c(11),{summary:t}=o,n=t.filesTotal,i=t.context,a=n.count>0,r=i!==null&&i.used>0;if(!a&&!r)return null;let c;e[0]!==n.additions||e[1]!==n.count||e[2]!==n.deletions||e[3]!==a?(c=a&&s.jsxs("span",{className:"flex min-w-0 items-center gap-1.5",children:[s.jsxs("span",{className:"truncate",children:[n.count," file",n.count===1?"":"s"]}),s.jsx(ft,{add:n.additions,del:n.deletions})]}),e[0]=n.additions,e[1]=n.count,e[2]=n.deletions,e[3]=a,e[4]=c):c=e[4];let d;e[5]!==i||e[6]!==r?(d=r&&s.jsxs("span",{className:xe("ml-auto shrink-0",hs(i.percent)),children:["ctx ",i.percent,"%"]}),e[5]=i,e[6]=r,e[7]=d):d=e[7];let f;return e[8]!==c||e[9]!==d?(f=s.jsxs("div",{className:"mt-auto flex items-center gap-2 border-t pt-2 font-mono text-xs text-muted-foreground",children:[c,d]}),e[8]=c,e[9]=d,e[10]=f):f=e[10],f}const Ns=8e3,vs=12,ys="Start Claude Code, Codex, or Copilot and every session shows up here",Ss=[{id:"all",label:"All"},{id:"running",label:"Running"},{id:"needs-you",label:"Needs you"},{id:"finished",label:"Finished"}],Is=[{id:"grid",label:"Grid layout",Icon:Lt},{id:"list",label:"List layout",Icon:Ft}];function As(o){const e=B.c(121),{onSelectSession:t}=o,{sessions:n,procBySession:i,newlyCompleted:a,refresh:r}=mt(),{summaries:c,loading:d,error:f,refresh:m}=Vt(),{permissionsBySession:y,questionsBySession:b,elicitationsBySession:x,dialogsBySession:g,awaitingPlan:l,responding:h,respond:u,answerQuestion:S,answerElicitation:I,answerDialog:j,refresh:v}=xt();let p;e[0]===Symbol.for("react.memo_cache_sentinel")?(p=new Set,e[0]=p):p=e[0];const[w,_]=M.useState(p),{names:$}=ht(),{names:L}=gt(),C=pt(),[q,Q]=M.useState("all");let U;e[1]===Symbol.for("react.memo_cache_sentinel")?(U=bt("mission-control-layout"),e[1]=U):U=e[1];const[A,F]=jt(U,"grid");let O;e[2]!==C?(O=R=>C(R.access).answer,e[2]=C,e[3]=O):O=e[3];let D;e[4]!==l||e[5]!==g||e[6]!==x||e[7]!==a||e[8]!==y||e[9]!==i||e[10]!==b||e[11]!==n||e[12]!==c||e[13]!==O?(D=fs({sessions:n,procBySession:i,summaries:c,permissionsBySession:y,questionsBySession:b,elicitationsBySession:x,dialogsBySession:g,awaitingPlan:l,newlyCompleted:a,canAnswer:O}),e[4]=l,e[5]=g,e[6]=x,e[7]=a,e[8]=y,e[9]=i,e[10]=b,e[11]=n,e[12]=c,e[13]=O,e[14]=D):D=e[14];const N=D;let E;e[15]!==N?(E=xs(N),e[15]=N,e[16]=E):E=e[16];const T=E;let z;e[17]!==N||e[18]!==q?(z=ms(N,q),e[17]=N,e[18]=q,e[19]=z):z=e[19];const G=z;let oe;e[20]!==v||e[21]!==r||e[22]!==m?(oe=()=>{r(),m(),v()},e[20]=v,e[21]=r,e[22]=m,e[23]=oe):oe=e[23];const K=oe;let ae,re;e[24]!==r?(ae=()=>{const R=setInterval(()=>{document.visibilityState==="visible"&&r()},Ns);return()=>clearInterval(R)},re=[r],e[24]=r,e[25]=ae,e[26]=re):(ae=e[25],re=e[26]),M.useEffect(ae,re);let ce;e[27]!==S?(ce=async(R,k,Fe)=>{(await S(R,k,Fe)).ok||_(Ke=>new Set(Ke).add(k))},e[27]=S,e[28]=ce):ce=e[28];const le=ce;let ue;e[29]!==N.length?(ue=function(k){N.length<=vs?Gt(k,{kind:"fade"}):M.startTransition(k)},e[29]=N.length,e[30]=ue):ue=e[30];const H=ue;let de;e[31]===Symbol.for("react.memo_cache_sentinel")?(de=s.jsx("h2",{className:"truncate text-sm font-semibold",children:"Mission Control"}),e[31]=de):de=e[31];let W;e[32]!==T.total?(W=s.jsx(Ae,{variant:"secondary",children:T.total}),e[32]=T.total,e[33]=W):W=e[33];let J;e[34]!==T.needsYou?(J=T.needsYou>0&&s.jsxs(Ae,{variant:"outline",className:"border-warning/40 text-warning",children:[T.needsYou," need you"]}),e[34]=T.needsYou,e[35]=J):J=e[35];let X;e[36]!==T.failed?(X=T.failed>0&&s.jsxs(Ae,{variant:"destructive",children:[T.failed," failed"]}),e[36]=T.failed,e[37]=X):X=e[37];let Z;e[38]!==W||e[39]!==J||e[40]!==X?(Z=s.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[de,W,J,X]}),e[38]=W,e[39]=J,e[40]=X,e[41]=Z):Z=e[41];let ee;e[42]!==q?(ee=[q],e[42]=q,e[43]=ee):ee=e[43];let te;e[44]!==q||e[45]!==H?(te=R=>{const k=R.at(-1);k&&k!==q&&H(()=>Q(k))},e[44]=q,e[45]=H,e[46]=te):te=e[46];let se;e[47]!==T.needsYou?(se=Ss.map(R=>s.jsxs(Ee,{value:R.id,"aria-label":`Show ${R.label.toLowerCase()} sessions`,children:[R.label,R.id==="needs-you"&&T.needsYou>0&&s.jsx("span",{className:"font-mono text-warning",children:T.needsYou})]},R.id)),e[47]=T.needsYou,e[48]=se):se=e[48];let ne;e[49]!==ee||e[50]!==te||e[51]!==se?(ne=s.jsx(Ve,{value:ee,onValueChange:te,variant:"outline",size:"sm",spacing:0,"aria-label":"Filter sessions",children:se}),e[49]=ee,e[50]=te,e[51]=se,e[52]=ne):ne=e[52];let ie;e[53]!==A||e[54]!==F||e[55]!==H?(ie=Is.map(R=>{const{id:k,label:Fe,Icon:Ue}=R;return s.jsx(V,{variant:"ghost",size:"icon-xs","aria-label":Fe,"aria-pressed":A===k,onClick:()=>{k!==A&&H(()=>F(k))},className:xe(A===k&&"bg-accent text-accent-foreground"),children:s.jsx(Ue,{"data-icon":"inline-start"})},k)}),e[53]=A,e[54]=F,e[55]=H,e[56]=ie):ie=e[56];const fe=d&&"animate-spin";let Y;e[57]!==fe?(Y=xe(fe),e[57]=fe,e[58]=Y):Y=e[58];let P;e[59]!==Y?(P=s.jsx($t,{"data-icon":"inline-start",className:Y}),e[59]=Y,e[60]=P):P=e[60];let he;e[61]!==K||e[62]!==P?(he=s.jsx(V,{variant:"ghost",size:"icon-xs","aria-label":"Refresh Mission Control",onClick:K,children:P}),e[61]=K,e[62]=P,e[63]=he):he=e[63];let ge;e[64]!==ie||e[65]!==he?(ge=s.jsxs("div",{className:"flex items-center gap-1",children:[ie,he]}),e[64]=ie,e[65]=he,e[66]=ge):ge=e[66];let pe;e[67]!==ne||e[68]!==ge?(pe=s.jsxs("div",{className:"ml-auto flex items-center gap-2",children:[ne,ge]}),e[67]=ne,e[68]=ge,e[69]=pe):pe=e[69];let be;e[70]!==Z||e[71]!==pe?(be=s.jsxs("header",{className:"flex min-h-12 shrink-0 flex-wrap items-center gap-3 border-b px-4 py-2",children:[Z,pe]}),e[70]=Z,e[71]=pe,e[72]=be):be=e[72];let je;e[73]!==f||e[74]!==K?(je=f&&s.jsxs(Ce,{variant:"destructive",className:"mb-4",children:[s.jsx(Dt,{}),s.jsx(qe,{children:"Mission Control could not refresh"}),s.jsx(_t,{className:"truncate",children:f}),s.jsx(Tt,{children:s.jsx(V,{variant:"outline",size:"xs",onClick:K,children:"Retry"})})]}),e[73]=f,e[74]=K,e[75]=je):je=e[75];let we;e[76]!==N.length||e[77]!==q||e[78]!==d||e[79]!==G.length?(we=G.length===0&&!d&&s.jsx(wt,{className:"min-h-64",children:s.jsxs(Nt,{children:[s.jsx(vt,{variant:"icon",children:s.jsx(Ot,{})}),s.jsx(yt,{children:N.length===0?"No live sessions":`Nothing matches "${q}"`}),s.jsx(St,{children:N.length===0?ys:"Try a different filter."})]})}),e[76]=N.length,e[77]=q,e[78]=d,e[79]=G.length,e[80]=we):we=e[80];let Ne;e[81]!==N.length||e[82]!==d||e[83]!==G.length?(Ne=G.length===0&&d&&N.length===0&&s.jsxs("div",{className:"flex items-center justify-center gap-2 py-16 text-sm text-muted-foreground",children:[s.jsx(It,{}),"Loading sessions…"]}),e[81]=N.length,e[82]=d,e[83]=G.length,e[84]=Ne):Ne=e[84];const Le=A==="grid"&&"md:grid-cols-2 2xl:grid-cols-3";let ve;e[85]!==Le?(ve=xe("grid grid-cols-1 gap-3",Le),e[85]=Le,e[86]=ve):ve=e[86];let ye;if(e[87]!==j||e[88]!==I||e[89]!==w||e[90]!==le||e[91]!==A||e[92]!==t||e[93]!==L||e[94]!==u||e[95]!==h||e[96]!==$||e[97]!==G){let R;e[99]!==j||e[100]!==I||e[101]!==w||e[102]!==le||e[103]!==A||e[104]!==t||e[105]!==L||e[106]!==u||e[107]!==h||e[108]!==$?(R=k=>s.jsx(bs,{card:k,compact:A==="list",customName:$[k.session.sessionId],projectLabel:L[k.session.dirName]??qt(k.session),responding:h,goneQuestions:w,onOpen:()=>t(k.session.dirName,k.session.fileName),onRespond:u,onAnswerQuestion:le,onAnswerElicitation:I,onChooseDialog:j},k.session.sessionId),e[99]=j,e[100]=I,e[101]=w,e[102]=le,e[103]=A,e[104]=t,e[105]=L,e[106]=u,e[107]=h,e[108]=$,e[109]=R):R=e[109],ye=G.map(R),e[87]=j,e[88]=I,e[89]=w,e[90]=le,e[91]=A,e[92]=t,e[93]=L,e[94]=u,e[95]=h,e[96]=$,e[97]=G,e[98]=ye}else ye=e[98];let Se;e[110]!==ve||e[111]!==ye?(Se=s.jsx("div",{className:ve,children:ye}),e[110]=ve,e[111]=ye,e[112]=Se):Se=e[112];let Ie;e[113]!==je||e[114]!==we||e[115]!==Ne||e[116]!==Se?(Ie=s.jsx(Ct,{className:"flex-1",children:s.jsxs("div",{className:"p-4",children:[je,we,Ne,Se]})}),e[113]=je,e[114]=we,e[115]=Ne,e[116]=Se,e[117]=Ie):Ie=e[117];let ke;return e[118]!==be||e[119]!==Ie?(ke=s.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[be,Ie]}),e[118]=be,e[119]=Ie,e[120]=ke):ke=e[120],ke}export{As as MissionControl};
|
|
1
|
+
import{r as M,a as He,c as B,j as s}from"./vendor-react-gGw_S5I_.js";import{aq as We,U as Xe,bH as Je,B as U,b6 as Ze,aX as qe,A as Ce,ba as et,bI as Fe,H as Ee,T as Ue,Z as Ae,bJ as tt,bx as st,bw as nt,bv as it,bK as lt,bL as ot,bM as at,bN as rt,J as xe,bO as ct,bP as dt,$ as ut,a2 as ft,bQ as mt,bR as xt,bS as ht,bT as gt,bU as pt,R as bt,bV as jt,L as wt,M as Nt,N as vt,O as yt,Q as St,ag as It,p as Tt,bW as _t,bX as qt,q as Ct}from"./index-CW9tjG1S.js";import{b as kt,am as At,as as Qe,C as De,at as Te,ai as Et,au as Rt,aa as Mt,L as Lt,av as $t,aw as Ft,a as Ot,J as Dt}from"./vendor-ui-Br3ZTAXZ.js";import"./vendor-shiki-DOn6sF-i.js";import"./vendor-markdown-BE1gYnO9.js";const zt=4e3;function Ut(){const o=We(),[e,t]=M.useState([]),[n,i]=M.useState(!1),[a,r]=M.useState(null),c=M.useRef(!1),d=M.useRef(o.key);M.useEffect(()=>(c.current=!1,()=>{c.current=!0}),[]),M.useLayoutEffect(()=>{d.current=o.key},[o.key]);const f=M.useCallback(async()=>{const b=()=>c.current||d.current!==o.key;try{const x=await Xe(Je("/api/mission-control",o));if(b())return;if(!x.ok)throw new Error(`Mission Control request failed (${x.status})`);const g=await x.json();if(b())return;t(Array.isArray(g.summaries)?g.summaries:[]),r(null)}catch(x){if(b())return;r(x instanceof Error?x.message:"Failed to load Mission Control")}finally{b()||i(!1)}},[o]);M.useEffect(()=>{i(!0);const b=()=>{(typeof document>"u"||document.visibilityState==="visible")&&f()},x=()=>{document.visibilityState==="visible"&&f()};b();const g=setInterval(b,zt);return document.addEventListener("visibilitychange",x),()=>{clearInterval(g),document.removeEventListener("visibilitychange",x)}},[f]);const m=M.useMemo(()=>{const b=new Map;for(const x of e)b.set(x.sessionId,x);return b},[e]),y=M.useCallback(()=>{f()},[f]);return{summaries:m,loading:n,error:a,refresh:y}}const Re="data-view-transition-kind",Vt="(prefers-reduced-motion: reduce)";let me=null,ze=null;function Yt(o,e,t){t===null?o.removeAttribute(e):o.setAttribute(e,t)}function Pt(o,e){const t={root:o,kind:e,previousKind:o.getAttribute(Re)};return o.setAttribute(Re,e),ze=t,t}function _e(o){ze===o&&(o.root.getAttribute(Re)===o.kind&&Yt(o.root,Re,o.previousKind),ze=null)}function Bt(){const o=me;if(o){me=null;try{o.transition.skipTransition()}catch{_e(o.tag);return}_e(o.tag)}}function Qt(){if(typeof window>"u"||typeof window.matchMedia!="function")return!1;try{return window.matchMedia(Vt).matches}catch{return!1}}function Gt(o,{kind:e}){Bt();const t=typeof document>"u"?null:document,n=t==null?void 0:t.startViewTransition;if(!t||!(typeof n=="function")||Qt())return o(),null;const a=Pt(t.documentElement,e);let r=!1,c=!1,d;const f=m=>{if(!r){r=!0;try{m?He.flushSync(o):o()}catch(y){throw c=!0,d=y,y}}};try{const m=n.call(t,()=>f(!0)),y={transition:m,tag:a};return me=y,m.ready.catch(()=>{}),m.updateCallbackDone.catch(()=>{}),m.finished.then(()=>{me===y&&(me=null),_e(a)},()=>{me===y&&(me=null),_e(a)}),m}catch{if(_e(a),c)throw d;return f(!1),null}}function Kt(o){const e={};for(const t of o)t.type==="boolean"?e[t.name]=t.defaultValue===!0:t.defaultValue!==void 0?e[t.name]=String(t.defaultValue):e[t.name]="";return e}function Ht(o,e){const t={};for(const n of o){const i=e[n.name];if(typeof i=="boolean"){t[n.name]=i;continue}i!==""&&(t[n.name]=n.type==="number"||n.type==="integer"?Number(i):i)}return t}function Wt(o,e){return o.every(t=>{if(!t.required)return!0;const n=e[t.name];return typeof n=="boolean"?!0:n===""?!1:t.type==="number"||t.type==="integer"?Number.isFinite(Number(n)):!0})}function Xt(o){const e=B.c(52),{request:t,responding:n,onAnswer:i}=o;let a;e[0]!==t.fields?(a=()=>Kt(t.fields),e[0]=t.fields,e[1]=a):a=e[1];const[r,c]=M.useState(a);let d;e[2]!==t.fields||e[3]!==r?(d=Wt(t.fields,r),e[2]=t.fields,e[3]=r,e[4]=d):d=e[4];const f=d,m=t.displayName||t.title||t.serverName;let y;e[5]===Symbol.for("react.memo_cache_sentinel")?(y=(j,v)=>{c(p=>({...p,[j]:v}))},e[5]=y):y=e[5];const b=y;let x;e[6]!==i||e[7]!==t.requestId?(x=()=>i==null?void 0:i(t.requestId,{action:"decline"}),e[6]=i,e[7]=t.requestId,e[8]=x):x=e[8];const g=x;if(t.mode==="url"&&t.url){const j=t.url;let v;e[9]!==t.message?(v=s.jsx("p",{className:"text-sm leading-relaxed text-foreground",children:t.message}),e[9]=t.message,e[10]=v):v=e[10];let p;e[11]!==j?(p=s.jsx("p",{className:"mt-1 truncate font-mono text-xs text-muted-foreground",title:j,children:j}),e[11]=j,e[12]=p):p=e[12];let w;e[13]!==g||e[14]!==i||e[15]!==t.requestId||e[16]!==n||e[17]!==j?(w=i&&s.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[s.jsxs(U,{size:"sm",disabled:n,onClick:()=>{window.open(j,"_blank","noopener,noreferrer"),i(t.requestId,{action:"accept"})},children:["Open link",s.jsx(kt,{"data-icon":"inline-end"})]}),s.jsx(U,{variant:"ghost",size:"sm",disabled:n,onClick:g,children:"Decline"})]}),e[13]=g,e[14]=i,e[15]=t.requestId,e[16]=n,e[17]=j,e[18]=w):w=e[18];let T;return e[19]!==m||e[20]!==v||e[21]!==p||e[22]!==w?(T=s.jsxs(Ye,{server:m,children:[v,p,w]}),e[19]=m,e[20]=v,e[21]=p,e[22]=w,e[23]=T):T=e[23],T}let l;e[24]!==t.message?(l=s.jsx("p",{className:"text-sm leading-relaxed text-foreground",children:t.message}),e[24]=t.message,e[25]=l):l=e[25];let h;if(e[26]!==i||e[27]!==t.fields||e[28]!==t.requestId||e[29]!==n||e[30]!==r){let j;e[32]!==i||e[33]!==t.requestId||e[34]!==n||e[35]!==r?(j=v=>s.jsx(Jt,{id:`elicit-${t.requestId}-${v.name}`,field:v,value:r[v.name],disabled:n||!i,onChange:p=>b(v.name,p)},v.name),e[32]=i,e[33]=t.requestId,e[34]=n,e[35]=r,e[36]=j):j=e[36],h=t.fields.map(j),e[26]=i,e[27]=t.fields,e[28]=t.requestId,e[29]=n,e[30]=r,e[31]=h}else h=e[31];let u;e[37]!==h?(u=s.jsx("div",{className:"mt-3 flex flex-col gap-3",children:h}),e[37]=h,e[38]=u):u=e[38];let S;e[39]!==f||e[40]!==g||e[41]!==i||e[42]!==t.fields||e[43]!==t.requestId||e[44]!==n||e[45]!==r?(S=i&&s.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[s.jsx(U,{size:"sm",disabled:n||!f,onClick:()=>i(t.requestId,{action:"accept",content:Ht(t.fields,r)}),children:"Send"}),s.jsx(U,{variant:"ghost",size:"sm",disabled:n,onClick:g,children:"Decline"})]}),e[39]=f,e[40]=g,e[41]=i,e[42]=t.fields,e[43]=t.requestId,e[44]=n,e[45]=r,e[46]=S):S=e[46];let I;return e[47]!==m||e[48]!==l||e[49]!==u||e[50]!==S?(I=s.jsxs(Ye,{server:m,children:[l,u,S]}),e[47]=m,e[48]=l,e[49]=u,e[50]=S,e[51]=I):I=e[51],I}function Jt(o){const e=B.c(55),{id:t,field:n,value:i,disabled:a,onChange:r}=o;if(n.type==="boolean"){const g=i===!0;let l;e[0]!==r?(l=I=>r(I===!0),e[0]=r,e[1]=l):l=e[1];let h;e[2]!==a||e[3]!==t||e[4]!==g||e[5]!==l?(h=s.jsx(et,{id:t,checked:g,disabled:a,onCheckedChange:l}),e[2]=a,e[3]=t,e[4]=g,e[5]=l,e[6]=h):h=e[6];let u;e[7]!==n?(u=s.jsx(Oe,{field:n}),e[7]=n,e[8]=u):u=e[8];let S;return e[9]!==t||e[10]!==h||e[11]!==u?(S=s.jsxs(Fe,{htmlFor:t,className:"items-start gap-2 font-normal",children:[h,u]}),e[9]=t,e[10]=h,e[11]=u,e[12]=S):S=e[12],S}if(n.type==="enum"){let g;e[13]!==n?(g=s.jsx(Oe,{field:n}),e[13]=n,e[14]=g):g=e[14];let l;e[15]!==t||e[16]!==g?(l=s.jsx(Fe,{htmlFor:t,children:g}),e[15]=t,e[16]=g,e[17]=l):l=e[17];let h;e[18]!==i?(h=typeof i=="string"&&i?[i]:[],e[18]=i,e[19]=h):h=e[19];let u;e[20]!==r?(u=w=>{w[0]&&r(w[0])},e[20]=r,e[21]=u):u=e[21];const S=n.label;let I;e[22]!==n.options?(I=n.options??[],e[22]=n.options,e[23]=I):I=e[23];let j;if(e[24]!==a||e[25]!==I){let w;e[27]!==a?(w=T=>s.jsx(Ee,{value:T.value,disabled:a,className:"w-full justify-start px-3",children:T.label},T.value),e[27]=a,e[28]=w):w=e[28],j=I.map(w),e[24]=a,e[25]=I,e[26]=j}else j=e[26];let v;e[29]!==n.label||e[30]!==t||e[31]!==h||e[32]!==u||e[33]!==j?(v=s.jsx(Ue,{id:t,value:h,onValueChange:u,orientation:"vertical",variant:"outline",size:"sm",className:"w-full items-stretch","aria-label":S,children:j}),e[29]=n.label,e[30]=t,e[31]=h,e[32]=u,e[33]=j,e[34]=v):v=e[34];let p;return e[35]!==l||e[36]!==v?(p=s.jsxs("div",{className:"flex flex-col gap-1.5",children:[l,v]}),e[35]=l,e[36]=v,e[37]=p):p=e[37],p}let c;e[38]!==n?(c=s.jsx(Oe,{field:n}),e[38]=n,e[39]=c):c=e[39];let d;e[40]!==t||e[41]!==c?(d=s.jsx(Fe,{htmlFor:t,children:c}),e[40]=t,e[41]=c,e[42]=d):d=e[42];const f=n.type==="string"?"text":"number",m=typeof i=="string"?i:"";let y;e[43]!==r?(y=g=>r(g.target.value),e[43]=r,e[44]=y):y=e[44];let b;e[45]!==a||e[46]!==n.label||e[47]!==t||e[48]!==f||e[49]!==m||e[50]!==y?(b=s.jsx(Ze,{id:t,"aria-label":n.label,type:f,value:m,disabled:a,onChange:y}),e[45]=a,e[46]=n.label,e[47]=t,e[48]=f,e[49]=m,e[50]=y,e[51]=b):b=e[51];let x;return e[52]!==d||e[53]!==b?(x=s.jsxs("div",{className:"flex flex-col gap-1.5",children:[d,b]}),e[52]=d,e[53]=b,e[54]=x):x=e[54],x}function Oe(o){const e=B.c(8),{field:t}=o;let n;e[0]!==t.required?(n=t.required&&s.jsx("span",{className:"ml-0.5 text-warning",children:"*"}),e[0]=t.required,e[1]=n):n=e[1];let i;e[2]!==t.description?(i=t.description&&s.jsx("span",{className:"block text-xs font-normal text-muted-foreground",children:t.description}),e[2]=t.description,e[3]=i):i=e[3];let a;return e[4]!==t.label||e[5]!==n||e[6]!==i?(a=s.jsxs("span",{className:"min-w-0",children:[t.label,n,i]}),e[4]=t.label,e[5]=n,e[6]=i,e[7]=a):a=e[7],a}function Ye(o){const e=B.c(8),{server:t,children:n}=o;let i;e[0]===Symbol.for("react.memo_cache_sentinel")?(i=s.jsx(At,{className:"text-info"}),e[0]=i):i=e[0];let a;e[1]!==t?(a=s.jsxs(qe,{children:[t," needs input"]}),e[1]=t,e[2]=a):a=e[2];let r;e[3]!==n?(r=s.jsx("div",{className:"col-start-2 mt-1 min-w-0",children:n}),e[3]=n,e[4]=r):r=e[4];let c;return e[5]!==a||e[6]!==r?(c=s.jsxs(Ce,{className:"border-info/40 bg-info/5",children:[i,a,r]}),e[5]=a,e[6]=r,e[7]=c):c=e[7],c}const Zt=["allow","allow_always","deny"],es=[{decision:"allow",label:"Allow",variant:"default"},{decision:"deny",label:"Deny",variant:"destructive"},{decision:"allow_always",label:"Always",variant:"outline"}];function ts(o,e){return(o.availableDecisions??Zt).includes(e)}function ss(o){const e=B.c(22),{request:t,queued:n,responding:i,onRespond:a}=o;let r;if(e[0]!==a||e[1]!==n||e[2]!==t||e[3]!==i){let c;e[5]!==t?(c=S=>ts(t,S.decision),e[5]=t,e[6]=c):c=e[6];const d=es.filter(c);t.defaultToNo&&d.sort(is);const f=d.some(ns);let m;e[7]===Symbol.for("react.memo_cache_sentinel")?(m=s.jsx(Qe,{className:"text-warning"}),e[7]=m):m=e[7];const y=t.title||`Allow ${t.toolName}?`;let b;e[8]!==y?(b=s.jsx("span",{className:"min-w-0 flex-1 truncate",children:y}),e[8]=y,e[9]=b):b=e[9];let x;e[10]!==n?(x=n>0&&s.jsxs("span",{className:"shrink-0 font-mono text-xs text-warning",children:["+",n]}),e[10]=n,e[11]=x):x=e[11];let g;e[12]!==b||e[13]!==x?(g=s.jsxs(qe,{className:"flex min-w-0 items-center gap-2",children:[b,x]}),e[12]=b,e[13]=x,e[14]=g):g=e[14];let l;e[15]!==t.toolName?(l=s.jsx("span",{className:"shrink-0 font-mono text-xs text-muted-foreground",children:t.toolName}),e[15]=t.toolName,e[16]=l):l=e[16];let h;e[17]!==t.summary?(h=t.summary&&s.jsx("code",{className:"min-w-0 flex-1 truncate rounded bg-muted px-2 py-1 font-mono text-xs text-foreground",children:t.summary}),e[17]=t.summary,e[18]=h):h=e[18];let u;e[19]!==l||e[20]!==h?(u=s.jsxs("div",{className:"col-start-2 mt-2 flex min-w-0 items-center gap-2",children:[l,h]}),e[19]=l,e[20]=h,e[21]=u):u=e[21],r=s.jsxs(Ce,{className:"border-warning/40 bg-warning/5",children:[m,g,u,a&&(f?s.jsx("div",{className:"col-start-2 mt-3 flex items-center gap-2",children:d.map(S=>{const{decision:I,label:j,variant:v}=S;return s.jsx(U,{autoFocus:t.defaultToNo&&I==="deny",size:"xs",variant:v,disabled:i,onClick:()=>a(t.requestId,I),children:j},`${t.requestId}:${I}`)})}):s.jsx("p",{className:"col-start-2 mt-2 text-xs text-warning",children:"Resolve this approval in its own provider"}))]}),e[0]=a,e[1]=n,e[2]=t,e[3]=i,e[4]=r}else r=e[4];return r}function ns(o){return o.decision!=="allow_always"}function is(o,e){return+(e.decision==="deny")-+(o.decision==="deny")}function ls(o){return o.some(e=>e.options.length===0||e.options.some(t=>t.hasPreview))}function os(o){const e=B.c(64),{request:t,responding:n,gone:i,onAnswer:a,onOpenSession:r}=o,c=t.questions,[d,f]=M.useState(0);let m;e[0]===Symbol.for("react.memo_cache_sentinel")?(m={},e[0]=m):m=e[0];const y=M.useRef(m);let b;e[1]===Symbol.for("react.memo_cache_sentinel")?(b=new Set,e[1]=b):b=e[1];const[x,g]=M.useState(b);if(c.length===0)return null;if(ls(c)){let N;e[2]!==c[0].question?(N=s.jsx("p",{className:"text-sm leading-relaxed text-foreground",children:c[0].question}),e[2]=c[0].question,e[3]=N):N=e[3];let E;e[4]===Symbol.for("react.memo_cache_sentinel")?(E=s.jsx(De,{"data-icon":"inline-end"}),e[4]=E):E=e[4];let _;e[5]!==r?(_=s.jsxs(U,{variant:"outline",size:"sm",onClick:r,className:"mt-3",children:["Open full question",E]}),e[5]=r,e[6]=_):_=e[6];let z;return e[7]!==N||e[8]!==_?(z=s.jsxs(Pe,{children:[N,_]}),e[7]=N,e[8]=_,e[9]=z):z=e[9],z}const l=c[d],h=n||!a;let u;e[10]!==l.question||e[11]!==d||e[12]!==a||e[13]!==c.length||e[14]!==t.toolUseId?(u=function(E){const _={...y.current,[l.question]:E};if(d+1<c.length){y.current=_,g(new Set),f(d+1);return}a==null||a(t.toolUseId,_)},e[10]=l.question,e[11]=d,e[12]=a,e[13]=c.length,e[14]=t.toolUseId,e[15]=u):u=e[15];const S=u;let I;e[16]!==l.header?(I=l.header&&s.jsx(Ae,{variant:"outline",className:"border-info/40 text-info",children:l.header}),e[16]=l.header,e[17]=I):I=e[17];let j;e[18]!==d||e[19]!==c.length?(j=c.length>1&&s.jsxs("span",{className:"ml-auto shrink-0 font-mono text-xs text-muted-foreground",children:[d+1," of ",c.length]}),e[18]=d,e[19]=c.length,e[20]=j):j=e[20];let v;e[21]!==I||e[22]!==j?(v=s.jsxs("div",{className:"flex items-baseline gap-1.5",children:[I,j]}),e[21]=I,e[22]=j,e[23]=v):v=e[23];let p;e[24]!==l.question?(p=s.jsx("p",{className:"mt-2 line-clamp-3 text-sm leading-relaxed text-foreground",title:l.question,children:l.question}),e[24]=l.question,e[25]=p):p=e[25];let w;e[26]!==x?(w=[...x],e[26]=x,e[27]=w):w=e[27];let T;e[28]!==S||e[29]!==l.multiSelect?(T=N=>{l.multiSelect?g(new Set(N)):N[0]&&S(N[0])},e[28]=S,e[29]=l.multiSelect,e[30]=T):T=e[30];const O=l.multiSelect,L=l.question;let C;if(e[31]!==l.options||e[32]!==h){let N;e[34]!==h?(N=E=>s.jsx(as,{option:E,disabled:h},E.label),e[34]=h,e[35]=N):N=e[35],C=l.options.map(N),e[31]=l.options,e[32]=h,e[33]=C}else C=e[33];let q;e[36]!==l.multiSelect||e[37]!==l.question||e[38]!==C||e[39]!==w||e[40]!==T?(q=s.jsx(Ue,{value:w,onValueChange:T,multiple:O,orientation:"vertical",variant:"outline",size:"sm",className:"mt-3 w-full items-stretch","aria-label":L,children:C}),e[36]=l.multiSelect,e[37]=l.question,e[38]=C,e[39]=w,e[40]=T,e[41]=q):q=e[41];let Q;e[42]!==S||e[43]!==l.multiSelect||e[44]!==d||e[45]!==a||e[46]!==c.length||e[47]!==n||e[48]!==x?(Q=l.multiSelect&&a&&s.jsx(U,{size:"sm",disabled:n||x.size===0,onClick:()=>S(tt(x)),children:d+1<c.length?"Next":"Send"}),e[42]=S,e[43]=l.multiSelect,e[44]=d,e[45]=a,e[46]=c.length,e[47]=n,e[48]=x,e[49]=Q):Q=e[49];let V;e[50]===Symbol.for("react.memo_cache_sentinel")?(V=s.jsx(De,{"data-icon":"inline-end"}),e[50]=V):V=e[50];let A;e[51]!==r?(A=s.jsxs(U,{variant:"ghost",size:"sm",onClick:r,className:"ml-auto text-muted-foreground",children:["Open session",V]}),e[51]=r,e[52]=A):A=e[52];let $;e[53]!==Q||e[54]!==A?($=s.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[Q,A]}),e[53]=Q,e[54]=A,e[55]=$):$=e[55];let F;e[56]!==i?(F=i&&s.jsx("p",{className:"mt-2 text-xs text-warning",children:"This question may already be answered. Open the session to check."}),e[56]=i,e[57]=F):F=e[57];let D;return e[58]!==q||e[59]!==$||e[60]!==F||e[61]!==v||e[62]!==p?(D=s.jsxs(Pe,{children:[v,p,q,$,F]}),e[58]=q,e[59]=$,e[60]=F,e[61]=v,e[62]=p,e[63]=D):D=e[63],D}function as(o){const e=B.c(17),{option:t,disabled:n}=o;let i;e[0]!==t.label?(i=s.jsx("span",{className:"min-w-0 flex-1 truncate text-left",children:t.label}),e[0]=t.label,e[1]=i):i=e[1];const a=i;if(!t.description){let m;return e[2]!==n||e[3]!==a||e[4]!==t.label?(m=s.jsx(Ee,{value:t.label,disabled:n,className:"w-full justify-start px-3",children:a}),e[2]=n,e[3]=a,e[4]=t.label,e[5]=m):m=e[5],m}let r;e[6]!==n||e[7]!==t.label?(r=s.jsx(Ee,{value:t.label,disabled:n,className:"w-full justify-start px-3"}),e[6]=n,e[7]=t.label,e[8]=r):r=e[8];let c;e[9]!==a||e[10]!==r?(c=s.jsx(nt,{render:r,children:a}),e[9]=a,e[10]=r,e[11]=c):c=e[11];let d;e[12]!==t.description?(d=s.jsx(st,{side:"right",className:"max-w-72 text-left",children:t.description}),e[12]=t.description,e[13]=d):d=e[13];let f;return e[14]!==c||e[15]!==d?(f=s.jsxs(it,{children:[c,d]}),e[14]=c,e[15]=d,e[16]=f):f=e[16],f}function Pe(o){const e=B.c(4),{children:t}=o;let n,i;e[0]===Symbol.for("react.memo_cache_sentinel")?(n=s.jsx(Te,{className:"text-info"}),i=s.jsx(qe,{children:"Answer to continue"}),e[0]=n,e[1]=i):(n=e[0],i=e[1]);let a;return e[2]!==t?(a=s.jsxs(Ce,{className:"border-info/40 bg-info/5",children:[n,i,s.jsx("div",{className:"col-start-2 mt-1 min-w-0",children:t})]}),e[2]=t,e[3]=a):a=e[3],a}function rs(o){const e=B.c(15),{request:t,responding:n,onChoose:i}=o;let a,r;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=s.jsx(Qe,{className:"text-warning"}),r=s.jsx(qe,{children:"Claude declined this request"}),e[0]=a,e[1]=r):(a=e[0],r=e[1]);let c;e[2]!==t.originalModel?(c=s.jsxs("p",{className:"text-sm leading-relaxed text-foreground",children:[t.originalModel," would not answer. Retrying on a fallback model may work."]}),e[2]=t.originalModel,e[3]=c):c=e[3];let d;e[4]!==t.guidanceText?(d=t.guidanceText&&s.jsx("p",{className:"mt-1 text-sm leading-relaxed text-muted-foreground",children:t.guidanceText}),e[4]=t.guidanceText,e[5]=d):d=e[5];let f;e[6]!==i||e[7]!==t.fallbackModel||e[8]!==t.requestId||e[9]!==n?(f=i&&s.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-2",children:[s.jsxs(U,{size:"sm",disabled:n,onClick:()=>i(t.requestId,"retry_fallback"),children:["Retry on ",t.fallbackModel]}),s.jsx(U,{variant:"outline",size:"sm",disabled:n,onClick:()=>i(t.requestId,"edit_prompt"),children:"Edit prompt"}),s.jsx(U,{variant:"ghost",size:"sm",disabled:n,className:"ml-auto text-muted-foreground",onClick:()=>i(t.requestId,"cancelled"),children:"Dismiss"})]}),e[6]=i,e[7]=t.fallbackModel,e[8]=t.requestId,e[9]=n,e[10]=f):f=e[10];let m;return e[11]!==c||e[12]!==d||e[13]!==f?(m=s.jsxs(Ce,{className:"border-warning/40 bg-warning/5",children:[a,r,s.jsxs("div",{className:"col-start-2 mt-1 min-w-0",children:[c,d,f]})]}),e[11]=c,e[12]=d,e[13]=f,e[14]=m):m=e[14],m}function cs(o){return o==="awaiting_approval"||o==="awaiting_prompt"||o==="awaiting_question"||o==="awaiting_answer"}function Ge(o){return o.canAnswer&&cs(o.state)}function Me(o){return o==="done"||o==="failed"}const Be={awaiting_approval:0,awaiting_prompt:1,awaiting_question:2,awaiting_answer:3,running:4,failed:5,done:6};function ds(o,e,t,n,i,a){return t?"awaiting_approval":n?"awaiting_prompt":i?"awaiting_question":a||o.agentStatus==="deferred"||o.agentStatus==="idle"&&e?"awaiting_answer":o.agentTerminalReason?"failed":e&&o.agentStatus&&at.has(o.agentStatus)?"running":"done"}const us=6;function fs({sessions:o,procBySession:e,summaries:t,permissionsBySession:n,questionsBySession:i,elicitationsBySession:a,dialogsBySession:r,awaitingPlan:c,newlyCompleted:d,canAnswer:f=()=>!0,finishedLimit:m=us,now:y=Date.now()}){const b=[];for(const l of lt(o)){const h=n.get(l.sessionId)??[],u=i.get(l.sessionId)??[],S=a.get(l.sessionId)??[],I=r.get(l.sessionId)??[],j=c.has(l.sessionId),v=h.length+u.length+S.length+I.length+Number(j);l.teamName&&l.agentName&&v===0||b.push({session:l,state:ds(l,ot(l,e,y),h.length>0,S.length>0||I.length>0,u.length>0,j),summary:t.get(l.sessionId)??null,permissions:h,questions:u,elicitations:S,dialogs:I,canAnswer:f(l)})}const x=b.filter(l=>Me(l.state)),g=[...x.filter(l=>d.has(l.session.sessionId)),...x.filter(l=>!d.has(l.session.sessionId))].slice(0,m);return[...b.filter(l=>!Me(l.state)),...g].sort((l,h)=>Be[l.state]-Be[h.state])}function ms(o,e){switch(e){case"running":return o.filter(t=>t.state==="running");case"needs-you":return o.filter(Ge);case"finished":return o.filter(t=>Me(t.state));default:return o}}function xs(o){const e={total:o.length,running:0,needsYou:0,finished:0,failed:0};for(const t of o)t.state==="running"&&e.running++,Ge(t)&&e.needsYou++,Me(t.state)&&e.finished++,t.state==="failed"&&e.failed++;return e}function hs(o){return o>=90?"text-destructive":o>=70?"text-warning":"text-muted-foreground"}const gs={awaiting_approval:{label:"Waiting for approval",text:"text-warning",shell:"border-warning/40 bg-warning/5",icon:Te},awaiting_prompt:{label:"Waiting for your input",text:"text-info",shell:"border-info/40 bg-info/5",icon:Te},awaiting_question:{label:"Waiting for your answer",text:"text-info",shell:"border-info/40 bg-info/5",icon:Te},awaiting_answer:{label:"Waiting for your answer",text:"text-warning",shell:"border-warning/40 bg-warning/5",icon:Te},running:{label:"Running",text:"text-info",shell:"border-border",icon:null},done:{label:"Done",text:"text-success",shell:"border-border",icon:Rt},failed:{label:"Failed",text:"text-destructive",shell:"border-destructive/40",icon:Et}};function ps(o){const e=B.c(3),{icon:t}=o;if(!t){let i;return e[0]===Symbol.for("react.memo_cache_sentinel")?(i=s.jsx("span",{className:"size-2 shrink-0 rounded-full bg-info"}),e[0]=i):i=e[0],i}let n;return e[1]!==t?(n=s.jsx(t,{className:"size-3.5 shrink-0"}),e[1]=t,e[2]=n):n=e[2],n}const bs=M.memo(function(e){const t=B.c(99),{card:n,customName:i,projectLabel:a,responding:r,goneQuestions:c,compact:d,onOpen:f,onRespond:m,onAnswerQuestion:y,onAnswerElicitation:b,onChooseDialog:x}=e,g=d===void 0?!1:d,{session:l,state:h,summary:u,permissions:S,questions:I,elicitations:j,dialogs:v,canAnswer:p}=n,w=gs[h],T=S[0],O=I[0],L=j[0],C=v[0],q=!!(T||O||L||C);let Q;t[0]!==i||t[1]!==l?(Q=rt(l,i),t[0]=i,t[1]=l,t[2]=Q):Q=t[2];const V=Q,A=g&&"gap-1.5 py-2";let $;t[3]!==w.shell||t[4]!==A?($=xe("motion-card motion-list-item group flex min-w-0 flex-col gap-2 rounded-lg border bg-card p-3 text-left transition-colors hover:border-foreground/20",w.shell,A),t[3]=w.shell,t[4]=A,t[5]=$):$=t[5];const F=`Open session ${V}`;let D;t[6]!==a?(D=s.jsx("span",{className:"min-w-0 flex-1 truncate font-mono text-xs text-muted-foreground",children:a}),t[6]=a,t[7]=D):D=t[7];let N;t[8]!==l.access?(N=s.jsx(ct,{access:l.access}),t[8]=l.access,t[9]=N):N=t[9];let E;t[10]!==u?(E=(u==null?void 0:u.model)&&s.jsx("span",{className:"shrink-0 font-mono text-xs text-muted-foreground",children:dt(u.model)}),t[10]=u,t[11]=E):E=t[11];let _;t[12]===Symbol.for("react.memo_cache_sentinel")?(_=s.jsx(De,{"data-icon":"inline-end",className:"shrink-0 text-transparent transition-colors group-hover:text-muted-foreground"}),t[12]=_):_=t[12];let z;t[13]!==D||t[14]!==N||t[15]!==E?(z=s.jsxs("span",{className:"flex min-w-0 items-center gap-1.5",children:[D,N,E,_]}),t[13]=D,t[14]=N,t[15]=E,t[16]=z):z=t[16];const G=g?"truncate":"line-clamp-2";let oe;t[17]!==G?(oe=xe("text-sm font-medium leading-snug text-foreground",G),t[17]=G,t[18]=oe):oe=t[18];let K;t[19]!==oe||t[20]!==V?(K=s.jsx("span",{className:oe,children:V}),t[19]=oe,t[20]=V,t[21]=K):K=t[21];let ae;t[22]!==f||t[23]!==z||t[24]!==K||t[25]!==F?(ae=s.jsxs(U,{variant:"ghost",onClick:f,className:"-m-1 h-auto min-w-0 flex-col items-stretch justify-start gap-1 whitespace-normal p-1 text-left","aria-label":F,children:[z,K]}),t[22]=f,t[23]=z,t[24]=K,t[25]=F,t[26]=ae):ae=t[26];let re;t[27]!==w.text?(re=xe("flex items-center gap-1.5 text-xs font-medium",w.text),t[27]=w.text,t[28]=re):re=t[28];let ce;t[29]!==w.icon?(ce=s.jsx(ps,{icon:w.icon}),t[29]=w.icon,t[30]=ce):ce=t[30];let le;t[31]!==w.label?(le=s.jsx("span",{className:"truncate",children:w.label}),t[31]=w.label,t[32]=le):le=t[32];const ue=l.lastActivityAt||l.lastModified;let H;t[33]!==ue?(H=ut(ue),t[33]=ue,t[34]=H):H=t[34];let de;t[35]!==H?(de=s.jsx("span",{className:"ml-auto shrink-0 font-mono text-xs font-normal text-muted-foreground",children:H}),t[35]=H,t[36]=de):de=t[36];let W;t[37]!==re||t[38]!==ce||t[39]!==le||t[40]!==de?(W=s.jsxs("div",{className:re,children:[ce,le,de]}),t[37]=re,t[38]=ce,t[39]=le,t[40]=de,t[41]=W):W=t[41];let X;t[42]!==p||t[43]!==m||t[44]!==S.length||t[45]!==T||t[46]!==r||t[47]!==l.sessionId?(X=T&&s.jsx(ss,{request:T,queued:S.length-1,responding:r.has(T.requestId),onRespond:p?(Y,P)=>m(l.sessionId,Y,P):void 0}),t[42]=p,t[43]=m,t[44]=S.length,t[45]=T,t[46]=r,t[47]=l.sessionId,t[48]=X):X=t[48];let J;t[49]!==p||t[50]!==C||t[51]!==x||t[52]!==T||t[53]!==r||t[54]!==l.sessionId?(J=!T&&C&&s.jsx(rs,{request:C,responding:r.has(C.requestId),onChoose:p?(Y,P)=>x(l.sessionId,Y,P):void 0},C.requestId),t[49]=p,t[50]=C,t[51]=x,t[52]=T,t[53]=r,t[54]=l.sessionId,t[55]=J):J=t[55];let Z;t[56]!==p||t[57]!==C||t[58]!==L||t[59]!==b||t[60]!==T||t[61]!==r||t[62]!==l.sessionId?(Z=!T&&!C&&L&&s.jsx(Xt,{request:L,responding:r.has(L.requestId),onAnswer:p?(Y,P)=>b(l.sessionId,Y,P):void 0},L.requestId),t[56]=p,t[57]=C,t[58]=L,t[59]=b,t[60]=T,t[61]=r,t[62]=l.sessionId,t[63]=Z):Z=t[63];let ee;t[64]!==p||t[65]!==C||t[66]!==L||t[67]!==c||t[68]!==y||t[69]!==f||t[70]!==O||t[71]!==T||t[72]!==r||t[73]!==l.sessionId?(ee=!T&&!C&&!L&&O&&s.jsx(os,{request:O,responding:r.has(O.toolUseId),gone:c.has(O.toolUseId),onAnswer:p?(Y,P)=>y(l.sessionId,Y,P):void 0,onOpenSession:f},O.toolUseId),t[64]=p,t[65]=C,t[66]=L,t[67]=c,t[68]=y,t[69]=f,t[70]=O,t[71]=T,t[72]=r,t[73]=l.sessionId,t[74]=ee):ee=t[74];let te;t[75]!==q||t[76]!==p?(te=q&&!p&&s.jsxs("p",{className:"flex items-center gap-1.5 rounded-md bg-muted/50 px-2.5 py-2 text-xs text-muted-foreground",children:[s.jsx(Mt,{"data-icon":"inline-start",className:"size-3.5 shrink-0"}),"View only · you can’t answer this"]}),t[75]=q,t[76]=p,t[77]=te):te=t[77];let se;t[78]!==q||t[79]!==u?(se=!q&&(u==null?void 0:u.currentTool)&&s.jsx(js,{tool:u.currentTool}),t[78]=q,t[79]=u,t[80]=se):se=t[80];let ne;t[81]!==q||t[82]!==g||t[83]!==u?(ne=!g&&!q&&(u==null?void 0:u.lastAssistantText)&&s.jsx("p",{className:"line-clamp-4 text-sm leading-relaxed text-muted-foreground",children:u.lastAssistantText}),t[81]=q,t[82]=g,t[83]=u,t[84]=ne):ne=t[84];let ie;t[85]!==u?(ie=u&&s.jsx(ws,{summary:u}),t[85]=u,t[86]=ie):ie=t[86];let fe;return t[87]!==ae||t[88]!==W||t[89]!==X||t[90]!==J||t[91]!==Z||t[92]!==ee||t[93]!==te||t[94]!==se||t[95]!==ne||t[96]!==ie||t[97]!==$?(fe=s.jsxs("div",{className:$,children:[ae,W,X,J,Z,ee,te,se,ne,ie]}),t[87]=ae,t[88]=W,t[89]=X,t[90]=J,t[91]=Z,t[92]=ee,t[93]=te,t[94]=se,t[95]=ne,t[96]=ie,t[97]=$,t[98]=fe):fe=t[98],fe});function js(o){const e=B.c(7),{tool:t}=o;let n;e[0]!==t.name?(n=s.jsx("span",{className:"shrink-0 font-mono text-xs text-muted-foreground",children:t.name}),e[0]=t.name,e[1]=n):n=e[1];let i;e[2]!==t.summary?(i=s.jsx("code",{className:"min-w-0 flex-1 truncate font-mono text-xs text-foreground/80",children:t.summary}),e[2]=t.summary,e[3]=i):i=e[3];let a;return e[4]!==n||e[5]!==i?(a=s.jsxs("div",{className:"flex min-w-0 items-center gap-2 rounded-md bg-muted/50 px-2.5 py-2",children:[n,i]}),e[4]=n,e[5]=i,e[6]=a):a=e[6],a}function ws(o){const e=B.c(11),{summary:t}=o,n=t.filesTotal,i=t.context,a=n.count>0,r=i!==null&&i.used>0;if(!a&&!r)return null;let c;e[0]!==n.additions||e[1]!==n.count||e[2]!==n.deletions||e[3]!==a?(c=a&&s.jsxs("span",{className:"flex min-w-0 items-center gap-1.5",children:[s.jsxs("span",{className:"truncate",children:[n.count," file",n.count===1?"":"s"]}),s.jsx(ft,{add:n.additions,del:n.deletions})]}),e[0]=n.additions,e[1]=n.count,e[2]=n.deletions,e[3]=a,e[4]=c):c=e[4];let d;e[5]!==i||e[6]!==r?(d=r&&s.jsxs("span",{className:xe("ml-auto shrink-0",hs(i.percent)),children:["ctx ",i.percent,"%"]}),e[5]=i,e[6]=r,e[7]=d):d=e[7];let f;return e[8]!==c||e[9]!==d?(f=s.jsxs("div",{className:"mt-auto flex items-center gap-2 border-t pt-2 font-mono text-xs text-muted-foreground",children:[c,d]}),e[8]=c,e[9]=d,e[10]=f):f=e[10],f}const Ns=8e3,vs=12,ys="Start Claude Code, Codex, or Copilot and every session shows up here",Ss=[{id:"all",label:"All"},{id:"running",label:"Running"},{id:"needs-you",label:"Needs you"},{id:"finished",label:"Finished"}],Is=[{id:"grid",label:"Grid layout",Icon:Lt},{id:"list",label:"List layout",Icon:$t}];function As(o){const e=B.c(121),{onSelectSession:t}=o,{sessions:n,procBySession:i,newlyCompleted:a,refresh:r}=mt(),{summaries:c,loading:d,error:f,refresh:m}=Ut(),{permissionsBySession:y,questionsBySession:b,elicitationsBySession:x,dialogsBySession:g,awaitingPlan:l,responding:h,respond:u,answerQuestion:S,answerElicitation:I,answerDialog:j,refresh:v}=xt();let p;e[0]===Symbol.for("react.memo_cache_sentinel")?(p=new Set,e[0]=p):p=e[0];const[w,T]=M.useState(p),{names:O}=ht(),{names:L}=gt(),C=pt(),[q,Q]=M.useState("all");let V;e[1]===Symbol.for("react.memo_cache_sentinel")?(V=bt("mission-control-layout"),e[1]=V):V=e[1];const[A,$]=jt(V,"grid");let F;e[2]!==C?(F=R=>C(R.access).answer,e[2]=C,e[3]=F):F=e[3];let D;e[4]!==l||e[5]!==g||e[6]!==x||e[7]!==a||e[8]!==y||e[9]!==i||e[10]!==b||e[11]!==n||e[12]!==c||e[13]!==F?(D=fs({sessions:n,procBySession:i,summaries:c,permissionsBySession:y,questionsBySession:b,elicitationsBySession:x,dialogsBySession:g,awaitingPlan:l,newlyCompleted:a,canAnswer:F}),e[4]=l,e[5]=g,e[6]=x,e[7]=a,e[8]=y,e[9]=i,e[10]=b,e[11]=n,e[12]=c,e[13]=F,e[14]=D):D=e[14];const N=D;let E;e[15]!==N?(E=xs(N),e[15]=N,e[16]=E):E=e[16];const _=E;let z;e[17]!==N||e[18]!==q?(z=ms(N,q),e[17]=N,e[18]=q,e[19]=z):z=e[19];const G=z;let oe;e[20]!==v||e[21]!==r||e[22]!==m?(oe=()=>{r(),m(),v()},e[20]=v,e[21]=r,e[22]=m,e[23]=oe):oe=e[23];const K=oe;let ae,re;e[24]!==r?(ae=()=>{const R=setInterval(()=>{document.visibilityState==="visible"&&r()},Ns);return()=>clearInterval(R)},re=[r],e[24]=r,e[25]=ae,e[26]=re):(ae=e[25],re=e[26]),M.useEffect(ae,re);let ce;e[27]!==S?(ce=async(R,k,$e)=>{(await S(R,k,$e)).ok||T(Ke=>new Set(Ke).add(k))},e[27]=S,e[28]=ce):ce=e[28];const le=ce;let ue;e[29]!==N.length?(ue=function(k){N.length<=vs?Gt(k,{kind:"fade"}):M.startTransition(k)},e[29]=N.length,e[30]=ue):ue=e[30];const H=ue;let de;e[31]===Symbol.for("react.memo_cache_sentinel")?(de=s.jsx("h2",{className:"truncate text-sm font-semibold",children:"Mission Control"}),e[31]=de):de=e[31];let W;e[32]!==_.total?(W=s.jsx(Ae,{variant:"secondary",children:_.total}),e[32]=_.total,e[33]=W):W=e[33];let X;e[34]!==_.needsYou?(X=_.needsYou>0&&s.jsxs(Ae,{variant:"outline",className:"border-warning/40 text-warning",children:[_.needsYou," need you"]}),e[34]=_.needsYou,e[35]=X):X=e[35];let J;e[36]!==_.failed?(J=_.failed>0&&s.jsxs(Ae,{variant:"destructive",children:[_.failed," failed"]}),e[36]=_.failed,e[37]=J):J=e[37];let Z;e[38]!==W||e[39]!==X||e[40]!==J?(Z=s.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[de,W,X,J]}),e[38]=W,e[39]=X,e[40]=J,e[41]=Z):Z=e[41];let ee;e[42]!==q?(ee=[q],e[42]=q,e[43]=ee):ee=e[43];let te;e[44]!==q||e[45]!==H?(te=R=>{const k=R.at(-1);k&&k!==q&&H(()=>Q(k))},e[44]=q,e[45]=H,e[46]=te):te=e[46];let se;e[47]!==_.needsYou?(se=Ss.map(R=>s.jsxs(Ee,{value:R.id,"aria-label":`Show ${R.label.toLowerCase()} sessions`,children:[R.label,R.id==="needs-you"&&_.needsYou>0&&s.jsx("span",{className:"font-mono text-warning",children:_.needsYou})]},R.id)),e[47]=_.needsYou,e[48]=se):se=e[48];let ne;e[49]!==ee||e[50]!==te||e[51]!==se?(ne=s.jsx(Ue,{value:ee,onValueChange:te,variant:"outline",size:"sm",spacing:0,"aria-label":"Filter sessions",children:se}),e[49]=ee,e[50]=te,e[51]=se,e[52]=ne):ne=e[52];let ie;e[53]!==A||e[54]!==$||e[55]!==H?(ie=Is.map(R=>{const{id:k,label:$e,Icon:Ve}=R;return s.jsx(U,{variant:"ghost",size:"icon-xs","aria-label":$e,"aria-pressed":A===k,onClick:()=>{k!==A&&H(()=>$(k))},className:xe(A===k&&"bg-accent text-accent-foreground"),children:s.jsx(Ve,{"data-icon":"inline-start"})},k)}),e[53]=A,e[54]=$,e[55]=H,e[56]=ie):ie=e[56];const fe=d&&"animate-spin";let Y;e[57]!==fe?(Y=xe(fe),e[57]=fe,e[58]=Y):Y=e[58];let P;e[59]!==Y?(P=s.jsx(Ot,{"data-icon":"inline-start",className:Y}),e[59]=Y,e[60]=P):P=e[60];let he;e[61]!==K||e[62]!==P?(he=s.jsx(U,{variant:"ghost",size:"icon-xs","aria-label":"Refresh Mission Control",onClick:K,children:P}),e[61]=K,e[62]=P,e[63]=he):he=e[63];let ge;e[64]!==ie||e[65]!==he?(ge=s.jsxs("div",{className:"flex items-center gap-1",children:[ie,he]}),e[64]=ie,e[65]=he,e[66]=ge):ge=e[66];let pe;e[67]!==ne||e[68]!==ge?(pe=s.jsxs("div",{className:"ml-auto flex items-center gap-2",children:[ne,ge]}),e[67]=ne,e[68]=ge,e[69]=pe):pe=e[69];let be;e[70]!==Z||e[71]!==pe?(be=s.jsxs("header",{className:"flex min-h-12 shrink-0 flex-wrap items-center gap-3 border-b px-4 py-2",children:[Z,pe]}),e[70]=Z,e[71]=pe,e[72]=be):be=e[72];let je;e[73]!==f||e[74]!==K?(je=f&&s.jsxs(Ce,{variant:"destructive",className:"mb-4",children:[s.jsx(Dt,{}),s.jsx(qe,{children:"Mission Control could not refresh"}),s.jsx(Tt,{className:"truncate",children:f}),s.jsx(_t,{children:s.jsx(U,{variant:"outline",size:"xs",onClick:K,children:"Retry"})})]}),e[73]=f,e[74]=K,e[75]=je):je=e[75];let we;e[76]!==N.length||e[77]!==q||e[78]!==d||e[79]!==G.length?(we=G.length===0&&!d&&s.jsx(wt,{className:"min-h-64",children:s.jsxs(Nt,{children:[s.jsx(vt,{variant:"icon",children:s.jsx(Ft,{})}),s.jsx(yt,{children:N.length===0?"No live sessions":`Nothing matches "${q}"`}),s.jsx(St,{children:N.length===0?ys:"Try a different filter."})]})}),e[76]=N.length,e[77]=q,e[78]=d,e[79]=G.length,e[80]=we):we=e[80];let Ne;e[81]!==N.length||e[82]!==d||e[83]!==G.length?(Ne=G.length===0&&d&&N.length===0&&s.jsxs("div",{className:"flex items-center justify-center gap-2 py-16 text-sm text-muted-foreground",children:[s.jsx(It,{}),"Loading sessions…"]}),e[81]=N.length,e[82]=d,e[83]=G.length,e[84]=Ne):Ne=e[84];const Le=A==="grid"&&"md:grid-cols-2 2xl:grid-cols-3";let ve;e[85]!==Le?(ve=xe("grid grid-cols-1 gap-3",Le),e[85]=Le,e[86]=ve):ve=e[86];let ye;if(e[87]!==j||e[88]!==I||e[89]!==w||e[90]!==le||e[91]!==A||e[92]!==t||e[93]!==L||e[94]!==u||e[95]!==h||e[96]!==O||e[97]!==G){let R;e[99]!==j||e[100]!==I||e[101]!==w||e[102]!==le||e[103]!==A||e[104]!==t||e[105]!==L||e[106]!==u||e[107]!==h||e[108]!==O?(R=k=>s.jsx(bs,{card:k,compact:A==="list",customName:O[k.session.sessionId],projectLabel:L[k.session.dirName]??qt(k.session),responding:h,goneQuestions:w,onOpen:()=>t(k.session.dirName,k.session.fileName),onRespond:u,onAnswerQuestion:le,onAnswerElicitation:I,onChooseDialog:j},k.session.sessionId),e[99]=j,e[100]=I,e[101]=w,e[102]=le,e[103]=A,e[104]=t,e[105]=L,e[106]=u,e[107]=h,e[108]=O,e[109]=R):R=e[109],ye=G.map(R),e[87]=j,e[88]=I,e[89]=w,e[90]=le,e[91]=A,e[92]=t,e[93]=L,e[94]=u,e[95]=h,e[96]=O,e[97]=G,e[98]=ye}else ye=e[98];let Se;e[110]!==ve||e[111]!==ye?(Se=s.jsx("div",{className:ve,children:ye}),e[110]=ve,e[111]=ye,e[112]=Se):Se=e[112];let Ie;e[113]!==je||e[114]!==we||e[115]!==Ne||e[116]!==Se?(Ie=s.jsx(Ct,{className:"flex-1",children:s.jsxs("div",{className:"p-4",children:[je,we,Ne,Se]})}),e[113]=je,e[114]=we,e[115]=Ne,e[116]=Se,e[117]=Ie):Ie=e[117];let ke;return e[118]!==be||e[119]!==Ie?(ke=s.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[be,Ie]}),e[118]=be,e[119]=Ie,e[120]=ke):ke=e[120],ke}export{As as MissionControl};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as o,c as ge,j as s}from"./vendor-react-gGw_S5I_.js";import{U as et,bW as tt,b5 as st,bX as mt,bY as Jt,J as _e,L as Xe,M as We,N as Je,O as Ve,Q as Me,bZ as qe,B as Q,af as it,ay as Ot,b4 as Ke,n as Vt,I as qt,E as Zt,m as Qt,bu as It,bv as Lt,bt as Bt,b_ as ct,Z as Ye,_ as es,b$ as ts,c0 as ss,c1 as ns,l as ht,c2 as ls,i as Ft,j as Pt,k as $t,a$ as xt,G as rs,C as pt,z as os,c3 as Mt,aI as zt,h as Ut,D as Kt,a3 as as,a4 as is,a5 as cs,a6 as us,a7 as ds,a8 as fs,a9 as ms,aa as hs,ab as xs,bT as gt,R as wt,c4 as ps}from"./index-DsnL-sXV.js";import{a4 as gs,J as ut,n as Yt,I as dt,z as ws,g as ft,ax as bs,X as Ze,O as Ht,ay as ys,az as js,b as Ss,aA as Gt,a2 as ks,aB as vs,P as Cs,aC as Ns,i as bt,aa as Es,aD as Ts}from"./vendor-ui-Br3ZTAXZ.js";import"./vendor-shiki-DOn6sF-i.js";import"./vendor-markdown-BE1gYnO9.js";const $e="/api/browser",Ds=5e3,_s="all";function nt(n,e=""){return`${$e}/sessions/${encodeURIComponent(n)}${e}`}function lt(n){return{headers:{"content-type":"application/json"},body:JSON.stringify(n)}}function rt(n,e){return n instanceof Error&&n.message?n.message:e}function As(n){const[e,t]=o.useState(null),[l,r]=o.useState(null),a=o.useRef(!1),c=o.useRef(0),m=o.useRef(!1);o.useEffect(()=>(a.current=!0,()=>{a.current=!1}),[]);const x=o.useCallback(async()=>{const u=++c.current;m.current=!0;try{const d=await et(tt($e)),g=d.ok?await d.json():null;if(!a.current||u!==c.current)return;g?(t(f=>JSON.stringify(f)===JSON.stringify(g)?f:g),r(null)):r(await st(d,`Could not read the browser list (${d.status})`))}catch(d){a.current&&u===c.current&&r(rt(d,"Could not read the browser list"))}finally{u===c.current&&(m.current=!1)}},[]);o.useEffect(()=>{if(!n)return;x();const u=setInterval(()=>{m.current||x()},Ds);return()=>clearInterval(u)},[n,x]);const h=o.useCallback(async(u,d,g)=>{let f;try{f=await et(tt(u),d)}catch(N){return{ok:!1,error:rt(N,g)}}if(!f.ok)return{ok:!1,error:await st(f,g)};const L=await mt(f);return x(),{ok:!0,data:L}},[x]),w=o.useCallback(async(u,d,g)=>{const f=await h(u,d,g);return f.ok?{ok:!0}:f},[h]),y=o.useCallback(async(u,d)=>{const g=await h(`${$e}/sessions`,{method:"POST",...lt({name:u,note:d})},`Could not create ${u}`);if(!g.ok)return g;const f=g.data;return(f==null?void 0:f.name)===u&&t(L=>L&&!L.sessions.some(N=>N.name===u)?{...L,sessions:[...L.sessions,f]}:L),{ok:!0}},[h]),D=o.useCallback(u=>w(nt(u),{method:"DELETE"},`Could not delete ${u}`),[w]),j=o.useCallback(u=>w(nt(u,"/stop"),{method:"POST"},`Could not stop ${u}`),[w]),p=o.useCallback((u,d)=>w(nt(u),{method:"PATCH",...lt({archived:d})},`Could not ${d?"archive":"restore"} ${u}`),[w]),_=o.useCallback(async()=>{const u="Could not read where the browser skill is installed";let d;try{d=await et(tt(`${$e}/skill`))}catch(f){return{ok:!1,error:rt(f,u)}}if(!d.ok)return{ok:!1,error:await st(d,u)};const g=await mt(d);return Array.isArray(g==null?void 0:g.targets)?{ok:!0,targets:g.targets}:{ok:!1,error:u}},[]),k=o.useCallback(async u=>{const d="Could not install the browser skill",g=await h(`${$e}/skill/install`,{method:"POST",...lt({target:u})},d);if(!g.ok)return g;const{paths:f}=g.data??{};return Array.isArray(f)&&f.every(L=>typeof L=="string")?{ok:!0,paths:f}:{ok:!1,error:d}},[h]);return{status:e,error:l,refresh:x,create:y,remove:D,stop:j,setArchived:p,readSkillTargets:_,installSkill:k}}const ot=4;new TextEncoder;const Rs=new TextDecoder;function Os(n){if(n.byteLength<ot)throw new Error("Frame truncated before header length");const e=new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0),t=ot+e;if(n.byteLength<t)throw new Error("Frame truncated inside header");return{header:Is(Rs.decode(n.subarray(ot,t))),jpeg:n.subarray(t)}}function Is(n){let e;try{e=JSON.parse(n)}catch{throw new Error("Frame header is not valid JSON")}if(typeof e!="object"||e===null)throw new Error("Frame header is not an object");const{deviceWidth:t,deviceHeight:l,pageScaleFactor:r,offsetTop:a,scrollOffsetX:c,scrollOffsetY:m,targetId:x,ts:h}=e;if(typeof t!="number"||typeof l!="number"||typeof r!="number"||typeof a!="number"||typeof c!="number"||typeof m!="number"||typeof x!="string"||typeof h!="number")throw new Error("Frame header is missing fields");return{deviceWidth:t,deviceHeight:l,pageScaleFactor:r,offsetTop:a,scrollOffsetX:c,scrollOffsetY:m,targetId:x,ts:h}}const yt=500,Ls=5e3,jt=[];function Bs(n){const e=window.location.protocol==="https:"?"wss:":"ws:",t=Jt();return`${e}//${window.location.host}${t}/__browser?session=${encodeURIComponent(n)}`}function Fs(n){try{return JSON.parse(n)}catch{return null}}function Ps(n,e){return n.state===e.state&&n.session===e.session&&n.message===e.message}function $s(n,e){return n.targetId===e.targetId&&n.url===e.url&&n.title===e.title&&n.canGoBack===e.canGoBack&&n.canGoForward===e.canGoForward}function Ms(n,e){return n.length===e.length&&n.every((t,l)=>t.targetId===e[l].targetId&&t.url===e[l].url&&t.title===e[l].title)}function at(n){n&&n.bitmap.close()}function zs(n,e){const t=ge.c(16),[l,r]=o.useState("idle"),[a,c]=o.useState(null),[m,x]=o.useState(null),[h,w]=o.useState(jt),[y,D]=o.useState(null),[j,p]=o.useState(null),[_,k]=o.useState(null),[u,d]=o.useState(null),g=o.useRef(null),f=o.useRef(null),L=o.useRef(null),N=o.useRef(e);let A,Y;t[0]!==e?(A=()=>{N.current=e},Y=[e],t[0]=e,t[1]=A,t[2]=Y):(A=t[1],Y=t[2]),o.useEffect(A,Y);let b,P;t[3]!==n?(b=()=>{if(c(null),x(null),w(jt),D(null),d(null),p(null),k(null),n===null){r("idle");return}const v=n,E={alive:!0,issued:0,applied:0};let C=yt;const U=function(B,O){if(!E.alive||O<=E.applied){at(B);return}E.applied=O,f.current=B,p(B),k(Date.now())},F=function(B){let O,q;try{const X=Os(new Uint8Array(B));O=X.header,q=new Blob([X.jpeg],{type:"image/jpeg"})}catch{return}const H=E.issued=E.issued+1;createImageBitmap(q).then(X=>U({bitmap:X,header:O},H),Us)},V=function(B){var q;const O=Fs(B);if(O)e:switch(O.type){case"status":{c(H=>H&&Ps(H,O)?H:O),d(null);break e}case"page":{x(H=>H&&$s(H,O)?H:O);break e}case"tabs":{w(H=>Ms(H,O.tabs)?H:O.tabs),D(O.followed);break e}case"error":{d(O.message);break e}case"clipboard":(q=N.current)==null||q.call(N,O.text)}};function K(){if(!E.alive)return;const R=g.current;if(R&&R.readyState!==WebSocket.CLOSED)return;r("connecting");const B=new WebSocket(Bs(v));B.binaryType="arraybuffer",g.current=B,B.onopen=()=>{if(!E.alive){B.close();return}C=yt,r("connected")},B.onmessage=O=>{E.alive&&(typeof O.data=="string"?V(O.data):O.data instanceof ArrayBuffer&&F(O.data))},B.onclose=()=>{if(!E.alive)return;g.current=null,r("disconnected");const O=C;C=Math.min(C*2,Ls),L.current=setTimeout(K,O)}}return K(),()=>{E.alive=!1,L.current&&(clearTimeout(L.current),L.current=null);const R=g.current;g.current=null,R&&(R.onclose=null,R.close()),at(f.current),f.current=null}},P=[n],t[3]=n,t[4]=b,t[5]=P):(b=t[4],P=t[5]),o.useEffect(b,P);let $;t[6]===Symbol.for("react.memo_cache_sentinel")?($=v=>{const E=g.current;E&&E.readyState===WebSocket.OPEN&&E.send(JSON.stringify(v))},t[6]=$):$=t[6];const M=$;let z;return t[7]!==u||t[8]!==y||t[9]!==j||t[10]!==_||t[11]!==m||t[12]!==a||t[13]!==l||t[14]!==h?(z={status:l,state:a,page:m,tabs:h,followed:y,frame:j,lastFrameAt:_,error:u,send:M},t[7]=u,t[8]=y,t[9]=j,t[10]=_,t[11]=m,t[12]=a,t[13]=l,t[14]=h,t[15]=z):z=t[15],z}function Us(){}const Ks=6e3;function Ys(n){const e=ge.c(16),{activity:t}=n,[l,r]=o.useState(!0),a=t?`${t.toolCallId}:${t.done}`:null;let c,m;if(e[0]!==a?(c=()=>{if(a===null)return;r(!0);const k=setTimeout(()=>r(!1),Ks);return()=>clearTimeout(k)},m=[a],e[0]=a,e[1]=c,e[2]=m):(c=e[1],m=e[2]),o.useEffect(c,m),!t)return null;const x=l?"opacity-100":"opacity-0";let h;e[3]!==x?(h=_e("pointer-events-none absolute inset-x-0 bottom-0 flex justify-center px-2 pb-6 pt-8","bg-gradient-to-t from-transparent via-background/70 to-transparent","transition-opacity duration-700 motion-reduce:transition-none",x),e[3]=x,e[4]=h):h=e[4];let w;e[5]===Symbol.for("react.memo_cache_sentinel")?(w=s.jsx(gs,{"aria-hidden":!0,className:"size-3.5 shrink-0 text-muted-foreground"}),e[5]=w):w=e[5];let y;e[6]!==t.command?(y=s.jsx("code",{className:"min-w-0 truncate font-mono text-[11px]",children:t.command}),e[6]=t.command,e[7]=y):y=e[7];const D=t.done?"ran":"running";let j;e[8]!==D?(j=s.jsx("span",{className:"shrink-0 text-muted-foreground",children:D}),e[8]=D,e[9]=j):j=e[9];let p;e[10]!==y||e[11]!==j?(p=s.jsxs("div",{className:"flex min-w-0 items-center gap-2 rounded-full bg-popover px-3 py-1 text-xs shadow-xs",children:[w,y,j]}),e[10]=y,e[11]=j,e[12]=p):p=e[12];let _;return e[13]!==h||e[14]!==p?(_=s.jsx("div",{className:h,children:p}),e[13]=h,e[14]=p,e[15]=_):_=e[15],_}const St="npm i -g agent-browser && agent-browser install",Hs=1500;function Gs(n){const e=ge.c(20),{onOpenSkill:t}=n,[l,r]=o.useState(!1),a=o.useRef(null);let c,m;e[0]===Symbol.for("react.memo_cache_sentinel")?(c=()=>()=>{a.current&&clearTimeout(a.current)},m=[],e[0]=c,e[1]=m):(c=e[0],m=e[1]),o.useEffect(c,m);let x;e[2]===Symbol.for("react.memo_cache_sentinel")?(x=async function(){await Ot(St)&&(r(!0),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>r(!1),Hs))},e[2]=x):x=e[2];const h=x;let w,y;e[3]===Symbol.for("react.memo_cache_sentinel")?(w=s.jsx(Je,{variant:"icon",children:s.jsx(Yt,{})}),y=s.jsx(Ve,{children:"Nothing to show yet"}),e[3]=w,e[4]=y):(w=e[3],y=e[4]);let D;e[5]===Symbol.for("react.memo_cache_sentinel")?(D=s.jsxs(We,{children:[w,y,s.jsxs(Me,{children:["This panel streams a real browser the agent drives. That takes the"," ",s.jsx("code",{className:"font-mono",children:"agent-browser"})," command, which is not on this machine yet."]})]}),e[5]=D):D=e[5];let j;e[6]===Symbol.for("react.memo_cache_sentinel")?(j=s.jsx("code",{className:"min-w-0 flex-1 truncate font-mono text-xs",children:St}),e[6]=j):j=e[6];const p=l?"Copied":"Copy install command";let _;e[7]===Symbol.for("react.memo_cache_sentinel")?(_=()=>void h(),e[7]=_):_=e[7];let k;e[8]!==l?(k=l?s.jsx(dt,{"data-icon":"inline-start",className:"text-emerald-500"}):s.jsx(ws,{"data-icon":"inline-start"}),e[8]=l,e[9]=k):k=e[9];let u;e[10]!==k||e[11]!==p?(u=s.jsxs("div",{className:"flex w-full items-center gap-1.5 rounded-md border bg-muted/40 py-1 pl-2.5 pr-1 text-left",children:[j,s.jsx(Q,{variant:"ghost",size:"icon-xs","aria-label":p,onClick:_,children:k})]}),e[10]=k,e[11]=p,e[12]=u):u=e[12];let d;e[13]===Symbol.for("react.memo_cache_sentinel")?(d=s.jsx(ft,{"data-icon":"inline-start"}),e[13]=d):d=e[13];let g;e[14]!==t?(g=s.jsxs(Q,{variant:"outline",size:"sm",onClick:t,children:[d,"Install the agent skill…"]}),e[14]=t,e[15]=g):g=e[15];let f;e[16]===Symbol.for("react.memo_cache_sentinel")?(f=s.jsx(Me,{className:"text-xs",children:"The skill teaches the agent when to use a named browser and how this panel follows along. Installing writes it into your home directory, so it is never done for you."}),e[16]=f):f=e[16];let L;return e[17]!==u||e[18]!==g?(L=s.jsxs(Xe,{className:"size-full",children:[D,s.jsxs(qe,{children:[u,g,f]})]}),e[17]=u,e[18]=g,e[19]=L):L=e[19],L}function Xs(n){const e=ge.c(14),{name:t,lastUrl:l,onOpen:r}=n;let a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=s.jsx(Je,{variant:"icon",children:s.jsx(bs,{})}),e[0]=a):a=e[0];let c;e[1]!==t?(c=s.jsxs(Ve,{children:[t," isn’t running"]}),e[1]=t,e[2]=c):c=e[2];const m=r?"The agent opens it by itself the moment it browses. You can also open a page here and watch from the start.":"It shows up here as soon as the agent that uses it opens it again.";let x;e[3]!==m?(x=s.jsx(Me,{children:m}),e[3]=m,e[4]=x):x=e[4];let h;e[5]!==c||e[6]!==x?(h=s.jsxs(We,{children:[a,c,x]}),e[5]=c,e[6]=x,e[7]=h):h=e[7];let w;e[8]!==l||e[9]!==r?(w=r&&s.jsx(qe,{children:s.jsx(Xt,{lastUrl:l,onOpen:r})}),e[8]=l,e[9]=r,e[10]=w):w=e[10];let y;return e[11]!==h||e[12]!==w?(y=s.jsxs(Xe,{className:"size-full",children:[h,w]}),e[11]=h,e[12]=w,e[13]=y):y=e[13],y}function kt(n){const e=ge.c(5),{onOpen:t}=n;let l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l=s.jsxs(We,{children:[s.jsx(Je,{variant:"icon",children:s.jsx(Yt,{})}),s.jsx(Ve,{children:"Your agents’ browsers show up here"}),s.jsx(Me,{children:"When an agent in one of your sessions opens a web page, you can watch it here and take over. Other sessions you can access show their browsers too."})]}),e[0]=l):l=e[0];let r;e[1]!==t?(r=t&&s.jsx(qe,{children:s.jsx(Xt,{lastUrl:null,onOpen:t})}),e[1]=t,e[2]=r):r=e[2];let a;return e[3]!==r?(a=s.jsxs(Xe,{className:"size-full",children:[l,r]}),e[3]=r,e[4]=a):a=e[4],a}function Xt(n){const e=ge.c(14),{lastUrl:t,onOpen:l}=n,[r,a]=o.useState(null),c=r??t??"";let m;e[0]!==l||e[1]!==c?(m=function(k){k.preventDefault();const u=c.trim();u&&l(u)},e[0]=l,e[1]=c,e[2]=m):m=e[2];const x=m;let h;e[3]===Symbol.for("react.memo_cache_sentinel")?(h=_=>a(_.target.value),e[3]=h):h=e[3];let w;e[4]!==c?(w=s.jsx(Ke,{"aria-label":"Page to open",className:"h-8 text-sm",placeholder:"example.com",spellCheck:!1,autoComplete:"off",value:c,onChange:h}),e[4]=c,e[5]=w):w=e[5];let y;e[6]!==c?(y=c.trim(),e[6]=c,e[7]=y):y=e[7];const D=!y;let j;e[8]!==D?(j=s.jsx(Q,{type:"submit",size:"sm",disabled:D,children:"Open"}),e[8]=D,e[9]=j):j=e[9];let p;return e[10]!==x||e[11]!==w||e[12]!==j?(p=s.jsxs("form",{className:"flex w-full items-center gap-2",onSubmit:x,children:[w,j]}),e[10]=x,e[11]=w,e[12]=j,e[13]=p):p=e[13],p}function Ws({message:n,onRetry:e}){const[t,l]=o.useState(!1);async function r(){l(!0);try{await e()}finally{l(!1)}}return s.jsxs(Xe,{className:"size-full",children:[s.jsxs(We,{children:[s.jsx(Je,{variant:"icon",children:s.jsx(ut,{})}),s.jsx(Ve,{children:"Could not load the browsers"}),s.jsx(Me,{children:n})]}),s.jsx(qe,{children:s.jsxs(Q,{variant:"outline",size:"sm",disabled:t,onClick:()=>void r(),children:[t&&s.jsx(it,{"data-icon":"inline-start"}),"Retry"]})})]})}function vt(n){if(n.url==="about:blank"&&(!n.title.trim()||n.title==="about:blank"))return"New tab";if(n.title.trim())return n.title.trim();try{return new URL(n.url).hostname||n.url}catch{return n.url}}const Js={live:{label:"LIVE",hint:"Streaming the page as it changes",tone:"text-emerald-600 dark:text-emerald-400",dot:"bg-emerald-500"},idle:{label:"IDLE",hint:"The page has not changed for a few seconds",tone:"text-muted-foreground",dot:"ring-1 ring-muted-foreground/50 ring-inset"},offline:{label:"OFFLINE",hint:"The connection dropped — this is the last frame that arrived",tone:"text-amber-600 dark:text-amber-400",dot:"bg-amber-500"}};function Vs(n){const e=ge.c(17),{status:t}=n,l=Js[t];let r;e[0]!==l.tone?(r=_e("ml-1 flex shrink-0 cursor-default items-center gap-1 text-[10px] font-medium tracking-wide",l.tone),e[0]=l.tone,e[1]=r):r=e[1];let a;e[2]!==r?(a=s.jsx("span",{className:r}),e[2]=r,e[3]=a):a=e[3];let c;e[4]!==l.dot?(c=_e("size-1.5 rounded-full",l.dot),e[4]=l.dot,e[5]=c):c=e[5];let m;e[6]!==c?(m=s.jsx("span",{"aria-hidden":"true",className:c}),e[6]=c,e[7]=m):m=e[7];let x;e[8]!==l.label||e[9]!==a||e[10]!==m?(x=s.jsxs(It,{render:a,children:[m,l.label]}),e[8]=l.label,e[9]=a,e[10]=m,e[11]=x):x=e[11];let h;e[12]!==l.hint?(h=s.jsx(Lt,{children:l.hint}),e[12]=l.hint,e[13]=h):h=e[13];let w;return e[14]!==x||e[15]!==h?(w=s.jsxs(Bt,{children:[x,h]}),e[14]=x,e[15]=h,e[16]=w):w=e[16],w}const qs=o.memo(function(e){const t=ge.c(52),{page:l,tabs:r,followed:a,status:c,readOnly:m,onNavigate:x,onBack:h,onForward:w,onReload:y,onFollow:D,onCloseTab:j}=e,p=m===void 0?!1:m,[_,k]=o.useState(null),u=(l==null?void 0:l.url)??"";let d;t[0]!==_||t[1]!==u||t[2]!==x||t[3]!==p?(d=function(ee){if(ee.preventDefault(),p)return;const Se=(_??u).trim();k(null),Se&&x(Se)},t[0]=_,t[1]=u,t[2]=x,t[3]=p,t[4]=d):d=t[4];const g=d;let f;t[5]===Symbol.for("react.memo_cache_sentinel")?(f=function(ee){ee.key==="Escape"&&(ee.preventDefault(),k(null),ee.currentTarget.blur())},t[5]=f):f=t[5];const L=f,N=p||!(l!=null&&l.canGoBack);let A;t[6]===Symbol.for("react.memo_cache_sentinel")?(A=s.jsx(Ht,{"data-icon":"inline-start"}),t[6]=A):A=t[6];let Y;t[7]!==h||t[8]!==N?(Y=s.jsx(Q,{variant:"ghost",size:"icon-sm","aria-label":"Back",disabled:N,onClick:h,children:A}),t[7]=h,t[8]=N,t[9]=Y):Y=t[9];const b=p||!(l!=null&&l.canGoForward);let P;t[10]===Symbol.for("react.memo_cache_sentinel")?(P=s.jsx(ys,{"data-icon":"inline-start"}),t[10]=P):P=t[10];let $;t[11]!==w||t[12]!==b?($=s.jsx(Q,{variant:"ghost",size:"icon-sm","aria-label":"Forward",disabled:b,onClick:w,children:P}),t[11]=w,t[12]=b,t[13]=$):$=t[13];const M=p||!l;let z;t[14]===Symbol.for("react.memo_cache_sentinel")?(z=s.jsx(js,{"data-icon":"inline-start"}),t[14]=z):z=t[14];let v;t[15]!==y||t[16]!==M?(v=s.jsx(Q,{variant:"ghost",size:"icon-sm","aria-label":"Reload",disabled:M,onClick:y,children:z}),t[15]=y,t[16]=M,t[17]=v):v=t[17];const E=_??u;let C;t[18]===Symbol.for("react.memo_cache_sentinel")?(C=J=>k(J.target.value),t[18]=C):C=t[18];let U;t[19]===Symbol.for("react.memo_cache_sentinel")?(U=()=>k(null),t[19]=U):U=t[19];let F;t[20]!==p||t[21]!==E?(F=s.jsx(Vt,{"aria-label":"Page URL",className:"text-xs",placeholder:"Enter a URL",spellCheck:!1,autoComplete:"off",readOnly:p,value:E,onChange:C,onFocus:Zs,onBlur:U,onKeyDown:L}),t[20]=p,t[21]=E,t[22]=F):F=t[22];const V=!u;let K;t[23]!==u?(K=()=>window.open(u,"_blank","noopener,noreferrer"),t[23]=u,t[24]=K):K=t[24];let R;t[25]===Symbol.for("react.memo_cache_sentinel")?(R=s.jsx(Ss,{"data-icon":"inline-start"}),t[25]=R):R=t[25];let B;t[26]!==V||t[27]!==K?(B=s.jsx(qt,{align:"inline-end",children:s.jsx(Zt,{size:"icon-xs","aria-label":"Open in your browser",disabled:V,onClick:K,children:R})}),t[26]=V,t[27]=K,t[28]=B):B=t[28];let O;t[29]!==F||t[30]!==B?(O=s.jsxs(Qt,{className:"h-7",children:[F,B]}),t[29]=F,t[30]=B,t[31]=O):O=t[31];let q;t[32]!==g||t[33]!==O?(q=s.jsx("form",{className:"ml-1 min-w-0 flex-1",onSubmit:g,children:O}),t[32]=g,t[33]=O,t[34]=q):q=t[34];let H;t[35]!==c?(H=c&&s.jsx(Vs,{status:c}),t[35]=c,t[36]=H):H=t[36];let X;t[37]!==v||t[38]!==q||t[39]!==H||t[40]!==Y||t[41]!==$?(X=s.jsxs("div",{className:"flex items-center gap-0.5",children:[Y,$,v,q,H]}),t[37]=v,t[38]=q,t[39]=H,t[40]=Y,t[41]=$,t[42]=X):X=t[42];let ne;t[43]!==a||t[44]!==j||t[45]!==D||t[46]!==p||t[47]!==r?(ne=r.length>0&&s.jsx("div",{className:"flex items-center gap-1 overflow-x-auto pb-0.5",children:r.map(J=>s.jsxs("div",{className:_e("flex max-w-48 shrink-0 items-center rounded-md",J.targetId===a&&"bg-secondary"),children:[s.jsx(Q,{size:"xs",variant:"ghost",className:_e("min-w-0 shrink",!p&&"rounded-r-none"),"aria-current":J.targetId===a?"page":void 0,title:J.title||J.url,onClick:()=>D(J.targetId),onMouseDown:Qs,onAuxClick:ee=>{ee.button!==1||p||(ee.preventDefault(),j(J.targetId))},children:s.jsx("span",{className:"truncate",children:vt(J)})}),!p&&s.jsx(Q,{size:"icon-xs",variant:"ghost",className:"rounded-l-none","aria-label":`Close tab: ${vt(J)}`,title:"Close tab",onClick:()=>j(J.targetId),children:s.jsx(Ze,{"data-icon":"inline-start"})})]},J.targetId))}),t[43]=a,t[44]=j,t[45]=D,t[46]=p,t[47]=r,t[48]=ne):ne=t[48];let le;return t[49]!==X||t[50]!==ne?(le=s.jsxs("div",{className:"flex shrink-0 flex-col gap-1 border-b px-2 py-1.5",children:[X,ne]}),t[49]=X,t[50]=ne,t[51]=le):le=t[51],le});function Zs(n){return n.target.select()}function Qs(n){n.button===1&&n.preventDefault()}function en(n){var e;return((e=n.find(t=>t.mine))==null?void 0:e.name)??ct}function He(n){return(n==null?void 0:n.control)??"own"}function tn(n){return He(n)!=="watch"}function Ge(n,e){return n!=null&&n.mine?"Your browser":n!=null&&n.account?`${n.account}'s browser`:e}function sn(n,e,t){if(n!==ct||t===null)return n;const l=e.find(r=>(r.mine||r.account)&&r.driverSessionId===t);return(l==null?void 0:l.name)??n}function nn(n){if(!n||!Number.isFinite(Date.parse(n)))return null;if(Date.now()-Date.parse(n)>=10080*60*1e3)return new Date(n).toLocaleDateString();const e=es(n);return e==="now"?"just now":`${e} ago`}function Wt(n){const e=ge.c(4),{running:t}=n,l=t?"bg-emerald-500":"ring-1 ring-muted-foreground/50 ring-inset";let r;e[0]!==l?(r=_e("size-2 shrink-0 rounded-full",l),e[0]=l,e[1]=r):r=e[1];let a;return e[2]!==r?(a=s.jsx("span",{"aria-hidden":!0,className:r}),e[2]=r,e[3]=a):a=e[3],a}function ln(n){const e=ge.c(89),{sessions:t,selected:l,home:r,currentSessionId:a,busy:c,onSelect:m,onSetArchived:x,children:h}=n,[w,y]=o.useState(!1),[D,j]=o.useState(""),[p,_]=o.useState(!1),k=o.useRef(null);let u,d,g,f,L,N,A,Y,b,P,$,M,z,v,E,C,U;if(e[0]!==c||e[1]!==a||e[2]!==r||e[3]!==m||e[4]!==x||e[5]!==w||e[6]!==D||e[7]!==l||e[8]!==t||e[9]!==p){let ne;e[27]!==l?(ne=I=>I.name===l,e[27]=l,e[28]=ne):ne=e[28];const le=t.find(ne),J=D.trim().toLowerCase();let ee;e[29]!==r||e[30]!==l?(ee=I=>!!I.archived&&!I.isDefault&&I.name!==r&&!I.running&&I.name!==l,e[29]=r,e[30]=l,e[31]=ee):ee=e[31];const Se=ee,ve=I=>`${I.name} ${Ge(I,I.name)} ${I.note??""}`.toLowerCase().includes(J);let ye;e[32]!==r?(ye=(I,S)=>+(S.name===r)-+(I.name===r)||Number(S.isDefault)-Number(I.isDefault)||Number(S.running)-Number(I.running),e[32]=r,e[33]=ye):ye=e[33];const Ne=t.filter(I=>!Se(I)&&ve(I)).sort(ye);g=t.filter(Se);const we=g.filter(ve);U=p&&!J?[]:Ne,C=p||J?we:[];let he;e[34]===Symbol.for("react.memo_cache_sentinel")?(he=function(){y(!1)},e[34]=he):he=e[34],f=he;const xe=async function(S){S.archived&&!(await x(S.name,!1)).ok||(m(S.name),f())},be=async function(S){var ue;(await x(S,!0)).ok&&((ue=k.current)==null||ue.focus())};d=ts,E=w,e[35]===Symbol.for("react.memo_cache_sentinel")?(N=I=>{y(I),I&&(j(""),_(!1))},e[35]=N):N=e[35];let re;e[36]===Symbol.for("react.memo_cache_sentinel")?(re=s.jsx(Q,{variant:"ghost",size:"xs","aria-label":"Switch browser",className:"max-w-40"}),e[36]=re):re=e[36];const pe=s.jsx(Wt,{running:(le==null?void 0:le.running)??!1}),Z=Ge(le,l);let oe;e[37]!==Z?(oe=s.jsx("span",{className:"truncate",children:Z}),e[37]=Z,e[38]=oe):oe=e[38];let fe;e[39]===Symbol.for("react.memo_cache_sentinel")?(fe=s.jsx(ks,{"data-icon":"inline-end",className:"opacity-60"}),e[39]=fe):fe=e[39],e[40]!==pe||e[41]!==oe?(A=s.jsxs(ss,{render:re,children:[pe,oe,fe]}),e[40]=pe,e[41]=oe,e[42]=A):A=e[42],u=ns,P="Browsers",$=k,M="flex max-h-[min(32rem,var(--available-height))] w-80 max-w-[calc(100vw-1rem)] flex-col overflow-hidden";const je=p&&!J?"Archived browsers":"Browsers";let ae;e[43]!==je?(ae=s.jsx("span",{className:"text-sm font-medium",children:je}),e[43]=je,e[44]=ae):ae=e[44];let me;e[45]===Symbol.for("react.memo_cache_sentinel")?(me=s.jsx(Q,{variant:"ghost",size:"icon-xs","aria-label":"Close browser picker",onClick:f,children:s.jsx(Ze,{"data-icon":"inline-start"})}),e[45]=me):me=e[45];let te;e[46]!==ae?(te=s.jsxs("div",{className:"flex items-center justify-between pl-1",children:[ae,me]}),e[46]=ae,e[47]=te):te=e[47];let de;e[48]===Symbol.for("react.memo_cache_sentinel")?(de=I=>j(I.target.value),e[48]=de):de=e[48];let ie;e[49]!==D?(ie=s.jsx(Ke,{ref:k,"aria-label":"Search browsers",placeholder:"Search browsers…",value:D,onChange:de}),e[49]=D,e[50]=ie):ie=e[50],e[51]!==te||e[52]!==ie?(z=s.jsxs("div",{className:"flex shrink-0 flex-col gap-2 p-2",children:[te,ie]}),e[51]=te,e[52]=ie,e[53]=z):z=e[53],e[54]===Symbol.for("react.memo_cache_sentinel")?(v=s.jsx(ht,{}),e[54]=v):v=e[54],L="min-h-0 max-h-72 overflow-y-auto overscroll-contain p-1",Y="Browser list",b=[{label:"Recent browsers",sessions:U,archived:!1},{label:"Archived browsers",sessions:C,archived:!0}].filter(rn).map(I=>s.jsxs("div",{children:[I.archived&&!!J&&s.jsx("p",{className:"px-2 py-1 text-xs text-muted-foreground",children:"Archived"}),s.jsx("ul",{"aria-label":I.label,children:I.sessions.map(S=>s.jsx(on,{session:S,archived:I.archived,home:r,selected:l,currentSessionId:a,busy:c,onPick:xe,onArchive:be},S.name))})]},I.label)),e[0]=c,e[1]=a,e[2]=r,e[3]=m,e[4]=x,e[5]=w,e[6]=D,e[7]=l,e[8]=t,e[9]=p,e[10]=u,e[11]=d,e[12]=g,e[13]=f,e[14]=L,e[15]=N,e[16]=A,e[17]=Y,e[18]=b,e[19]=P,e[20]=$,e[21]=M,e[22]=z,e[23]=v,e[24]=E,e[25]=C,e[26]=U}else u=e[10],d=e[11],g=e[12],f=e[13],L=e[14],N=e[15],A=e[16],Y=e[17],b=e[18],P=e[19],$=e[20],M=e[21],z=e[22],v=e[23],E=e[24],C=e[25],U=e[26];let F;e[55]!==C||e[56]!==U.length?(F=U.length===0&&C.length===0&&s.jsx("p",{role:"status",className:"px-3 py-6 text-center text-sm text-muted-foreground",children:"No browsers found."}),e[55]=C,e[56]=U.length,e[57]=F):F=e[57];let V;e[58]!==L||e[59]!==F||e[60]!==Y||e[61]!==b?(V=s.jsxs("div",{className:L,"aria-label":Y,children:[b,F]}),e[58]=L,e[59]=F,e[60]=Y,e[61]=b,e[62]=V):V=e[62];let K;e[63]===Symbol.for("react.memo_cache_sentinel")?(K=s.jsx(ht,{}),e[63]=K):K=e[63];let R;e[64]!==g.length||e[65]!==p?(R=(g.length>0||p)&&s.jsxs(Q,{variant:"ghost",size:"sm",className:"w-full justify-start","aria-expanded":p,onClick:()=>{_(!p),j("")},children:[p?s.jsx(Ht,{"data-icon":"inline-start"}):s.jsx(Gt,{"data-icon":"inline-start"}),p?"Back to recent":"Archived",!p&&s.jsx(Ye,{variant:"secondary",children:g.length})]}),e[64]=g.length,e[65]=p,e[66]=R):R=e[66];let B;e[67]===Symbol.for("react.memo_cache_sentinel")?(B=s.jsx("p",{className:"px-1 pb-1 text-xs text-muted-foreground",children:"Stopped browsers archive after 24h of inactivity. Saved logins are kept."}),e[67]=B):B=e[67];let O;e[68]!==h||e[69]!==f?(O=h(f),e[68]=h,e[69]=f,e[70]=O):O=e[70];let q;e[71]!==R||e[72]!==O?(q=s.jsxs("div",{className:"flex shrink-0 flex-col gap-1 p-2",children:[R,B,O]}),e[71]=R,e[72]=O,e[73]=q):q=e[73];let H;e[74]!==u||e[75]!==V||e[76]!==q||e[77]!==P||e[78]!==$||e[79]!==M||e[80]!==z||e[81]!==v?(H=s.jsxs(u,{"aria-label":P,initialFocus:$,className:M,children:[z,v,V,K,q]}),e[74]=u,e[75]=V,e[76]=q,e[77]=P,e[78]=$,e[79]=M,e[80]=z,e[81]=v,e[82]=H):H=e[82];let X;return e[83]!==d||e[84]!==N||e[85]!==A||e[86]!==H||e[87]!==E?(X=s.jsxs(d,{open:E,onOpenChange:N,children:[A,H]}),e[83]=d,e[84]=N,e[85]=A,e[86]=H,e[87]=E,e[88]=X):X=e[88],X}function rn(n){return n.sessions.length>0}function on(n){const e=ge.c(53),{session:t,archived:l,home:r,selected:a,currentSessionId:c,busy:m,onPick:x,onArchive:h}=n;let w;e[0]!==t.lastUsedAt?(w=nn(t.lastUsedAt),e[0]=t.lastUsedAt,e[1]=w):w=e[1];const y=w;let D;e[2]!==t?(D=Ge(t,t.name),e[2]=t,e[3]=D):D=e[3];const j=D,p=t.running&&t.driverSessionId!==null&&t.driverSessionId!==c,_=t.isDefault?r===t.name?"Default":"Host default":null,k=`${l?"Restore and switch to":"Switch to"} ${j}`,u=t.name===a?"true":void 0;let d;e[4]!==x||e[5]!==t?(d=()=>void x(t),e[4]=x,e[5]=t,e[6]=d):d=e[6];let g;e[7]!==t.running?(g=s.jsx(Wt,{running:t.running}),e[7]=t.running,e[8]=g):g=e[8];let f;e[9]!==j?(f=s.jsx("span",{className:"truncate",children:j}),e[9]=j,e[10]=f):f=e[10];const L=t.running?"running":"stopped";let N;e[11]!==L?(N=s.jsx("span",{className:"sr-only",children:L}),e[11]=L,e[12]=N):N=e[12];let A;e[13]!==_?(A=_&&s.jsx(Ye,{variant:"secondary",children:_}),e[13]=_,e[14]=A):A=e[14];let Y;e[15]!==t?(Y=He(t)==="watch"&&s.jsx(Ye,{variant:"outline",children:"View only"}),e[15]=t,e[16]=Y):Y=e[16];let b;e[17]!==y?(b=y&&s.jsx("span",{className:"ml-auto shrink-0 text-xs font-normal text-muted-foreground",children:y}),e[17]=y,e[18]=b):b=e[18];let P;e[19]!==A||e[20]!==Y||e[21]!==b||e[22]!==f||e[23]!==N?(P=s.jsxs("span",{className:"flex w-full min-w-0 items-center gap-1.5",children:[f,N,A,Y,b]}),e[19]=A,e[20]=Y,e[21]=b,e[22]=f,e[23]=N,e[24]=P):P=e[24];let $;e[25]!==p?($=p&&s.jsx("span",{className:"max-w-full truncate text-xs font-normal text-muted-foreground",children:"driven by another session"}),e[25]=p,e[26]=$):$=e[26];let M;e[27]!==P||e[28]!==$?(M=s.jsxs("span",{className:"flex min-w-0 flex-1 flex-col items-start gap-0.5",children:[P,$]}),e[27]=P,e[28]=$,e[29]=M):M=e[29];let z;e[30]!==a||e[31]!==t.name?(z=t.name===a&&s.jsx(dt,{"data-icon":"inline-end"}),e[30]=a,e[31]=t.name,e[32]=z):z=e[32];let v;e[33]!==l?(v=l&&s.jsx(vs,{"data-icon":"inline-end"}),e[33]=l,e[34]=v):v=e[34];let E;e[35]!==m||e[36]!==M||e[37]!==z||e[38]!==v||e[39]!==k||e[40]!==u||e[41]!==d||e[42]!==g?(E=s.jsxs(Q,{variant:"ghost",className:"h-auto min-h-10 min-w-0 flex-1 justify-start px-2 py-2","aria-label":k,"aria-current":u,disabled:m,onClick:d,children:[g,M,z,v]}),e[35]=m,e[36]=M,e[37]=z,e[38]=v,e[39]=k,e[40]=u,e[41]=d,e[42]=g,e[43]=E):E=e[43];let C;e[44]!==l||e[45]!==m||e[46]!==r||e[47]!==h||e[48]!==t?(C=!l&&!t.isDefault&&t.name!==r&&!t.running&&He(t)==="own"&&s.jsx(Q,{variant:"ghost",size:"icon-sm","aria-label":`Archive ${t.name}`,title:`Archive ${t.name}`,disabled:m,onClick:()=>void h(t.name),children:s.jsx(Gt,{"data-icon":"inline-start"})}),e[44]=l,e[45]=m,e[46]=r,e[47]=h,e[48]=t,e[49]=C):C=e[49];let U;return e[50]!==E||e[51]!==C?(U=s.jsxs("li",{className:"group flex items-center gap-1 rounded-md",children:[E,C]}),e[50]=E,e[51]=C,e[52]=U):U=e[52],U}const an=/^[a-z0-9][a-z0-9_-]{0,39}$/,cn="Lowercase letters, numbers, - and _, starting with a letter or number (40 max).",un=o.memo(function(e){const t=ge.c(112),{sessions:l,selected:r,home:a,currentSessionId:c,followAgent:m,busy:x,onSelect:h,onToggleFollow:w,onOpenSkill:y,onCreate:D,onRemove:j,onStop:p,onSetArchived:_,onShowDefault:k,onClose:u}=e,d=x===void 0?!1:x,g=o.useId(),f=o.useId(),[L,N]=o.useState(!1),[A,Y]=o.useState(""),[b,P]=o.useState(""),[$,M]=o.useState(null),[z,v]=o.useState(!1),[E,C]=o.useState(null),U=r===a;let F,V;t[0]!==r||t[1]!==l?(F=l.find(se=>se.name===r)??null,V=He(F),t[0]=r,t[1]=l,t[2]=F,t[3]=V):(F=t[2],V=t[3]);const K=V;let R;if(t[4]!==a||t[5]!==l){let se;t[7]!==a?(se=Pe=>Pe.mine&&Pe.name===a,t[7]=a,t[8]=se):se=t[8],R=l.some(se),t[4]=a,t[5]=l,t[6]=R}else R=t[6];const B=R,O=!U&&!(F!=null&&F.isDefault)&&K!=="watch",q=!U&&!(F!=null&&F.isDefault)&&K==="own";let H,X;t[9]!==A?(X=A.trim(),H=X.length>0&&!an.test(X),t[9]=A,t[10]=H,t[11]=X):(H=t[10],X=t[11]);const ne=H,le=ne?cn:$,J=X.length>0&&!ne&&!z;let ee;t[12]===Symbol.for("react.memo_cache_sentinel")?(ee=function(){Y(""),P(""),M(null),v(!1),N(!0)},t[12]=ee):ee=t[12];const Se=ee;let ve;t[13]!==J||t[14]!==b||t[15]!==D||t[16]!==h||t[17]!==X?(ve=async function(){if(!J)return;v(!0);const Pe=await D(X,b.trim());if(v(!1),!Pe.ok){M(Pe.error);return}N(!1),h(X)},t[13]=J,t[14]=b,t[15]=D,t[16]=h,t[17]=X,t[18]=ve):ve=t[18];const ye=ve,Ne=!U&&"border-amber-500/40 bg-amber-500/10";let we;t[19]!==Ne?(we=_e("@container/browser-bar flex h-10 shrink-0 items-center gap-2 border-b px-2",Ne),t[19]=Ne,t[20]=we):we=t[20];let he;t[21]!==d||t[22]!==q||t[23]!==O||t[24]!==y||t[25]!==p||t[26]!==r||t[27]!==(F==null?void 0:F.running)?(he=se=>s.jsxs(s.Fragment,{children:[s.jsxs(Q,{variant:"outline",size:"sm",disabled:d,onClick:()=>{se(),Se()},children:[s.jsx(Cs,{"data-icon":"inline-start"}),"New browser…"]}),s.jsxs("div",{className:"flex items-center gap-1",children:[s.jsxs(Q,{variant:"ghost",size:"xs",onClick:()=>{se(),y()},children:[s.jsx(ft,{"data-icon":"inline-start"}),"Agent skill…"]}),O&&s.jsxs(Q,{variant:"ghost",size:"xs",disabled:d||!(F!=null&&F.running),onClick:()=>{se(),p(r)},children:[s.jsx(Ns,{"data-icon":"inline-start"}),"Stop"]}),q&&s.jsxs(Q,{variant:"ghost",size:"xs",disabled:d,onClick:()=>{se(),C(r)},children:[s.jsx(bt,{"data-icon":"inline-start"}),"Delete…"]})]})]}),t[21]=d,t[22]=q,t[23]=O,t[24]=y,t[25]=p,t[26]=r,t[27]=F==null?void 0:F.running,t[28]=he):he=t[28];let xe;t[29]!==d||t[30]!==c||t[31]!==a||t[32]!==h||t[33]!==_||t[34]!==r||t[35]!==l||t[36]!==he?(xe=s.jsx(ln,{sessions:l,selected:r,home:a,currentSessionId:c,busy:d,onSelect:h,onSetArchived:_,children:he}),t[29]=d,t[30]=c,t[31]=a,t[32]=h,t[33]=_,t[34]=r,t[35]=l,t[36]=he,t[37]=xe):xe=t[37];let be;t[38]===Symbol.for("react.memo_cache_sentinel")?(be=s.jsx("span",{className:"flex-1"}),t[38]=be):be=t[38];let re;t[39]!==K?(re=K==="watch"&&s.jsxs(Ye,{variant:"outline",title:"Only someone who can interact with the session driving it can use it",children:[s.jsx(Es,{"data-icon":"inline-start"}),"View only"]}),t[39]=K,t[40]=re):re=t[40];let pe;t[41]!==B||t[42]!==U||t[43]!==k?(pe=!U&&s.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[s.jsxs("span",{role:"status",className:"flex min-w-0 items-center gap-1.5 text-xs font-medium text-amber-700 dark:text-amber-300",children:[s.jsx(ut,{"aria-hidden":!0,className:"size-3.5 shrink-0"}),s.jsx("span",{className:"sr-only @sm/browser-bar:not-sr-only @sm/browser-bar:whitespace-nowrap",children:B?"Not your browser":"Not the default browser"})]}),s.jsx(Q,{variant:"outline",size:"xs",onClick:k,children:B?"Show yours":"Show default"})]}),t[41]=B,t[42]=U,t[43]=k,t[44]=pe):pe=t[44];let Z;t[45]!==w?(Z=se=>w(se),t[45]=w,t[46]=Z):Z=t[46];let oe;t[47]!==m||t[48]!==Z?(oe=s.jsx(ls,{size:"sm","aria-label":"Follow agent",pressed:m,onPressedChange:Z,className:"text-muted-foreground data-pressed:text-foreground"}),t[47]=m,t[48]=Z,t[49]=oe):oe=t[49];let fe,je;t[50]===Symbol.for("react.memo_cache_sentinel")?(fe=s.jsx(Ts,{"data-icon":"inline-start"}),je=s.jsx("span",{className:"hidden @md/browser-bar:inline",children:"Follow"}),t[50]=fe,t[51]=je):(fe=t[50],je=t[51]);let ae;t[52]!==oe?(ae=s.jsxs(It,{render:oe,children:[fe,je]}),t[52]=oe,t[53]=ae):ae=t[53];let me;t[54]===Symbol.for("react.memo_cache_sentinel")?(me=s.jsx(Lt,{children:"Switch to whichever browser this session’s agent uses"}),t[54]=me):me=t[54];let te;t[55]!==ae?(te=s.jsxs(Bt,{children:[ae,me]}),t[55]=ae,t[56]=te):te=t[56];let de;t[57]===Symbol.for("react.memo_cache_sentinel")?(de=s.jsx(Ze,{"data-icon":"inline-start"}),t[57]=de):de=t[57];let ie;t[58]!==u?(ie=s.jsx(Q,{variant:"ghost",size:"icon-sm","aria-label":"Close browser panel",onClick:u,children:de}),t[58]=u,t[59]=ie):ie=t[59];let I;t[60]!==ye?(I=se=>{se.preventDefault(),ye()},t[60]=ye,t[61]=I):I=t[61];let S;t[62]===Symbol.for("react.memo_cache_sentinel")?(S=s.jsxs(Ft,{children:[s.jsx(Pt,{children:"New browser"}),s.jsx($t,{children:"A named browser keeps its own cookies and logins, and stays out of the default one."})]}),t[62]=S):S=t[62];const ce=!!le;let ue;t[63]!==g?(ue=s.jsx(xt,{htmlFor:g,children:"Name"}),t[63]=g,t[64]=ue):ue=t[64];const Ae=!!le;let G;t[65]===Symbol.for("react.memo_cache_sentinel")?(G=se=>{Y(se.target.value),M(null)},t[65]=G):G=t[65];let i;t[66]!==g||t[67]!==A||t[68]!==Ae?(i=s.jsx(Ke,{id:g,autoFocus:!0,autoComplete:"off",spellCheck:!1,placeholder:"shop","aria-invalid":Ae,value:A,onChange:G}),t[66]=g,t[67]=A,t[68]=Ae,t[69]=i):i=t[69];let T;t[70]!==le?(T=s.jsx(rs,{children:le}),t[70]=le,t[71]=T):T=t[71];let W;t[72]!==ce||t[73]!==ue||t[74]!==i||t[75]!==T?(W=s.jsxs(pt,{"data-invalid":ce,children:[ue,i,T]}),t[72]=ce,t[73]=ue,t[74]=i,t[75]=T,t[76]=W):W=t[76];let ke;t[77]===Symbol.for("react.memo_cache_sentinel")?(ke=s.jsx("span",{className:"text-muted-foreground/60",children:"(optional)"}),t[77]=ke):ke=t[77];let Ce;t[78]!==f?(Ce=s.jsxs(xt,{htmlFor:f,children:["Note ",ke]}),t[78]=f,t[79]=Ce):Ce=t[79];let De;t[80]===Symbol.for("react.memo_cache_sentinel")?(De=se=>P(se.target.value),t[80]=De):De=t[80];let Te;t[81]!==b||t[82]!==f?(Te=s.jsx(Ke,{id:f,autoComplete:"off",placeholder:"What this browser is signed in to",value:b,onChange:De}),t[81]=b,t[82]=f,t[83]=Te):Te=t[83];let Ee;t[84]!==Ce||t[85]!==Te?(Ee=s.jsxs(pt,{children:[Ce,Te]}),t[84]=Ce,t[85]=Te,t[86]=Ee):Ee=t[86];let Oe;t[87]!==W||t[88]!==Ee?(Oe=s.jsxs(os,{className:"gap-4",children:[W,Ee]}),t[87]=W,t[88]=Ee,t[89]=Oe):Oe=t[89];let ze;t[90]===Symbol.for("react.memo_cache_sentinel")?(ze=s.jsx(Mt,{render:s.jsx(Q,{type:"button",variant:"outline"}),children:"Cancel"}),t[90]=ze):ze=t[90];const Qe=!J;let Ie;t[91]!==Qe?(Ie=s.jsxs(zt,{children:[ze,s.jsx(Q,{type:"submit",disabled:Qe,children:"Create browser"})]}),t[91]=Qe,t[92]=Ie):Ie=t[92];let Le;t[93]!==I||t[94]!==Oe||t[95]!==Ie?(Le=s.jsx(Ut,{className:"sm:max-w-sm",children:s.jsxs("form",{className:"flex flex-col gap-4",onSubmit:I,children:[S,Oe,Ie]})}),t[93]=I,t[94]=Oe,t[95]=Ie,t[96]=Le):Le=t[96];let Be;t[97]!==L||t[98]!==Le?(Be=s.jsx(Kt,{open:L,onOpenChange:N,children:Le}),t[97]=L,t[98]=Le,t[99]=Be):Be=t[99];let Fe;t[100]!==E||t[101]!==j?(Fe=E!==null&&s.jsx(as,{open:!0,onOpenChange:se=>{se||C(null)},children:s.jsxs(is,{size:"sm",children:[s.jsxs(cs,{children:[s.jsx(us,{className:"bg-destructive/10 text-destructive",children:s.jsx(bt,{})}),s.jsxs(ds,{children:["Delete ",E,"?"]}),s.jsx(fs,{children:"Its profile goes with it, so everything signed in there is signed out. Other browsers are untouched."})]}),s.jsxs(ms,{children:[s.jsx(hs,{size:"sm",children:"Cancel"}),s.jsx(xs,{variant:"destructive",size:"sm",onClick:()=>{j(E),C(null)},children:"Delete browser"})]})]})}),t[100]=E,t[101]=j,t[102]=Fe):Fe=t[102];let Ue;return t[103]!==xe||t[104]!==re||t[105]!==pe||t[106]!==te||t[107]!==ie||t[108]!==Be||t[109]!==Fe||t[110]!==we?(Ue=s.jsxs("div",{className:we,children:[xe,be,re,pe,te,ie,Be,Fe]}),t[103]=xe,t[104]=re,t[105]=pe,t[106]=te,t[107]=ie,t[108]=Be,t[109]=Fe,t[110]=we,t[111]=Ue):Ue=t[111],Ue});function dn(n){const e=ge.c(36),{open:t,onOpenChange:l,readTargets:r,install:a}=n,[c,m]=o.useState(null),[x,h]=o.useState(null),[w,y]=o.useState(null);let D;e[0]!==r?(D=async()=>{const C=await r();C.ok?(m(C.targets),h(null)):h(C.error)},e[0]=r,e[1]=D):D=e[1];const j=D;let p,_;e[2]!==j||e[3]!==t?(p=()=>{t&&(h(null),j())},_=[t,j],e[2]=j,e[3]=t,e[4]=p,e[5]=_):(p=e[4],_=e[5]),o.useEffect(p,_);let k;e[6]!==a||e[7]!==j?(k=async function(U){y(U);const F=await a(U);y(null),F.ok?await j():h(F.error)},e[6]=a,e[7]=j,e[8]=k):k=e[8];const u=k;let d;e[9]!==c?(d=(c==null?void 0:c.some(fn))??!1,e[9]=c,e[10]=d):d=e[10];const g=d;let f;e[11]===Symbol.for("react.memo_cache_sentinel")?(f=s.jsx(Pt,{children:"Agent skill"}),e[11]=f):f=e[11];let L;e[12]===Symbol.for("react.memo_cache_sentinel")?(L=s.jsxs(Ft,{children:[f,s.jsxs($t,{children:["The skill teaches an agent how Cogpit’s browsers work: when to use a named one, when to keep to a throwaway, and that this panel is watching. Install it for agents you run outside Cogpit — it writes a"," ",s.jsx("code",{className:"font-mono",children:"SKILL.md"})," into that CLI’s configuration directory in your home folder."]})]}),e[12]=L):L=e[12];let N;e[13]!==x?(N=x&&s.jsx("p",{role:"alert",className:"text-sm text-destructive",children:x}),e[13]=x,e[14]=N):N=e[14];let A;e[15]!==w||e[16]!==u||e[17]!==c?(A=c===null?s.jsxs("div",{role:"status",className:"flex items-center gap-2 py-4 text-sm text-muted-foreground",children:[s.jsx(it,{}),"Reading where it is installed…"]}):s.jsx("ul",{className:"flex flex-col gap-2",children:c.map(C=>s.jsxs("li",{className:"flex items-center gap-3 rounded-md border p-2.5",children:[s.jsxs("span",{className:"flex min-w-0 flex-1 flex-col",children:[s.jsx("span",{className:"truncate text-sm font-medium",children:C.label}),s.jsx("span",{className:"truncate font-mono text-xs text-muted-foreground",children:C.configRoot}),C.automatic&&s.jsx("span",{className:"truncate text-xs text-muted-foreground",children:"Already automatic in the sessions Cogpit starts"})]}),C.installed?s.jsxs("span",{className:"flex shrink-0 items-center gap-1 text-xs text-muted-foreground",children:[s.jsx(dt,{"aria-hidden":!0,className:"size-3.5 text-emerald-500"}),"Installed"]}):s.jsx(Q,{size:"xs",variant:"outline","aria-label":`Install for ${C.label}`,disabled:w!==null,onClick:()=>void u(C.kind),children:"Install"})]},C.kind))}),e[15]=w,e[16]=u,e[17]=c,e[18]=A):A=e[18];const Y=!g||w!==null;let b;e[19]!==u?(b=()=>void u(_s),e[19]=u,e[20]=b):b=e[20];let P;e[21]===Symbol.for("react.memo_cache_sentinel")?(P=s.jsx(ft,{"data-icon":"inline-start"}),e[21]=P):P=e[21];let $;e[22]!==Y||e[23]!==b?($=s.jsxs(Q,{variant:"outline",disabled:Y,onClick:b,children:[P,"Install for all"]}),e[22]=Y,e[23]=b,e[24]=$):$=e[24];let M;e[25]===Symbol.for("react.memo_cache_sentinel")?(M=s.jsx(Mt,{render:s.jsx(Q,{type:"button"}),children:"Done"}),e[25]=M):M=e[25];let z;e[26]!==$?(z=s.jsxs(zt,{children:[$,M]}),e[26]=$,e[27]=z):z=e[27];let v;e[28]!==z||e[29]!==N||e[30]!==A?(v=s.jsxs(Ut,{className:"sm:max-w-md",children:[L,N,A,z]}),e[28]=z,e[29]=N,e[30]=A,e[31]=v):v=e[31];let E;return e[32]!==l||e[33]!==t||e[34]!==v?(E=s.jsx(Kt,{open:t,onOpenChange:l,children:v}),e[32]=l,e[33]=t,e[34]=v,e[35]=E):E=e[35],E}function fn(n){return!n.installed}const mn={x:0,y:0,width:0,height:0,scale:0};function hn(n,e){if(n.width<=0||n.height<=0||e.width<=0||e.height<=0)return mn;const t=Math.min(1,n.width/e.width,n.height/e.height),l=e.width*t,r=e.height*t;return{x:Math.round((n.width-l)/2),y:Math.round((n.height-r)/2),width:l,height:r,scale:t}}function Ct(n,e,t,l,r={}){if(l.scale<=0||l.width<=0||l.height<=0)return null;const a=n-t.left-l.x,c=e-t.top-l.y;return!(a>=0&&c>=0&&a<=l.width&&c<=l.height)&&!r.clamp?null:{x:Nt(a/l.scale,l.width/l.scale),y:Nt(c/l.scale,l.height/l.scale)}}function Nt(n,e){return Math.min(Math.max(n,0),e)}const xn=1,pn=2,gn=4,wn=8;function Re(n){return(n.altKey?xn:0)|(n.ctrlKey?pn:0)|(n.metaKey?gn:0)|(n.shiftKey?wn:0)}const bn=["left","middle","right"];function Et(n){return bn[n]??"left"}const yn=150,Tt=2,jn=500,Dt=5,Sn=1,kn=2,vn=16,Cn="Keyboard captured · Esc to release",Nn=new Set(["F5","F11","F12"]),En=new Set(["i","j","c"]);function _t(n){return Nn.has(n.key)||n.metaKey?!0:n.ctrlKey&&n.shiftKey&&En.has(n.key.toLowerCase())}function Tn(n){if(!(n.ctrlKey||n.metaKey))return n.key.length===1?n.key:n.key==="Enter"?"\r":void 0}function At(n,e,t){return e===Sn?n*vn:e===kn?n*t:n}function Dn(n,e,t){try{n.drawImage(e,t.x,t.y,t.width,t.height)}catch{}}function _n(n){const e=ge.c(82),{frame:t,send:l,onSizeChange:r,readOnly:a,className:c}=n,m=a===void 0?!1:a,x=o.useRef(null),h=o.useRef(null),w=o.useRef(null),y=o.useRef(null),D=o.useRef(!1);let j;e[0]===Symbol.for("react.memo_cache_sentinel")?(j={count:0,at:0,x:0,y:0,button:-1},e[0]=j):j=e[0];const p=o.useRef(j);let _;e[1]===Symbol.for("react.memo_cache_sentinel")?(_=new Map,e[1]=_):_=e[1];const k=o.useRef(_);let u;e[2]===Symbol.for("react.memo_cache_sentinel")?(u={width:0,height:0,dpr:1},e[2]=u):u=e[2];const[d,g]=o.useState(u),[f,L]=o.useState(!1),N=t?t.header.deviceWidth:0,A=t?t.header.deviceHeight:0;let Y;e[3]!==A||e[4]!==N||e[5]!==d?(Y=hn(d,{width:N,height:A}),e[3]=A,e[4]=N,e[5]=d,e[6]=Y):Y=e[6];const b=Y,P=o.useRef(r);let $,M;e[7]!==r?($=()=>{P.current=r},M=[r],e[7]=r,e[8]=$,e[9]=M):($=e[8],M=e[9]),o.useEffect($,M);let z,v;e[10]===Symbol.for("react.memo_cache_sentinel")?(z=()=>{const G=x.current;if(!G)return;let i=null;const T=()=>{const ke=G.getBoundingClientRect(),Ce=Math.round(ke.width),De=Math.round(ke.height),Te=window.devicePixelRatio||1;g(Ee=>Ee.width===Ce&&Ee.height===De&&Ee.dpr===Te?Ee:{width:Ce,height:De,dpr:Te}),i&&clearTimeout(i),i=setTimeout(()=>{i=null,Ce>0&&De>0&&P.current(Ce,De,Te)},yn)};T();const W=new ResizeObserver(T);return W.observe(G),()=>{W.disconnect(),i&&clearTimeout(i)}},v=[],e[10]=z,e[11]=v):(z=e[10],v=e[11]),o.useEffect(z,v);let E,C;e[12]!==b||e[13]!==t||e[14]!==d?(E=()=>{const G=h.current,i=G==null?void 0:G.getContext("2d");if(!G||!i)return;const T=Math.round(d.width*d.dpr),W=Math.round(d.height*d.dpr);G.width!==T&&(G.width=T),G.height!==W&&(G.height=W),i.setTransform(d.dpr,0,0,d.dpr,0,0),i.clearRect(0,0,d.width,d.height),!(!t||b.width<=0||b.height<=0)&&Dn(i,t.bitmap,b)},C=[t,b,d],e[12]=b,e[13]=t,e[14]=d,e[15]=E,e[16]=C):(E=e[15],C=e[16]),o.useEffect(E,C);let U,F;e[17]!==t?(U=()=>()=>at(t),F=[t],e[17]=t,e[18]=U,e[19]=F):(U=e[18],F=e[19]),o.useEffect(U,F);let V;e[20]!==b?(V=function(i,T,W){const ke=h.current;return ke?Ct(i,T,ke.getBoundingClientRect(),b,{clamp:W}):null},e[20]=b,e[21]=V):V=e[21];const K=V;let R;e[22]!==l?(R=function(i,T,W,ke,Ce){l({type:"mouse",event:i,x:T.x,y:T.y,button:W,clickCount:ke,modifiers:Ce})},e[22]=l,e[23]=R):R=e[23];const B=R;let O;e[24]===Symbol.for("react.memo_cache_sentinel")?(O=function(i){const T=p.current,W=Date.now(),ke=i.button===T.button&&W-T.at<jn&&Math.abs(i.clientX-T.x)<=Dt&&Math.abs(i.clientY-T.y)<=Dt;return p.current={count:ke?T.count+1:1,at:W,x:i.clientX,y:i.clientY,button:i.button},p.current.count},e[24]=O):O=e[24];const q=O;let H;e[25]!==K||e[26]!==B?(H=function(){const i=w.current;if(w.current=null,!i)return;const T=K(i.clientX,i.clientY,D.current);T&&B("move",T,"none",0,i.modifiers)},e[25]=K,e[26]=B,e[27]=H):H=e[27];const X=H;let ne;e[28]!==X?(ne=function(){y.current!==null&&(cancelAnimationFrame(y.current),y.current=null),X()},e[28]=X,e[29]=ne):ne=e[29];const le=ne;let J;e[30]!==K||e[31]!==B?(J=function(i){if(i.currentTarget.focus(),i.button===Tt)return;const T=K(i.clientX,i.clientY,!1);T&&(i.currentTarget.setPointerCapture(i.pointerId),D.current=!0,B("down",T,Et(i.button),q(i),Re(i)))},e[30]=K,e[31]=B,e[32]=J):J=e[32];const ee=J;let Se;e[33]!==X?(Se=function(i){w.current={clientX:i.clientX,clientY:i.clientY,modifiers:Re(i)},y.current===null&&(y.current=requestAnimationFrame(()=>{y.current=null,X()}))},e[33]=X,e[34]=Se):Se=e[34];const ve=Se;let ye;e[35]!==le||e[36]!==K||e[37]!==B?(ye=function(i){le();const T=D.current;if(D.current=!1,i.currentTarget.hasPointerCapture(i.pointerId)&&i.currentTarget.releasePointerCapture(i.pointerId),i.button===Tt)return;const W=K(i.clientX,i.clientY,T);W&&B("up",W,Et(i.button),p.current.count,Re(i))},e[35]=le,e[36]=K,e[37]=B,e[38]=ye):ye=e[38];const Ne=ye;let we;e[39]!==K||e[40]!==B?(we=function(i){i.preventDefault();const T=K(i.clientX,i.clientY,!1);if(!T)return;const W=Re(i);B("down",T,"right",1,W),B("up",T,"right",1,W)},e[39]=K,e[40]=B,e[41]=we):we=e[41];const he=we;let xe;e[42]!==l?(xe=function(i){if(i.key==="Escape"){i.currentTarget.blur();return}_t(i)||i.preventDefault();const T={type:"key",event:"down",key:i.key,code:i.code,modifiers:Re(i)},W=Tn(i);W!==void 0&&(T.text=W),k.current.set(i.code,i.key),l(T)},e[42]=l,e[43]=xe):xe=e[43];const be=xe;let re;e[44]!==l?(re=function(i){i.key!=="Escape"&&(_t(i)||i.preventDefault(),k.current.delete(i.code),l({type:"key",event:"up",key:i.key,code:i.code,modifiers:Re(i)}))},e[44]=l,e[45]=re):re=e[45];const pe=re;let Z,oe;e[46]!==A||e[47]!==N||e[48]!==b||e[49]!==m||e[50]!==l?(Z=()=>{const G=h.current;if(!G||m)return;const i=T=>{T.preventDefault();const W=Ct(T.clientX,T.clientY,G.getBoundingClientRect(),b);W&&l({type:"wheel",x:W.x,y:W.y,deltaX:At(T.deltaX,T.deltaMode,N),deltaY:At(T.deltaY,T.deltaMode,A),modifiers:Re(T)})};return G.addEventListener("wheel",i,{passive:!1}),()=>G.removeEventListener("wheel",i)},oe=[l,b,N,A,m],e[46]=A,e[47]=N,e[48]=b,e[49]=m,e[50]=l,e[51]=Z,e[52]=oe):(Z=e[51],oe=e[52]),o.useEffect(Z,oe);let fe,je;e[53]!==f||e[54]!==l?(fe=()=>{if(!f)return;const G=i=>{var W;const T=(W=i.clipboardData)==null?void 0:W.getData("text/plain");T&&(i.preventDefault(),l({type:"paste",text:T}))};return document.addEventListener("paste",G),()=>document.removeEventListener("paste",G)},je=[f,l],e[53]=f,e[54]=l,e[55]=fe,e[56]=je):(fe=e[55],je=e[56]),o.useEffect(fe,je);let ae,me;e[57]===Symbol.for("react.memo_cache_sentinel")?(ae=()=>()=>{y.current!==null&&cancelAnimationFrame(y.current)},me=[],e[57]=ae,e[58]=me):(ae=e[57],me=e[58]),o.useEffect(ae,me);let te;e[59]!==l?(te=()=>{for(const[G,i]of k.current)l({type:"key",event:"up",key:i,code:G,modifiers:0});k.current.clear()},e[59]=l,e[60]=te):te=e[60];const de=te;let ie,I;e[61]!==de?(ie=()=>de,I=[de],e[61]=de,e[62]=ie,e[63]=I):(ie=e[62],I=e[63]),o.useEffect(ie,I);let S;e[64]!==c?(S=_e("relative min-h-0 min-w-0 overflow-hidden bg-muted/30",c),e[64]=c,e[65]=S):S=e[65];let ce;e[66]!==f||e[67]!==he||e[68]!==be||e[69]!==pe||e[70]!==ee||e[71]!==ve||e[72]!==Ne||e[73]!==m||e[74]!==de?(ce=m?s.jsx("canvas",{ref:h,role:"img","aria-label":"Browser viewport, view only",className:"block size-full cursor-default touch-none select-none"}):s.jsx("canvas",{ref:h,role:"application","aria-label":"Browser viewport",tabIndex:0,className:_e("block size-full cursor-default touch-none select-none outline-none",f&&"ring-2 ring-ring ring-inset"),onFocus:()=>L(!0),onBlur:()=>{L(!1),de()},onPointerDown:ee,onPointerMove:ve,onPointerUp:Ne,onPointerCancel:Ne,onContextMenu:he,onKeyDown:be,onKeyUp:pe}),e[66]=f,e[67]=he,e[68]=be,e[69]=pe,e[70]=ee,e[71]=ve,e[72]=Ne,e[73]=m,e[74]=de,e[75]=ce):ce=e[75];let ue;e[76]!==f?(ue=f&&s.jsx("div",{className:"pointer-events-none absolute inset-x-0 bottom-2 flex justify-center",children:s.jsx("span",{className:"rounded-full bg-popover px-2 py-0.5 text-[10px] text-muted-foreground shadow-xs",children:Cn})}),e[76]=f,e[77]=ue):ue=e[77];let Ae;return e[78]!==S||e[79]!==ce||e[80]!==ue?(Ae=s.jsxs("div",{ref:x,className:S,children:[ce,ue]}),e[78]=S,e[79]=ce,e[80]=ue,e[81]=Ae):Ae=e[81],Ae}const An="browser-panel-session",Rn="browser-panel-follow",On=1e4,Rt=3e3,In=[];function Yn({context:n,active:e,closePanel:t}){var ie,I;const[l,r]=gt(wt(An),ct),[a,c]=gt(wt(Rn),!0),[m,x]=o.useState(!1),[h,w]=o.useState(null),[y,D]=o.useState(null),[j,p]=o.useState(!1),_=o.useRef(0),{status:k,error:u,refresh:d,create:g,remove:f,stop:L,setArchived:N,readSkillTargets:A,installSkill:Y}=As(e),b=(k==null?void 0:k.sessions)??In,P=en(b),$=k!==null&&b.length>0,M=k===null||b.some(S=>S.name===l)?l:P,z=o.useCallback(S=>void Ot(S),[]),v=zs(e&&$?M:null,z),E=((ie=n.session)==null?void 0:ie.sessionId)??null,C=o.useMemo(()=>ps(n.session),[n.session]),U=sn((C==null?void 0:C.session)??null,b,E),F=b.some(S=>S.name===U&&!S.archived);o.useEffect(()=>{!a||U===null||U===M||!F||Date.now()-_.current<On||r(U)},[a,U,F,M,r]);const V=o.useCallback(S=>{_.current=Date.now(),r(S)},[r]),K=o.useCallback(async S=>{x(!0);try{const ce=await S();return w(ce.ok?null:ce.error),ce}finally{x(!1)}},[]),{send:R}=v,B=o.useCallback((S,ce,ue)=>{R({type:"viewport",width:S,height:ce,dpr:ue})},[R]),O=o.useCallback(S=>{S&&(_.current=0),c(S)},[c]),q=o.useCallback(()=>V(P),[V,P]),H=o.useCallback(()=>p(!0),[]),X=o.useCallback(S=>{V(P),K(()=>f(S))},[V,P,K,f]),ne=o.useCallback(S=>void K(()=>L(S)),[K,L]),le=o.useCallback(async(S,ce)=>{const ue=await K(()=>N(S,ce));return ue.ok&&ce&&S===M&&V(P),ue},[K,N,M,V,P]),J=o.useCallback(S=>R({type:"navigate",url:S}),[R]),ee=o.useCallback(()=>R({type:"back"}),[R]),Se=o.useCallback(()=>R({type:"forward"}),[R]),ve=o.useCallback(()=>R({type:"reload"}),[R]),ye=o.useCallback(S=>R({type:"follow",targetId:S}),[R]),Ne=o.useCallback(S=>R({type:"close-tab",targetId:S}),[R]),we=o.useCallback(S=>R({type:"launch",url:S}),[R]),he=Ln(v.lastFrameAt),xe=((I=v.state)==null?void 0:I.state)??null,be=(k==null?void 0:k.installed)===!1||xe==="not-installed",re=!be&&xe==="live",pe=!be&&xe==="stopped",Z=b.find(S=>S.name===M)??null,oe=Ge(Z,M),fe=tn(Z),je=(Z==null?void 0:Z.mine)===!0&&!Z.running&&Z.lastUsedAt===null,ae=re&&(v.status==="disconnected"||v.status==="connecting"),me=k===null&&u!==null,te=v.error??h??(me?null:u),de=te!==null&&te!==y?te:null;return s.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[s.jsx(un,{sessions:b,selected:M,home:P,currentSessionId:E,followAgent:a,busy:m,onSelect:V,onToggleFollow:O,onOpenSkill:H,onCreate:g,onRemove:X,onStop:ne,onSetArchived:le,onShowDefault:q,onClose:t}),re&&s.jsx(qs,{page:v.page,tabs:v.tabs,followed:v.followed,status:ae?"offline":he,readOnly:!fe,onNavigate:J,onBack:ee,onForward:Se,onReload:ve,onFollow:ye,onCloseTab:Ne}),de&&s.jsx(Pn,{message:de,onDismiss:()=>{w(null),D(te)}}),s.jsxs("div",{className:"relative flex min-h-0 flex-1 flex-col",children:[me&&s.jsx(Ws,{message:u,onRetry:d}),be&&s.jsx(Gs,{onOpenSkill:H}),!be&&k!==null&&!$&&s.jsx(kt,{}),pe&&(je?s.jsx(kt,{onOpen:we}):s.jsx(Xs,{name:oe,lastUrl:(Z==null?void 0:Z.lastUrl)??null,onOpen:fe?we:void 0})),re&&s.jsxs(s.Fragment,{children:[s.jsx(_n,{className:"flex-1",frame:v.frame,send:R,onSizeChange:B,readOnly:!fe}),ae&&s.jsx(Fn,{}),s.jsx(Ys,{activity:C&&U===M?C:null})]}),!be&&!me&&(k===null||$)&&!pe&&!re&&s.jsxs("div",{role:"status",className:"flex flex-1 items-center justify-center gap-2 text-sm text-muted-foreground",children:[s.jsx(it,{}),"Connecting to ",oe,"…"]})]}),s.jsx(dn,{open:j,onOpenChange:p,readTargets:A,install:Y})]})}function Ln(n){const e=ge.c(5),[,t]=o.useState(0);let l;e[0]!==t||e[1]!==n?(l=()=>{if(n===null)return;const a=n+Rt-Date.now();if(a<=0)return;const c=setTimeout(()=>t(Bn),a);return()=>clearTimeout(c)},e[0]=t,e[1]=n,e[2]=l):l=e[2];let r;return e[3]!==n?(r=[n],e[3]=n,e[4]=r):r=e[4],o.useEffect(l,r),n===null?"idle":Date.now()-n<Rt?"live":"idle"}function Bn(n){return n+1}function Fn(){const n=ge.c(1);let e;return n[0]===Symbol.for("react.memo_cache_sentinel")?(e=s.jsx("div",{className:"pointer-events-none absolute inset-x-0 top-0 flex justify-center p-2",children:s.jsx("span",{role:"status",className:"rounded-full bg-popover px-2.5 py-0.5 text-[11px] text-muted-foreground shadow-xs",children:"Reconnecting…"})}),n[0]=e):e=n[0],e}function Pn(n){const e=ge.c(9),{message:t,onDismiss:l}=n;let r;e[0]===Symbol.for("react.memo_cache_sentinel")?(r=s.jsx(ut,{"aria-hidden":!0,className:"size-3.5 shrink-0"}),e[0]=r):r=e[0];let a;e[1]!==t?(a=s.jsx("span",{className:"min-w-0 flex-1 truncate",children:t}),e[1]=t,e[2]=a):a=e[2];let c;e[3]===Symbol.for("react.memo_cache_sentinel")?(c=s.jsx(Ze,{"data-icon":"inline-start"}),e[3]=c):c=e[3];let m;e[4]!==l?(m=s.jsx(Q,{variant:"ghost",size:"icon-xs","aria-label":"Dismiss",onClick:l,children:c}),e[4]=l,e[5]=m):m=e[5];let x;return e[6]!==a||e[7]!==m?(x=s.jsxs("div",{className:"flex shrink-0 items-center gap-2 border-b border-destructive/30 bg-destructive/10 px-2 py-1 text-xs text-destructive",children:[r,a,m]}),e[6]=a,e[7]=m,e[8]=x):x=e[8],x}export{Yn as BrowserPanel};
|
|
1
|
+
import{r as o,c as ge,j as s}from"./vendor-react-gGw_S5I_.js";import{U as et,bY as tt,b7 as st,bZ as mt,b_ as Jt,J as _e,L as Xe,M as We,N as Je,O as Ve,Q as Me,b$ as qe,B as Q,ag as it,aA as Ot,b6 as Ke,n as Vt,I as qt,E as Zt,m as Qt,bw as It,bx as Lt,bv as Bt,c0 as ct,Z as Ye,$ as es,c1 as ts,c2 as ss,c3 as ns,l as ht,c4 as ls,i as Ft,j as Pt,k as $t,b1 as xt,G as rs,C as pt,z as os,c5 as Mt,aK as zt,h as Ut,D as Kt,a4 as as,a5 as is,a6 as cs,a7 as us,a8 as ds,a9 as fs,aa as ms,ab as hs,ac as xs,bV as gt,R as wt,c6 as ps}from"./index-CW9tjG1S.js";import{a4 as gs,J as ut,n as Yt,I as dt,z as ws,g as ft,ax as bs,X as Ze,O as Ht,ay as ys,az as js,b as Ss,aA as Gt,a2 as ks,aB as vs,P as Cs,aC as Ns,i as bt,aa as Es,aD as Ts}from"./vendor-ui-Br3ZTAXZ.js";import"./vendor-shiki-DOn6sF-i.js";import"./vendor-markdown-BE1gYnO9.js";const $e="/api/browser",Ds=5e3,_s="all";function nt(n,e=""){return`${$e}/sessions/${encodeURIComponent(n)}${e}`}function lt(n){return{headers:{"content-type":"application/json"},body:JSON.stringify(n)}}function rt(n,e){return n instanceof Error&&n.message?n.message:e}function As(n){const[e,t]=o.useState(null),[l,r]=o.useState(null),a=o.useRef(!1),c=o.useRef(0),m=o.useRef(!1);o.useEffect(()=>(a.current=!0,()=>{a.current=!1}),[]);const x=o.useCallback(async()=>{const u=++c.current;m.current=!0;try{const d=await et(tt($e)),g=d.ok?await d.json():null;if(!a.current||u!==c.current)return;g?(t(f=>JSON.stringify(f)===JSON.stringify(g)?f:g),r(null)):r(await st(d,`Could not read the browser list (${d.status})`))}catch(d){a.current&&u===c.current&&r(rt(d,"Could not read the browser list"))}finally{u===c.current&&(m.current=!1)}},[]);o.useEffect(()=>{if(!n)return;x();const u=setInterval(()=>{m.current||x()},Ds);return()=>clearInterval(u)},[n,x]);const h=o.useCallback(async(u,d,g)=>{let f;try{f=await et(tt(u),d)}catch(N){return{ok:!1,error:rt(N,g)}}if(!f.ok)return{ok:!1,error:await st(f,g)};const L=await mt(f);return x(),{ok:!0,data:L}},[x]),w=o.useCallback(async(u,d,g)=>{const f=await h(u,d,g);return f.ok?{ok:!0}:f},[h]),y=o.useCallback(async(u,d)=>{const g=await h(`${$e}/sessions`,{method:"POST",...lt({name:u,note:d})},`Could not create ${u}`);if(!g.ok)return g;const f=g.data;return(f==null?void 0:f.name)===u&&t(L=>L&&!L.sessions.some(N=>N.name===u)?{...L,sessions:[...L.sessions,f]}:L),{ok:!0}},[h]),D=o.useCallback(u=>w(nt(u),{method:"DELETE"},`Could not delete ${u}`),[w]),j=o.useCallback(u=>w(nt(u,"/stop"),{method:"POST"},`Could not stop ${u}`),[w]),p=o.useCallback((u,d)=>w(nt(u),{method:"PATCH",...lt({archived:d})},`Could not ${d?"archive":"restore"} ${u}`),[w]),_=o.useCallback(async()=>{const u="Could not read where the browser skill is installed";let d;try{d=await et(tt(`${$e}/skill`))}catch(f){return{ok:!1,error:rt(f,u)}}if(!d.ok)return{ok:!1,error:await st(d,u)};const g=await mt(d);return Array.isArray(g==null?void 0:g.targets)?{ok:!0,targets:g.targets}:{ok:!1,error:u}},[]),k=o.useCallback(async u=>{const d="Could not install the browser skill",g=await h(`${$e}/skill/install`,{method:"POST",...lt({target:u})},d);if(!g.ok)return g;const{paths:f}=g.data??{};return Array.isArray(f)&&f.every(L=>typeof L=="string")?{ok:!0,paths:f}:{ok:!1,error:d}},[h]);return{status:e,error:l,refresh:x,create:y,remove:D,stop:j,setArchived:p,readSkillTargets:_,installSkill:k}}const ot=4;new TextEncoder;const Rs=new TextDecoder;function Os(n){if(n.byteLength<ot)throw new Error("Frame truncated before header length");const e=new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0),t=ot+e;if(n.byteLength<t)throw new Error("Frame truncated inside header");return{header:Is(Rs.decode(n.subarray(ot,t))),jpeg:n.subarray(t)}}function Is(n){let e;try{e=JSON.parse(n)}catch{throw new Error("Frame header is not valid JSON")}if(typeof e!="object"||e===null)throw new Error("Frame header is not an object");const{deviceWidth:t,deviceHeight:l,pageScaleFactor:r,offsetTop:a,scrollOffsetX:c,scrollOffsetY:m,targetId:x,ts:h}=e;if(typeof t!="number"||typeof l!="number"||typeof r!="number"||typeof a!="number"||typeof c!="number"||typeof m!="number"||typeof x!="string"||typeof h!="number")throw new Error("Frame header is missing fields");return{deviceWidth:t,deviceHeight:l,pageScaleFactor:r,offsetTop:a,scrollOffsetX:c,scrollOffsetY:m,targetId:x,ts:h}}const yt=500,Ls=5e3,jt=[];function Bs(n){const e=window.location.protocol==="https:"?"wss:":"ws:",t=Jt();return`${e}//${window.location.host}${t}/__browser?session=${encodeURIComponent(n)}`}function Fs(n){try{return JSON.parse(n)}catch{return null}}function Ps(n,e){return n.state===e.state&&n.session===e.session&&n.message===e.message}function $s(n,e){return n.targetId===e.targetId&&n.url===e.url&&n.title===e.title&&n.canGoBack===e.canGoBack&&n.canGoForward===e.canGoForward}function Ms(n,e){return n.length===e.length&&n.every((t,l)=>t.targetId===e[l].targetId&&t.url===e[l].url&&t.title===e[l].title)}function at(n){n&&n.bitmap.close()}function zs(n,e){const t=ge.c(16),[l,r]=o.useState("idle"),[a,c]=o.useState(null),[m,x]=o.useState(null),[h,w]=o.useState(jt),[y,D]=o.useState(null),[j,p]=o.useState(null),[_,k]=o.useState(null),[u,d]=o.useState(null),g=o.useRef(null),f=o.useRef(null),L=o.useRef(null),N=o.useRef(e);let A,Y;t[0]!==e?(A=()=>{N.current=e},Y=[e],t[0]=e,t[1]=A,t[2]=Y):(A=t[1],Y=t[2]),o.useEffect(A,Y);let b,P;t[3]!==n?(b=()=>{if(c(null),x(null),w(jt),D(null),d(null),p(null),k(null),n===null){r("idle");return}const v=n,E={alive:!0,issued:0,applied:0};let C=yt;const U=function(B,O){if(!E.alive||O<=E.applied){at(B);return}E.applied=O,f.current=B,p(B),k(Date.now())},F=function(B){let O,q;try{const X=Os(new Uint8Array(B));O=X.header,q=new Blob([X.jpeg],{type:"image/jpeg"})}catch{return}const H=E.issued=E.issued+1;createImageBitmap(q).then(X=>U({bitmap:X,header:O},H),Us)},V=function(B){var q;const O=Fs(B);if(O)e:switch(O.type){case"status":{c(H=>H&&Ps(H,O)?H:O),d(null);break e}case"page":{x(H=>H&&$s(H,O)?H:O);break e}case"tabs":{w(H=>Ms(H,O.tabs)?H:O.tabs),D(O.followed);break e}case"error":{d(O.message);break e}case"clipboard":(q=N.current)==null||q.call(N,O.text)}};function K(){if(!E.alive)return;const R=g.current;if(R&&R.readyState!==WebSocket.CLOSED)return;r("connecting");const B=new WebSocket(Bs(v));B.binaryType="arraybuffer",g.current=B,B.onopen=()=>{if(!E.alive){B.close();return}C=yt,r("connected")},B.onmessage=O=>{E.alive&&(typeof O.data=="string"?V(O.data):O.data instanceof ArrayBuffer&&F(O.data))},B.onclose=()=>{if(!E.alive)return;g.current=null,r("disconnected");const O=C;C=Math.min(C*2,Ls),L.current=setTimeout(K,O)}}return K(),()=>{E.alive=!1,L.current&&(clearTimeout(L.current),L.current=null);const R=g.current;g.current=null,R&&(R.onclose=null,R.close()),at(f.current),f.current=null}},P=[n],t[3]=n,t[4]=b,t[5]=P):(b=t[4],P=t[5]),o.useEffect(b,P);let $;t[6]===Symbol.for("react.memo_cache_sentinel")?($=v=>{const E=g.current;E&&E.readyState===WebSocket.OPEN&&E.send(JSON.stringify(v))},t[6]=$):$=t[6];const M=$;let z;return t[7]!==u||t[8]!==y||t[9]!==j||t[10]!==_||t[11]!==m||t[12]!==a||t[13]!==l||t[14]!==h?(z={status:l,state:a,page:m,tabs:h,followed:y,frame:j,lastFrameAt:_,error:u,send:M},t[7]=u,t[8]=y,t[9]=j,t[10]=_,t[11]=m,t[12]=a,t[13]=l,t[14]=h,t[15]=z):z=t[15],z}function Us(){}const Ks=6e3;function Ys(n){const e=ge.c(16),{activity:t}=n,[l,r]=o.useState(!0),a=t?`${t.toolCallId}:${t.done}`:null;let c,m;if(e[0]!==a?(c=()=>{if(a===null)return;r(!0);const k=setTimeout(()=>r(!1),Ks);return()=>clearTimeout(k)},m=[a],e[0]=a,e[1]=c,e[2]=m):(c=e[1],m=e[2]),o.useEffect(c,m),!t)return null;const x=l?"opacity-100":"opacity-0";let h;e[3]!==x?(h=_e("pointer-events-none absolute inset-x-0 bottom-0 flex justify-center px-2 pb-6 pt-8","bg-gradient-to-t from-transparent via-background/70 to-transparent","transition-opacity duration-700 motion-reduce:transition-none",x),e[3]=x,e[4]=h):h=e[4];let w;e[5]===Symbol.for("react.memo_cache_sentinel")?(w=s.jsx(gs,{"aria-hidden":!0,className:"size-3.5 shrink-0 text-muted-foreground"}),e[5]=w):w=e[5];let y;e[6]!==t.command?(y=s.jsx("code",{className:"min-w-0 truncate font-mono text-[11px]",children:t.command}),e[6]=t.command,e[7]=y):y=e[7];const D=t.done?"ran":"running";let j;e[8]!==D?(j=s.jsx("span",{className:"shrink-0 text-muted-foreground",children:D}),e[8]=D,e[9]=j):j=e[9];let p;e[10]!==y||e[11]!==j?(p=s.jsxs("div",{className:"flex min-w-0 items-center gap-2 rounded-full bg-popover px-3 py-1 text-xs shadow-xs",children:[w,y,j]}),e[10]=y,e[11]=j,e[12]=p):p=e[12];let _;return e[13]!==h||e[14]!==p?(_=s.jsx("div",{className:h,children:p}),e[13]=h,e[14]=p,e[15]=_):_=e[15],_}const St="npm i -g agent-browser && agent-browser install",Hs=1500;function Gs(n){const e=ge.c(20),{onOpenSkill:t}=n,[l,r]=o.useState(!1),a=o.useRef(null);let c,m;e[0]===Symbol.for("react.memo_cache_sentinel")?(c=()=>()=>{a.current&&clearTimeout(a.current)},m=[],e[0]=c,e[1]=m):(c=e[0],m=e[1]),o.useEffect(c,m);let x;e[2]===Symbol.for("react.memo_cache_sentinel")?(x=async function(){await Ot(St)&&(r(!0),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>r(!1),Hs))},e[2]=x):x=e[2];const h=x;let w,y;e[3]===Symbol.for("react.memo_cache_sentinel")?(w=s.jsx(Je,{variant:"icon",children:s.jsx(Yt,{})}),y=s.jsx(Ve,{children:"Nothing to show yet"}),e[3]=w,e[4]=y):(w=e[3],y=e[4]);let D;e[5]===Symbol.for("react.memo_cache_sentinel")?(D=s.jsxs(We,{children:[w,y,s.jsxs(Me,{children:["This panel streams a real browser the agent drives. That takes the"," ",s.jsx("code",{className:"font-mono",children:"agent-browser"})," command, which is not on this machine yet."]})]}),e[5]=D):D=e[5];let j;e[6]===Symbol.for("react.memo_cache_sentinel")?(j=s.jsx("code",{className:"min-w-0 flex-1 truncate font-mono text-xs",children:St}),e[6]=j):j=e[6];const p=l?"Copied":"Copy install command";let _;e[7]===Symbol.for("react.memo_cache_sentinel")?(_=()=>void h(),e[7]=_):_=e[7];let k;e[8]!==l?(k=l?s.jsx(dt,{"data-icon":"inline-start",className:"text-emerald-500"}):s.jsx(ws,{"data-icon":"inline-start"}),e[8]=l,e[9]=k):k=e[9];let u;e[10]!==k||e[11]!==p?(u=s.jsxs("div",{className:"flex w-full items-center gap-1.5 rounded-md border bg-muted/40 py-1 pl-2.5 pr-1 text-left",children:[j,s.jsx(Q,{variant:"ghost",size:"icon-xs","aria-label":p,onClick:_,children:k})]}),e[10]=k,e[11]=p,e[12]=u):u=e[12];let d;e[13]===Symbol.for("react.memo_cache_sentinel")?(d=s.jsx(ft,{"data-icon":"inline-start"}),e[13]=d):d=e[13];let g;e[14]!==t?(g=s.jsxs(Q,{variant:"outline",size:"sm",onClick:t,children:[d,"Install the agent skill…"]}),e[14]=t,e[15]=g):g=e[15];let f;e[16]===Symbol.for("react.memo_cache_sentinel")?(f=s.jsx(Me,{className:"text-xs",children:"The skill teaches the agent when to use a named browser and how this panel follows along. Installing writes it into your home directory, so it is never done for you."}),e[16]=f):f=e[16];let L;return e[17]!==u||e[18]!==g?(L=s.jsxs(Xe,{className:"size-full",children:[D,s.jsxs(qe,{children:[u,g,f]})]}),e[17]=u,e[18]=g,e[19]=L):L=e[19],L}function Xs(n){const e=ge.c(14),{name:t,lastUrl:l,onOpen:r}=n;let a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=s.jsx(Je,{variant:"icon",children:s.jsx(bs,{})}),e[0]=a):a=e[0];let c;e[1]!==t?(c=s.jsxs(Ve,{children:[t," isn’t running"]}),e[1]=t,e[2]=c):c=e[2];const m=r?"The agent opens it by itself the moment it browses. You can also open a page here and watch from the start.":"It shows up here as soon as the agent that uses it opens it again.";let x;e[3]!==m?(x=s.jsx(Me,{children:m}),e[3]=m,e[4]=x):x=e[4];let h;e[5]!==c||e[6]!==x?(h=s.jsxs(We,{children:[a,c,x]}),e[5]=c,e[6]=x,e[7]=h):h=e[7];let w;e[8]!==l||e[9]!==r?(w=r&&s.jsx(qe,{children:s.jsx(Xt,{lastUrl:l,onOpen:r})}),e[8]=l,e[9]=r,e[10]=w):w=e[10];let y;return e[11]!==h||e[12]!==w?(y=s.jsxs(Xe,{className:"size-full",children:[h,w]}),e[11]=h,e[12]=w,e[13]=y):y=e[13],y}function kt(n){const e=ge.c(5),{onOpen:t}=n;let l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l=s.jsxs(We,{children:[s.jsx(Je,{variant:"icon",children:s.jsx(Yt,{})}),s.jsx(Ve,{children:"Your agents’ browsers show up here"}),s.jsx(Me,{children:"When an agent in one of your sessions opens a web page, you can watch it here and take over. Other sessions you can access show their browsers too."})]}),e[0]=l):l=e[0];let r;e[1]!==t?(r=t&&s.jsx(qe,{children:s.jsx(Xt,{lastUrl:null,onOpen:t})}),e[1]=t,e[2]=r):r=e[2];let a;return e[3]!==r?(a=s.jsxs(Xe,{className:"size-full",children:[l,r]}),e[3]=r,e[4]=a):a=e[4],a}function Xt(n){const e=ge.c(14),{lastUrl:t,onOpen:l}=n,[r,a]=o.useState(null),c=r??t??"";let m;e[0]!==l||e[1]!==c?(m=function(k){k.preventDefault();const u=c.trim();u&&l(u)},e[0]=l,e[1]=c,e[2]=m):m=e[2];const x=m;let h;e[3]===Symbol.for("react.memo_cache_sentinel")?(h=_=>a(_.target.value),e[3]=h):h=e[3];let w;e[4]!==c?(w=s.jsx(Ke,{"aria-label":"Page to open",className:"h-8 text-sm",placeholder:"example.com",spellCheck:!1,autoComplete:"off",value:c,onChange:h}),e[4]=c,e[5]=w):w=e[5];let y;e[6]!==c?(y=c.trim(),e[6]=c,e[7]=y):y=e[7];const D=!y;let j;e[8]!==D?(j=s.jsx(Q,{type:"submit",size:"sm",disabled:D,children:"Open"}),e[8]=D,e[9]=j):j=e[9];let p;return e[10]!==x||e[11]!==w||e[12]!==j?(p=s.jsxs("form",{className:"flex w-full items-center gap-2",onSubmit:x,children:[w,j]}),e[10]=x,e[11]=w,e[12]=j,e[13]=p):p=e[13],p}function Ws({message:n,onRetry:e}){const[t,l]=o.useState(!1);async function r(){l(!0);try{await e()}finally{l(!1)}}return s.jsxs(Xe,{className:"size-full",children:[s.jsxs(We,{children:[s.jsx(Je,{variant:"icon",children:s.jsx(ut,{})}),s.jsx(Ve,{children:"Could not load the browsers"}),s.jsx(Me,{children:n})]}),s.jsx(qe,{children:s.jsxs(Q,{variant:"outline",size:"sm",disabled:t,onClick:()=>void r(),children:[t&&s.jsx(it,{"data-icon":"inline-start"}),"Retry"]})})]})}function vt(n){if(n.url==="about:blank"&&(!n.title.trim()||n.title==="about:blank"))return"New tab";if(n.title.trim())return n.title.trim();try{return new URL(n.url).hostname||n.url}catch{return n.url}}const Js={live:{label:"LIVE",hint:"Streaming the page as it changes",tone:"text-emerald-600 dark:text-emerald-400",dot:"bg-emerald-500"},idle:{label:"IDLE",hint:"The page has not changed for a few seconds",tone:"text-muted-foreground",dot:"ring-1 ring-muted-foreground/50 ring-inset"},offline:{label:"OFFLINE",hint:"The connection dropped — this is the last frame that arrived",tone:"text-amber-600 dark:text-amber-400",dot:"bg-amber-500"}};function Vs(n){const e=ge.c(17),{status:t}=n,l=Js[t];let r;e[0]!==l.tone?(r=_e("ml-1 flex shrink-0 cursor-default items-center gap-1 text-[10px] font-medium tracking-wide",l.tone),e[0]=l.tone,e[1]=r):r=e[1];let a;e[2]!==r?(a=s.jsx("span",{className:r}),e[2]=r,e[3]=a):a=e[3];let c;e[4]!==l.dot?(c=_e("size-1.5 rounded-full",l.dot),e[4]=l.dot,e[5]=c):c=e[5];let m;e[6]!==c?(m=s.jsx("span",{"aria-hidden":"true",className:c}),e[6]=c,e[7]=m):m=e[7];let x;e[8]!==l.label||e[9]!==a||e[10]!==m?(x=s.jsxs(It,{render:a,children:[m,l.label]}),e[8]=l.label,e[9]=a,e[10]=m,e[11]=x):x=e[11];let h;e[12]!==l.hint?(h=s.jsx(Lt,{children:l.hint}),e[12]=l.hint,e[13]=h):h=e[13];let w;return e[14]!==x||e[15]!==h?(w=s.jsxs(Bt,{children:[x,h]}),e[14]=x,e[15]=h,e[16]=w):w=e[16],w}const qs=o.memo(function(e){const t=ge.c(52),{page:l,tabs:r,followed:a,status:c,readOnly:m,onNavigate:x,onBack:h,onForward:w,onReload:y,onFollow:D,onCloseTab:j}=e,p=m===void 0?!1:m,[_,k]=o.useState(null),u=(l==null?void 0:l.url)??"";let d;t[0]!==_||t[1]!==u||t[2]!==x||t[3]!==p?(d=function(ee){if(ee.preventDefault(),p)return;const Se=(_??u).trim();k(null),Se&&x(Se)},t[0]=_,t[1]=u,t[2]=x,t[3]=p,t[4]=d):d=t[4];const g=d;let f;t[5]===Symbol.for("react.memo_cache_sentinel")?(f=function(ee){ee.key==="Escape"&&(ee.preventDefault(),k(null),ee.currentTarget.blur())},t[5]=f):f=t[5];const L=f,N=p||!(l!=null&&l.canGoBack);let A;t[6]===Symbol.for("react.memo_cache_sentinel")?(A=s.jsx(Ht,{"data-icon":"inline-start"}),t[6]=A):A=t[6];let Y;t[7]!==h||t[8]!==N?(Y=s.jsx(Q,{variant:"ghost",size:"icon-sm","aria-label":"Back",disabled:N,onClick:h,children:A}),t[7]=h,t[8]=N,t[9]=Y):Y=t[9];const b=p||!(l!=null&&l.canGoForward);let P;t[10]===Symbol.for("react.memo_cache_sentinel")?(P=s.jsx(ys,{"data-icon":"inline-start"}),t[10]=P):P=t[10];let $;t[11]!==w||t[12]!==b?($=s.jsx(Q,{variant:"ghost",size:"icon-sm","aria-label":"Forward",disabled:b,onClick:w,children:P}),t[11]=w,t[12]=b,t[13]=$):$=t[13];const M=p||!l;let z;t[14]===Symbol.for("react.memo_cache_sentinel")?(z=s.jsx(js,{"data-icon":"inline-start"}),t[14]=z):z=t[14];let v;t[15]!==y||t[16]!==M?(v=s.jsx(Q,{variant:"ghost",size:"icon-sm","aria-label":"Reload",disabled:M,onClick:y,children:z}),t[15]=y,t[16]=M,t[17]=v):v=t[17];const E=_??u;let C;t[18]===Symbol.for("react.memo_cache_sentinel")?(C=J=>k(J.target.value),t[18]=C):C=t[18];let U;t[19]===Symbol.for("react.memo_cache_sentinel")?(U=()=>k(null),t[19]=U):U=t[19];let F;t[20]!==p||t[21]!==E?(F=s.jsx(Vt,{"aria-label":"Page URL",className:"text-xs",placeholder:"Enter a URL",spellCheck:!1,autoComplete:"off",readOnly:p,value:E,onChange:C,onFocus:Zs,onBlur:U,onKeyDown:L}),t[20]=p,t[21]=E,t[22]=F):F=t[22];const V=!u;let K;t[23]!==u?(K=()=>window.open(u,"_blank","noopener,noreferrer"),t[23]=u,t[24]=K):K=t[24];let R;t[25]===Symbol.for("react.memo_cache_sentinel")?(R=s.jsx(Ss,{"data-icon":"inline-start"}),t[25]=R):R=t[25];let B;t[26]!==V||t[27]!==K?(B=s.jsx(qt,{align:"inline-end",children:s.jsx(Zt,{size:"icon-xs","aria-label":"Open in your browser",disabled:V,onClick:K,children:R})}),t[26]=V,t[27]=K,t[28]=B):B=t[28];let O;t[29]!==F||t[30]!==B?(O=s.jsxs(Qt,{className:"h-7",children:[F,B]}),t[29]=F,t[30]=B,t[31]=O):O=t[31];let q;t[32]!==g||t[33]!==O?(q=s.jsx("form",{className:"ml-1 min-w-0 flex-1",onSubmit:g,children:O}),t[32]=g,t[33]=O,t[34]=q):q=t[34];let H;t[35]!==c?(H=c&&s.jsx(Vs,{status:c}),t[35]=c,t[36]=H):H=t[36];let X;t[37]!==v||t[38]!==q||t[39]!==H||t[40]!==Y||t[41]!==$?(X=s.jsxs("div",{className:"flex items-center gap-0.5",children:[Y,$,v,q,H]}),t[37]=v,t[38]=q,t[39]=H,t[40]=Y,t[41]=$,t[42]=X):X=t[42];let ne;t[43]!==a||t[44]!==j||t[45]!==D||t[46]!==p||t[47]!==r?(ne=r.length>0&&s.jsx("div",{className:"flex items-center gap-1 overflow-x-auto pb-0.5",children:r.map(J=>s.jsxs("div",{className:_e("flex max-w-48 shrink-0 items-center rounded-md",J.targetId===a&&"bg-secondary"),children:[s.jsx(Q,{size:"xs",variant:"ghost",className:_e("min-w-0 shrink",!p&&"rounded-r-none"),"aria-current":J.targetId===a?"page":void 0,title:J.title||J.url,onClick:()=>D(J.targetId),onMouseDown:Qs,onAuxClick:ee=>{ee.button!==1||p||(ee.preventDefault(),j(J.targetId))},children:s.jsx("span",{className:"truncate",children:vt(J)})}),!p&&s.jsx(Q,{size:"icon-xs",variant:"ghost",className:"rounded-l-none","aria-label":`Close tab: ${vt(J)}`,title:"Close tab",onClick:()=>j(J.targetId),children:s.jsx(Ze,{"data-icon":"inline-start"})})]},J.targetId))}),t[43]=a,t[44]=j,t[45]=D,t[46]=p,t[47]=r,t[48]=ne):ne=t[48];let le;return t[49]!==X||t[50]!==ne?(le=s.jsxs("div",{className:"flex shrink-0 flex-col gap-1 border-b px-2 py-1.5",children:[X,ne]}),t[49]=X,t[50]=ne,t[51]=le):le=t[51],le});function Zs(n){return n.target.select()}function Qs(n){n.button===1&&n.preventDefault()}function en(n){var e;return((e=n.find(t=>t.mine))==null?void 0:e.name)??ct}function He(n){return(n==null?void 0:n.control)??"own"}function tn(n){return He(n)!=="watch"}function Ge(n,e){return n!=null&&n.mine?"Your browser":n!=null&&n.account?`${n.account}'s browser`:e}function sn(n,e,t){if(n!==ct||t===null)return n;const l=e.find(r=>(r.mine||r.account)&&r.driverSessionId===t);return(l==null?void 0:l.name)??n}function nn(n){if(!n||!Number.isFinite(Date.parse(n)))return null;if(Date.now()-Date.parse(n)>=10080*60*1e3)return new Date(n).toLocaleDateString();const e=es(n);return e==="now"?"just now":`${e} ago`}function Wt(n){const e=ge.c(4),{running:t}=n,l=t?"bg-emerald-500":"ring-1 ring-muted-foreground/50 ring-inset";let r;e[0]!==l?(r=_e("size-2 shrink-0 rounded-full",l),e[0]=l,e[1]=r):r=e[1];let a;return e[2]!==r?(a=s.jsx("span",{"aria-hidden":!0,className:r}),e[2]=r,e[3]=a):a=e[3],a}function ln(n){const e=ge.c(89),{sessions:t,selected:l,home:r,currentSessionId:a,busy:c,onSelect:m,onSetArchived:x,children:h}=n,[w,y]=o.useState(!1),[D,j]=o.useState(""),[p,_]=o.useState(!1),k=o.useRef(null);let u,d,g,f,L,N,A,Y,b,P,$,M,z,v,E,C,U;if(e[0]!==c||e[1]!==a||e[2]!==r||e[3]!==m||e[4]!==x||e[5]!==w||e[6]!==D||e[7]!==l||e[8]!==t||e[9]!==p){let ne;e[27]!==l?(ne=I=>I.name===l,e[27]=l,e[28]=ne):ne=e[28];const le=t.find(ne),J=D.trim().toLowerCase();let ee;e[29]!==r||e[30]!==l?(ee=I=>!!I.archived&&!I.isDefault&&I.name!==r&&!I.running&&I.name!==l,e[29]=r,e[30]=l,e[31]=ee):ee=e[31];const Se=ee,ve=I=>`${I.name} ${Ge(I,I.name)} ${I.note??""}`.toLowerCase().includes(J);let ye;e[32]!==r?(ye=(I,S)=>+(S.name===r)-+(I.name===r)||Number(S.isDefault)-Number(I.isDefault)||Number(S.running)-Number(I.running),e[32]=r,e[33]=ye):ye=e[33];const Ne=t.filter(I=>!Se(I)&&ve(I)).sort(ye);g=t.filter(Se);const we=g.filter(ve);U=p&&!J?[]:Ne,C=p||J?we:[];let he;e[34]===Symbol.for("react.memo_cache_sentinel")?(he=function(){y(!1)},e[34]=he):he=e[34],f=he;const xe=async function(S){S.archived&&!(await x(S.name,!1)).ok||(m(S.name),f())},be=async function(S){var ue;(await x(S,!0)).ok&&((ue=k.current)==null||ue.focus())};d=ts,E=w,e[35]===Symbol.for("react.memo_cache_sentinel")?(N=I=>{y(I),I&&(j(""),_(!1))},e[35]=N):N=e[35];let re;e[36]===Symbol.for("react.memo_cache_sentinel")?(re=s.jsx(Q,{variant:"ghost",size:"xs","aria-label":"Switch browser",className:"max-w-40"}),e[36]=re):re=e[36];const pe=s.jsx(Wt,{running:(le==null?void 0:le.running)??!1}),Z=Ge(le,l);let oe;e[37]!==Z?(oe=s.jsx("span",{className:"truncate",children:Z}),e[37]=Z,e[38]=oe):oe=e[38];let fe;e[39]===Symbol.for("react.memo_cache_sentinel")?(fe=s.jsx(ks,{"data-icon":"inline-end",className:"opacity-60"}),e[39]=fe):fe=e[39],e[40]!==pe||e[41]!==oe?(A=s.jsxs(ss,{render:re,children:[pe,oe,fe]}),e[40]=pe,e[41]=oe,e[42]=A):A=e[42],u=ns,P="Browsers",$=k,M="flex max-h-[min(32rem,var(--available-height))] w-80 max-w-[calc(100vw-1rem)] flex-col overflow-hidden";const je=p&&!J?"Archived browsers":"Browsers";let ae;e[43]!==je?(ae=s.jsx("span",{className:"text-sm font-medium",children:je}),e[43]=je,e[44]=ae):ae=e[44];let me;e[45]===Symbol.for("react.memo_cache_sentinel")?(me=s.jsx(Q,{variant:"ghost",size:"icon-xs","aria-label":"Close browser picker",onClick:f,children:s.jsx(Ze,{"data-icon":"inline-start"})}),e[45]=me):me=e[45];let te;e[46]!==ae?(te=s.jsxs("div",{className:"flex items-center justify-between pl-1",children:[ae,me]}),e[46]=ae,e[47]=te):te=e[47];let de;e[48]===Symbol.for("react.memo_cache_sentinel")?(de=I=>j(I.target.value),e[48]=de):de=e[48];let ie;e[49]!==D?(ie=s.jsx(Ke,{ref:k,"aria-label":"Search browsers",placeholder:"Search browsers…",value:D,onChange:de}),e[49]=D,e[50]=ie):ie=e[50],e[51]!==te||e[52]!==ie?(z=s.jsxs("div",{className:"flex shrink-0 flex-col gap-2 p-2",children:[te,ie]}),e[51]=te,e[52]=ie,e[53]=z):z=e[53],e[54]===Symbol.for("react.memo_cache_sentinel")?(v=s.jsx(ht,{}),e[54]=v):v=e[54],L="min-h-0 max-h-72 overflow-y-auto overscroll-contain p-1",Y="Browser list",b=[{label:"Recent browsers",sessions:U,archived:!1},{label:"Archived browsers",sessions:C,archived:!0}].filter(rn).map(I=>s.jsxs("div",{children:[I.archived&&!!J&&s.jsx("p",{className:"px-2 py-1 text-xs text-muted-foreground",children:"Archived"}),s.jsx("ul",{"aria-label":I.label,children:I.sessions.map(S=>s.jsx(on,{session:S,archived:I.archived,home:r,selected:l,currentSessionId:a,busy:c,onPick:xe,onArchive:be},S.name))})]},I.label)),e[0]=c,e[1]=a,e[2]=r,e[3]=m,e[4]=x,e[5]=w,e[6]=D,e[7]=l,e[8]=t,e[9]=p,e[10]=u,e[11]=d,e[12]=g,e[13]=f,e[14]=L,e[15]=N,e[16]=A,e[17]=Y,e[18]=b,e[19]=P,e[20]=$,e[21]=M,e[22]=z,e[23]=v,e[24]=E,e[25]=C,e[26]=U}else u=e[10],d=e[11],g=e[12],f=e[13],L=e[14],N=e[15],A=e[16],Y=e[17],b=e[18],P=e[19],$=e[20],M=e[21],z=e[22],v=e[23],E=e[24],C=e[25],U=e[26];let F;e[55]!==C||e[56]!==U.length?(F=U.length===0&&C.length===0&&s.jsx("p",{role:"status",className:"px-3 py-6 text-center text-sm text-muted-foreground",children:"No browsers found."}),e[55]=C,e[56]=U.length,e[57]=F):F=e[57];let V;e[58]!==L||e[59]!==F||e[60]!==Y||e[61]!==b?(V=s.jsxs("div",{className:L,"aria-label":Y,children:[b,F]}),e[58]=L,e[59]=F,e[60]=Y,e[61]=b,e[62]=V):V=e[62];let K;e[63]===Symbol.for("react.memo_cache_sentinel")?(K=s.jsx(ht,{}),e[63]=K):K=e[63];let R;e[64]!==g.length||e[65]!==p?(R=(g.length>0||p)&&s.jsxs(Q,{variant:"ghost",size:"sm",className:"w-full justify-start","aria-expanded":p,onClick:()=>{_(!p),j("")},children:[p?s.jsx(Ht,{"data-icon":"inline-start"}):s.jsx(Gt,{"data-icon":"inline-start"}),p?"Back to recent":"Archived",!p&&s.jsx(Ye,{variant:"secondary",children:g.length})]}),e[64]=g.length,e[65]=p,e[66]=R):R=e[66];let B;e[67]===Symbol.for("react.memo_cache_sentinel")?(B=s.jsx("p",{className:"px-1 pb-1 text-xs text-muted-foreground",children:"Stopped browsers archive after 24h of inactivity. Saved logins are kept."}),e[67]=B):B=e[67];let O;e[68]!==h||e[69]!==f?(O=h(f),e[68]=h,e[69]=f,e[70]=O):O=e[70];let q;e[71]!==R||e[72]!==O?(q=s.jsxs("div",{className:"flex shrink-0 flex-col gap-1 p-2",children:[R,B,O]}),e[71]=R,e[72]=O,e[73]=q):q=e[73];let H;e[74]!==u||e[75]!==V||e[76]!==q||e[77]!==P||e[78]!==$||e[79]!==M||e[80]!==z||e[81]!==v?(H=s.jsxs(u,{"aria-label":P,initialFocus:$,className:M,children:[z,v,V,K,q]}),e[74]=u,e[75]=V,e[76]=q,e[77]=P,e[78]=$,e[79]=M,e[80]=z,e[81]=v,e[82]=H):H=e[82];let X;return e[83]!==d||e[84]!==N||e[85]!==A||e[86]!==H||e[87]!==E?(X=s.jsxs(d,{open:E,onOpenChange:N,children:[A,H]}),e[83]=d,e[84]=N,e[85]=A,e[86]=H,e[87]=E,e[88]=X):X=e[88],X}function rn(n){return n.sessions.length>0}function on(n){const e=ge.c(53),{session:t,archived:l,home:r,selected:a,currentSessionId:c,busy:m,onPick:x,onArchive:h}=n;let w;e[0]!==t.lastUsedAt?(w=nn(t.lastUsedAt),e[0]=t.lastUsedAt,e[1]=w):w=e[1];const y=w;let D;e[2]!==t?(D=Ge(t,t.name),e[2]=t,e[3]=D):D=e[3];const j=D,p=t.running&&t.driverSessionId!==null&&t.driverSessionId!==c,_=t.isDefault?r===t.name?"Default":"Host default":null,k=`${l?"Restore and switch to":"Switch to"} ${j}`,u=t.name===a?"true":void 0;let d;e[4]!==x||e[5]!==t?(d=()=>void x(t),e[4]=x,e[5]=t,e[6]=d):d=e[6];let g;e[7]!==t.running?(g=s.jsx(Wt,{running:t.running}),e[7]=t.running,e[8]=g):g=e[8];let f;e[9]!==j?(f=s.jsx("span",{className:"truncate",children:j}),e[9]=j,e[10]=f):f=e[10];const L=t.running?"running":"stopped";let N;e[11]!==L?(N=s.jsx("span",{className:"sr-only",children:L}),e[11]=L,e[12]=N):N=e[12];let A;e[13]!==_?(A=_&&s.jsx(Ye,{variant:"secondary",children:_}),e[13]=_,e[14]=A):A=e[14];let Y;e[15]!==t?(Y=He(t)==="watch"&&s.jsx(Ye,{variant:"outline",children:"View only"}),e[15]=t,e[16]=Y):Y=e[16];let b;e[17]!==y?(b=y&&s.jsx("span",{className:"ml-auto shrink-0 text-xs font-normal text-muted-foreground",children:y}),e[17]=y,e[18]=b):b=e[18];let P;e[19]!==A||e[20]!==Y||e[21]!==b||e[22]!==f||e[23]!==N?(P=s.jsxs("span",{className:"flex w-full min-w-0 items-center gap-1.5",children:[f,N,A,Y,b]}),e[19]=A,e[20]=Y,e[21]=b,e[22]=f,e[23]=N,e[24]=P):P=e[24];let $;e[25]!==p?($=p&&s.jsx("span",{className:"max-w-full truncate text-xs font-normal text-muted-foreground",children:"driven by another session"}),e[25]=p,e[26]=$):$=e[26];let M;e[27]!==P||e[28]!==$?(M=s.jsxs("span",{className:"flex min-w-0 flex-1 flex-col items-start gap-0.5",children:[P,$]}),e[27]=P,e[28]=$,e[29]=M):M=e[29];let z;e[30]!==a||e[31]!==t.name?(z=t.name===a&&s.jsx(dt,{"data-icon":"inline-end"}),e[30]=a,e[31]=t.name,e[32]=z):z=e[32];let v;e[33]!==l?(v=l&&s.jsx(vs,{"data-icon":"inline-end"}),e[33]=l,e[34]=v):v=e[34];let E;e[35]!==m||e[36]!==M||e[37]!==z||e[38]!==v||e[39]!==k||e[40]!==u||e[41]!==d||e[42]!==g?(E=s.jsxs(Q,{variant:"ghost",className:"h-auto min-h-10 min-w-0 flex-1 justify-start px-2 py-2","aria-label":k,"aria-current":u,disabled:m,onClick:d,children:[g,M,z,v]}),e[35]=m,e[36]=M,e[37]=z,e[38]=v,e[39]=k,e[40]=u,e[41]=d,e[42]=g,e[43]=E):E=e[43];let C;e[44]!==l||e[45]!==m||e[46]!==r||e[47]!==h||e[48]!==t?(C=!l&&!t.isDefault&&t.name!==r&&!t.running&&He(t)==="own"&&s.jsx(Q,{variant:"ghost",size:"icon-sm","aria-label":`Archive ${t.name}`,title:`Archive ${t.name}`,disabled:m,onClick:()=>void h(t.name),children:s.jsx(Gt,{"data-icon":"inline-start"})}),e[44]=l,e[45]=m,e[46]=r,e[47]=h,e[48]=t,e[49]=C):C=e[49];let U;return e[50]!==E||e[51]!==C?(U=s.jsxs("li",{className:"group flex items-center gap-1 rounded-md",children:[E,C]}),e[50]=E,e[51]=C,e[52]=U):U=e[52],U}const an=/^[a-z0-9][a-z0-9_-]{0,39}$/,cn="Lowercase letters, numbers, - and _, starting with a letter or number (40 max).",un=o.memo(function(e){const t=ge.c(112),{sessions:l,selected:r,home:a,currentSessionId:c,followAgent:m,busy:x,onSelect:h,onToggleFollow:w,onOpenSkill:y,onCreate:D,onRemove:j,onStop:p,onSetArchived:_,onShowDefault:k,onClose:u}=e,d=x===void 0?!1:x,g=o.useId(),f=o.useId(),[L,N]=o.useState(!1),[A,Y]=o.useState(""),[b,P]=o.useState(""),[$,M]=o.useState(null),[z,v]=o.useState(!1),[E,C]=o.useState(null),U=r===a;let F,V;t[0]!==r||t[1]!==l?(F=l.find(se=>se.name===r)??null,V=He(F),t[0]=r,t[1]=l,t[2]=F,t[3]=V):(F=t[2],V=t[3]);const K=V;let R;if(t[4]!==a||t[5]!==l){let se;t[7]!==a?(se=Pe=>Pe.mine&&Pe.name===a,t[7]=a,t[8]=se):se=t[8],R=l.some(se),t[4]=a,t[5]=l,t[6]=R}else R=t[6];const B=R,O=!U&&!(F!=null&&F.isDefault)&&K!=="watch",q=!U&&!(F!=null&&F.isDefault)&&K==="own";let H,X;t[9]!==A?(X=A.trim(),H=X.length>0&&!an.test(X),t[9]=A,t[10]=H,t[11]=X):(H=t[10],X=t[11]);const ne=H,le=ne?cn:$,J=X.length>0&&!ne&&!z;let ee;t[12]===Symbol.for("react.memo_cache_sentinel")?(ee=function(){Y(""),P(""),M(null),v(!1),N(!0)},t[12]=ee):ee=t[12];const Se=ee;let ve;t[13]!==J||t[14]!==b||t[15]!==D||t[16]!==h||t[17]!==X?(ve=async function(){if(!J)return;v(!0);const Pe=await D(X,b.trim());if(v(!1),!Pe.ok){M(Pe.error);return}N(!1),h(X)},t[13]=J,t[14]=b,t[15]=D,t[16]=h,t[17]=X,t[18]=ve):ve=t[18];const ye=ve,Ne=!U&&"border-amber-500/40 bg-amber-500/10";let we;t[19]!==Ne?(we=_e("@container/browser-bar flex h-10 shrink-0 items-center gap-2 border-b px-2",Ne),t[19]=Ne,t[20]=we):we=t[20];let he;t[21]!==d||t[22]!==q||t[23]!==O||t[24]!==y||t[25]!==p||t[26]!==r||t[27]!==(F==null?void 0:F.running)?(he=se=>s.jsxs(s.Fragment,{children:[s.jsxs(Q,{variant:"outline",size:"sm",disabled:d,onClick:()=>{se(),Se()},children:[s.jsx(Cs,{"data-icon":"inline-start"}),"New browser…"]}),s.jsxs("div",{className:"flex items-center gap-1",children:[s.jsxs(Q,{variant:"ghost",size:"xs",onClick:()=>{se(),y()},children:[s.jsx(ft,{"data-icon":"inline-start"}),"Agent skill…"]}),O&&s.jsxs(Q,{variant:"ghost",size:"xs",disabled:d||!(F!=null&&F.running),onClick:()=>{se(),p(r)},children:[s.jsx(Ns,{"data-icon":"inline-start"}),"Stop"]}),q&&s.jsxs(Q,{variant:"ghost",size:"xs",disabled:d,onClick:()=>{se(),C(r)},children:[s.jsx(bt,{"data-icon":"inline-start"}),"Delete…"]})]})]}),t[21]=d,t[22]=q,t[23]=O,t[24]=y,t[25]=p,t[26]=r,t[27]=F==null?void 0:F.running,t[28]=he):he=t[28];let xe;t[29]!==d||t[30]!==c||t[31]!==a||t[32]!==h||t[33]!==_||t[34]!==r||t[35]!==l||t[36]!==he?(xe=s.jsx(ln,{sessions:l,selected:r,home:a,currentSessionId:c,busy:d,onSelect:h,onSetArchived:_,children:he}),t[29]=d,t[30]=c,t[31]=a,t[32]=h,t[33]=_,t[34]=r,t[35]=l,t[36]=he,t[37]=xe):xe=t[37];let be;t[38]===Symbol.for("react.memo_cache_sentinel")?(be=s.jsx("span",{className:"flex-1"}),t[38]=be):be=t[38];let re;t[39]!==K?(re=K==="watch"&&s.jsxs(Ye,{variant:"outline",title:"Only someone who can interact with the session driving it can use it",children:[s.jsx(Es,{"data-icon":"inline-start"}),"View only"]}),t[39]=K,t[40]=re):re=t[40];let pe;t[41]!==B||t[42]!==U||t[43]!==k?(pe=!U&&s.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[s.jsxs("span",{role:"status",className:"flex min-w-0 items-center gap-1.5 text-xs font-medium text-amber-700 dark:text-amber-300",children:[s.jsx(ut,{"aria-hidden":!0,className:"size-3.5 shrink-0"}),s.jsx("span",{className:"sr-only @sm/browser-bar:not-sr-only @sm/browser-bar:whitespace-nowrap",children:B?"Not your browser":"Not the default browser"})]}),s.jsx(Q,{variant:"outline",size:"xs",onClick:k,children:B?"Show yours":"Show default"})]}),t[41]=B,t[42]=U,t[43]=k,t[44]=pe):pe=t[44];let Z;t[45]!==w?(Z=se=>w(se),t[45]=w,t[46]=Z):Z=t[46];let oe;t[47]!==m||t[48]!==Z?(oe=s.jsx(ls,{size:"sm","aria-label":"Follow agent",pressed:m,onPressedChange:Z,className:"text-muted-foreground data-pressed:text-foreground"}),t[47]=m,t[48]=Z,t[49]=oe):oe=t[49];let fe,je;t[50]===Symbol.for("react.memo_cache_sentinel")?(fe=s.jsx(Ts,{"data-icon":"inline-start"}),je=s.jsx("span",{className:"hidden @md/browser-bar:inline",children:"Follow"}),t[50]=fe,t[51]=je):(fe=t[50],je=t[51]);let ae;t[52]!==oe?(ae=s.jsxs(It,{render:oe,children:[fe,je]}),t[52]=oe,t[53]=ae):ae=t[53];let me;t[54]===Symbol.for("react.memo_cache_sentinel")?(me=s.jsx(Lt,{children:"Switch to whichever browser this session’s agent uses"}),t[54]=me):me=t[54];let te;t[55]!==ae?(te=s.jsxs(Bt,{children:[ae,me]}),t[55]=ae,t[56]=te):te=t[56];let de;t[57]===Symbol.for("react.memo_cache_sentinel")?(de=s.jsx(Ze,{"data-icon":"inline-start"}),t[57]=de):de=t[57];let ie;t[58]!==u?(ie=s.jsx(Q,{variant:"ghost",size:"icon-sm","aria-label":"Close browser panel",onClick:u,children:de}),t[58]=u,t[59]=ie):ie=t[59];let I;t[60]!==ye?(I=se=>{se.preventDefault(),ye()},t[60]=ye,t[61]=I):I=t[61];let S;t[62]===Symbol.for("react.memo_cache_sentinel")?(S=s.jsxs(Ft,{children:[s.jsx(Pt,{children:"New browser"}),s.jsx($t,{children:"A named browser keeps its own cookies and logins, and stays out of the default one."})]}),t[62]=S):S=t[62];const ce=!!le;let ue;t[63]!==g?(ue=s.jsx(xt,{htmlFor:g,children:"Name"}),t[63]=g,t[64]=ue):ue=t[64];const Ae=!!le;let G;t[65]===Symbol.for("react.memo_cache_sentinel")?(G=se=>{Y(se.target.value),M(null)},t[65]=G):G=t[65];let i;t[66]!==g||t[67]!==A||t[68]!==Ae?(i=s.jsx(Ke,{id:g,autoFocus:!0,autoComplete:"off",spellCheck:!1,placeholder:"shop","aria-invalid":Ae,value:A,onChange:G}),t[66]=g,t[67]=A,t[68]=Ae,t[69]=i):i=t[69];let T;t[70]!==le?(T=s.jsx(rs,{children:le}),t[70]=le,t[71]=T):T=t[71];let W;t[72]!==ce||t[73]!==ue||t[74]!==i||t[75]!==T?(W=s.jsxs(pt,{"data-invalid":ce,children:[ue,i,T]}),t[72]=ce,t[73]=ue,t[74]=i,t[75]=T,t[76]=W):W=t[76];let ke;t[77]===Symbol.for("react.memo_cache_sentinel")?(ke=s.jsx("span",{className:"text-muted-foreground/60",children:"(optional)"}),t[77]=ke):ke=t[77];let Ce;t[78]!==f?(Ce=s.jsxs(xt,{htmlFor:f,children:["Note ",ke]}),t[78]=f,t[79]=Ce):Ce=t[79];let De;t[80]===Symbol.for("react.memo_cache_sentinel")?(De=se=>P(se.target.value),t[80]=De):De=t[80];let Te;t[81]!==b||t[82]!==f?(Te=s.jsx(Ke,{id:f,autoComplete:"off",placeholder:"What this browser is signed in to",value:b,onChange:De}),t[81]=b,t[82]=f,t[83]=Te):Te=t[83];let Ee;t[84]!==Ce||t[85]!==Te?(Ee=s.jsxs(pt,{children:[Ce,Te]}),t[84]=Ce,t[85]=Te,t[86]=Ee):Ee=t[86];let Oe;t[87]!==W||t[88]!==Ee?(Oe=s.jsxs(os,{className:"gap-4",children:[W,Ee]}),t[87]=W,t[88]=Ee,t[89]=Oe):Oe=t[89];let ze;t[90]===Symbol.for("react.memo_cache_sentinel")?(ze=s.jsx(Mt,{render:s.jsx(Q,{type:"button",variant:"outline"}),children:"Cancel"}),t[90]=ze):ze=t[90];const Qe=!J;let Ie;t[91]!==Qe?(Ie=s.jsxs(zt,{children:[ze,s.jsx(Q,{type:"submit",disabled:Qe,children:"Create browser"})]}),t[91]=Qe,t[92]=Ie):Ie=t[92];let Le;t[93]!==I||t[94]!==Oe||t[95]!==Ie?(Le=s.jsx(Ut,{className:"sm:max-w-sm",children:s.jsxs("form",{className:"flex flex-col gap-4",onSubmit:I,children:[S,Oe,Ie]})}),t[93]=I,t[94]=Oe,t[95]=Ie,t[96]=Le):Le=t[96];let Be;t[97]!==L||t[98]!==Le?(Be=s.jsx(Kt,{open:L,onOpenChange:N,children:Le}),t[97]=L,t[98]=Le,t[99]=Be):Be=t[99];let Fe;t[100]!==E||t[101]!==j?(Fe=E!==null&&s.jsx(as,{open:!0,onOpenChange:se=>{se||C(null)},children:s.jsxs(is,{size:"sm",children:[s.jsxs(cs,{children:[s.jsx(us,{className:"bg-destructive/10 text-destructive",children:s.jsx(bt,{})}),s.jsxs(ds,{children:["Delete ",E,"?"]}),s.jsx(fs,{children:"Its profile goes with it, so everything signed in there is signed out. Other browsers are untouched."})]}),s.jsxs(ms,{children:[s.jsx(hs,{size:"sm",children:"Cancel"}),s.jsx(xs,{variant:"destructive",size:"sm",onClick:()=>{j(E),C(null)},children:"Delete browser"})]})]})}),t[100]=E,t[101]=j,t[102]=Fe):Fe=t[102];let Ue;return t[103]!==xe||t[104]!==re||t[105]!==pe||t[106]!==te||t[107]!==ie||t[108]!==Be||t[109]!==Fe||t[110]!==we?(Ue=s.jsxs("div",{className:we,children:[xe,be,re,pe,te,ie,Be,Fe]}),t[103]=xe,t[104]=re,t[105]=pe,t[106]=te,t[107]=ie,t[108]=Be,t[109]=Fe,t[110]=we,t[111]=Ue):Ue=t[111],Ue});function dn(n){const e=ge.c(36),{open:t,onOpenChange:l,readTargets:r,install:a}=n,[c,m]=o.useState(null),[x,h]=o.useState(null),[w,y]=o.useState(null);let D;e[0]!==r?(D=async()=>{const C=await r();C.ok?(m(C.targets),h(null)):h(C.error)},e[0]=r,e[1]=D):D=e[1];const j=D;let p,_;e[2]!==j||e[3]!==t?(p=()=>{t&&(h(null),j())},_=[t,j],e[2]=j,e[3]=t,e[4]=p,e[5]=_):(p=e[4],_=e[5]),o.useEffect(p,_);let k;e[6]!==a||e[7]!==j?(k=async function(U){y(U);const F=await a(U);y(null),F.ok?await j():h(F.error)},e[6]=a,e[7]=j,e[8]=k):k=e[8];const u=k;let d;e[9]!==c?(d=(c==null?void 0:c.some(fn))??!1,e[9]=c,e[10]=d):d=e[10];const g=d;let f;e[11]===Symbol.for("react.memo_cache_sentinel")?(f=s.jsx(Pt,{children:"Agent skill"}),e[11]=f):f=e[11];let L;e[12]===Symbol.for("react.memo_cache_sentinel")?(L=s.jsxs(Ft,{children:[f,s.jsxs($t,{children:["The skill teaches an agent how Cogpit’s browsers work: when to use a named one, when to keep to a throwaway, and that this panel is watching. Install it for agents you run outside Cogpit — it writes a"," ",s.jsx("code",{className:"font-mono",children:"SKILL.md"})," into that CLI’s configuration directory in your home folder."]})]}),e[12]=L):L=e[12];let N;e[13]!==x?(N=x&&s.jsx("p",{role:"alert",className:"text-sm text-destructive",children:x}),e[13]=x,e[14]=N):N=e[14];let A;e[15]!==w||e[16]!==u||e[17]!==c?(A=c===null?s.jsxs("div",{role:"status",className:"flex items-center gap-2 py-4 text-sm text-muted-foreground",children:[s.jsx(it,{}),"Reading where it is installed…"]}):s.jsx("ul",{className:"flex flex-col gap-2",children:c.map(C=>s.jsxs("li",{className:"flex items-center gap-3 rounded-md border p-2.5",children:[s.jsxs("span",{className:"flex min-w-0 flex-1 flex-col",children:[s.jsx("span",{className:"truncate text-sm font-medium",children:C.label}),s.jsx("span",{className:"truncate font-mono text-xs text-muted-foreground",children:C.configRoot}),C.automatic&&s.jsx("span",{className:"truncate text-xs text-muted-foreground",children:"Already automatic in the sessions Cogpit starts"})]}),C.installed?s.jsxs("span",{className:"flex shrink-0 items-center gap-1 text-xs text-muted-foreground",children:[s.jsx(dt,{"aria-hidden":!0,className:"size-3.5 text-emerald-500"}),"Installed"]}):s.jsx(Q,{size:"xs",variant:"outline","aria-label":`Install for ${C.label}`,disabled:w!==null,onClick:()=>void u(C.kind),children:"Install"})]},C.kind))}),e[15]=w,e[16]=u,e[17]=c,e[18]=A):A=e[18];const Y=!g||w!==null;let b;e[19]!==u?(b=()=>void u(_s),e[19]=u,e[20]=b):b=e[20];let P;e[21]===Symbol.for("react.memo_cache_sentinel")?(P=s.jsx(ft,{"data-icon":"inline-start"}),e[21]=P):P=e[21];let $;e[22]!==Y||e[23]!==b?($=s.jsxs(Q,{variant:"outline",disabled:Y,onClick:b,children:[P,"Install for all"]}),e[22]=Y,e[23]=b,e[24]=$):$=e[24];let M;e[25]===Symbol.for("react.memo_cache_sentinel")?(M=s.jsx(Mt,{render:s.jsx(Q,{type:"button"}),children:"Done"}),e[25]=M):M=e[25];let z;e[26]!==$?(z=s.jsxs(zt,{children:[$,M]}),e[26]=$,e[27]=z):z=e[27];let v;e[28]!==z||e[29]!==N||e[30]!==A?(v=s.jsxs(Ut,{className:"sm:max-w-md",children:[L,N,A,z]}),e[28]=z,e[29]=N,e[30]=A,e[31]=v):v=e[31];let E;return e[32]!==l||e[33]!==t||e[34]!==v?(E=s.jsx(Kt,{open:t,onOpenChange:l,children:v}),e[32]=l,e[33]=t,e[34]=v,e[35]=E):E=e[35],E}function fn(n){return!n.installed}const mn={x:0,y:0,width:0,height:0,scale:0};function hn(n,e){if(n.width<=0||n.height<=0||e.width<=0||e.height<=0)return mn;const t=Math.min(1,n.width/e.width,n.height/e.height),l=e.width*t,r=e.height*t;return{x:Math.round((n.width-l)/2),y:Math.round((n.height-r)/2),width:l,height:r,scale:t}}function Ct(n,e,t,l,r={}){if(l.scale<=0||l.width<=0||l.height<=0)return null;const a=n-t.left-l.x,c=e-t.top-l.y;return!(a>=0&&c>=0&&a<=l.width&&c<=l.height)&&!r.clamp?null:{x:Nt(a/l.scale,l.width/l.scale),y:Nt(c/l.scale,l.height/l.scale)}}function Nt(n,e){return Math.min(Math.max(n,0),e)}const xn=1,pn=2,gn=4,wn=8;function Re(n){return(n.altKey?xn:0)|(n.ctrlKey?pn:0)|(n.metaKey?gn:0)|(n.shiftKey?wn:0)}const bn=["left","middle","right"];function Et(n){return bn[n]??"left"}const yn=150,Tt=2,jn=500,Dt=5,Sn=1,kn=2,vn=16,Cn="Keyboard captured · Esc to release",Nn=new Set(["F5","F11","F12"]),En=new Set(["i","j","c"]);function _t(n){return Nn.has(n.key)||n.metaKey?!0:n.ctrlKey&&n.shiftKey&&En.has(n.key.toLowerCase())}function Tn(n){if(!(n.ctrlKey||n.metaKey))return n.key.length===1?n.key:n.key==="Enter"?"\r":void 0}function At(n,e,t){return e===Sn?n*vn:e===kn?n*t:n}function Dn(n,e,t){try{n.drawImage(e,t.x,t.y,t.width,t.height)}catch{}}function _n(n){const e=ge.c(82),{frame:t,send:l,onSizeChange:r,readOnly:a,className:c}=n,m=a===void 0?!1:a,x=o.useRef(null),h=o.useRef(null),w=o.useRef(null),y=o.useRef(null),D=o.useRef(!1);let j;e[0]===Symbol.for("react.memo_cache_sentinel")?(j={count:0,at:0,x:0,y:0,button:-1},e[0]=j):j=e[0];const p=o.useRef(j);let _;e[1]===Symbol.for("react.memo_cache_sentinel")?(_=new Map,e[1]=_):_=e[1];const k=o.useRef(_);let u;e[2]===Symbol.for("react.memo_cache_sentinel")?(u={width:0,height:0,dpr:1},e[2]=u):u=e[2];const[d,g]=o.useState(u),[f,L]=o.useState(!1),N=t?t.header.deviceWidth:0,A=t?t.header.deviceHeight:0;let Y;e[3]!==A||e[4]!==N||e[5]!==d?(Y=hn(d,{width:N,height:A}),e[3]=A,e[4]=N,e[5]=d,e[6]=Y):Y=e[6];const b=Y,P=o.useRef(r);let $,M;e[7]!==r?($=()=>{P.current=r},M=[r],e[7]=r,e[8]=$,e[9]=M):($=e[8],M=e[9]),o.useEffect($,M);let z,v;e[10]===Symbol.for("react.memo_cache_sentinel")?(z=()=>{const G=x.current;if(!G)return;let i=null;const T=()=>{const ke=G.getBoundingClientRect(),Ce=Math.round(ke.width),De=Math.round(ke.height),Te=window.devicePixelRatio||1;g(Ee=>Ee.width===Ce&&Ee.height===De&&Ee.dpr===Te?Ee:{width:Ce,height:De,dpr:Te}),i&&clearTimeout(i),i=setTimeout(()=>{i=null,Ce>0&&De>0&&P.current(Ce,De,Te)},yn)};T();const W=new ResizeObserver(T);return W.observe(G),()=>{W.disconnect(),i&&clearTimeout(i)}},v=[],e[10]=z,e[11]=v):(z=e[10],v=e[11]),o.useEffect(z,v);let E,C;e[12]!==b||e[13]!==t||e[14]!==d?(E=()=>{const G=h.current,i=G==null?void 0:G.getContext("2d");if(!G||!i)return;const T=Math.round(d.width*d.dpr),W=Math.round(d.height*d.dpr);G.width!==T&&(G.width=T),G.height!==W&&(G.height=W),i.setTransform(d.dpr,0,0,d.dpr,0,0),i.clearRect(0,0,d.width,d.height),!(!t||b.width<=0||b.height<=0)&&Dn(i,t.bitmap,b)},C=[t,b,d],e[12]=b,e[13]=t,e[14]=d,e[15]=E,e[16]=C):(E=e[15],C=e[16]),o.useEffect(E,C);let U,F;e[17]!==t?(U=()=>()=>at(t),F=[t],e[17]=t,e[18]=U,e[19]=F):(U=e[18],F=e[19]),o.useEffect(U,F);let V;e[20]!==b?(V=function(i,T,W){const ke=h.current;return ke?Ct(i,T,ke.getBoundingClientRect(),b,{clamp:W}):null},e[20]=b,e[21]=V):V=e[21];const K=V;let R;e[22]!==l?(R=function(i,T,W,ke,Ce){l({type:"mouse",event:i,x:T.x,y:T.y,button:W,clickCount:ke,modifiers:Ce})},e[22]=l,e[23]=R):R=e[23];const B=R;let O;e[24]===Symbol.for("react.memo_cache_sentinel")?(O=function(i){const T=p.current,W=Date.now(),ke=i.button===T.button&&W-T.at<jn&&Math.abs(i.clientX-T.x)<=Dt&&Math.abs(i.clientY-T.y)<=Dt;return p.current={count:ke?T.count+1:1,at:W,x:i.clientX,y:i.clientY,button:i.button},p.current.count},e[24]=O):O=e[24];const q=O;let H;e[25]!==K||e[26]!==B?(H=function(){const i=w.current;if(w.current=null,!i)return;const T=K(i.clientX,i.clientY,D.current);T&&B("move",T,"none",0,i.modifiers)},e[25]=K,e[26]=B,e[27]=H):H=e[27];const X=H;let ne;e[28]!==X?(ne=function(){y.current!==null&&(cancelAnimationFrame(y.current),y.current=null),X()},e[28]=X,e[29]=ne):ne=e[29];const le=ne;let J;e[30]!==K||e[31]!==B?(J=function(i){if(i.currentTarget.focus(),i.button===Tt)return;const T=K(i.clientX,i.clientY,!1);T&&(i.currentTarget.setPointerCapture(i.pointerId),D.current=!0,B("down",T,Et(i.button),q(i),Re(i)))},e[30]=K,e[31]=B,e[32]=J):J=e[32];const ee=J;let Se;e[33]!==X?(Se=function(i){w.current={clientX:i.clientX,clientY:i.clientY,modifiers:Re(i)},y.current===null&&(y.current=requestAnimationFrame(()=>{y.current=null,X()}))},e[33]=X,e[34]=Se):Se=e[34];const ve=Se;let ye;e[35]!==le||e[36]!==K||e[37]!==B?(ye=function(i){le();const T=D.current;if(D.current=!1,i.currentTarget.hasPointerCapture(i.pointerId)&&i.currentTarget.releasePointerCapture(i.pointerId),i.button===Tt)return;const W=K(i.clientX,i.clientY,T);W&&B("up",W,Et(i.button),p.current.count,Re(i))},e[35]=le,e[36]=K,e[37]=B,e[38]=ye):ye=e[38];const Ne=ye;let we;e[39]!==K||e[40]!==B?(we=function(i){i.preventDefault();const T=K(i.clientX,i.clientY,!1);if(!T)return;const W=Re(i);B("down",T,"right",1,W),B("up",T,"right",1,W)},e[39]=K,e[40]=B,e[41]=we):we=e[41];const he=we;let xe;e[42]!==l?(xe=function(i){if(i.key==="Escape"){i.currentTarget.blur();return}_t(i)||i.preventDefault();const T={type:"key",event:"down",key:i.key,code:i.code,modifiers:Re(i)},W=Tn(i);W!==void 0&&(T.text=W),k.current.set(i.code,i.key),l(T)},e[42]=l,e[43]=xe):xe=e[43];const be=xe;let re;e[44]!==l?(re=function(i){i.key!=="Escape"&&(_t(i)||i.preventDefault(),k.current.delete(i.code),l({type:"key",event:"up",key:i.key,code:i.code,modifiers:Re(i)}))},e[44]=l,e[45]=re):re=e[45];const pe=re;let Z,oe;e[46]!==A||e[47]!==N||e[48]!==b||e[49]!==m||e[50]!==l?(Z=()=>{const G=h.current;if(!G||m)return;const i=T=>{T.preventDefault();const W=Ct(T.clientX,T.clientY,G.getBoundingClientRect(),b);W&&l({type:"wheel",x:W.x,y:W.y,deltaX:At(T.deltaX,T.deltaMode,N),deltaY:At(T.deltaY,T.deltaMode,A),modifiers:Re(T)})};return G.addEventListener("wheel",i,{passive:!1}),()=>G.removeEventListener("wheel",i)},oe=[l,b,N,A,m],e[46]=A,e[47]=N,e[48]=b,e[49]=m,e[50]=l,e[51]=Z,e[52]=oe):(Z=e[51],oe=e[52]),o.useEffect(Z,oe);let fe,je;e[53]!==f||e[54]!==l?(fe=()=>{if(!f)return;const G=i=>{var W;const T=(W=i.clipboardData)==null?void 0:W.getData("text/plain");T&&(i.preventDefault(),l({type:"paste",text:T}))};return document.addEventListener("paste",G),()=>document.removeEventListener("paste",G)},je=[f,l],e[53]=f,e[54]=l,e[55]=fe,e[56]=je):(fe=e[55],je=e[56]),o.useEffect(fe,je);let ae,me;e[57]===Symbol.for("react.memo_cache_sentinel")?(ae=()=>()=>{y.current!==null&&cancelAnimationFrame(y.current)},me=[],e[57]=ae,e[58]=me):(ae=e[57],me=e[58]),o.useEffect(ae,me);let te;e[59]!==l?(te=()=>{for(const[G,i]of k.current)l({type:"key",event:"up",key:i,code:G,modifiers:0});k.current.clear()},e[59]=l,e[60]=te):te=e[60];const de=te;let ie,I;e[61]!==de?(ie=()=>de,I=[de],e[61]=de,e[62]=ie,e[63]=I):(ie=e[62],I=e[63]),o.useEffect(ie,I);let S;e[64]!==c?(S=_e("relative min-h-0 min-w-0 overflow-hidden bg-muted/30",c),e[64]=c,e[65]=S):S=e[65];let ce;e[66]!==f||e[67]!==he||e[68]!==be||e[69]!==pe||e[70]!==ee||e[71]!==ve||e[72]!==Ne||e[73]!==m||e[74]!==de?(ce=m?s.jsx("canvas",{ref:h,role:"img","aria-label":"Browser viewport, view only",className:"block size-full cursor-default touch-none select-none"}):s.jsx("canvas",{ref:h,role:"application","aria-label":"Browser viewport",tabIndex:0,className:_e("block size-full cursor-default touch-none select-none outline-none",f&&"ring-2 ring-ring ring-inset"),onFocus:()=>L(!0),onBlur:()=>{L(!1),de()},onPointerDown:ee,onPointerMove:ve,onPointerUp:Ne,onPointerCancel:Ne,onContextMenu:he,onKeyDown:be,onKeyUp:pe}),e[66]=f,e[67]=he,e[68]=be,e[69]=pe,e[70]=ee,e[71]=ve,e[72]=Ne,e[73]=m,e[74]=de,e[75]=ce):ce=e[75];let ue;e[76]!==f?(ue=f&&s.jsx("div",{className:"pointer-events-none absolute inset-x-0 bottom-2 flex justify-center",children:s.jsx("span",{className:"rounded-full bg-popover px-2 py-0.5 text-[10px] text-muted-foreground shadow-xs",children:Cn})}),e[76]=f,e[77]=ue):ue=e[77];let Ae;return e[78]!==S||e[79]!==ce||e[80]!==ue?(Ae=s.jsxs("div",{ref:x,className:S,children:[ce,ue]}),e[78]=S,e[79]=ce,e[80]=ue,e[81]=Ae):Ae=e[81],Ae}const An="browser-panel-session",Rn="browser-panel-follow",On=1e4,Rt=3e3,In=[];function Yn({context:n,active:e,closePanel:t}){var ie,I;const[l,r]=gt(wt(An),ct),[a,c]=gt(wt(Rn),!0),[m,x]=o.useState(!1),[h,w]=o.useState(null),[y,D]=o.useState(null),[j,p]=o.useState(!1),_=o.useRef(0),{status:k,error:u,refresh:d,create:g,remove:f,stop:L,setArchived:N,readSkillTargets:A,installSkill:Y}=As(e),b=(k==null?void 0:k.sessions)??In,P=en(b),$=k!==null&&b.length>0,M=k===null||b.some(S=>S.name===l)?l:P,z=o.useCallback(S=>void Ot(S),[]),v=zs(e&&$?M:null,z),E=((ie=n.session)==null?void 0:ie.sessionId)??null,C=o.useMemo(()=>ps(n.session),[n.session]),U=sn((C==null?void 0:C.session)??null,b,E),F=b.some(S=>S.name===U&&!S.archived);o.useEffect(()=>{!a||U===null||U===M||!F||Date.now()-_.current<On||r(U)},[a,U,F,M,r]);const V=o.useCallback(S=>{_.current=Date.now(),r(S)},[r]),K=o.useCallback(async S=>{x(!0);try{const ce=await S();return w(ce.ok?null:ce.error),ce}finally{x(!1)}},[]),{send:R}=v,B=o.useCallback((S,ce,ue)=>{R({type:"viewport",width:S,height:ce,dpr:ue})},[R]),O=o.useCallback(S=>{S&&(_.current=0),c(S)},[c]),q=o.useCallback(()=>V(P),[V,P]),H=o.useCallback(()=>p(!0),[]),X=o.useCallback(S=>{V(P),K(()=>f(S))},[V,P,K,f]),ne=o.useCallback(S=>void K(()=>L(S)),[K,L]),le=o.useCallback(async(S,ce)=>{const ue=await K(()=>N(S,ce));return ue.ok&&ce&&S===M&&V(P),ue},[K,N,M,V,P]),J=o.useCallback(S=>R({type:"navigate",url:S}),[R]),ee=o.useCallback(()=>R({type:"back"}),[R]),Se=o.useCallback(()=>R({type:"forward"}),[R]),ve=o.useCallback(()=>R({type:"reload"}),[R]),ye=o.useCallback(S=>R({type:"follow",targetId:S}),[R]),Ne=o.useCallback(S=>R({type:"close-tab",targetId:S}),[R]),we=o.useCallback(S=>R({type:"launch",url:S}),[R]),he=Ln(v.lastFrameAt),xe=((I=v.state)==null?void 0:I.state)??null,be=(k==null?void 0:k.installed)===!1||xe==="not-installed",re=!be&&xe==="live",pe=!be&&xe==="stopped",Z=b.find(S=>S.name===M)??null,oe=Ge(Z,M),fe=tn(Z),je=(Z==null?void 0:Z.mine)===!0&&!Z.running&&Z.lastUsedAt===null,ae=re&&(v.status==="disconnected"||v.status==="connecting"),me=k===null&&u!==null,te=v.error??h??(me?null:u),de=te!==null&&te!==y?te:null;return s.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[s.jsx(un,{sessions:b,selected:M,home:P,currentSessionId:E,followAgent:a,busy:m,onSelect:V,onToggleFollow:O,onOpenSkill:H,onCreate:g,onRemove:X,onStop:ne,onSetArchived:le,onShowDefault:q,onClose:t}),re&&s.jsx(qs,{page:v.page,tabs:v.tabs,followed:v.followed,status:ae?"offline":he,readOnly:!fe,onNavigate:J,onBack:ee,onForward:Se,onReload:ve,onFollow:ye,onCloseTab:Ne}),de&&s.jsx(Pn,{message:de,onDismiss:()=>{w(null),D(te)}}),s.jsxs("div",{className:"relative flex min-h-0 flex-1 flex-col",children:[me&&s.jsx(Ws,{message:u,onRetry:d}),be&&s.jsx(Gs,{onOpenSkill:H}),!be&&k!==null&&!$&&s.jsx(kt,{}),pe&&(je?s.jsx(kt,{onOpen:we}):s.jsx(Xs,{name:oe,lastUrl:(Z==null?void 0:Z.lastUrl)??null,onOpen:fe?we:void 0})),re&&s.jsxs(s.Fragment,{children:[s.jsx(_n,{className:"flex-1",frame:v.frame,send:R,onSizeChange:B,readOnly:!fe}),ae&&s.jsx(Fn,{}),s.jsx(Ys,{activity:C&&U===M?C:null})]}),!be&&!me&&(k===null||$)&&!pe&&!re&&s.jsxs("div",{role:"status",className:"flex flex-1 items-center justify-center gap-2 text-sm text-muted-foreground",children:[s.jsx(it,{}),"Connecting to ",oe,"…"]})]}),s.jsx(dn,{open:j,onOpenChange:p,readTargets:A,install:Y})]})}function Ln(n){const e=ge.c(5),[,t]=o.useState(0);let l;e[0]!==t||e[1]!==n?(l=()=>{if(n===null)return;const a=n+Rt-Date.now();if(a<=0)return;const c=setTimeout(()=>t(Bn),a);return()=>clearTimeout(c)},e[0]=t,e[1]=n,e[2]=l):l=e[2];let r;return e[3]!==n?(r=[n],e[3]=n,e[4]=r):r=e[4],o.useEffect(l,r),n===null?"idle":Date.now()-n<Rt?"live":"idle"}function Bn(n){return n+1}function Fn(){const n=ge.c(1);let e;return n[0]===Symbol.for("react.memo_cache_sentinel")?(e=s.jsx("div",{className:"pointer-events-none absolute inset-x-0 top-0 flex justify-center p-2",children:s.jsx("span",{role:"status",className:"rounded-full bg-popover px-2.5 py-0.5 text-[11px] text-muted-foreground shadow-xs",children:"Reconnecting…"})}),n[0]=e):e=n[0],e}function Pn(n){const e=ge.c(9),{message:t,onDismiss:l}=n;let r;e[0]===Symbol.for("react.memo_cache_sentinel")?(r=s.jsx(ut,{"aria-hidden":!0,className:"size-3.5 shrink-0"}),e[0]=r):r=e[0];let a;e[1]!==t?(a=s.jsx("span",{className:"min-w-0 flex-1 truncate",children:t}),e[1]=t,e[2]=a):a=e[2];let c;e[3]===Symbol.for("react.memo_cache_sentinel")?(c=s.jsx(Ze,{"data-icon":"inline-start"}),e[3]=c):c=e[3];let m;e[4]!==l?(m=s.jsx(Q,{variant:"ghost",size:"icon-xs","aria-label":"Dismiss",onClick:l,children:c}),e[4]=l,e[5]=m):m=e[5];let x;return e[6]!==a||e[7]!==m?(x=s.jsxs("div",{className:"flex shrink-0 items-center gap-2 border-b border-destructive/30 bg-destructive/10 px-2 py-1 text-xs text-destructive",children:[r,a,m]}),e[6]=a,e[7]=m,e[8]=x):x=e[8],x}export{Yn as BrowserPanel};
|