cogpit 3.5.2 → 3.5.4

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.
Files changed (37) hide show
  1. package/dist/cli-runtime.js +1917 -1515
  2. package/dist/instance-worker.js +21 -5
  3. package/dist/web/assets/{AutomationsPanel-B3zT5G5K.js → AutomationsPanel-DTiDsq54.js} +1 -1
  4. package/dist/web/assets/{CogpitBlock-d05YgSdQ.js → CogpitBlock-Hk57z10V.js} +16 -16
  5. package/dist/web/assets/{CommandPaletteHost-D8fk5Qkq.js → CommandPaletteHost-BYfieK7H.js} +1 -1
  6. package/dist/web/assets/{ConfigBrowser-BRsvua8m.js → ConfigBrowser-C77Ydij0.js} +1 -1
  7. package/dist/web/assets/CrewPanel-BzEJLKMd.js +1 -0
  8. package/dist/web/assets/{HighlightedEditor-clIIwmWB.js → HighlightedEditor-D1S-wotA.js} +2 -2
  9. package/dist/web/assets/{KeyboardShortcutsDialog-0VokzXOy.js → KeyboardShortcutsDialog-B_DSi5JO.js} +1 -1
  10. package/dist/web/assets/MissionHome-B3uYgylE.js +2 -0
  11. package/dist/web/assets/{MobileFileChanges-iLhOAdgx.js → MobileFileChanges-DovO__Ap.js} +1 -1
  12. package/dist/web/assets/PluginsDialog-o6ySRFLf.js +1 -0
  13. package/dist/web/assets/{PreviewPanel-DF4kUYpX.js → PreviewPanel-kD79kXYD.js} +1 -1
  14. package/dist/web/assets/{ProjectFilesPanel-D9_OzQi2.js → ProjectFilesPanel-CwEqOA2q.js} +4 -4
  15. package/dist/web/assets/{ProjectSwitcherModal-DMEEWm7Q.js → ProjectSwitcherModal-BnWbJWEX.js} +1 -1
  16. package/dist/web/assets/{TerminalOutput-CrGF3VWW.js → TerminalOutput-DsK-7nR8.js} +1 -1
  17. package/dist/web/assets/{ThemeSelectorModal-BLBet6sQ.js → ThemeSelectorModal-D5SBWDm5.js} +1 -1
  18. package/dist/web/assets/{WorkflowsPanel-DkXoYVsK.js → WorkflowsPanel-NU49178V.js} +1 -1
  19. package/dist/web/assets/WorktreePanel-DPk5b1Os.js +1 -0
  20. package/dist/web/assets/{edition-ui-CvFxsVfJ.js → edition-ui-7WkqSCbs.js} +1 -1
  21. package/dist/web/assets/index-Bg4A-xl7.js +510 -0
  22. package/dist/web/assets/index-BgZ8qUzM.js +3 -0
  23. package/dist/web/assets/{index-CAupRX51.js → index-C2tUYo8z.js} +1 -1
  24. package/dist/web/assets/{index-DueGSx7L.js → index-CevokSRq.js} +2 -2
  25. package/dist/web/assets/{index-DxZSG7e3.js → index-DIuobrPN.js} +2 -2
  26. package/dist/web/assets/index-DMO9bL9w.css +1 -0
  27. package/dist/web/assets/{session-parser.worker-Dv5Kch9n.js → session-parser.worker-DCsmYUeX.js} +22 -22
  28. package/dist/web/assets/{switch-BHG6oFbM.js → switch-DI9dp0Ya.js} +1 -1
  29. package/dist/web/assets/{vendor-ui-keo4oB2X.js → vendor-ui-Dc_kJXxz.js} +206 -196
  30. package/dist/web/index.html +3 -3
  31. package/package.json +1 -1
  32. package/dist/web/assets/CrewPanel-C1Yq8jMT.js +0 -1
  33. package/dist/web/assets/MissionHome-CNjhPZva.js +0 -2
  34. package/dist/web/assets/PluginsDialog-xM9uR8bB.js +0 -1
  35. package/dist/web/assets/WorktreePanel-DvFGKfAn.js +0 -1
  36. package/dist/web/assets/index-BvNyEUVG.js +0 -506
  37. package/dist/web/assets/index-D6HYPdiw.css +0 -1
@@ -0,0 +1,3 @@
1
+ var q=Object.defineProperty;var Q=(o,e,t)=>e in o?q(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var y=(o,e,t)=>Q(o,typeof e!="symbol"?e+"":e,t);import{cH as S,aZ as E,cI as L,cJ as U,cK as M,cL as I,cM as B,cN as F,cO as $,cP as Y,cQ as X,cR as G,cS as C,cT as ee,cU as te,cV as O,cW as D}from"./index-Bg4A-xl7.js";import"./vendor-react-gGw_S5I_.js";import"./vendor-ui-Dc_kJXxz.js";import"./vendor-markdown-BEJ8yVzA.js";const re=35e5,se=U({id:I().min(1),mediaType:F(["image/png","image/jpeg","image/gif","image/webp"]),data:I().min(1).max(re).regex(/^[A-Za-z0-9+/]*={0,2}$/).refine(o=>o.length%4===0),contextId:I().optional()}).strict(),oe=U({v:Y(1),text:I(),context:M(B()),attachments:M(se)}).strict();function T(o){const t=oe.parse(o);if(t.context.length){const n=X(t.context);if(n)throw new Error(n);const i=G(C(t));if(!i||i.context.length!==t.context.length||i.context.some((a,p)=>C({text:"",context:[a]})!==C({text:"",context:[t.context[p]]})))throw new Error("Invalid saved context");for(const a of t.context)if(a.kind==="browser"&&!t.attachments.some(p=>p.contextId===a.id))throw new Error("The saved capture is missing its image bytes. Reattach the capture or restore a backup.")}if(new Set(t.attachments.map(n=>n.id)).size!==t.attachments.length)throw new Error("Duplicate saved attachment");if(t.attachments.some(n=>n.contextId&&!t.context.some(i=>i.id===n.contextId)))throw new Error("A saved image has lost its context. Restore a backup or reattach it.");return structuredClone(t)}function ne(o,e){return JSON.stringify([E("composer-v1"),o??"",e])}const ae=U({v:Y(1),draft:B(),pendingUpload:$().optional(),entries:M(U({id:I(),kind:F(["stash","sending","refused","sent"]),savedAt:I(),draft:B(),createdTarget:I().optional()}).strict())}).strict(),K=new Map,ie=()=>({v:1,draft:structuredClone(L),entries:[]});class ce{constructor(e,t=()=>localStorage){y(this,"listeners",new Set);y(this,"snapshot",{record:ie(),error:null,corrupt:null});y(this,"getSnapshot",()=>this.snapshot);y(this,"subscribe",e=>(this.listeners.add(e),()=>{this.listeners.delete(e)}));y(this,"read",()=>{try{const e=this.storage().getItem(this.key);if(e===null)return;try{const t=ae.parse(JSON.parse(e)),n={v:1,pendingUpload:t.pendingUpload,draft:T(t.draft),entries:t.entries.map(i=>({...i,draft:T(i.draft)}))};this.publish({record:n,error:null,corrupt:null})}catch{this.publish({...this.snapshot,corrupt:e,error:"Saved drafts are damaged or contain expired attachment references. Download the backup before resetting storage; your current draft is kept."})}}catch{this.publish({...this.snapshot,error:"Draft storage is unavailable. Keep this tab open, retry storage or download a backup."})}});y(this,"retry",(e=()=>!0)=>this.snapshot.corrupt!==null||!this.write(this.snapshot.record)?!1:(this.snapshot.record.entries.forEach(t=>this.transferAccepted(t.id,e)),this.snapshot.error===null));y(this,"backup",()=>JSON.stringify({scope:this.key,...this.snapshot.record,...this.snapshot.corrupt!==null?{damagedStorage:this.snapshot.corrupt}:{}},null,2));y(this,"resetAfterBackup",()=>{const e=this.snapshot.record;return this.publish({...this.snapshot,corrupt:null}),this.write(e)});this.key=e,this.storage=t,this.read()}publish(e){this.snapshot=e,this.listeners.forEach(t=>t())}write(e){if(this.snapshot.corrupt!==null)return this.publish({...this.snapshot,record:e}),!1;try{return T(e.draft),e.entries.forEach(t=>T(t.draft)),this.storage().setItem(this.key,JSON.stringify(e)),this.publish({record:e,error:null,corrupt:null}),!0}catch(t){return this.publish({record:e,corrupt:null,error:`Draft was kept in this tab but could not be saved (${t instanceof Error&&t.name==="ZodError"?"invalid or oversized attachment":"storage denied, full, or invalid data"}). Retry or download a backup before leaving.`}),!1}}markUpload(e){return this.write({...this.snapshot.record,pendingUpload:e})}saveDraft(e){return JSON.stringify(e)===JSON.stringify(this.snapshot.record.draft)?this.snapshot.error===null:this.write({...this.snapshot.record,draft:structuredClone(e)})}save(e,t="stash"){if(S(e))return null;const n=crypto.randomUUID(),i=this.snapshot.record,a={id:n,kind:t,savedAt:new Date().toISOString(),draft:structuredClone(e)},p=this.write({...i,draft:structuredClone(L),entries:[...i.entries,a]});return p||this.publish({...this.snapshot,record:i}),p?n:null}copy(e){if(S(e))return null;const t=this.snapshot.record,n=crypto.randomUUID(),i={id:n,kind:"stash",savedAt:new Date().toISOString(),draft:structuredClone(e)};return this.write({...t,entries:[...t.entries,i]})?n:(this.publish({...this.snapshot,record:t}),null)}retainImport(e){const t={id:crypto.randomUUID(),kind:"stash",savedAt:new Date().toISOString(),draft:{v:1,text:e,context:[],attachments:[]}};return this.write({...this.snapshot.record,entries:[...this.snapshot.record.entries,t]})}created(e,t,n=()=>!0){const[i]=JSON.parse(this.key),a=JSON.stringify([i,t.cwd,JSON.stringify([t.dirName,t.sessionId])]),p=this.snapshot.record;this.write({...p,entries:p.entries.map(h=>h.id===e?{...h,createdTarget:a}:h)}),this.transferAccepted(e,n)}transferAccepted(e,t=()=>!0){const n=this.snapshot.record.entries.find(h=>h.id===e);if((n==null?void 0:n.kind)!=="sent"||!n.createdTarget||n.createdTarget===this.key)return;try{const[h,f]=JSON.parse(n.createdTarget);if(h!==JSON.parse(this.key)[0]||!t(f))throw new Error("Target is outside the current draft scope")}catch{this.publish({...this.snapshot,error:"Recall handoff is outside the enabled account or project scope. The original message is kept here."});return}const i=N(n.createdTarget),a={...n,createdTarget:void 0},p=i.getSnapshot().record;p.entries.some(h=>h.id===e)||i.write({...p,entries:[...p.entries,a]})?this.remove(e):this.publish({...this.snapshot,error:"The first prompt was sent, but recall could not be saved in the new session. Its complete journal is kept here; retry storage or download a backup."})}settle(e,t,n=!0,i=()=>!0){const a=this.snapshot.record,p=a.entries.find(h=>h.id===e);if(p)if(!t&&n&&S(a.draft))this.write({...a,draft:p.draft,entries:a.entries.filter(h=>h.id!==e)});else{const h=a.entries.map(w=>w.id===e?{...w,kind:t?"sent":"refused"}:w),f=h.filter(w=>w.kind==="sent").slice(0,-30);this.write({...a,entries:h.filter(w=>!f.includes(w))}),t&&this.transferAccepted(e,i)}}restore(e,t){const n=this.snapshot.record,i=n.entries.find(a=>a.id===e);if(!i||t==="replace"&&!S(n.draft))return null;try{const a=t==="merge"?de(n.draft,i.draft):T(i.draft),p=n.entries.filter(h=>h.id!==e||h.kind==="sent");return t==="swap"&&!S(n.draft)&&p.push({id:crypto.randomUUID(),kind:"stash",savedAt:new Date().toISOString(),draft:n.draft}),this.write({...n,draft:a,entries:p})?a:(this.publish({...this.snapshot,record:n}),null)}catch(a){return this.publish({...this.snapshot,error:a instanceof Error?a.message:"Cannot restore this prompt"}),null}}remove(e){const t=this.snapshot.record;return this.write({...t,entries:t.entries.filter(n=>n.id!==e)})?!0:(this.publish({...this.snapshot,record:t}),!1)}}function N(o){let e=K.get(o);return e||(e=new ce(o),K.set(o,e)),e}function de(o,e){const t=[...o.context],n=[...o.attachments];for(const i of e.context){const a=t.find(p=>p.id===i.id);if(a&&C({text:"",context:[a]})!==C({text:"",context:[i]}))throw new Error("Context changed since saving. Use Swap to preserve both versions.");a||t.push(i)}for(const i of e.attachments){const a=n.find(p=>p.id===i.id);if(a&&JSON.stringify(a)!==JSON.stringify(i))throw new Error("An attachment changed since saving. Use Swap to preserve both versions.");a||n.push(i)}return T({v:1,text:[o.text,e.text].filter(Boolean).join(`
2
+
3
+ `),context:t,attachments:n})}function pe(o,e,t,n,i,a){return(o.key==="ArrowUp"||o.key==="ArrowDown")&&!o.shiftKey&&!o.ctrlKey&&!o.metaKey&&!o.altKey&&!o.isComposing&&e===t&&(!i||t===n.text.length)&&!a&&(S(n)||i)}function m(o,e){throw Object.assign(new Error(e),{code:o})}const P=new TextEncoder;function V(o,e){let t=o.slice(0,Math.min(D.previewChars,e));for(;P.encode(t).length>e;)t=t.slice(0,-1);return t}function he(o){return{id:o.id,kind:o.kind,savedAt:o.savedAt,text:V(o.draft.text,2e3),textChars:o.draft.text.length,context:o.draft.context.slice(0,D.contextItems).map(e=>({kind:e.kind,label:V(e.kind==="file"?e.path:e.kind==="quote"?"Quoted message":e.kind==="browser"?e.title||"Browser capture":e.label||"Terminal",128)})),images:o.draft.attachments.slice(0,D.images).map(e=>({mediaType:e.mediaType,bytes:Math.floor(e.data.length*3/4)-(e.data.endsWith("==")?2:e.data.endsWith("=")?1:0)}))}}function le(o){const e=URL.createObjectURL(new Blob([o.backup()],{type:"application/json"})),t=document.createElement("a");t.href=e,t.download="cogpit-drafts-backup.json",t.click(),setTimeout(()=>URL.revokeObjectURL(e),1e3)}function ye(o){o.pluginId!=="cogpit.saved-drafts"&&m("CAPABILITY_UNAVAILABLE","This integration is reserved for Saved drafts"),o.signal.throwIfAborted();const e=E("composer-v1"),t=new Set,n=new Set,i=new Map,a=new Map,p=new Map;let h=!1,f=null;function w(){(h||o.signal.aborted||e!==E("composer-v1"))&&m("STALE_ACTIVATION","Saved drafts is no longer active for this account and device")}function A(r,s=!1){w();const c=O();c||m("CAPABILITY_UNAVAILABLE","Open a message composer to use Saved drafts");const d=c.snapshot();return o.inScope(d.scope.cwd)||m("CAPABILITY_UNAVAILABLE","Saved drafts is not enabled for this project"),(d.scope.key!==ne(d.scope.cwd,d.scope.identity)||r!==void 0&&r!==d.token)&&m("STALE_ACTIVATION","The composer changed. Refresh Saved drafts and try again"),s&&d.busy&&m("CONFLICT","Wait for the image upload or send to finish"),{composer:c,snapshot:d,store:R(d)}}function v(){var s;if(h||o.signal.aborted||e!==E("composer-v1"))return;const r=(s=O())==null?void 0:s.snapshot().token;if(r)for(const c of t)c(r)}function R(r){w(),o.inScope(r.scope.cwd)||m("CAPABILITY_UNAVAILABLE","Saved drafts is not enabled for this project");const s=N(r.scope.key);return i.has(s)||i.set(s,s.subscribe(v)),s}function _(r,s,c){const d=R(s),l=d.getSnapshot().record.draft;c&&S(s.draft)&&!S(l)&&!s.busy&&r.replace(l,s.token)||(d.saveDraft(s.draft),s.uploading?(n.add(s.scope.key),d.getSnapshot().record.pendingUpload||d.markUpload(!0)):n.delete(s.scope.key)&&d.markUpload(!1))}function j(r,s){const{composer:c,snapshot:d,store:l}=A(r,!0);l.saveDraft(d.draft);const u=s?l.save(d.draft):l.copy(d.draft);return u||m("CONFLICT",l.getSnapshot().error||"The composer is empty"),s&&!c.replace(L,r)&&(l.saveDraft(c.snapshot().draft),m("STALE_ACTIVATION","The draft changed; its saved copy was kept")),f=null,c.focus(),{id:u}}const z={"drafts.list"({cursor:r}){const{snapshot:s,store:c}=A(),d=c.getSnapshot(),l=[...d.record.entries].reverse();let u=0;if(r){const k=l.findIndex(b=>b.id===r);k<0&&m("STALE_ACTIVATION","The saved list changed. Refresh it"),u=k+1}const g={token:s.token,items:[],...d.error?{error:d.error.slice(0,512)}:{},corrupt:d.corrupt!==null,pendingUpload:!!d.record.pendingUpload};for(const k of l.slice(u,u+D.page)){const b=he(k);if(P.encode(JSON.stringify({...g,items:[...g.items,b]})).length>48e3)break;g.items.push(b)}return u+g.items.length<l.length&&g.items.length&&(g.next=g.items.at(-1).id),g},"drafts.capture":({token:r,clear:s})=>j(r,s),"drafts.restore"({token:r,id:s,mode:c}){const{composer:d,snapshot:l,store:u}=A(r,!0);u.saveDraft(l.draft);const g=u.restore(s,c);return g||m("CONFLICT",u.getSnapshot().error||"Your current draft has content. Choose Swap or Merge"),d.replace(g,r)||m("STALE_ACTIVATION","The composer changed; refresh before restoring"),f=null,d.focus(),null},"drafts.remove"({token:r,id:s}){const{store:c}=A(r,!0);return c.remove(s)||m("CONFLICT",c.getSnapshot().error||"The draft could not be deleted"),null},"drafts.backup"({token:r}){const{store:s}=A(r);return le(s),p.set(s,s.getSnapshot()),null},"drafts.recover"({token:r,action:s}){const{store:c}=A(r,!0);return s==="reset"&&p.get(c)!==c.getSnapshot()&&m("CONFLICT","Download the current backup before resetting damaged storage"),(s==="retry"?c.retry(o.inScope):s==="reset"?c.resetAfterBackup():c.markUpload(!1))||m("CONFLICT",c.getSnapshot().error||"Storage is unavailable"),null}},H=ee(r=>{if(w(),r.type==="scope"||r.type==="change"){const s=O();s&&o.inScope(r.snapshot.scope.cwd)&&_(s,r.snapshot,r.type==="scope"),f&&f.token!==r.snapshot.token&&(f=null),v()}else if(r.type==="rejected-input"){if(!o.inScope(r.scope.cwd))return;N(r.scope.key).retainImport(r.text),v()}else if(r.type==="before-send"){if(!o.inScope(r.scope.cwd))return;f=null;const s=N(r.scope.key),c=s.save(r.draft,"sending");c&&a.set(r.sendId,{store:s,id:c,cwd:r.scope.cwd,pendingIdentity:JSON.parse(r.scope.identity)[1]==="pending"})}else if(r.type==="created"){const s=a.get(r.sendId);s&&o.inScope(s.cwd)&&(s.store.created(s.id,r.session,o.inScope),s.pendingIdentity=!1,s.settled&&a.delete(r.sendId))}else if(r.type==="settled"){const s=a.get(r.sendId);s&&o.inScope(s.cwd)&&(s.store.settle(s.id,r.sent,!1,o.inScope),s.settled=!0,(!r.sent||!s.pendingIdentity)&&a.delete(r.sendId)),v()}}),W=te((r,s)=>{var b;w();const c=s.snapshot();if(!o.inScope(c.scope.cwd))return!1;if((r.ctrlKey||r.metaKey)&&r.shiftKey&&!r.altKey&&r.key.toLowerCase()==="s"&&!r.isComposing){try{j(c.token,!0)}catch{v()}return!0}const d=(f==null?void 0:f.scope)===c.scope.key&&f.token===c.token;if(c.busy||!pe(r,r.selectionStart,r.selectionEnd,c.draft,d,r.suggestionsOpen))return!1;const l=R(c).getSnapshot().record.entries.filter(Z=>Z.kind==="sent").reverse(),u=d?f.index:null,g=r.key==="ArrowUp"?Math.min((u??-1)+1,l.length-1):Math.max((u??0)-1,-1);if(!l.length||r.key==="ArrowDown"&&u===null)return!1;const k=s.replace(((b=l[g])==null?void 0:b.draft)??L,c.token);return k?(f=g<0?null:{scope:c.scope.key,index:g,token:k.token},s.focus(),!0):!1});function J(){if(!h){h=!0,H(),W();for(const r of i.values())r();i.clear(),t.clear(),a.clear(),p.clear(),o.signal.removeEventListener("abort",J)}}o.signal.addEventListener("abort",J,{once:!0});const x=O();return x&&o.inScope(x.snapshot().scope.cwd)&&_(x,x.snapshot(),!0),{async request(r,s,c){return w(),c.throwIfAborted(),z[r](s)},onTokenChange(r){return t.add(r),()=>{t.delete(r)}},dispose:J}}export{ye as activate};
@@ -1 +1 @@
1
- import{r as a,c as Ce,j as n}from"./vendor-react-gGw_S5I_.js";import{F as et,d4 as tt,Z as nt,_ as mt,d5 as Qt,c as Ae,E as Ge,f as Xe,U as Ve,h as Je,i as Pe,aT as qe,B as re,x as ct,bs as Bt,au as He,aw as en,ax as tn,ay as nn,az as sn,bP as Lt,bQ as Ft,bO as zt,d6 as ut,k as Ke,V as ln,cj as rn,ch as an,ci as on,S as xt,d7 as cn,l as Pt,D as $t,j as Ut,ac as gt,at as un,ae as pt,aC as dn,aD as Ht,aE as Kt,n as Wt,o as Yt,aa as fn,a9 as hn,a5 as mn,a2 as xn,a3 as gn,a4 as pn,a7 as wn,a6 as bn,a8 as yn,ad as jn,d8 as wt,d9 as vn,cE as bt,aZ as yt,da as Sn}from"./index-BvNyEUVG.js";import{bz as kn,T as dt,aB as Gt,u as ft,aV as Cn,a5 as ht,dA as Nn,X as Ze,cM as Xt,bx as En,bJ as Tn,bO as Dn,dB as _n,aF as Vt,C as An,cr as Rn,bi as In,dC as On,b2 as jt,aC as Mn,dD as Bn}from"./vendor-ui-keo4oB2X.js";import"./vendor-markdown-BEJ8yVzA.js";const ze="/api/browser",Ln=5e3,Fn="all";function st(s,e=""){return`${ze}/sessions/${encodeURIComponent(s)}${e}`}function lt(s){return{headers:{"content-type":"application/json"},body:JSON.stringify(s)}}function rt(s,e){return s instanceof Error&&s.message?s.message:e}function zn(s){const[e,t]=a.useState(null),[l,r]=a.useState(null),i=a.useRef(!1),o=a.useRef(0),f=a.useRef(!1);a.useEffect(()=>(i.current=!0,()=>{i.current=!1}),[]);const c=a.useCallback(async()=>{const m=++o.current;f.current=!0;try{const d=await et(tt(ze)),x=d.ok?await d.json():null;if(!i.current||m!==o.current)return;x?(t(h=>JSON.stringify(h)===JSON.stringify(x)?h:x),r(null)):r(await nt(d,`Could not read the browser list (${d.status})`))}catch(d){i.current&&m===o.current&&r(rt(d,"Could not read the browser list"))}finally{m===o.current&&(f.current=!1)}},[]);a.useEffect(()=>{if(!s)return;c();const m=setInterval(()=>{f.current||c()},Ln);return()=>clearInterval(m)},[s,c]);const g=a.useCallback(async(m,d,x)=>{let h;try{h=await et(tt(m),d)}catch(C){return{ok:!1,error:rt(C,x)}}if(!h.ok)return{ok:!1,error:await nt(h,x)};const p=await mt(h);return c(),{ok:!0,data:p}},[c]),w=a.useCallback(async(m,d,x)=>{const h=await g(m,d,x);return h.ok?{ok:!0}:h},[g]),v=a.useCallback(async(m,d)=>{const x=await g(`${ze}/sessions`,{method:"POST",...lt({name:m,note:d})},`Could not create ${m}`);if(!x.ok)return x;const h=x.data;return(h==null?void 0:h.name)===m&&t(p=>p&&!p.sessions.some(C=>C.name===m)?{...p,sessions:[...p.sessions,h]}:p),{ok:!0}},[g]),b=a.useCallback(m=>w(st(m),{method:"DELETE"},`Could not delete ${m}`),[w]),j=a.useCallback(m=>w(st(m,"/stop"),{method:"POST"},`Could not stop ${m}`),[w]),y=a.useCallback((m,d)=>w(st(m),{method:"PATCH",...lt({archived:d})},`Could not ${d?"archive":"restore"} ${m}`),[w]),k=a.useCallback(async()=>{const m="Could not read where the browser skill is installed";let d;try{d=await et(tt(`${ze}/skill`))}catch(h){return{ok:!1,error:rt(h,m)}}if(!d.ok)return{ok:!1,error:await nt(d,m)};const x=await mt(d);return Array.isArray(x==null?void 0:x.targets)?{ok:!0,targets:x.targets}:{ok:!1,error:m}},[]),O=a.useCallback(async m=>{const d="Could not install the browser skill",x=await g(`${ze}/skill/install`,{method:"POST",...lt({target:m})},d);if(!x.ok)return x;const{paths:h}=x.data??{};return Array.isArray(h)&&h.every(p=>typeof p=="string")?{ok:!0,paths:h}:{ok:!1,error:d}},[g]);return{status:e,error:l,refresh:c,create:v,remove:b,stop:j,setArchived:y,readSkillTargets:k,installSkill:O}}const at=4;new TextEncoder;const Pn=new TextDecoder;function $n(s){if(s.byteLength<at)throw new Error("Frame truncated before header length");const e=new DataView(s.buffer,s.byteOffset,s.byteLength).getUint32(0),t=at+e;if(s.byteLength<t)throw new Error("Frame truncated inside header");return{header:Un(Pn.decode(s.subarray(at,t))),jpeg:s.subarray(t)}}function Un(s){let e;try{e=JSON.parse(s)}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:i,scrollOffsetX:o,scrollOffsetY:f,targetId:c,ts:g}=e;if(typeof t!="number"||typeof l!="number"||typeof r!="number"||typeof i!="number"||typeof o!="number"||typeof f!="number"||typeof c!="string"||typeof g!="number")throw new Error("Frame header is missing fields");return{deviceWidth:t,deviceHeight:l,pageScaleFactor:r,offsetTop:i,scrollOffsetX:o,scrollOffsetY:f,targetId:c,ts:g}}const vt=500,Hn=5e3,St=[];function Kn(s){const e=window.location.protocol==="https:"?"wss:":"ws:",t=Qt();return`${e}//${window.location.host}${t}/__browser?session=${encodeURIComponent(s)}`}function Wn(s){try{return JSON.parse(s)}catch{return null}}function Yn(s,e){return s.state===e.state&&s.session===e.session&&s.message===e.message}function kt(s,e){return s.targetId===e.targetId&&s.url===e.url&&s.title===e.title&&s.canGoBack===e.canGoBack&&s.canGoForward===e.canGoForward}function Gn(s,e){return s.length===e.length&&s.every((t,l)=>t.targetId===e[l].targetId&&t.url===e[l].url&&t.title===e[l].title)}function it(s){s&&s.bitmap.close()}function Xn(s,e){const t=Ce.c(18),[l,r]=a.useState("idle"),[i,o]=a.useState(null),[f,c]=a.useState(null),[g,w]=a.useState(St),[v,b]=a.useState(null),[j,y]=a.useState(null),[k,O]=a.useState(null),[m,d]=a.useState(0),[x,h]=a.useState(null);let p;t[0]===Symbol.for("react.memo_cache_sentinel")?(p={page:null,generation:0},t[0]=p):p=t[0];const C=a.useRef(p),T=a.useRef(null),X=a.useRef(null),S=a.useRef(null),q=a.useRef(e);let $,R;t[1]!==e?($=()=>{q.current=e},R=[e],t[1]=e,t[2]=$,t[3]=R):($=t[2],R=t[3]),a.useEffect($,R);let M,L;t[4]!==s?(M=()=>{if(o(null),c(null),C.current={page:null,generation:C.current.generation+1},d(C.current.generation),w(St),b(null),h(null),y(null),O(null),s===null){r("idle");return}const B=s,z={alive:!0,issued:0,applied:0};let U=vt;const ne=function(_,E){if(!z.alive||E<=z.applied){it(_);return}z.applied=E,X.current=_,y(_),O(Date.now())},V=function(_){let E,te;try{const se=$n(new Uint8Array(_));E=se.header,te=new Blob([se.jpeg],{type:"image/jpeg"})}catch{return}const K=z.issued=z.issued+1,{page:ae,generation:Z}=C.current;createImageBitmap(te).then(se=>ne({bitmap:se,header:E,page:ae,pageGeneration:Z},K),Vn)},Q=function(_){var te;const E=Wn(_);if(E)e:switch(E.type){case"status":{o(K=>K&&Yn(K,E)?K:E),h(null);break e}case"page":{const K=C.current.page,ae=!K||K.targetId!==E.targetId||K.url!==E.url;C.current={page:K&&kt(K,E)?K:E,generation:C.current.generation+(ae?1:0)},ae&&d(C.current.generation),c(Z=>Z&&kt(Z,E)?Z:E);break e}case"tabs":{w(K=>Gn(K,E.tabs)?K:E.tabs),b(E.followed);break e}case"error":{h(E.message);break e}case"clipboard":(te=q.current)==null||te.call(q,E.text)}};function H(){if(!z.alive)return;const J=T.current;if(J&&J.readyState!==WebSocket.CLOSED)return;r("connecting");const _=new WebSocket(Kn(B));_.binaryType="arraybuffer",T.current=_,_.onopen=()=>{if(!z.alive){_.close();return}U=vt,r("connected")},_.onmessage=E=>{z.alive&&(typeof E.data=="string"?Q(E.data):E.data instanceof ArrayBuffer&&V(E.data))},_.onclose=()=>{if(!z.alive)return;T.current=null,r("disconnected");const E=U;U=Math.min(U*2,Hn),S.current=setTimeout(H,E)}}return H(),()=>{z.alive=!1,S.current&&(clearTimeout(S.current),S.current=null);const J=T.current;T.current=null,J&&(J.onclose=null,J.close()),it(X.current),X.current=null}},L=[s],t[4]=s,t[5]=M,t[6]=L):(M=t[5],L=t[6]),a.useEffect(M,L);let N;t[7]===Symbol.for("react.memo_cache_sentinel")?(N=B=>{const z=T.current;z&&z.readyState===WebSocket.OPEN&&z.send(JSON.stringify(B))},t[7]=N):N=t[7];const F=N;let D;return t[8]!==x||t[9]!==v||t[10]!==j||t[11]!==k||t[12]!==f||t[13]!==m||t[14]!==i||t[15]!==l||t[16]!==g?(D={status:l,state:i,page:f,tabs:g,followed:v,frame:j,lastFrameAt:k,pageGeneration:m,error:x,send:F},t[8]=x,t[9]=v,t[10]=j,t[11]=k,t[12]=f,t[13]=m,t[14]=i,t[15]=l,t[16]=g,t[17]=D):D=t[17],D}function Vn(){}const Jn=6e3;function qn(s){const e=Ce.c(16),{activity:t}=s,[l,r]=a.useState(!0),i=t?`${t.toolCallId}:${t.done}`:null;let o,f;if(e[0]!==i?(o=()=>{if(i===null)return;r(!0);const O=setTimeout(()=>r(!1),Jn);return()=>clearTimeout(O)},f=[i],e[0]=i,e[1]=o,e[2]=f):(o=e[1],f=e[2]),a.useEffect(o,f),!t)return null;const c=l?"opacity-100":"opacity-0";let g;e[3]!==c?(g=Ae("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",c),e[3]=c,e[4]=g):g=e[4];let w;e[5]===Symbol.for("react.memo_cache_sentinel")?(w=n.jsx(kn,{"aria-hidden":!0,className:"size-3.5 shrink-0 text-muted-foreground"}),e[5]=w):w=e[5];let v;e[6]!==t.command?(v=n.jsx("code",{className:"min-w-0 truncate font-mono text-[11px]",children:t.command}),e[6]=t.command,e[7]=v):v=e[7];const b=t.done?"ran":"running";let j;e[8]!==b?(j=n.jsx("span",{className:"shrink-0 text-muted-foreground",children:b}),e[8]=b,e[9]=j):j=e[9];let y;e[10]!==v||e[11]!==j?(y=n.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,v,j]}),e[10]=v,e[11]=j,e[12]=y):y=e[12];let k;return e[13]!==g||e[14]!==y?(k=n.jsx("div",{className:g,children:y}),e[13]=g,e[14]=y,e[15]=k):k=e[15],k}const Ct="npm i -g agent-browser && agent-browser install",Zn=1500;function Qn(s){const e=Ce.c(20),{onOpenSkill:t}=s,[l,r]=a.useState(!1),i=a.useRef(null);let o,f;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=()=>()=>{i.current&&clearTimeout(i.current)},f=[],e[0]=o,e[1]=f):(o=e[0],f=e[1]),a.useEffect(o,f);let c;e[2]===Symbol.for("react.memo_cache_sentinel")?(c=async function(){await Bt(Ct)&&(r(!0),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>r(!1),Zn))},e[2]=c):c=e[2];const g=c;let w,v;e[3]===Symbol.for("react.memo_cache_sentinel")?(w=n.jsx(Ve,{variant:"icon",children:n.jsx(Gt,{})}),v=n.jsx(Je,{children:"Nothing to show yet"}),e[3]=w,e[4]=v):(w=e[3],v=e[4]);let b;e[5]===Symbol.for("react.memo_cache_sentinel")?(b=n.jsxs(Xe,{children:[w,v,n.jsxs(Pe,{children:["This panel streams a real browser the agent drives. That takes the"," ",n.jsx("code",{className:"font-mono",children:"agent-browser"})," command, which is not on this machine yet."]})]}),e[5]=b):b=e[5];let j;e[6]===Symbol.for("react.memo_cache_sentinel")?(j=n.jsx("code",{className:"min-w-0 flex-1 truncate font-mono text-xs",children:Ct}),e[6]=j):j=e[6];const y=l?"Copied":"Copy install command";let k;e[7]===Symbol.for("react.memo_cache_sentinel")?(k=()=>void g(),e[7]=k):k=e[7];let O;e[8]!==l?(O=l?n.jsx(ft,{"data-icon":"inline-start",className:"text-emerald-500"}):n.jsx(Cn,{"data-icon":"inline-start"}),e[8]=l,e[9]=O):O=e[9];let m;e[10]!==O||e[11]!==y?(m=n.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,n.jsx(re,{variant:"ghost",size:"icon-xs","aria-label":y,onClick:k,children:O})]}),e[10]=O,e[11]=y,e[12]=m):m=e[12];let d;e[13]===Symbol.for("react.memo_cache_sentinel")?(d=n.jsx(ht,{"data-icon":"inline-start"}),e[13]=d):d=e[13];let x;e[14]!==t?(x=n.jsxs(re,{variant:"outline",size:"sm",onClick:t,children:[d,"Install the agent skill…"]}),e[14]=t,e[15]=x):x=e[15];let h;e[16]===Symbol.for("react.memo_cache_sentinel")?(h=n.jsx(Pe,{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]=h):h=e[16];let p;return e[17]!==m||e[18]!==x?(p=n.jsxs(Ge,{className:"size-full",children:[b,n.jsxs(qe,{children:[m,x,h]})]}),e[17]=m,e[18]=x,e[19]=p):p=e[19],p}function es(s){const e=Ce.c(14),{name:t,lastUrl:l,onOpen:r}=s;let i;e[0]===Symbol.for("react.memo_cache_sentinel")?(i=n.jsx(Ve,{variant:"icon",children:n.jsx(Nn,{})}),e[0]=i):i=e[0];let o;e[1]!==t?(o=n.jsxs(Je,{children:[t," isn’t running"]}),e[1]=t,e[2]=o):o=e[2];const f=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 c;e[3]!==f?(c=n.jsx(Pe,{children:f}),e[3]=f,e[4]=c):c=e[4];let g;e[5]!==o||e[6]!==c?(g=n.jsxs(Xe,{children:[i,o,c]}),e[5]=o,e[6]=c,e[7]=g):g=e[7];let w;e[8]!==l||e[9]!==r?(w=r&&n.jsx(qe,{children:n.jsx(Jt,{lastUrl:l,onOpen:r})}),e[8]=l,e[9]=r,e[10]=w):w=e[10];let v;return e[11]!==g||e[12]!==w?(v=n.jsxs(Ge,{className:"size-full",children:[g,w]}),e[11]=g,e[12]=w,e[13]=v):v=e[13],v}function Nt(s){const e=Ce.c(5),{onOpen:t}=s;let l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l=n.jsxs(Xe,{children:[n.jsx(Ve,{variant:"icon",children:n.jsx(Gt,{})}),n.jsx(Je,{children:"Your agents’ browsers show up here"}),n.jsx(Pe,{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&&n.jsx(qe,{children:n.jsx(Jt,{lastUrl:null,onOpen:t})}),e[1]=t,e[2]=r):r=e[2];let i;return e[3]!==r?(i=n.jsxs(Ge,{className:"size-full",children:[l,r]}),e[3]=r,e[4]=i):i=e[4],i}function Jt(s){const e=Ce.c(14),{lastUrl:t,onOpen:l}=s,[r,i]=a.useState(null),o=r??t??"";let f;e[0]!==l||e[1]!==o?(f=function(O){O.preventDefault();const m=o.trim();m&&l(m)},e[0]=l,e[1]=o,e[2]=f):f=e[2];const c=f;let g;e[3]===Symbol.for("react.memo_cache_sentinel")?(g=k=>i(k.target.value),e[3]=g):g=e[3];let w;e[4]!==o?(w=n.jsx(He,{"aria-label":"Page to open",className:"h-8 text-sm",placeholder:"example.com",spellCheck:!1,autoComplete:"off",value:o,onChange:g}),e[4]=o,e[5]=w):w=e[5];let v;e[6]!==o?(v=o.trim(),e[6]=o,e[7]=v):v=e[7];const b=!v;let j;e[8]!==b?(j=n.jsx(re,{type:"submit",size:"sm",disabled:b,children:"Open"}),e[8]=b,e[9]=j):j=e[9];let y;return e[10]!==c||e[11]!==w||e[12]!==j?(y=n.jsxs("form",{className:"flex w-full items-center gap-2",onSubmit:c,children:[w,j]}),e[10]=c,e[11]=w,e[12]=j,e[13]=y):y=e[13],y}function ts({message:s,onRetry:e}){const[t,l]=a.useState(!1);async function r(){l(!0);try{await e()}finally{l(!1)}}return n.jsxs(Ge,{className:"size-full",children:[n.jsxs(Xe,{children:[n.jsx(Ve,{variant:"icon",children:n.jsx(dt,{})}),n.jsx(Je,{children:"Could not load the browsers"}),n.jsx(Pe,{children:s})]}),n.jsx(qe,{children:n.jsxs(re,{variant:"outline",size:"sm",disabled:t,onClick:()=>void r(),children:[t&&n.jsx(ct,{"data-icon":"inline-start"}),"Retry"]})})]})}function Et(s){if(s.url==="about:blank"&&(!s.title.trim()||s.title==="about:blank"))return"New tab";if(s.title.trim())return s.title.trim();try{return new URL(s.url).hostname||s.url}catch{return s.url}}const ns={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 ss(s){const e=Ce.c(17),{status:t}=s,l=ns[t];let r;e[0]!==l.tone?(r=Ae("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 i;e[2]!==r?(i=n.jsx("span",{className:r}),e[2]=r,e[3]=i):i=e[3];let o;e[4]!==l.dot?(o=Ae("size-1.5 rounded-full",l.dot),e[4]=l.dot,e[5]=o):o=e[5];let f;e[6]!==o?(f=n.jsx("span",{"aria-hidden":"true",className:o}),e[6]=o,e[7]=f):f=e[7];let c;e[8]!==l.label||e[9]!==i||e[10]!==f?(c=n.jsxs(Lt,{render:i,children:[f,l.label]}),e[8]=l.label,e[9]=i,e[10]=f,e[11]=c):c=e[11];let g;e[12]!==l.hint?(g=n.jsx(Ft,{children:l.hint}),e[12]=l.hint,e[13]=g):g=e[13];let w;return e[14]!==c||e[15]!==g?(w=n.jsxs(zt,{children:[c,g]}),e[14]=c,e[15]=g,e[16]=w):w=e[16],w}const ls=a.memo(function(e){const t=Ce.c(56),{page:l,tabs:r,followed:i,status:o,readOnly:f,onNavigate:c,onBack:g,onForward:w,onReload:v,onAnnotate:b,onFollow:j,onCloseTab:y}=e,k=f===void 0?!1:f,[O,m]=a.useState(null),d=(l==null?void 0:l.url)??"";let x;t[0]!==O||t[1]!==d||t[2]!==c||t[3]!==k?(x=function(se){if(se.preventDefault(),k)return;const de=(O??d).trim();m(null),de&&c(de)},t[0]=O,t[1]=d,t[2]=c,t[3]=k,t[4]=x):x=t[4];const h=x;let p;t[5]===Symbol.for("react.memo_cache_sentinel")?(p=function(se){se.key==="Escape"&&(se.preventDefault(),m(null),se.currentTarget.blur())},t[5]=p):p=t[5];const C=p,T=k||!(l!=null&&l.canGoBack);let X;t[6]===Symbol.for("react.memo_cache_sentinel")?(X=n.jsx(Xt,{"data-icon":"inline-start"}),t[6]=X):X=t[6];let S;t[7]!==g||t[8]!==T?(S=n.jsx(re,{variant:"ghost",size:"icon-sm","aria-label":"Back",disabled:T,onClick:g,children:X}),t[7]=g,t[8]=T,t[9]=S):S=t[9];const q=k||!(l!=null&&l.canGoForward);let $;t[10]===Symbol.for("react.memo_cache_sentinel")?($=n.jsx(En,{"data-icon":"inline-start"}),t[10]=$):$=t[10];let R;t[11]!==w||t[12]!==q?(R=n.jsx(re,{variant:"ghost",size:"icon-sm","aria-label":"Forward",disabled:q,onClick:w,children:$}),t[11]=w,t[12]=q,t[13]=R):R=t[13];const M=k||!l;let L;t[14]===Symbol.for("react.memo_cache_sentinel")?(L=n.jsx(Tn,{"data-icon":"inline-start"}),t[14]=L):L=t[14];let N;t[15]!==v||t[16]!==M?(N=n.jsx(re,{variant:"ghost",size:"icon-sm","aria-label":"Reload",disabled:M,onClick:v,children:L}),t[15]=v,t[16]=M,t[17]=N):N=t[17];const F=O??d;let D;t[18]===Symbol.for("react.memo_cache_sentinel")?(D=Z=>m(Z.target.value),t[18]=D):D=t[18];let B;t[19]===Symbol.for("react.memo_cache_sentinel")?(B=()=>m(null),t[19]=B):B=t[19];let z;t[20]!==k||t[21]!==F?(z=n.jsx(en,{"aria-label":"Page URL",className:"text-xs",placeholder:"Enter a URL",spellCheck:!1,autoComplete:"off",readOnly:k,value:F,onChange:D,onFocus:rs,onBlur:B,onKeyDown:C}),t[20]=k,t[21]=F,t[22]=z):z=t[22];const U=!d;let ne;t[23]!==d?(ne=()=>window.open(d,"_blank","noopener,noreferrer"),t[23]=d,t[24]=ne):ne=t[24];let V;t[25]===Symbol.for("react.memo_cache_sentinel")?(V=n.jsx(Dn,{"data-icon":"inline-start"}),t[25]=V):V=t[25];let Q;t[26]!==U||t[27]!==ne?(Q=n.jsx(tn,{align:"inline-end",children:n.jsx(nn,{size:"icon-xs","aria-label":"Open in your browser",disabled:U,onClick:ne,children:V})}),t[26]=U,t[27]=ne,t[28]=Q):Q=t[28];let H;t[29]!==z||t[30]!==Q?(H=n.jsxs(sn,{className:"h-7",children:[z,Q]}),t[29]=z,t[30]=Q,t[31]=H):H=t[31];let J;t[32]!==h||t[33]!==H?(J=n.jsx("form",{className:"ml-1 min-w-0 flex-1",onSubmit:h,children:H}),t[32]=h,t[33]=H,t[34]=J):J=t[34];let _;t[35]!==b||t[36]!==l?(_=b&&n.jsx(re,{variant:"ghost",size:"icon-sm","aria-label":"Annotate this frame for the message",title:"Annotate for the message",disabled:!l,onClick:b,children:n.jsx(_n,{"data-icon":"inline-start"})}),t[35]=b,t[36]=l,t[37]=_):_=t[37];let E;t[38]!==o?(E=o&&n.jsx(ss,{status:o}),t[38]=o,t[39]=E):E=t[39];let te;t[40]!==N||t[41]!==J||t[42]!==_||t[43]!==E||t[44]!==S||t[45]!==R?(te=n.jsxs("div",{className:"flex items-center gap-0.5",children:[S,R,N,J,_,E]}),t[40]=N,t[41]=J,t[42]=_,t[43]=E,t[44]=S,t[45]=R,t[46]=te):te=t[46];let K;t[47]!==i||t[48]!==y||t[49]!==j||t[50]!==k||t[51]!==r?(K=r.length>0&&n.jsx("div",{className:"flex items-center gap-1 overflow-x-auto pb-0.5",children:r.map(Z=>n.jsxs("div",{className:Ae("flex max-w-48 shrink-0 items-center rounded-md",Z.targetId===i&&"bg-secondary"),children:[n.jsx(re,{size:"xs",variant:"ghost",className:Ae("min-w-0 shrink",!k&&"rounded-r-none"),"aria-current":Z.targetId===i?"page":void 0,title:Z.title||Z.url,onClick:()=>j(Z.targetId),onMouseDown:as,onAuxClick:se=>{se.button!==1||k||(se.preventDefault(),y(Z.targetId))},children:n.jsx("span",{className:"truncate",children:Et(Z)})}),!k&&n.jsx(re,{size:"icon-xs",variant:"ghost",className:"rounded-l-none","aria-label":`Close tab: ${Et(Z)}`,title:"Close tab",onClick:()=>y(Z.targetId),children:n.jsx(Ze,{"data-icon":"inline-start"})})]},Z.targetId))}),t[47]=i,t[48]=y,t[49]=j,t[50]=k,t[51]=r,t[52]=K):K=t[52];let ae;return t[53]!==te||t[54]!==K?(ae=n.jsxs("div",{className:"flex shrink-0 flex-col gap-1 border-b px-2 py-1.5",children:[te,K]}),t[53]=te,t[54]=K,t[55]=ae):ae=t[55],ae});function rs(s){return s.target.select()}function as(s){s.button===1&&s.preventDefault()}function is(s){var e;return((e=s.find(t=>t.mine))==null?void 0:e.name)??ut}function We(s){return(s==null?void 0:s.control)??"own"}function os(s){return We(s)!=="watch"}function Ye(s,e){return s!=null&&s.mine?"Your browser":s!=null&&s.account?`${s.account}'s browser`:e}function cs(s,e,t){if(s!==ut||t===null)return s;const l=e.find(r=>(r.mine||r.account)&&r.driverSessionId===t);return(l==null?void 0:l.name)??s}function us(s){if(!s||!Number.isFinite(Date.parse(s)))return null;if(Date.now()-Date.parse(s)>=10080*60*1e3)return new Date(s).toLocaleDateString();const e=ln(s);return e==="now"?"just now":`${e} ago`}function qt(s){const e=Ce.c(4),{running:t}=s,l=t?"bg-emerald-500":"ring-1 ring-muted-foreground/50 ring-inset";let r;e[0]!==l?(r=Ae("size-2 shrink-0 rounded-full",l),e[0]=l,e[1]=r):r=e[1];let i;return e[2]!==r?(i=n.jsx("span",{"aria-hidden":!0,className:r}),e[2]=r,e[3]=i):i=e[3],i}function ds(s){const e=Ce.c(89),{sessions:t,selected:l,home:r,currentSessionId:i,busy:o,onSelect:f,onSetArchived:c,children:g}=s,[w,v]=a.useState(!1),[b,j]=a.useState(""),[y,k]=a.useState(!1),O=a.useRef(null);let m,d,x,h,p,C,T,X,S,q,$,R,M,L,N,F,D;if(e[0]!==o||e[1]!==i||e[2]!==r||e[3]!==f||e[4]!==c||e[5]!==w||e[6]!==b||e[7]!==l||e[8]!==t||e[9]!==y){let E;e[27]!==l?(E=P=>P.name===l,e[27]=l,e[28]=E):E=e[28];const te=t.find(E),K=b.trim().toLowerCase();let ae;e[29]!==r||e[30]!==l?(ae=P=>!!P.archived&&!P.isDefault&&P.name!==r&&!P.running&&P.name!==l,e[29]=r,e[30]=l,e[31]=ae):ae=e[31];const Z=ae,se=P=>`${P.name} ${Ye(P,P.name)} ${P.note??""}`.toLowerCase().includes(K);let de;e[32]!==r?(de=(P,oe)=>+(oe.name===r)-+(P.name===r)||Number(oe.isDefault)-Number(P.isDefault)||Number(oe.running)-Number(P.running),e[32]=r,e[33]=de):de=e[33];const ve=t.filter(P=>!Z(P)&&se(P)).sort(de);x=t.filter(Z);const ge=x.filter(se);D=y&&!K?[]:ve,F=y||K?ge:[];let he;e[34]===Symbol.for("react.memo_cache_sentinel")?(he=function(){v(!1)},e[34]=he):he=e[34],h=he;const pe=async function(oe){oe.archived&&!(await c(oe.name,!1)).ok||(f(oe.name),h())},be=async function(oe){var ke;(await c(oe,!0)).ok&&((ke=O.current)==null||ke.focus())};d=rn,N=w,e[35]===Symbol.for("react.memo_cache_sentinel")?(C=P=>{v(P),P&&(j(""),k(!1))},e[35]=C):C=e[35];let fe;e[36]===Symbol.for("react.memo_cache_sentinel")?(fe=n.jsx(re,{variant:"ghost",size:"xs","aria-label":"Switch browser",className:"max-w-40"}),e[36]=fe):fe=e[36];const le=n.jsx(qt,{running:(te==null?void 0:te.running)??!1}),W=Ye(te,l);let Y;e[37]!==W?(Y=n.jsx("span",{className:"truncate",children:W}),e[37]=W,e[38]=Y):Y=e[38];let ce;e[39]===Symbol.for("react.memo_cache_sentinel")?(ce=n.jsx(An,{"data-icon":"inline-end",className:"opacity-60"}),e[39]=ce):ce=e[39],e[40]!==le||e[41]!==Y?(T=n.jsxs(an,{render:fe,children:[le,Y,ce]}),e[40]=le,e[41]=Y,e[42]=T):T=e[42],m=on,q="Browsers",$=O,R="flex max-h-[min(32rem,var(--available-height))] w-80 max-w-[calc(100vw-1rem)] flex-col overflow-hidden";const Se=y&&!K?"Archived browsers":"Browsers";let we;e[43]!==Se?(we=n.jsx("span",{className:"text-sm font-medium",children:Se}),e[43]=Se,e[44]=we):we=e[44];let ye;e[45]===Symbol.for("react.memo_cache_sentinel")?(ye=n.jsx(re,{variant:"ghost",size:"icon-xs","aria-label":"Close browser picker",onClick:h,children:n.jsx(Ze,{"data-icon":"inline-start"})}),e[45]=ye):ye=e[45];let me;e[46]!==we?(me=n.jsxs("div",{className:"flex items-center justify-between pl-1",children:[we,ye]}),e[46]=we,e[47]=me):me=e[47];let je;e[48]===Symbol.for("react.memo_cache_sentinel")?(je=P=>j(P.target.value),e[48]=je):je=e[48];let ie;e[49]!==b?(ie=n.jsx(He,{ref:O,"aria-label":"Search browsers",placeholder:"Search browsers…",value:b,onChange:je}),e[49]=b,e[50]=ie):ie=e[50],e[51]!==me||e[52]!==ie?(M=n.jsxs("div",{className:"flex shrink-0 flex-col gap-2 p-2",children:[me,ie]}),e[51]=me,e[52]=ie,e[53]=M):M=e[53],e[54]===Symbol.for("react.memo_cache_sentinel")?(L=n.jsx(xt,{}),e[54]=L):L=e[54],p="min-h-0 max-h-72 overflow-y-auto overscroll-contain p-1",X="Browser list",S=[{label:"Recent browsers",sessions:D,archived:!1},{label:"Archived browsers",sessions:F,archived:!0}].filter(fs).map(P=>n.jsxs("div",{children:[P.archived&&!!K&&n.jsx("p",{className:"px-2 py-1 text-xs text-muted-foreground",children:"Archived"}),n.jsx("ul",{"aria-label":P.label,children:P.sessions.map(oe=>n.jsx(hs,{session:oe,archived:P.archived,home:r,selected:l,currentSessionId:i,busy:o,onPick:pe,onArchive:be},oe.name))})]},P.label)),e[0]=o,e[1]=i,e[2]=r,e[3]=f,e[4]=c,e[5]=w,e[6]=b,e[7]=l,e[8]=t,e[9]=y,e[10]=m,e[11]=d,e[12]=x,e[13]=h,e[14]=p,e[15]=C,e[16]=T,e[17]=X,e[18]=S,e[19]=q,e[20]=$,e[21]=R,e[22]=M,e[23]=L,e[24]=N,e[25]=F,e[26]=D}else m=e[10],d=e[11],x=e[12],h=e[13],p=e[14],C=e[15],T=e[16],X=e[17],S=e[18],q=e[19],$=e[20],R=e[21],M=e[22],L=e[23],N=e[24],F=e[25],D=e[26];let B;e[55]!==F||e[56]!==D.length?(B=D.length===0&&F.length===0&&n.jsx("p",{role:"status",className:"px-3 py-6 text-center text-sm text-muted-foreground",children:"No browsers found."}),e[55]=F,e[56]=D.length,e[57]=B):B=e[57];let z;e[58]!==p||e[59]!==B||e[60]!==X||e[61]!==S?(z=n.jsxs("div",{className:p,"aria-label":X,children:[S,B]}),e[58]=p,e[59]=B,e[60]=X,e[61]=S,e[62]=z):z=e[62];let U;e[63]===Symbol.for("react.memo_cache_sentinel")?(U=n.jsx(xt,{}),e[63]=U):U=e[63];let ne;e[64]!==x.length||e[65]!==y?(ne=(x.length>0||y)&&n.jsxs(re,{variant:"ghost",size:"sm",className:"w-full justify-start","aria-expanded":y,onClick:()=>{k(!y),j("")},children:[y?n.jsx(Xt,{"data-icon":"inline-start"}):n.jsx(Vt,{"data-icon":"inline-start"}),y?"Back to recent":"Archived",!y&&n.jsx(Ke,{variant:"secondary",children:x.length})]}),e[64]=x.length,e[65]=y,e[66]=ne):ne=e[66];let V;e[67]===Symbol.for("react.memo_cache_sentinel")?(V=n.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]=V):V=e[67];let Q;e[68]!==g||e[69]!==h?(Q=g(h),e[68]=g,e[69]=h,e[70]=Q):Q=e[70];let H;e[71]!==ne||e[72]!==Q?(H=n.jsxs("div",{className:"flex shrink-0 flex-col gap-1 p-2",children:[ne,V,Q]}),e[71]=ne,e[72]=Q,e[73]=H):H=e[73];let J;e[74]!==m||e[75]!==z||e[76]!==H||e[77]!==q||e[78]!==$||e[79]!==R||e[80]!==M||e[81]!==L?(J=n.jsxs(m,{"aria-label":q,initialFocus:$,className:R,children:[M,L,z,U,H]}),e[74]=m,e[75]=z,e[76]=H,e[77]=q,e[78]=$,e[79]=R,e[80]=M,e[81]=L,e[82]=J):J=e[82];let _;return e[83]!==d||e[84]!==C||e[85]!==T||e[86]!==J||e[87]!==N?(_=n.jsxs(d,{open:N,onOpenChange:C,children:[T,J]}),e[83]=d,e[84]=C,e[85]=T,e[86]=J,e[87]=N,e[88]=_):_=e[88],_}function fs(s){return s.sessions.length>0}function hs(s){const e=Ce.c(53),{session:t,archived:l,home:r,selected:i,currentSessionId:o,busy:f,onPick:c,onArchive:g}=s;let w;e[0]!==t.lastUsedAt?(w=us(t.lastUsedAt),e[0]=t.lastUsedAt,e[1]=w):w=e[1];const v=w;let b;e[2]!==t?(b=Ye(t,t.name),e[2]=t,e[3]=b):b=e[3];const j=b,y=t.running&&t.driverSessionId!==null&&t.driverSessionId!==o,k=t.isDefault?r===t.name?"Default":"Host default":null,O=`${l?"Restore and switch to":"Switch to"} ${j}`,m=t.name===i?"true":void 0;let d;e[4]!==c||e[5]!==t?(d=()=>void c(t),e[4]=c,e[5]=t,e[6]=d):d=e[6];let x;e[7]!==t.running?(x=n.jsx(qt,{running:t.running}),e[7]=t.running,e[8]=x):x=e[8];let h;e[9]!==j?(h=n.jsx("span",{className:"truncate",children:j}),e[9]=j,e[10]=h):h=e[10];const p=t.running?"running":"stopped";let C;e[11]!==p?(C=n.jsx("span",{className:"sr-only",children:p}),e[11]=p,e[12]=C):C=e[12];let T;e[13]!==k?(T=k&&n.jsx(Ke,{variant:"secondary",children:k}),e[13]=k,e[14]=T):T=e[14];let X;e[15]!==t?(X=We(t)==="watch"&&n.jsx(Ke,{variant:"outline",children:"View only"}),e[15]=t,e[16]=X):X=e[16];let S;e[17]!==v?(S=v&&n.jsx("span",{className:"ml-auto shrink-0 text-xs font-normal text-muted-foreground",children:v}),e[17]=v,e[18]=S):S=e[18];let q;e[19]!==T||e[20]!==X||e[21]!==S||e[22]!==h||e[23]!==C?(q=n.jsxs("span",{className:"flex w-full min-w-0 items-center gap-1.5",children:[h,C,T,X,S]}),e[19]=T,e[20]=X,e[21]=S,e[22]=h,e[23]=C,e[24]=q):q=e[24];let $;e[25]!==y?($=y&&n.jsx("span",{className:"max-w-full truncate text-xs font-normal text-muted-foreground",children:"driven by another session"}),e[25]=y,e[26]=$):$=e[26];let R;e[27]!==q||e[28]!==$?(R=n.jsxs("span",{className:"flex min-w-0 flex-1 flex-col items-start gap-0.5",children:[q,$]}),e[27]=q,e[28]=$,e[29]=R):R=e[29];let M;e[30]!==i||e[31]!==t.name?(M=t.name===i&&n.jsx(ft,{"data-icon":"inline-end"}),e[30]=i,e[31]=t.name,e[32]=M):M=e[32];let L;e[33]!==l?(L=l&&n.jsx(Rn,{"data-icon":"inline-end"}),e[33]=l,e[34]=L):L=e[34];let N;e[35]!==f||e[36]!==R||e[37]!==M||e[38]!==L||e[39]!==O||e[40]!==m||e[41]!==d||e[42]!==x?(N=n.jsxs(re,{variant:"ghost",className:"h-auto min-h-10 min-w-0 flex-1 justify-start px-2 py-2","aria-label":O,"aria-current":m,disabled:f,onClick:d,children:[x,R,M,L]}),e[35]=f,e[36]=R,e[37]=M,e[38]=L,e[39]=O,e[40]=m,e[41]=d,e[42]=x,e[43]=N):N=e[43];let F;e[44]!==l||e[45]!==f||e[46]!==r||e[47]!==g||e[48]!==t?(F=!l&&!t.isDefault&&t.name!==r&&!t.running&&We(t)==="own"&&n.jsx(re,{variant:"ghost",size:"icon-sm","aria-label":`Archive ${t.name}`,title:`Archive ${t.name}`,disabled:f,onClick:()=>void g(t.name),children:n.jsx(Vt,{"data-icon":"inline-start"})}),e[44]=l,e[45]=f,e[46]=r,e[47]=g,e[48]=t,e[49]=F):F=e[49];let D;return e[50]!==N||e[51]!==F?(D=n.jsxs("li",{className:"group flex items-center gap-1 rounded-md",children:[N,F]}),e[50]=N,e[51]=F,e[52]=D):D=e[52],D}const ms=/^[a-z0-9][a-z0-9_-]{0,39}$/,xs="Lowercase letters, numbers, - and _, starting with a letter or number (40 max).",gs=a.memo(function(e){const t=Ce.c(112),{sessions:l,selected:r,home:i,currentSessionId:o,followAgent:f,busy:c,onSelect:g,onToggleFollow:w,onOpenSkill:v,onCreate:b,onRemove:j,onStop:y,onSetArchived:k,onShowDefault:O,onClose:m}=e,d=c===void 0?!1:c,x=a.useId(),h=a.useId(),[p,C]=a.useState(!1),[T,X]=a.useState(""),[S,q]=a.useState(""),[$,R]=a.useState(null),[M,L]=a.useState(!1),[N,F]=a.useState(null),D=r===i;let B,z;t[0]!==r||t[1]!==l?(B=l.find(xe=>xe.name===r)??null,z=We(B),t[0]=r,t[1]=l,t[2]=B,t[3]=z):(B=t[2],z=t[3]);const U=z;let ne;if(t[4]!==i||t[5]!==l){let xe;t[7]!==i?(xe=Fe=>Fe.mine&&Fe.name===i,t[7]=i,t[8]=xe):xe=t[8],ne=l.some(xe),t[4]=i,t[5]=l,t[6]=ne}else ne=t[6];const V=ne,Q=!D&&!(B!=null&&B.isDefault)&&U!=="watch",H=!D&&!(B!=null&&B.isDefault)&&U==="own";let J,_;t[9]!==T?(_=T.trim(),J=_.length>0&&!ms.test(_),t[9]=T,t[10]=J,t[11]=_):(J=t[10],_=t[11]);const E=J,te=E?xs:$,K=_.length>0&&!E&&!M;let ae;t[12]===Symbol.for("react.memo_cache_sentinel")?(ae=function(){X(""),q(""),R(null),L(!1),C(!0)},t[12]=ae):ae=t[12];const Z=ae;let se;t[13]!==K||t[14]!==S||t[15]!==b||t[16]!==g||t[17]!==_?(se=async function(){if(!K)return;L(!0);const Fe=await b(_,S.trim());if(L(!1),!Fe.ok){R(Fe.error);return}C(!1),g(_)},t[13]=K,t[14]=S,t[15]=b,t[16]=g,t[17]=_,t[18]=se):se=t[18];const de=se,ve=!D&&"border-amber-500/40 bg-amber-500/10";let ge;t[19]!==ve?(ge=Ae("@container/browser-bar flex h-10 shrink-0 items-center gap-2 border-b px-2",ve),t[19]=ve,t[20]=ge):ge=t[20];let he;t[21]!==d||t[22]!==H||t[23]!==Q||t[24]!==v||t[25]!==y||t[26]!==r||t[27]!==(B==null?void 0:B.running)?(he=xe=>n.jsxs(n.Fragment,{children:[n.jsxs(re,{variant:"outline",size:"sm",disabled:d,onClick:()=>{xe(),Z()},children:[n.jsx(In,{"data-icon":"inline-start"}),"New browser…"]}),n.jsxs("div",{className:"flex items-center gap-1",children:[n.jsxs(re,{variant:"ghost",size:"xs",onClick:()=>{xe(),v()},children:[n.jsx(ht,{"data-icon":"inline-start"}),"Agent skill…"]}),Q&&n.jsxs(re,{variant:"ghost",size:"xs",disabled:d||!(B!=null&&B.running),onClick:()=>{xe(),y(r)},children:[n.jsx(On,{"data-icon":"inline-start"}),"Stop"]}),H&&n.jsxs(re,{variant:"ghost",size:"xs",disabled:d,onClick:()=>{xe(),F(r)},children:[n.jsx(jt,{"data-icon":"inline-start"}),"Delete…"]})]})]}),t[21]=d,t[22]=H,t[23]=Q,t[24]=v,t[25]=y,t[26]=r,t[27]=B==null?void 0:B.running,t[28]=he):he=t[28];let pe;t[29]!==d||t[30]!==o||t[31]!==i||t[32]!==g||t[33]!==k||t[34]!==r||t[35]!==l||t[36]!==he?(pe=n.jsx(ds,{sessions:l,selected:r,home:i,currentSessionId:o,busy:d,onSelect:g,onSetArchived:k,children:he}),t[29]=d,t[30]=o,t[31]=i,t[32]=g,t[33]=k,t[34]=r,t[35]=l,t[36]=he,t[37]=pe):pe=t[37];let be;t[38]===Symbol.for("react.memo_cache_sentinel")?(be=n.jsx("span",{className:"flex-1"}),t[38]=be):be=t[38];let fe;t[39]!==U?(fe=U==="watch"&&n.jsxs(Ke,{variant:"outline",title:"Only someone who can interact with the session driving it can use it",children:[n.jsx(Mn,{"data-icon":"inline-start"}),"View only"]}),t[39]=U,t[40]=fe):fe=t[40];let le;t[41]!==V||t[42]!==D||t[43]!==O?(le=!D&&n.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[n.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:[n.jsx(dt,{"aria-hidden":!0,className:"size-3.5 shrink-0"}),n.jsx("span",{className:"sr-only @sm/browser-bar:not-sr-only @sm/browser-bar:whitespace-nowrap",children:V?"Not your browser":"Not the default browser"})]}),n.jsx(re,{variant:"outline",size:"xs",onClick:O,children:V?"Show yours":"Show default"})]}),t[41]=V,t[42]=D,t[43]=O,t[44]=le):le=t[44];let W;t[45]!==w?(W=xe=>w(xe),t[45]=w,t[46]=W):W=t[46];let Y;t[47]!==f||t[48]!==W?(Y=n.jsx(cn,{size:"sm","aria-label":"Follow agent",pressed:f,onPressedChange:W,className:"text-muted-foreground data-pressed:text-foreground"}),t[47]=f,t[48]=W,t[49]=Y):Y=t[49];let ce,Se;t[50]===Symbol.for("react.memo_cache_sentinel")?(ce=n.jsx(Bn,{"data-icon":"inline-start"}),Se=n.jsx("span",{className:"hidden @md/browser-bar:inline",children:"Follow"}),t[50]=ce,t[51]=Se):(ce=t[50],Se=t[51]);let we;t[52]!==Y?(we=n.jsxs(Lt,{render:Y,children:[ce,Se]}),t[52]=Y,t[53]=we):we=t[53];let ye;t[54]===Symbol.for("react.memo_cache_sentinel")?(ye=n.jsx(Ft,{children:"Switch to whichever browser this session’s agent uses"}),t[54]=ye):ye=t[54];let me;t[55]!==we?(me=n.jsxs(zt,{children:[we,ye]}),t[55]=we,t[56]=me):me=t[56];let je;t[57]===Symbol.for("react.memo_cache_sentinel")?(je=n.jsx(Ze,{"data-icon":"inline-start"}),t[57]=je):je=t[57];let ie;t[58]!==m?(ie=n.jsx(re,{variant:"ghost",size:"icon-sm","aria-label":"Close browser panel",onClick:m,children:je}),t[58]=m,t[59]=ie):ie=t[59];let P;t[60]!==de?(P=xe=>{xe.preventDefault(),de()},t[60]=de,t[61]=P):P=t[61];let oe;t[62]===Symbol.for("react.memo_cache_sentinel")?(oe=n.jsxs(Pt,{children:[n.jsx($t,{children:"New browser"}),n.jsx(Ut,{children:"A named browser keeps its own cookies and logins, and stays out of the default one."})]}),t[62]=oe):oe=t[62];const Ee=!!te;let ke;t[63]!==x?(ke=n.jsx(gt,{htmlFor:x,children:"Name"}),t[63]=x,t[64]=ke):ke=t[64];const Te=!!te;let G;t[65]===Symbol.for("react.memo_cache_sentinel")?(G=xe=>{X(xe.target.value),R(null)},t[65]=G):G=t[65];let u;t[66]!==x||t[67]!==T||t[68]!==Te?(u=n.jsx(He,{id:x,autoFocus:!0,autoComplete:"off",spellCheck:!1,placeholder:"shop","aria-invalid":Te,value:T,onChange:G}),t[66]=x,t[67]=T,t[68]=Te,t[69]=u):u=t[69];let A;t[70]!==te?(A=n.jsx(un,{children:te}),t[70]=te,t[71]=A):A=t[71];let ee;t[72]!==Ee||t[73]!==ke||t[74]!==u||t[75]!==A?(ee=n.jsxs(pt,{"data-invalid":Ee,children:[ke,u,A]}),t[72]=Ee,t[73]=ke,t[74]=u,t[75]=A,t[76]=ee):ee=t[76];let I;t[77]===Symbol.for("react.memo_cache_sentinel")?(I=n.jsx("span",{className:"text-muted-foreground/60",children:"(optional)"}),t[77]=I):I=t[77];let ue;t[78]!==h?(ue=n.jsxs(gt,{htmlFor:h,children:["Note ",I]}),t[78]=h,t[79]=ue):ue=t[79];let Ne;t[80]===Symbol.for("react.memo_cache_sentinel")?(Ne=xe=>q(xe.target.value),t[80]=Ne):Ne=t[80];let De;t[81]!==S||t[82]!==h?(De=n.jsx(He,{id:h,autoComplete:"off",placeholder:"What this browser is signed in to",value:S,onChange:Ne}),t[81]=S,t[82]=h,t[83]=De):De=t[83];let _e;t[84]!==ue||t[85]!==De?(_e=n.jsxs(pt,{children:[ue,De]}),t[84]=ue,t[85]=De,t[86]=_e):_e=t[86];let Ie;t[87]!==ee||t[88]!==_e?(Ie=n.jsxs(dn,{className:"gap-4",children:[ee,_e]}),t[87]=ee,t[88]=_e,t[89]=Ie):Ie=t[89];let $e;t[90]===Symbol.for("react.memo_cache_sentinel")?($e=n.jsx(Ht,{render:n.jsx(re,{type:"button",variant:"outline"}),children:"Cancel"}),t[90]=$e):$e=t[90];const Qe=!K;let Oe;t[91]!==Qe?(Oe=n.jsxs(Kt,{children:[$e,n.jsx(re,{type:"submit",disabled:Qe,children:"Create browser"})]}),t[91]=Qe,t[92]=Oe):Oe=t[92];let Me;t[93]!==P||t[94]!==Ie||t[95]!==Oe?(Me=n.jsx(Wt,{className:"sm:max-w-sm",children:n.jsxs("form",{className:"flex flex-col gap-4",onSubmit:P,children:[oe,Ie,Oe]})}),t[93]=P,t[94]=Ie,t[95]=Oe,t[96]=Me):Me=t[96];let Be;t[97]!==p||t[98]!==Me?(Be=n.jsx(Yt,{open:p,onOpenChange:C,children:Me}),t[97]=p,t[98]=Me,t[99]=Be):Be=t[99];let Le;t[100]!==N||t[101]!==j?(Le=N!==null&&n.jsx(fn,{open:!0,onOpenChange:xe=>{xe||F(null)},children:n.jsxs(hn,{size:"sm",children:[n.jsxs(mn,{children:[n.jsx(xn,{className:"bg-destructive/10 text-destructive",children:n.jsx(jt,{})}),n.jsxs(gn,{children:["Delete ",N,"?"]}),n.jsx(pn,{children:"Its profile goes with it, so everything signed in there is signed out. Other browsers are untouched."})]}),n.jsxs(wn,{children:[n.jsx(bn,{size:"sm",children:"Cancel"}),n.jsx(yn,{variant:"destructive",size:"sm",onClick:()=>{j(N),F(null)},children:"Delete browser"})]})]})}),t[100]=N,t[101]=j,t[102]=Le):Le=t[102];let Ue;return t[103]!==pe||t[104]!==fe||t[105]!==le||t[106]!==me||t[107]!==ie||t[108]!==Be||t[109]!==Le||t[110]!==ge?(Ue=n.jsxs("div",{className:ge,children:[pe,be,fe,le,me,ie,Be,Le]}),t[103]=pe,t[104]=fe,t[105]=le,t[106]=me,t[107]=ie,t[108]=Be,t[109]=Le,t[110]=ge,t[111]=Ue):Ue=t[111],Ue});function ps(s){const e=Ce.c(36),{open:t,onOpenChange:l,readTargets:r,install:i}=s,[o,f]=a.useState(null),[c,g]=a.useState(null),[w,v]=a.useState(null);let b;e[0]!==r?(b=async()=>{const F=await r();F.ok?(f(F.targets),g(null)):g(F.error)},e[0]=r,e[1]=b):b=e[1];const j=b;let y,k;e[2]!==j||e[3]!==t?(y=()=>{t&&(g(null),j())},k=[t,j],e[2]=j,e[3]=t,e[4]=y,e[5]=k):(y=e[4],k=e[5]),a.useEffect(y,k);let O;e[6]!==i||e[7]!==j?(O=async function(D){v(D);const B=await i(D);v(null),B.ok?await j():g(B.error)},e[6]=i,e[7]=j,e[8]=O):O=e[8];const m=O;let d;e[9]!==o?(d=(o==null?void 0:o.some(ws))??!1,e[9]=o,e[10]=d):d=e[10];const x=d;let h;e[11]===Symbol.for("react.memo_cache_sentinel")?(h=n.jsx($t,{children:"Agent skill"}),e[11]=h):h=e[11];let p;e[12]===Symbol.for("react.memo_cache_sentinel")?(p=n.jsxs(Pt,{children:[h,n.jsxs(Ut,{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"," ",n.jsx("code",{className:"font-mono",children:"SKILL.md"})," into that CLI’s configuration directory in your home folder."]})]}),e[12]=p):p=e[12];let C;e[13]!==c?(C=c&&n.jsx("p",{role:"alert",className:"text-sm text-destructive",children:c}),e[13]=c,e[14]=C):C=e[14];let T;e[15]!==w||e[16]!==m||e[17]!==o?(T=o===null?n.jsxs("div",{role:"status",className:"flex items-center gap-2 py-4 text-sm text-muted-foreground",children:[n.jsx(ct,{}),"Reading where it is installed…"]}):n.jsx("ul",{className:"flex flex-col gap-2",children:o.map(F=>n.jsxs("li",{className:"flex items-center gap-3 rounded-md border p-2.5",children:[n.jsxs("span",{className:"flex min-w-0 flex-1 flex-col",children:[n.jsx("span",{className:"truncate text-sm font-medium",children:F.label}),n.jsx("span",{className:"truncate font-mono text-xs text-muted-foreground",children:F.configRoot}),F.automatic&&n.jsx("span",{className:"truncate text-xs text-muted-foreground",children:"Already automatic in the sessions Cogpit starts"})]}),F.installed?n.jsxs("span",{className:"flex shrink-0 items-center gap-1 text-xs text-muted-foreground",children:[n.jsx(ft,{"aria-hidden":!0,className:"size-3.5 text-emerald-500"}),"Installed"]}):n.jsx(re,{size:"xs",variant:"outline","aria-label":`Install for ${F.label}`,disabled:w!==null,onClick:()=>void m(F.kind),children:"Install"})]},F.kind))}),e[15]=w,e[16]=m,e[17]=o,e[18]=T):T=e[18];const X=!x||w!==null;let S;e[19]!==m?(S=()=>void m(Fn),e[19]=m,e[20]=S):S=e[20];let q;e[21]===Symbol.for("react.memo_cache_sentinel")?(q=n.jsx(ht,{"data-icon":"inline-start"}),e[21]=q):q=e[21];let $;e[22]!==X||e[23]!==S?($=n.jsxs(re,{variant:"outline",disabled:X,onClick:S,children:[q,"Install for all"]}),e[22]=X,e[23]=S,e[24]=$):$=e[24];let R;e[25]===Symbol.for("react.memo_cache_sentinel")?(R=n.jsx(Ht,{render:n.jsx(re,{type:"button"}),children:"Done"}),e[25]=R):R=e[25];let M;e[26]!==$?(M=n.jsxs(Kt,{children:[$,R]}),e[26]=$,e[27]=M):M=e[27];let L;e[28]!==M||e[29]!==C||e[30]!==T?(L=n.jsxs(Wt,{className:"sm:max-w-md",children:[p,C,T,M]}),e[28]=M,e[29]=C,e[30]=T,e[31]=L):L=e[31];let N;return e[32]!==l||e[33]!==t||e[34]!==L?(N=n.jsx(Yt,{open:t,onOpenChange:l,children:L}),e[32]=l,e[33]=t,e[34]=L,e[35]=N):N=e[35],N}function ws(s){return!s.installed}const bs={x:0,y:0,width:0,height:0,scale:0};function Zt(s,e){if(s.width<=0||s.height<=0||e.width<=0||e.height<=0)return bs;const t=Math.min(1,s.width/e.width,s.height/e.height),l=e.width*t,r=e.height*t;return{x:Math.round((s.width-l)/2),y:Math.round((s.height-r)/2),width:l,height:r,scale:t}}function ot(s,e,t,l,r={}){if(l.scale<=0||l.width<=0||l.height<=0)return null;const i=s-t.left-l.x,o=e-t.top-l.y;return!(i>=0&&o>=0&&i<=l.width&&o<=l.height)&&!r.clamp?null:{x:Tt(i/l.scale,l.width/l.scale),y:Tt(o/l.scale,l.height/l.scale)}}function Tt(s,e){return Math.min(Math.max(s,0),e)}const ys=1,js=2,vs=4,Ss=8;function Re(s){return(s.altKey?ys:0)|(s.ctrlKey?js:0)|(s.metaKey?vs:0)|(s.shiftKey?Ss:0)}const ks=["left","middle","right"];function Dt(s){return ks[s]??"left"}const Cs=150,_t=2,Ns=500,At=5,Es=1,Ts=2,Ds=16,_s="Keyboard captured · Esc to release",As=new Set(["F5","F11","F12"]),Rs=new Set(["i","j","c"]);function Rt(s){return As.has(s.key)||s.metaKey?!0:s.ctrlKey&&s.shiftKey&&Rs.has(s.key.toLowerCase())}function Is(s){if(!(s.ctrlKey||s.metaKey))return s.key.length===1?s.key:s.key==="Enter"?"\r":void 0}function It(s,e,t){return e===Es?s*Ds:e===Ts?s*t:s}function Os(s,e,t){try{s.drawImage(e,t.x,t.y,t.width,t.height)}catch{}}function Ms(s){const e=Ce.c(82),{frame:t,send:l,onSizeChange:r,readOnly:i,className:o}=s,f=i===void 0?!1:i,c=a.useRef(null),g=a.useRef(null),w=a.useRef(null),v=a.useRef(null),b=a.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 y=a.useRef(j);let k;e[1]===Symbol.for("react.memo_cache_sentinel")?(k=new Map,e[1]=k):k=e[1];const O=a.useRef(k);let m;e[2]===Symbol.for("react.memo_cache_sentinel")?(m={width:0,height:0,dpr:1},e[2]=m):m=e[2];const[d,x]=a.useState(m),[h,p]=a.useState(!1),C=t?t.header.deviceWidth:0,T=t?t.header.deviceHeight:0;let X;e[3]!==T||e[4]!==C||e[5]!==d?(X=Zt(d,{width:C,height:T}),e[3]=T,e[4]=C,e[5]=d,e[6]=X):X=e[6];const S=X,q=a.useRef(r);let $,R;e[7]!==r?($=()=>{q.current=r},R=[r],e[7]=r,e[8]=$,e[9]=R):($=e[8],R=e[9]),a.useEffect($,R);let M,L;e[10]===Symbol.for("react.memo_cache_sentinel")?(M=()=>{const G=c.current;if(!G)return;let u=null;const A=()=>{const I=G.getBoundingClientRect(),ue=Math.round(I.width),Ne=Math.round(I.height),De=window.devicePixelRatio||1;x(_e=>_e.width===ue&&_e.height===Ne&&_e.dpr===De?_e:{width:ue,height:Ne,dpr:De}),u&&clearTimeout(u),u=setTimeout(()=>{u=null,ue>0&&Ne>0&&q.current(ue,Ne,De)},Cs)};A();const ee=new ResizeObserver(A);return ee.observe(G),()=>{ee.disconnect(),u&&clearTimeout(u)}},L=[],e[10]=M,e[11]=L):(M=e[10],L=e[11]),a.useEffect(M,L);let N,F;e[12]!==S||e[13]!==t||e[14]!==d?(N=()=>{const G=g.current,u=G==null?void 0:G.getContext("2d");if(!G||!u)return;const A=Math.round(d.width*d.dpr),ee=Math.round(d.height*d.dpr);G.width!==A&&(G.width=A),G.height!==ee&&(G.height=ee),u.setTransform(d.dpr,0,0,d.dpr,0,0),u.clearRect(0,0,d.width,d.height),!(!t||S.width<=0||S.height<=0)&&Os(u,t.bitmap,S)},F=[t,S,d],e[12]=S,e[13]=t,e[14]=d,e[15]=N,e[16]=F):(N=e[15],F=e[16]),a.useEffect(N,F);let D,B;e[17]!==t?(D=()=>()=>it(t),B=[t],e[17]=t,e[18]=D,e[19]=B):(D=e[18],B=e[19]),a.useEffect(D,B);let z;e[20]!==S?(z=function(u,A,ee){const I=g.current;return I?ot(u,A,I.getBoundingClientRect(),S,{clamp:ee}):null},e[20]=S,e[21]=z):z=e[21];const U=z;let ne;e[22]!==l?(ne=function(u,A,ee,I,ue){l({type:"mouse",event:u,x:A.x,y:A.y,button:ee,clickCount:I,modifiers:ue})},e[22]=l,e[23]=ne):ne=e[23];const V=ne;let Q;e[24]===Symbol.for("react.memo_cache_sentinel")?(Q=function(u){const A=y.current,ee=Date.now(),I=u.button===A.button&&ee-A.at<Ns&&Math.abs(u.clientX-A.x)<=At&&Math.abs(u.clientY-A.y)<=At;return y.current={count:I?A.count+1:1,at:ee,x:u.clientX,y:u.clientY,button:u.button},y.current.count},e[24]=Q):Q=e[24];const H=Q;let J;e[25]!==U||e[26]!==V?(J=function(){const u=w.current;if(w.current=null,!u)return;const A=U(u.clientX,u.clientY,b.current);A&&V("move",A,"none",0,u.modifiers)},e[25]=U,e[26]=V,e[27]=J):J=e[27];const _=J;let E;e[28]!==_?(E=function(){v.current!==null&&(cancelAnimationFrame(v.current),v.current=null),_()},e[28]=_,e[29]=E):E=e[29];const te=E;let K;e[30]!==U||e[31]!==V?(K=function(u){if(u.currentTarget.focus(),u.button===_t)return;const A=U(u.clientX,u.clientY,!1);A&&(u.currentTarget.setPointerCapture(u.pointerId),b.current=!0,V("down",A,Dt(u.button),H(u),Re(u)))},e[30]=U,e[31]=V,e[32]=K):K=e[32];const ae=K;let Z;e[33]!==_?(Z=function(u){w.current={clientX:u.clientX,clientY:u.clientY,modifiers:Re(u)},v.current===null&&(v.current=requestAnimationFrame(()=>{v.current=null,_()}))},e[33]=_,e[34]=Z):Z=e[34];const se=Z;let de;e[35]!==te||e[36]!==U||e[37]!==V?(de=function(u){te();const A=b.current;if(b.current=!1,u.currentTarget.hasPointerCapture(u.pointerId)&&u.currentTarget.releasePointerCapture(u.pointerId),u.button===_t)return;const ee=U(u.clientX,u.clientY,A);ee&&V("up",ee,Dt(u.button),y.current.count,Re(u))},e[35]=te,e[36]=U,e[37]=V,e[38]=de):de=e[38];const ve=de;let ge;e[39]!==U||e[40]!==V?(ge=function(u){u.preventDefault();const A=U(u.clientX,u.clientY,!1);if(!A)return;const ee=Re(u);V("down",A,"right",1,ee),V("up",A,"right",1,ee)},e[39]=U,e[40]=V,e[41]=ge):ge=e[41];const he=ge;let pe;e[42]!==l?(pe=function(u){if(u.key==="Escape"){u.currentTarget.blur();return}Rt(u)||u.preventDefault();const A={type:"key",event:"down",key:u.key,code:u.code,modifiers:Re(u)},ee=Is(u);ee!==void 0&&(A.text=ee),O.current.set(u.code,u.key),l(A)},e[42]=l,e[43]=pe):pe=e[43];const be=pe;let fe;e[44]!==l?(fe=function(u){u.key!=="Escape"&&(Rt(u)||u.preventDefault(),O.current.delete(u.code),l({type:"key",event:"up",key:u.key,code:u.code,modifiers:Re(u)}))},e[44]=l,e[45]=fe):fe=e[45];const le=fe;let W,Y;e[46]!==T||e[47]!==C||e[48]!==S||e[49]!==f||e[50]!==l?(W=()=>{const G=g.current;if(!G||f)return;const u=A=>{A.preventDefault();const ee=ot(A.clientX,A.clientY,G.getBoundingClientRect(),S);ee&&l({type:"wheel",x:ee.x,y:ee.y,deltaX:It(A.deltaX,A.deltaMode,C),deltaY:It(A.deltaY,A.deltaMode,T),modifiers:Re(A)})};return G.addEventListener("wheel",u,{passive:!1}),()=>G.removeEventListener("wheel",u)},Y=[l,S,C,T,f],e[46]=T,e[47]=C,e[48]=S,e[49]=f,e[50]=l,e[51]=W,e[52]=Y):(W=e[51],Y=e[52]),a.useEffect(W,Y);let ce,Se;e[53]!==h||e[54]!==l?(ce=()=>{if(!h)return;const G=u=>{var ee;const A=(ee=u.clipboardData)==null?void 0:ee.getData("text/plain");A&&(u.preventDefault(),l({type:"paste",text:A}))};return document.addEventListener("paste",G),()=>document.removeEventListener("paste",G)},Se=[h,l],e[53]=h,e[54]=l,e[55]=ce,e[56]=Se):(ce=e[55],Se=e[56]),a.useEffect(ce,Se);let we,ye;e[57]===Symbol.for("react.memo_cache_sentinel")?(we=()=>()=>{v.current!==null&&cancelAnimationFrame(v.current)},ye=[],e[57]=we,e[58]=ye):(we=e[57],ye=e[58]),a.useEffect(we,ye);let me;e[59]!==l?(me=()=>{for(const[G,u]of O.current)l({type:"key",event:"up",key:u,code:G,modifiers:0});O.current.clear()},e[59]=l,e[60]=me):me=e[60];const je=me;let ie,P;e[61]!==je?(ie=()=>je,P=[je],e[61]=je,e[62]=ie,e[63]=P):(ie=e[62],P=e[63]),a.useEffect(ie,P);let oe;e[64]!==o?(oe=Ae("relative min-h-0 min-w-0 overflow-hidden bg-muted/30",o),e[64]=o,e[65]=oe):oe=e[65];let Ee;e[66]!==h||e[67]!==he||e[68]!==be||e[69]!==le||e[70]!==ae||e[71]!==se||e[72]!==ve||e[73]!==f||e[74]!==je?(Ee=f?n.jsx("canvas",{ref:g,role:"img","aria-label":"Browser viewport, view only",className:"block size-full cursor-default touch-none select-none"}):n.jsx("canvas",{ref:g,role:"application","aria-label":"Browser viewport",tabIndex:0,className:Ae("block size-full cursor-default touch-none select-none outline-none",h&&"ring-2 ring-ring ring-inset"),onFocus:()=>p(!0),onBlur:()=>{p(!1),je()},onPointerDown:ae,onPointerMove:se,onPointerUp:ve,onPointerCancel:ve,onContextMenu:he,onKeyDown:be,onKeyUp:le}),e[66]=h,e[67]=he,e[68]=be,e[69]=le,e[70]=ae,e[71]=se,e[72]=ve,e[73]=f,e[74]=je,e[75]=Ee):Ee=e[75];let ke;e[76]!==h?(ke=h&&n.jsx("div",{className:"pointer-events-none absolute inset-x-0 bottom-2 flex justify-center",children:n.jsx("span",{className:"rounded-full bg-popover px-2 py-0.5 text-[10px] text-muted-foreground shadow-xs",children:_s})}),e[76]=h,e[77]=ke):ke=e[77];let Te;return e[78]!==oe||e[79]!==Ee||e[80]!==ke?(Te=n.jsxs("div",{ref:c,className:oe,children:[Ee,ke]}),e[78]=oe,e[79]=Ee,e[80]=ke,e[81]=Te):Te=e[81],Te}function Bs(s,e){try{const t=document.createElement("canvas");t.width=s.width,t.height=s.height;const l=t.getContext("2d");return!l||t.width===0?null:(l.drawImage(s,0,0),{...e,canvas:t})}catch{return null}}function Ls(s,e,t=1568){var f;const l=s.canvas.width/s.deviceWidth,r={x:e.x*l,y:e.y*l,width:Math.max(1,e.width*l),height:Math.max(1,e.height*l)},i=Math.min(1,t/Math.max(r.width,r.height)),o=document.createElement("canvas");return o.width=Math.max(1,Math.round(r.width*i)),o.height=Math.max(1,Math.round(r.height*i)),(f=o.getContext("2d"))==null||f.drawImage(s.canvas,r.x,r.y,r.width,r.height,0,0,o.width,o.height),{id:crypto.randomUUID(),mediaType:"image/jpeg",data:o.toDataURL("image/jpeg",.85).split(",")[1]??""}}function Ot(s,e){return{x:Math.round(Math.min(s.x,e.x)),y:Math.round(Math.min(s.y,e.y)),width:Math.round(Math.abs(s.x-e.x)),height:Math.round(Math.abs(s.y-e.y))}}function Fs(s){const e=Ce.c(85),{frame:t,onAdd:l,onCancel:r}=s,i=a.useRef(null),o=a.useRef(null);let f;e[0]===Symbol.for("react.memo_cache_sentinel")?(f={width:0,height:0},e[0]=f):f=e[0];const[c,g]=a.useState(f);let w;e[1]!==t.deviceHeight||e[2]!==t.deviceWidth?(w={x:0,y:0,width:t.deviceWidth,height:t.deviceHeight},e[1]=t.deviceHeight,e[2]=t.deviceWidth,e[3]=w):w=e[3];const v=w,[b,j]=a.useState(v),[y,k]=a.useState(null),[O,m]=a.useState(""),[d,x]=a.useState(null);let h;e[4]!==t.deviceHeight||e[5]!==t.deviceWidth||e[6]!==c?(h=Zt(c,{width:t.deviceWidth,height:t.deviceHeight}),e[4]=t.deviceHeight,e[5]=t.deviceWidth,e[6]=c,e[7]=h):h=e[7];const p=h;let C,T;e[8]===Symbol.for("react.memo_cache_sentinel")?(C=()=>{const W=i.current;if(!W)return;const Y=new ResizeObserver(ce=>{const[Se]=ce;Se&&g({width:Se.contentRect.width,height:Se.contentRect.height})});return Y.observe(W),()=>Y.disconnect()},T=[],e[8]=C,e[9]=T):(C=e[8],T=e[9]),a.useEffect(C,T);let X;e[10]!==p.height||e[11]!==p.width||e[12]!==p.x||e[13]!==p.y||e[14]!==t.canvas||e[15]!==c.height||e[16]!==c.width?(X=()=>{const W=o.current;if(!W||p.width<=0)return;const Y=window.devicePixelRatio||1;W.width=Math.round(c.width*Y),W.height=Math.round(c.height*Y);const ce=W.getContext("2d");ce&&(ce.setTransform(Y,0,0,Y,0,0),ce.clearRect(0,0,c.width,c.height),ce.drawImage(t.canvas,p.x,p.y,p.width,p.height))},e[10]=p.height,e[11]=p.width,e[12]=p.x,e[13]=p.y,e[14]=t.canvas,e[15]=c.height,e[16]=c.width,e[17]=X):X=e[17];let S;e[18]!==p||e[19]!==t||e[20]!==c?(S=[t,p,c],e[18]=p,e[19]=t,e[20]=c,e[21]=S):S=e[21],a.useEffect(X,S);let q;e[22]!==p?(q=W=>{const Y=o.current;return Y?ot(W.clientX,W.clientY,Y.getBoundingClientRect(),p,{clamp:!0}):null},e[22]=p,e[23]=q):q=e[23];const $=q;let R;e[24]!==t||e[25]!==O||e[26]!==l||e[27]!==r||e[28]!==b?(R=function(){if(b.width<4||b.height<4){x("Mark a larger region, or use the whole page");return}const Y={id:vn(),kind:"browser",note:O.trim().slice(0,wt.noteChars),url:t.url,title:t.title,viewport:{width:t.deviceWidth,height:t.deviceHeight},region:b,capturedAt:t.capturedAt,browser:t.browser,...t.tab?{tab:t.tab}:{},image:1},ce=l(Y,Ls(t,b));ce?x(ce):r()},e[24]=t,e[25]=O,e[26]=l,e[27]=r,e[28]=b,e[29]=R):R=e[29];const M=R,L=p.x+b.x*p.scale,N=p.y+b.y*p.scale,F=b.width*p.scale,D=b.height*p.scale;let B;e[30]!==L||e[31]!==N||e[32]!==F||e[33]!==D?(B={left:L,top:N,width:F,height:D},e[30]=L,e[31]=N,e[32]=F,e[33]=D,e[34]=B):B=e[34];const z=B,U=b.x===0&&b.y===0&&b.width===t.deviceWidth&&b.height===t.deviceHeight;let ne;e[35]!==r?(ne=W=>{W.key==="Escape"&&(W.preventDefault(),r())},e[35]=r,e[36]=ne):ne=e[36];const V=`Frozen frame of ${t.title||t.url}. Drag to mark a region; the page does not receive these clicks.`;let Q;e[37]!==c.height||e[38]!==c.width?(Q={width:c.width,height:c.height},e[37]=c.height,e[38]=c.width,e[39]=Q):Q=e[39];let H;e[40]!==$?(H=W=>{const Y=$(W);Y&&(W.currentTarget.setPointerCapture(W.pointerId),k(Y),j({x:Math.round(Y.x),y:Math.round(Y.y),width:0,height:0}))},e[40]=$,e[41]=H):H=e[41];let J,_;e[42]!==y||e[43]!==$?(J=W=>{const Y=y&&$(W);y&&Y&&j(Ot(y,Y))},_=W=>{const Y=y&&$(W);y&&Y&&j(Ot(y,Y)),k(null),W.currentTarget.hasPointerCapture(W.pointerId)&&W.currentTarget.releasePointerCapture(W.pointerId)},e[42]=y,e[43]=$,e[44]=J,e[45]=_):(J=e[44],_=e[45]);let E;e[46]!==V||e[47]!==Q||e[48]!==H||e[49]!==J||e[50]!==_?(E=n.jsx("canvas",{ref:o,role:"img","aria-label":V,className:"block size-full cursor-crosshair touch-none select-none",style:Q,onPointerDown:H,onPointerMove:J,onPointerUp:_}),e[46]=V,e[47]=Q,e[48]=H,e[49]=J,e[50]=_,e[51]=E):E=e[51];let te;e[52]!==z||e[53]!==U?(te=!U&&n.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute border-2 border-info bg-info/10",style:z}),e[52]=z,e[53]=U,e[54]=te):te=e[54];let K;e[55]!==E||e[56]!==te?(K=n.jsxs("div",{ref:i,className:"relative min-h-0 flex-1 overflow-hidden bg-muted/30",children:[E,te]}),e[55]=E,e[56]=te,e[57]=K):K=e[57];const ae=U?"Whole page selected. Drag on the frame to mark a region.":`Region ${b.width}×${b.height} at ${b.x},${b.y}`;let Z;e[58]!==ae?(Z=n.jsx("p",{className:"text-xs text-muted-foreground",role:"status",children:ae}),e[58]=ae,e[59]=Z):Z=e[59];let se;e[60]===Symbol.for("react.memo_cache_sentinel")?(se=W=>m(W.target.value),e[60]=se):se=e[60];let de;e[61]!==O?(de=n.jsx(jn,{value:O,onChange:se,placeholder:"What should the agent look at here?","aria-label":"Annotation note",rows:2,maxLength:wt.noteChars,className:"min-h-0 resize-none text-sm",autoFocus:!0}),e[61]=O,e[62]=de):de=e[62];let ve;e[63]!==d?(ve=d&&n.jsx("p",{role:"alert",className:"text-xs text-destructive",children:d}),e[63]=d,e[64]=ve):ve=e[64];let ge;e[65]!==U||e[66]!==v?(ge=!U&&n.jsx(re,{type:"button",variant:"ghost",size:"sm",onClick:()=>j(v),children:"Use whole page"}),e[65]=U,e[66]=v,e[67]=ge):ge=e[67];let he;e[68]!==r?(he=n.jsx(re,{type:"button",variant:"ghost",size:"sm",onClick:r,children:"Cancel"}),e[68]=r,e[69]=he):he=e[69];let pe;e[70]!==M?(pe=n.jsx(re,{type:"button",size:"sm",onClick:M,children:"Add to message"}),e[70]=M,e[71]=pe):pe=e[71];let be;e[72]!==ge||e[73]!==he||e[74]!==pe?(be=n.jsxs("div",{className:"flex flex-wrap items-center justify-end gap-2",children:[ge,he,pe]}),e[72]=ge,e[73]=he,e[74]=pe,e[75]=be):be=e[75];let fe;e[76]!==Z||e[77]!==de||e[78]!==ve||e[79]!==be?(fe=n.jsxs("div",{className:"flex shrink-0 flex-col gap-2 border-t p-2",children:[Z,de,ve,be]}),e[76]=Z,e[77]=de,e[78]=ve,e[79]=be,e[80]=fe):fe=e[80];let le;return e[81]!==ne||e[82]!==K||e[83]!==fe?(le=n.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",onKeyDown:ne,children:[K,fe]}),e[81]=ne,e[82]=K,e[83]=fe,e[84]=le):le=e[84],le}const zs="browser-panel-session",Ps="browser-panel-follow",$s=1e4,Mt=3e3,Us=[];function qs({context:s,active:e,closePanel:t,onAnnotate:l}){var A,ee;const[r,i]=a.useState(null),[o,f]=bt(yt(zs),ut),[c,g]=bt(yt(Ps),!0),[w,v]=a.useState(!1),[b,j]=a.useState(null),[y,k]=a.useState(null),[O,m]=a.useState(!1),d=a.useRef(0),{status:x,error:h,refresh:p,create:C,remove:T,stop:X,setArchived:S,readSkillTargets:q,installSkill:$}=zn(e),R=(x==null?void 0:x.sessions)??Us,M=is(R),L=x!==null&&R.length>0,N=x===null||R.some(I=>I.name===o)?o:M,F=a.useCallback(I=>void Bt(I),[]),D=Xn(e&&L?N:null,F),B=((A=s.session)==null?void 0:A.sessionId)??null,z=a.useMemo(()=>Sn(s.session),[s.session]),U=cs((z==null?void 0:z.session)??null,R,B),ne=R.some(I=>I.name===U&&!I.archived);a.useEffect(()=>{!c||U===null||U===N||!ne||Date.now()-d.current<$s||f(U)},[c,U,ne,N,f]);const V=a.useCallback(I=>{d.current=Date.now(),f(I)},[f]),Q=a.useCallback(async I=>{v(!0);try{const ue=await I();return j(ue.ok?null:ue.error),ue}finally{v(!1)}},[]),{send:H}=D,J=a.useCallback((I,ue,Ne)=>{H({type:"viewport",width:I,height:ue,dpr:Ne})},[H]),_=a.useCallback(I=>{I&&(d.current=0),g(I)},[g]),E=a.useCallback(()=>V(M),[V,M]),te=a.useCallback(()=>m(!0),[]),K=a.useCallback(I=>{V(M),Q(()=>T(I))},[V,M,Q,T]),ae=a.useCallback(I=>void Q(()=>X(I)),[Q,X]),Z=a.useCallback(async(I,ue)=>{const Ne=await Q(()=>S(I,ue));return Ne.ok&&ue&&I===N&&V(M),Ne},[Q,S,N,V,M]),se=a.useCallback(I=>H({type:"navigate",url:I}),[H]),de=a.useCallback(()=>H({type:"back"}),[H]),ve=a.useCallback(()=>H({type:"forward"}),[H]),ge=a.useCallback(()=>H({type:"reload"}),[H]),he=a.useCallback(I=>H({type:"follow",targetId:I}),[H]),pe=a.useCallback(I=>H({type:"close-tab",targetId:I}),[H]),be=a.useCallback(I=>H({type:"launch",url:I}),[H]),fe=Hs(D.lastFrameAt),{frame:le,page:W,tabs:Y,pageGeneration:ce}=D,Se=a.useCallback(()=>{if(!W)return;const I=le==null?void 0:le.page;if(!le||!I||le.pageGeneration!==ce||le.header.targetId!==I.targetId){j("The page is still drawing; try again in a moment");return}const ue=Y.find(De=>De.targetId===le.header.targetId),Ne=Bs(le.bitmap,{deviceWidth:le.header.deviceWidth,deviceHeight:le.header.deviceHeight,url:I.url,title:I.title,browser:N,...ue?{tab:ue.title||ue.url}:{},capturedAt:new Date(le.header.ts).toISOString()});Ne?i(Ne):j("The page is still drawing; try again in a moment")},[le,W,Y,ce,N]),we=((ee=D.state)==null?void 0:ee.state)??null,ye=(x==null?void 0:x.installed)===!1||we==="not-installed",me=!ye&&we==="live",je=!ye&&we==="stopped",ie=R.find(I=>I.name===N)??null,P=Ye(ie,N),oe=os(ie),Ee=(ie==null?void 0:ie.mine)===!0&&!ie.running&&ie.lastUsedAt===null,ke=me&&(D.status==="disconnected"||D.status==="connecting"),Te=x===null&&h!==null,G=D.error??b??(Te?null:h),u=G!==null&&G!==y?G:null;return n.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[n.jsx(gs,{sessions:R,selected:N,home:M,currentSessionId:B,followAgent:c,busy:w,onSelect:V,onToggleFollow:_,onOpenSkill:te,onCreate:C,onRemove:K,onStop:ae,onSetArchived:Z,onShowDefault:E,onClose:t}),me&&n.jsx(ls,{page:D.page,tabs:D.tabs,followed:D.followed,status:ke?"offline":fe,readOnly:!oe,onNavigate:se,onBack:de,onForward:ve,onReload:ge,onFollow:he,onCloseTab:pe,onAnnotate:l&&!r?Se:void 0}),u&&n.jsx(Ys,{message:u,onDismiss:()=>{j(null),k(G)}}),n.jsxs("div",{className:"relative flex min-h-0 flex-1 flex-col",children:[Te&&n.jsx(ts,{message:h,onRetry:p}),ye&&n.jsx(Qn,{onOpenSkill:te}),!ye&&x!==null&&!L&&n.jsx(Nt,{}),je&&(Ee?n.jsx(Nt,{onOpen:be}):n.jsx(es,{name:P,lastUrl:(ie==null?void 0:ie.lastUrl)??null,onOpen:oe?be:void 0})),me&&r&&l&&n.jsx(Fs,{frame:r,onAdd:l,onCancel:()=>i(null)}),me&&!r&&n.jsxs(n.Fragment,{children:[n.jsx(Ms,{className:"flex-1",frame:D.frame,send:H,onSizeChange:J,readOnly:!oe}),ke&&n.jsx(Ws,{}),n.jsx(qn,{activity:z&&U===N?z:null})]}),!ye&&!Te&&(x===null||L)&&!je&&!me&&n.jsxs("div",{role:"status",className:"flex flex-1 items-center justify-center gap-2 text-sm text-muted-foreground",children:[n.jsx(ct,{}),"Connecting to ",P,"…"]})]}),n.jsx(ps,{open:O,onOpenChange:m,readTargets:q,install:$})]})}function Hs(s){const e=Ce.c(5),[,t]=a.useState(0);let l;e[0]!==t||e[1]!==s?(l=()=>{if(s===null)return;const i=s+Mt-Date.now();if(i<=0)return;const o=setTimeout(()=>t(Ks),i);return()=>clearTimeout(o)},e[0]=t,e[1]=s,e[2]=l):l=e[2];let r;return e[3]!==s?(r=[s],e[3]=s,e[4]=r):r=e[4],a.useEffect(l,r),s===null?"idle":Date.now()-s<Mt?"live":"idle"}function Ks(s){return s+1}function Ws(){const s=Ce.c(1);let e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(e=n.jsx("div",{className:"pointer-events-none absolute inset-x-0 top-0 flex justify-center p-2",children:n.jsx("span",{role:"status",className:"rounded-full bg-popover px-2.5 py-0.5 text-[11px] text-muted-foreground shadow-xs",children:"Reconnecting…"})}),s[0]=e):e=s[0],e}function Ys(s){const e=Ce.c(9),{message:t,onDismiss:l}=s;let r;e[0]===Symbol.for("react.memo_cache_sentinel")?(r=n.jsx(dt,{"aria-hidden":!0,className:"size-3.5 shrink-0"}),e[0]=r):r=e[0];let i;e[1]!==t?(i=n.jsx("span",{className:"min-w-0 flex-1 truncate",children:t}),e[1]=t,e[2]=i):i=e[2];let o;e[3]===Symbol.for("react.memo_cache_sentinel")?(o=n.jsx(Ze,{"data-icon":"inline-start"}),e[3]=o):o=e[3];let f;e[4]!==l?(f=n.jsx(re,{variant:"ghost",size:"icon-xs","aria-label":"Dismiss",onClick:l,children:o}),e[4]=l,e[5]=f):f=e[5];let c;return e[6]!==i||e[7]!==f?(c=n.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,i,f]}),e[6]=i,e[7]=f,e[8]=c):c=e[8],c}export{qs as BrowserPanel};
1
+ import{r as a,c as Ce,j as n}from"./vendor-react-gGw_S5I_.js";import{F as et,dq as tt,Z as nt,_ as mt,dr as Qt,c as Ae,E as Ge,f as Xe,U as Ve,h as qe,i as ze,aT as Je,B as re,x as ct,bs as Lt,au as He,aw as en,ax as tn,ay as nn,az as sn,bP as Bt,bQ as Ft,bO as Pt,ds as ut,k as Ke,V as ln,cp as rn,cn as an,co as on,S as xt,dt as cn,l as zt,D as $t,j as Ut,ac as gt,at as un,ae as pt,aC as dn,aD as Ht,aE as Kt,n as Wt,o as Yt,aa as fn,a9 as hn,a5 as mn,a2 as xn,a3 as gn,a4 as pn,a7 as wn,a6 as bn,a8 as yn,ad as jn,du as wt,dv as vn,c_ as bt,aZ as yt,dw as Sn}from"./index-Bg4A-xl7.js";import{bt as kn,T as dt,aB as Gt,u as ft,aT as Cn,a5 as ht,dC as Nn,X as Ze,cN as Xt,bx as En,bI as Tn,bN as Dn,dD as _n,cr as Vt,C as An,cq as Rn,bg as In,dE as On,b0 as jt,aC as Mn,dF as Ln}from"./vendor-ui-Dc_kJXxz.js";import"./vendor-markdown-BEJ8yVzA.js";const Pe="/api/browser",Bn=5e3,Fn="all";function st(s,e=""){return`${Pe}/sessions/${encodeURIComponent(s)}${e}`}function lt(s){return{headers:{"content-type":"application/json"},body:JSON.stringify(s)}}function rt(s,e){return s instanceof Error&&s.message?s.message:e}function Pn(s){const[e,t]=a.useState(null),[l,r]=a.useState(null),i=a.useRef(!1),o=a.useRef(0),f=a.useRef(!1);a.useEffect(()=>(i.current=!0,()=>{i.current=!1}),[]);const c=a.useCallback(async()=>{const m=++o.current;f.current=!0;try{const d=await et(tt(Pe)),x=d.ok?await d.json():null;if(!i.current||m!==o.current)return;x?(t(h=>JSON.stringify(h)===JSON.stringify(x)?h:x),r(null)):r(await nt(d,`Could not read the browser list (${d.status})`))}catch(d){i.current&&m===o.current&&r(rt(d,"Could not read the browser list"))}finally{m===o.current&&(f.current=!1)}},[]);a.useEffect(()=>{if(!s)return;c();const m=setInterval(()=>{f.current||c()},Bn);return()=>clearInterval(m)},[s,c]);const g=a.useCallback(async(m,d,x)=>{let h;try{h=await et(tt(m),d)}catch(C){return{ok:!1,error:rt(C,x)}}if(!h.ok)return{ok:!1,error:await nt(h,x)};const p=await mt(h);return c(),{ok:!0,data:p}},[c]),w=a.useCallback(async(m,d,x)=>{const h=await g(m,d,x);return h.ok?{ok:!0}:h},[g]),v=a.useCallback(async(m,d)=>{const x=await g(`${Pe}/sessions`,{method:"POST",...lt({name:m,note:d})},`Could not create ${m}`);if(!x.ok)return x;const h=x.data;return(h==null?void 0:h.name)===m&&t(p=>p&&!p.sessions.some(C=>C.name===m)?{...p,sessions:[...p.sessions,h]}:p),{ok:!0}},[g]),b=a.useCallback(m=>w(st(m),{method:"DELETE"},`Could not delete ${m}`),[w]),j=a.useCallback(m=>w(st(m,"/stop"),{method:"POST"},`Could not stop ${m}`),[w]),y=a.useCallback((m,d)=>w(st(m),{method:"PATCH",...lt({archived:d})},`Could not ${d?"archive":"restore"} ${m}`),[w]),k=a.useCallback(async()=>{const m="Could not read where the browser skill is installed";let d;try{d=await et(tt(`${Pe}/skill`))}catch(h){return{ok:!1,error:rt(h,m)}}if(!d.ok)return{ok:!1,error:await nt(d,m)};const x=await mt(d);return Array.isArray(x==null?void 0:x.targets)?{ok:!0,targets:x.targets}:{ok:!1,error:m}},[]),O=a.useCallback(async m=>{const d="Could not install the browser skill",x=await g(`${Pe}/skill/install`,{method:"POST",...lt({target:m})},d);if(!x.ok)return x;const{paths:h}=x.data??{};return Array.isArray(h)&&h.every(p=>typeof p=="string")?{ok:!0,paths:h}:{ok:!1,error:d}},[g]);return{status:e,error:l,refresh:c,create:v,remove:b,stop:j,setArchived:y,readSkillTargets:k,installSkill:O}}const at=4;new TextEncoder;const zn=new TextDecoder;function $n(s){if(s.byteLength<at)throw new Error("Frame truncated before header length");const e=new DataView(s.buffer,s.byteOffset,s.byteLength).getUint32(0),t=at+e;if(s.byteLength<t)throw new Error("Frame truncated inside header");return{header:Un(zn.decode(s.subarray(at,t))),jpeg:s.subarray(t)}}function Un(s){let e;try{e=JSON.parse(s)}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:i,scrollOffsetX:o,scrollOffsetY:f,targetId:c,ts:g}=e;if(typeof t!="number"||typeof l!="number"||typeof r!="number"||typeof i!="number"||typeof o!="number"||typeof f!="number"||typeof c!="string"||typeof g!="number")throw new Error("Frame header is missing fields");return{deviceWidth:t,deviceHeight:l,pageScaleFactor:r,offsetTop:i,scrollOffsetX:o,scrollOffsetY:f,targetId:c,ts:g}}const vt=500,Hn=5e3,St=[];function Kn(s){const e=window.location.protocol==="https:"?"wss:":"ws:",t=Qt();return`${e}//${window.location.host}${t}/__browser?session=${encodeURIComponent(s)}`}function Wn(s){try{return JSON.parse(s)}catch{return null}}function Yn(s,e){return s.state===e.state&&s.session===e.session&&s.message===e.message}function kt(s,e){return s.targetId===e.targetId&&s.url===e.url&&s.title===e.title&&s.canGoBack===e.canGoBack&&s.canGoForward===e.canGoForward}function Gn(s,e){return s.length===e.length&&s.every((t,l)=>t.targetId===e[l].targetId&&t.url===e[l].url&&t.title===e[l].title)}function it(s){s&&s.bitmap.close()}function Xn(s,e){const t=Ce.c(18),[l,r]=a.useState("idle"),[i,o]=a.useState(null),[f,c]=a.useState(null),[g,w]=a.useState(St),[v,b]=a.useState(null),[j,y]=a.useState(null),[k,O]=a.useState(null),[m,d]=a.useState(0),[x,h]=a.useState(null);let p;t[0]===Symbol.for("react.memo_cache_sentinel")?(p={page:null,generation:0},t[0]=p):p=t[0];const C=a.useRef(p),T=a.useRef(null),X=a.useRef(null),S=a.useRef(null),J=a.useRef(e);let $,R;t[1]!==e?($=()=>{J.current=e},R=[e],t[1]=e,t[2]=$,t[3]=R):($=t[2],R=t[3]),a.useEffect($,R);let M,B;t[4]!==s?(M=()=>{if(o(null),c(null),C.current={page:null,generation:C.current.generation+1},d(C.current.generation),w(St),b(null),h(null),y(null),O(null),s===null){r("idle");return}const L=s,P={alive:!0,issued:0,applied:0};let U=vt;const ne=function(_,E){if(!P.alive||E<=P.applied){it(_);return}P.applied=E,X.current=_,y(_),O(Date.now())},V=function(_){let E,te;try{const se=$n(new Uint8Array(_));E=se.header,te=new Blob([se.jpeg],{type:"image/jpeg"})}catch{return}const K=P.issued=P.issued+1,{page:ae,generation:Z}=C.current;createImageBitmap(te).then(se=>ne({bitmap:se,header:E,page:ae,pageGeneration:Z},K),Vn)},Q=function(_){var te;const E=Wn(_);if(E)e:switch(E.type){case"status":{o(K=>K&&Yn(K,E)?K:E),h(null);break e}case"page":{const K=C.current.page,ae=!K||K.targetId!==E.targetId||K.url!==E.url;C.current={page:K&&kt(K,E)?K:E,generation:C.current.generation+(ae?1:0)},ae&&d(C.current.generation),c(Z=>Z&&kt(Z,E)?Z:E);break e}case"tabs":{w(K=>Gn(K,E.tabs)?K:E.tabs),b(E.followed);break e}case"error":{h(E.message);break e}case"clipboard":(te=J.current)==null||te.call(J,E.text)}};function H(){if(!P.alive)return;const q=T.current;if(q&&q.readyState!==WebSocket.CLOSED)return;r("connecting");const _=new WebSocket(Kn(L));_.binaryType="arraybuffer",T.current=_,_.onopen=()=>{if(!P.alive){_.close();return}U=vt,r("connected")},_.onmessage=E=>{P.alive&&(typeof E.data=="string"?Q(E.data):E.data instanceof ArrayBuffer&&V(E.data))},_.onclose=()=>{if(!P.alive)return;T.current=null,r("disconnected");const E=U;U=Math.min(U*2,Hn),S.current=setTimeout(H,E)}}return H(),()=>{P.alive=!1,S.current&&(clearTimeout(S.current),S.current=null);const q=T.current;T.current=null,q&&(q.onclose=null,q.close()),it(X.current),X.current=null}},B=[s],t[4]=s,t[5]=M,t[6]=B):(M=t[5],B=t[6]),a.useEffect(M,B);let N;t[7]===Symbol.for("react.memo_cache_sentinel")?(N=L=>{const P=T.current;P&&P.readyState===WebSocket.OPEN&&P.send(JSON.stringify(L))},t[7]=N):N=t[7];const F=N;let D;return t[8]!==x||t[9]!==v||t[10]!==j||t[11]!==k||t[12]!==f||t[13]!==m||t[14]!==i||t[15]!==l||t[16]!==g?(D={status:l,state:i,page:f,tabs:g,followed:v,frame:j,lastFrameAt:k,pageGeneration:m,error:x,send:F},t[8]=x,t[9]=v,t[10]=j,t[11]=k,t[12]=f,t[13]=m,t[14]=i,t[15]=l,t[16]=g,t[17]=D):D=t[17],D}function Vn(){}const qn=6e3;function Jn(s){const e=Ce.c(16),{activity:t}=s,[l,r]=a.useState(!0),i=t?`${t.toolCallId}:${t.done}`:null;let o,f;if(e[0]!==i?(o=()=>{if(i===null)return;r(!0);const O=setTimeout(()=>r(!1),qn);return()=>clearTimeout(O)},f=[i],e[0]=i,e[1]=o,e[2]=f):(o=e[1],f=e[2]),a.useEffect(o,f),!t)return null;const c=l?"opacity-100":"opacity-0";let g;e[3]!==c?(g=Ae("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",c),e[3]=c,e[4]=g):g=e[4];let w;e[5]===Symbol.for("react.memo_cache_sentinel")?(w=n.jsx(kn,{"aria-hidden":!0,className:"size-3.5 shrink-0 text-muted-foreground"}),e[5]=w):w=e[5];let v;e[6]!==t.command?(v=n.jsx("code",{className:"min-w-0 truncate font-mono text-[11px]",children:t.command}),e[6]=t.command,e[7]=v):v=e[7];const b=t.done?"ran":"running";let j;e[8]!==b?(j=n.jsx("span",{className:"shrink-0 text-muted-foreground",children:b}),e[8]=b,e[9]=j):j=e[9];let y;e[10]!==v||e[11]!==j?(y=n.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,v,j]}),e[10]=v,e[11]=j,e[12]=y):y=e[12];let k;return e[13]!==g||e[14]!==y?(k=n.jsx("div",{className:g,children:y}),e[13]=g,e[14]=y,e[15]=k):k=e[15],k}const Ct="npm i -g agent-browser && agent-browser install",Zn=1500;function Qn(s){const e=Ce.c(20),{onOpenSkill:t}=s,[l,r]=a.useState(!1),i=a.useRef(null);let o,f;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=()=>()=>{i.current&&clearTimeout(i.current)},f=[],e[0]=o,e[1]=f):(o=e[0],f=e[1]),a.useEffect(o,f);let c;e[2]===Symbol.for("react.memo_cache_sentinel")?(c=async function(){await Lt(Ct)&&(r(!0),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>r(!1),Zn))},e[2]=c):c=e[2];const g=c;let w,v;e[3]===Symbol.for("react.memo_cache_sentinel")?(w=n.jsx(Ve,{variant:"icon",children:n.jsx(Gt,{})}),v=n.jsx(qe,{children:"Nothing to show yet"}),e[3]=w,e[4]=v):(w=e[3],v=e[4]);let b;e[5]===Symbol.for("react.memo_cache_sentinel")?(b=n.jsxs(Xe,{children:[w,v,n.jsxs(ze,{children:["This panel streams a real browser the agent drives. That takes the"," ",n.jsx("code",{className:"font-mono",children:"agent-browser"})," command, which is not on this machine yet."]})]}),e[5]=b):b=e[5];let j;e[6]===Symbol.for("react.memo_cache_sentinel")?(j=n.jsx("code",{className:"min-w-0 flex-1 truncate font-mono text-xs",children:Ct}),e[6]=j):j=e[6];const y=l?"Copied":"Copy install command";let k;e[7]===Symbol.for("react.memo_cache_sentinel")?(k=()=>void g(),e[7]=k):k=e[7];let O;e[8]!==l?(O=l?n.jsx(ft,{"data-icon":"inline-start",className:"text-emerald-500"}):n.jsx(Cn,{"data-icon":"inline-start"}),e[8]=l,e[9]=O):O=e[9];let m;e[10]!==O||e[11]!==y?(m=n.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,n.jsx(re,{variant:"ghost",size:"icon-xs","aria-label":y,onClick:k,children:O})]}),e[10]=O,e[11]=y,e[12]=m):m=e[12];let d;e[13]===Symbol.for("react.memo_cache_sentinel")?(d=n.jsx(ht,{"data-icon":"inline-start"}),e[13]=d):d=e[13];let x;e[14]!==t?(x=n.jsxs(re,{variant:"outline",size:"sm",onClick:t,children:[d,"Install the agent skill…"]}),e[14]=t,e[15]=x):x=e[15];let h;e[16]===Symbol.for("react.memo_cache_sentinel")?(h=n.jsx(ze,{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]=h):h=e[16];let p;return e[17]!==m||e[18]!==x?(p=n.jsxs(Ge,{className:"size-full",children:[b,n.jsxs(Je,{children:[m,x,h]})]}),e[17]=m,e[18]=x,e[19]=p):p=e[19],p}function es(s){const e=Ce.c(14),{name:t,lastUrl:l,onOpen:r}=s;let i;e[0]===Symbol.for("react.memo_cache_sentinel")?(i=n.jsx(Ve,{variant:"icon",children:n.jsx(Nn,{})}),e[0]=i):i=e[0];let o;e[1]!==t?(o=n.jsxs(qe,{children:[t," isn’t running"]}),e[1]=t,e[2]=o):o=e[2];const f=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 c;e[3]!==f?(c=n.jsx(ze,{children:f}),e[3]=f,e[4]=c):c=e[4];let g;e[5]!==o||e[6]!==c?(g=n.jsxs(Xe,{children:[i,o,c]}),e[5]=o,e[6]=c,e[7]=g):g=e[7];let w;e[8]!==l||e[9]!==r?(w=r&&n.jsx(Je,{children:n.jsx(qt,{lastUrl:l,onOpen:r})}),e[8]=l,e[9]=r,e[10]=w):w=e[10];let v;return e[11]!==g||e[12]!==w?(v=n.jsxs(Ge,{className:"size-full",children:[g,w]}),e[11]=g,e[12]=w,e[13]=v):v=e[13],v}function Nt(s){const e=Ce.c(5),{onOpen:t}=s;let l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l=n.jsxs(Xe,{children:[n.jsx(Ve,{variant:"icon",children:n.jsx(Gt,{})}),n.jsx(qe,{children:"Your agents’ browsers show up here"}),n.jsx(ze,{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&&n.jsx(Je,{children:n.jsx(qt,{lastUrl:null,onOpen:t})}),e[1]=t,e[2]=r):r=e[2];let i;return e[3]!==r?(i=n.jsxs(Ge,{className:"size-full",children:[l,r]}),e[3]=r,e[4]=i):i=e[4],i}function qt(s){const e=Ce.c(14),{lastUrl:t,onOpen:l}=s,[r,i]=a.useState(null),o=r??t??"";let f;e[0]!==l||e[1]!==o?(f=function(O){O.preventDefault();const m=o.trim();m&&l(m)},e[0]=l,e[1]=o,e[2]=f):f=e[2];const c=f;let g;e[3]===Symbol.for("react.memo_cache_sentinel")?(g=k=>i(k.target.value),e[3]=g):g=e[3];let w;e[4]!==o?(w=n.jsx(He,{"aria-label":"Page to open",className:"h-8 text-sm",placeholder:"example.com",spellCheck:!1,autoComplete:"off",value:o,onChange:g}),e[4]=o,e[5]=w):w=e[5];let v;e[6]!==o?(v=o.trim(),e[6]=o,e[7]=v):v=e[7];const b=!v;let j;e[8]!==b?(j=n.jsx(re,{type:"submit",size:"sm",disabled:b,children:"Open"}),e[8]=b,e[9]=j):j=e[9];let y;return e[10]!==c||e[11]!==w||e[12]!==j?(y=n.jsxs("form",{className:"flex w-full items-center gap-2",onSubmit:c,children:[w,j]}),e[10]=c,e[11]=w,e[12]=j,e[13]=y):y=e[13],y}function ts({message:s,onRetry:e}){const[t,l]=a.useState(!1);async function r(){l(!0);try{await e()}finally{l(!1)}}return n.jsxs(Ge,{className:"size-full",children:[n.jsxs(Xe,{children:[n.jsx(Ve,{variant:"icon",children:n.jsx(dt,{})}),n.jsx(qe,{children:"Could not load the browsers"}),n.jsx(ze,{children:s})]}),n.jsx(Je,{children:n.jsxs(re,{variant:"outline",size:"sm",disabled:t,onClick:()=>void r(),children:[t&&n.jsx(ct,{"data-icon":"inline-start"}),"Retry"]})})]})}function Et(s){if(s.url==="about:blank"&&(!s.title.trim()||s.title==="about:blank"))return"New tab";if(s.title.trim())return s.title.trim();try{return new URL(s.url).hostname||s.url}catch{return s.url}}const ns={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 ss(s){const e=Ce.c(17),{status:t}=s,l=ns[t];let r;e[0]!==l.tone?(r=Ae("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 i;e[2]!==r?(i=n.jsx("span",{className:r}),e[2]=r,e[3]=i):i=e[3];let o;e[4]!==l.dot?(o=Ae("size-1.5 rounded-full",l.dot),e[4]=l.dot,e[5]=o):o=e[5];let f;e[6]!==o?(f=n.jsx("span",{"aria-hidden":"true",className:o}),e[6]=o,e[7]=f):f=e[7];let c;e[8]!==l.label||e[9]!==i||e[10]!==f?(c=n.jsxs(Bt,{render:i,children:[f,l.label]}),e[8]=l.label,e[9]=i,e[10]=f,e[11]=c):c=e[11];let g;e[12]!==l.hint?(g=n.jsx(Ft,{children:l.hint}),e[12]=l.hint,e[13]=g):g=e[13];let w;return e[14]!==c||e[15]!==g?(w=n.jsxs(Pt,{children:[c,g]}),e[14]=c,e[15]=g,e[16]=w):w=e[16],w}const ls=a.memo(function(e){const t=Ce.c(56),{page:l,tabs:r,followed:i,status:o,readOnly:f,onNavigate:c,onBack:g,onForward:w,onReload:v,onAnnotate:b,onFollow:j,onCloseTab:y}=e,k=f===void 0?!1:f,[O,m]=a.useState(null),d=(l==null?void 0:l.url)??"";let x;t[0]!==O||t[1]!==d||t[2]!==c||t[3]!==k?(x=function(se){if(se.preventDefault(),k)return;const de=(O??d).trim();m(null),de&&c(de)},t[0]=O,t[1]=d,t[2]=c,t[3]=k,t[4]=x):x=t[4];const h=x;let p;t[5]===Symbol.for("react.memo_cache_sentinel")?(p=function(se){se.key==="Escape"&&(se.preventDefault(),m(null),se.currentTarget.blur())},t[5]=p):p=t[5];const C=p,T=k||!(l!=null&&l.canGoBack);let X;t[6]===Symbol.for("react.memo_cache_sentinel")?(X=n.jsx(Xt,{"data-icon":"inline-start"}),t[6]=X):X=t[6];let S;t[7]!==g||t[8]!==T?(S=n.jsx(re,{variant:"ghost",size:"icon-sm","aria-label":"Back",disabled:T,onClick:g,children:X}),t[7]=g,t[8]=T,t[9]=S):S=t[9];const J=k||!(l!=null&&l.canGoForward);let $;t[10]===Symbol.for("react.memo_cache_sentinel")?($=n.jsx(En,{"data-icon":"inline-start"}),t[10]=$):$=t[10];let R;t[11]!==w||t[12]!==J?(R=n.jsx(re,{variant:"ghost",size:"icon-sm","aria-label":"Forward",disabled:J,onClick:w,children:$}),t[11]=w,t[12]=J,t[13]=R):R=t[13];const M=k||!l;let B;t[14]===Symbol.for("react.memo_cache_sentinel")?(B=n.jsx(Tn,{"data-icon":"inline-start"}),t[14]=B):B=t[14];let N;t[15]!==v||t[16]!==M?(N=n.jsx(re,{variant:"ghost",size:"icon-sm","aria-label":"Reload",disabled:M,onClick:v,children:B}),t[15]=v,t[16]=M,t[17]=N):N=t[17];const F=O??d;let D;t[18]===Symbol.for("react.memo_cache_sentinel")?(D=Z=>m(Z.target.value),t[18]=D):D=t[18];let L;t[19]===Symbol.for("react.memo_cache_sentinel")?(L=()=>m(null),t[19]=L):L=t[19];let P;t[20]!==k||t[21]!==F?(P=n.jsx(en,{"aria-label":"Page URL",className:"text-xs",placeholder:"Enter a URL",spellCheck:!1,autoComplete:"off",readOnly:k,value:F,onChange:D,onFocus:rs,onBlur:L,onKeyDown:C}),t[20]=k,t[21]=F,t[22]=P):P=t[22];const U=!d;let ne;t[23]!==d?(ne=()=>window.open(d,"_blank","noopener,noreferrer"),t[23]=d,t[24]=ne):ne=t[24];let V;t[25]===Symbol.for("react.memo_cache_sentinel")?(V=n.jsx(Dn,{"data-icon":"inline-start"}),t[25]=V):V=t[25];let Q;t[26]!==U||t[27]!==ne?(Q=n.jsx(tn,{align:"inline-end",children:n.jsx(nn,{size:"icon-xs","aria-label":"Open in your browser",disabled:U,onClick:ne,children:V})}),t[26]=U,t[27]=ne,t[28]=Q):Q=t[28];let H;t[29]!==P||t[30]!==Q?(H=n.jsxs(sn,{className:"h-7",children:[P,Q]}),t[29]=P,t[30]=Q,t[31]=H):H=t[31];let q;t[32]!==h||t[33]!==H?(q=n.jsx("form",{className:"ml-1 min-w-0 flex-1",onSubmit:h,children:H}),t[32]=h,t[33]=H,t[34]=q):q=t[34];let _;t[35]!==b||t[36]!==l?(_=b&&n.jsx(re,{variant:"ghost",size:"icon-sm","aria-label":"Annotate this frame for the message",title:"Annotate for the message",disabled:!l,onClick:b,children:n.jsx(_n,{"data-icon":"inline-start"})}),t[35]=b,t[36]=l,t[37]=_):_=t[37];let E;t[38]!==o?(E=o&&n.jsx(ss,{status:o}),t[38]=o,t[39]=E):E=t[39];let te;t[40]!==N||t[41]!==q||t[42]!==_||t[43]!==E||t[44]!==S||t[45]!==R?(te=n.jsxs("div",{className:"flex items-center gap-0.5",children:[S,R,N,q,_,E]}),t[40]=N,t[41]=q,t[42]=_,t[43]=E,t[44]=S,t[45]=R,t[46]=te):te=t[46];let K;t[47]!==i||t[48]!==y||t[49]!==j||t[50]!==k||t[51]!==r?(K=r.length>0&&n.jsx("div",{className:"flex items-center gap-1 overflow-x-auto pb-0.5",children:r.map(Z=>n.jsxs("div",{className:Ae("flex max-w-48 shrink-0 items-center rounded-md",Z.targetId===i&&"bg-secondary"),children:[n.jsx(re,{size:"xs",variant:"ghost",className:Ae("min-w-0 shrink",!k&&"rounded-r-none"),"aria-current":Z.targetId===i?"page":void 0,title:Z.title||Z.url,onClick:()=>j(Z.targetId),onMouseDown:as,onAuxClick:se=>{se.button!==1||k||(se.preventDefault(),y(Z.targetId))},children:n.jsx("span",{className:"truncate",children:Et(Z)})}),!k&&n.jsx(re,{size:"icon-xs",variant:"ghost",className:"rounded-l-none","aria-label":`Close tab: ${Et(Z)}`,title:"Close tab",onClick:()=>y(Z.targetId),children:n.jsx(Ze,{"data-icon":"inline-start"})})]},Z.targetId))}),t[47]=i,t[48]=y,t[49]=j,t[50]=k,t[51]=r,t[52]=K):K=t[52];let ae;return t[53]!==te||t[54]!==K?(ae=n.jsxs("div",{className:"flex shrink-0 flex-col gap-1 border-b px-2 py-1.5",children:[te,K]}),t[53]=te,t[54]=K,t[55]=ae):ae=t[55],ae});function rs(s){return s.target.select()}function as(s){s.button===1&&s.preventDefault()}function is(s){var e;return((e=s.find(t=>t.mine))==null?void 0:e.name)??ut}function We(s){return(s==null?void 0:s.control)??"own"}function os(s){return We(s)!=="watch"}function Ye(s,e){return s!=null&&s.mine?"Your browser":s!=null&&s.account?`${s.account}'s browser`:e}function cs(s,e,t){if(s!==ut||t===null)return s;const l=e.find(r=>(r.mine||r.account)&&r.driverSessionId===t);return(l==null?void 0:l.name)??s}function us(s){if(!s||!Number.isFinite(Date.parse(s)))return null;if(Date.now()-Date.parse(s)>=10080*60*1e3)return new Date(s).toLocaleDateString();const e=ln(s);return e==="now"?"just now":`${e} ago`}function Jt(s){const e=Ce.c(4),{running:t}=s,l=t?"bg-emerald-500":"ring-1 ring-muted-foreground/50 ring-inset";let r;e[0]!==l?(r=Ae("size-2 shrink-0 rounded-full",l),e[0]=l,e[1]=r):r=e[1];let i;return e[2]!==r?(i=n.jsx("span",{"aria-hidden":!0,className:r}),e[2]=r,e[3]=i):i=e[3],i}function ds(s){const e=Ce.c(89),{sessions:t,selected:l,home:r,currentSessionId:i,busy:o,onSelect:f,onSetArchived:c,children:g}=s,[w,v]=a.useState(!1),[b,j]=a.useState(""),[y,k]=a.useState(!1),O=a.useRef(null);let m,d,x,h,p,C,T,X,S,J,$,R,M,B,N,F,D;if(e[0]!==o||e[1]!==i||e[2]!==r||e[3]!==f||e[4]!==c||e[5]!==w||e[6]!==b||e[7]!==l||e[8]!==t||e[9]!==y){let E;e[27]!==l?(E=z=>z.name===l,e[27]=l,e[28]=E):E=e[28];const te=t.find(E),K=b.trim().toLowerCase();let ae;e[29]!==r||e[30]!==l?(ae=z=>!!z.archived&&!z.isDefault&&z.name!==r&&!z.running&&z.name!==l,e[29]=r,e[30]=l,e[31]=ae):ae=e[31];const Z=ae,se=z=>`${z.name} ${Ye(z,z.name)} ${z.note??""}`.toLowerCase().includes(K);let de;e[32]!==r?(de=(z,oe)=>+(oe.name===r)-+(z.name===r)||Number(oe.isDefault)-Number(z.isDefault)||Number(oe.running)-Number(z.running),e[32]=r,e[33]=de):de=e[33];const ve=t.filter(z=>!Z(z)&&se(z)).sort(de);x=t.filter(Z);const ge=x.filter(se);D=y&&!K?[]:ve,F=y||K?ge:[];let he;e[34]===Symbol.for("react.memo_cache_sentinel")?(he=function(){v(!1)},e[34]=he):he=e[34],h=he;const pe=async function(oe){oe.archived&&!(await c(oe.name,!1)).ok||(f(oe.name),h())},be=async function(oe){var ke;(await c(oe,!0)).ok&&((ke=O.current)==null||ke.focus())};d=rn,N=w,e[35]===Symbol.for("react.memo_cache_sentinel")?(C=z=>{v(z),z&&(j(""),k(!1))},e[35]=C):C=e[35];let fe;e[36]===Symbol.for("react.memo_cache_sentinel")?(fe=n.jsx(re,{variant:"ghost",size:"xs","aria-label":"Switch browser",className:"max-w-40"}),e[36]=fe):fe=e[36];const le=n.jsx(Jt,{running:(te==null?void 0:te.running)??!1}),W=Ye(te,l);let Y;e[37]!==W?(Y=n.jsx("span",{className:"truncate",children:W}),e[37]=W,e[38]=Y):Y=e[38];let ce;e[39]===Symbol.for("react.memo_cache_sentinel")?(ce=n.jsx(An,{"data-icon":"inline-end",className:"opacity-60"}),e[39]=ce):ce=e[39],e[40]!==le||e[41]!==Y?(T=n.jsxs(an,{render:fe,children:[le,Y,ce]}),e[40]=le,e[41]=Y,e[42]=T):T=e[42],m=on,J="Browsers",$=O,R="flex max-h-[min(32rem,var(--available-height))] w-80 max-w-[calc(100vw-1rem)] flex-col overflow-hidden";const Se=y&&!K?"Archived browsers":"Browsers";let we;e[43]!==Se?(we=n.jsx("span",{className:"text-sm font-medium",children:Se}),e[43]=Se,e[44]=we):we=e[44];let ye;e[45]===Symbol.for("react.memo_cache_sentinel")?(ye=n.jsx(re,{variant:"ghost",size:"icon-xs","aria-label":"Close browser picker",onClick:h,children:n.jsx(Ze,{"data-icon":"inline-start"})}),e[45]=ye):ye=e[45];let me;e[46]!==we?(me=n.jsxs("div",{className:"flex items-center justify-between pl-1",children:[we,ye]}),e[46]=we,e[47]=me):me=e[47];let je;e[48]===Symbol.for("react.memo_cache_sentinel")?(je=z=>j(z.target.value),e[48]=je):je=e[48];let ie;e[49]!==b?(ie=n.jsx(He,{ref:O,"aria-label":"Search browsers",placeholder:"Search browsers…",value:b,onChange:je}),e[49]=b,e[50]=ie):ie=e[50],e[51]!==me||e[52]!==ie?(M=n.jsxs("div",{className:"flex shrink-0 flex-col gap-2 p-2",children:[me,ie]}),e[51]=me,e[52]=ie,e[53]=M):M=e[53],e[54]===Symbol.for("react.memo_cache_sentinel")?(B=n.jsx(xt,{}),e[54]=B):B=e[54],p="min-h-0 max-h-72 overflow-y-auto overscroll-contain p-1",X="Browser list",S=[{label:"Recent browsers",sessions:D,archived:!1},{label:"Archived browsers",sessions:F,archived:!0}].filter(fs).map(z=>n.jsxs("div",{children:[z.archived&&!!K&&n.jsx("p",{className:"px-2 py-1 text-xs text-muted-foreground",children:"Archived"}),n.jsx("ul",{"aria-label":z.label,children:z.sessions.map(oe=>n.jsx(hs,{session:oe,archived:z.archived,home:r,selected:l,currentSessionId:i,busy:o,onPick:pe,onArchive:be},oe.name))})]},z.label)),e[0]=o,e[1]=i,e[2]=r,e[3]=f,e[4]=c,e[5]=w,e[6]=b,e[7]=l,e[8]=t,e[9]=y,e[10]=m,e[11]=d,e[12]=x,e[13]=h,e[14]=p,e[15]=C,e[16]=T,e[17]=X,e[18]=S,e[19]=J,e[20]=$,e[21]=R,e[22]=M,e[23]=B,e[24]=N,e[25]=F,e[26]=D}else m=e[10],d=e[11],x=e[12],h=e[13],p=e[14],C=e[15],T=e[16],X=e[17],S=e[18],J=e[19],$=e[20],R=e[21],M=e[22],B=e[23],N=e[24],F=e[25],D=e[26];let L;e[55]!==F||e[56]!==D.length?(L=D.length===0&&F.length===0&&n.jsx("p",{role:"status",className:"px-3 py-6 text-center text-sm text-muted-foreground",children:"No browsers found."}),e[55]=F,e[56]=D.length,e[57]=L):L=e[57];let P;e[58]!==p||e[59]!==L||e[60]!==X||e[61]!==S?(P=n.jsxs("div",{className:p,"aria-label":X,children:[S,L]}),e[58]=p,e[59]=L,e[60]=X,e[61]=S,e[62]=P):P=e[62];let U;e[63]===Symbol.for("react.memo_cache_sentinel")?(U=n.jsx(xt,{}),e[63]=U):U=e[63];let ne;e[64]!==x.length||e[65]!==y?(ne=(x.length>0||y)&&n.jsxs(re,{variant:"ghost",size:"sm",className:"w-full justify-start","aria-expanded":y,onClick:()=>{k(!y),j("")},children:[y?n.jsx(Xt,{"data-icon":"inline-start"}):n.jsx(Vt,{"data-icon":"inline-start"}),y?"Back to recent":"Archived",!y&&n.jsx(Ke,{variant:"secondary",children:x.length})]}),e[64]=x.length,e[65]=y,e[66]=ne):ne=e[66];let V;e[67]===Symbol.for("react.memo_cache_sentinel")?(V=n.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]=V):V=e[67];let Q;e[68]!==g||e[69]!==h?(Q=g(h),e[68]=g,e[69]=h,e[70]=Q):Q=e[70];let H;e[71]!==ne||e[72]!==Q?(H=n.jsxs("div",{className:"flex shrink-0 flex-col gap-1 p-2",children:[ne,V,Q]}),e[71]=ne,e[72]=Q,e[73]=H):H=e[73];let q;e[74]!==m||e[75]!==P||e[76]!==H||e[77]!==J||e[78]!==$||e[79]!==R||e[80]!==M||e[81]!==B?(q=n.jsxs(m,{"aria-label":J,initialFocus:$,className:R,children:[M,B,P,U,H]}),e[74]=m,e[75]=P,e[76]=H,e[77]=J,e[78]=$,e[79]=R,e[80]=M,e[81]=B,e[82]=q):q=e[82];let _;return e[83]!==d||e[84]!==C||e[85]!==T||e[86]!==q||e[87]!==N?(_=n.jsxs(d,{open:N,onOpenChange:C,children:[T,q]}),e[83]=d,e[84]=C,e[85]=T,e[86]=q,e[87]=N,e[88]=_):_=e[88],_}function fs(s){return s.sessions.length>0}function hs(s){const e=Ce.c(53),{session:t,archived:l,home:r,selected:i,currentSessionId:o,busy:f,onPick:c,onArchive:g}=s;let w;e[0]!==t.lastUsedAt?(w=us(t.lastUsedAt),e[0]=t.lastUsedAt,e[1]=w):w=e[1];const v=w;let b;e[2]!==t?(b=Ye(t,t.name),e[2]=t,e[3]=b):b=e[3];const j=b,y=t.running&&t.driverSessionId!==null&&t.driverSessionId!==o,k=t.isDefault?r===t.name?"Default":"Host default":null,O=`${l?"Restore and switch to":"Switch to"} ${j}`,m=t.name===i?"true":void 0;let d;e[4]!==c||e[5]!==t?(d=()=>void c(t),e[4]=c,e[5]=t,e[6]=d):d=e[6];let x;e[7]!==t.running?(x=n.jsx(Jt,{running:t.running}),e[7]=t.running,e[8]=x):x=e[8];let h;e[9]!==j?(h=n.jsx("span",{className:"truncate",children:j}),e[9]=j,e[10]=h):h=e[10];const p=t.running?"running":"stopped";let C;e[11]!==p?(C=n.jsx("span",{className:"sr-only",children:p}),e[11]=p,e[12]=C):C=e[12];let T;e[13]!==k?(T=k&&n.jsx(Ke,{variant:"secondary",children:k}),e[13]=k,e[14]=T):T=e[14];let X;e[15]!==t?(X=We(t)==="watch"&&n.jsx(Ke,{variant:"outline",children:"View only"}),e[15]=t,e[16]=X):X=e[16];let S;e[17]!==v?(S=v&&n.jsx("span",{className:"ml-auto shrink-0 text-xs font-normal text-muted-foreground",children:v}),e[17]=v,e[18]=S):S=e[18];let J;e[19]!==T||e[20]!==X||e[21]!==S||e[22]!==h||e[23]!==C?(J=n.jsxs("span",{className:"flex w-full min-w-0 items-center gap-1.5",children:[h,C,T,X,S]}),e[19]=T,e[20]=X,e[21]=S,e[22]=h,e[23]=C,e[24]=J):J=e[24];let $;e[25]!==y?($=y&&n.jsx("span",{className:"max-w-full truncate text-xs font-normal text-muted-foreground",children:"driven by another session"}),e[25]=y,e[26]=$):$=e[26];let R;e[27]!==J||e[28]!==$?(R=n.jsxs("span",{className:"flex min-w-0 flex-1 flex-col items-start gap-0.5",children:[J,$]}),e[27]=J,e[28]=$,e[29]=R):R=e[29];let M;e[30]!==i||e[31]!==t.name?(M=t.name===i&&n.jsx(ft,{"data-icon":"inline-end"}),e[30]=i,e[31]=t.name,e[32]=M):M=e[32];let B;e[33]!==l?(B=l&&n.jsx(Rn,{"data-icon":"inline-end"}),e[33]=l,e[34]=B):B=e[34];let N;e[35]!==f||e[36]!==R||e[37]!==M||e[38]!==B||e[39]!==O||e[40]!==m||e[41]!==d||e[42]!==x?(N=n.jsxs(re,{variant:"ghost",className:"h-auto min-h-10 min-w-0 flex-1 justify-start px-2 py-2","aria-label":O,"aria-current":m,disabled:f,onClick:d,children:[x,R,M,B]}),e[35]=f,e[36]=R,e[37]=M,e[38]=B,e[39]=O,e[40]=m,e[41]=d,e[42]=x,e[43]=N):N=e[43];let F;e[44]!==l||e[45]!==f||e[46]!==r||e[47]!==g||e[48]!==t?(F=!l&&!t.isDefault&&t.name!==r&&!t.running&&We(t)==="own"&&n.jsx(re,{variant:"ghost",size:"icon-sm","aria-label":`Archive ${t.name}`,title:`Archive ${t.name}`,disabled:f,onClick:()=>void g(t.name),children:n.jsx(Vt,{"data-icon":"inline-start"})}),e[44]=l,e[45]=f,e[46]=r,e[47]=g,e[48]=t,e[49]=F):F=e[49];let D;return e[50]!==N||e[51]!==F?(D=n.jsxs("li",{className:"group flex items-center gap-1 rounded-md",children:[N,F]}),e[50]=N,e[51]=F,e[52]=D):D=e[52],D}const ms=/^[a-z0-9][a-z0-9_-]{0,39}$/,xs="Lowercase letters, numbers, - and _, starting with a letter or number (40 max).",gs=a.memo(function(e){const t=Ce.c(112),{sessions:l,selected:r,home:i,currentSessionId:o,followAgent:f,busy:c,onSelect:g,onToggleFollow:w,onOpenSkill:v,onCreate:b,onRemove:j,onStop:y,onSetArchived:k,onShowDefault:O,onClose:m}=e,d=c===void 0?!1:c,x=a.useId(),h=a.useId(),[p,C]=a.useState(!1),[T,X]=a.useState(""),[S,J]=a.useState(""),[$,R]=a.useState(null),[M,B]=a.useState(!1),[N,F]=a.useState(null),D=r===i;let L,P;t[0]!==r||t[1]!==l?(L=l.find(xe=>xe.name===r)??null,P=We(L),t[0]=r,t[1]=l,t[2]=L,t[3]=P):(L=t[2],P=t[3]);const U=P;let ne;if(t[4]!==i||t[5]!==l){let xe;t[7]!==i?(xe=Fe=>Fe.mine&&Fe.name===i,t[7]=i,t[8]=xe):xe=t[8],ne=l.some(xe),t[4]=i,t[5]=l,t[6]=ne}else ne=t[6];const V=ne,Q=!D&&!(L!=null&&L.isDefault)&&U!=="watch",H=!D&&!(L!=null&&L.isDefault)&&U==="own";let q,_;t[9]!==T?(_=T.trim(),q=_.length>0&&!ms.test(_),t[9]=T,t[10]=q,t[11]=_):(q=t[10],_=t[11]);const E=q,te=E?xs:$,K=_.length>0&&!E&&!M;let ae;t[12]===Symbol.for("react.memo_cache_sentinel")?(ae=function(){X(""),J(""),R(null),B(!1),C(!0)},t[12]=ae):ae=t[12];const Z=ae;let se;t[13]!==K||t[14]!==S||t[15]!==b||t[16]!==g||t[17]!==_?(se=async function(){if(!K)return;B(!0);const Fe=await b(_,S.trim());if(B(!1),!Fe.ok){R(Fe.error);return}C(!1),g(_)},t[13]=K,t[14]=S,t[15]=b,t[16]=g,t[17]=_,t[18]=se):se=t[18];const de=se,ve=!D&&"border-amber-500/40 bg-amber-500/10";let ge;t[19]!==ve?(ge=Ae("@container/browser-bar flex h-10 shrink-0 items-center gap-2 border-b px-2",ve),t[19]=ve,t[20]=ge):ge=t[20];let he;t[21]!==d||t[22]!==H||t[23]!==Q||t[24]!==v||t[25]!==y||t[26]!==r||t[27]!==(L==null?void 0:L.running)?(he=xe=>n.jsxs(n.Fragment,{children:[n.jsxs(re,{variant:"outline",size:"sm",disabled:d,onClick:()=>{xe(),Z()},children:[n.jsx(In,{"data-icon":"inline-start"}),"New browser…"]}),n.jsxs("div",{className:"flex items-center gap-1",children:[n.jsxs(re,{variant:"ghost",size:"xs",onClick:()=>{xe(),v()},children:[n.jsx(ht,{"data-icon":"inline-start"}),"Agent skill…"]}),Q&&n.jsxs(re,{variant:"ghost",size:"xs",disabled:d||!(L!=null&&L.running),onClick:()=>{xe(),y(r)},children:[n.jsx(On,{"data-icon":"inline-start"}),"Stop"]}),H&&n.jsxs(re,{variant:"ghost",size:"xs",disabled:d,onClick:()=>{xe(),F(r)},children:[n.jsx(jt,{"data-icon":"inline-start"}),"Delete…"]})]})]}),t[21]=d,t[22]=H,t[23]=Q,t[24]=v,t[25]=y,t[26]=r,t[27]=L==null?void 0:L.running,t[28]=he):he=t[28];let pe;t[29]!==d||t[30]!==o||t[31]!==i||t[32]!==g||t[33]!==k||t[34]!==r||t[35]!==l||t[36]!==he?(pe=n.jsx(ds,{sessions:l,selected:r,home:i,currentSessionId:o,busy:d,onSelect:g,onSetArchived:k,children:he}),t[29]=d,t[30]=o,t[31]=i,t[32]=g,t[33]=k,t[34]=r,t[35]=l,t[36]=he,t[37]=pe):pe=t[37];let be;t[38]===Symbol.for("react.memo_cache_sentinel")?(be=n.jsx("span",{className:"flex-1"}),t[38]=be):be=t[38];let fe;t[39]!==U?(fe=U==="watch"&&n.jsxs(Ke,{variant:"outline",title:"Only someone who can interact with the session driving it can use it",children:[n.jsx(Mn,{"data-icon":"inline-start"}),"View only"]}),t[39]=U,t[40]=fe):fe=t[40];let le;t[41]!==V||t[42]!==D||t[43]!==O?(le=!D&&n.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[n.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:[n.jsx(dt,{"aria-hidden":!0,className:"size-3.5 shrink-0"}),n.jsx("span",{className:"sr-only @sm/browser-bar:not-sr-only @sm/browser-bar:whitespace-nowrap",children:V?"Not your browser":"Not the default browser"})]}),n.jsx(re,{variant:"outline",size:"xs",onClick:O,children:V?"Show yours":"Show default"})]}),t[41]=V,t[42]=D,t[43]=O,t[44]=le):le=t[44];let W;t[45]!==w?(W=xe=>w(xe),t[45]=w,t[46]=W):W=t[46];let Y;t[47]!==f||t[48]!==W?(Y=n.jsx(cn,{size:"sm","aria-label":"Follow agent",pressed:f,onPressedChange:W,className:"text-muted-foreground data-pressed:text-foreground"}),t[47]=f,t[48]=W,t[49]=Y):Y=t[49];let ce,Se;t[50]===Symbol.for("react.memo_cache_sentinel")?(ce=n.jsx(Ln,{"data-icon":"inline-start"}),Se=n.jsx("span",{className:"hidden @md/browser-bar:inline",children:"Follow"}),t[50]=ce,t[51]=Se):(ce=t[50],Se=t[51]);let we;t[52]!==Y?(we=n.jsxs(Bt,{render:Y,children:[ce,Se]}),t[52]=Y,t[53]=we):we=t[53];let ye;t[54]===Symbol.for("react.memo_cache_sentinel")?(ye=n.jsx(Ft,{children:"Switch to whichever browser this session’s agent uses"}),t[54]=ye):ye=t[54];let me;t[55]!==we?(me=n.jsxs(Pt,{children:[we,ye]}),t[55]=we,t[56]=me):me=t[56];let je;t[57]===Symbol.for("react.memo_cache_sentinel")?(je=n.jsx(Ze,{"data-icon":"inline-start"}),t[57]=je):je=t[57];let ie;t[58]!==m?(ie=n.jsx(re,{variant:"ghost",size:"icon-sm","aria-label":"Close browser panel",onClick:m,children:je}),t[58]=m,t[59]=ie):ie=t[59];let z;t[60]!==de?(z=xe=>{xe.preventDefault(),de()},t[60]=de,t[61]=z):z=t[61];let oe;t[62]===Symbol.for("react.memo_cache_sentinel")?(oe=n.jsxs(zt,{children:[n.jsx($t,{children:"New browser"}),n.jsx(Ut,{children:"A named browser keeps its own cookies and logins, and stays out of the default one."})]}),t[62]=oe):oe=t[62];const Ee=!!te;let ke;t[63]!==x?(ke=n.jsx(gt,{htmlFor:x,children:"Name"}),t[63]=x,t[64]=ke):ke=t[64];const Te=!!te;let G;t[65]===Symbol.for("react.memo_cache_sentinel")?(G=xe=>{X(xe.target.value),R(null)},t[65]=G):G=t[65];let u;t[66]!==x||t[67]!==T||t[68]!==Te?(u=n.jsx(He,{id:x,autoFocus:!0,autoComplete:"off",spellCheck:!1,placeholder:"shop","aria-invalid":Te,value:T,onChange:G}),t[66]=x,t[67]=T,t[68]=Te,t[69]=u):u=t[69];let A;t[70]!==te?(A=n.jsx(un,{children:te}),t[70]=te,t[71]=A):A=t[71];let ee;t[72]!==Ee||t[73]!==ke||t[74]!==u||t[75]!==A?(ee=n.jsxs(pt,{"data-invalid":Ee,children:[ke,u,A]}),t[72]=Ee,t[73]=ke,t[74]=u,t[75]=A,t[76]=ee):ee=t[76];let I;t[77]===Symbol.for("react.memo_cache_sentinel")?(I=n.jsx("span",{className:"text-muted-foreground/60",children:"(optional)"}),t[77]=I):I=t[77];let ue;t[78]!==h?(ue=n.jsxs(gt,{htmlFor:h,children:["Note ",I]}),t[78]=h,t[79]=ue):ue=t[79];let Ne;t[80]===Symbol.for("react.memo_cache_sentinel")?(Ne=xe=>J(xe.target.value),t[80]=Ne):Ne=t[80];let De;t[81]!==S||t[82]!==h?(De=n.jsx(He,{id:h,autoComplete:"off",placeholder:"What this browser is signed in to",value:S,onChange:Ne}),t[81]=S,t[82]=h,t[83]=De):De=t[83];let _e;t[84]!==ue||t[85]!==De?(_e=n.jsxs(pt,{children:[ue,De]}),t[84]=ue,t[85]=De,t[86]=_e):_e=t[86];let Ie;t[87]!==ee||t[88]!==_e?(Ie=n.jsxs(dn,{className:"gap-4",children:[ee,_e]}),t[87]=ee,t[88]=_e,t[89]=Ie):Ie=t[89];let $e;t[90]===Symbol.for("react.memo_cache_sentinel")?($e=n.jsx(Ht,{render:n.jsx(re,{type:"button",variant:"outline"}),children:"Cancel"}),t[90]=$e):$e=t[90];const Qe=!K;let Oe;t[91]!==Qe?(Oe=n.jsxs(Kt,{children:[$e,n.jsx(re,{type:"submit",disabled:Qe,children:"Create browser"})]}),t[91]=Qe,t[92]=Oe):Oe=t[92];let Me;t[93]!==z||t[94]!==Ie||t[95]!==Oe?(Me=n.jsx(Wt,{className:"sm:max-w-sm",children:n.jsxs("form",{className:"flex flex-col gap-4",onSubmit:z,children:[oe,Ie,Oe]})}),t[93]=z,t[94]=Ie,t[95]=Oe,t[96]=Me):Me=t[96];let Le;t[97]!==p||t[98]!==Me?(Le=n.jsx(Yt,{open:p,onOpenChange:C,children:Me}),t[97]=p,t[98]=Me,t[99]=Le):Le=t[99];let Be;t[100]!==N||t[101]!==j?(Be=N!==null&&n.jsx(fn,{open:!0,onOpenChange:xe=>{xe||F(null)},children:n.jsxs(hn,{size:"sm",children:[n.jsxs(mn,{children:[n.jsx(xn,{className:"bg-destructive/10 text-destructive",children:n.jsx(jt,{})}),n.jsxs(gn,{children:["Delete ",N,"?"]}),n.jsx(pn,{children:"Its profile goes with it, so everything signed in there is signed out. Other browsers are untouched."})]}),n.jsxs(wn,{children:[n.jsx(bn,{size:"sm",children:"Cancel"}),n.jsx(yn,{variant:"destructive",size:"sm",onClick:()=>{j(N),F(null)},children:"Delete browser"})]})]})}),t[100]=N,t[101]=j,t[102]=Be):Be=t[102];let Ue;return t[103]!==pe||t[104]!==fe||t[105]!==le||t[106]!==me||t[107]!==ie||t[108]!==Le||t[109]!==Be||t[110]!==ge?(Ue=n.jsxs("div",{className:ge,children:[pe,be,fe,le,me,ie,Le,Be]}),t[103]=pe,t[104]=fe,t[105]=le,t[106]=me,t[107]=ie,t[108]=Le,t[109]=Be,t[110]=ge,t[111]=Ue):Ue=t[111],Ue});function ps(s){const e=Ce.c(36),{open:t,onOpenChange:l,readTargets:r,install:i}=s,[o,f]=a.useState(null),[c,g]=a.useState(null),[w,v]=a.useState(null);let b;e[0]!==r?(b=async()=>{const F=await r();F.ok?(f(F.targets),g(null)):g(F.error)},e[0]=r,e[1]=b):b=e[1];const j=b;let y,k;e[2]!==j||e[3]!==t?(y=()=>{t&&(g(null),j())},k=[t,j],e[2]=j,e[3]=t,e[4]=y,e[5]=k):(y=e[4],k=e[5]),a.useEffect(y,k);let O;e[6]!==i||e[7]!==j?(O=async function(D){v(D);const L=await i(D);v(null),L.ok?await j():g(L.error)},e[6]=i,e[7]=j,e[8]=O):O=e[8];const m=O;let d;e[9]!==o?(d=(o==null?void 0:o.some(ws))??!1,e[9]=o,e[10]=d):d=e[10];const x=d;let h;e[11]===Symbol.for("react.memo_cache_sentinel")?(h=n.jsx($t,{children:"Agent skill"}),e[11]=h):h=e[11];let p;e[12]===Symbol.for("react.memo_cache_sentinel")?(p=n.jsxs(zt,{children:[h,n.jsxs(Ut,{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"," ",n.jsx("code",{className:"font-mono",children:"SKILL.md"})," into that CLI’s configuration directory in your home folder."]})]}),e[12]=p):p=e[12];let C;e[13]!==c?(C=c&&n.jsx("p",{role:"alert",className:"text-sm text-destructive",children:c}),e[13]=c,e[14]=C):C=e[14];let T;e[15]!==w||e[16]!==m||e[17]!==o?(T=o===null?n.jsxs("div",{role:"status",className:"flex items-center gap-2 py-4 text-sm text-muted-foreground",children:[n.jsx(ct,{}),"Reading where it is installed…"]}):n.jsx("ul",{className:"flex flex-col gap-2",children:o.map(F=>n.jsxs("li",{className:"flex items-center gap-3 rounded-md border p-2.5",children:[n.jsxs("span",{className:"flex min-w-0 flex-1 flex-col",children:[n.jsx("span",{className:"truncate text-sm font-medium",children:F.label}),n.jsx("span",{className:"truncate font-mono text-xs text-muted-foreground",children:F.configRoot}),F.automatic&&n.jsx("span",{className:"truncate text-xs text-muted-foreground",children:"Already automatic in the sessions Cogpit starts"})]}),F.installed?n.jsxs("span",{className:"flex shrink-0 items-center gap-1 text-xs text-muted-foreground",children:[n.jsx(ft,{"aria-hidden":!0,className:"size-3.5 text-emerald-500"}),"Installed"]}):n.jsx(re,{size:"xs",variant:"outline","aria-label":`Install for ${F.label}`,disabled:w!==null,onClick:()=>void m(F.kind),children:"Install"})]},F.kind))}),e[15]=w,e[16]=m,e[17]=o,e[18]=T):T=e[18];const X=!x||w!==null;let S;e[19]!==m?(S=()=>void m(Fn),e[19]=m,e[20]=S):S=e[20];let J;e[21]===Symbol.for("react.memo_cache_sentinel")?(J=n.jsx(ht,{"data-icon":"inline-start"}),e[21]=J):J=e[21];let $;e[22]!==X||e[23]!==S?($=n.jsxs(re,{variant:"outline",disabled:X,onClick:S,children:[J,"Install for all"]}),e[22]=X,e[23]=S,e[24]=$):$=e[24];let R;e[25]===Symbol.for("react.memo_cache_sentinel")?(R=n.jsx(Ht,{render:n.jsx(re,{type:"button"}),children:"Done"}),e[25]=R):R=e[25];let M;e[26]!==$?(M=n.jsxs(Kt,{children:[$,R]}),e[26]=$,e[27]=M):M=e[27];let B;e[28]!==M||e[29]!==C||e[30]!==T?(B=n.jsxs(Wt,{className:"sm:max-w-md",children:[p,C,T,M]}),e[28]=M,e[29]=C,e[30]=T,e[31]=B):B=e[31];let N;return e[32]!==l||e[33]!==t||e[34]!==B?(N=n.jsx(Yt,{open:t,onOpenChange:l,children:B}),e[32]=l,e[33]=t,e[34]=B,e[35]=N):N=e[35],N}function ws(s){return!s.installed}const bs={x:0,y:0,width:0,height:0,scale:0};function Zt(s,e){if(s.width<=0||s.height<=0||e.width<=0||e.height<=0)return bs;const t=Math.min(1,s.width/e.width,s.height/e.height),l=e.width*t,r=e.height*t;return{x:Math.round((s.width-l)/2),y:Math.round((s.height-r)/2),width:l,height:r,scale:t}}function ot(s,e,t,l,r={}){if(l.scale<=0||l.width<=0||l.height<=0)return null;const i=s-t.left-l.x,o=e-t.top-l.y;return!(i>=0&&o>=0&&i<=l.width&&o<=l.height)&&!r.clamp?null:{x:Tt(i/l.scale,l.width/l.scale),y:Tt(o/l.scale,l.height/l.scale)}}function Tt(s,e){return Math.min(Math.max(s,0),e)}const ys=1,js=2,vs=4,Ss=8;function Re(s){return(s.altKey?ys:0)|(s.ctrlKey?js:0)|(s.metaKey?vs:0)|(s.shiftKey?Ss:0)}const ks=["left","middle","right"];function Dt(s){return ks[s]??"left"}const Cs=150,_t=2,Ns=500,At=5,Es=1,Ts=2,Ds=16,_s="Keyboard captured · Esc to release",As=new Set(["F5","F11","F12"]),Rs=new Set(["i","j","c"]);function Rt(s){return As.has(s.key)||s.metaKey?!0:s.ctrlKey&&s.shiftKey&&Rs.has(s.key.toLowerCase())}function Is(s){if(!(s.ctrlKey||s.metaKey))return s.key.length===1?s.key:s.key==="Enter"?"\r":void 0}function It(s,e,t){return e===Es?s*Ds:e===Ts?s*t:s}function Os(s,e,t){try{s.drawImage(e,t.x,t.y,t.width,t.height)}catch{}}function Ms(s){const e=Ce.c(82),{frame:t,send:l,onSizeChange:r,readOnly:i,className:o}=s,f=i===void 0?!1:i,c=a.useRef(null),g=a.useRef(null),w=a.useRef(null),v=a.useRef(null),b=a.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 y=a.useRef(j);let k;e[1]===Symbol.for("react.memo_cache_sentinel")?(k=new Map,e[1]=k):k=e[1];const O=a.useRef(k);let m;e[2]===Symbol.for("react.memo_cache_sentinel")?(m={width:0,height:0,dpr:1},e[2]=m):m=e[2];const[d,x]=a.useState(m),[h,p]=a.useState(!1),C=t?t.header.deviceWidth:0,T=t?t.header.deviceHeight:0;let X;e[3]!==T||e[4]!==C||e[5]!==d?(X=Zt(d,{width:C,height:T}),e[3]=T,e[4]=C,e[5]=d,e[6]=X):X=e[6];const S=X,J=a.useRef(r);let $,R;e[7]!==r?($=()=>{J.current=r},R=[r],e[7]=r,e[8]=$,e[9]=R):($=e[8],R=e[9]),a.useEffect($,R);let M,B;e[10]===Symbol.for("react.memo_cache_sentinel")?(M=()=>{const G=c.current;if(!G)return;let u=null;const A=()=>{const I=G.getBoundingClientRect(),ue=Math.round(I.width),Ne=Math.round(I.height),De=window.devicePixelRatio||1;x(_e=>_e.width===ue&&_e.height===Ne&&_e.dpr===De?_e:{width:ue,height:Ne,dpr:De}),u&&clearTimeout(u),u=setTimeout(()=>{u=null,ue>0&&Ne>0&&J.current(ue,Ne,De)},Cs)};A();const ee=new ResizeObserver(A);return ee.observe(G),()=>{ee.disconnect(),u&&clearTimeout(u)}},B=[],e[10]=M,e[11]=B):(M=e[10],B=e[11]),a.useEffect(M,B);let N,F;e[12]!==S||e[13]!==t||e[14]!==d?(N=()=>{const G=g.current,u=G==null?void 0:G.getContext("2d");if(!G||!u)return;const A=Math.round(d.width*d.dpr),ee=Math.round(d.height*d.dpr);G.width!==A&&(G.width=A),G.height!==ee&&(G.height=ee),u.setTransform(d.dpr,0,0,d.dpr,0,0),u.clearRect(0,0,d.width,d.height),!(!t||S.width<=0||S.height<=0)&&Os(u,t.bitmap,S)},F=[t,S,d],e[12]=S,e[13]=t,e[14]=d,e[15]=N,e[16]=F):(N=e[15],F=e[16]),a.useEffect(N,F);let D,L;e[17]!==t?(D=()=>()=>it(t),L=[t],e[17]=t,e[18]=D,e[19]=L):(D=e[18],L=e[19]),a.useEffect(D,L);let P;e[20]!==S?(P=function(u,A,ee){const I=g.current;return I?ot(u,A,I.getBoundingClientRect(),S,{clamp:ee}):null},e[20]=S,e[21]=P):P=e[21];const U=P;let ne;e[22]!==l?(ne=function(u,A,ee,I,ue){l({type:"mouse",event:u,x:A.x,y:A.y,button:ee,clickCount:I,modifiers:ue})},e[22]=l,e[23]=ne):ne=e[23];const V=ne;let Q;e[24]===Symbol.for("react.memo_cache_sentinel")?(Q=function(u){const A=y.current,ee=Date.now(),I=u.button===A.button&&ee-A.at<Ns&&Math.abs(u.clientX-A.x)<=At&&Math.abs(u.clientY-A.y)<=At;return y.current={count:I?A.count+1:1,at:ee,x:u.clientX,y:u.clientY,button:u.button},y.current.count},e[24]=Q):Q=e[24];const H=Q;let q;e[25]!==U||e[26]!==V?(q=function(){const u=w.current;if(w.current=null,!u)return;const A=U(u.clientX,u.clientY,b.current);A&&V("move",A,"none",0,u.modifiers)},e[25]=U,e[26]=V,e[27]=q):q=e[27];const _=q;let E;e[28]!==_?(E=function(){v.current!==null&&(cancelAnimationFrame(v.current),v.current=null),_()},e[28]=_,e[29]=E):E=e[29];const te=E;let K;e[30]!==U||e[31]!==V?(K=function(u){if(u.currentTarget.focus(),u.button===_t)return;const A=U(u.clientX,u.clientY,!1);A&&(u.currentTarget.setPointerCapture(u.pointerId),b.current=!0,V("down",A,Dt(u.button),H(u),Re(u)))},e[30]=U,e[31]=V,e[32]=K):K=e[32];const ae=K;let Z;e[33]!==_?(Z=function(u){w.current={clientX:u.clientX,clientY:u.clientY,modifiers:Re(u)},v.current===null&&(v.current=requestAnimationFrame(()=>{v.current=null,_()}))},e[33]=_,e[34]=Z):Z=e[34];const se=Z;let de;e[35]!==te||e[36]!==U||e[37]!==V?(de=function(u){te();const A=b.current;if(b.current=!1,u.currentTarget.hasPointerCapture(u.pointerId)&&u.currentTarget.releasePointerCapture(u.pointerId),u.button===_t)return;const ee=U(u.clientX,u.clientY,A);ee&&V("up",ee,Dt(u.button),y.current.count,Re(u))},e[35]=te,e[36]=U,e[37]=V,e[38]=de):de=e[38];const ve=de;let ge;e[39]!==U||e[40]!==V?(ge=function(u){u.preventDefault();const A=U(u.clientX,u.clientY,!1);if(!A)return;const ee=Re(u);V("down",A,"right",1,ee),V("up",A,"right",1,ee)},e[39]=U,e[40]=V,e[41]=ge):ge=e[41];const he=ge;let pe;e[42]!==l?(pe=function(u){if(u.key==="Escape"){u.currentTarget.blur();return}Rt(u)||u.preventDefault();const A={type:"key",event:"down",key:u.key,code:u.code,modifiers:Re(u)},ee=Is(u);ee!==void 0&&(A.text=ee),O.current.set(u.code,u.key),l(A)},e[42]=l,e[43]=pe):pe=e[43];const be=pe;let fe;e[44]!==l?(fe=function(u){u.key!=="Escape"&&(Rt(u)||u.preventDefault(),O.current.delete(u.code),l({type:"key",event:"up",key:u.key,code:u.code,modifiers:Re(u)}))},e[44]=l,e[45]=fe):fe=e[45];const le=fe;let W,Y;e[46]!==T||e[47]!==C||e[48]!==S||e[49]!==f||e[50]!==l?(W=()=>{const G=g.current;if(!G||f)return;const u=A=>{A.preventDefault();const ee=ot(A.clientX,A.clientY,G.getBoundingClientRect(),S);ee&&l({type:"wheel",x:ee.x,y:ee.y,deltaX:It(A.deltaX,A.deltaMode,C),deltaY:It(A.deltaY,A.deltaMode,T),modifiers:Re(A)})};return G.addEventListener("wheel",u,{passive:!1}),()=>G.removeEventListener("wheel",u)},Y=[l,S,C,T,f],e[46]=T,e[47]=C,e[48]=S,e[49]=f,e[50]=l,e[51]=W,e[52]=Y):(W=e[51],Y=e[52]),a.useEffect(W,Y);let ce,Se;e[53]!==h||e[54]!==l?(ce=()=>{if(!h)return;const G=u=>{var ee;const A=(ee=u.clipboardData)==null?void 0:ee.getData("text/plain");A&&(u.preventDefault(),l({type:"paste",text:A}))};return document.addEventListener("paste",G),()=>document.removeEventListener("paste",G)},Se=[h,l],e[53]=h,e[54]=l,e[55]=ce,e[56]=Se):(ce=e[55],Se=e[56]),a.useEffect(ce,Se);let we,ye;e[57]===Symbol.for("react.memo_cache_sentinel")?(we=()=>()=>{v.current!==null&&cancelAnimationFrame(v.current)},ye=[],e[57]=we,e[58]=ye):(we=e[57],ye=e[58]),a.useEffect(we,ye);let me;e[59]!==l?(me=()=>{for(const[G,u]of O.current)l({type:"key",event:"up",key:u,code:G,modifiers:0});O.current.clear()},e[59]=l,e[60]=me):me=e[60];const je=me;let ie,z;e[61]!==je?(ie=()=>je,z=[je],e[61]=je,e[62]=ie,e[63]=z):(ie=e[62],z=e[63]),a.useEffect(ie,z);let oe;e[64]!==o?(oe=Ae("relative min-h-0 min-w-0 overflow-hidden bg-muted/30",o),e[64]=o,e[65]=oe):oe=e[65];let Ee;e[66]!==h||e[67]!==he||e[68]!==be||e[69]!==le||e[70]!==ae||e[71]!==se||e[72]!==ve||e[73]!==f||e[74]!==je?(Ee=f?n.jsx("canvas",{ref:g,role:"img","aria-label":"Browser viewport, view only",className:"block size-full cursor-default touch-none select-none"}):n.jsx("canvas",{ref:g,role:"application","aria-label":"Browser viewport",tabIndex:0,className:Ae("block size-full cursor-default touch-none select-none outline-none",h&&"ring-2 ring-ring ring-inset"),onFocus:()=>p(!0),onBlur:()=>{p(!1),je()},onPointerDown:ae,onPointerMove:se,onPointerUp:ve,onPointerCancel:ve,onContextMenu:he,onKeyDown:be,onKeyUp:le}),e[66]=h,e[67]=he,e[68]=be,e[69]=le,e[70]=ae,e[71]=se,e[72]=ve,e[73]=f,e[74]=je,e[75]=Ee):Ee=e[75];let ke;e[76]!==h?(ke=h&&n.jsx("div",{className:"pointer-events-none absolute inset-x-0 bottom-2 flex justify-center",children:n.jsx("span",{className:"rounded-full bg-popover px-2 py-0.5 text-[10px] text-muted-foreground shadow-xs",children:_s})}),e[76]=h,e[77]=ke):ke=e[77];let Te;return e[78]!==oe||e[79]!==Ee||e[80]!==ke?(Te=n.jsxs("div",{ref:c,className:oe,children:[Ee,ke]}),e[78]=oe,e[79]=Ee,e[80]=ke,e[81]=Te):Te=e[81],Te}function Ls(s,e){try{const t=document.createElement("canvas");t.width=s.width,t.height=s.height;const l=t.getContext("2d");return!l||t.width===0?null:(l.drawImage(s,0,0),{...e,canvas:t})}catch{return null}}function Bs(s,e,t=1568){var f;const l=s.canvas.width/s.deviceWidth,r={x:e.x*l,y:e.y*l,width:Math.max(1,e.width*l),height:Math.max(1,e.height*l)},i=Math.min(1,t/Math.max(r.width,r.height)),o=document.createElement("canvas");return o.width=Math.max(1,Math.round(r.width*i)),o.height=Math.max(1,Math.round(r.height*i)),(f=o.getContext("2d"))==null||f.drawImage(s.canvas,r.x,r.y,r.width,r.height,0,0,o.width,o.height),{id:crypto.randomUUID(),mediaType:"image/jpeg",data:o.toDataURL("image/jpeg",.85).split(",")[1]??""}}function Ot(s,e){return{x:Math.round(Math.min(s.x,e.x)),y:Math.round(Math.min(s.y,e.y)),width:Math.round(Math.abs(s.x-e.x)),height:Math.round(Math.abs(s.y-e.y))}}function Fs(s){const e=Ce.c(85),{frame:t,onAdd:l,onCancel:r}=s,i=a.useRef(null),o=a.useRef(null);let f;e[0]===Symbol.for("react.memo_cache_sentinel")?(f={width:0,height:0},e[0]=f):f=e[0];const[c,g]=a.useState(f);let w;e[1]!==t.deviceHeight||e[2]!==t.deviceWidth?(w={x:0,y:0,width:t.deviceWidth,height:t.deviceHeight},e[1]=t.deviceHeight,e[2]=t.deviceWidth,e[3]=w):w=e[3];const v=w,[b,j]=a.useState(v),[y,k]=a.useState(null),[O,m]=a.useState(""),[d,x]=a.useState(null);let h;e[4]!==t.deviceHeight||e[5]!==t.deviceWidth||e[6]!==c?(h=Zt(c,{width:t.deviceWidth,height:t.deviceHeight}),e[4]=t.deviceHeight,e[5]=t.deviceWidth,e[6]=c,e[7]=h):h=e[7];const p=h;let C,T;e[8]===Symbol.for("react.memo_cache_sentinel")?(C=()=>{const W=i.current;if(!W)return;const Y=new ResizeObserver(ce=>{const[Se]=ce;Se&&g({width:Se.contentRect.width,height:Se.contentRect.height})});return Y.observe(W),()=>Y.disconnect()},T=[],e[8]=C,e[9]=T):(C=e[8],T=e[9]),a.useEffect(C,T);let X;e[10]!==p.height||e[11]!==p.width||e[12]!==p.x||e[13]!==p.y||e[14]!==t.canvas||e[15]!==c.height||e[16]!==c.width?(X=()=>{const W=o.current;if(!W||p.width<=0)return;const Y=window.devicePixelRatio||1;W.width=Math.round(c.width*Y),W.height=Math.round(c.height*Y);const ce=W.getContext("2d");ce&&(ce.setTransform(Y,0,0,Y,0,0),ce.clearRect(0,0,c.width,c.height),ce.drawImage(t.canvas,p.x,p.y,p.width,p.height))},e[10]=p.height,e[11]=p.width,e[12]=p.x,e[13]=p.y,e[14]=t.canvas,e[15]=c.height,e[16]=c.width,e[17]=X):X=e[17];let S;e[18]!==p||e[19]!==t||e[20]!==c?(S=[t,p,c],e[18]=p,e[19]=t,e[20]=c,e[21]=S):S=e[21],a.useEffect(X,S);let J;e[22]!==p?(J=W=>{const Y=o.current;return Y?ot(W.clientX,W.clientY,Y.getBoundingClientRect(),p,{clamp:!0}):null},e[22]=p,e[23]=J):J=e[23];const $=J;let R;e[24]!==t||e[25]!==O||e[26]!==l||e[27]!==r||e[28]!==b?(R=function(){if(b.width<4||b.height<4){x("Mark a larger region, or use the whole page");return}const Y={id:vn(),kind:"browser",note:O.trim().slice(0,wt.noteChars),url:t.url,title:t.title,viewport:{width:t.deviceWidth,height:t.deviceHeight},region:b,capturedAt:t.capturedAt,browser:t.browser,...t.tab?{tab:t.tab}:{},image:1},ce=l(Y,Bs(t,b));ce?x(ce):r()},e[24]=t,e[25]=O,e[26]=l,e[27]=r,e[28]=b,e[29]=R):R=e[29];const M=R,B=p.x+b.x*p.scale,N=p.y+b.y*p.scale,F=b.width*p.scale,D=b.height*p.scale;let L;e[30]!==B||e[31]!==N||e[32]!==F||e[33]!==D?(L={left:B,top:N,width:F,height:D},e[30]=B,e[31]=N,e[32]=F,e[33]=D,e[34]=L):L=e[34];const P=L,U=b.x===0&&b.y===0&&b.width===t.deviceWidth&&b.height===t.deviceHeight;let ne;e[35]!==r?(ne=W=>{W.key==="Escape"&&(W.preventDefault(),r())},e[35]=r,e[36]=ne):ne=e[36];const V=`Frozen frame of ${t.title||t.url}. Drag to mark a region; the page does not receive these clicks.`;let Q;e[37]!==c.height||e[38]!==c.width?(Q={width:c.width,height:c.height},e[37]=c.height,e[38]=c.width,e[39]=Q):Q=e[39];let H;e[40]!==$?(H=W=>{const Y=$(W);Y&&(W.currentTarget.setPointerCapture(W.pointerId),k(Y),j({x:Math.round(Y.x),y:Math.round(Y.y),width:0,height:0}))},e[40]=$,e[41]=H):H=e[41];let q,_;e[42]!==y||e[43]!==$?(q=W=>{const Y=y&&$(W);y&&Y&&j(Ot(y,Y))},_=W=>{const Y=y&&$(W);y&&Y&&j(Ot(y,Y)),k(null),W.currentTarget.hasPointerCapture(W.pointerId)&&W.currentTarget.releasePointerCapture(W.pointerId)},e[42]=y,e[43]=$,e[44]=q,e[45]=_):(q=e[44],_=e[45]);let E;e[46]!==V||e[47]!==Q||e[48]!==H||e[49]!==q||e[50]!==_?(E=n.jsx("canvas",{ref:o,role:"img","aria-label":V,className:"block size-full cursor-crosshair touch-none select-none",style:Q,onPointerDown:H,onPointerMove:q,onPointerUp:_}),e[46]=V,e[47]=Q,e[48]=H,e[49]=q,e[50]=_,e[51]=E):E=e[51];let te;e[52]!==P||e[53]!==U?(te=!U&&n.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute border-2 border-info bg-info/10",style:P}),e[52]=P,e[53]=U,e[54]=te):te=e[54];let K;e[55]!==E||e[56]!==te?(K=n.jsxs("div",{ref:i,className:"relative min-h-0 flex-1 overflow-hidden bg-muted/30",children:[E,te]}),e[55]=E,e[56]=te,e[57]=K):K=e[57];const ae=U?"Whole page selected. Drag on the frame to mark a region.":`Region ${b.width}×${b.height} at ${b.x},${b.y}`;let Z;e[58]!==ae?(Z=n.jsx("p",{className:"text-xs text-muted-foreground",role:"status",children:ae}),e[58]=ae,e[59]=Z):Z=e[59];let se;e[60]===Symbol.for("react.memo_cache_sentinel")?(se=W=>m(W.target.value),e[60]=se):se=e[60];let de;e[61]!==O?(de=n.jsx(jn,{value:O,onChange:se,placeholder:"What should the agent look at here?","aria-label":"Annotation note",rows:2,maxLength:wt.noteChars,className:"min-h-0 resize-none text-sm",autoFocus:!0}),e[61]=O,e[62]=de):de=e[62];let ve;e[63]!==d?(ve=d&&n.jsx("p",{role:"alert",className:"text-xs text-destructive",children:d}),e[63]=d,e[64]=ve):ve=e[64];let ge;e[65]!==U||e[66]!==v?(ge=!U&&n.jsx(re,{type:"button",variant:"ghost",size:"sm",onClick:()=>j(v),children:"Use whole page"}),e[65]=U,e[66]=v,e[67]=ge):ge=e[67];let he;e[68]!==r?(he=n.jsx(re,{type:"button",variant:"ghost",size:"sm",onClick:r,children:"Cancel"}),e[68]=r,e[69]=he):he=e[69];let pe;e[70]!==M?(pe=n.jsx(re,{type:"button",size:"sm",onClick:M,children:"Add to message"}),e[70]=M,e[71]=pe):pe=e[71];let be;e[72]!==ge||e[73]!==he||e[74]!==pe?(be=n.jsxs("div",{className:"flex flex-wrap items-center justify-end gap-2",children:[ge,he,pe]}),e[72]=ge,e[73]=he,e[74]=pe,e[75]=be):be=e[75];let fe;e[76]!==Z||e[77]!==de||e[78]!==ve||e[79]!==be?(fe=n.jsxs("div",{className:"flex shrink-0 flex-col gap-2 border-t p-2",children:[Z,de,ve,be]}),e[76]=Z,e[77]=de,e[78]=ve,e[79]=be,e[80]=fe):fe=e[80];let le;return e[81]!==ne||e[82]!==K||e[83]!==fe?(le=n.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",onKeyDown:ne,children:[K,fe]}),e[81]=ne,e[82]=K,e[83]=fe,e[84]=le):le=e[84],le}const Ps="browser-panel-session",zs="browser-panel-follow",$s=1e4,Mt=3e3,Us=[];function Js({context:s,active:e,closePanel:t,onAnnotate:l}){var A,ee;const[r,i]=a.useState(null),[o,f]=bt(yt(Ps),ut),[c,g]=bt(yt(zs),!0),[w,v]=a.useState(!1),[b,j]=a.useState(null),[y,k]=a.useState(null),[O,m]=a.useState(!1),d=a.useRef(0),{status:x,error:h,refresh:p,create:C,remove:T,stop:X,setArchived:S,readSkillTargets:J,installSkill:$}=Pn(e),R=(x==null?void 0:x.sessions)??Us,M=is(R),B=x!==null&&R.length>0,N=x===null||R.some(I=>I.name===o)?o:M,F=a.useCallback(I=>void Lt(I),[]),D=Xn(e&&B?N:null,F),L=((A=s.session)==null?void 0:A.sessionId)??null,P=a.useMemo(()=>Sn(s.session),[s.session]),U=cs((P==null?void 0:P.session)??null,R,L),ne=R.some(I=>I.name===U&&!I.archived);a.useEffect(()=>{!c||U===null||U===N||!ne||Date.now()-d.current<$s||f(U)},[c,U,ne,N,f]);const V=a.useCallback(I=>{d.current=Date.now(),f(I)},[f]),Q=a.useCallback(async I=>{v(!0);try{const ue=await I();return j(ue.ok?null:ue.error),ue}finally{v(!1)}},[]),{send:H}=D,q=a.useCallback((I,ue,Ne)=>{H({type:"viewport",width:I,height:ue,dpr:Ne})},[H]),_=a.useCallback(I=>{I&&(d.current=0),g(I)},[g]),E=a.useCallback(()=>V(M),[V,M]),te=a.useCallback(()=>m(!0),[]),K=a.useCallback(I=>{V(M),Q(()=>T(I))},[V,M,Q,T]),ae=a.useCallback(I=>void Q(()=>X(I)),[Q,X]),Z=a.useCallback(async(I,ue)=>{const Ne=await Q(()=>S(I,ue));return Ne.ok&&ue&&I===N&&V(M),Ne},[Q,S,N,V,M]),se=a.useCallback(I=>H({type:"navigate",url:I}),[H]),de=a.useCallback(()=>H({type:"back"}),[H]),ve=a.useCallback(()=>H({type:"forward"}),[H]),ge=a.useCallback(()=>H({type:"reload"}),[H]),he=a.useCallback(I=>H({type:"follow",targetId:I}),[H]),pe=a.useCallback(I=>H({type:"close-tab",targetId:I}),[H]),be=a.useCallback(I=>H({type:"launch",url:I}),[H]),fe=Hs(D.lastFrameAt),{frame:le,page:W,tabs:Y,pageGeneration:ce}=D,Se=a.useCallback(()=>{if(!W)return;const I=le==null?void 0:le.page;if(!le||!I||le.pageGeneration!==ce||le.header.targetId!==I.targetId){j("The page is still drawing; try again in a moment");return}const ue=Y.find(De=>De.targetId===le.header.targetId),Ne=Ls(le.bitmap,{deviceWidth:le.header.deviceWidth,deviceHeight:le.header.deviceHeight,url:I.url,title:I.title,browser:N,...ue?{tab:ue.title||ue.url}:{},capturedAt:new Date(le.header.ts).toISOString()});Ne?i(Ne):j("The page is still drawing; try again in a moment")},[le,W,Y,ce,N]),we=((ee=D.state)==null?void 0:ee.state)??null,ye=(x==null?void 0:x.installed)===!1||we==="not-installed",me=!ye&&we==="live",je=!ye&&we==="stopped",ie=R.find(I=>I.name===N)??null,z=Ye(ie,N),oe=os(ie),Ee=(ie==null?void 0:ie.mine)===!0&&!ie.running&&ie.lastUsedAt===null,ke=me&&(D.status==="disconnected"||D.status==="connecting"),Te=x===null&&h!==null,G=D.error??b??(Te?null:h),u=G!==null&&G!==y?G:null;return n.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[n.jsx(gs,{sessions:R,selected:N,home:M,currentSessionId:L,followAgent:c,busy:w,onSelect:V,onToggleFollow:_,onOpenSkill:te,onCreate:C,onRemove:K,onStop:ae,onSetArchived:Z,onShowDefault:E,onClose:t}),me&&n.jsx(ls,{page:D.page,tabs:D.tabs,followed:D.followed,status:ke?"offline":fe,readOnly:!oe,onNavigate:se,onBack:de,onForward:ve,onReload:ge,onFollow:he,onCloseTab:pe,onAnnotate:l&&!r?Se:void 0}),u&&n.jsx(Ys,{message:u,onDismiss:()=>{j(null),k(G)}}),n.jsxs("div",{className:"relative flex min-h-0 flex-1 flex-col",children:[Te&&n.jsx(ts,{message:h,onRetry:p}),ye&&n.jsx(Qn,{onOpenSkill:te}),!ye&&x!==null&&!B&&n.jsx(Nt,{}),je&&(Ee?n.jsx(Nt,{onOpen:be}):n.jsx(es,{name:z,lastUrl:(ie==null?void 0:ie.lastUrl)??null,onOpen:oe?be:void 0})),me&&r&&l&&n.jsx(Fs,{frame:r,onAdd:l,onCancel:()=>i(null)}),me&&!r&&n.jsxs(n.Fragment,{children:[n.jsx(Ms,{className:"flex-1",frame:D.frame,send:H,onSizeChange:q,readOnly:!oe}),ke&&n.jsx(Ws,{}),n.jsx(Jn,{activity:P&&U===N?P:null})]}),!ye&&!Te&&(x===null||B)&&!je&&!me&&n.jsxs("div",{role:"status",className:"flex flex-1 items-center justify-center gap-2 text-sm text-muted-foreground",children:[n.jsx(ct,{}),"Connecting to ",z,"…"]})]}),n.jsx(ps,{open:O,onOpenChange:m,readTargets:J,install:$})]})}function Hs(s){const e=Ce.c(5),[,t]=a.useState(0);let l;e[0]!==t||e[1]!==s?(l=()=>{if(s===null)return;const i=s+Mt-Date.now();if(i<=0)return;const o=setTimeout(()=>t(Ks),i);return()=>clearTimeout(o)},e[0]=t,e[1]=s,e[2]=l):l=e[2];let r;return e[3]!==s?(r=[s],e[3]=s,e[4]=r):r=e[4],a.useEffect(l,r),s===null?"idle":Date.now()-s<Mt?"live":"idle"}function Ks(s){return s+1}function Ws(){const s=Ce.c(1);let e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(e=n.jsx("div",{className:"pointer-events-none absolute inset-x-0 top-0 flex justify-center p-2",children:n.jsx("span",{role:"status",className:"rounded-full bg-popover px-2.5 py-0.5 text-[11px] text-muted-foreground shadow-xs",children:"Reconnecting…"})}),s[0]=e):e=s[0],e}function Ys(s){const e=Ce.c(9),{message:t,onDismiss:l}=s;let r;e[0]===Symbol.for("react.memo_cache_sentinel")?(r=n.jsx(dt,{"aria-hidden":!0,className:"size-3.5 shrink-0"}),e[0]=r):r=e[0];let i;e[1]!==t?(i=n.jsx("span",{className:"min-w-0 flex-1 truncate",children:t}),e[1]=t,e[2]=i):i=e[2];let o;e[3]===Symbol.for("react.memo_cache_sentinel")?(o=n.jsx(Ze,{"data-icon":"inline-start"}),e[3]=o):o=e[3];let f;e[4]!==l?(f=n.jsx(re,{variant:"ghost",size:"icon-xs","aria-label":"Dismiss",onClick:l,children:o}),e[4]=l,e[5]=f):f=e[5];let c;return e[6]!==i||e[7]!==f?(c=n.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,i,f]}),e[6]=i,e[7]=f,e[8]=c):c=e[8],c}export{Js as BrowserPanel};
@@ -1,5 +1,5 @@
1
- import{c as le,j as t,r as fe}from"./vendor-react-gGw_S5I_.js";import{g as Ne,c as ke,C as ge,a as pe,b as je,d as ve,B as V,e as ye,p as Te,E as be,f as Ce,h as _e,i as Be,D as Me,j as we,k as Ae,l as $e,S as de,m as Se,n as Ie,o as Re}from"./index-BvNyEUVG.js";import{bK as me,c9 as Ee,br as De,A as ze}from"./vendor-ui-keo4oB2X.js";import"./vendor-markdown-BEJ8yVzA.js";function He(a){const e=le.c(29),{branches:s,activeBranchIdx:c,branchPointTurnIndex:f}=a,g=s.length;if(g===0)return null;const j=Math.min(f+1,5);let h;e[0]!==s?(h=Math.max(...s.map(Pe),1),e[0]=s,e[1]=h):h=e[1];const o=Math.min(h,6),n=20+j*25,r=Math.min(32,Math.max(20,(300-n)/(o+1))),d=18+(g-1)*27+15,m=`0 0 340 ${d}`,p=`${g} branches from turn ${f+1}`;let l;e[2]!==n?(l=t.jsx("line",{x1:20,y1:18,x2:n,y2:18,stroke:"var(--muted-foreground)",strokeWidth:2}),e[2]=n,e[3]=l):l=e[3];let u;e[4]!==j?(u=Array.from({length:j}).map(Le),e[4]=j,e[5]=u):u=e[5];let k,b;e[6]!==n?(k=t.jsx("circle",{cx:n,cy:18,r:5,fill:"var(--background)",stroke:"var(--foreground)",strokeWidth:2}),b=t.jsx("circle",{cx:n,cy:18,r:2,fill:"var(--foreground)"}),e[6]=n,e[7]=k,e[8]=b):(k=e[7],b=e[8]);let T;if(e[9]!==c||e[10]!==n||e[11]!==s||e[12]!==o||e[13]!==r){let w;e[15]!==c||e[16]!==n||e[17]!==o||e[18]!==r?(w=(i,C)=>{const v=C===c,_=v?"var(--foreground)":"var(--border)",$=v?"var(--foreground)":"var(--border)",N=18+C*27,A=Math.min(i.graphTurnCount,o);return t.jsxs("g",{style:{opacity:v?1:.3},children:[C===0?t.jsx("line",{x1:n,y1:N,x2:n+A*r,y2:N,stroke:_,strokeWidth:2}):t.jsxs(t.Fragment,{children:[t.jsx("path",{d:`M ${n} 18 C ${n+10} ${N-5}, ${n+20} ${N}, ${n+r} ${N}`,fill:"none",stroke:_,strokeWidth:2}),A>1&&t.jsx("line",{x1:n+r,y1:N,x2:n+A*r,y2:N,stroke:_,strokeWidth:2})]}),Array.from({length:A}).map((R,S)=>t.jsxs("g",{children:[t.jsx("circle",{cx:n+(S+1)*r,cy:N,r:3.5,fill:"var(--background)",stroke:_,strokeWidth:1.5}),t.jsx("circle",{cx:n+(S+1)*r,cy:N,r:1.5,fill:$})]},S)),i.graphTurnCount>o&&t.jsxs("text",{x:n+(A+.4)*r,y:N+3,fill:v?"var(--foreground)":"var(--border)",fontSize:"8",fontFamily:"monospace",children:["+",i.graphTurnCount-o]})]},i.id)},e[15]=c,e[16]=n,e[17]=o,e[18]=r,e[19]=w):w=e[19],T=s.map(w),e[9]=c,e[10]=n,e[11]=s,e[12]=o,e[13]=r,e[14]=T}else T=e[14];let M;return e[20]!==d||e[21]!==m||e[22]!==p||e[23]!==l||e[24]!==u||e[25]!==k||e[26]!==b||e[27]!==T?(M=t.jsx("div",{className:"rounded-lg border bg-muted/20 px-3 py-2",children:t.jsxs("svg",{width:"100%",height:d,viewBox:m,role:"img","aria-label":p,children:[l,u,k,b,T]})}),e[20]=d,e[21]=m,e[22]=p,e[23]=l,e[24]=u,e[25]=k,e[26]=b,e[27]=T,e[28]=M):M=e[28],M}function Le(a,e){return t.jsxs("g",{children:[t.jsx("circle",{cx:20+e*25,cy:18,r:3.5,fill:"var(--background)",stroke:"var(--muted-foreground)",strokeWidth:1.5}),t.jsx("circle",{cx:20+e*25,cy:18,r:1.5,fill:"var(--muted-foreground)"})]},`s-${e}`)}function Pe(a){return a.graphTurnCount}function We(a){const e=a.input.file_path??a.input.path??"";if(e)return e.split("/").pop()||e;const s=a.input.command;if(s)return s.length>40?s.slice(0,37)+"...":s;const c=a.input.pattern;if(c)return c.length>30?c.slice(0,27)+"...":c;const f=a.input.query;return f?f.length>30?f.slice(0,27)+"...":f:""}function Fe(a){const e=le.c(26),{turn:s,archiveIndex:c,branchId:f,onRedoToHere:g}=a;let j;e[0]!==s.userMessage?(j=typeof s.userMessage=="string"?s.userMessage:Array.isArray(s.userMessage)?s.userMessage.flatMap(qe).join(`
1
+ import{c as le,j as t,r as fe}from"./vendor-react-gGw_S5I_.js";import{g as Ne,c as ke,C as ge,a as pe,b as je,d as ve,B as V,e as ye,p as Te,E as be,f as Ce,h as _e,i as Be,D as Me,j as we,k as Ae,l as $e,S as de,m as Se,n as Ie,o as Re}from"./index-Bg4A-xl7.js";import{bJ as me,c9 as Ee,bp as De,A as ze}from"./vendor-ui-Dc_kJXxz.js";import"./vendor-markdown-BEJ8yVzA.js";function He(a){const e=le.c(29),{branches:s,activeBranchIdx:c,branchPointTurnIndex:f}=a,g=s.length;if(g===0)return null;const j=Math.min(f+1,5);let h;e[0]!==s?(h=Math.max(...s.map(Pe),1),e[0]=s,e[1]=h):h=e[1];const o=Math.min(h,6),n=20+j*25,r=Math.min(32,Math.max(20,(300-n)/(o+1))),d=18+(g-1)*27+15,m=`0 0 340 ${d}`,p=`${g} branches from turn ${f+1}`;let l;e[2]!==n?(l=t.jsx("line",{x1:20,y1:18,x2:n,y2:18,stroke:"var(--muted-foreground)",strokeWidth:2}),e[2]=n,e[3]=l):l=e[3];let u;e[4]!==j?(u=Array.from({length:j}).map(Le),e[4]=j,e[5]=u):u=e[5];let k,b;e[6]!==n?(k=t.jsx("circle",{cx:n,cy:18,r:5,fill:"var(--background)",stroke:"var(--foreground)",strokeWidth:2}),b=t.jsx("circle",{cx:n,cy:18,r:2,fill:"var(--foreground)"}),e[6]=n,e[7]=k,e[8]=b):(k=e[7],b=e[8]);let T;if(e[9]!==c||e[10]!==n||e[11]!==s||e[12]!==o||e[13]!==r){let w;e[15]!==c||e[16]!==n||e[17]!==o||e[18]!==r?(w=(i,C)=>{const v=C===c,_=v?"var(--foreground)":"var(--border)",$=v?"var(--foreground)":"var(--border)",N=18+C*27,A=Math.min(i.graphTurnCount,o);return t.jsxs("g",{style:{opacity:v?1:.3},children:[C===0?t.jsx("line",{x1:n,y1:N,x2:n+A*r,y2:N,stroke:_,strokeWidth:2}):t.jsxs(t.Fragment,{children:[t.jsx("path",{d:`M ${n} 18 C ${n+10} ${N-5}, ${n+20} ${N}, ${n+r} ${N}`,fill:"none",stroke:_,strokeWidth:2}),A>1&&t.jsx("line",{x1:n+r,y1:N,x2:n+A*r,y2:N,stroke:_,strokeWidth:2})]}),Array.from({length:A}).map((R,S)=>t.jsxs("g",{children:[t.jsx("circle",{cx:n+(S+1)*r,cy:N,r:3.5,fill:"var(--background)",stroke:_,strokeWidth:1.5}),t.jsx("circle",{cx:n+(S+1)*r,cy:N,r:1.5,fill:$})]},S)),i.graphTurnCount>o&&t.jsxs("text",{x:n+(A+.4)*r,y:N+3,fill:v?"var(--foreground)":"var(--border)",fontSize:"8",fontFamily:"monospace",children:["+",i.graphTurnCount-o]})]},i.id)},e[15]=c,e[16]=n,e[17]=o,e[18]=r,e[19]=w):w=e[19],T=s.map(w),e[9]=c,e[10]=n,e[11]=s,e[12]=o,e[13]=r,e[14]=T}else T=e[14];let M;return e[20]!==d||e[21]!==m||e[22]!==p||e[23]!==l||e[24]!==u||e[25]!==k||e[26]!==b||e[27]!==T?(M=t.jsx("div",{className:"rounded-lg border bg-muted/20 px-3 py-2",children:t.jsxs("svg",{width:"100%",height:d,viewBox:m,role:"img","aria-label":p,children:[l,u,k,b,T]})}),e[20]=d,e[21]=m,e[22]=p,e[23]=l,e[24]=u,e[25]=k,e[26]=b,e[27]=T,e[28]=M):M=e[28],M}function Le(a,e){return t.jsxs("g",{children:[t.jsx("circle",{cx:20+e*25,cy:18,r:3.5,fill:"var(--background)",stroke:"var(--muted-foreground)",strokeWidth:1.5}),t.jsx("circle",{cx:20+e*25,cy:18,r:1.5,fill:"var(--muted-foreground)"})]},`s-${e}`)}function Pe(a){return a.graphTurnCount}function We(a){const e=a.input.file_path??a.input.path??"";if(e)return e.split("/").pop()||e;const s=a.input.command;if(s)return s.length>40?s.slice(0,37)+"...":s;const c=a.input.pattern;if(c)return c.length>30?c.slice(0,27)+"...":c;const f=a.input.query;return f?f.length>30?f.slice(0,27)+"...":f:""}function Fe(a){const e=le.c(26),{turn:s,archiveIndex:c,branchId:f,onRedoToHere:g}=a;let j;e[0]!==s.userMessage?(j=typeof s.userMessage=="string"?s.userMessage:Array.isArray(s.userMessage)?s.userMessage.flatMap(qe).join(`
2
2
  `):null,e[0]=s.userMessage,e[1]=j):j=e[1];const h=j,y=c+1;let o;e[2]!==y?(o=t.jsx(ge,{className:"border-b py-2",children:t.jsxs(pe,{children:["Turn ",y]})}),e[2]=y,e[3]=o):o=e[3];let n;e[4]!==h?(n=h&&t.jsxs("div",{className:"grid grid-cols-[5rem_minmax(0,1fr)] items-start gap-3",children:[t.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:"You"}),t.jsx("div",{className:"text-sm text-foreground",children:h})]}),e[4]=h,e[5]=n):n=e[5];let r;e[6]!==s.thinking[0]||e[7]!==s.thinking.length?(r=s.thinking.length>0&&t.jsxs("div",{className:"grid grid-cols-[5rem_minmax(0,1fr)] items-start gap-3",children:[t.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:"Thinking"}),t.jsxs("div",{className:"text-xs text-muted-foreground italic",children:[s.thinking[0].thinking.slice(0,300),s.thinking[0].thinking.length>300?"...":""]})]}),e[6]=s.thinking[0],e[7]=s.thinking.length,e[8]=r):r=e[8];let d;e[9]!==s.assistantText?(d=s.assistantText.length>0&&t.jsxs("div",{className:"grid grid-cols-[5rem_minmax(0,1fr)] items-start gap-3",children:[t.jsx("span",{className:"text-xs font-medium text-success",children:"Assistant"}),t.jsx("div",{className:"text-sm text-muted-foreground",children:s.assistantText.join(`
3
3
  `)})]}),e[9]=s.assistantText,e[10]=d):d=e[10];let m;e[11]!==s.toolCalls?(m=s.toolCalls.length>0&&t.jsxs("div",{className:"grid grid-cols-[5rem_minmax(0,1fr)] items-start gap-3",children:[t.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:"Tools"}),t.jsx("div",{className:"flex flex-wrap gap-x-2 gap-y-1",children:s.toolCalls.map(Oe)})]}),e[11]=s.toolCalls,e[12]=m):m=e[12];let p;e[13]!==n||e[14]!==r||e[15]!==d||e[16]!==m?(p=t.jsxs(je,{className:"flex flex-col gap-3 py-3",children:[n,r,d,m]}),e[13]=n,e[14]=r,e[15]=d,e[16]=m,e[17]=p):p=e[17];let l;e[18]!==c||e[19]!==f||e[20]!==g?(l=g&&t.jsx(ve,{className:"justify-end py-2",children:t.jsxs(V,{variant:"ghost",size:"sm",onClick:()=>g(f,c),children:[t.jsx(me,{"data-icon":"inline-start",className:"scale-x-[-1]"}),"Redo to here"]})}),e[18]=c,e[19]=f,e[20]=g,e[21]=l):l=e[21];let u;return e[22]!==o||e[23]!==p||e[24]!==l?(u=t.jsxs(ye,{size:"sm",className:"motion-list-item gap-0 py-0",children:[o,p,l]}),e[22]=o,e[23]=p,e[24]=l,e[25]=u):u=e[25],u}function Oe(a){const e=Ne(a),s=We(a)||e.summary;return t.jsxs("span",{className:ke("font-mono text-xs text-muted-foreground",a.isError&&"text-destructive"),children:[e.label,s?` ${s}`:""]},a.id)}function qe(a){return a.type==="text"?[a.text]:[]}function Ge(a){const e=le.c(27),{turn:s,archiveIndex:c,branchId:f,onRedoToHere:g}=a,j=c+1;let h;e[0]!==j?(h=t.jsx(ge,{className:"border-b py-2",children:t.jsxs(pe,{children:["Turn ",j]})}),e[0]=j,e[1]=h):h=e[1];let y;e[2]!==s.userMessage?(y=s.userMessage&&t.jsxs("div",{className:"grid grid-cols-[5rem_minmax(0,1fr)] items-start gap-3",children:[t.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:"You"}),t.jsx("div",{className:"text-sm text-foreground",children:s.userMessage})]}),e[2]=s.userMessage,e[3]=y):y=e[3];let o;e[4]!==s.thinkingBlocks[0]||e[5]!==s.thinkingBlocks.length?(o=s.thinkingBlocks.length>0&&t.jsxs("div",{className:"grid grid-cols-[5rem_minmax(0,1fr)] items-start gap-3",children:[t.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:"Thinking"}),t.jsxs("div",{className:"text-xs text-muted-foreground italic",children:[s.thinkingBlocks[0].slice(0,300),"..."]})]}),e[4]=s.thinkingBlocks[0],e[5]=s.thinkingBlocks.length,e[6]=o):o=e[6];let n;e[7]!==s.assistantText?(n=s.assistantText.length>0&&t.jsxs("div",{className:"grid grid-cols-[5rem_minmax(0,1fr)] items-start gap-3",children:[t.jsx("span",{className:"text-xs font-medium text-success",children:"Assistant"}),t.jsx("div",{className:"text-sm text-muted-foreground",children:s.assistantText.join(`
4
4
  `)})]}),e[7]=s.assistantText,e[8]=n):n=e[8];let r;e[9]!==s.toolCalls?(r=s.toolCalls.length>0&&t.jsxs("div",{className:"grid grid-cols-[5rem_minmax(0,1fr)] items-start gap-3",children:[t.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:"Tools"}),t.jsx("div",{className:"flex flex-wrap gap-x-2 gap-y-1",children:s.toolCalls.map(Ye)})]}),e[9]=s.toolCalls,e[10]=r):r=e[10];let d;e[11]!==y||e[12]!==o||e[13]!==n||e[14]!==r?(d=t.jsxs(je,{className:"flex flex-col gap-3 py-3",children:[y,o,n,r]}),e[11]=y,e[12]=o,e[13]=n,e[14]=r,e[15]=d):d=e[15];let m;e[16]!==c||e[17]!==f||e[18]!==g?(m=()=>g(f,c),e[16]=c,e[17]=f,e[18]=g,e[19]=m):m=e[19];let p;e[20]===Symbol.for("react.memo_cache_sentinel")?(p=t.jsx(me,{"data-icon":"inline-start",className:"scale-x-[-1]"}),e[20]=p):p=e[20];let l;e[21]!==m?(l=t.jsx(ve,{className:"justify-end py-2",children:t.jsxs(V,{variant:"ghost",size:"sm",onClick:m,children:[p,"Redo to here"]})}),e[21]=m,e[22]=l):l=e[22];let u;return e[23]!==l||e[24]!==h||e[25]!==d?(u=t.jsxs(ye,{size:"sm",className:"motion-list-item gap-0 py-0",children:[h,d,l]}),e[23]=l,e[24]=h,e[25]=d,e[26]=u):u=e[26],u}function Ye(a,e){return t.jsxs("span",{className:"font-mono text-xs text-muted-foreground",children:[a.type," ",a.filePath.split("/").pop()]},e)}function Ue(a){var xe,he,ue;const e=le.c(88),{open:s,branches:c,branchPointTurnIndex:f,currentTurns:g,onClose:j,onCloseComplete:h,onRedoToTurn:y,onRedoEntireBranch:o}=a,n=s===void 0?!0:s;let r;if(e[0]!==c||e[1]!==g){r=[];let x;e[3]===Symbol.for("react.memo_cache_sentinel")?(x=new Date().toISOString(),e[3]=x):x=e[3];let B;e[4]!==g?(B={kind:"current",id:"__current__",label:"Current branch",createdAt:x,fullTurns:g,archivedTurns:null,graphTurnCount:g.length,branch:null},e[4]=g,e[5]=B):B=e[5],r.push(B);for(const I of c){let U=null;if(I.jsonlLines.length>0)try{U=Te(I.jsonlLines.join(`
5
- `)).turns}catch{}r.push({kind:"archived",id:I.id,label:I.label,createdAt:I.createdAt,fullTurns:U,archivedTurns:U?null:I.turns,graphTurnCount:U?U.length:I.turns.length,branch:I})}e[0]=c,e[1]=g,e[2]=r}else r=e[2];const d=r,[m,p]=fe.useState(0),l=d.length;let u;e[6]!==l?(u=()=>{p(x=>x>0?x-1:l-1)},e[6]=l,e[7]=u):u=e[7];const k=u;let b;e[8]!==l?(b=()=>{p(x=>x<l-1?x+1:0)},e[8]=l,e[9]=b):b=e[9];const T=b;let M,w;e[10]!==T||e[11]!==k?(M=()=>{const x=B=>{B.key==="ArrowLeft"?k():B.key==="ArrowRight"&&T()};return window.addEventListener("keydown",x),()=>window.removeEventListener("keydown",x)},w=[k,T],e[10]=T,e[11]=k,e[12]=M,e[13]=w):(M=e[12],w=e[13]),fe.useEffect(M,w);const i=d[m];if(!i)return null;const C=((xe=i.fullTurns)==null?void 0:xe.length)??((he=i.archivedTurns)==null?void 0:he.length)??0,v=i.kind==="current";let _;e[14]!==j?(_=x=>{x||j()},e[14]=j,e[15]=_):_=e[15];let $;e[16]!==h?($=x=>{x||h==null||h()},e[16]=h,e[17]=$):$=e[17];let N;e[18]===Symbol.for("react.memo_cache_sentinel")?(N=t.jsx(Ee,{className:"size-4"}),e[18]=N):N=e[18];const A=f+1;let R;e[19]!==A?(R=t.jsx("div",{className:"flex items-center justify-between gap-3",children:t.jsxs(Me,{className:"flex items-center gap-2",children:[N,"Branches from Turn ",A]})}),e[19]=A,e[20]=R):R=e[20];let S;e[21]===Symbol.for("react.memo_cache_sentinel")?(S=t.jsx(we,{children:"Compare alternate continuations and resume from an earlier point."}),e[21]=S):S=e[21];const ie=l<=1;let Z;e[22]===Symbol.for("react.memo_cache_sentinel")?(Z=t.jsx(De,{"data-icon":"inline-start"}),e[22]=Z):Z=e[22];let E;e[23]!==k||e[24]!==ie?(E=t.jsx(V,{variant:"ghost",size:"icon-sm",onClick:k,disabled:ie,"aria-label":"Previous branch",children:Z}),e[23]=k,e[24]=ie,e[25]=E):E=e[25];let D;e[26]!==v?(D=v&&t.jsx(Ae,{variant:"secondary",className:"ml-2",children:"Active"}),e[26]=v,e[27]=D):D=e[27];let z;e[28]!==i.label||e[29]!==D?(z=t.jsxs("div",{className:"truncate text-sm font-medium",children:[i.label,D]}),e[28]=i.label,e[29]=D,e[30]=z):z=e[30];const ae=m+1;let H;e[31]!==i.createdAt||e[32]!==v?(H=!v&&t.jsxs(t.Fragment,{children:[" · ",new Date(i.createdAt).toLocaleString()]}),e[31]=i.createdAt,e[32]=v,e[33]=H):H=e[33];let L;e[34]!==ae||e[35]!==H||e[36]!==l?(L=t.jsxs("div",{className:"text-xs text-muted-foreground",children:["Branch ",ae," of ",l,H]}),e[34]=ae,e[35]=H,e[36]=l,e[37]=L):L=e[37];let P;e[38]!==z||e[39]!==L?(P=t.jsxs("div",{className:"flex-1 text-center",children:[z,L]}),e[38]=z,e[39]=L,e[40]=P):P=e[40];const oe=l<=1;let ee;e[41]===Symbol.for("react.memo_cache_sentinel")?(ee=t.jsx(ze,{"data-icon":"inline-start"}),e[41]=ee):ee=e[41];let W;e[42]!==T||e[43]!==oe?(W=t.jsx(V,{variant:"ghost",size:"icon-sm",onClick:T,disabled:oe,"aria-label":"Next branch",children:ee}),e[42]=T,e[43]=oe,e[44]=W):W=e[44];let F;e[45]!==E||e[46]!==P||e[47]!==W?(F=t.jsxs("div",{className:"flex items-center gap-3 pt-3",children:[E,P,W]}),e[45]=E,e[46]=P,e[47]=W,e[48]=F):F=e[48];let O;e[49]!==R||e[50]!==F?(O=t.jsxs($e,{className:"shrink-0 p-5 pb-4 pr-14",children:[R,S,F]}),e[49]=R,e[50]=F,e[51]=O):O=e[51];let te;e[52]===Symbol.for("react.memo_cache_sentinel")?(te=t.jsx(de,{}),e[52]=te):te=e[52];let q;e[53]!==f||e[54]!==m||e[55]!==d?(q=t.jsx("div",{className:"shrink-0 px-5 py-4",children:t.jsx(He,{branches:d,activeBranchIdx:m,branchPointTurnIndex:f})}),e[53]=f,e[54]=m,e[55]=d,e[56]=q):q=e[56];let se;e[57]===Symbol.for("react.memo_cache_sentinel")?(se=t.jsx(de,{}),e[57]=se):se=e[57];let G;e[58]!==i.archivedTurns||e[59]!==i.fullTurns||e[60]!==i.id||e[61]!==v||e[62]!==y||e[63]!==C?(G=C===0?t.jsx(be,{className:"min-h-40",children:t.jsxs(Ce,{children:[t.jsx(_e,{children:"No turns in this branch"}),t.jsx(Be,{children:"This continuation has no saved turns."})]})}):i.fullTurns?i.fullTurns.map((x,B)=>t.jsx(Fe,{turn:x,archiveIndex:B,branchId:i.id,onRedoToHere:v?void 0:y},x.id)):(ue=i.archivedTurns)==null?void 0:ue.map((x,B)=>t.jsx(Ge,{turn:x,archiveIndex:B,branchId:i.id,onRedoToHere:y},x.index)),e[58]=i.archivedTurns,e[59]=i.fullTurns,e[60]=i.id,e[61]=v,e[62]=y,e[63]=C,e[64]=G):G=e[64];let Y;e[65]!==G?(Y=t.jsx(Se,{className:"min-h-0 flex-1",children:t.jsx("div",{className:"flex flex-col gap-3 p-4",children:G})}),e[65]=G,e[66]=Y):Y=e[66];let ne;e[67]===Symbol.for("react.memo_cache_sentinel")?(ne=t.jsx(de,{}),e[67]=ne):ne=e[67];const ce=C!==1?"s":"";let K;e[68]!==ce||e[69]!==C?(K=t.jsxs("span",{className:"text-xs text-muted-foreground",children:[C," turn",ce," in this branch"]}),e[68]=ce,e[69]=C,e[70]=K):K=e[70];let X;e[71]!==i.id||e[72]!==v||e[73]!==o?(X=!v&&t.jsxs(V,{size:"sm",onClick:()=>o(i.id),children:[t.jsx(me,{"data-icon":"inline-start",className:"scale-x-[-1]"}),"Redo entire branch"]}),e[71]=i.id,e[72]=v,e[73]=o,e[74]=X):X=e[74];let J;e[75]!==K||e[76]!==X?(J=t.jsxs("div",{className:"flex shrink-0 items-center justify-between p-4",children:[K,X]}),e[75]=K,e[76]=X,e[77]=J):J=e[77];let Q;e[78]!==O||e[79]!==q||e[80]!==Y||e[81]!==J?(Q=t.jsxs(Ie,{className:"flex max-h-[80dvh] flex-col gap-0 overflow-hidden p-0 sm:max-w-2xl",children:[O,te,q,se,Y,ne,J]}),e[78]=O,e[79]=q,e[80]=Y,e[81]=J,e[82]=Q):Q=e[82];let re;return e[83]!==n||e[84]!==Q||e[85]!==_||e[86]!==$?(re=t.jsx(Re,{open:n,onOpenChange:_,onOpenChangeComplete:$,children:Q}),e[83]=n,e[84]=Q,e[85]=_,e[86]=$,e[87]=re):re=e[87],re}export{Ue as BranchModal};
5
+ `)).turns}catch{}r.push({kind:"archived",id:I.id,label:I.label,createdAt:I.createdAt,fullTurns:U,archivedTurns:U?null:I.turns,graphTurnCount:U?U.length:I.turns.length,branch:I})}e[0]=c,e[1]=g,e[2]=r}else r=e[2];const d=r,[m,p]=fe.useState(0),l=d.length;let u;e[6]!==l?(u=()=>{p(x=>x>0?x-1:l-1)},e[6]=l,e[7]=u):u=e[7];const k=u;let b;e[8]!==l?(b=()=>{p(x=>x<l-1?x+1:0)},e[8]=l,e[9]=b):b=e[9];const T=b;let M,w;e[10]!==T||e[11]!==k?(M=()=>{const x=B=>{B.key==="ArrowLeft"?k():B.key==="ArrowRight"&&T()};return window.addEventListener("keydown",x),()=>window.removeEventListener("keydown",x)},w=[k,T],e[10]=T,e[11]=k,e[12]=M,e[13]=w):(M=e[12],w=e[13]),fe.useEffect(M,w);const i=d[m];if(!i)return null;const C=((xe=i.fullTurns)==null?void 0:xe.length)??((he=i.archivedTurns)==null?void 0:he.length)??0,v=i.kind==="current";let _;e[14]!==j?(_=x=>{x||j()},e[14]=j,e[15]=_):_=e[15];let $;e[16]!==h?($=x=>{x||h==null||h()},e[16]=h,e[17]=$):$=e[17];let N;e[18]===Symbol.for("react.memo_cache_sentinel")?(N=t.jsx(Ee,{className:"size-4"}),e[18]=N):N=e[18];const A=f+1;let R;e[19]!==A?(R=t.jsx("div",{className:"flex items-center justify-between gap-3",children:t.jsxs(Me,{className:"flex items-center gap-2",children:[N,"Branches from Turn ",A]})}),e[19]=A,e[20]=R):R=e[20];let S;e[21]===Symbol.for("react.memo_cache_sentinel")?(S=t.jsx(we,{children:"Compare alternate continuations and resume from an earlier point."}),e[21]=S):S=e[21];const ie=l<=1;let Z;e[22]===Symbol.for("react.memo_cache_sentinel")?(Z=t.jsx(De,{"data-icon":"inline-start"}),e[22]=Z):Z=e[22];let E;e[23]!==k||e[24]!==ie?(E=t.jsx(V,{variant:"ghost",size:"icon-sm",onClick:k,disabled:ie,"aria-label":"Previous branch",children:Z}),e[23]=k,e[24]=ie,e[25]=E):E=e[25];let D;e[26]!==v?(D=v&&t.jsx(Ae,{variant:"secondary",className:"ml-2",children:"Active"}),e[26]=v,e[27]=D):D=e[27];let z;e[28]!==i.label||e[29]!==D?(z=t.jsxs("div",{className:"truncate text-sm font-medium",children:[i.label,D]}),e[28]=i.label,e[29]=D,e[30]=z):z=e[30];const ae=m+1;let H;e[31]!==i.createdAt||e[32]!==v?(H=!v&&t.jsxs(t.Fragment,{children:[" · ",new Date(i.createdAt).toLocaleString()]}),e[31]=i.createdAt,e[32]=v,e[33]=H):H=e[33];let L;e[34]!==ae||e[35]!==H||e[36]!==l?(L=t.jsxs("div",{className:"text-xs text-muted-foreground",children:["Branch ",ae," of ",l,H]}),e[34]=ae,e[35]=H,e[36]=l,e[37]=L):L=e[37];let P;e[38]!==z||e[39]!==L?(P=t.jsxs("div",{className:"flex-1 text-center",children:[z,L]}),e[38]=z,e[39]=L,e[40]=P):P=e[40];const oe=l<=1;let ee;e[41]===Symbol.for("react.memo_cache_sentinel")?(ee=t.jsx(ze,{"data-icon":"inline-start"}),e[41]=ee):ee=e[41];let W;e[42]!==T||e[43]!==oe?(W=t.jsx(V,{variant:"ghost",size:"icon-sm",onClick:T,disabled:oe,"aria-label":"Next branch",children:ee}),e[42]=T,e[43]=oe,e[44]=W):W=e[44];let F;e[45]!==E||e[46]!==P||e[47]!==W?(F=t.jsxs("div",{className:"flex items-center gap-3 pt-3",children:[E,P,W]}),e[45]=E,e[46]=P,e[47]=W,e[48]=F):F=e[48];let O;e[49]!==R||e[50]!==F?(O=t.jsxs($e,{className:"shrink-0 p-5 pb-4 pr-14",children:[R,S,F]}),e[49]=R,e[50]=F,e[51]=O):O=e[51];let te;e[52]===Symbol.for("react.memo_cache_sentinel")?(te=t.jsx(de,{}),e[52]=te):te=e[52];let q;e[53]!==f||e[54]!==m||e[55]!==d?(q=t.jsx("div",{className:"shrink-0 px-5 py-4",children:t.jsx(He,{branches:d,activeBranchIdx:m,branchPointTurnIndex:f})}),e[53]=f,e[54]=m,e[55]=d,e[56]=q):q=e[56];let se;e[57]===Symbol.for("react.memo_cache_sentinel")?(se=t.jsx(de,{}),e[57]=se):se=e[57];let G;e[58]!==i.archivedTurns||e[59]!==i.fullTurns||e[60]!==i.id||e[61]!==v||e[62]!==y||e[63]!==C?(G=C===0?t.jsx(be,{className:"min-h-40",children:t.jsxs(Ce,{children:[t.jsx(_e,{children:"No turns in this branch"}),t.jsx(Be,{children:"This continuation has no saved turns."})]})}):i.fullTurns?i.fullTurns.map((x,B)=>t.jsx(Fe,{turn:x,archiveIndex:B,branchId:i.id,onRedoToHere:v?void 0:y},x.id)):(ue=i.archivedTurns)==null?void 0:ue.map((x,B)=>t.jsx(Ge,{turn:x,archiveIndex:B,branchId:i.id,onRedoToHere:y},x.index)),e[58]=i.archivedTurns,e[59]=i.fullTurns,e[60]=i.id,e[61]=v,e[62]=y,e[63]=C,e[64]=G):G=e[64];let Y;e[65]!==G?(Y=t.jsx(Se,{className:"min-h-0 flex-1",children:t.jsx("div",{className:"flex flex-col gap-3 p-4",children:G})}),e[65]=G,e[66]=Y):Y=e[66];let ne;e[67]===Symbol.for("react.memo_cache_sentinel")?(ne=t.jsx(de,{}),e[67]=ne):ne=e[67];const ce=C!==1?"s":"";let J;e[68]!==ce||e[69]!==C?(J=t.jsxs("span",{className:"text-xs text-muted-foreground",children:[C," turn",ce," in this branch"]}),e[68]=ce,e[69]=C,e[70]=J):J=e[70];let X;e[71]!==i.id||e[72]!==v||e[73]!==o?(X=!v&&t.jsxs(V,{size:"sm",onClick:()=>o(i.id),children:[t.jsx(me,{"data-icon":"inline-start",className:"scale-x-[-1]"}),"Redo entire branch"]}),e[71]=i.id,e[72]=v,e[73]=o,e[74]=X):X=e[74];let K;e[75]!==J||e[76]!==X?(K=t.jsxs("div",{className:"flex shrink-0 items-center justify-between p-4",children:[J,X]}),e[75]=J,e[76]=X,e[77]=K):K=e[77];let Q;e[78]!==O||e[79]!==q||e[80]!==Y||e[81]!==K?(Q=t.jsxs(Ie,{className:"flex max-h-[80dvh] flex-col gap-0 overflow-hidden p-0 sm:max-w-2xl",children:[O,te,q,se,Y,ne,K]}),e[78]=O,e[79]=q,e[80]=Y,e[81]=K,e[82]=Q):Q=e[82];let re;return e[83]!==n||e[84]!==Q||e[85]!==_||e[86]!==$?(re=t.jsx(Re,{open:n,onOpenChange:_,onOpenChangeComplete:$,children:Q}),e[83]=n,e[84]=Q,e[85]=_,e[86]=$,e[87]=re):re=e[87],re}export{Ue as BranchModal};