@popmelt.com/core 0.31.1 → 0.31.3

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 (51) hide show
  1. package/claude-plugin/.claude-plugin/plugin.json +1 -1
  2. package/codex-plugin/.codex-plugin/plugin.json +1 -1
  3. package/dist/{ParticipantRuntime-HU2P2PJ6.mjs → ParticipantRuntime-X2ZI2GJF.mjs} +1 -1
  4. package/dist/{PopmeltTasteConnectedPane-ALR3RTSC.mjs → PopmeltTasteConnectedPane-7YIHIFPE.mjs} +1 -1
  5. package/dist/{PreviewRuntime-YAUBP6HA.mjs → PreviewRuntime-QDA4OF67.mjs} +1 -1
  6. package/dist/ThreadErrorCard-6QN2ECBT.mjs +2 -0
  7. package/dist/bridge-entry.mjs +1 -1
  8. package/dist/{browser-runtime-LTQBOXZW.mjs → browser-runtime-6N65USFN.mjs} +1 -1
  9. package/dist/browser.mjs +1 -1
  10. package/dist/canvas-chat-note-NHYL3T6J.mjs +2 -0
  11. package/dist/{chunk-EG6SRS7N.mjs → chunk-6C4FAOTC.mjs} +1 -1
  12. package/dist/chunk-EXDOFFFJ.mjs +2 -0
  13. package/dist/{chunk-OLLUQ45J.mjs → chunk-F6AMPRUB.mjs} +1 -1
  14. package/dist/{chunk-253MCKJJ.mjs → chunk-GNZ73T3H.mjs} +1 -1
  15. package/dist/chunk-IKCHOC3U.mjs +3 -0
  16. package/dist/{chunk-GQ6CPJG6.mjs → chunk-IPR652AZ.mjs} +1 -1
  17. package/dist/chunk-JGNVTID4.mjs +2 -0
  18. package/dist/{chunk-RXRZTZPN.mjs → chunk-JU7D4I76.mjs} +1 -1
  19. package/dist/{chunk-CXQWNKZ4.mjs → chunk-M6LCEEFH.mjs} +4 -19
  20. package/dist/{chunk-JQHZFDY5.mjs → chunk-MTQ5IWIK.mjs} +1 -1
  21. package/dist/{chunk-4ZZTJRHL.mjs → chunk-QTGE5KAA.mjs} +1 -1
  22. package/dist/chunk-RCVAPQ7X.mjs +2 -0
  23. package/dist/{chunk-LSPIP2IX.mjs → chunk-SKOSDB5K.mjs} +87 -87
  24. package/dist/{chunk-E3ZTB2VR.mjs → chunk-UJ5PA3SZ.mjs} +84 -84
  25. package/dist/chunk-X3UK5M3S.mjs +2 -0
  26. package/dist/{chunk-IRFL32GJ.mjs → chunk-ZGERZLB4.mjs} +3 -3
  27. package/dist/cli.mjs +8 -8
  28. package/dist/codex-note-context-KSRJRH3F.mjs +2 -0
  29. package/dist/codex-project-JYNETLSG.mjs +2 -0
  30. package/dist/codex-session-registry-SPRWY2WW.mjs +2 -0
  31. package/dist/{focus-inspection-GJKMI6OE.mjs → focus-inspection-WPHGCN6Y.mjs} +1 -1
  32. package/dist/index.mjs +1 -1
  33. package/dist/peer-client-STR2FWR4.mjs +2 -0
  34. package/dist/plugin-astro.mjs +1 -1
  35. package/dist/plugin-nuxt.mjs +1 -1
  36. package/dist/plugin-vite.mjs +1 -1
  37. package/dist/server.mjs +1 -1
  38. package/dist/{workspace-snapshot-LKQWBDNS.mjs → workspace-snapshot-O34KMJ2V.mjs} +1 -1
  39. package/package.json +32 -22
  40. package/dist/ThreadErrorCard-5ADUBZKJ.mjs +0 -2
  41. package/dist/canvas-chat-note-7HSL7MH6.mjs +0 -2
  42. package/dist/chunk-4V7SK3M6.mjs +0 -3
  43. package/dist/chunk-CECQ4VMR.mjs +0 -2
  44. package/dist/chunk-HGW2U6PD.mjs +0 -2
  45. package/dist/chunk-WIQ3RY6R.mjs +0 -2
  46. package/dist/chunk-XOGBFVWI.mjs +0 -2
  47. package/dist/codex-note-context-NVDO3PVT.mjs +0 -2
  48. package/dist/codex-project-IE6ZJFGB.mjs +0 -2
  49. package/dist/codex-session-registry-25DAA2KO.mjs +0 -2
  50. package/dist/peer-client-2THOHRGA.mjs +0 -2
  51. /package/dist/{chunk-V6VQACC2.mjs → chunk-WMHM647D.mjs} +0 -0
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import{b as Qf,f as Wi,h as Zf,g as ys,a as uc,d as pc,c as fc}from"./chunk-RXRZTZPN.mjs";import{a as eh}from"./chunk-GQ6CPJG6.mjs";import{M as il,vb as vs,Ua as hc,f as th,e as mc,tb as bs,a as nh,xb as gc,yb as yc,wb as xs,c as rh,jb as oh,kb as ih,Ja as Bi,ja as ah,Db as lh,Eb as vc,ia as sh,Kb as dh,Gb as ch,Hb as uh,Ib as ph,_a as fh,ka as hh,Da as mh,za as bc,ab as gh,ba as yh,ca as ws,da as vh,ea as bh,$a as xh,Fa as wh,ha as Sh,ob as Ss,nb as Ih,mb as Is,Fb as kh,la as Th,Oa as xc,Ba as wc,Ma as Sc,Na as Eh,La as Ic,Ka as Ah,Ga as ks,N as Ch,Cb as Mh,p as kc,ya as Rh,b as Lh,ub as Tc,Ra as Ph,Qa as jh,Ta as zh,Pa as $h,Sa as Dh,Ca as Hh,D as Nh,E as Oh,l as Fh,ra as nn,ua as _h,xa as Wh,Ha as Bh,sa as Ec,na as Ji,T as Jh,ma as qh,R as Ac,Y as Uh,fb as gi,Mb as Yh,Jb as Xh,eb as Cc,gb as Mc,Ab as Kh,Bb as Vh,lb as Gh,hb as Qh,ib as Zh,Aa as em,Ea as Ts,Q as tm,C as Rc,F as Lc,L as Pc,K as jc,o as yi,G as zc,J as qi,P as nm,va as Es,qa as rm,pa as As,oa as Cs,O as om,ga as im,fa as am,Ia as lm,ta as $c,wa as Dc,q as sm,W as Hc,U as Nc,V as Oc,X as dm,Z as Fc,$ as _c,aa as cm,S as um,zb as Wc,m as Ui,A as Ms,r as vi,I as al,u as Bc,g as pm,_ as fm,t as ll,h as Jc,y as hm,j as $r,v as Rs,s as Ta,i as Ls,k as mm,z as gm,x as ym,H as Ps,w as qc,n as Uc,B as vm}from"./chunk-IRFL32GJ.mjs";import{b as Yc,d as bm,a as xm,e as wm,c as Sm}from"./chunk-J4WDYITA.mjs";import{h as Im,Ca as Xc,R as Yi,ma as km,N as Tm,H as Kc,A as ro,la as sl,ka as Em,P as Am,D as Vc,O as Cm,da as Tn,Y as js,aa as lr,fa as zs,$ as Ea,ha as Mm,S as dl,ua as Gc,_ as oo,za as Rm,Aa as Lm,Ba as Qc,ta as Zc,J as $s,v as eu,u as Aa,r as cl,w as Xi,Z as tu,Q as nu,I as Pm,K as jm,M as zm,f as $m,ba as Dm,ca as Hm,wa as Nm,va as ru,ya as Om,xa as Fm,sa as ou,z as iu,t as Ds,g as _m,ea as Hs,C as Wm,E as au,G as Bm,F as Jm,ga as lu,ia as su,B as qm,s as ul,L as Um,y as Ns,q as du,x as Ym}from"./chunk-253MCKJJ.mjs";import{b as cu}from"./chunk-4LHTPRFY.mjs";import{c as Xm,a as uu,b as Ca}from"./chunk-JQHZFDY5.mjs";import{i as pu,k as Km,m as Vm,h as fu,g as Gm,a as pl,e as Qm,b as Dr,d as Zm,f as it,c as eg}from"./chunk-OLLUQ45J.mjs";import{c as hn,a as Ho,i as mn,j as bi,d as tg,e as ng,b as hu,l as rg,m as og,k as ig}from"./chunk-XOGBFVWI.mjs";import{a as ag}from"./chunk-2P2NUZW7.mjs";import{d as Os,i as lg}from"./chunk-D32YV5O6.mjs";import{a as Fs,h as mu,d as sg,c as dg,g as _s,e as Ws,b as cg}from"./chunk-V44RIEET.mjs";import{b as Yt,f as gu,d as yu,e as Bs,i as ug,j as Ma,l as vu,m as bu,r as pg,p as fg,u as hg,t as mg,s as gg,k as yg,a as vg,c as bg}from"./chunk-CPOYMGYY.mjs";import{a as xu,b as xg}from"./chunk-EX63NVDN.mjs";import{d as wg,g as Sg,m as Ig,l as kg}from"./chunk-N2ZEZCHO.mjs";import{a as Tg}from"./chunk-J3UIBBU2.mjs";import{b as Eg}from"./chunk-6VXFTT5U.mjs";import{a as Ag}from"./chunk-LVEMYZOA.mjs";import{d as xn,o as Ra,n as Ki,a as wu,i as Su,v as Iu,u as ku,h as fl,k as Cg,f as Mg,c as Js,m as Tu,l as qs}from"./chunk-HGW2U6PD.mjs";import{lazy as hl,memo as Rg,useContext as Hr,useState as j,Suspense as ml,Fragment as Lg,useRef as W,useEffect as O,useLayoutEffect as It,useCallback as J,useMemo as Se,cloneElement as Pg,useSyncExternalStore as jg,useId as zg}from"react";import{jsx as f,jsxs as M,Fragment as ct}from"react/jsx-runtime";import{Fingerprint as io,Component as gl,Reply as Eu,Ban as yl,Terminal as $g,PenLine as Dg,ImageIcon as Hg,Plug as Ng,SquareMousePointer as Og,ChevronRight as Us,ThumbsUp as Fg,Clock as Ys,ChevronDown as Vi,Check as xi,ChevronLeft as _g,X as Xs,Send as Au,Lock as Wg,ArrowDown as Bg,OctagonAlert as Cu,MessageCircleQuestionMark as Jg,TriangleAlert as qg,Command as Mu,CornerDownLeft as Ks,EyeOff as Ug}from"lucide-react";import{createPortal as Ru}from"react-dom";function Lu(e,t){return e.store===void 0&&(e.store=t),e.store}function Yg(e,t){let n=e.listeners??(e.listeners=new Set);return n.add(t),()=>n.delete(t)}function Xg(e,t,n){let r=n(Lu(e,t));e.store=r;for(let o of e.listeners??[])o();return r}var nt=globalThis.__POPMELT_BRIDGE_CONNECTION__??(globalThis.__POPMELT_BRIDGE_CONNECTION__={}),vl=nt.sourceId??(typeof localStorage<"u"?localStorage.getItem("popmelt-source-id"):null)??(typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Math.random().toString(36).slice(2));nt.sourceId=vl;try{typeof localStorage<"u"&&localStorage.setItem("popmelt-source-id",vl)}catch{}function Vs(){return vl}var bl={isConnected:!1,status:"disconnected",jobResponses:{},jobThinking:{},activeJobIds:[],activeJobThreads:{},currentResponse:"",currentThinking:"",events:[],activeJobId:null,lastCompletedJobId:null,lastResponseText:null,lastThreadId:null,lastErrorByJob:{},pendingQuestions:[],incrementalResolutions:[],capabilitiesVersion:0};nt.store??(nt.store={...bl}),nt.listeners??(nt.listeners=new Set);var Nr=nt.activeEs??null,xl=nt.activeBridgeUrl??null,ao=null,Xn=nt.connectionGeneration??0,La=new Set,wi=new Map,No={},wl=new Set,Oo=new Map;function zn(e,t){if(!e)return!1;if(wl.has(e))return!0;if(La.has(e)){let r=wi.get(e);return r||(r=[],wi.set(e,r)),r.push({type:t.type??"",data:t}),!0}let n=No[e];return n!==void 0&&typeof t.seq=="number"&&t.seq<=n}async function Pu(e,t,n,r=new Map){let o=()=>n!==(nt.connectionGeneration??0);for(let l of t){if(o())return;Oo.set(l,r.get(l)??Oo.get(l)),La.add(l),wi.set(l,[])}let{mergeBackfillHistory:i,selectBackfillTerminalEvent:a}=await import("./bridge-recovery-3IQN3U6D.mjs");o()||await Promise.all(t.map(async l=>{try{let s=await vu(e,l,-1,{retryUnavailable:!0});if(o()||wl.has(l))return;let d=wi.get(l)??[];if(s){pt(u=>{let h={...u.jobResponses,[l]:s.accumulated.response},m={...u.jobThinking,[l]:s.accumulated.thinking},g=i(u.events,l,s.events);return{...u,jobResponses:h,jobThinking:m,currentResponse:l===u.activeJobId?s.accumulated.response:u.currentResponse,currentThinking:l===u.activeJobId?s.accumulated.thinking:u.currentThinking,events:g}}),No[l]=s.currentSeq;let c=[...s.events].reverse().find(u=>u.type==="job_started"||u.type==="job_parked");c?.type==="job_parked"&&Gi("job_parked",c,l);let p=a(s.events,s.jobActive,r.get(l));p&&Gi(p.type,p,l);for(let u of d)typeof u.data.seq=="number"&&u.data.seq<=s.currentSeq||Gi(u.type,u.data,l)}else{let c=!1;for(let u of d)Gi(u.type,u.data,l),(u.type==="done"||u.type==="error")&&(c=!0);let p=r.get(l);!c&&p&&Gi(p.type,p,l)}Oo.delete(l)}finally{o()||(La.delete(l),wi.delete(l))}}))}function Gi(e,t,n){if(e==="job_parked")pt(r=>{let o=r.activeJobIds.filter(i=>i!==n);return{...r,activeJobIds:o,activeJobId:o.at(-1)??null,events:[...r.events,{type:e,data:t,timestamp:Date.now()}]}});else if(e==="job_started")pt(r=>({...r,status:"streaming",activeJobId:n,activeJobIds:[...new Set([...r.activeJobIds,n])],activeJobThreads:typeof t.threadId=="string"?{...r.activeJobThreads,[n]:t.threadId}:r.activeJobThreads,events:[...r.events,{type:e,data:t,timestamp:Date.now()}]}));else if(e==="delta"){let r=t.text||"";pt(o=>({...o,jobResponses:{...o.jobResponses,[n]:(o.jobResponses[n]||"")+r},currentResponse:n===o.activeJobId?o.currentResponse+r:o.currentResponse,events:[...o.events,{type:"delta",data:t,timestamp:Date.now()}]}))}else if(e==="thinking"){let r=t.text||"";pt(o=>({...o,jobThinking:{...o.jobThinking,[n]:(o.jobThinking[n]||"")+r},currentThinking:n===o.activeJobId?o.currentThinking+r:o.currentThinking,events:[...o.events,{type:"thinking",data:t,timestamp:Date.now()}]}))}else if(e==="status")pt(r=>({...r,events:[...r.events,{type:"status",data:t,timestamp:Date.now()}]}));else if(e==="done")delete No[n],pt(r=>{let o=r.activeJobIds.filter(d=>d!==n),i={...r.jobResponses},a={...r.jobThinking},l=i[n];delete i[n],delete a[n];let s=n===r.activeJobId?o.length>0?o[o.length-1]:null:r.activeJobId;return{...r,activeJobIds:o,activeJobId:s,jobResponses:i,jobThinking:a,lastCompletedJobId:n,lastResponseText:t.responseText||l||r.currentResponse||null,lastThreadId:t.threadId??null,...n===r.activeJobId?{currentResponse:s&&i[s]||"",currentThinking:s&&a[s]||""}:{},events:[...r.events,{type:"done",data:t,timestamp:Date.now()}]}});else if(e==="error"){delete No[n];let r=t.message??"";pt(o=>{let i=o.activeJobIds.filter(l=>l!==n),a=i.length>0?o.status:"error";return{...o,status:a,activeJobIds:i,lastCompletedJobId:n,lastErrorByJob:r?{...o.lastErrorByJob,[n]:r}:o.lastErrorByJob,events:[...o.events,{type:"error",data:t,timestamp:Date.now()}]}})}else pt(e==="question"?r=>{let o=typeof t.threadId=="string"?t.threadId:"",i=typeof t.question=="string"?t.question:"",a=Array.isArray(t.annotationIds)?t.annotationIds.filter(s=>typeof s=="string"):void 0,l=r.pendingQuestions.some(s=>s.jobId===n);return{...r,pendingQuestions:i&&o&&!l?[...r.pendingQuestions,{jobId:n,threadId:o,question:i,annotationIds:a,timestamp:Date.now()}]:r.pendingQuestions,events:[...r.events,{type:e,data:t,timestamp:Date.now()}]}}:r=>({...r,events:[...r.events,{type:e,data:t,timestamp:Date.now()}]}))}var Kn=nt.discoveredBridgeUrl??null,$n=nt.discoveredBridgeProjectId??null,Fo=null,Qi=null;function ju(e,t=!1){let n=e??null;if(!(!t&&(nt.expectedProjectId??null)===n)){Nr&&(Nr.close(),Nr=null,nt.activeEs=null),ao&&(clearTimeout(ao),ao=null),xl=null,nt.activeBridgeUrl=null,Kn=null,$n=null,nt.discoveredBridgeUrl=null,nt.discoveredBridgeProjectId=null,Fo=null,Qi=null,La.clear(),wi.clear(),wl.clear(),Oo.clear();for(let r of Object.keys(No))delete No[r];nt.expectedProjectId=n,Xn=(nt.connectionGeneration??Xn)+1,nt.connectionGeneration=Xn,pt(()=>({...bl}))}}function Kg(){nt.listeners?.size||ju(null,!0)}async function zu(e,t){if(Kn&&(t?$n===t:!$n))return Kn;if(!t&&$n&&(Kn=null,$n=null,nt.discoveredBridgeUrl=Kn,nt.discoveredBridgeProjectId=$n),t&&$n&&$n!==t&&(Kn=null,$n=null,nt.discoveredBridgeUrl=Kn,nt.discoveredBridgeProjectId=$n),Fo&&Qi===(t??null))return Fo;let n=Xn;return Qi=t??null,Fo=yg(e,t).then(r=>n!==Xn?null:(Kn=r?.url??null,$n=r?.projectId??t??null,nt.discoveredBridgeUrl=Kn,nt.discoveredBridgeProjectId=$n,Fo=null,Qi=null,Kn)).catch(()=>(n!==Xn||(Fo=null,Qi=null),null)),Fo}function Vg(){return Kn}async function Gg(e,t){Kn=null,$n=null,nt.discoveredBridgeUrl=null,nt.discoveredBridgeProjectId=null,Fo=null,Qi=null;let n=Xn,r=await zu(e,t);return r&&n===Xn&&Gs(r),r}function Pa(){return Lu(nt,{...bl})}function Qg(e){return Yg(nt,e)}function pt(e){Xg(nt,{...bl},t=>{let n=e(t),r=new Set(n.activeJobIds),o=n.activeJobId&&r.has(n.activeJobId)?n.activeJobId:n.activeJobIds.at(-1)??null;return{...n,activeJobId:o,activeJobThreads:Object.keys(n.activeJobThreads).some(i=>!r.has(i))?Object.fromEntries(Object.entries(n.activeJobThreads).filter(([i])=>r.has(i))):n.activeJobThreads,status:n.status==="streaming"&&r.size===0?"idle":n.status}})}function Zg(){return typeof window<"u"?window.__POPMELT_PROJECT_ID__??null:null}function Gs(e){if(Nr&&Nr.readyState!==EventSource.CLOSED&&xl===e)return;Nr&&(Nr.close(),Nr=null,nt.activeEs=null),ao&&(clearTimeout(ao),ao=null),xl=e,nt.activeBridgeUrl=xl,Xn=(nt.connectionGeneration??Xn)+1;let t=Xn;nt.connectionGeneration=Xn;let n=new URLSearchParams({sourceId:vl}),r=Zg();r&&n.set("projectId",r);let o=vg(`${e}/events?${n.toString()}`);Nr=o,nt.activeEs=Nr;let i=!1,a=()=>t!==(nt.connectionGeneration??0),l=()=>i||a();La.clear(),wi.clear();let s=5e3,d=()=>{a()||ao||(ao=setTimeout(()=>{ao=null,!a()&&Ma(e).then(p=>{a()||(p&&(!r||p.projectId===r)?Gs(e):(s=Math.min(s*2,3e4),d()))})},s))},c=()=>{l()||(i=!0,o.close(),pt(p=>({...p,isConnected:!1,status:"disconnected"})),d())};o.addEventListener("connected",()=>{l()||Ma(e).then(async p=>{if(l())return;if(!p||r&&p.projectId!==r){c();return}let u=[...p?.activeJobs??(p?.activeJob?[p.activeJob]:[]),...p?.queuedJobs?.filter(z=>z.parked)??[]],h=p?.recentJobs??[],{planBridgeReconnectRecovery:m}=await import("./bridge-recovery-3IQN3U6D.mjs");if(l())return;let g=m(Pa().activeJobIds,u,h),{serverActiveIds:x,terminalJobs:S}=g,D=S.map(z=>z.id),H=new Map(Oo);for(let z of S)H.set(z.id,z.status==="error"?{type:"error",jobId:z.id,message:z.error??"The agent run failed.",threadId:z.threadId,annotationIds:z.annotationIds}:{type:"done",jobId:z.id,success:!0,threadId:z.threadId,annotationIds:z.annotationIds});pt(z=>{let Z={...z.lastErrorByJob};for(let N of S)N?.status==="error"&&N.error&&(Z[N.id]=N.error);let k=m(z.activeJobIds,u,h).reconciledActiveIds,G={};for(let N of u)N.threadId&&(G[N.id]=N.threadId);return{...z,isConnected:!0,status:k.length>0?"streaming":D.length>0||z.status==="disconnected"?"idle":z.status,activeJobId:k.length>0?k[k.length-1]:null,activeJobIds:k,activeJobThreads:G,lastErrorByJob:Z,workspaceGeneration:p?.workspaceGeneration}});let w=[...new Set([...x,...D,...Oo.keys()])];w.length>0&&Pu(e,w,t,H).catch(c)}).catch(c)}),o.addEventListener("job_parked",p=>{if(l())return;let u=JSON.parse(p.data);zn(u.jobId,u)||Gi("job_parked",u,u.jobId)}),o.addEventListener("thread_changed",p=>{if(l())return;let u=JSON.parse(p.data);pt(h=>({...h,events:[...h.events,{type:"thread_changed",data:u,timestamp:Date.now()}]}))}),o.addEventListener("job_started",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;if(zn(h,u))return;let m=u.threadId;pt(g=>({...g,status:"streaming",activeJobId:h,activeJobIds:g.activeJobIds.includes(h)?g.activeJobIds:[...g.activeJobIds,h],activeJobThreads:m?{...g.activeJobThreads,[h]:m}:g.activeJobThreads,jobResponses:{...g.jobResponses,[h]:g.jobResponses[h]??""},jobThinking:{...g.jobThinking,[h]:g.jobThinking[h]??""},currentResponse:g.jobResponses[h]??"",currentThinking:g.jobThinking[h]??"",lastResponseText:null,lastThreadId:null,events:[...g.events,{type:"job_started",data:u,timestamp:Date.now()}]}))}),o.addEventListener("delta",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;if(zn(h,u))return;let m=u.text||"";pt(g=>({...g,jobResponses:h?{...g.jobResponses,[h]:(g.jobResponses[h]||"")+m}:g.jobResponses,currentResponse:!h||h===g.activeJobId?g.currentResponse+m:g.currentResponse,events:[...g.events,{type:"delta",data:u,timestamp:Date.now()}]}))}),o.addEventListener("thinking",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;if(zn(h,u))return;let m=u.text||"";pt(g=>({...g,jobThinking:h?{...g.jobThinking,[h]:(g.jobThinking[h]||"")+m}:g.jobThinking,currentThinking:!h||h===g.activeJobId?g.currentThinking+m:g.currentThinking,events:[...g.events,{type:"thinking",data:u,timestamp:Date.now()}]}))}),o.addEventListener("status",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;zn(h,u)||pt(m=>({...m,events:[...m.events,{type:"status",data:u,timestamp:Date.now()}]}))}),o.addEventListener("orientation",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;zn(h,u)||pt(m=>({...m,events:[...m.events,{type:"orientation",data:u,timestamp:Date.now()}]}))}),o.addEventListener("approval",p=>{if(l())return;let u=JSON.parse(p.data);zn(u.jobId,u)||pt(h=>({...h,events:[...h.events,{type:"approval",data:u,timestamp:Date.now()}]}))}),o.addEventListener("imprint_used",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;zn(h,u)||pt(m=>({...m,events:[...m.events,{type:"imprint_used",data:u,timestamp:Date.now()}]}))}),o.addEventListener("tool_use",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;zn(h,u)||pt(m=>({...m,events:[...m.events,{type:"tool_use",data:u,timestamp:Date.now()}]}))});for(let p of["image_generation","image_ready"])o.addEventListener(p,u=>{if(l())return;let h=JSON.parse(u.data),m=h.jobId;zn(m,h)||pt(g=>({...g,events:[...g.events,{type:p,data:h,timestamp:Date.now()}]}))});o.addEventListener("done",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;zn(h,u)||(h&&delete No[h],pt(m=>{let g=h?m.activeJobIds.filter(z=>z!==h):m.activeJobIds,x={...m.jobResponses},S={...m.jobThinking},D={...m.activeJobThreads},H=h?x[h]:void 0;h&&(delete x[h],delete S[h],delete D[h]);let w=h===m.activeJobId?g.length>0?g[g.length-1]:null:m.activeJobId;return{...m,activeJobIds:g,activeJobId:w,jobResponses:x,jobThinking:S,lastCompletedJobId:h??m.activeJobId,lastResponseText:u.responseText||H||m.currentResponse||null,lastThreadId:u.threadId??null,...h===m.activeJobId?{currentResponse:w&&x[w]||"",currentThinking:w&&S[w]||""}:{},events:[...m.events,{type:"done",data:u,timestamp:Date.now()}]}}))}),o.addEventListener("question",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;zn(h,u)||pt(m=>({...m,pendingQuestions:[...m.pendingQuestions,{jobId:u.jobId,threadId:u.threadId,question:u.question,annotationIds:u.annotationIds,timestamp:Date.now()}],events:[...m.events,{type:"question",data:u,timestamp:Date.now()}]}))}),o.addEventListener("capabilities_changed",()=>{l()||pt(p=>({...p,capabilitiesVersion:p.capabilitiesVersion+1}))}),o.addEventListener("workspace_cleared",p=>{if(l())return;let u=JSON.parse(p.data);typeof u.workspaceGeneration!="number"||!Number.isInteger(u.workspaceGeneration)||u.workspaceGeneration<0||pt(h=>{for(let m of[...h.activeJobIds,...Oo.keys()])wl.add(m);return Oo.clear(),{...h,workspaceGeneration:u.workspaceGeneration,status:"idle",activeJobId:null,activeJobIds:[],activeJobThreads:{},jobResponses:{},jobThinking:{},currentResponse:"",currentThinking:"",events:[],lastCompletedJobId:null,lastResponseText:null,lastThreadId:null,lastErrorByJob:{},pendingQuestions:[],incrementalResolutions:[]}})}),o.addEventListener("queue_drained",()=>{if(l())return;let p=[...Pa().activeJobIds];if(p.length===0){pt(u=>({...u,status:u.status==="error"?"error":"idle",incrementalResolutions:[]}));return}Pu(e,p,t).then(()=>{l()||pt(u=>({...u,status:u.activeJobIds.length>0?u.status:u.status==="error"?"error":"idle",incrementalResolutions:u.activeJobIds.length>0?u.incrementalResolutions:[]}))}).catch(c)}),o.addEventListener("error",p=>{if(!l()){if(o.readyState===EventSource.CLOSED)c();else if(p instanceof MessageEvent){let u=JSON.parse(p.data),h=u.jobId??null;if(zn(h??void 0,u))return;h&&delete No[h];let m=u.message??"";pt(g=>{let x=h?g.activeJobIds.filter(D=>D!==h):g.activeJobIds,S=x.length>0?g.status:"error";return{...g,status:S,activeJobIds:x,lastCompletedJobId:h??g.activeJobId,lastErrorByJob:h&&m?{...g.lastErrorByJob,[h]:m}:g.lastErrorByJob,events:[...g.events,{type:"error",data:u,timestamp:Date.now()}]}})}}}),o.onerror=()=>{l()||o.readyState===EventSource.CLOSED&&pt(p=>({...p,isConnected:!1,status:"disconnected"}))}}function ey(e="http://localhost:1111",t=!0,n){let r=jg(Qg,Pa,Pa);O(()=>{if(ju(n),!t)return;let a=!1;return zu(e,n).then(l=>{!l||a||Ma(l).then(s=>{!a&&s&&(!n||s.projectId===n)&&Gs(l)})}),()=>{a=!0}},[e,t,n]);let o=J(()=>{pt(()=>({...Pa(),events:[],currentResponse:"",currentThinking:"",jobResponses:{},jobThinking:{},lastResponseText:null,lastThreadId:null,lastErrorByJob:{},incrementalResolutions:[]}))},[]),i=J(a=>{pt(l=>({...l,pendingQuestions:l.pendingQuestions.filter(s=>s.threadId!==a)}))},[]);return{...r,clearEvents:o,dismissQuestion:i}}function $u(e,t,n,r,o){let i=`devtools-model-id:${r}`,[a,l]=j(()=>typeof window>"u"?"":localStorage.getItem(i)??""),s=o?.(a)??!1,d=s?-1:e.findIndex(u=>u.id===a),c=d>=0?d:0,p=J(u=>{l(u),localStorage.setItem(i,u)},[i]);return O(()=>{n&&a&&(s||t&&d<0&&e.some(u=>u.id))&&p("")},[n,t,a,d,e,p,s]),{index:c,select:p}}function ty(e,t,n){let r=e.flatMap(({requestedAt:a,resolvedAt:l})=>Number.isFinite(a)&&Number.isFinite(l)?[[Math.max(t,a),Math.min(n,l)]]:[]).sort((a,l)=>a[0]-l[0]),o=t,i=0;for(let[a,l]of r)i+=Math.max(0,l-Math.max(o,a)),o=Math.max(o,l);return i}function Du(e){let t=new Map,n=new Set;for(let r of e)if(r.type==="approval"){let o=r.data.approval;t.set(o.id,o)}else(r.type==="done"||r.type==="error")&&n.add(String(r.data.jobId));return new Set([...t.values()].filter(r=>r.status==="pending"&&!n.has(r.jobId)).map(r=>r.jobId))}function Hu(e){let t=new MutationObserver(n=>{let r=n.filter(o=>document.body.contains(o.target)||o.target===document.documentElement&&[...o.addedNodes,...o.removedNodes].some(i=>i instanceof Element&&i.tagName==="BODY"));r.length&&e(r)});return t.observe(document.documentElement,{childList:!0,subtree:!0}),t}function ny(e,t,n,r=8*1024*1024){let o=d=>JSON.stringify({id:e,clientId:t,result:d}),i=d=>new TextEncoder().encode(d).length<=r,a=o(n);if(i(a))return a;let l=Array.isArray(n.images)?n.images:[],s=[l.filter(d=>d.kind==="annotated-viewport"),l.filter(d=>d.kind!=="annotated-viewport"),[]];for(let d of s){let c=o({...n,images:d,visualEvidence:{status:"partial",reason:"response_size_limit",omitted:l.filter(p=>!d.includes(p)).map(p=>p.kind)}});if(i(c))return c}return o({status:"context_too_large",targetKey:n.targetKey,images:[],warning:"Context exceeds the response limit even without images."})}function ry(e,t,n){let r=W(n);r.current=n;let[o,i]=j([]),a=h=>i(h?[h]:[]),l=W(null),s=W(null),d=W(null),c=J(()=>d.current?.(),[]),p=J(h=>{l.current=h,s.current?.(h)},[]),u=W(null);return O(()=>{if(!e)return;u.current?.url!==t&&(u.current={url:t,clientId:crypto.randomUUID(),sequence:0,sending:!1});let h=u.current,m={clientId:h.clientId,sequence:0,page:location.origin+location.pathname,title:document.title,active:!0,windowFocused:document.hasFocus(),lastInteractionAt:0,blurredAt:0,hover:null,pinned:null,history:[]},g=null,x=new WeakMap,S=new Map,D,H=!1,w,z=0,Z=()=>{let F=location.origin+location.pathname;m.page!==F&&(m.page=F,m.title=document.title,m.hover=null,m.pinned=null,m.history=[],m.recent=null,m.selected=null,S.clear(),g=null,m.lastInteractionAt=0),m.sequence=++h.sequence,h.pendingBody=JSON.stringify(m),!h.sending&&(h.sending=!0,(async()=>{for(;h.pendingBody;){let R=h.pendingBody;h.pendingBody=void 0;try{await Yt(`${t}/focus`,{method:"POST",headers:{"Content-Type":"application/json"},body:R,signal:AbortSignal.timeout(3e3)})}catch{}}h.sending=!1})())},k=(F,R)=>{x.has(F)||x.set(F,crypto.randomUUID());let $=mn(F),P=xn(F),A=getComputedStyle(F),ne={...R?{subject:R}:{},key:x.get(F),capturedAt:Date.now(),selector:$.selector,tagName:$.tagName,text:$.textContent?.slice(0,200),component:$.reactComponent,source:$.reactSource,rect:{x:P.x,y:P.y,width:P.width,height:P.height},styles:Object.fromEntries(["color","background-color","font-size","font-family","display","padding","border-radius"].map(re=>[re,A.getPropertyValue(re)]))};if(S.set(ne.key,{element:F,target:ne}),S.size>32){let re=[...S.keys()].find(ee=>ee!==m.pinned?.key);re&&S.delete(re)}return ne},G=F=>{let R=F?.element??null,$=F?.selection==="selected",P=m.selected??m.hover;R===g&&!!m.selected===$&&P?.subject?.key===F?.subject?.key||(g=R,clearTimeout(D),D=setTimeout(()=>{if(H)return;let A=R?.isConnected&&!Ra(R,"input, textarea, select, [contenteditable], [data-popmelt-private], [data-popmelt-canvas-block], [data-devtools]")?k(R,F?.subject):null;m.selected=$?A:null,m.hover=$?null:A,$&&(m.recent=null),m.hover&&(m.history=[...m.history,m.hover].slice(-8)),m.windowFocused&&(m.recent=null),Z()},R&&!$?120:0))};s.current=G,d.current=()=>{H||document.visibilityState!=="visible"||(m.lastInteractionAt=Date.now(),m.windowFocused=document.hasFocus(),!w&&(w=setTimeout(()=>{w=void 0,z=Date.now(),Z()},Math.max(0,250-(Date.now()-z)))))},G(l.current);let N=()=>{m.windowFocused=document.hasFocus(),m.blurredAt=m.windowFocused?0:Date.now(),m.recent=m.windowFocused?null:m.hover,Z()},Y=()=>{m.active=document.visibilityState==="visible",m.active?G(l.current):(clearTimeout(D),m.hover=null,m.history=[],m.recent=null,m.selected=null,S.clear(),g=null,m.lastInteractionAt=0),Z()};document.addEventListener("visibilitychange",Y),window.addEventListener("focus",N),window.addEventListener("blur",N);let q=setInterval(Z,1e4),ie=!1,I,Q=new Set,L=setInterval(async()=>{if(!(H||ie||document.visibilityState!=="visible")){ie=!0;try{let F=await Yt(`${t}/focus/requests?clientId=${m.clientId}`,{signal:AbortSignal.timeout(3e3)});if(!F.ok)return;let R=await F.json();for(let $ of R){if(Q.has($.id)||H||$.expiresAt<Date.now())continue;Q.add($.id),Q.size>64&&Q.delete(Q.values().next().value);let P=S.get($.targetKey),A={status:"target_unavailable"};if($.tasteProposal){let{tasteProposalSession:ne}=await import("./taste-proposal-session-XU4N7RUV.mjs");if(H||$.expiresAt<Date.now())continue;let re=document.activeElement;for(;re?.shadowRoot?.activeElement;)re=re.shadowRoot.activeElement;A=re?.matches("input, textarea, select, [contenteditable]")&&Ra(re,"[data-taste-editor]")&&$.tasteProposal.action!=="inspect"?{status:"busy",reason:"The human is editing a proposal field. Retry after editing ends."}:ne.command($.tasteProposal)}else if($.workspace){let{collectWorkspaceSnapshot:ne,workspaceAttentionTarget:re}=await import("./workspace-snapshot-LKQWBDNS.mjs");if(H||$.expiresAt<Date.now())continue;A=ne(r.current.state,$.workspace);let ee=$.workspace.entryId?[$.workspace.entryId]:"entries"in A?A.entries.map(U=>U.id):[],oe=[...new Set(ee.map(U=>re(r.current.state,U,r.current.registry)).filter(U=>!!U))];i(oe);for(let U of oe)U instanceof HTMLElement&&U.hasAttribute("data-popmelt-thread-header")&&Ag(U,U);if(oe.length&&(clearTimeout(I),I=setTimeout(()=>a(null),Math.max(0,$.expiresAt-Date.now())),await new Promise(U=>requestAnimationFrame(()=>setTimeout(U,0))),H))break;A.attention=$.workspace.entryId?oe.length?"shown":re(r.current.state,$.workspace.entryId,r.current.registry,!0)?"target_offscreen":"target_missing_hidden_or_ambiguous":{shown:oe.length,requested:ee.length}}else if(P?.element.isConnected&&m.page===location.origin+location.pathname&&!Ra(P.element,"[data-popmelt-private], input, textarea, select, [contenteditable]"))try{let ne=$.attentionOnly?null:(await import("./focus-inspection-GJKMI6OE.mjs")).inspectFocusElement;if(H||$.expiresAt<Date.now()||!P.element.isConnected||m.page!==location.origin+location.pathname)continue;if(a(P.element),clearTimeout(I),I=setTimeout(()=>a(null),Math.max(0,$.expiresAt-Date.now())),await new Promise(re=>requestAnimationFrame(()=>setTimeout(re,0))),H)break;A=ne?await ne(P.element,P.target,$.screenshot,r.current):{status:"ok",attention:"shown"}}catch{A={status:"capture_failed"}}if(H||document.visibilityState!=="visible")break;(await Yt(`${t}/focus/response`,{method:"POST",headers:{"Content-Type":"application/json"},body:ny($.id,m.clientId,A),signal:AbortSignal.timeout(3e3)})).ok||await Yt(`${t}/focus/response`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:$.id,clientId:m.clientId,result:{status:"response_rejected"}}),signal:AbortSignal.timeout(3e3)}),clearTimeout(I),a(null)}}catch{}finally{clearTimeout(I),H||a(null),ie=!1}}},1e3);return Y(),()=>{H=!0,clearTimeout(D),clearTimeout(w),clearInterval(q),clearInterval(L),clearTimeout(I),a(null),document.removeEventListener("visibilitychange",Y),window.removeEventListener("focus",N),window.removeEventListener("blur",N),s.current=null,d.current=null,S.clear(),m.hover=null,m.selected=null,m.history=[],m.active=!1,Z()}},[e,t]),{onCanvasFocusChange:p,onCanvasActivity:c,inspectingElement:e?o[0]??null:null,inspectingElements:e?o:[]}}function oy(e,t,n,r){let[o,i]=j(null),[a,l]=j(null),s=W(0),d=W(Promise.resolve(!0)),c=J(()=>{s.current=Date.now()},[]),p=J(h=>{s.current=Date.now(),i(h)},[]),u=J(h=>l(m=>JSON.stringify(m)===JSON.stringify(h)?m:h),[]);return O(()=>{if(!e||!r)return;let h=o?.element;if(h&&Ra(h,"[data-private], [data-sensitive]"))return;let m=a?.targets??(h?[{selector:o?.subject?uu(o.subject):Ho(h),...o?.subject?{subject:o.subject}:{}}]:[]);if(!m.length)return;let g={pathname:window.location.pathname,ownerId:t,color:n,targets:m,activity:"looking",...a?{threadId:a.threadId}:{}},x=!1,S=null,D=!1,H=(N,Y,q)=>{let ie=d.current.then(()=>N!=="finish"&&(x||S!==Y)?!1:e(N,Y,q));return d.current=ie.catch(()=>!1),ie},w=()=>{let N=S;S=null,N&&H("finish",N).catch(()=>{})},z=async()=>{if(x||D)return;if(!(document.visibilityState!=="hidden"&&document.hasFocus()&&g.pathname===window.location.pathname&&(a||h?.isConnected&&(o?.selection==="selected"||Date.now()-s.current<5e3)))){w();return}D=!0;let N=S?"renew":"start",Y=S??crypto.randomUUID();S=Y;try{!await H(N,Y,g)&&S===Y&&(S=null),x&&w()}catch{S===Y&&(S=null)}finally{D=!1}},Z=setTimeout(z,120),k=setInterval(z,1e3),G=()=>w();return window.addEventListener("blur",G),window.addEventListener("focus",z),document.addEventListener("visibilitychange",z),()=>{x=!0,clearTimeout(Z),clearInterval(k),w(),window.removeEventListener("blur",G),window.removeEventListener("focus",z),document.removeEventListener("visibilitychange",z)}},[e,r,t,n,o,a]),{onFocus:p,onActivity:c,onThread:u}}var Sl="data-popmelt-preview-target",Nu="script,iframe,object,embed,link,meta,base,style,template";function iy({root:e,targets:t,revision:n,width:r,height:o,cleanClone:i}){let a=e.cloneNode(!0),l=[e,...e.querySelectorAll("*")],s=[a,...a.querySelectorAll("*")],d=new Set,c=new Map;for(let[u,h]of t){if(!u||!l.includes(h))throw new Error("Target is outside the preview root");if(c.has(h))throw new Error("Target has multiple identities");c.set(h,u)}l.forEach((u,h)=>{let m=s[h];(u.shadowRoot||u.matches("canvas,video"))&&d.add("Shadow DOM, canvas and video state are not mirrored");for(let x of[...m.attributes])(/^on/i.test(x.name)||["src","srcset","href","xlink:href","action","formaction","autofocus","contenteditable",Sl].includes(x.name))&&m.removeAttribute(x.name);u instanceof HTMLInputElement&&(u.type==="password"||u.type==="file"?m.removeAttribute("value"):m.setAttribute("value",u.value),m.toggleAttribute("checked",u.checked)),u instanceof HTMLTextAreaElement&&(m.textContent=u.value),u instanceof HTMLOptionElement&&m.toggleAttribute("selected",u.selected);let g=c.get(u);g&&m.setAttribute(Sl,g),i?.(u,m)});for(let u of a.querySelectorAll(Nu))u.remove();for(let u of a.querySelectorAll("[data-devtools], [data-popmelt-peer-surface], [data-popmelt-root], popmelt-root"))u.remove();if(a.matches(Nu))throw new Error("Unsupported preview root");let p="";for(let u of e.ownerDocument.styleSheets)if(!(u.ownerNode instanceof Element&&u.ownerNode.closest("[data-devtools], [data-popmelt-top-layer-host]")))try{p+=[...u.cssRules].map(h=>h.cssText).join(`
2
+ import{b as Qf,f as Wi,h as Zf,g as ys,a as uc,d as pc,c as fc}from"./chunk-JU7D4I76.mjs";import{a as eh}from"./chunk-IPR652AZ.mjs";import{M as il,vb as vs,Ua as hc,f as th,e as mc,tb as bs,a as nh,xb as gc,yb as yc,wb as xs,c as rh,jb as oh,kb as ih,Ja as Bi,ja as ah,Db as lh,Eb as vc,ia as sh,Kb as dh,Gb as ch,Hb as uh,Ib as ph,_a as fh,ka as hh,Da as mh,za as bc,ab as gh,ba as yh,ca as ws,da as vh,ea as bh,$a as xh,Fa as wh,ha as Sh,ob as Ss,nb as Ih,mb as Is,Fb as kh,la as Th,Oa as xc,Ba as wc,Ma as Sc,Na as Eh,La as Ic,Ka as Ah,Ga as ks,N as Ch,Cb as Mh,p as kc,ya as Rh,b as Lh,ub as Tc,Ra as Ph,Qa as jh,Ta as zh,Pa as $h,Sa as Dh,Ca as Hh,D as Nh,E as Oh,l as Fh,ra as nn,ua as _h,xa as Wh,Ha as Bh,sa as Ec,na as Ji,T as Jh,ma as qh,R as Ac,Y as Uh,fb as gi,Mb as Yh,Jb as Xh,eb as Cc,gb as Mc,Ab as Kh,Bb as Vh,lb as Gh,hb as Qh,ib as Zh,Aa as em,Ea as Ts,Q as tm,C as Rc,F as Lc,L as Pc,K as jc,o as yi,G as zc,J as qi,P as nm,va as Es,qa as rm,pa as As,oa as Cs,O as om,ga as im,fa as am,Ia as lm,ta as $c,wa as Dc,q as sm,W as Hc,U as Nc,V as Oc,X as dm,Z as Fc,$ as _c,aa as cm,S as um,zb as Wc,m as Ui,A as Ms,r as vi,I as al,u as Bc,g as pm,_ as fm,t as ll,h as Jc,y as hm,j as $r,v as Rs,s as Ta,i as Ls,k as mm,z as gm,x as ym,H as Ps,w as qc,n as Uc,B as vm}from"./chunk-ZGERZLB4.mjs";import{b as Yc,d as bm,a as xm,e as wm,c as Sm}from"./chunk-J4WDYITA.mjs";import{h as Im,Ca as Xc,R as Yi,ma as km,N as Tm,H as Kc,A as ro,la as sl,ka as Em,P as Am,D as Vc,O as Cm,da as Tn,Y as js,aa as lr,fa as zs,$ as Ea,ha as Mm,S as dl,ua as Gc,_ as oo,za as Rm,Aa as Lm,Ba as Qc,ta as Zc,J as $s,v as eu,u as Aa,r as cl,w as Xi,Z as tu,Q as nu,I as Pm,K as jm,M as zm,f as $m,ba as Dm,ca as Hm,wa as Nm,va as ru,ya as Om,xa as Fm,sa as ou,z as iu,t as Ds,g as _m,ea as Hs,C as Wm,E as au,G as Bm,F as Jm,ga as lu,ia as su,B as qm,s as ul,L as Um,y as Ns,q as du,x as Ym}from"./chunk-GNZ73T3H.mjs";import{b as cu}from"./chunk-4LHTPRFY.mjs";import{c as Xm,a as uu,b as Ca}from"./chunk-MTQ5IWIK.mjs";import{i as pu,k as Km,m as Vm,h as fu,g as Gm,a as pl,e as Qm,b as Dr,d as Zm,f as it,c as eg}from"./chunk-F6AMPRUB.mjs";import{c as hn,a as Ho,i as mn,j as bi,d as tg,e as ng,b as hu,l as rg,m as og,k as ig}from"./chunk-EXDOFFFJ.mjs";import{a as ag}from"./chunk-2P2NUZW7.mjs";import{d as Os,i as lg}from"./chunk-D32YV5O6.mjs";import{a as Fs,h as mu,d as sg,c as dg,g as _s,e as Ws,b as cg}from"./chunk-V44RIEET.mjs";import{b as Yt,f as gu,d as yu,e as Bs,i as ug,j as Ma,l as vu,m as bu,r as pg,p as fg,u as hg,t as mg,s as gg,k as yg,a as vg,c as bg}from"./chunk-CPOYMGYY.mjs";import{a as xu,b as xg}from"./chunk-EX63NVDN.mjs";import{d as wg,g as Sg,m as Ig,l as kg}from"./chunk-N2ZEZCHO.mjs";import{a as Tg}from"./chunk-J3UIBBU2.mjs";import{b as Eg}from"./chunk-6VXFTT5U.mjs";import{a as Ag}from"./chunk-LVEMYZOA.mjs";import{d as xn,o as Ra,n as Ki,a as wu,i as Su,v as Iu,u as ku,h as fl,k as Cg,f as Mg,c as Js,m as Tu,l as qs}from"./chunk-RCVAPQ7X.mjs";import{lazy as hl,memo as Rg,useContext as Hr,useState as j,Suspense as ml,Fragment as Lg,useRef as W,useEffect as O,useLayoutEffect as It,useCallback as J,useMemo as Se,cloneElement as Pg,useSyncExternalStore as jg,useId as zg}from"react";import{jsx as f,jsxs as M,Fragment as ct}from"react/jsx-runtime";import{Fingerprint as io,Component as gl,Reply as Eu,Ban as yl,Terminal as $g,PenLine as Dg,ImageIcon as Hg,Plug as Ng,SquareMousePointer as Og,ChevronRight as Us,ThumbsUp as Fg,Clock as Ys,ChevronDown as Vi,Check as xi,ChevronLeft as _g,X as Xs,Send as Au,Lock as Wg,ArrowDown as Bg,OctagonAlert as Cu,MessageCircleQuestionMark as Jg,TriangleAlert as qg,Command as Mu,CornerDownLeft as Ks,EyeOff as Ug}from"lucide-react";import{createPortal as Ru}from"react-dom";function Lu(e,t){return e.store===void 0&&(e.store=t),e.store}function Yg(e,t){let n=e.listeners??(e.listeners=new Set);return n.add(t),()=>n.delete(t)}function Xg(e,t,n){let r=n(Lu(e,t));e.store=r;for(let o of e.listeners??[])o();return r}var nt=globalThis.__POPMELT_BRIDGE_CONNECTION__??(globalThis.__POPMELT_BRIDGE_CONNECTION__={}),vl=nt.sourceId??(typeof localStorage<"u"?localStorage.getItem("popmelt-source-id"):null)??(typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():Math.random().toString(36).slice(2));nt.sourceId=vl;try{typeof localStorage<"u"&&localStorage.setItem("popmelt-source-id",vl)}catch{}function Vs(){return vl}var bl={isConnected:!1,status:"disconnected",jobResponses:{},jobThinking:{},activeJobIds:[],activeJobThreads:{},currentResponse:"",currentThinking:"",events:[],activeJobId:null,lastCompletedJobId:null,lastResponseText:null,lastThreadId:null,lastErrorByJob:{},pendingQuestions:[],incrementalResolutions:[],capabilitiesVersion:0};nt.store??(nt.store={...bl}),nt.listeners??(nt.listeners=new Set);var Nr=nt.activeEs??null,xl=nt.activeBridgeUrl??null,ao=null,Xn=nt.connectionGeneration??0,La=new Set,wi=new Map,No={},wl=new Set,Oo=new Map;function zn(e,t){if(!e)return!1;if(wl.has(e))return!0;if(La.has(e)){let r=wi.get(e);return r||(r=[],wi.set(e,r)),r.push({type:t.type??"",data:t}),!0}let n=No[e];return n!==void 0&&typeof t.seq=="number"&&t.seq<=n}async function Pu(e,t,n,r=new Map){let o=()=>n!==(nt.connectionGeneration??0);for(let l of t){if(o())return;Oo.set(l,r.get(l)??Oo.get(l)),La.add(l),wi.set(l,[])}let{mergeBackfillHistory:i,selectBackfillTerminalEvent:a}=await import("./bridge-recovery-3IQN3U6D.mjs");o()||await Promise.all(t.map(async l=>{try{let s=await vu(e,l,-1,{retryUnavailable:!0});if(o()||wl.has(l))return;let d=wi.get(l)??[];if(s){pt(u=>{let h={...u.jobResponses,[l]:s.accumulated.response},m={...u.jobThinking,[l]:s.accumulated.thinking},g=i(u.events,l,s.events);return{...u,jobResponses:h,jobThinking:m,currentResponse:l===u.activeJobId?s.accumulated.response:u.currentResponse,currentThinking:l===u.activeJobId?s.accumulated.thinking:u.currentThinking,events:g}}),No[l]=s.currentSeq;let c=[...s.events].reverse().find(u=>u.type==="job_started"||u.type==="job_parked");c?.type==="job_parked"&&Gi("job_parked",c,l);let p=a(s.events,s.jobActive,r.get(l));p&&Gi(p.type,p,l);for(let u of d)typeof u.data.seq=="number"&&u.data.seq<=s.currentSeq||Gi(u.type,u.data,l)}else{let c=!1;for(let u of d)Gi(u.type,u.data,l),(u.type==="done"||u.type==="error")&&(c=!0);let p=r.get(l);!c&&p&&Gi(p.type,p,l)}Oo.delete(l)}finally{o()||(La.delete(l),wi.delete(l))}}))}function Gi(e,t,n){if(e==="job_parked")pt(r=>{let o=r.activeJobIds.filter(i=>i!==n);return{...r,activeJobIds:o,activeJobId:o.at(-1)??null,events:[...r.events,{type:e,data:t,timestamp:Date.now()}]}});else if(e==="job_started")pt(r=>({...r,status:"streaming",activeJobId:n,activeJobIds:[...new Set([...r.activeJobIds,n])],activeJobThreads:typeof t.threadId=="string"?{...r.activeJobThreads,[n]:t.threadId}:r.activeJobThreads,events:[...r.events,{type:e,data:t,timestamp:Date.now()}]}));else if(e==="delta"){let r=t.text||"";pt(o=>({...o,jobResponses:{...o.jobResponses,[n]:(o.jobResponses[n]||"")+r},currentResponse:n===o.activeJobId?o.currentResponse+r:o.currentResponse,events:[...o.events,{type:"delta",data:t,timestamp:Date.now()}]}))}else if(e==="thinking"){let r=t.text||"";pt(o=>({...o,jobThinking:{...o.jobThinking,[n]:(o.jobThinking[n]||"")+r},currentThinking:n===o.activeJobId?o.currentThinking+r:o.currentThinking,events:[...o.events,{type:"thinking",data:t,timestamp:Date.now()}]}))}else if(e==="status")pt(r=>({...r,events:[...r.events,{type:"status",data:t,timestamp:Date.now()}]}));else if(e==="done")delete No[n],pt(r=>{let o=r.activeJobIds.filter(d=>d!==n),i={...r.jobResponses},a={...r.jobThinking},l=i[n];delete i[n],delete a[n];let s=n===r.activeJobId?o.length>0?o[o.length-1]:null:r.activeJobId;return{...r,activeJobIds:o,activeJobId:s,jobResponses:i,jobThinking:a,lastCompletedJobId:n,lastResponseText:t.responseText||l||r.currentResponse||null,lastThreadId:t.threadId??null,...n===r.activeJobId?{currentResponse:s&&i[s]||"",currentThinking:s&&a[s]||""}:{},events:[...r.events,{type:"done",data:t,timestamp:Date.now()}]}});else if(e==="error"){delete No[n];let r=t.message??"";pt(o=>{let i=o.activeJobIds.filter(l=>l!==n),a=i.length>0?o.status:"error";return{...o,status:a,activeJobIds:i,lastCompletedJobId:n,lastErrorByJob:r?{...o.lastErrorByJob,[n]:r}:o.lastErrorByJob,events:[...o.events,{type:"error",data:t,timestamp:Date.now()}]}})}else pt(e==="question"?r=>{let o=typeof t.threadId=="string"?t.threadId:"",i=typeof t.question=="string"?t.question:"",a=Array.isArray(t.annotationIds)?t.annotationIds.filter(s=>typeof s=="string"):void 0,l=r.pendingQuestions.some(s=>s.jobId===n);return{...r,pendingQuestions:i&&o&&!l?[...r.pendingQuestions,{jobId:n,threadId:o,question:i,annotationIds:a,timestamp:Date.now()}]:r.pendingQuestions,events:[...r.events,{type:e,data:t,timestamp:Date.now()}]}}:r=>({...r,events:[...r.events,{type:e,data:t,timestamp:Date.now()}]}))}var Kn=nt.discoveredBridgeUrl??null,$n=nt.discoveredBridgeProjectId??null,Fo=null,Qi=null;function ju(e,t=!1){let n=e??null;if(!(!t&&(nt.expectedProjectId??null)===n)){Nr&&(Nr.close(),Nr=null,nt.activeEs=null),ao&&(clearTimeout(ao),ao=null),xl=null,nt.activeBridgeUrl=null,Kn=null,$n=null,nt.discoveredBridgeUrl=null,nt.discoveredBridgeProjectId=null,Fo=null,Qi=null,La.clear(),wi.clear(),wl.clear(),Oo.clear();for(let r of Object.keys(No))delete No[r];nt.expectedProjectId=n,Xn=(nt.connectionGeneration??Xn)+1,nt.connectionGeneration=Xn,pt(()=>({...bl}))}}function Kg(){nt.listeners?.size||ju(null,!0)}async function zu(e,t){if(Kn&&(t?$n===t:!$n))return Kn;if(!t&&$n&&(Kn=null,$n=null,nt.discoveredBridgeUrl=Kn,nt.discoveredBridgeProjectId=$n),t&&$n&&$n!==t&&(Kn=null,$n=null,nt.discoveredBridgeUrl=Kn,nt.discoveredBridgeProjectId=$n),Fo&&Qi===(t??null))return Fo;let n=Xn;return Qi=t??null,Fo=yg(e,t).then(r=>n!==Xn?null:(Kn=r?.url??null,$n=r?.projectId??t??null,nt.discoveredBridgeUrl=Kn,nt.discoveredBridgeProjectId=$n,Fo=null,Qi=null,Kn)).catch(()=>(n!==Xn||(Fo=null,Qi=null),null)),Fo}function Vg(){return Kn}async function Gg(e,t){Kn=null,$n=null,nt.discoveredBridgeUrl=null,nt.discoveredBridgeProjectId=null,Fo=null,Qi=null;let n=Xn,r=await zu(e,t);return r&&n===Xn&&Gs(r),r}function Pa(){return Lu(nt,{...bl})}function Qg(e){return Yg(nt,e)}function pt(e){Xg(nt,{...bl},t=>{let n=e(t),r=new Set(n.activeJobIds),o=n.activeJobId&&r.has(n.activeJobId)?n.activeJobId:n.activeJobIds.at(-1)??null;return{...n,activeJobId:o,activeJobThreads:Object.keys(n.activeJobThreads).some(i=>!r.has(i))?Object.fromEntries(Object.entries(n.activeJobThreads).filter(([i])=>r.has(i))):n.activeJobThreads,status:n.status==="streaming"&&r.size===0?"idle":n.status}})}function Zg(){return typeof window<"u"?window.__POPMELT_PROJECT_ID__??null:null}function Gs(e){if(Nr&&Nr.readyState!==EventSource.CLOSED&&xl===e)return;Nr&&(Nr.close(),Nr=null,nt.activeEs=null),ao&&(clearTimeout(ao),ao=null),xl=e,nt.activeBridgeUrl=xl,Xn=(nt.connectionGeneration??Xn)+1;let t=Xn;nt.connectionGeneration=Xn;let n=new URLSearchParams({sourceId:vl}),r=Zg();r&&n.set("projectId",r);let o=vg(`${e}/events?${n.toString()}`);Nr=o,nt.activeEs=Nr;let i=!1,a=()=>t!==(nt.connectionGeneration??0),l=()=>i||a();La.clear(),wi.clear();let s=5e3,d=()=>{a()||ao||(ao=setTimeout(()=>{ao=null,!a()&&Ma(e).then(p=>{a()||(p&&(!r||p.projectId===r)?Gs(e):(s=Math.min(s*2,3e4),d()))})},s))},c=()=>{l()||(i=!0,o.close(),pt(p=>({...p,isConnected:!1,status:"disconnected"})),d())};o.addEventListener("connected",()=>{l()||Ma(e).then(async p=>{if(l())return;if(!p||r&&p.projectId!==r){c();return}let u=[...p?.activeJobs??(p?.activeJob?[p.activeJob]:[]),...p?.queuedJobs?.filter(z=>z.parked)??[]],h=p?.recentJobs??[],{planBridgeReconnectRecovery:m}=await import("./bridge-recovery-3IQN3U6D.mjs");if(l())return;let g=m(Pa().activeJobIds,u,h),{serverActiveIds:x,terminalJobs:S}=g,D=S.map(z=>z.id),H=new Map(Oo);for(let z of S)H.set(z.id,z.status==="error"?{type:"error",jobId:z.id,message:z.error??"The agent run failed.",threadId:z.threadId,annotationIds:z.annotationIds}:{type:"done",jobId:z.id,success:!0,threadId:z.threadId,annotationIds:z.annotationIds});pt(z=>{let Z={...z.lastErrorByJob};for(let N of S)N?.status==="error"&&N.error&&(Z[N.id]=N.error);let k=m(z.activeJobIds,u,h).reconciledActiveIds,G={};for(let N of u)N.threadId&&(G[N.id]=N.threadId);return{...z,isConnected:!0,status:k.length>0?"streaming":D.length>0||z.status==="disconnected"?"idle":z.status,activeJobId:k.length>0?k[k.length-1]:null,activeJobIds:k,activeJobThreads:G,lastErrorByJob:Z,workspaceGeneration:p?.workspaceGeneration}});let w=[...new Set([...x,...D,...Oo.keys()])];w.length>0&&Pu(e,w,t,H).catch(c)}).catch(c)}),o.addEventListener("job_parked",p=>{if(l())return;let u=JSON.parse(p.data);zn(u.jobId,u)||Gi("job_parked",u,u.jobId)}),o.addEventListener("thread_changed",p=>{if(l())return;let u=JSON.parse(p.data);pt(h=>({...h,events:[...h.events,{type:"thread_changed",data:u,timestamp:Date.now()}]}))}),o.addEventListener("job_started",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;if(zn(h,u))return;let m=u.threadId;pt(g=>({...g,status:"streaming",activeJobId:h,activeJobIds:g.activeJobIds.includes(h)?g.activeJobIds:[...g.activeJobIds,h],activeJobThreads:m?{...g.activeJobThreads,[h]:m}:g.activeJobThreads,jobResponses:{...g.jobResponses,[h]:g.jobResponses[h]??""},jobThinking:{...g.jobThinking,[h]:g.jobThinking[h]??""},currentResponse:g.jobResponses[h]??"",currentThinking:g.jobThinking[h]??"",lastResponseText:null,lastThreadId:null,events:[...g.events,{type:"job_started",data:u,timestamp:Date.now()}]}))}),o.addEventListener("delta",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;if(zn(h,u))return;let m=u.text||"";pt(g=>({...g,jobResponses:h?{...g.jobResponses,[h]:(g.jobResponses[h]||"")+m}:g.jobResponses,currentResponse:!h||h===g.activeJobId?g.currentResponse+m:g.currentResponse,events:[...g.events,{type:"delta",data:u,timestamp:Date.now()}]}))}),o.addEventListener("thinking",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;if(zn(h,u))return;let m=u.text||"";pt(g=>({...g,jobThinking:h?{...g.jobThinking,[h]:(g.jobThinking[h]||"")+m}:g.jobThinking,currentThinking:!h||h===g.activeJobId?g.currentThinking+m:g.currentThinking,events:[...g.events,{type:"thinking",data:u,timestamp:Date.now()}]}))}),o.addEventListener("status",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;zn(h,u)||pt(m=>({...m,events:[...m.events,{type:"status",data:u,timestamp:Date.now()}]}))}),o.addEventListener("orientation",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;zn(h,u)||pt(m=>({...m,events:[...m.events,{type:"orientation",data:u,timestamp:Date.now()}]}))}),o.addEventListener("approval",p=>{if(l())return;let u=JSON.parse(p.data);zn(u.jobId,u)||pt(h=>({...h,events:[...h.events,{type:"approval",data:u,timestamp:Date.now()}]}))}),o.addEventListener("imprint_used",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;zn(h,u)||pt(m=>({...m,events:[...m.events,{type:"imprint_used",data:u,timestamp:Date.now()}]}))}),o.addEventListener("tool_use",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;zn(h,u)||pt(m=>({...m,events:[...m.events,{type:"tool_use",data:u,timestamp:Date.now()}]}))});for(let p of["image_generation","image_ready"])o.addEventListener(p,u=>{if(l())return;let h=JSON.parse(u.data),m=h.jobId;zn(m,h)||pt(g=>({...g,events:[...g.events,{type:p,data:h,timestamp:Date.now()}]}))});o.addEventListener("done",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;zn(h,u)||(h&&delete No[h],pt(m=>{let g=h?m.activeJobIds.filter(z=>z!==h):m.activeJobIds,x={...m.jobResponses},S={...m.jobThinking},D={...m.activeJobThreads},H=h?x[h]:void 0;h&&(delete x[h],delete S[h],delete D[h]);let w=h===m.activeJobId?g.length>0?g[g.length-1]:null:m.activeJobId;return{...m,activeJobIds:g,activeJobId:w,jobResponses:x,jobThinking:S,lastCompletedJobId:h??m.activeJobId,lastResponseText:u.responseText||H||m.currentResponse||null,lastThreadId:u.threadId??null,...h===m.activeJobId?{currentResponse:w&&x[w]||"",currentThinking:w&&S[w]||""}:{},events:[...m.events,{type:"done",data:u,timestamp:Date.now()}]}}))}),o.addEventListener("question",p=>{if(l())return;let u=JSON.parse(p.data),h=u.jobId;zn(h,u)||pt(m=>({...m,pendingQuestions:[...m.pendingQuestions,{jobId:u.jobId,threadId:u.threadId,question:u.question,annotationIds:u.annotationIds,timestamp:Date.now()}],events:[...m.events,{type:"question",data:u,timestamp:Date.now()}]}))}),o.addEventListener("capabilities_changed",()=>{l()||pt(p=>({...p,capabilitiesVersion:p.capabilitiesVersion+1}))}),o.addEventListener("workspace_cleared",p=>{if(l())return;let u=JSON.parse(p.data);typeof u.workspaceGeneration!="number"||!Number.isInteger(u.workspaceGeneration)||u.workspaceGeneration<0||pt(h=>{for(let m of[...h.activeJobIds,...Oo.keys()])wl.add(m);return Oo.clear(),{...h,workspaceGeneration:u.workspaceGeneration,status:"idle",activeJobId:null,activeJobIds:[],activeJobThreads:{},jobResponses:{},jobThinking:{},currentResponse:"",currentThinking:"",events:[],lastCompletedJobId:null,lastResponseText:null,lastThreadId:null,lastErrorByJob:{},pendingQuestions:[],incrementalResolutions:[]}})}),o.addEventListener("queue_drained",()=>{if(l())return;let p=[...Pa().activeJobIds];if(p.length===0){pt(u=>({...u,status:u.status==="error"?"error":"idle",incrementalResolutions:[]}));return}Pu(e,p,t).then(()=>{l()||pt(u=>({...u,status:u.activeJobIds.length>0?u.status:u.status==="error"?"error":"idle",incrementalResolutions:u.activeJobIds.length>0?u.incrementalResolutions:[]}))}).catch(c)}),o.addEventListener("error",p=>{if(!l()){if(o.readyState===EventSource.CLOSED)c();else if(p instanceof MessageEvent){let u=JSON.parse(p.data),h=u.jobId??null;if(zn(h??void 0,u))return;h&&delete No[h];let m=u.message??"";pt(g=>{let x=h?g.activeJobIds.filter(D=>D!==h):g.activeJobIds,S=x.length>0?g.status:"error";return{...g,status:S,activeJobIds:x,lastCompletedJobId:h??g.activeJobId,lastErrorByJob:h&&m?{...g.lastErrorByJob,[h]:m}:g.lastErrorByJob,events:[...g.events,{type:"error",data:u,timestamp:Date.now()}]}})}}}),o.onerror=()=>{l()||o.readyState===EventSource.CLOSED&&pt(p=>({...p,isConnected:!1,status:"disconnected"}))}}function ey(e="http://localhost:1111",t=!0,n){let r=jg(Qg,Pa,Pa);O(()=>{if(ju(n),!t)return;let a=!1;return zu(e,n).then(l=>{!l||a||Ma(l).then(s=>{!a&&s&&(!n||s.projectId===n)&&Gs(l)})}),()=>{a=!0}},[e,t,n]);let o=J(()=>{pt(()=>({...Pa(),events:[],currentResponse:"",currentThinking:"",jobResponses:{},jobThinking:{},lastResponseText:null,lastThreadId:null,lastErrorByJob:{},incrementalResolutions:[]}))},[]),i=J(a=>{pt(l=>({...l,pendingQuestions:l.pendingQuestions.filter(s=>s.threadId!==a)}))},[]);return{...r,clearEvents:o,dismissQuestion:i}}function $u(e,t,n,r,o){let i=`devtools-model-id:${r}`,[a,l]=j(()=>typeof window>"u"?"":localStorage.getItem(i)??""),s=o?.(a)??!1,d=s?-1:e.findIndex(u=>u.id===a),c=d>=0?d:0,p=J(u=>{l(u),localStorage.setItem(i,u)},[i]);return O(()=>{n&&a&&(s||t&&d<0&&e.some(u=>u.id))&&p("")},[n,t,a,d,e,p,s]),{index:c,select:p}}function ty(e,t,n){let r=e.flatMap(({requestedAt:a,resolvedAt:l})=>Number.isFinite(a)&&Number.isFinite(l)?[[Math.max(t,a),Math.min(n,l)]]:[]).sort((a,l)=>a[0]-l[0]),o=t,i=0;for(let[a,l]of r)i+=Math.max(0,l-Math.max(o,a)),o=Math.max(o,l);return i}function Du(e){let t=new Map,n=new Set;for(let r of e)if(r.type==="approval"){let o=r.data.approval;t.set(o.id,o)}else(r.type==="done"||r.type==="error")&&n.add(String(r.data.jobId));return new Set([...t.values()].filter(r=>r.status==="pending"&&!n.has(r.jobId)).map(r=>r.jobId))}function Hu(e){let t=new MutationObserver(n=>{let r=n.filter(o=>document.body.contains(o.target)||o.target===document.documentElement&&[...o.addedNodes,...o.removedNodes].some(i=>i instanceof Element&&i.tagName==="BODY"));r.length&&e(r)});return t.observe(document.documentElement,{childList:!0,subtree:!0}),t}function ny(e,t,n,r=8*1024*1024){let o=d=>JSON.stringify({id:e,clientId:t,result:d}),i=d=>new TextEncoder().encode(d).length<=r,a=o(n);if(i(a))return a;let l=Array.isArray(n.images)?n.images:[],s=[l.filter(d=>d.kind==="annotated-viewport"),l.filter(d=>d.kind!=="annotated-viewport"),[]];for(let d of s){let c=o({...n,images:d,visualEvidence:{status:"partial",reason:"response_size_limit",omitted:l.filter(p=>!d.includes(p)).map(p=>p.kind)}});if(i(c))return c}return o({status:"context_too_large",targetKey:n.targetKey,images:[],warning:"Context exceeds the response limit even without images."})}function ry(e,t,n){let r=W(n);r.current=n;let[o,i]=j([]),a=h=>i(h?[h]:[]),l=W(null),s=W(null),d=W(null),c=J(()=>d.current?.(),[]),p=J(h=>{l.current=h,s.current?.(h)},[]),u=W(null);return O(()=>{if(!e)return;u.current?.url!==t&&(u.current={url:t,clientId:crypto.randomUUID(),sequence:0,sending:!1});let h=u.current,m={clientId:h.clientId,sequence:0,page:location.origin+location.pathname,title:document.title,active:!0,windowFocused:document.hasFocus(),lastInteractionAt:0,blurredAt:0,hover:null,pinned:null,history:[]},g=null,x=new WeakMap,S=new Map,D,H=!1,w,z=0,Z=()=>{let F=location.origin+location.pathname;m.page!==F&&(m.page=F,m.title=document.title,m.hover=null,m.pinned=null,m.history=[],m.recent=null,m.selected=null,S.clear(),g=null,m.lastInteractionAt=0),m.sequence=++h.sequence,h.pendingBody=JSON.stringify(m),!h.sending&&(h.sending=!0,(async()=>{for(;h.pendingBody;){let R=h.pendingBody;h.pendingBody=void 0;try{await Yt(`${t}/focus`,{method:"POST",headers:{"Content-Type":"application/json"},body:R,signal:AbortSignal.timeout(3e3)})}catch{}}h.sending=!1})())},k=(F,R)=>{x.has(F)||x.set(F,crypto.randomUUID());let $=mn(F),P=xn(F),A=getComputedStyle(F),ne={...R?{subject:R}:{},key:x.get(F),capturedAt:Date.now(),selector:$.selector,tagName:$.tagName,text:$.textContent?.slice(0,200),component:$.reactComponent,source:$.reactSource,rect:{x:P.x,y:P.y,width:P.width,height:P.height},styles:Object.fromEntries(["color","background-color","font-size","font-family","display","padding","border-radius"].map(re=>[re,A.getPropertyValue(re)]))};if(S.set(ne.key,{element:F,target:ne}),S.size>32){let re=[...S.keys()].find(ee=>ee!==m.pinned?.key);re&&S.delete(re)}return ne},G=F=>{let R=F?.element??null,$=F?.selection==="selected",P=m.selected??m.hover;R===g&&!!m.selected===$&&P?.subject?.key===F?.subject?.key||(g=R,clearTimeout(D),D=setTimeout(()=>{if(H)return;let A=R?.isConnected&&!Ra(R,"input, textarea, select, [contenteditable], [data-popmelt-private], [data-popmelt-canvas-block], [data-devtools]")?k(R,F?.subject):null;m.selected=$?A:null,m.hover=$?null:A,$&&(m.recent=null),m.hover&&(m.history=[...m.history,m.hover].slice(-8)),m.windowFocused&&(m.recent=null),Z()},R&&!$?120:0))};s.current=G,d.current=()=>{H||document.visibilityState!=="visible"||(m.lastInteractionAt=Date.now(),m.windowFocused=document.hasFocus(),!w&&(w=setTimeout(()=>{w=void 0,z=Date.now(),Z()},Math.max(0,250-(Date.now()-z)))))},G(l.current);let N=()=>{m.windowFocused=document.hasFocus(),m.blurredAt=m.windowFocused?0:Date.now(),m.recent=m.windowFocused?null:m.hover,Z()},Y=()=>{m.active=document.visibilityState==="visible",m.active?G(l.current):(clearTimeout(D),m.hover=null,m.history=[],m.recent=null,m.selected=null,S.clear(),g=null,m.lastInteractionAt=0),Z()};document.addEventListener("visibilitychange",Y),window.addEventListener("focus",N),window.addEventListener("blur",N);let q=setInterval(Z,1e4),ie=!1,I,Q=new Set,L=setInterval(async()=>{if(!(H||ie||document.visibilityState!=="visible")){ie=!0;try{let F=await Yt(`${t}/focus/requests?clientId=${m.clientId}`,{signal:AbortSignal.timeout(3e3)});if(!F.ok)return;let R=await F.json();for(let $ of R){if(Q.has($.id)||H||$.expiresAt<Date.now())continue;Q.add($.id),Q.size>64&&Q.delete(Q.values().next().value);let P=S.get($.targetKey),A={status:"target_unavailable"};if($.tasteProposal){let{tasteProposalSession:ne}=await import("./taste-proposal-session-XU4N7RUV.mjs");if(H||$.expiresAt<Date.now())continue;let re=document.activeElement;for(;re?.shadowRoot?.activeElement;)re=re.shadowRoot.activeElement;A=re?.matches("input, textarea, select, [contenteditable]")&&Ra(re,"[data-taste-editor]")&&$.tasteProposal.action!=="inspect"?{status:"busy",reason:"The human is editing a proposal field. Retry after editing ends."}:ne.command($.tasteProposal)}else if($.workspace){let{collectWorkspaceSnapshot:ne,workspaceAttentionTarget:re}=await import("./workspace-snapshot-O34KMJ2V.mjs");if(H||$.expiresAt<Date.now())continue;A=ne(r.current.state,$.workspace);let ee=$.workspace.entryId?[$.workspace.entryId]:"entries"in A?A.entries.map(U=>U.id):[],oe=[...new Set(ee.map(U=>re(r.current.state,U,r.current.registry)).filter(U=>!!U))];i(oe);for(let U of oe)U instanceof HTMLElement&&U.hasAttribute("data-popmelt-thread-header")&&Ag(U,U);if(oe.length&&(clearTimeout(I),I=setTimeout(()=>a(null),Math.max(0,$.expiresAt-Date.now())),await new Promise(U=>requestAnimationFrame(()=>setTimeout(U,0))),H))break;A.attention=$.workspace.entryId?oe.length?"shown":re(r.current.state,$.workspace.entryId,r.current.registry,!0)?"target_offscreen":"target_missing_hidden_or_ambiguous":{shown:oe.length,requested:ee.length}}else if(P?.element.isConnected&&m.page===location.origin+location.pathname&&!Ra(P.element,"[data-popmelt-private], input, textarea, select, [contenteditable]"))try{let ne=$.attentionOnly?null:(await import("./focus-inspection-WPHGCN6Y.mjs")).inspectFocusElement;if(H||$.expiresAt<Date.now()||!P.element.isConnected||m.page!==location.origin+location.pathname)continue;if(a(P.element),clearTimeout(I),I=setTimeout(()=>a(null),Math.max(0,$.expiresAt-Date.now())),await new Promise(re=>requestAnimationFrame(()=>setTimeout(re,0))),H)break;A=ne?await ne(P.element,P.target,$.screenshot,r.current):{status:"ok",attention:"shown"}}catch{A={status:"capture_failed"}}if(H||document.visibilityState!=="visible")break;(await Yt(`${t}/focus/response`,{method:"POST",headers:{"Content-Type":"application/json"},body:ny($.id,m.clientId,A),signal:AbortSignal.timeout(3e3)})).ok||await Yt(`${t}/focus/response`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:$.id,clientId:m.clientId,result:{status:"response_rejected"}}),signal:AbortSignal.timeout(3e3)}),clearTimeout(I),a(null)}}catch{}finally{clearTimeout(I),H||a(null),ie=!1}}},1e3);return Y(),()=>{H=!0,clearTimeout(D),clearTimeout(w),clearInterval(q),clearInterval(L),clearTimeout(I),a(null),document.removeEventListener("visibilitychange",Y),window.removeEventListener("focus",N),window.removeEventListener("blur",N),s.current=null,d.current=null,S.clear(),m.hover=null,m.selected=null,m.history=[],m.active=!1,Z()}},[e,t]),{onCanvasFocusChange:p,onCanvasActivity:c,inspectingElement:e?o[0]??null:null,inspectingElements:e?o:[]}}function oy(e,t,n,r){let[o,i]=j(null),[a,l]=j(null),s=W(0),d=W(Promise.resolve(!0)),c=J(()=>{s.current=Date.now()},[]),p=J(h=>{s.current=Date.now(),i(h)},[]),u=J(h=>l(m=>JSON.stringify(m)===JSON.stringify(h)?m:h),[]);return O(()=>{if(!e||!r)return;let h=o?.element;if(h&&Ra(h,"[data-private], [data-sensitive]"))return;let m=a?.targets??(h?[{selector:o?.subject?uu(o.subject):Ho(h),...o?.subject?{subject:o.subject}:{}}]:[]);if(!m.length)return;let g={pathname:window.location.pathname,ownerId:t,color:n,targets:m,activity:"looking",...a?{threadId:a.threadId}:{}},x=!1,S=null,D=!1,H=(N,Y,q)=>{let ie=d.current.then(()=>N!=="finish"&&(x||S!==Y)?!1:e(N,Y,q));return d.current=ie.catch(()=>!1),ie},w=()=>{let N=S;S=null,N&&H("finish",N).catch(()=>{})},z=async()=>{if(x||D)return;if(!(document.visibilityState!=="hidden"&&document.hasFocus()&&g.pathname===window.location.pathname&&(a||h?.isConnected&&(o?.selection==="selected"||Date.now()-s.current<5e3)))){w();return}D=!0;let N=S?"renew":"start",Y=S??crypto.randomUUID();S=Y;try{!await H(N,Y,g)&&S===Y&&(S=null),x&&w()}catch{S===Y&&(S=null)}finally{D=!1}},Z=setTimeout(z,120),k=setInterval(z,1e3),G=()=>w();return window.addEventListener("blur",G),window.addEventListener("focus",z),document.addEventListener("visibilitychange",z),()=>{x=!0,clearTimeout(Z),clearInterval(k),w(),window.removeEventListener("blur",G),window.removeEventListener("focus",z),document.removeEventListener("visibilitychange",z)}},[e,r,t,n,o,a]),{onFocus:p,onActivity:c,onThread:u}}var Sl="data-popmelt-preview-target",Nu="script,iframe,object,embed,link,meta,base,style,template";function iy({root:e,targets:t,revision:n,width:r,height:o,cleanClone:i}){let a=e.cloneNode(!0),l=[e,...e.querySelectorAll("*")],s=[a,...a.querySelectorAll("*")],d=new Set,c=new Map;for(let[u,h]of t){if(!u||!l.includes(h))throw new Error("Target is outside the preview root");if(c.has(h))throw new Error("Target has multiple identities");c.set(h,u)}l.forEach((u,h)=>{let m=s[h];(u.shadowRoot||u.matches("canvas,video"))&&d.add("Shadow DOM, canvas and video state are not mirrored");for(let x of[...m.attributes])(/^on/i.test(x.name)||["src","srcset","href","xlink:href","action","formaction","autofocus","contenteditable",Sl].includes(x.name))&&m.removeAttribute(x.name);u instanceof HTMLInputElement&&(u.type==="password"||u.type==="file"?m.removeAttribute("value"):m.setAttribute("value",u.value),m.toggleAttribute("checked",u.checked)),u instanceof HTMLTextAreaElement&&(m.textContent=u.value),u instanceof HTMLOptionElement&&m.toggleAttribute("selected",u.selected);let g=c.get(u);g&&m.setAttribute(Sl,g),i?.(u,m)});for(let u of a.querySelectorAll(Nu))u.remove();for(let u of a.querySelectorAll("[data-devtools], [data-popmelt-peer-surface], [data-popmelt-root], popmelt-root"))u.remove();if(a.matches(Nu))throw new Error("Unsupported preview root");let p="";for(let u of e.ownerDocument.styleSheets)if(!(u.ownerNode instanceof Element&&u.ownerNode.closest("[data-devtools], [data-popmelt-top-layer-host]")))try{p+=[...u.cssRules].map(h=>h.cssText).join(`
3
3
  `)+`
4
- `}catch{d.add("An inaccessible stylesheet was omitted")}return d.add("Static snapshot: no scripts, external assets, event handlers or application runtime"),{revision:n,html:e.tagName==="BODY"?a.innerHTML:a.outerHTML,...e.tagName==="BODY"?{bodyAttributes:Object.fromEntries([...a.attributes].map(u=>[u.name,u.value]))}:{},css:p,width:r,height:o,warnings:[...d]}}function Ou(e,t){let n=[...e.querySelectorAll(`[${Sl}]`)].filter(r=>r.getAttribute(Sl)===t);return n.length===1?n[0]:null}var ay=class{constructor(e){this.generation=0,this.cancelPending=null,this.current=null,this.disposed=!1,this.frame=e.ownerDocument.createElement("iframe"),this.frame.setAttribute("sandbox","allow-same-origin"),this.frame.title="Peer plane preview",this.frame.style.cssText="border:0;display:block;pointer-events:none;",this.frame.tabIndex=-1,e.append(this.frame)}async render(e,t,n){if(this.disposed)throw new Error("Preview surface was disposed");this.cancelPending?.();let r=++this.generation;this.current=null,this.frame.width=String(e.width),this.frame.height=String(e.height);let o=this.frame.ownerDocument.implementation.createHTMLDocument("Peer preview"),i=o.createElement("meta");i.httpEquiv="Content-Security-Policy",i.content="default-src 'none'; style-src 'unsafe-inline'; form-action 'none'; base-uri 'none'; script-src 'none'",o.head.prepend(i);let a=o.createElement("style");a.textContent=e.css.replace(/<\/style/gi,"<\\/style"),o.head.append(a),o.body.innerHTML=e.html;for(let[s,d]of Object.entries(e.bodyAttributes??{}))o.body.setAttribute(s,d);let l=o.createElement("style");return l.textContent="*,*::before,*::after{animation:none!important;transition:none!important;caret-color:transparent!important}",o.head.append(l),o.documentElement.dataset.previewGeneration=String(r),new Promise(s=>{let d=h=>{clearTimeout(u),this.frame.removeEventListener("load",p),this.cancelPending===c&&(this.cancelPending=null),s(h)},c=()=>d(!1),p=()=>{if(r!==this.generation||this.frame.contentDocument?.documentElement.dataset.previewGeneration!==String(r))return;let h=this.frame.contentDocument;n?.(h);for(let m of t.artifacts)m.kind==="style"&&Ou(h,m.targetKey)?.style.setProperty(m.property,m.value,"important");this.current={baseline:e,plane:{...t}},d(!0)},u=setTimeout(c,5e3);this.cancelPending=c,this.frame.addEventListener("load",p),queueMicrotask(()=>{!this.disposed&&r===this.generation&&(this.frame.srcdoc="<!doctype html>"+o.documentElement.outerHTML)})})}inspect(e,t){let n=this.current,r=this.frame.contentDocument;if(!n||!r)return null;let o=Ou(r,e);if(!o)return null;let i=this.frame.contentWindow.getComputedStyle(o),a=o.getBoundingClientRect();return{planeId:n.plane.id,planeRevision:n.plane.revision,sourceRevision:n.baseline.revision,targetKey:e,styles:Object.fromEntries(t.map(l=>[l,i.getPropertyValue(l)])),rect:{x:a.x,y:a.y,width:a.width,height:a.height}}}dispose(){this.disposed=!0,++this.generation,this.cancelPending?.(),this.current=null,this.frame.remove()}};function ly(e,t){return{id:e,ownerId:t,revision:0,artifacts:[],undo:[],redo:[],attention:null}}function Qs(e){return ll(e).flatMap(t=>t==="color"?[...Jc]:[t])}function sy(e,t){if(e===void 0)return{families:Ui.map(n=>({family:n,label:Ms(n)}))};if(!Ui.includes(e))throw new Error("Unknown omnidial family");if(!t)return{family:e,subproperties:Qs(e)};if(!Qs(e).includes(t))throw new Error("Unknown omnidial subproperty");return{family:e,subproperty:t,...e==="transform"&&t==="translate"?{composedToken:"translate-x-<xStep>-y-<yStep>",axisSteps:vi(e,t)}:{},tokens:vi(e,t).map(n=>({token:al(e,n,t),value:qi(e,n,t)}))}}function dy(e,t){if(t!==void 0&&!Ui.includes(t))throw new Error("Unknown omnidial family");let n=/^translate-x-(-?\d+)-y-(-?\d+)$/.exec(e);if(n&&(!t||t==="transform")){let o=vi("transform","translate"),i=o.find(l=>String(l)===n[1]),a=o.find(l=>String(l)===n[2]);if(i!==void 0&&a!==void 0)return{family:"transform",subproperty:"translate",step:i,axisSteps:{x:i,y:a}}}let r=[];for(let o of t?[t]:Ui)for(let i of Qs(o))for(let a of vi(o,i))al(o,a,i)===e&&r.push({family:o,subproperty:i,step:a});if(r.length>1)throw new Error("Ambiguous omnidial token; include its family (for example stack or grid)");if(!r.length)throw new Error("Unknown omnidial token; discover available tokens or use an explicit custom property/value");return r[0]}function Fu(e,t,n,r){let o=e.ownerDocument.defaultView.getComputedStyle(e),i=Rc(t,r),a=qi(t,n,r),l=Pc(t),s=jc(t,r,n),d=t==="border"&&!yi(t,r)&&typeof n=="number"&&n>0?zc(r):null,c={family:t,subproperty:Bc(t,r),step:n},p=[{property:i,original:o.getPropertyValue(i).trim()||"0px",modified:a,token:al(t,n,r),sticker:c}];l&&p.unshift({property:"display",original:o.getPropertyValue("display").trim()||"block",modified:l,token:l,sticker:c});for(let u of s)p.push({property:u.property,original:o.getPropertyValue(u.property).trim(),modified:u.value,token:u.token,sticker:c});if(d){let u=o.getPropertyValue(d).trim();(!u||u==="none")&&p.push({property:d,original:u||"none",modified:"solid",token:al(t,n,r),sticker:c})}return{alreadyApplied:Lc(t,n,r,u=>o.getPropertyValue(u)),changes:p}}function _u(e,t,n){let r=e.ownerDocument.defaultView.getComputedStyle(e),o="translate",i=`${Number(t)*4}px ${Number(n)*4}px`,a={family:"transform",subproperty:"translate",step:t,axisSteps:{x:t,y:n}};return{alreadyApplied:r.getPropertyValue(o).trim()===i,changes:[{property:o,original:r.getPropertyValue(o).trim()||"none",modified:i,token:`translate-x-${t}-y-${n}`,sticker:a}]}}function cy(e,t){for(let n of t.changes)it(e,n.property,n.modified)}var uy=new Set(["text","transform","opacity"]),py=new Set(["padding","margin","border","radius","color"]);function fy(e){return e instanceof SVGSVGElement&&!(e.parentElement instanceof SVGElement)}function hy(e){return e!=="text-align"}function Il(e,t,n){return Dr(e)?e instanceof HTMLElement?!0:t==="text"&&!hy(n)?!1:uy.has(t)||fy(e)&&py.has(t):!1}function ja(e){return[...new Set([...e?.annotations.flatMap(t=>t.linkedSelector?[t.linkedSelector]:[])??[],...e?.styleModifications.map(t=>t.selector)??[],...e?.textModifications.map(t=>t.selector)??[]])]}function my(e,t){return Object.keys(t).filter(n=>e[n]!==void 0&&e[n]!==t[n])}function Wu(e,t){return Object.keys(e).length===Object.keys(t).length&&Object.keys(t).every(n=>e[n]===t[n])}function Zs(e,t,n,r){let o={...e};for(let i of r){if(n[i]===void 0){delete o[i];continue}o[i]=t[i]??e[i]??n[i]}return o}function gy(e){let t=e.ownerDocument.defaultView.getComputedStyle(e),n=Array.from(t).filter(i=>!i.startsWith("--")).map(i=>`${i}:${t.getPropertyValue(i)}`).join(";"),r=e.outerHTML+n,o=2166136261;for(let i=0;i<r.length;i++)o=Math.imul(o^r.charCodeAt(i),16777619);return`target-v2:${(o>>>0).toString(16)}`}var sr=()=>location.origin+location.pathname;function kl(e){let t=document.querySelectorAll(e),n=t[0];if(t.length!==1||!(n instanceof HTMLElement||n instanceof SVGElement)||n.closest("[data-devtools], [data-popmelt-peer-surface], [data-popmelt-canvas-block]"))throw new Error("Target must resolve to exactly one app element");if(n.matches("input,textarea,select,[contenteditable],script,style")||n.closest("[data-private], [data-sensitive]"))throw new Error("Private/editable controls are outside the peer preview");return n}var Bu=class{constructor(){this.sources={},this.changed=[],this.container=document.createElement("div"),this.container.dataset.popmeltPeerSurface="",this.container.setAttribute("aria-hidden","true"),this.container.style.cssText="position:fixed;left:-100000px;top:0;pointer-events:none;",document.body.append(this.container),this.surface=new ay(this.container)}async render(e,t,n,r=!1){if(t.domModifications.length||t.spacingTokenChanges.length)throw new Error("Independent previews do not yet support staged structure or spacing-token edits; your draft is preserved");let o=e.state??pl,i=new Set([...n?[n]:[],...ja(o)]),a=new Map;for(let c of i)a.set(c,kl(c));let l=new Map;for(let c of t.textModifications){let p=document.querySelector(c.selector);p&&l.set(p,[...l.get(p)??[],c])}let s=iy({root:document.body,targets:a,revision:sr(),width:innerWidth,height:innerHeight,cleanClone:(c,p)=>{if(!r){eg(c,p);for(let u of l.get(c)??[]){let h=p;for(let m of u.textNodePath)h=h?.childNodes[m];h?.nodeType===Node.TEXT_NODE&&(h.nodeValue=u.original)}}}}),d=ly(e.identity.id,e.identity.id);if(d.revision=e.revision,r||(d.artifacts=o.styleModifications.flatMap(c=>c.changes.map(p=>({kind:"style",id:c.selector+p.property,targetKey:c.selector,property:p.property,value:p.modified})))),!await this.surface.render(s,d,c=>{this.sources=Object.fromEntries([...i].map(p=>[p,gy(c.querySelector(`[data-popmelt-preview-target="${CSS.escape(p)}"]`))])),this.changed=my(e.basis??{},this.sources)}))throw new Error("Preview superseded or unavailable");return this.surface.frame.contentWindow?.scrollTo(scrollX,scrollY),s.warnings}async execute(e,t){let{action:n}=e,r=structuredClone(e.peer);if(n.type==="prepare-send"){if(!ja(r.state).length)throw new Error("There are no peer changes to send");if(await this.render(r,t),!e.observedSources||Object.keys(this.sources).some(s=>e.observedSources[s]!==this.sources[s]))throw new Error("Source changed since the last preview. Take another look, then send again.");return this.changed.length&&r.revision++,r.basis={...this.sources},delete r.pendingRevision,{peer:r,sources:this.sources}}if(n.type==="check-source"){let s={...r,state:{...structuredClone(pl),annotations:Object.keys(n.sources).map((d,c)=>({id:`source-${c}`,type:"text",text:"",points:[],strokeWidth:1,color:r.color,timestamp:0,linkedSelector:d}))}};if(await this.render(s,t),!Wu(n.sources,this.sources))throw new Error("Source changed since Send. Preview the current source and send again.");return{peer:r,evidence:{status:"source-current"}}}if(n.type==="tokens")return{peer:r,evidence:sy(n.family,n.subproperty)};let o=r.state??{...structuredClone(pl),isAnnotating:!0,activeColor:r.color},i=o,a,l=s=>{i=_m(i,s)};if(n.type==="send")throw new Error("Send requires the implementation bridge");if(n.type==="rebase")await this.render(r,t),r.basis={...this.sources},r.revision++,delete r.pendingRevision,a={status:"rebased",note:"Draft preserved against current source; Send requires a new approval if in Suggest."};else if(n.type==="undo"||n.type==="redo"){l({type:n.type==="undo"?"UNDO":"REDO"}),await this.render({...r,state:i},t);let s=[...new Set([...ja(o),...ja(i)])].filter(d=>{let c=p=>JSON.stringify([p.annotations.filter(u=>u.linkedSelector===d),p.styleModifications.filter(u=>u.selector===d)]);return c(o)!==c(i)});r.basis=Zs(r.basis??{},e.observedSources??{},this.sources,s)}else if(n.type==="attention"&&!n.selector)r.attention=null;else if(n.type==="clear"){let s=n.kind!=="style"&&o.annotations.some(c=>c.linkedSelector===n.selector),d=n.kind!=="comment"&&o.styleModifications.some(c=>c.selector===n.selector);if(!s&&!d)return{peer:r,evidence:{status:"nothing-to-clear"}};i={...o,annotations:n.kind==="style"?o.annotations:o.annotations.filter(c=>c.linkedSelector!==n.selector),styleModifications:n.kind==="comment"?o.styleModifications:o.styleModifications.filter(c=>c.selector!==n.selector),undoStack:[...o.undoStack,{annotations:o.annotations,styleModifications:o.styleModifications,textModifications:o.textModifications,domModifications:o.domModifications,spacingTokenChanges:o.spacingTokenChanges,spacingTokenMods:o.spacingTokenMods}],redoStack:[]},await this.render({...r,state:i},t),r.basis=Zs(r.basis??{},e.observedSources??{},this.sources,[n.selector])}else if("selector"in n&&n.selector){let s=kl(n.selector),d=mn(s),c=n.selector;if(n.type==="inspect"){let p=await this.render(r,t,c,n.plane==="host");a={...this.surface.inspect(c,n.properties??[]),element:d,warnings:p,view:n.plane??"own",url:sr(),changedSourceTargets:n.plane==="host"?void 0:this.changed}}else if(n.type==="style")if("token"in n){let p=dy(n.token,n.family);if(!Il(s,p.family,p.subproperty))throw new Error("This omnidial token does not support the target");await this.render(r,t,c);let u=this.surface.frame.contentDocument?.querySelector(c);if(!u)throw new Error("Could not inspect original style");let h=p.axisSteps?_u(u,p.axisSteps.x,p.axisSteps.y):Fu(u,p.family,p.step,p.subproperty);h.alreadyApplied||l({type:"MODIFY_STYLES_BATCH",payload:{selector:c,element:{...d,selector:c},changes:h.changes}}),a={token:n.token,selection:p,alreadyApplied:h.alreadyApplied}}else{if(!CSS.supports(n.property,n.value))throw new Error("Unsupported CSS property/value");await this.render(r,t,c);let p=this.surface.inspect(c,[n.property])?.styles[n.property];if(p===void 0)throw new Error("Could not inspect original style");l({type:"MODIFY_STYLES_BATCH",payload:{selector:c,element:{...d,selector:c},changes:[{property:n.property,original:p,modified:n.value}]}})}else if(n.type==="comment"){await this.render(r,t,c);let p=s.getBoundingClientRect();l({type:"ADD_TEXT",payload:{id:`peer-note-${e.id}`,point:{x:p.x+scrollX,y:p.y+scrollY-26},text:n.text,linkedSelector:c,elements:[{...d,selector:c}]}})}r.attention=null,(n.type==="comment"||n.type==="style")&&(r.basis=Zs(r.basis??{},e.observedSources??{},this.sources,[c]))}if(i!==o){if(i.annotations.length+i.styleModifications.length>100)throw new Error("Peer draft is full; submit or undo before adding more");i={...i,undoStack:i.undoStack.slice(-50),redoStack:i.redoStack.slice(-50)},r.state=i,r.revision++,r.url=sr(),delete r.pendingRevision}return{peer:r,evidence:a,...["inspect","style","comment","clear","undo","redo","rebase"].includes(n.type)&&!(n.type==="inspect"&&n.plane==="host")?{sources:this.sources}:{}}}dispose(){this.surface.dispose(),this.container.remove()}};async function yy(e,t,n){let r=!0,o,i=new Set,a=async c=>{let p=new AbortController;i.add(p);let u=setTimeout(()=>p.abort(),1500);try{return await e(c,p.signal)}catch{return!1}finally{clearTimeout(u),i.delete(p)}},l=()=>{r=!1,clearTimeout(o);for(let c of i)c.abort()},s=()=>{l(),a("finish")},d=async()=>{if(!r)return;let c=await a("renew");r&&c&&(o=setTimeout(()=>{d()},1e3))};n.addEventListener("abort",s,{once:!0});try{if(n.aborted)throw new Error("Canvas disconnected before action");let c=await a("start");if(n.aborted)throw new Error("Canvas disconnected before action");return r&&c&&(o=setTimeout(()=>{d()},1e3)),await t()}finally{l(),n.removeEventListener("abort",s),await a("finish")}}function vy(e){let t=`popmelt-peer-seen:${e}`,[n,r]=j({key:"",revisions:{}});return O(()=>{let o={};try{let i=JSON.parse(localStorage.getItem(t)??"{}");i&&typeof i=="object"&&!Array.isArray(i)&&(o=Object.fromEntries(Object.entries(i).filter(([,a])=>Number.isSafeInteger(a)&&a>=0)))}catch{}r({key:t,revisions:o})},[t]),{markSeen:J((o,i)=>{r(a=>{if(a.key!==t||(a.revisions[o]??0)>=i)return a;let l={key:t,revisions:{...a.revisions,[o]:i}};try{localStorage.setItem(t,JSON.stringify(l.revisions))}catch{}return l})},[t]),isUnseen:(o,i)=>n.key===t&&i>(n.revisions[o]??0)}}function by(e,t){let n,r=l=>(l instanceof Element?l:l.parentElement)?.closest("[data-devtools], [data-popmelt-peer-surface], [data-popmelt-root], popmelt-root"),o=()=>{n===void 0&&(n=setTimeout(()=>{n=void 0,t()},400))},i=new MutationObserver(l=>{document.hidden||!e.length||l.some(s=>{if(r(s.target)||s.type==="childList"&&[...s.addedNodes,...s.removedNodes].every(c=>r(c)))return!1;let d=s.target instanceof Element?s.target:s.target.parentElement;return d?.closest("style,head")?!0:e.some(c=>{let p=document.querySelector(c);return!p||p.contains(s.target)||d?.contains(p)})})&&o()});i.observe(document.documentElement,{subtree:!0,attributes:!0,childList:!0,characterData:!0}),window.addEventListener("resize",o);let a=()=>{document.hidden||o()};return document.addEventListener("visibilitychange",a),()=>{i.disconnect(),clearTimeout(n),window.removeEventListener("resize",o),document.removeEventListener("visibilitychange",a)}}function Ju(e){if(!e)return 0;let t=em(e.annotations);return bc({annotations:e.annotations.filter(n=>!n.captured&&!t.has(n)),styleModifications:e.styleModifications.filter(n=>!n.captured),textModifications:e.textModifications.filter(n=>!n.captured)}).count}function xy(e,t,n,r,o){let[i,a]=j([]),[l,s]=j([]),d=Ph(l,e&&r.isAnnotating),c=jh(e&&r.isAnnotating),{viewedId:p,isPeeking:u}=c,[h,m]=j(),[g,x]=j(),[S,D]=j([]),H=W(null),{markSeen:w,isUnseen:z}=vy(n),Z=Se(()=>new Map(i.map(U=>[U.identity.id,Ju(U.state)])),[i]),{annotations:k,styleModifications:G,textModifications:N}=r,Y=Se(()=>Ju({annotations:k,styleModifications:G,textModifications:N}),[k,G,N]),[q,ie]=j(null),I=W(null),Q=W({human:r,settings:o});Q.current={human:r,settings:o};let L=W({clientId:crypto.randomUUID()}),F=W(async()=>{throw new Error("Canvas is disconnected")}),R=e?i.find(U=>U.identity.id===p):void 0,$=i.find(U=>U.identity.id===c.selectedId)?.state,P=Se(()=>zh($),[$]);O(()=>{if(!e||!n)return;L.current.token||(L.current={clientId:crypto.randomUUID()});let U=!1,fe,ge=-1,K=-1,Te=new AbortController,Me="",Ee=!1,Ge=new Bu,X=new Map,Oe=je=>{U||typeof je.presenceVersion!="number"||je.presenceVersion<=K||!Array.isArray(je.presence)||(K=je.presenceVersion,s(je.presence))},ve=async(je,$e={},ce=AbortSignal.any([Te.signal,AbortSignal.timeout(5e4)]))=>{let rt=L.current.token,at=await Yt(`${t}/peers/${je}`,{method:"POST",headers:{"Content-Type":"application/json","X-Popmelt-Project-Id":n},body:JSON.stringify({...L.current,...$e}),signal:ce}),Be=await at.json();if(je!=="host"&&rt!==L.current.token)throw new Error("Canvas session changed during request");if(!at.ok||Be.error)throw new Error(Be.error??`Peer request failed (${at.status})`);return Be};F.current=ve;async function Fe(je){if(je.url&&je.url!==sr())throw new Error("Canvas navigated before the operation could run");if(je.action.type!=="send"){let kt=pm(je.action);return kt?(kl(kt.selector),yy(async(lt,Ke)=>{let jt=await ve("activity",{id:je.id,phase:lt},Ke);return Oe(jt),jt.accepted===!0},()=>Ge.execute(je,Q.current.human),Te.signal)):Ge.execute(je,Q.current.human)}if(!je.grant)throw new Error("No host-approved Send grant");let $e=structuredClone(je.peer);if($e.url!==sr())throw new Error("Return to the proposal\u2019s page before sending");let ce=$e.state;if(!ce||!ce.annotations.length&&!ce.styleModifications.length)throw new Error("There are no peer changes to send");await Ge.render($e,Q.current.human);let rt={...Ge.sources};if(!je.observedSources||Object.keys(rt).some(kt=>je.observedSources[kt]!==rt[kt]))throw new Error("Source changed since the last preview. Take another look, then send again.");let at=Ge.surface.frame.contentDocument;if(!at)throw new Error("Peer preview is unavailable");let[Be]=await Wi(at.body,null,[],{viewportOnly:!0});if(!Be)throw new Error("Could not capture the peer preview");if(await Ge.render($e,Q.current.human),!Wu(rt,Ge.sources))throw new Error("Source changed while preparing Send. Take another look, then send again.");await ve("source",{grant:je.grant,sources:rt});let Ie=pc(ce.annotations,ce.styleModifications,void 0,void 0,ce.textModifications),{provider:_e,model:_t,agentSettings:wt}=Q.current.settings,Pt=await bu(Be,JSON.stringify(Ie),t,$e.color,_e,_t,void 0,void 0,wt,void 0,void 0,void 0,je.grant);return $e.state={...structuredClone(pl),isAnnotating:!0,activeColor:$e.color},$e.revision++,$e.basis={},delete $e.pendingRevision,$e.lastJob={jobId:Pt.jobId,threadId:Pt.threadId},{peer:$e,evidence:{status:"submitted",...Pt}}}async function qe(){try{if(!L.current.token||Me!==sr()){let $e=await ve("host",{url:sr()});if(U)return;L.current.token=String($e.token),Me=sr()}let je=await ve("poll",{version:ge,presenceVersion:K});if(U)return;Oe(je),je.peers&&(a(je.peers),Ee=je.peers.length>0,ge=Number(je.version));for(let $e of je.requests){let ce=X.get($e.id);if(!ce){try{ce=await Fe($e)}catch(rt){ce={error:rt instanceof Error?rt.message:String(rt)}}X.set($e.id,ce),X.size>100&&X.delete(X.keys().next().value)}await ve("response",{id:$e.id,result:ce})}}catch(je){!U&&je instanceof Error&&je.message.includes("Host capability")&&(L.current.token=void 0,ge=-1,K=-1,U||s([]))}finally{U||(fe=setTimeout(()=>{qe()},document.hidden||!Ee?2e3:600))}}return qe(),()=>{U=!0,Te.abort(),clearTimeout(fe),Ge.dispose(),a([]),s([]),F.current=async()=>{throw new Error("Canvas is disconnected")}}},[e,t,n]),O(()=>{if(x(void 0),D([]),H.current=null,!R||!r.isAnnotating||!I.current){ie(null);return}let U=new Bu;I.current.append(U.container),ie(null),U.container.removeAttribute("aria-hidden"),U.container.style.cssText="position:absolute;inset:0;pointer-events:none;";let fe=!1;R.url&&R.url!==sr()&&x("This draft belongs to another page. Return to it to preview.");let ge=!1,K=!1,Te=()=>{if(!fe){if(ge){K=!0;return}ge=!0,U.render(R,Q.current.human).then(()=>{fe||(x(void 0),D(U.changed),H.current={id:R.identity.id,revision:R.revision,values:{...U.sources}},ie(U.surface.frame),w(R.identity.id,R.revision))}).catch(X=>{fe||(H.current=null,ie(null),x(X.message))}).finally(()=>{ge=!1,K&&(K=!1,Te())})}},Me=!R.url||R.url===sr();Me&&Te();let Ee=Me?by(ja(R.state),Te):()=>{},Ge=()=>U.surface.frame.contentWindow?.scrollTo(scrollX,scrollY);return window.addEventListener("scroll",Ge,{passive:!0}),()=>{fe=!0,Ee(),window.removeEventListener("scroll",Ge),U.dispose()}},[R,r.isAnnotating,w]);let A=async U=>{try{return await U(),m(void 0),!0}catch(fe){return m(fe instanceof Error?fe.message:String(fe)),!1}},ne=e&&i.length?{peers:[{identity:{id:"host",name:"You",kind:"human",relationship:"host"},permission:"direct",color:r.activeColor,stagedCount:Y},...i.map(U=>({...U,stagedCount:Z.get(U.identity.id)??0,unseenActivity:z(U.identity.id,U.revision)}))],viewedPeerId:p,selectedPeerId:c.selectedId,onPeek:c.peek,onPeekEnd:c.leave,onPreview:U=>{c.select(U),m(void 0)},onPermissionChange:(U,fe)=>A(()=>F.current("permission",{peerId:U,permission:fe}))}:null,re=R?.pendingRevision!==void 0?()=>A(()=>{let U=H.current;if(!U||U.id!==p||U.revision!==R.revision)throw new Error("Wait for this draft\u2019s preview before sending.");return F.current("approve",{peerId:p,revision:R.pendingRevision,sources:U.values})}):void 0,ee=!!(R&&r.isAnnotating),oe=e&&(h??(ee?g:void 0));return O(()=>{if(!ee)return;let U=fe=>{fe.composedPath().some(ge=>ge instanceof Element&&ge.hasAttribute("data-devtools"))||(fe.metaKey||fe.ctrlKey)&&fe.key==="Enter"||(fe.key.length===1||["Backspace","Delete","Enter"].includes(fe.key))&&(fe.preventDefault(),fe.stopPropagation())};return window.addEventListener("keydown",U,!0),()=>window.removeEventListener("keydown",U,!0)},[ee]),{toolbar:ne,selectedId:c.selectedId,threadAnnotationNumbers:P,activePreview:ee,isPeeking:u,viewed:R,approve:re,overlay:M(ct,{children:[ee&&f("div",{ref:I,"data-devtools":"peer-preview","data-peer-revision":R?.revision,"data-pending-revision":R?.pendingRevision,"data-popmelt-peer-surface":!0,style:{position:"fixed",inset:0,zIndex:1e4,background:"#111",pointerEvents:"auto"}}),d.map(({presence:U,engaged:fe})=>{if(u)return null;let ge=i.find(Te=>Te.identity.id===U.peerId);if(!ge||U.clientId!==L.current.clientId||U.url!==sr()||ee&&ge.identity.id!==p)return null;let K=null;try{K=ee?q?.contentDocument?.querySelector(U.selector)??null:kl(U.selector)}catch{}return f(Xc,{element:K,engaged:fe,label:`${ge.identity.name} is looking at this element`},`${ge.identity.id}:${U.operationId}`)}),!u&&ee&&R&&q?.contentDocument&&f($h,{peer:R,targetDocument:q.contentDocument,onApprove:re?()=>{re()}:void 0}),ee&&R&&p===c.selectedId&&f("div",{"data-devtools":"peer-plane-border","data-plane-owner":R.identity.id,"aria-hidden":"true",style:{position:"fixed",inset:0,border:`2px solid ${R.color}`,boxSizing:"border-box",pointerEvents:"none",zIndex:10002}}),ee&&R&&p===c.selectedId&&f(Dh,{name:R.identity.name,isOwnPlane:R.identity.id==="host",color:R.color,changed:S.length>0}),oe&&f("div",{"data-devtools":"peer-error",role:"status",style:{position:"fixed",bottom:100,right:24,maxWidth:360,padding:12,background:"#222",color:"#ddd",borderRadius:12,fontFamily:Fs,fontSize:12,lineHeight:1.4,zIndex:10002},children:oe})]})}}function wy(e,t,n,r,o,i,a){let[l,s]=j(),d=W({navigation:e,selectedId:t});O(()=>{if(!e||!n||l?.navigation===e)return;let c=e.read(),p=o.current,u=!1;if(!c.threadId||c.selectedId!==t){s({navigation:e});return}return i(c.threadId).then(h=>{if(!u){if(p===o.current&&e.read()===c)if(h>=200&&h<300)a(c.threadId);else if(h===403||h===404||h===410)e.rememberThread(t,null);else{s({navigation:e,unresolvedRevision:p});return}s({navigation:e})}}).catch(()=>{u||s({navigation:e,unresolvedRevision:p})}),()=>{u=!0}},[e,t,n,l,o,i,a]),O(()=>{let c=d.current.navigation!==e||d.current.selectedId!==t;d.current={navigation:e,selectedId:t},!(!e||l?.navigation!==e||c)&&(l.unresolvedRevision===o.current&&!r||e.rememberThread(t,r))},[e,t,r,l,o])}var Sy=hl(()=>import("./ParticipantRuntime-HU2P2PJ6.mjs")),Iy=hl(()=>import("./PreviewRuntime-YAUBP6HA.mjs"));function ky({children:e,projectId:t,adapters:n,multiplayer:r=!1}){let[o,i]=j(!1);if(O(()=>{i(!0)},[]),!o)return null;let a=window.__POPMELT_PARTICIPANTS__;if(!r)return xu()?null:a?f("p",{role:"status","data-devtools":"participant-disabled",children:"Multiplayer is disabled. Enable the multiplayer option in your Popmelt integration to use this participant page."}):e;if(a)try{xg(a,t)}catch(l){return f("p",{role:"alert","data-devtools":"participant-error",children:l.message})}return xu()?a?f(ml,{fallback:null,children:f(Iy,{config:a,adapters:n})}):null:a?f(ml,{fallback:null,children:f(Sy,{config:a,children:Pg(e,{bridgeUrl:a.url,projectId:a.projectId})},a.projectId)}):e}function Ty(e,t,n,r){let o=W(e);o.current=e;let[i,a]=j([]),l=W(null),[s,d]=j(null),[c,p]=j(null),u=i.filter(x=>x.scope===e),h=x=>a(S=>S.filter(D=>D.id!==x)),m=(x,S)=>{let D=Symbol(x);p(null);let H=t(x).then(()=>!0,()=>(o.current===e&&(S(),p({scope:e,message:"Could not dismiss thread. Please try again."})),h(D),!1));a(w=>[...w.filter(z=>z.scope===e),{id:D,threadId:x,rollback:S,saved:H,scope:e,undoHead:r}])},g=async()=>{let x=u.at(-1);if(!(!x||l.current===e)){l.current=e,d(e),p(null);try{if(!await x.saved||o.current!==e||(await n(x.threadId),o.current!==e))return;x.rollback(),h(x.id)}catch{o.current===e&&p({scope:e,message:"Could not restore thread. Try Undo again."})}finally{l.current===e&&(l.current=null,d(null))}}};return{dismiss:m,undo:g,tryUndo:()=>{let x=u.at(-1);return!x||x.undoHead!==r?!1:(g(),!0)},busy:s===e,count:u.length,error:c?.scope===e?c.message:null}}function Ey({enabled:e,active:t,configuration:n=!0,adapters:r}){let[o,i]=j(!1),[a,l]=j(null),s=Se(()=>wg(),[]),{recognition:d,selector:c,root:p,observe:u,store:h,imageHasher:m,onError:g}=typeof n=="object"?n:{},x=r.some(w=>w.surfaceKind==="image"||w.id==="see:image"),S=e&&n!==!1&&!x,D=t||o,H=D?d:void 0;return O(()=>{e?t&&i(!0):i(!1)},[e,t]),O(()=>{if(!S)return;let w=Sg({recognition:H?{cacheKey:H.cacheKey,configurationKey:H.configurationKey,detect:z=>H.detect(z),reconcile:(...z)=>H.reconcile(...z)}:void 0,hydrateOnly:!D,selector:c,root:p,observe:u,store:h??s,imageHasher:m,onError:g});return l(w),()=>{l(null),w.destroy()}},[S,H,D,c,p,u,h,s,m,g]),Se(()=>S&&a?[a,...r]:r,[S,a,r])}function Ay({enabled:e,configuration:t=!0,adapters:n}){let[r,o]=j(null),i=Se(()=>Ig(),[]),{segmentation:a,tracking:l,selector:s,root:d,observe:c,store:p,onError:u}=typeof t=="object"?t:{},h=n.some(g=>g.surfaceKind==="video"||g.id==="see:video"),m=e&&t!==!1&&!h;return O(()=>{if(!m)return;let g=kg({tracking:l,segmentation:a,selector:s,root:d,observe:c,store:p??i,onError:u});return o(g),()=>{o(null),g.destroy()}},[m,l,a,s,d,c,p,i,u]),Se(()=>m&&r?[r,...n]:n,[m,r,n])}function qu(e,t){return JSON.stringify([e,t.adapter,t.key])}async function Uu(e,t,n,r){for(let o of t){if(!o.target)continue;let i=qu(n,o.target);if(!r.has(i))try{r.set(i,await e.captureFeedback(o.target))}catch{r.set(i,null)}}}function Cy(e,t,n){let r=new Map;for(let o of e.annotations){let i=t.find(l=>l.id===o.id),a=(i?.groupId?t.filter(l=>l.groupId===i.groupId):t.filter(l=>l.id===o.id)).flatMap(l=>n.get(l.id)??[]);a.length&&r.set(o.id,a)}return r}function My(e,t,n,r){for(let o of e.annotations){if(!o.target)continue;let i=n.get(qu(o.pathname||r,o.target));if(!i){o.subjectFeedback={warning:"Live object unavailable; the following object context is the draft-time snapshot, not a refreshed detection. No object crop is attached."};continue}if(o.elements=[i.elementInfo],o.subjectFeedback=i.warning?{warning:i.warning}:void 0,i.crop){let a=t.get(o.id)??[];o.subjectFeedback={...o.subjectFeedback,cropImageIndex:a.length},t.set(o.id,[...a,i.crop])}}}function Ry(e){let t=e?.requestItems?.flatMap(r=>r.kind==="annotation"&&r.text.trim()?[r.text.trim()]:[]);if(t?.length)return t.join("; ");let n=e?.requestItems?.flatMap(r=>r.kind==="changes"?[`${r.elementLabel} [${r.changes.join(", ")}]`]:[]);return n?.length?n.join("; "):e?.requestText?.trim()||void 0}function Ly(e,t){if(!e?.frames?.length)return[];let n=new Map;for(let r of e.steps){let o=r.visuals?.afterFrameId;o&&!n.has(o)&&n.set(o,r.action?.label?`After ${r.action.label}`:"Resulting state")}return e.frames.flatMap((r,o)=>{let i=t[r.imageIndex];return i?[{id:r.id,imageIndex:r.imageIndex,label:o===0?"Initial state":n.get(r.id)??"State",url:i}]:[]})}function Yu(e){let t=e.instruction?.trim();return t?e.attachments?.some(n=>n.name?.trim()===t)?null:t:null}function Py(e,t){let n=e?.tagName?.toLowerCase(),r=e?.id?`#${e.id}`:"",o=e?.className?`.${e.className.trim().split(/\s+/).slice(0,2).join(".")}`:"",i=n?`${n}${r}${o}`:t;return e?.reactComponent?`<${e.reactComponent}> ${i}`:i}function jy(e){let t=e.elements?.[0]?.reactComponent||e.elements?.[0]?.tagName||e.linkedSelector,n=e.type&&e.type!=="annotation"?`${e.type} annotation`:"Annotation";return t?`${n} on ${t}`:n}function zy(e){let t=e.annotations.map(o=>{let i=o.interactionEpisode?.steps.length??0;return{kind:"annotation",annotationId:o.id,pathname:o.pathname,text:Yu(o)??jy(o),...i>0?{interactionEpisodeStepCount:i}:{}}}),n=new Map,r=o=>{let i=`${o.pathname??""}:${o.durableSelector??o.selector}`,a=n.get(i);if(a){a.changes.push(o.text),o.annotationNumber!==void 0&&(a.annotationNumber===void 0||o.annotationNumber<a.annotationNumber)&&(a.annotationNumber=o.annotationNumber);return}let l={kind:"changes",elementKey:i,elementLabel:Py(o.element,o.selector),...o.annotationNumber!==void 0?{annotationNumber:o.annotationNumber}:{},pathname:o.pathname,changes:[o.text]};n.set(i,l),t.push(l)};for(let o of e.styleModifications??[])for(let i of o.changes)r({...o,text:`${i.property}: ${i.original||"unset"} \u2192 ${i.modified||"unset"}${i.token?` (${i.token})`:""}`});for(let o of e.textModifications??[])r({...o,text:`Text: ${o.original||"empty"} \u2192 ${o.modified||"empty"}`});for(let o of e.domModifications??[])r({...o,text:o.operation==="copy"?"Copied element":"Moved element"});return e.spacingTokenChanges?.length&&t.push({kind:"changes",elementKey:"spacing-tokens",elementLabel:"Spacing tokens",changes:e.spacingTokenChanges.map(o=>`${o.tokenName}: ${o.originalPx}px \u2192 ${o.newPx}px`)}),t}function $y(e){let t=e.annotations.flatMap(r=>{let o=Yu(r);return o?[{instruction:o,pathname:r.pathname}]:[]});if(t.length===0)return;if(new Set(t.map(r=>r.pathname).filter(Boolean)).size<=1)return t.map(r=>r.instruction).join(`
4
+ `}catch{d.add("An inaccessible stylesheet was omitted")}return d.add("Static snapshot: no scripts, external assets, event handlers or application runtime"),{revision:n,html:e.tagName==="BODY"?a.innerHTML:a.outerHTML,...e.tagName==="BODY"?{bodyAttributes:Object.fromEntries([...a.attributes].map(u=>[u.name,u.value]))}:{},css:p,width:r,height:o,warnings:[...d]}}function Ou(e,t){let n=[...e.querySelectorAll(`[${Sl}]`)].filter(r=>r.getAttribute(Sl)===t);return n.length===1?n[0]:null}var ay=class{constructor(e){this.generation=0,this.cancelPending=null,this.current=null,this.disposed=!1,this.frame=e.ownerDocument.createElement("iframe"),this.frame.setAttribute("sandbox","allow-same-origin"),this.frame.title="Peer plane preview",this.frame.style.cssText="border:0;display:block;pointer-events:none;",this.frame.tabIndex=-1,e.append(this.frame)}async render(e,t,n){if(this.disposed)throw new Error("Preview surface was disposed");this.cancelPending?.();let r=++this.generation;this.current=null,this.frame.width=String(e.width),this.frame.height=String(e.height);let o=this.frame.ownerDocument.implementation.createHTMLDocument("Peer preview"),i=o.createElement("meta");i.httpEquiv="Content-Security-Policy",i.content="default-src 'none'; style-src 'unsafe-inline'; form-action 'none'; base-uri 'none'; script-src 'none'",o.head.prepend(i);let a=o.createElement("style");a.textContent=e.css.replace(/<\/style/gi,"<\\/style"),o.head.append(a),o.body.innerHTML=e.html;for(let[s,d]of Object.entries(e.bodyAttributes??{}))o.body.setAttribute(s,d);let l=o.createElement("style");return l.textContent="*,*::before,*::after{animation:none!important;transition:none!important;caret-color:transparent!important}",o.head.append(l),o.documentElement.dataset.previewGeneration=String(r),new Promise(s=>{let d=h=>{clearTimeout(u),this.frame.removeEventListener("load",p),this.cancelPending===c&&(this.cancelPending=null),s(h)},c=()=>d(!1),p=()=>{if(r!==this.generation||this.frame.contentDocument?.documentElement.dataset.previewGeneration!==String(r))return;let h=this.frame.contentDocument;n?.(h);for(let m of t.artifacts)m.kind==="style"&&Ou(h,m.targetKey)?.style.setProperty(m.property,m.value,"important");this.current={baseline:e,plane:{...t}},d(!0)},u=setTimeout(c,5e3);this.cancelPending=c,this.frame.addEventListener("load",p),queueMicrotask(()=>{!this.disposed&&r===this.generation&&(this.frame.srcdoc="<!doctype html>"+o.documentElement.outerHTML)})})}inspect(e,t){let n=this.current,r=this.frame.contentDocument;if(!n||!r)return null;let o=Ou(r,e);if(!o)return null;let i=this.frame.contentWindow.getComputedStyle(o),a=o.getBoundingClientRect();return{planeId:n.plane.id,planeRevision:n.plane.revision,sourceRevision:n.baseline.revision,targetKey:e,styles:Object.fromEntries(t.map(l=>[l,i.getPropertyValue(l)])),rect:{x:a.x,y:a.y,width:a.width,height:a.height}}}dispose(){this.disposed=!0,++this.generation,this.cancelPending?.(),this.current=null,this.frame.remove()}};function ly(e,t){return{id:e,ownerId:t,revision:0,artifacts:[],undo:[],redo:[],attention:null}}function Qs(e){return ll(e).flatMap(t=>t==="color"?[...Jc]:[t])}function sy(e,t){if(e===void 0)return{families:Ui.map(n=>({family:n,label:Ms(n)}))};if(!Ui.includes(e))throw new Error("Unknown omnidial family");if(!t)return{family:e,subproperties:Qs(e)};if(!Qs(e).includes(t))throw new Error("Unknown omnidial subproperty");return{family:e,subproperty:t,...e==="transform"&&t==="translate"?{composedToken:"translate-x-<xStep>-y-<yStep>",axisSteps:vi(e,t)}:{},tokens:vi(e,t).map(n=>({token:al(e,n,t),value:qi(e,n,t)}))}}function dy(e,t){if(t!==void 0&&!Ui.includes(t))throw new Error("Unknown omnidial family");let n=/^translate-x-(-?\d+)-y-(-?\d+)$/.exec(e);if(n&&(!t||t==="transform")){let o=vi("transform","translate"),i=o.find(l=>String(l)===n[1]),a=o.find(l=>String(l)===n[2]);if(i!==void 0&&a!==void 0)return{family:"transform",subproperty:"translate",step:i,axisSteps:{x:i,y:a}}}let r=[];for(let o of t?[t]:Ui)for(let i of Qs(o))for(let a of vi(o,i))al(o,a,i)===e&&r.push({family:o,subproperty:i,step:a});if(r.length>1)throw new Error("Ambiguous omnidial token; include its family (for example stack or grid)");if(!r.length)throw new Error("Unknown omnidial token; discover available tokens or use an explicit custom property/value");return r[0]}function Fu(e,t,n,r){let o=e.ownerDocument.defaultView.getComputedStyle(e),i=Rc(t,r),a=qi(t,n,r),l=Pc(t),s=jc(t,r,n),d=t==="border"&&!yi(t,r)&&typeof n=="number"&&n>0?zc(r):null,c={family:t,subproperty:Bc(t,r),step:n},p=[{property:i,original:o.getPropertyValue(i).trim()||"0px",modified:a,token:al(t,n,r),sticker:c}];l&&p.unshift({property:"display",original:o.getPropertyValue("display").trim()||"block",modified:l,token:l,sticker:c});for(let u of s)p.push({property:u.property,original:o.getPropertyValue(u.property).trim(),modified:u.value,token:u.token,sticker:c});if(d){let u=o.getPropertyValue(d).trim();(!u||u==="none")&&p.push({property:d,original:u||"none",modified:"solid",token:al(t,n,r),sticker:c})}return{alreadyApplied:Lc(t,n,r,u=>o.getPropertyValue(u)),changes:p}}function _u(e,t,n){let r=e.ownerDocument.defaultView.getComputedStyle(e),o="translate",i=`${Number(t)*4}px ${Number(n)*4}px`,a={family:"transform",subproperty:"translate",step:t,axisSteps:{x:t,y:n}};return{alreadyApplied:r.getPropertyValue(o).trim()===i,changes:[{property:o,original:r.getPropertyValue(o).trim()||"none",modified:i,token:`translate-x-${t}-y-${n}`,sticker:a}]}}function cy(e,t){for(let n of t.changes)it(e,n.property,n.modified)}var uy=new Set(["text","transform","opacity"]),py=new Set(["padding","margin","border","radius","color"]);function fy(e){return e instanceof SVGSVGElement&&!(e.parentElement instanceof SVGElement)}function hy(e){return e!=="text-align"}function Il(e,t,n){return Dr(e)?e instanceof HTMLElement?!0:t==="text"&&!hy(n)?!1:uy.has(t)||fy(e)&&py.has(t):!1}function ja(e){return[...new Set([...e?.annotations.flatMap(t=>t.linkedSelector?[t.linkedSelector]:[])??[],...e?.styleModifications.map(t=>t.selector)??[],...e?.textModifications.map(t=>t.selector)??[]])]}function my(e,t){return Object.keys(t).filter(n=>e[n]!==void 0&&e[n]!==t[n])}function Wu(e,t){return Object.keys(e).length===Object.keys(t).length&&Object.keys(t).every(n=>e[n]===t[n])}function Zs(e,t,n,r){let o={...e};for(let i of r){if(n[i]===void 0){delete o[i];continue}o[i]=t[i]??e[i]??n[i]}return o}function gy(e){let t=e.ownerDocument.defaultView.getComputedStyle(e),n=Array.from(t).filter(i=>!i.startsWith("--")).map(i=>`${i}:${t.getPropertyValue(i)}`).join(";"),r=e.outerHTML+n,o=2166136261;for(let i=0;i<r.length;i++)o=Math.imul(o^r.charCodeAt(i),16777619);return`target-v2:${(o>>>0).toString(16)}`}var sr=()=>location.origin+location.pathname;function kl(e){let t=document.querySelectorAll(e),n=t[0];if(t.length!==1||!(n instanceof HTMLElement||n instanceof SVGElement)||n.closest("[data-devtools], [data-popmelt-peer-surface], [data-popmelt-canvas-block]"))throw new Error("Target must resolve to exactly one app element");if(n.matches("input,textarea,select,[contenteditable],script,style")||n.closest("[data-private], [data-sensitive]"))throw new Error("Private/editable controls are outside the peer preview");return n}var Bu=class{constructor(){this.sources={},this.changed=[],this.container=document.createElement("div"),this.container.dataset.popmeltPeerSurface="",this.container.setAttribute("aria-hidden","true"),this.container.style.cssText="position:fixed;left:-100000px;top:0;pointer-events:none;",document.body.append(this.container),this.surface=new ay(this.container)}async render(e,t,n,r=!1){if(t.domModifications.length||t.spacingTokenChanges.length)throw new Error("Independent previews do not yet support staged structure or spacing-token edits; your draft is preserved");let o=e.state??pl,i=new Set([...n?[n]:[],...ja(o)]),a=new Map;for(let c of i)a.set(c,kl(c));let l=new Map;for(let c of t.textModifications){let p=document.querySelector(c.selector);p&&l.set(p,[...l.get(p)??[],c])}let s=iy({root:document.body,targets:a,revision:sr(),width:innerWidth,height:innerHeight,cleanClone:(c,p)=>{if(!r){eg(c,p);for(let u of l.get(c)??[]){let h=p;for(let m of u.textNodePath)h=h?.childNodes[m];h?.nodeType===Node.TEXT_NODE&&(h.nodeValue=u.original)}}}}),d=ly(e.identity.id,e.identity.id);if(d.revision=e.revision,r||(d.artifacts=o.styleModifications.flatMap(c=>c.changes.map(p=>({kind:"style",id:c.selector+p.property,targetKey:c.selector,property:p.property,value:p.modified})))),!await this.surface.render(s,d,c=>{this.sources=Object.fromEntries([...i].map(p=>[p,gy(c.querySelector(`[data-popmelt-preview-target="${CSS.escape(p)}"]`))])),this.changed=my(e.basis??{},this.sources)}))throw new Error("Preview superseded or unavailable");return this.surface.frame.contentWindow?.scrollTo(scrollX,scrollY),s.warnings}async execute(e,t){let{action:n}=e,r=structuredClone(e.peer);if(n.type==="prepare-send"){if(!ja(r.state).length)throw new Error("There are no peer changes to send");if(await this.render(r,t),!e.observedSources||Object.keys(this.sources).some(s=>e.observedSources[s]!==this.sources[s]))throw new Error("Source changed since the last preview. Take another look, then send again.");return this.changed.length&&r.revision++,r.basis={...this.sources},delete r.pendingRevision,{peer:r,sources:this.sources}}if(n.type==="check-source"){let s={...r,state:{...structuredClone(pl),annotations:Object.keys(n.sources).map((d,c)=>({id:`source-${c}`,type:"text",text:"",points:[],strokeWidth:1,color:r.color,timestamp:0,linkedSelector:d}))}};if(await this.render(s,t),!Wu(n.sources,this.sources))throw new Error("Source changed since Send. Preview the current source and send again.");return{peer:r,evidence:{status:"source-current"}}}if(n.type==="tokens")return{peer:r,evidence:sy(n.family,n.subproperty)};let o=r.state??{...structuredClone(pl),isAnnotating:!0,activeColor:r.color},i=o,a,l=s=>{i=_m(i,s)};if(n.type==="send")throw new Error("Send requires the implementation bridge");if(n.type==="rebase")await this.render(r,t),r.basis={...this.sources},r.revision++,delete r.pendingRevision,a={status:"rebased",note:"Draft preserved against current source; Send requires a new approval if in Suggest."};else if(n.type==="undo"||n.type==="redo"){l({type:n.type==="undo"?"UNDO":"REDO"}),await this.render({...r,state:i},t);let s=[...new Set([...ja(o),...ja(i)])].filter(d=>{let c=p=>JSON.stringify([p.annotations.filter(u=>u.linkedSelector===d),p.styleModifications.filter(u=>u.selector===d)]);return c(o)!==c(i)});r.basis=Zs(r.basis??{},e.observedSources??{},this.sources,s)}else if(n.type==="attention"&&!n.selector)r.attention=null;else if(n.type==="clear"){let s=n.kind!=="style"&&o.annotations.some(c=>c.linkedSelector===n.selector),d=n.kind!=="comment"&&o.styleModifications.some(c=>c.selector===n.selector);if(!s&&!d)return{peer:r,evidence:{status:"nothing-to-clear"}};i={...o,annotations:n.kind==="style"?o.annotations:o.annotations.filter(c=>c.linkedSelector!==n.selector),styleModifications:n.kind==="comment"?o.styleModifications:o.styleModifications.filter(c=>c.selector!==n.selector),undoStack:[...o.undoStack,{annotations:o.annotations,styleModifications:o.styleModifications,textModifications:o.textModifications,domModifications:o.domModifications,spacingTokenChanges:o.spacingTokenChanges,spacingTokenMods:o.spacingTokenMods}],redoStack:[]},await this.render({...r,state:i},t),r.basis=Zs(r.basis??{},e.observedSources??{},this.sources,[n.selector])}else if("selector"in n&&n.selector){let s=kl(n.selector),d=mn(s),c=n.selector;if(n.type==="inspect"){let p=await this.render(r,t,c,n.plane==="host");a={...this.surface.inspect(c,n.properties??[]),element:d,warnings:p,view:n.plane??"own",url:sr(),changedSourceTargets:n.plane==="host"?void 0:this.changed}}else if(n.type==="style")if("token"in n){let p=dy(n.token,n.family);if(!Il(s,p.family,p.subproperty))throw new Error("This omnidial token does not support the target");await this.render(r,t,c);let u=this.surface.frame.contentDocument?.querySelector(c);if(!u)throw new Error("Could not inspect original style");let h=p.axisSteps?_u(u,p.axisSteps.x,p.axisSteps.y):Fu(u,p.family,p.step,p.subproperty);h.alreadyApplied||l({type:"MODIFY_STYLES_BATCH",payload:{selector:c,element:{...d,selector:c},changes:h.changes}}),a={token:n.token,selection:p,alreadyApplied:h.alreadyApplied}}else{if(!CSS.supports(n.property,n.value))throw new Error("Unsupported CSS property/value");await this.render(r,t,c);let p=this.surface.inspect(c,[n.property])?.styles[n.property];if(p===void 0)throw new Error("Could not inspect original style");l({type:"MODIFY_STYLES_BATCH",payload:{selector:c,element:{...d,selector:c},changes:[{property:n.property,original:p,modified:n.value}]}})}else if(n.type==="comment"){await this.render(r,t,c);let p=s.getBoundingClientRect();l({type:"ADD_TEXT",payload:{id:`peer-note-${e.id}`,point:{x:p.x+scrollX,y:p.y+scrollY-26},text:n.text,linkedSelector:c,elements:[{...d,selector:c}]}})}r.attention=null,(n.type==="comment"||n.type==="style")&&(r.basis=Zs(r.basis??{},e.observedSources??{},this.sources,[c]))}if(i!==o){if(i.annotations.length+i.styleModifications.length>100)throw new Error("Peer draft is full; submit or undo before adding more");i={...i,undoStack:i.undoStack.slice(-50),redoStack:i.redoStack.slice(-50)},r.state=i,r.revision++,r.url=sr(),delete r.pendingRevision}return{peer:r,evidence:a,...["inspect","style","comment","clear","undo","redo","rebase"].includes(n.type)&&!(n.type==="inspect"&&n.plane==="host")?{sources:this.sources}:{}}}dispose(){this.surface.dispose(),this.container.remove()}};async function yy(e,t,n){let r=!0,o,i=new Set,a=async c=>{let p=new AbortController;i.add(p);let u=setTimeout(()=>p.abort(),1500);try{return await e(c,p.signal)}catch{return!1}finally{clearTimeout(u),i.delete(p)}},l=()=>{r=!1,clearTimeout(o);for(let c of i)c.abort()},s=()=>{l(),a("finish")},d=async()=>{if(!r)return;let c=await a("renew");r&&c&&(o=setTimeout(()=>{d()},1e3))};n.addEventListener("abort",s,{once:!0});try{if(n.aborted)throw new Error("Canvas disconnected before action");let c=await a("start");if(n.aborted)throw new Error("Canvas disconnected before action");return r&&c&&(o=setTimeout(()=>{d()},1e3)),await t()}finally{l(),n.removeEventListener("abort",s),await a("finish")}}function vy(e){let t=`popmelt-peer-seen:${e}`,[n,r]=j({key:"",revisions:{}});return O(()=>{let o={};try{let i=JSON.parse(localStorage.getItem(t)??"{}");i&&typeof i=="object"&&!Array.isArray(i)&&(o=Object.fromEntries(Object.entries(i).filter(([,a])=>Number.isSafeInteger(a)&&a>=0)))}catch{}r({key:t,revisions:o})},[t]),{markSeen:J((o,i)=>{r(a=>{if(a.key!==t||(a.revisions[o]??0)>=i)return a;let l={key:t,revisions:{...a.revisions,[o]:i}};try{localStorage.setItem(t,JSON.stringify(l.revisions))}catch{}return l})},[t]),isUnseen:(o,i)=>n.key===t&&i>(n.revisions[o]??0)}}function by(e,t){let n,r=l=>(l instanceof Element?l:l.parentElement)?.closest("[data-devtools], [data-popmelt-peer-surface], [data-popmelt-root], popmelt-root"),o=()=>{n===void 0&&(n=setTimeout(()=>{n=void 0,t()},400))},i=new MutationObserver(l=>{document.hidden||!e.length||l.some(s=>{if(r(s.target)||s.type==="childList"&&[...s.addedNodes,...s.removedNodes].every(c=>r(c)))return!1;let d=s.target instanceof Element?s.target:s.target.parentElement;return d?.closest("style,head")?!0:e.some(c=>{let p=document.querySelector(c);return!p||p.contains(s.target)||d?.contains(p)})})&&o()});i.observe(document.documentElement,{subtree:!0,attributes:!0,childList:!0,characterData:!0}),window.addEventListener("resize",o);let a=()=>{document.hidden||o()};return document.addEventListener("visibilitychange",a),()=>{i.disconnect(),clearTimeout(n),window.removeEventListener("resize",o),document.removeEventListener("visibilitychange",a)}}function Ju(e){if(!e)return 0;let t=em(e.annotations);return bc({annotations:e.annotations.filter(n=>!n.captured&&!t.has(n)),styleModifications:e.styleModifications.filter(n=>!n.captured),textModifications:e.textModifications.filter(n=>!n.captured)}).count}function xy(e,t,n,r,o){let[i,a]=j([]),[l,s]=j([]),d=Ph(l,e&&r.isAnnotating),c=jh(e&&r.isAnnotating),{viewedId:p,isPeeking:u}=c,[h,m]=j(),[g,x]=j(),[S,D]=j([]),H=W(null),{markSeen:w,isUnseen:z}=vy(n),Z=Se(()=>new Map(i.map(U=>[U.identity.id,Ju(U.state)])),[i]),{annotations:k,styleModifications:G,textModifications:N}=r,Y=Se(()=>Ju({annotations:k,styleModifications:G,textModifications:N}),[k,G,N]),[q,ie]=j(null),I=W(null),Q=W({human:r,settings:o});Q.current={human:r,settings:o};let L=W({clientId:crypto.randomUUID()}),F=W(async()=>{throw new Error("Canvas is disconnected")}),R=e?i.find(U=>U.identity.id===p):void 0,$=i.find(U=>U.identity.id===c.selectedId)?.state,P=Se(()=>zh($),[$]);O(()=>{if(!e||!n)return;L.current.token||(L.current={clientId:crypto.randomUUID()});let U=!1,fe,ge=-1,K=-1,Te=new AbortController,Me="",Ee=!1,Ge=new Bu,X=new Map,Oe=je=>{U||typeof je.presenceVersion!="number"||je.presenceVersion<=K||!Array.isArray(je.presence)||(K=je.presenceVersion,s(je.presence))},ve=async(je,$e={},ce=AbortSignal.any([Te.signal,AbortSignal.timeout(5e4)]))=>{let rt=L.current.token,at=await Yt(`${t}/peers/${je}`,{method:"POST",headers:{"Content-Type":"application/json","X-Popmelt-Project-Id":n},body:JSON.stringify({...L.current,...$e}),signal:ce}),Be=await at.json();if(je!=="host"&&rt!==L.current.token)throw new Error("Canvas session changed during request");if(!at.ok||Be.error)throw new Error(Be.error??`Peer request failed (${at.status})`);return Be};F.current=ve;async function Fe(je){if(je.url&&je.url!==sr())throw new Error("Canvas navigated before the operation could run");if(je.action.type!=="send"){let kt=pm(je.action);return kt?(kl(kt.selector),yy(async(lt,Ke)=>{let jt=await ve("activity",{id:je.id,phase:lt},Ke);return Oe(jt),jt.accepted===!0},()=>Ge.execute(je,Q.current.human),Te.signal)):Ge.execute(je,Q.current.human)}if(!je.grant)throw new Error("No host-approved Send grant");let $e=structuredClone(je.peer);if($e.url!==sr())throw new Error("Return to the proposal\u2019s page before sending");let ce=$e.state;if(!ce||!ce.annotations.length&&!ce.styleModifications.length)throw new Error("There are no peer changes to send");await Ge.render($e,Q.current.human);let rt={...Ge.sources};if(!je.observedSources||Object.keys(rt).some(kt=>je.observedSources[kt]!==rt[kt]))throw new Error("Source changed since the last preview. Take another look, then send again.");let at=Ge.surface.frame.contentDocument;if(!at)throw new Error("Peer preview is unavailable");let[Be]=await Wi(at.body,null,[],{viewportOnly:!0});if(!Be)throw new Error("Could not capture the peer preview");if(await Ge.render($e,Q.current.human),!Wu(rt,Ge.sources))throw new Error("Source changed while preparing Send. Take another look, then send again.");await ve("source",{grant:je.grant,sources:rt});let Ie=pc(ce.annotations,ce.styleModifications,void 0,void 0,ce.textModifications),{provider:_e,model:_t,agentSettings:wt}=Q.current.settings,Pt=await bu(Be,JSON.stringify(Ie),t,$e.color,_e,_t,void 0,void 0,wt,void 0,void 0,void 0,je.grant);return $e.state={...structuredClone(pl),isAnnotating:!0,activeColor:$e.color},$e.revision++,$e.basis={},delete $e.pendingRevision,$e.lastJob={jobId:Pt.jobId,threadId:Pt.threadId},{peer:$e,evidence:{status:"submitted",...Pt}}}async function qe(){try{if(!L.current.token||Me!==sr()){let $e=await ve("host",{url:sr()});if(U)return;L.current.token=String($e.token),Me=sr()}let je=await ve("poll",{version:ge,presenceVersion:K});if(U)return;Oe(je),je.peers&&(a(je.peers),Ee=je.peers.length>0,ge=Number(je.version));for(let $e of je.requests){let ce=X.get($e.id);if(!ce){try{ce=await Fe($e)}catch(rt){ce={error:rt instanceof Error?rt.message:String(rt)}}X.set($e.id,ce),X.size>100&&X.delete(X.keys().next().value)}await ve("response",{id:$e.id,result:ce})}}catch(je){!U&&je instanceof Error&&je.message.includes("Host capability")&&(L.current.token=void 0,ge=-1,K=-1,U||s([]))}finally{U||(fe=setTimeout(()=>{qe()},document.hidden||!Ee?2e3:600))}}return qe(),()=>{U=!0,Te.abort(),clearTimeout(fe),Ge.dispose(),a([]),s([]),F.current=async()=>{throw new Error("Canvas is disconnected")}}},[e,t,n]),O(()=>{if(x(void 0),D([]),H.current=null,!R||!r.isAnnotating||!I.current){ie(null);return}let U=new Bu;I.current.append(U.container),ie(null),U.container.removeAttribute("aria-hidden"),U.container.style.cssText="position:absolute;inset:0;pointer-events:none;";let fe=!1;R.url&&R.url!==sr()&&x("This draft belongs to another page. Return to it to preview.");let ge=!1,K=!1,Te=()=>{if(!fe){if(ge){K=!0;return}ge=!0,U.render(R,Q.current.human).then(()=>{fe||(x(void 0),D(U.changed),H.current={id:R.identity.id,revision:R.revision,values:{...U.sources}},ie(U.surface.frame),w(R.identity.id,R.revision))}).catch(X=>{fe||(H.current=null,ie(null),x(X.message))}).finally(()=>{ge=!1,K&&(K=!1,Te())})}},Me=!R.url||R.url===sr();Me&&Te();let Ee=Me?by(ja(R.state),Te):()=>{},Ge=()=>U.surface.frame.contentWindow?.scrollTo(scrollX,scrollY);return window.addEventListener("scroll",Ge,{passive:!0}),()=>{fe=!0,Ee(),window.removeEventListener("scroll",Ge),U.dispose()}},[R,r.isAnnotating,w]);let A=async U=>{try{return await U(),m(void 0),!0}catch(fe){return m(fe instanceof Error?fe.message:String(fe)),!1}},ne=e&&i.length?{peers:[{identity:{id:"host",name:"You",kind:"human",relationship:"host"},permission:"direct",color:r.activeColor,stagedCount:Y},...i.map(U=>({...U,stagedCount:Z.get(U.identity.id)??0,unseenActivity:z(U.identity.id,U.revision)}))],viewedPeerId:p,selectedPeerId:c.selectedId,onPeek:c.peek,onPeekEnd:c.leave,onPreview:U=>{c.select(U),m(void 0)},onPermissionChange:(U,fe)=>A(()=>F.current("permission",{peerId:U,permission:fe}))}:null,re=R?.pendingRevision!==void 0?()=>A(()=>{let U=H.current;if(!U||U.id!==p||U.revision!==R.revision)throw new Error("Wait for this draft\u2019s preview before sending.");return F.current("approve",{peerId:p,revision:R.pendingRevision,sources:U.values})}):void 0,ee=!!(R&&r.isAnnotating),oe=e&&(h??(ee?g:void 0));return O(()=>{if(!ee)return;let U=fe=>{fe.composedPath().some(ge=>ge instanceof Element&&ge.hasAttribute("data-devtools"))||(fe.metaKey||fe.ctrlKey)&&fe.key==="Enter"||(fe.key.length===1||["Backspace","Delete","Enter"].includes(fe.key))&&(fe.preventDefault(),fe.stopPropagation())};return window.addEventListener("keydown",U,!0),()=>window.removeEventListener("keydown",U,!0)},[ee]),{toolbar:ne,selectedId:c.selectedId,threadAnnotationNumbers:P,activePreview:ee,isPeeking:u,viewed:R,approve:re,overlay:M(ct,{children:[ee&&f("div",{ref:I,"data-devtools":"peer-preview","data-peer-revision":R?.revision,"data-pending-revision":R?.pendingRevision,"data-popmelt-peer-surface":!0,style:{position:"fixed",inset:0,zIndex:1e4,background:"#111",pointerEvents:"auto"}}),d.map(({presence:U,engaged:fe})=>{if(u)return null;let ge=i.find(Te=>Te.identity.id===U.peerId);if(!ge||U.clientId!==L.current.clientId||U.url!==sr()||ee&&ge.identity.id!==p)return null;let K=null;try{K=ee?q?.contentDocument?.querySelector(U.selector)??null:kl(U.selector)}catch{}return f(Xc,{element:K,engaged:fe,label:`${ge.identity.name} is looking at this element`},`${ge.identity.id}:${U.operationId}`)}),!u&&ee&&R&&q?.contentDocument&&f($h,{peer:R,targetDocument:q.contentDocument,onApprove:re?()=>{re()}:void 0}),ee&&R&&p===c.selectedId&&f("div",{"data-devtools":"peer-plane-border","data-plane-owner":R.identity.id,"aria-hidden":"true",style:{position:"fixed",inset:0,border:`2px solid ${R.color}`,boxSizing:"border-box",pointerEvents:"none",zIndex:10002}}),ee&&R&&p===c.selectedId&&f(Dh,{name:R.identity.name,isOwnPlane:R.identity.id==="host",color:R.color,changed:S.length>0}),oe&&f("div",{"data-devtools":"peer-error",role:"status",style:{position:"fixed",bottom:100,right:24,maxWidth:360,padding:12,background:"#222",color:"#ddd",borderRadius:12,fontFamily:Fs,fontSize:12,lineHeight:1.4,zIndex:10002},children:oe})]})}}function wy(e,t,n,r,o,i,a){let[l,s]=j(),d=W({navigation:e,selectedId:t});O(()=>{if(!e||!n||l?.navigation===e)return;let c=e.read(),p=o.current,u=!1;if(!c.threadId||c.selectedId!==t){s({navigation:e});return}return i(c.threadId).then(h=>{if(!u){if(p===o.current&&e.read()===c)if(h>=200&&h<300)a(c.threadId);else if(h===403||h===404||h===410)e.rememberThread(t,null);else{s({navigation:e,unresolvedRevision:p});return}s({navigation:e})}}).catch(()=>{u||s({navigation:e,unresolvedRevision:p})}),()=>{u=!0}},[e,t,n,l,o,i,a]),O(()=>{let c=d.current.navigation!==e||d.current.selectedId!==t;d.current={navigation:e,selectedId:t},!(!e||l?.navigation!==e||c)&&(l.unresolvedRevision===o.current&&!r||e.rememberThread(t,r))},[e,t,r,l,o])}var Sy=hl(()=>import("./ParticipantRuntime-X2ZI2GJF.mjs")),Iy=hl(()=>import("./PreviewRuntime-QDA4OF67.mjs"));function ky({children:e,projectId:t,adapters:n,multiplayer:r=!1}){let[o,i]=j(!1);if(O(()=>{i(!0)},[]),!o)return null;let a=window.__POPMELT_PARTICIPANTS__;if(!r)return xu()?null:a?f("p",{role:"status","data-devtools":"participant-disabled",children:"Multiplayer is disabled. Enable the multiplayer option in your Popmelt integration to use this participant page."}):e;if(a)try{xg(a,t)}catch(l){return f("p",{role:"alert","data-devtools":"participant-error",children:l.message})}return xu()?a?f(ml,{fallback:null,children:f(Iy,{config:a,adapters:n})}):null:a?f(ml,{fallback:null,children:f(Sy,{config:a,children:Pg(e,{bridgeUrl:a.url,projectId:a.projectId})},a.projectId)}):e}function Ty(e,t,n,r){let o=W(e);o.current=e;let[i,a]=j([]),l=W(null),[s,d]=j(null),[c,p]=j(null),u=i.filter(x=>x.scope===e),h=x=>a(S=>S.filter(D=>D.id!==x)),m=(x,S)=>{let D=Symbol(x);p(null);let H=t(x).then(()=>!0,()=>(o.current===e&&(S(),p({scope:e,message:"Could not dismiss thread. Please try again."})),h(D),!1));a(w=>[...w.filter(z=>z.scope===e),{id:D,threadId:x,rollback:S,saved:H,scope:e,undoHead:r}])},g=async()=>{let x=u.at(-1);if(!(!x||l.current===e)){l.current=e,d(e),p(null);try{if(!await x.saved||o.current!==e||(await n(x.threadId),o.current!==e))return;x.rollback(),h(x.id)}catch{o.current===e&&p({scope:e,message:"Could not restore thread. Try Undo again."})}finally{l.current===e&&(l.current=null,d(null))}}};return{dismiss:m,undo:g,tryUndo:()=>{let x=u.at(-1);return!x||x.undoHead!==r?!1:(g(),!0)},busy:s===e,count:u.length,error:c?.scope===e?c.message:null}}function Ey({enabled:e,active:t,configuration:n=!0,adapters:r}){let[o,i]=j(!1),[a,l]=j(null),s=Se(()=>wg(),[]),{recognition:d,selector:c,root:p,observe:u,store:h,imageHasher:m,onError:g}=typeof n=="object"?n:{},x=r.some(w=>w.surfaceKind==="image"||w.id==="see:image"),S=e&&n!==!1&&!x,D=t||o,H=D?d:void 0;return O(()=>{e?t&&i(!0):i(!1)},[e,t]),O(()=>{if(!S)return;let w=Sg({recognition:H?{cacheKey:H.cacheKey,configurationKey:H.configurationKey,detect:z=>H.detect(z),reconcile:(...z)=>H.reconcile(...z)}:void 0,hydrateOnly:!D,selector:c,root:p,observe:u,store:h??s,imageHasher:m,onError:g});return l(w),()=>{l(null),w.destroy()}},[S,H,D,c,p,u,h,s,m,g]),Se(()=>S&&a?[a,...r]:r,[S,a,r])}function Ay({enabled:e,configuration:t=!0,adapters:n}){let[r,o]=j(null),i=Se(()=>Ig(),[]),{segmentation:a,tracking:l,selector:s,root:d,observe:c,store:p,onError:u}=typeof t=="object"?t:{},h=n.some(g=>g.surfaceKind==="video"||g.id==="see:video"),m=e&&t!==!1&&!h;return O(()=>{if(!m)return;let g=kg({tracking:l,segmentation:a,selector:s,root:d,observe:c,store:p??i,onError:u});return o(g),()=>{o(null),g.destroy()}},[m,l,a,s,d,c,p,i,u]),Se(()=>m&&r?[r,...n]:n,[m,r,n])}function qu(e,t){return JSON.stringify([e,t.adapter,t.key])}async function Uu(e,t,n,r){for(let o of t){if(!o.target)continue;let i=qu(n,o.target);if(!r.has(i))try{r.set(i,await e.captureFeedback(o.target))}catch{r.set(i,null)}}}function Cy(e,t,n){let r=new Map;for(let o of e.annotations){let i=t.find(l=>l.id===o.id),a=(i?.groupId?t.filter(l=>l.groupId===i.groupId):t.filter(l=>l.id===o.id)).flatMap(l=>n.get(l.id)??[]);a.length&&r.set(o.id,a)}return r}function My(e,t,n,r){for(let o of e.annotations){if(!o.target)continue;let i=n.get(qu(o.pathname||r,o.target));if(!i){o.subjectFeedback={warning:"Live object unavailable; the following object context is the draft-time snapshot, not a refreshed detection. No object crop is attached."};continue}if(o.elements=[i.elementInfo],o.subjectFeedback=i.warning?{warning:i.warning}:void 0,i.crop){let a=t.get(o.id)??[];o.subjectFeedback={...o.subjectFeedback,cropImageIndex:a.length},t.set(o.id,[...a,i.crop])}}}function Ry(e){let t=e?.requestItems?.flatMap(r=>r.kind==="annotation"&&r.text.trim()?[r.text.trim()]:[]);if(t?.length)return t.join("; ");let n=e?.requestItems?.flatMap(r=>r.kind==="changes"?[`${r.elementLabel} [${r.changes.join(", ")}]`]:[]);return n?.length?n.join("; "):e?.requestText?.trim()||void 0}function Ly(e,t){if(!e?.frames?.length)return[];let n=new Map;for(let r of e.steps){let o=r.visuals?.afterFrameId;o&&!n.has(o)&&n.set(o,r.action?.label?`After ${r.action.label}`:"Resulting state")}return e.frames.flatMap((r,o)=>{let i=t[r.imageIndex];return i?[{id:r.id,imageIndex:r.imageIndex,label:o===0?"Initial state":n.get(r.id)??"State",url:i}]:[]})}function Yu(e){let t=e.instruction?.trim();return t?e.attachments?.some(n=>n.name?.trim()===t)?null:t:null}function Py(e,t){let n=e?.tagName?.toLowerCase(),r=e?.id?`#${e.id}`:"",o=e?.className?`.${e.className.trim().split(/\s+/).slice(0,2).join(".")}`:"",i=n?`${n}${r}${o}`:t;return e?.reactComponent?`<${e.reactComponent}> ${i}`:i}function jy(e){let t=e.elements?.[0]?.reactComponent||e.elements?.[0]?.tagName||e.linkedSelector,n=e.type&&e.type!=="annotation"?`${e.type} annotation`:"Annotation";return t?`${n} on ${t}`:n}function zy(e){let t=e.annotations.map(o=>{let i=o.interactionEpisode?.steps.length??0;return{kind:"annotation",annotationId:o.id,pathname:o.pathname,text:Yu(o)??jy(o),...i>0?{interactionEpisodeStepCount:i}:{}}}),n=new Map,r=o=>{let i=`${o.pathname??""}:${o.durableSelector??o.selector}`,a=n.get(i);if(a){a.changes.push(o.text),o.annotationNumber!==void 0&&(a.annotationNumber===void 0||o.annotationNumber<a.annotationNumber)&&(a.annotationNumber=o.annotationNumber);return}let l={kind:"changes",elementKey:i,elementLabel:Py(o.element,o.selector),...o.annotationNumber!==void 0?{annotationNumber:o.annotationNumber}:{},pathname:o.pathname,changes:[o.text]};n.set(i,l),t.push(l)};for(let o of e.styleModifications??[])for(let i of o.changes)r({...o,text:`${i.property}: ${i.original||"unset"} \u2192 ${i.modified||"unset"}${i.token?` (${i.token})`:""}`});for(let o of e.textModifications??[])r({...o,text:`Text: ${o.original||"empty"} \u2192 ${o.modified||"empty"}`});for(let o of e.domModifications??[])r({...o,text:o.operation==="copy"?"Copied element":"Moved element"});return e.spacingTokenChanges?.length&&t.push({kind:"changes",elementKey:"spacing-tokens",elementLabel:"Spacing tokens",changes:e.spacingTokenChanges.map(o=>`${o.tokenName}: ${o.originalPx}px \u2192 ${o.newPx}px`)}),t}function $y(e){let t=e.annotations.flatMap(r=>{let o=Yu(r);return o?[{instruction:o,pathname:r.pathname}]:[]});if(t.length===0)return;if(new Set(t.map(r=>r.pathname).filter(Boolean)).size<=1)return t.map(r=>r.instruction).join(`
5
5
 
6
6
  `);let n=new Map;for(let r of t){let o=r.pathname||"(unknown)",i=n.get(o)??[];i.push(r.instruction),n.set(o,i)}return[...n.entries()].map(([r,o])=>`\`${r}\`
7
7
  ${o.map(i=>`- ${i}`).join(`
@@ -105,9 +105,6 @@ ${dg}
105
105
  --popmelt-selection-background: #626262;
106
106
  --popmelt-selection-color: #ffffff;
107
107
  }
108
- /* Host stylesheets are mirrored for previews, including page-wide selection
109
- colors. Keep chrome labels inert and give editable/thread text a Popmelt
110
- selection treatment instead of inheriting the page's highlight. */
111
108
  :host * {
112
109
  -webkit-user-select: none;
113
110
  user-select: none;
@@ -115,7 +112,6 @@ ${dg}
115
112
  :host [data-popmelt-theme="light"] {
116
113
  --popmelt-selection-background: #a3a3a3;
117
114
  --popmelt-selection-color: #171717;
118
- /* Keep the native scrollbar width, but soften its high-contrast light thumb. */
119
115
  scrollbar-color: rgba(0, 0, 0, 0.06) transparent;
120
116
  }
121
117
  :host [data-popmelt-theme="dark"],
@@ -131,12 +127,6 @@ ${dg}
131
127
  -webkit-user-select: text;
132
128
  user-select: text;
133
129
  }
134
- /* Direct reset for all Popmelt chrome elements.
135
- Beats broad selectors from mirrored host stylesheets (e.g. div, span, *).
136
- Inline styles on individual elements still win (higher specificity).
137
- color: inherit (not a fixed value) so children properly inherit inline
138
- colors set by parents \u2014 e.g. thread header sets color:#fff, child spans
139
- should get white, not this reset gray. */
140
130
  :host *:not([data-popmelt-panel]):not([data-popmelt-panel] *):not([data-popmelt-font="sans"]):not([data-popmelt-font="sans"] *) {
141
131
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
142
132
  font-size: 12px;
@@ -144,16 +134,11 @@ ${dg}
144
134
  line-height: 1.5;
145
135
  -webkit-font-smoothing: antialiased;
146
136
  }
147
- /* Thread typography has its own role-based type system. Let descendants
148
- inherit the nearest thread style so conversational UI can use Geist while
149
- explicitly monospaced headers, code, and tool payloads remain monospaced. */
150
137
  :host [data-devtools="thread-panel"]:not([data-popmelt-panel]) * {
151
138
  font-family: inherit;
152
139
  font-size: inherit;
153
140
  line-height: inherit;
154
141
  }
155
- /* Break font inheritance for component previews \u2014 let mirrored host
156
- page styles (Tailwind, globals) apply instead of Popmelt's monospace. */
157
142
  [data-popmelt-panel] {
158
143
  font: 16px / 1.5 system-ui, -apple-system, sans-serif;
159
144
  color: initial;
@@ -167,12 +152,12 @@ ${dg}
167
152
 
168
153
  `).trim()}function hw(e){return e.replace(/<resolution>[\s\S]*?(?:<\/resolution>|$)/g,"")}function mw(e){return e.replace(/\b([A-Za-z]{2,}[.!?])(?=[A-Z][a-z])/g,`$1
169
154
 
170
- `)}function Od(e){return mw(hw(fw(e)).replace(/<question>[\s\S]*?<\/question>/g,"").replace(/<plan>[\s\S]*?<\/plan>/g,"").replace(/<review>[\s\S]*?<\/review>/g,"").replace(/<novel>[\s\S]*?<\/novel>/g,"").replace(/<eval_proposals>[\s\S]*?<\/eval_proposals>/g,"").replace(/<eval_run_result>[\s\S]*?<\/eval_run_result>/g,"").replace(/<evals>[\s\S]*?<\/evals>/g,"").replace(/<memory-review>[\s\S]*?<\/memory-review>/g,"").replace(/<memory-review-card>[\s\S]*?<\/memory-review-card>/g,"").replace(/<memory-[\s\S]*$/g,"").replace(/<imprint>[\s\S]*?<\/imprint>/g,"").replace(/<imprint>[\s\S]*$/g,"").trim())}function yf(e){return e.replace(/\s+/g," ").trim()}function gw(e,t){let n=yf(Od(t)),r=yf(e.filter(o=>o.kind==="text"&&typeof o.text=="string").map(o=>Od(o.text)).join(" "));return n===r}function yw(e){return e.kind==="tool_group"?!0:e.kind!=="text"||!("text"in e)?!1:typeof e.text=="string"&&e.text.trim().length===0}function vf(e){let t=new Set,n=null;for(let r=0;r<e.length;r++){let o=e[r];if(o.kind==="orientation"){n=r;continue}yw(o)||n!==null&&(t.add(n),n=null)}return n!==null&&t.add(n),e.filter((r,o)=>r.kind!=="orientation"||t.has(o))}var vw="popmelt-thread-composer-draft",Jl={text:"",selectionStart:0,selectionEnd:0,selectionDirection:"none"};function bf(){if(!(typeof window>"u"))return window.localStorage}function xf(e){return`${vw}:${e}`}function bw(e,t=bf()){if(!t)return Jl;try{let n=t.getItem(xf(e));if(!n)return Jl;if(!n.startsWith("{"))return{text:n,selectionStart:n.length,selectionEnd:n.length,selectionDirection:"none"};let r=JSON.parse(n);if(typeof r.text!="string")return Jl;let o=Math.max(0,Math.min(r.text.length,Number(r.selectionStart)||0)),i=Math.max(o,Math.min(r.text.length,Number(r.selectionEnd)||0)),a=r.selectionDirection==="forward"||r.selectionDirection==="backward"?r.selectionDirection:"none";return{text:r.text,selectionStart:o,selectionEnd:i,selectionDirection:a}}catch{return Jl}}function Fd(e,t,n=bf(),r={selectionStart:t.length,selectionEnd:t.length,selectionDirection:"none"}){if(n)try{let o=xf(e);t.length>0?n.setItem(o,JSON.stringify({text:t,selectionStart:r.selectionStart,selectionEnd:r.selectionEnd,selectionDirection:r.selectionDirection})):n.removeItem(o)}catch{}}function xw(e,t,n){return n?.activePreview?n.annotationNumber:e??t}function ww(e,t){return e?.trim()?e.trim():Ry(t.find(n=>n.role==="human"))}function Sw(e,t){if(!t)return e;let n=e.findIndex(r=>r.role==="human"&&r.execution==="none"&&r.jobId===`suggestion-${t}`);return n<0?e:e.slice(n+1).some(r=>r.role==="human"&&r.execution!=="none"&&!r.replyToQuestion&&!!(r.screenshotUrl||Object.values(r.screenshotUrls??{}).some(Boolean))&&!!(r.requestText?.trim()||r.requestItems?.length||r.feedbackSummary?.trim()))?e.filter((r,o)=>o!==n):e}var _d=280,ql=e=>`${e.jobId}:${e.role}:${e.timestamp}`;function Iw(e,t,n,r){let o=`${n}:${t??""}`,i=Se(()=>Sw(e,t),[e,t]),a=e.find(u=>u.role==="human"&&u.execution==="none"&&u.jobId===`suggestion-${t}`),l=i.length<e.length,s=Se(()=>{if(!a||l)return i;let u=e.indexOf(a);return e.filter((h,m)=>m<=u||h.role==="assistant"||h.execution==="none"||!!h.replyToQuestion)},[e,a,l,i]),[d,c]=j({scope:o,phase:"idle",seenKeys:[]});if(d.scope!==o)c({scope:o,phase:"idle",seenKeys:[]});else if(d.phase==="idle"){if(l)c({...d,phase:d.seedKey?"preparing":"done"});else if(a){let u=s.map(ql);u.join("|")!==d.seenKeys.join("|")&&c({...d,seenKeys:u,seedKey:ql(a)})}}It(()=>{if(d.phase!=="preparing")return;let u=Array.from(r.current?.querySelectorAll('[data-suggestion-handoff="incoming"] img')??[]),h=new Set(u.filter(S=>!S.getAttribute("src")||!S.complete)),m=()=>c(S=>({...S,phase:window.matchMedia?.("(prefers-reduced-motion: reduce)").matches?"done":"animating"})),g=S=>{h.delete(S.target),h.size||m()};h.forEach(S=>{S.addEventListener("load",g),S.addEventListener("error",g)});let x=window.setTimeout(m,1500);return h.size||m(),()=>{window.clearTimeout(x),u.forEach(S=>{S.removeEventListener("load",g),S.removeEventListener("error",g)})}},[r,d.phase,o]),It(()=>{if(d.phase!=="animating")return;let u=window.setTimeout(()=>c(h=>({...h,phase:"done"})),_d);return()=>window.clearTimeout(u)},[d.phase,o]);let p=d.phase==="preparing"||d.phase==="animating";return{messages:p?e:s,replacementReady:l,phase:d.phase,motion:u=>{if(!p)return;let h=ql(u);if(h===d.seedKey)return"outgoing";if(!d.seenKeys.includes(h))return"incoming"}}}function kw(e){return e==="Bash"?"terminal":e==="Edit"||e==="Write"?"pencil":e==="ImageGen"?"image":"tool"}function Tw(e){let t=new Map;for(let n of e){let r=kw(n.tool),o=t.get(r)??{kind:r,count:0,groups:[]};o.count+=n.items.length,o.groups.push(n),t.set(r,o)}return[...t.values()]}function Ew(e,t,n){return e&&t!==n}function Aw(e){let t=new Set;for(let n of e){if(n.type!=="image_generation")continue;let r=n.data.itemId;typeof r=="string"&&(n.data.phase==="started"&&t.add(r),n.data.phase==="completed"&&t.delete(r))}return t.size>0}var ln=Fs,Cw=350,Mw=200,Rw=120,Jo=14,Lw=hl(()=>import("./QueuedReplies-ZYUDSTS2.mjs").then(e=>({default:e.QueuedReplies}))),Pw=hl(()=>import("./ThreadErrorCard-5ADUBZKJ.mjs")),wf=360,jw=0,zw=!1,$w=8,Dw="devtools-thread-panel-position",Hw=wf+2*jw;function qo(){let e=window.visualViewport;return{width:e?.width??window.innerWidth,height:e?.height??window.innerHeight}}function Wa(e=qo().width){let t=gi(e);return Math.max(t,e-Mc(e)-t)}function Wd(e="right"){let{width:t}=qo(),n=gi(t);return{top:n,left:e==="left"?n:Wa(t)}}function Sf(e,t,n){let{width:r,height:o}=qo(),i=gi(r),a=n?.getBoundingClientRect(),l=0,s=o-i-l;return a&&t+Hw>a.left&&(s=a.top-$w-l),Math.max(200,s-Math.max(0,e))}var Nw={width:wf,backgroundColor:"var(--popmelt-thread-surface)",backgroundClip:"padding-box",borderWidth:1,borderStyle:"solid",borderColor:"var(--popmelt-thread-border)",boxSizing:"border-box",display:"flex",flexDirection:"column",overflow:"visible",padding:4,borderRadius:"16px 16px 20px 20px",backdropFilter:"blur(59.5px)",fontFamily:ln,fontSize:14,color:"var(--popmelt-thread-primary)",pointerEvents:"auto"},If="ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",Ow={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"6px 12px",margin:0,fontWeight:600,fontSize:12,fontFamily:If,lineHeight:1.2,overflow:"hidden",position:"absolute",top:4,left:4,right:4,borderRadius:10,zIndex:2},Fw={flex:1,overflowY:"auto",padding:"32px 12px 112px",display:"flex",flexDirection:"column",gap:32,scrollbarGutter:"stable"},_w={background:"var(--popmelt-thread-raised)",border:"1px solid var(--popmelt-thread-border)",borderRadius:16,display:"flex",flexDirection:"column",overflow:"hidden"},la={color:"var(--popmelt-thread-primary)",fontSize:14,letterSpacing:"0.14px",lineHeight:1.3,wordBreak:"break-word"},Bd=16,Ww={...la,background:"var(--popmelt-thread-control)",borderRadius:Bd,boxSizing:"border-box",color:"var(--popmelt-thread-muted-strong)",maxWidth:"100%",padding:12,width:"fit-content"};function Bw({name:e,text:t,style:n,queued:r}){let o=W(null);It(()=>{let a=o.current;if(!a||r)return;let l=()=>{a.style.width="fit-content";let p=a.ownerDocument.createRange();p.selectNodeContents(a);let u=a.getBoundingClientRect(),h=p.getBoundingClientRect();if(!h.width||!u.width)return;let m=getComputedStyle(a),g=parseFloat(m.width)/u.width,x=Math.ceil((h.right-u.left)*g+parseFloat(m.paddingRight));x<parseFloat(m.width)&&(a.style.width=x+"px")};l();let s=a.closest('[data-devtools="thread-panel-messages"]');if(!s)return;let d=-1,c=new ResizeObserver(([p])=>{p&&p.contentRect.width!==d&&(d=p.contentRect.width,l())});return c.observe(s),()=>c.disconnect()},[t,r]);let i=e.toLowerCase();return M("div",{role:"group","aria-label":`Note from ${e}, assistant`,style:{display:"flex",alignItems:"flex-end",gap:6,minWidth:0},children:[f("span",{title:e,"aria-hidden":"true",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:22,height:22,flexShrink:0,borderRadius:"50%",background:"var(--popmelt-thread-control)",color:"var(--popmelt-thread-secondary)",fontSize:12},children:i==="codex"||i==="claude"?f(vs,{provider:i,size:14}):e.slice(0,1).toUpperCase()}),f("div",{ref:o,title:r?t:void 0,style:{...n,minWidth:0,fontFamily:If,fontSize:r?12:13},children:!r&&t.includes(`
155
+ `)}function Od(e){return mw(hw(fw(e)).replace(/<question>[\s\S]*?<\/question>/g,"").replace(/<plan>[\s\S]*?<\/plan>/g,"").replace(/<review>[\s\S]*?<\/review>/g,"").replace(/<novel>[\s\S]*?<\/novel>/g,"").replace(/<eval_proposals>[\s\S]*?<\/eval_proposals>/g,"").replace(/<eval_run_result>[\s\S]*?<\/eval_run_result>/g,"").replace(/<evals>[\s\S]*?<\/evals>/g,"").replace(/<memory-review>[\s\S]*?<\/memory-review>/g,"").replace(/<memory-review-card>[\s\S]*?<\/memory-review-card>/g,"").replace(/<memory-[\s\S]*$/g,"").replace(/<imprint>[\s\S]*?<\/imprint>/g,"").replace(/<imprint>[\s\S]*$/g,"").trim())}function yf(e){return e.replace(/\s+/g," ").trim()}function gw(e,t){let n=yf(Od(t)),r=yf(e.filter(o=>o.kind==="text"&&typeof o.text=="string").map(o=>Od(o.text)).join(" "));return n===r}function yw(e){return e.kind==="tool_group"?!0:e.kind!=="text"||!("text"in e)?!1:typeof e.text=="string"&&e.text.trim().length===0}function vf(e){let t=new Set,n=null;for(let r=0;r<e.length;r++){let o=e[r];if(o.kind==="orientation"){n=r;continue}yw(o)||n!==null&&(t.add(n),n=null)}return n!==null&&t.add(n),e.filter((r,o)=>r.kind!=="orientation"||t.has(o))}var vw="popmelt-thread-composer-draft",Jl={text:"",selectionStart:0,selectionEnd:0,selectionDirection:"none"};function bf(){if(!(typeof window>"u"))return window.localStorage}function xf(e){return`${vw}:${e}`}function bw(e,t=bf()){if(!t)return Jl;try{let n=t.getItem(xf(e));if(!n)return Jl;if(!n.startsWith("{"))return{text:n,selectionStart:n.length,selectionEnd:n.length,selectionDirection:"none"};let r=JSON.parse(n);if(typeof r.text!="string")return Jl;let o=Math.max(0,Math.min(r.text.length,Number(r.selectionStart)||0)),i=Math.max(o,Math.min(r.text.length,Number(r.selectionEnd)||0)),a=r.selectionDirection==="forward"||r.selectionDirection==="backward"?r.selectionDirection:"none";return{text:r.text,selectionStart:o,selectionEnd:i,selectionDirection:a}}catch{return Jl}}function Fd(e,t,n=bf(),r={selectionStart:t.length,selectionEnd:t.length,selectionDirection:"none"}){if(n)try{let o=xf(e);t.length>0?n.setItem(o,JSON.stringify({text:t,selectionStart:r.selectionStart,selectionEnd:r.selectionEnd,selectionDirection:r.selectionDirection})):n.removeItem(o)}catch{}}function xw(e,t,n){return n?.activePreview?n.annotationNumber:e??t}function ww(e,t){return e?.trim()?e.trim():Ry(t.find(n=>n.role==="human"))}function Sw(e,t){if(!t)return e;let n=e.findIndex(r=>r.role==="human"&&r.execution==="none"&&r.jobId===`suggestion-${t}`);return n<0?e:e.slice(n+1).some(r=>r.role==="human"&&r.execution!=="none"&&!r.replyToQuestion&&!!(r.screenshotUrl||Object.values(r.screenshotUrls??{}).some(Boolean))&&!!(r.requestText?.trim()||r.requestItems?.length||r.feedbackSummary?.trim()))?e.filter((r,o)=>o!==n):e}var _d=280,ql=e=>`${e.jobId}:${e.role}:${e.timestamp}`;function Iw(e,t,n,r){let o=`${n}:${t??""}`,i=Se(()=>Sw(e,t),[e,t]),a=e.find(u=>u.role==="human"&&u.execution==="none"&&u.jobId===`suggestion-${t}`),l=i.length<e.length,s=Se(()=>{if(!a||l)return i;let u=e.indexOf(a);return e.filter((h,m)=>m<=u||h.role==="assistant"||h.execution==="none"||!!h.replyToQuestion)},[e,a,l,i]),[d,c]=j({scope:o,phase:"idle",seenKeys:[]});if(d.scope!==o)c({scope:o,phase:"idle",seenKeys:[]});else if(d.phase==="idle"){if(l)c({...d,phase:d.seedKey?"preparing":"done"});else if(a){let u=s.map(ql);u.join("|")!==d.seenKeys.join("|")&&c({...d,seenKeys:u,seedKey:ql(a)})}}It(()=>{if(d.phase!=="preparing")return;let u=Array.from(r.current?.querySelectorAll('[data-suggestion-handoff="incoming"] img')??[]),h=new Set(u.filter(S=>!S.getAttribute("src")||!S.complete)),m=()=>c(S=>({...S,phase:window.matchMedia?.("(prefers-reduced-motion: reduce)").matches?"done":"animating"})),g=S=>{h.delete(S.target),h.size||m()};h.forEach(S=>{S.addEventListener("load",g),S.addEventListener("error",g)});let x=window.setTimeout(m,1500);return h.size||m(),()=>{window.clearTimeout(x),u.forEach(S=>{S.removeEventListener("load",g),S.removeEventListener("error",g)})}},[r,d.phase,o]),It(()=>{if(d.phase!=="animating")return;let u=window.setTimeout(()=>c(h=>({...h,phase:"done"})),_d);return()=>window.clearTimeout(u)},[d.phase,o]);let p=d.phase==="preparing"||d.phase==="animating";return{messages:p?e:s,replacementReady:l,phase:d.phase,motion:u=>{if(!p)return;let h=ql(u);if(h===d.seedKey)return"outgoing";if(!d.seenKeys.includes(h))return"incoming"}}}function kw(e){return e==="Bash"?"terminal":e==="Edit"||e==="Write"?"pencil":e==="ImageGen"?"image":"tool"}function Tw(e){let t=new Map;for(let n of e){let r=kw(n.tool),o=t.get(r)??{kind:r,count:0,groups:[]};o.count+=n.items.length,o.groups.push(n),t.set(r,o)}return[...t.values()]}function Ew(e,t,n){return e&&t!==n}function Aw(e){let t=new Set;for(let n of e){if(n.type!=="image_generation")continue;let r=n.data.itemId;typeof r=="string"&&(n.data.phase==="started"&&t.add(r),n.data.phase==="completed"&&t.delete(r))}return t.size>0}var ln=Fs,Cw=350,Mw=200,Rw=120,Jo=14,Lw=hl(()=>import("./QueuedReplies-ZYUDSTS2.mjs").then(e=>({default:e.QueuedReplies}))),Pw=hl(()=>import("./ThreadErrorCard-6QN2ECBT.mjs")),wf=360,jw=0,zw=!1,$w=8,Dw="devtools-thread-panel-position",Hw=wf+2*jw;function qo(){let e=window.visualViewport;return{width:e?.width??window.innerWidth,height:e?.height??window.innerHeight}}function Wa(e=qo().width){let t=gi(e);return Math.max(t,e-Mc(e)-t)}function Wd(e="right"){let{width:t}=qo(),n=gi(t);return{top:n,left:e==="left"?n:Wa(t)}}function Sf(e,t,n){let{width:r,height:o}=qo(),i=gi(r),a=n?.getBoundingClientRect(),l=0,s=o-i-l;return a&&t+Hw>a.left&&(s=a.top-$w-l),Math.max(200,s-Math.max(0,e))}var Nw={width:wf,backgroundColor:"var(--popmelt-thread-surface)",backgroundClip:"padding-box",borderWidth:1,borderStyle:"solid",borderColor:"var(--popmelt-thread-border)",boxSizing:"border-box",display:"flex",flexDirection:"column",overflow:"visible",padding:4,borderRadius:"16px 16px 20px 20px",backdropFilter:"blur(59.5px)",fontFamily:ln,fontSize:14,color:"var(--popmelt-thread-primary)",pointerEvents:"auto"},If="ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",Ow={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"6px 12px",margin:0,fontWeight:600,fontSize:12,fontFamily:If,lineHeight:1.2,overflow:"hidden",position:"absolute",top:4,left:4,right:4,borderRadius:10,zIndex:2},Fw={flex:1,overflowY:"auto",padding:"32px 12px 112px",display:"flex",flexDirection:"column",gap:32,scrollbarGutter:"stable"},_w={background:"var(--popmelt-thread-raised)",border:"1px solid var(--popmelt-thread-border)",borderRadius:16,display:"flex",flexDirection:"column",overflow:"hidden"},la={color:"var(--popmelt-thread-primary)",fontSize:14,letterSpacing:"0.14px",lineHeight:1.3,wordBreak:"break-word"},Bd=16,Ww={...la,background:"var(--popmelt-thread-control)",borderRadius:Bd,boxSizing:"border-box",color:"var(--popmelt-thread-muted-strong)",maxWidth:"100%",padding:12,width:"fit-content"};function Bw({name:e,text:t,style:n,queued:r}){let o=W(null);It(()=>{let a=o.current;if(!a||r)return;let l=()=>{a.style.width="fit-content";let p=a.ownerDocument.createRange();p.selectNodeContents(a);let u=a.getBoundingClientRect(),h=p.getBoundingClientRect();if(!h.width||!u.width)return;let m=getComputedStyle(a),g=parseFloat(m.width)/u.width,x=Math.ceil((h.right-u.left)*g+parseFloat(m.paddingRight));x<parseFloat(m.width)&&(a.style.width=x+"px")};l();let s=a.closest('[data-devtools="thread-panel-messages"]');if(!s)return;let d=-1,c=new ResizeObserver(([p])=>{p&&p.contentRect.width!==d&&(d=p.contentRect.width,l())});return c.observe(s),()=>c.disconnect()},[t,r]);let i=e.toLowerCase();return M("div",{role:"group","aria-label":`Note from ${e}, assistant`,style:{display:"flex",alignItems:"flex-end",gap:6,minWidth:0},children:[f("span",{title:e,"aria-hidden":"true",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:22,height:22,flexShrink:0,borderRadius:"50%",background:"var(--popmelt-thread-control)",color:"var(--popmelt-thread-secondary)",fontSize:12},children:i==="codex"||i==="claude"?f(vs,{provider:i,size:14}):e.slice(0,1).toUpperCase()}),f("div",{ref:o,title:r?t:void 0,style:{...n,minWidth:0,fontFamily:If,fontSize:r?12:13},children:!r&&t.includes(`
171
156
  `)?cr(t):ki(t)})]})}function Ba(e){return Od(e)}function Jw({patterns:e}){let[t,n]=j(!1);return M("div",{style:{marginTop:2},children:[M("button",{type:"button","aria-expanded":t,onClick:()=>n(r=>!r),style:{alignItems:"center",background:"transparent",border:0,color:"var(--popmelt-thread-secondary)",cursor:"pointer",display:"inline-flex",fontFamily:ln,fontSize:12,gap:2,lineHeight:1,padding:0,textAlign:"left"},children:[M("span",{children:["Model details \xB7 ",e.length]}),f(Vi,{"aria-hidden":"true",color:"var(--popmelt-thread-muted)",size:14,strokeWidth:1.5,style:{transform:t?"rotate(180deg)":"none",transition:"transform 120ms ease"}})]}),t&&f("div",{style:{display:"flex",flexDirection:"column",gap:4,marginTop:8},children:e.map((r,o)=>M("div",{style:{background:"var(--popmelt-thread-soft)",border:"1px solid var(--popmelt-thread-border)",borderRadius:24,display:"flex",flexDirection:"column",gap:12,padding:16},children:[M("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[M("div",{style:{alignItems:"center",display:"flex",gap:8},children:[f(gl,{"aria-hidden":"true",color:"#e51a1a",size:16,strokeWidth:1.5,style:{flexShrink:0}}),f("strong",{style:{color:"var(--popmelt-thread-primary)",fontSize:14,fontWeight:500,letterSpacing:"0.14px",lineHeight:1.3},children:r.element})]}),f("div",{style:{padding:"0 7px"},children:f("div",{style:{alignItems:"center",borderLeft:"1px solid var(--popmelt-thread-border)",color:"var(--popmelt-thread-muted-strong)",display:"flex",fontSize:14,letterSpacing:"0.14px",lineHeight:1.3,padding:"6px 16px 8px"},children:r.decision})})]}),f("div",{style:{color:"var(--popmelt-thread-muted)",fontSize:12,letterSpacing:"0.12px",lineHeight:1.3},children:r.reason})]},`${r.category}:${r.element}:${o}`))})]})}function qw({memoryReview:e}){let[t,n]=j(!1),r=(e.acceptedTruth?.decisions.length??0)+e.packets.length;return M("div",{children:[M("button",{type:"button","aria-expanded":t,onClick:()=>n(o=>!o),style:{alignItems:"center",background:"transparent",border:0,color:"var(--popmelt-thread-muted-strong)",cursor:"pointer",display:"inline-flex",fontFamily:ln,fontSize:12,gap:4,padding:0,textAlign:"left"},children:[M("span",{children:["Decision history \xB7 ",r]}),f(Us,{"aria-hidden":"true",size:12,strokeWidth:1.5,style:{transform:t?"rotate(90deg)":"none",transition:"transform 120ms ease"}})]}),t&&M("div",{style:{borderLeft:"2px solid var(--popmelt-thread-border)",color:"var(--popmelt-thread-secondary)",display:"flex",flexDirection:"column",fontSize:12,gap:10,lineHeight:1.45,marginTop:8,padding:"2px 0 2px 12px"},children:[e.acceptedTruth?.decisions.map(o=>M("div",{children:[f("div",{children:o.claim}),M("div",{style:{color:o.effectiveState==="conflicted"?"#b45309":"var(--popmelt-thread-muted)",fontSize:11,marginTop:2},children:[o.kind," \xB7 ",o.effectiveState," \xB7"," ",o.implementation," \xB7 ",o.verification,o.freshness.length?` \xB7 review: ${o.freshness.join(", ")}`:""]})]},o.id)),e.acceptedTruth?.conflicts.map(o=>M("div",{style:{color:"#92400e"},children:["Conflict: ",o.unresolvedQuestion]},o.id)),e.packets.map(o=>M("div",{children:[f("div",{children:o.claim}),M("div",{style:{color:"var(--popmelt-thread-muted)",fontSize:11,marginTop:2},children:[o.presentation==="surface_before_action"?"Confirm before applying":"Advisory",o.evidenceCount>0?` \xB7 ${o.evidenceCount} evidence reference${o.evidenceCount===1?"":"s"}`:""]})]},o.packetId)),(e.truncated||e.acceptedTruth?.truncated)&&f("div",{style:{color:"var(--popmelt-thread-muted)",fontSize:11},children:"More relevant history is available."})]})]})}function Ja(e){let t=new Date(e),n=new Intl.DateTimeFormat(void 0,{hour:"numeric",minute:"2-digit",hour12:!0}).formatToParts(t),r=n.find(u=>u.type==="hour")?.value??"",o=String(Number.parseInt(r,10)||0),i=n.find(u=>u.type==="minute")?.value??"00",a=(n.find(u=>u.type==="dayPeriod")?.value??"").toUpperCase(),l=`${o}:${i}${a}`,s=`${o}:${i}${a?` ${a}`:""}`,d=new Date;if(t.getFullYear()===d.getFullYear()&&t.getMonth()===d.getMonth()&&t.getDate()===d.getDate())return l;let c=Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()),p=Date.UTC(d.getFullYear(),d.getMonth(),d.getDate());return Math.floor((p-c)/864e5)>=7?`${new Intl.DateTimeFormat(void 0,{month:"numeric",day:"numeric",year:"2-digit"}).format(t)}, ${s}`:`${new Intl.DateTimeFormat(void 0,{weekday:"long"}).format(t)}, ${l}`}var Uw=250;function Yw({color:e}){let[t,n]=j(0);return O(()=>{let r=setInterval(()=>n(o=>(o+1)%2),Uw);return()=>clearInterval(r)},[]),M("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[f("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:e,style:{verticalAlign:"middle",flexShrink:0,opacity:.6},children:t===1?M(ct,{children:[f("circle",{cx:"7",cy:"7",r:"2"}),f("circle",{cx:"17",cy:"7",r:"2"}),f("circle",{cx:"7",cy:"17",r:"2"}),f("circle",{cx:"17",cy:"17",r:"2"})]}):M(ct,{children:[f("circle",{cx:"12",cy:"6",r:"2"}),f("circle",{cx:"6",cy:"12",r:"2"}),f("circle",{cx:"18",cy:"12",r:"2"}),f("circle",{cx:"12",cy:"18",r:"2"})]})}),f("span",{style:{fontSize:14,color:"var(--popmelt-thread-muted-strong)"},children:"Thinking"})]})}var kf=32,Jd=80,Xw=Bd/2,Kw={width:kf,height:kf,objectFit:"cover",cursor:"pointer",border:"1px solid var(--popmelt-thread-hairline)"},Ti={...Kw,borderRadius:Xw,height:Jd,width:Jd};function Vw(e){let t=/^`(\/[^`]*)`$/gm,n=[...e.matchAll(t)];if(n.length===0)return null;let r=[];for(let o=0;o<n.length;o++){let i=n[o],a=i[1],l=i.index+i[0].length,s=o+1<n.length?n[o+1].index:e.length,d=e.slice(l,s).trim();r.push({route:a,text:d})}return r}function Gw(e,t){let n=[];if(e.replyImageUrls)for(let r of e.replyImageUrls){let o=r.startsWith("blob:")||r.startsWith("http")?r:`${t}${r}`;n.push({url:o,label:"pasted image"})}return n}function uo(e,t){return/^(?:blob:|data:|https?:\/\/)/.test(t)?t:`${e}${t}`}function Qw(e,t){let n=[];if(e.imageUrls)for(let[,r]of Object.entries(e.imageUrls))for(let o of r)n.push({url:uo(t,o),label:"pasted image"});return n}function Zw({src:e,onClose:t}){return O(()=>{let n=r=>{r.key==="Escape"&&(r.stopPropagation(),t())};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[t]),f("div",{onClick:t,style:{position:"fixed",inset:0,zIndex:1e5,backgroundColor:"rgba(0,0,0,0.8)",display:"flex",alignItems:"center",justifyContent:"center",cursor:"zoom-out"},children:f(co,{src:e,alt:"Attached image preview",onClick:n=>n.stopPropagation(),style:{maxWidth:"90vw",maxHeight:"90vh",objectFit:"contain",cursor:"default",boxShadow:"0 4px 24px rgba(0,0,0,0.4)"}})})}function Tf({src:e,onLightbox:t}){return f("button",{type:"button","aria-label":"Open generated image",onClick:()=>t(e),style:{background:"transparent",border:0,cursor:"zoom-in",display:"block",maxWidth:"100%",padding:0},children:f(co,{src:e,alt:"Generated image preview",style:{borderRadius:8,display:"block",maxHeight:240,maxWidth:"100%",objectFit:"contain"}})})}function eS(e){let t=String(e.data.tool||""),n=e.data.file?String(e.data.file):null,r=n?n.split("/").pop()??n:null,o=e.data.content?String(e.data.content):null;switch(t){case"Read":return r?`Reading ${r}`:"Reading file";case"Edit":return r?`Editing ${r}`:"Editing file";case"Write":return r?`Writing ${r}`:"Writing file";case"Bash":return o?tS(o):"Running command";case"Glob":return"Searching files";case"Grep":return"Searching code";case"WebFetch":return"Fetching page";case"WebSearch":return"Searching web";case"ImageGen":return"Generating image";default:return o??(t?`Using ${t}`:null)}}function tS(e){let t=e.split(`
172
157
  `)[0].trim();return t.length<=60?t:t.slice(0,57)+"\u2026"}var nS={focus_set:"Focused",focus_shifted:"Focus shifted",evidence_updated:"Evidence updated",hypothesis_changed:"Working approach changed",assumption_abandoned:"Assumption dropped",uncertainty_identified:"Uncertainty identified",next_observation_selected:"Checking next"};function Ef({orientation:e}){let t=e.snapshot.update??e.snapshot.seeking??e.snapshot.nextObservation;return M("div",{style:{borderLeft:"2px solid var(--popmelt-thread-hairline)",color:"var(--popmelt-thread-secondary)",display:"flex",flexDirection:"column",fontSize:12,gap:2,lineHeight:1.35,paddingLeft:10},children:[M("span",{children:[f("span",{style:{color:"var(--popmelt-thread-primary)",fontWeight:550},children:nS[e.transition]})," \xB7 ",e.snapshot.focus]}),t&&t!==e.snapshot.focus&&f("span",{style:{opacity:.72},children:t})]})}function rS(e){let t=[];for(let n of e){if(n.type==="approval"){let r=n.data.approval,o=t.find(i=>i.kind==="approval"&&i.approval.id===r.id);o?.kind==="approval"?o.approval=r:t.push({kind:"approval",approval:r});continue}if(n.type==="image_ready"){let r=String(n.data.url||"");r.startsWith("/files/")&&t.push({kind:"generated_image",url:r});continue}if(n.type==="tool_use"){let r=eS(n),o=String(n.data.tool||""),i=n.data.file?String(n.data.file):null,a=n.data.content?String(n.data.content):null,l=i??a??void 0;if(r){let s=t[t.length-1];s&&s.kind==="tool_group"&&s.tool===o?s.items.push({label:r,detail:l,...i?{filePath:i}:{}}):t.push({kind:"tool_group",tool:o,items:[{label:r,detail:l,...i?{filePath:i}:{}}]})}if(a&&i){let s=i.includes(".")?`.${i.split(".").pop().toLowerCase()}`:"",d=i.includes(".claude/plans/");t.push({kind:"file_content",file:i,content:a,ext:s,isPlan:d})}}else if(n.type==="delta"){let r=String(n.data.text||"");if(!r)continue;let o=t[t.length-1];o&&o.kind==="text"?o.text+=r:t.push({kind:"text",text:r})}else if(n.type==="thinking"){let r=String(n.data.text||"");if(!r)continue;let o=t[t.length-1];o&&o.kind==="thinking"?o.text+=r:t.push({kind:"thinking",text:r})}else if(n.type==="status"){let r=String(n.data.text||"").trim();if(!r)continue;let o=t.findIndex(i=>i.kind==="status");o>=0&&t.splice(o,1),t.push({kind:"status",text:r})}else if(n.type==="orientation"){let r=n.data.orientation;r?.snapshot?.focus&&t.push({kind:"orientation",orientation:r})}}return t}function oS({file:e,content:t,ext:n,isPlan:r,onAccept:o}){let[i,a]=j(r),l=e.split("/").pop()??e;return M("div",{style:{margin:"4px 0 4px 12px",border:"1px solid var(--popmelt-thread-hairline)",backgroundColor:"var(--popmelt-thread-raised)",fontSize:11},children:[M("div",{onClick:()=>a(s=>!s),style:{display:"flex",alignItems:"center",gap:6,padding:"4px 8px",cursor:"pointer",userSelect:"none",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",color:"var(--popmelt-thread-primary)"},children:[f("span",{style:{fontSize:9,color:"var(--popmelt-thread-muted)"},children:i?"\u25BC":"\u25B6"}),f("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:l}),r&&f("span",{style:{fontSize:9,color:"#6366f1",fontFamily:"inherit"},children:"plan"})]}),i&&M(ct,{children:[f("div",{style:{maxHeight:300,overflowY:"auto",padding:"6px 10px",borderTop:"1px solid var(--popmelt-thread-soft-hairline)",lineHeight:1.5,wordBreak:"break-word"},children:n===".md"?cr(t):f("pre",{style:{margin:0,fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:11,whiteSpace:"pre-wrap"},children:t})}),r&&o&&f("div",{style:{padding:"4px 8px",borderTop:"1px solid var(--popmelt-thread-soft-hairline)",display:"flex",justifyContent:"flex-end"},children:f("button",{onClick:s=>{s.stopPropagation(),o()},style:{background:"#111",color:"#fff",border:"none",padding:"4px 12px",fontSize:11,cursor:"pointer",fontFamily:"inherit"},children:"Accept"})})]})]})}function iS(e){return/\b(?:bash|command|terminal)\b/i.test(e)?"Bash":/\b(?:edit|edited|editing)\b/i.test(e)?"Edit":/\b(?:write|wrote|writing)\b/i.test(e)?"Write":/\b(?:read|reading)\b/i.test(e)?"Read":/\b(?:grep|search(?:ed|ing)?)\b/i.test(e)?"Grep":"Tool"}function Af(e){let t=new Map;for(let n of e){let r=t.get(n.tool);r?r.items.push(...n.items):t.set(n.tool,{...n,items:[...n.items]})}return[...t.values()]}function Ul(e){let t=e.filePath??e.detail;return t&&(t.startsWith("/")||/^[A-Za-z]:[\\/]/.test(t))?t:void 0}function aS(e,t){return(e==="Read"||e==="Edit"||e==="Write")&&t.some(n=>Ul(n))?t.filter(n=>Ul(n)).filter((n,r,o)=>o.findIndex(i=>Ul(i)===Ul(n))===r):t}function Cf(e){return Tw(e.map(t=>({...t,items:aS(t.tool,t.items)})))}function Yl(e,t){if(!t||typeof window>"u")return;let n=e.closest('[data-devtools="thread-panel"]');if(!n)return;let r=n.getBoundingClientRect(),o=e.getBoundingClientRect(),i=n.querySelector("[data-popmelt-thread-header]"),a=t.querySelector("[data-popmelt-tool-receipt-scroll]");if(t.style.left=`${r.left+8-o.left}px`,t.style.width=`${Math.max(0,r.width-16)}px`,i){let l=i.getBoundingClientRect(),s=Math.max(0,Math.floor(o.top-l.bottom-16));t.style.setProperty("--popmelt-tool-receipt-max-height",`${s}px`)}else t.style.removeProperty("--popmelt-tool-receipt-max-height");t.dataset.ready="true",requestAnimationFrame(()=>{a&&qa(a)})}function qa(e){let t=e.closest("[data-popmelt-tool-receipt-tooltip]");if(!t)return;let n=e.scrollTop>1,r=e.scrollTop+e.clientHeight<e.scrollHeight-1;t.toggleAttribute("data-overflow-top",n),t.toggleAttribute("data-overflow-bottom",r)}function Mf({receipt:e,animateCount:t=!1}){let n=e.kind==="terminal"?$g:e.kind==="pencil"?Dg:e.kind==="image"?Hg:Ng,r=e.kind==="terminal"?"Terminal used":e.kind==="pencil"?"Files changed":e.kind==="image"?"Images generated":e.groups.length===1?`${e.groups[0].tool} used`:"Tools used",o=e.groups.map(d=>`${d.tool} (${d.items.length})`).join(", "),i=W(null),a=W(null),l=W(null),s=W(0);return O(()=>{let d=s.current;if(d===e.count)return;s.current=e.count;let c=i.current,p=a.current;if(!c)return;let u=typeof window<"u"&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;c.getAnimations().forEach(h=>h.cancel()),p?.getAnimations().forEach(h=>h.cancel()),!(u||!Ew(t,d,e.count))&&(c.animate([{color:"var(--popmelt-thread-muted)"},{color:"var(--popmelt-thread-primary)",offset:.18},{color:"var(--popmelt-thread-primary)",offset:.52},{color:"var(--popmelt-thread-muted)"}],{duration:720,easing:"ease-out"}),p&&p.animate([{opacity:0,transform:"translate(-50%, 4px) scale(0.72)"},{opacity:1,transform:"translate(-50%, 0) scale(1.08)",offset:.14},{opacity:1,transform:"translate(-50%, 0) scale(1)",offset:.24},{opacity:1,transform:"translate(-50%, 0) scale(1)",offset:.72},{opacity:0,transform:"translate(-50%, -7px) scale(0.94)"}],{duration:1050,easing:"ease-out",fill:"both"}))},[t,e.count]),O(()=>{let d=l.current;if(!d)return;let c=requestAnimationFrame(()=>{let p=d.querySelector("[data-popmelt-tool-receipt-scroll]");p&&qa(p)});return()=>cancelAnimationFrame(c)},[e]),M("span",{"data-popmelt-tool-receipt-trigger":!0,onMouseEnter:d=>Yl(d.currentTarget,l.current),onFocusCapture:d=>Yl(d.currentTarget,l.current),style:{display:"inline-flex",flexShrink:0,position:"relative"},children:[M("button",{ref:i,type:"button","aria-label":`Inspect tool activity: ${o}`,style:{alignItems:"center",background:"transparent",border:0,color:"var(--popmelt-thread-muted)",cursor:"pointer",display:"inline-flex",flexShrink:0,height:18,justifyContent:"center",padding:0,position:"relative",transition:"color 100ms ease",width:18},children:[f(n,{"aria-hidden":"true",color:"currentColor","data-popmelt-tool-receipt-icon":!0,size:14,strokeWidth:1.5}),e.count>1&&M("span",{ref:a,"data-popmelt-tool-count":!0,style:{alignItems:"center",background:"var(--popmelt-thread-action)",borderRadius:9,color:"var(--popmelt-thread-on-action)",display:"flex",fontFamily:ln,fontSize:12,fontWeight:500,height:18,justifyContent:"center",letterSpacing:"-0.1px",minWidth:18,padding:"0 5px",pointerEvents:"none",position:"absolute",bottom:"calc(100% + 3px)",left:"50%",opacity:0,transform:"translate(-50%, -7px) scale(0.94)"},children:[e.count,"x"]})]}),M("span",{ref:l,role:"tooltip","data-popmelt-tool-receipt-tooltip":!0,style:{background:"var(--popmelt-thread-raised)",borderRadius:16,bottom:"100%",boxSizing:"border-box",color:"var(--popmelt-thread-primary)",left:0,overflow:"hidden",pointerEvents:"auto",position:"absolute",width:0,zIndex:20},children:[M("span",{"data-popmelt-tool-receipt-scroll":!0,onScroll:d=>qa(d.currentTarget),style:{display:"flex",flexDirection:"column",gap:8,maxHeight:"var(--popmelt-tool-receipt-max-height, 190px)",overflowY:"auto",padding:"14px 15px"},children:[M("span",{style:{alignItems:"center",display:"flex",fontSize:11,fontWeight:500,gap:6,lineHeight:1.3,opacity:.65},children:[f(n,{"aria-hidden":"true",color:"currentColor",size:14,strokeWidth:1.5,style:{flexShrink:0}}),f("span",{children:r})]}),e.groups.map(d=>M("span",{style:{display:"flex",flexDirection:"column",gap:7,padding:"6px 0"},children:[M("span",{style:{fontSize:11,fontWeight:500,lineHeight:1.3,opacity:.65},children:[d.tool," \xB7 ",d.items.length]}),d.items.map((c,p)=>f("span",{style:{fontSize:14,fontWeight:400,lineHeight:1.3,whiteSpace:"normal"},children:c.label},`${c.label}-${p}`))]},d.tool))]}),f("span",{"data-popmelt-tool-receipt-scrim":"top","aria-hidden":"true"}),f("span",{"data-popmelt-tool-receipt-scrim":"bottom","aria-hidden":"true"})]})]})}function Rf(e){let t=new Map;for(let n of e)t.has(n.id)||t.set(n.id,n);return[...t.values()]}function lS(e){let t=Rf(e.flatMap(n=>n.type!=="imprint_used"?[]:n.data.usage?.explanations??[]));return t.length>0?{updated:!1,explanations:t}:void 0}function sS(e,t){let n=new Map(t.flatMap(s=>s.imprintContext?[[s.jobId,s.imprintContext]]:[])),r=[],o,i,a=!1;for(let s of e){let d=s.imprintSummary;if(d){a=!0,o=d.title,i=d.detail;for(let u of d.changes)r.push({id:u.explanationId,statement:u.statement,state:u.state})}let c=n.get(s.jobId),p=new Set([...s.imprintUsedExplanationIds??[],...s.imprintAppliedExplanationIds??[],...s.imprintRecognition?[s.imprintRecognition.explanationId]:[]]);for(let u of p){let h=c?.explanations.find(m=>m.id===u);h?r.push(h):s.imprintRecognition?.explanationId===u&&r.push({id:u,kind:"pattern",statement:s.imprintRecognition.statement,state:"grounded",scope:{kind:"project",values:[]}})}}let l=Rf(r);if(!(!a&&l.length===0))return{updated:a,title:o,detail:i,explanations:l}}function dS(e){return e==="testing"||e==="emerging"?"Emerging":e.charAt(0).toUpperCase()+e.slice(1)}function Lf(e){return e?e.charAt(0).toUpperCase()+e.slice(1):void 0}function Pf({receipt:e,accentColor:t}){let n=e.updated?"Imprint updated":"Imprint used",r=W(null);return O(()=>{let o=r.current;if(!o)return;let i=requestAnimationFrame(()=>{let a=o.querySelector("[data-popmelt-tool-receipt-scroll]");a&&qa(a)});return()=>cancelAnimationFrame(i)},[e]),M("span",{"data-popmelt-tool-receipt-trigger":!0,onMouseEnter:o=>Yl(o.currentTarget,r.current),onFocusCapture:o=>Yl(o.currentTarget,r.current),style:{display:"inline-flex",flexShrink:0,position:"relative"},children:[f("button",{type:"button","aria-label":`Inspect ${n.toLowerCase()}`,style:{alignItems:"center",background:"transparent",border:0,color:e.updated?t:"var(--popmelt-thread-muted)",cursor:"pointer",display:"inline-flex",flexShrink:0,height:18,justifyContent:"center",padding:0,transition:"color 100ms ease",width:18},children:f(io,{"aria-hidden":"true",color:"currentColor",size:14,strokeWidth:1.5})}),M("span",{ref:r,role:"tooltip","data-popmelt-tool-receipt-tooltip":!0,style:{background:"var(--popmelt-thread-raised)",borderRadius:16,bottom:"100%",boxSizing:"border-box",color:"var(--popmelt-thread-primary)",left:0,overflow:"hidden",pointerEvents:"auto",position:"absolute",width:0,zIndex:20},children:[M("span",{"data-popmelt-tool-receipt-scroll":!0,onScroll:o=>qa(o.currentTarget),style:{display:"flex",flexDirection:"column",gap:8,maxHeight:"var(--popmelt-tool-receipt-max-height, 190px)",overflowY:"auto",padding:"14px 15px"},children:[M("span",{style:{alignItems:"center",display:"flex",fontSize:11,fontWeight:500,gap:6,lineHeight:1.3,opacity:.65},children:[f(io,{"aria-hidden":"true",color:e.updated?t:"currentColor",size:14,strokeWidth:1.5,style:{flexShrink:0}}),f("span",{children:n})]}),e.title&&f("span",{style:{fontSize:14,fontWeight:500,lineHeight:1.3},children:e.title}),e.detail&&f("span",{style:{fontSize:12,fontWeight:400,lineHeight:1.45,opacity:.72},children:e.detail}),e.explanations.map(o=>M("span",{style:{display:"flex",flexDirection:"column",gap:7,padding:"6px 0"},children:[M("span",{style:{alignItems:"center",display:"flex",fontSize:11,fontWeight:500,gap:4,lineHeight:1.3,opacity:.65},children:[f("span",{children:dS(o.state)}),Lf(o.kind)&&f("span",{style:{opacity:.72},children:Lf(o.kind)})]}),f("span",{style:{fontSize:14,fontWeight:400,lineHeight:1.3,whiteSpace:"normal"},children:o.statement}),o.scope?.values.length?f("span",{style:{fontSize:11,fontWeight:400,lineHeight:1.3,opacity:.5},children:o.scope.values.join(" \xB7 ")}):null]},o.id))]}),f("span",{"data-popmelt-tool-receipt-scrim":"top","aria-hidden":"true"}),f("span",{"data-popmelt-tool-receipt-scrim":"bottom","aria-hidden":"true"})]})]})}function cS({summary:e,accentColor:t,busy:n,onAction:r}){let o=!!e.resolvedAction,[i,a]=j(!!(e.grounding&&!o)),l={...$d,cursor:n?"default":"pointer",fontFamily:ln};return M("div",{style:pf,children:[M("button",{type:"button","aria-expanded":i,onClick:()=>a(s=>!s),style:{alignItems:"center",background:"transparent",border:0,color:"var(--popmelt-thread-primary)",cursor:"pointer",display:"flex",fontFamily:ln,fontSize:14,fontWeight:650,gap:8,padding:0,textAlign:"left",width:"100%"},children:[f(io,{"aria-hidden":"true",color:t,size:16,strokeWidth:2}),M("span",{style:{flex:1},children:["Imprint ",e.kind,": ",e.title]}),f(Vi,{"aria-hidden":"true",size:14,strokeWidth:1.5,style:{transform:i?"rotate(180deg)":"none",transition:"transform 120ms ease"}})]}),i&&M(ct,{children:[M("div",{style:{borderLeft:"1px solid var(--popmelt-thread-border)",color:"var(--popmelt-thread-secondary)",fontSize:13,lineHeight:1.35,padding:"4px 12px"},children:[e.detail,e.additionalObservationCount?M("div",{style:{color:"var(--popmelt-thread-muted)",fontSize:11,marginTop:4},children:["Updated with ",e.additionalObservationCount," additional"," ",e.additionalObservationCount===1?"observation":"observations","."]}):null]}),e.changes.map(s=>M("div",{style:{color:"var(--popmelt-thread-secondary)",fontSize:12,lineHeight:1.35},children:[f("div",{children:s.statement}),M("div",{style:{color:"var(--popmelt-thread-muted)",fontSize:10,marginTop:2},children:[s.action," \xB7 ",s.state]})]},`${s.explanationId}:${s.action}`)),e.grounding&&!o&&f("div",{style:{color:"var(--popmelt-thread-primary)",fontSize:13,lineHeight:1.35,marginTop:2},children:e.grounding.question}),o?M("div",{style:{alignItems:"center",color:"var(--popmelt-thread-muted-strong)",display:"flex",fontSize:11,gap:6},children:[f(xi,{"aria-hidden":"true",color:t,size:12,strokeWidth:2}),e.resolvedAction==="no"?"Correction requested":`Feedback applied: ${e.resolvedAction==="yes"?"Yes":"This time"}`]}):e.grounding?M("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:[f("button",{disabled:n,onClick:()=>r("yes"),style:l,children:"Yes"}),f("button",{disabled:n,onClick:()=>r("this_time"),style:l,children:"This time"}),f("button",{disabled:n,onClick:()=>r("no"),style:l,children:"No"})]}):null]})]})}function uS({receipt:e,accentColor:t}){let[n,r]=j(!0);return M("div",{style:{background:"var(--popmelt-thread-soft)",border:"1px solid var(--popmelt-thread-border)",borderRadius:24,display:"flex",flexDirection:"column",gap:10,padding:16},children:[M("button",{type:"button","aria-expanded":n,onClick:()=>r(o=>!o),style:{alignItems:"center",background:"transparent",border:0,color:"var(--popmelt-thread-primary)",cursor:"pointer",display:"flex",fontFamily:ln,fontSize:14,fontWeight:650,gap:8,padding:0,textAlign:"left",width:"100%"},children:[f(io,{"aria-hidden":"true",color:t,size:16,strokeWidth:2}),M("span",{style:{flex:1},children:["Existing Imprint reapplied: ",e.title]}),f(Vi,{"aria-hidden":"true",size:14,strokeWidth:1.5,style:{transform:n?"rotate(180deg)":"none",transition:"transform 120ms ease"}})]}),n&&M(ct,{children:[f("div",{style:{borderLeft:"1px solid var(--popmelt-thread-border)",color:"var(--popmelt-thread-secondary)",fontSize:13,lineHeight:1.35,padding:"4px 12px"},children:e.detail}),M("div",{style:{color:"var(--popmelt-thread-secondary)",fontSize:12,lineHeight:1.35},children:[f("div",{children:e.statement}),f("div",{style:{color:"var(--popmelt-thread-muted)",fontSize:10,marginTop:2},children:"recognized \xB7 grounded"})]}),M("div",{style:{alignItems:"center",color:"var(--popmelt-thread-muted-strong)",display:"flex",fontSize:11,gap:6},children:[f(xi,{"aria-hidden":"true",color:t,size:12,strokeWidth:2}),"Shared understanding unchanged"]})]})]})}function pS({card:e,accentColor:t,busy:n,resolved:r,superseded:o,onAction:i}){let[a,l]=j(!1),[s,d]=j(e.claim),[c,p]=j(!1),[u,h]=j(!1),[m,g]=j(!1),[x,S]=j(null),D=W(null);O(()=>{l(!1),d(e.claim),p(!1),h(!1),g(!1),S(null)},[e.claim,e.proposalId]),O(()=>{if(!a)return;let G=D.current;G&&(G.focus(),G.select(),G.style.height="auto",G.style.height=`${G.scrollHeight}px`)},[a]);let H=J(()=>{let G=s.trim();d(G||e.claim),l(!1),p(!1)},[e.claim,s]),w=J(()=>{d(e.claim),l(!1),p(!1)},[e.claim]),z=s.trim()!==e.claim.trim(),Z=r||o,k=e.title;return r?M("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[M("button",{type:"button","aria-expanded":m,onClick:()=>g(G=>!G),style:{alignItems:"center",alignSelf:"flex-start",background:"transparent",border:0,color:"var(--popmelt-thread-muted-strong)",cursor:"pointer",display:"inline-flex",fontFamily:ln,fontSize:14,fontWeight:400,gap:6,letterSpacing:"0.14px",lineHeight:1.35,padding:0,textAlign:"left"},children:[f(io,{"aria-hidden":"true",color:t,size:14,strokeWidth:1.5}),M("span",{style:{alignItems:"center",display:"inline-flex",gap:2},children:[f("span",{children:k}),f(Vi,{"aria-hidden":"true",size:12,strokeWidth:1.5,style:{transform:m?"rotate(180deg)":"rotate(0deg)",transition:"transform 120ms ease"}})]})]}),m&&M(ct,{children:[f("div",{style:{borderLeft:"1px solid var(--popmelt-thread-border)",color:"var(--popmelt-thread-muted-strong)",fontSize:14,fontStyle:"italic",letterSpacing:"0.14px",lineHeight:1.3,marginLeft:7,padding:"6px 16px 8px"},children:s}),f("div",{style:{borderLeft:"1px solid var(--popmelt-thread-border)",color:"var(--popmelt-thread-muted-strong)",fontSize:14,fontStyle:"italic",letterSpacing:"0.14px",lineHeight:1.3,marginLeft:7,padding:"6px 16px 8px"},children:e.rationale}),e.scope?M("div",{style:{color:"var(--popmelt-thread-muted-strong)",fontSize:14,letterSpacing:"0.14px",lineHeight:1.35},children:["Scope: ",e.scope]}):null]})]}):M("div",{style:{border:"1px solid var(--popmelt-thread-border)",background:"var(--popmelt-thread-soft)",borderRadius:24,padding:16,display:"flex",flexDirection:"column",gap:12},children:[M("div",{style:{alignItems:"center",color:"var(--popmelt-thread-primary)",display:"flex",fontSize:14,fontWeight:600,gap:8,letterSpacing:"0.14px",lineHeight:1.3},children:[f(io,{"aria-hidden":"true",color:t,size:16,strokeWidth:2}),f("span",{children:k})]}),a&&!Z?f("textarea",{ref:D,value:s,disabled:n,onChange:G=>{d(G.target.value),G.currentTarget.style.height="auto",G.currentTarget.style.height=`${G.currentTarget.scrollHeight}px`},onBlur:H,onKeyDown:G=>{G.key==="Enter"&&!G.shiftKey?(G.preventDefault(),H()):G.key==="Escape"&&(G.preventDefault(),G.stopPropagation(),w())},rows:1,style:{resize:"none",overflow:"hidden",outline:"none",boxSizing:"border-box",border:0,borderLeft:"1px solid var(--popmelt-thread-border)",background:"var(--popmelt-thread-soft-hairline)",color:"var(--popmelt-thread-muted-strong)",cursor:"text",fontFamily:ln,fontSize:14,fontStyle:"italic",letterSpacing:"0.14px",lineHeight:1.3,margin:"0 7px",padding:"6px 16px 8px",width:"calc(100% - 14px)"}}):f("button",{type:"button",disabled:Z||n,onClick:()=>l(!0),onMouseEnter:()=>p(!0),onMouseLeave:()=>p(!1),onFocus:()=>p(!0),onBlur:()=>p(!1),style:{border:0,borderLeft:"1px solid var(--popmelt-thread-border)",background:c&&!Z?"var(--popmelt-thread-soft-hairline)":"transparent",color:"var(--popmelt-thread-muted-strong)",cursor:Z?"default":"text",fontFamily:ln,fontSize:14,fontStyle:"italic",letterSpacing:"0.14px",lineHeight:1.3,margin:"0 7px",padding:"6px 16px 8px",textAlign:"left",width:"calc(100% - 14px)"},children:s}),M("div",{style:{color:"var(--popmelt-thread-primary)",fontSize:14},children:[M("button",{type:"button","aria-expanded":u,onClick:()=>h(G=>!G),style:{alignItems:"center",border:0,background:"transparent",color:"var(--popmelt-thread-primary)",cursor:"pointer",display:"inline-flex",gap:2,fontFamily:ln,fontSize:14,fontWeight:400,letterSpacing:"0.14px",lineHeight:1.3,margin:0,opacity:u?1:.35,padding:0},children:[f("span",{children:"Why?"}),u?f(Vi,{"aria-hidden":"true",size:10,strokeWidth:2.5}):f(Us,{"aria-hidden":"true",size:10,strokeWidth:2.5})]}),u?M(ct,{children:[f("div",{style:{borderLeft:"1px solid var(--popmelt-thread-border)",color:"var(--popmelt-thread-muted-strong)",fontSize:14,fontStyle:"italic",letterSpacing:"0.14px",lineHeight:1.3,margin:"8px 7px 0",padding:"6px 16px 8px"},children:e.rationale}),e.scope?M("div",{style:{color:"var(--popmelt-thread-muted-strong)",fontSize:14,letterSpacing:"0.14px",lineHeight:1.35,marginTop:8},children:["Scope: ",e.scope]}):null]}):null]}),o?f("div",{style:{color:"var(--popmelt-thread-secondary)",fontSize:12,fontWeight:700},children:"Refined in a later review card"}):M("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) minmax(0, 1fr)",gap:6,alignItems:"stretch"},children:[M("button",{type:"button",disabled:n,onClick:()=>i("reject"),onMouseEnter:()=>{n||S("reject")},onMouseLeave:()=>S(null),style:{...Ud,alignItems:"center",background:"var(--popmelt-thread-control)",border:0,borderRadius:16,color:"var(--popmelt-thread-primary)",display:"flex",justifyContent:"space-between",padding:"8px 12px",width:"100%",fontSize:12,transition:"background-color 120ms ease"},children:[f("span",{children:"Reject"}),f(yl,{"aria-hidden":"true",color:"#dd4141",size:12,strokeWidth:2.5})]}),M("button",{type:"button",disabled:n||!s.trim(),onClick:()=>i(z?"edit_and_accept":"accept",z?s.trim():void 0),onMouseEnter:()=>{!n&&s.trim()&&S("accept")},onMouseLeave:()=>S(null),style:{...qd,alignItems:"center",background:x==="accept"?"var(--popmelt-thread-action-hover)":"var(--popmelt-thread-action)",borderColor:x==="accept"?"var(--popmelt-thread-action-hover)":"var(--popmelt-thread-action)",borderRadius:24,color:"var(--popmelt-thread-on-action)",display:"flex",justifyContent:"space-between",padding:"8px 12px",width:"100%",fontSize:12,opacity:n||!s.trim()?.45:1,transition:"background-color 120ms ease, border-color 120ms ease"},children:[f("span",{children:z?"Adopt edited":"Adopt"}),f(xi,{"aria-hidden":"true",color:"#61c920",size:12,strokeWidth:3})]})]})]})}function fS({stepCount:e}){return M("div",{"data-thread-interaction-episode-receipt":!0,style:{...la,alignItems:"center",alignSelf:"flex-end",color:"var(--popmelt-thread-muted-strong)",display:"inline-flex",gap:6,paddingBlock:4},children:[f(Og,{"aria-hidden":!0,color:"currentColor",size:14,strokeWidth:1.5,style:{flexShrink:0}}),M("span",{children:[e," recorded ",e===1?"action":"actions"," sent"]})]})}function hS({frames:e,onLightbox:t}){return e.length===0?null:f("div",{"data-thread-interaction-episode-visuals":!0,style:{display:"flex",flexWrap:"wrap",gap:4,justifyContent:"flex-end",width:"100%"},children:e.map(n=>M("button",{type:"button","aria-label":`View ${n.label.toLowerCase()}`,title:n.label,onClick:()=>t(n.url),style:{background:"transparent",border:0,color:"var(--popmelt-thread-muted-strong)",cursor:"pointer",font:"inherit",padding:0,textAlign:"right"},children:[f(co,{src:n.url,alt:"",style:{...Ti,display:"block"}}),f("span",{style:{display:"block",fontSize:10,marginTop:2,maxWidth:Jd,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:n.label})]},n.id))})}var jf=Rg(function({msg:e,index:t,bridgeUrl:n,accentColor:r,onLightbox:o,hideSender:i=!1,hideTimestamp:a=!1,hideModelSenderUntilHover:l=!1,compactSpacing:s=!1,queuedPreview:d=!1,workedFor:c="a moment",activityTimestamp:p,memoryReviewBusy:u=!1,memoryReviewResolved:h=!1,memoryReviewSuperseded:m=!1,foldedActivityMessages:g=[],underMessageActivity:x,onMemoryReviewAction:S,onImprintAction:D}){let H=e.replyToQuestion&&e.authorPeer?.kind==="assistant"?e.authorPeer:void 0,w=e.role==="human",z=Hr(il),Z=e.authorPeer?e.authorPeer.id===z?.participantId?"You":e.authorPeer.name==="You"?"Host":e.authorPeer.name:z&&!z.canManageThreads&&!e.jobId.startsWith("_pending_reply_")?"Host":"You",[k,G]=j(!1),N=d?12:Bd,Y={...Ww,borderRadius:N,...d?{padding:"2px 10px",fontSize:12,lineHeight:"24px",letterSpacing:"0.12px",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}:{},[H?"borderBottomLeftRadius":"borderBottomRightRadius"]:N/2},q=w?e.replyToQuestion?Gw(e,n):e.requestItems?.length?[]:Qw(e,n):[];if(e.cancelled||e.error)return f("div",{"data-msg":!0,style:{padding:0},children:f(ml,{fallback:"Loading recovery\u2026",children:f(Pw,{message:e,bridgeUrl:n,canSignIn:!!z?.canManageThreads})})},`${e.jobId}-${t}`);let ie=e.requestText||e.feedbackSummary||"(annotation)",I=e.requestText?Dy(e.requestText):ie,Q=!!(w&&!e.replyToQuestion&&e.requestText&&e.requestText.trim()!==I.trim()),L=w?e.replyToQuestion||(k?ie:I):Ba(e.responseText||""),F=(ve,Fe=Y)=>M("div",{style:Fe,children:[ve.includes(`
173
158
  `)?cr(ve):ki(ve),Q&&f("button",{type:"button","aria-expanded":k,onClick:()=>G(qe=>!qe),style:{background:"transparent",border:0,color:"inherit",cursor:"pointer",display:"block",fontFamily:"inherit",fontSize:12,fontWeight:600,marginTop:8,opacity:.72,padding:0,textAlign:"left"},children:k?"Show less":"Read more"})]}),R=w?void 0:e.question,$=w?[]:(e.resolutions??[]).filter(ve=>ve.status!=="resolved"),P=$.length>0,A=!w&&e.segments&&e.segments.length>0,ne=A?vf(e.segments):[],re=!!(!w&&A&&L&&!gw(e.segments,e.responseText??"")),ee=[...g,e],oe=w?[]:ee.flatMap(ve=>(ve.segments??[]).filter(Fe=>Fe.kind==="tool_group")),U=w?[]:ee.flatMap(ve=>ve.segments?.length?[]:(ve.toolsUsed??[]).map(Fe=>({kind:"tool_group",tool:iS(Fe),items:[{label:Fe}]}))),fe=Af([...oe,...U]),ge=Cf(fe),K=!!(ee.some(ve=>ve.memoryReceipt?.status==="committed")||x?.decisionRecorded),Te=x?.imprintReceipt,Me=!!x?.modelUpdated,Ee=ge.length>0||K||Me||!!Te,Ge=w&&!!(e.memoryReview?.packets.length||e.memoryReview?.acceptedTruth?.decisions.length),X=!w&&!!(e.memoryReceipt&&e.memoryReceipt.status!=="committed"),Oe=!w&&(!i||!a);return!L&&!R&&!P&&!A&&!Ge&&!e.memoryReviewCard&&!e.imprintSummary&&!X&&!Ee?null:M("div",{"data-msg":!0,"data-queued-preview":d||void 0,style:{alignSelf:H?"flex-start":w?"flex-end":"stretch",display:"flex",flexDirection:"column",gap:16,marginTop:s?-24:0,padding:0,position:"relative",maxWidth:w?280:void 0,width:w?"fit-content":"auto",...d?{width:"100%",minWidth:0,maxWidth:"100%"}:{}},children:[Oe&&f("div",{"data-under-message-rail":l?"hover":"latest",style:{alignItems:"center",alignSelf:"stretch",display:"flex",gap:4,marginTop:l?0:16,order:2,...l?{left:0,paddingTop:7,position:"absolute",right:0,top:"100%",zIndex:1}:{},width:"100%"},children:w?M(ct,{children:[!a&&f("span",{"data-message-timestamp":!0,style:{fontSize:12,fontWeight:400,color:"var(--popmelt-thread-muted)"},children:Ja(e.timestamp)}),!i&&f("span",{style:{color:r,fontSize:12,fontWeight:500,marginLeft:"auto",opacity:.55},children:Z})]}):M(ct,{children:[f("div",{"data-worked-for-trigger":!0,style:{alignItems:"center",background:"transparent",border:0,color:"var(--popmelt-thread-muted)",cursor:"default",display:"flex",fontFamily:ln,fontSize:14,padding:0,textAlign:"left"},children:M("span",{style:{display:"grid"},children:[M("span",{"data-worked-for-label":!0,style:{gridArea:"1 / 1",textAlign:"left"},children:["Worked for ",c]}),!a&&f("span",{"data-worked-for-time":!0,style:{gridArea:"1 / 1",justifySelf:"start",opacity:0,textAlign:"left"},children:Ja(p??e.timestamp)})]})}),f("div",{style:{alignItems:"center",display:"flex",marginLeft:"auto",minHeight:14},children:M("div",{"data-message-activity":!0,style:{alignItems:"center",color:"var(--popmelt-thread-muted)",display:"flex",gap:6},children:[fe.length>0&&f("div",{style:{alignItems:"center",display:"flex",gap:6},children:ge.map(ve=>f(Mf,{receipt:ve},ve.kind))}),K&&f(io,{"aria-label":"Decision recorded",color:r,size:14,strokeWidth:1.5}),Me&&f(gl,{"aria-label":"Model updated",color:"var(--popmelt-thread-muted)",size:14,strokeWidth:1.5}),Te&&f(Pf,{receipt:Te,accentColor:r})]})})]})}),w&&!a&&f("span",{"data-message-timestamp":!0,style:{color:"var(--popmelt-thread-muted)",fontSize:12,fontWeight:400,position:"absolute",...H?{left:28}:{right:0},top:"calc(100% + 8px)"},children:Ja(e.timestamp)}),q.length>0&&f("div",{style:{display:"flex",flexWrap:"wrap",gap:4,justifyContent:"flex-end",width:"100%"},children:q.map((ve,Fe)=>f(co,{src:ve.url,alt:ve.label||"Attached image",title:ve.label,style:Ti,onClick:()=>o(ve.url)},Fe))}),w&&!e.replyToQuestion&&(()=>{if(e.requestItems?.length){let qe=new Set(e.requestItems.flatMap(ce=>ce.pathname?[ce.pathname]:[])).size>1,je=new Set,$e=e.screenshotUrl?uo(n,e.screenshotUrl):null;return M("div",{"data-thread-request-cluster":!0,style:{alignItems:"flex-end",display:"flex",flexDirection:"column",gap:4,width:"100%"},children:[$e&&!e.screenshotUrls?f(co,{src:$e,alt:"Thread screenshot",title:"screenshot",style:{...Ti,flexShrink:0},onClick:()=>o($e)}):null,e.requestItems.map((ce,rt)=>{let at=ce.pathname,Be=at&&!je.has(at)?e.screenshotUrls?.[at]:void 0;at&&je.add(at);let Ie=Be?uo(n,Be):null,_e=ce.kind==="annotation"&&ce.annotationId?e.imageUrls?.[ce.annotationId]??[]:[],_t=ce.kind==="annotation"?e.annotationSnapshot?.annotations.find(Ke=>Ke.id===ce.annotationId)?.interactionEpisode:void 0,wt=Ly(_t,_e).map(Ke=>({...Ke,url:uo(n,Ke.url)})),Pt=new Set(wt.map(Ke=>Ke.imageIndex)),kt=_e.flatMap((Ke,jt)=>Pt.has(jt)?[]:[uo(n,Ke)]),lt=ce.kind==="annotation"?ce.interactionEpisodeStepCount??_t?.steps.length??0:0;return M(Lg,{children:[Ie?f(co,{src:Ie,alt:`Screenshot for ${at}`,title:at,style:{...Ti,flexShrink:0},onClick:()=>o(Ie)}):null,kt.length>0?f("div",{style:{display:"flex",flexWrap:"wrap",gap:4,justifyContent:"flex-end",width:"100%"},children:kt.map((Ke,jt)=>f(co,{src:Ke,alt:"Attached image",title:"pasted image",style:Ti,onClick:()=>o(Ke)},jt))}):null,f(hS,{frames:wt,onLightbox:o}),lt>0?f(fS,{stepCount:lt}):null,M("div",{style:{...Y,minWidth:0},children:[qe&&at?f("code",{style:{backgroundColor:"var(--popmelt-thread-soft-hairline)",display:"inline-block",fontSize:10,marginBottom:4,padding:"1px 4px"},children:at}):null,ce.kind==="annotation"?ce.text.includes(`
174
159
  `)?cr(ce.text):ki(ce.text):M(ct,{children:[M("div",{style:{fontWeight:600},children:[ce.elementLabel," ",M("span",{style:{opacity:.64},children:["(",ce.changes.length," ",ce.changes.length===1?"change":"changes",")"]})]}),f("div",{style:{marginTop:6},children:ce.changes.map((Ke,jt)=>f("div",{style:{marginTop:jt===0?0:3},children:Ke},jt))})]})]})]},`${ce.kind}-${rt}`)})]})}let ve=L?Vw(L):null;if(ve&&e.screenshotUrls)return f("div",{style:{display:"flex",flexDirection:"column",gap:4},children:ve.map((qe,je)=>{let $e=e.screenshotUrls?.[qe.route],ce=$e?uo(n,$e):null;return M("div",{style:{alignItems:"flex-end",display:"flex",flexDirection:"column",gap:6,width:"100%"},children:[ce?f(co,{src:ce,alt:`Screenshot for ${qe.route}`,title:qe.route,style:{...Ti,flexShrink:0},onClick:()=>o(ce)}):null,M("div",{style:{...Y,minWidth:0},children:[f("code",{style:{fontSize:10,backgroundColor:"var(--popmelt-thread-soft-hairline)",padding:"1px 4px"},children:qe.route}),qe.text&&f("div",{style:{marginTop:2},children:cr(qe.text)})]})]},je)})});let Fe=e.screenshotUrl?uo(n,e.screenshotUrl):null;return Fe&&L?M("div",{style:{alignItems:"flex-end",display:"flex",flexDirection:"column",gap:6,width:"100%"},children:[f(co,{src:Fe,alt:"Thread screenshot",title:"screenshot",style:{...Ti,flexShrink:0},onClick:()=>o(Fe)}),F(L,{...Y,minWidth:0})]}):L?F(L):null})(),w&&e.replyToQuestion&&L&&(H?f(Bw,{name:H.name,queued:d,text:L,style:Y}):f("div",{style:Y,title:d?L:void 0,children:!d&&L.includes(`
175
- `)?cr(L):ki(L)})),e.chatDelivery&&M("span",{style:{alignSelf:"flex-end",display:"inline-flex",alignItems:"center",gap:4,color:"var(--popmelt-thread-muted)",fontSize:12},children:[f(Eu,{size:12,"aria-hidden":"true"}),e.chatDelivery==="claude-inbox"?"Sent to Claude":"Sent to Codex"]}),Ge&&f(qw,{memoryReview:e.memoryReview}),!w&&A&&ne.map((ve,Fe)=>{if(ve.kind==="approval")return f(ff,{approval:ve.approval},ve.approval.id);if(ve.kind==="tool_group")return null;if(ve.kind==="generated_image")return f(Tf,{src:uo(n,ve.url),onLightbox:o},Fe);if(ve.kind==="orientation")return f(Ef,{orientation:ve.orientation},Fe);if(re)return null;let qe=Ba(ve.text);return qe?f("div",{style:la,children:cr(qe)},Fe):null}),!w&&!A&&L&&f("div",{style:la,children:cr(L)}),!w&&re&&L&&f("div",{style:la,children:cr(L)}),!w&&e.memoryReviewCard&&S&&f(pS,{card:e.memoryReviewCard,accentColor:r,busy:u,resolved:h,superseded:m,onAction:(ve,Fe)=>S(e.memoryReviewCard,ve,Fe)}),!w&&e.imprintSummary&&D&&f(cS,{summary:e.imprintSummary,accentColor:r,busy:u,onAction:ve=>D(e.imprintSummary,ve)}),!w&&e.imprintRecognition&&f(uS,{receipt:e.imprintRecognition,accentColor:r}),X&&e.memoryReceipt&&M("div",{style:{alignItems:"center",color:"var(--popmelt-thread-primary)",display:"flex",fontSize:12,fontStyle:"italic",gap:6,lineHeight:1.35},children:[e.memoryReceipt.status==="committed"?f(io,{"aria-hidden":"true",color:r,size:12,strokeWidth:1.5}):f(yl,{"aria-hidden":"true",color:r,size:12,strokeWidth:1.5}),f("span",{style:{opacity:.5},children:e.memoryReceipt.status==="committed"?"Decision recorded":"Decision not recorded"})]}),R&&f("div",{style:la,children:cr(R)}),P&&f("div",{style:{backgroundColor:"var(--popmelt-thread-soft)",border:"1px solid var(--popmelt-thread-border)",borderRadius:24,color:"var(--popmelt-thread-muted-strong)",fontSize:14,letterSpacing:"0.14px",lineHeight:1.35,marginTop:-4,padding:16},children:$.map((ve,Fe)=>M("div",{children:[f("span",{style:{color:ve.status==="resolved"?"#10b981":"#f59e0b"},children:ve.status==="resolved"?"Done":"Needs review"}),ve.summary?` \u2014 ${ve.summary}`:""]},Fe))}),!w&&e.modelDetails?.length?f(Jw,{patterns:e.modelDetails}):null]},`${e.jobId}-${t}`)});function zf(e,t){return!t||e.role!=="human"||t.role!=="human"||e.authorPeer?.id!==t.authorPeer?.id||!e.replyToQuestion||!t.replyToQuestion?!1:e.jobId===t.jobId||e.timestamp-t.timestamp<6e4}function $f(e,t){if(!t||e.timestamp<=t.timestamp)return"a moment";let n=ty((e.segments??[]).flatMap(s=>s.kind==="approval"?[s.approval]:[]),t.timestamp,e.timestamp),r=Math.max(1,Math.round((e.timestamp-t.timestamp-n)/1e3));if(r<60)return`${r}s`;let o=Math.floor(r/60),i=r%60;if(o<60)return`${o}m${i?` ${i}s`:""}`;let a=Math.floor(o/60),l=o%60;return[`${a}h`,l?`${l}m`:"",i?`${i}s`:""].filter(Boolean).join(" ")}function mS(e,t){if(e.role!=="assistant"||e.cancelled||e.error)return!1;let n=Ba(e.responseText??"").trim(),r=(e.segments??[]).some(i=>i.kind==="approval"?!0:i.kind==="tool_group"?!1:i.kind==="generated_image"||i.kind==="orientation"?!0:Ba(i.text).trim().length>0),o=!!(n||e.question||e.resolutions?.length||e.memoryReviewCard||e.imprintSummary||r);return!!(e.memoryReceipt?.status==="committed"||e.toolsUsed?.length||e.segments?.some(i=>i.kind==="tool_group")||t)&&!o}function Df(e,t){return t.status==="applied"?t.applicationMode==="automatic"&&t.presentationJobId?e.jobId===t.presentationJobId:e.jobId===`apply-${t.id}`:t.status==="dismissed"?e.jobId===`dismiss-${t.id}`:t.presentationJobId?e.jobId===t.presentationJobId:t.runId&&e.jobId===t.runId?!0:!t.runId&&e.role==="assistant"&&!!e.responseText?.includes("Model suggestion ready")}function Or(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function Xl(e){if(e===void 0)return"undefined";try{return JSON.stringify(e)}catch{return String(e)}}function Kl(e,t){return Xl(e)===Xl(t)}function sa(e){if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);if(Array.isArray(e))return`${e.length} item${e.length===1?"":"s"}`;if(Or(e)){let t=Object.keys(e);return typeof e.value=="string"||typeof e.value=="number"?String(e.value):`{ ${t.slice(0,4).join(", ")}${t.length>4?", ...":""} }`}return String(e)}function gS(e,t){let n=e;for(let r of t){if(!n||typeof n!="object")return;n=n[String(r)]}return n}function Hf(e,t,n,r){if(!Or(e)){Kl(e,t)||r.push({id:`token:${n.join(".")}`,group:"tokens",label:n.join("."),detail:sa(e),path:n,value:e,currentValue:t});return}if("value"in e){Kl(e,t)||r.push({id:`token:${n.join(".")}`,group:"tokens",label:n.join("."),detail:sa(e),path:n,value:e,currentValue:t});return}for(let o of Object.keys(e))Hf(e[o],Or(t)?t[o]:void 0,[...n,o],r)}function yS(e,t){if(t.changes?.length)return t.changes.map(s=>{let d=s.path[0],c=d==="rules"||d==="components"||d==="tokens"?d:"model";return{id:s.id,group:c,label:s.label??s.path.map(String).join("."),detail:s.rationale,path:s.path,value:s.value,decisionIds:s.decisionIds,currentValue:gS(e,s.path)}});let n=t.proposedModel;if(!n)return[];let r=[],o=Array.isArray(e?.rules)?e.rules:[],i=Array.isArray(n.rules)?n.rules:[];for(let s=0;s<i.length;s++){let d=i[s];if(!Or(d))continue;let c=typeof d.id=="string"?d.id:`rule-${s}`,p=o.find(u=>Or(u)&&(typeof u.id=="string"&&u.id===c||Xl(u)===Xl(d)));Kl(p,d)||r.push({id:`rule:${c}`,group:"rules",label:typeof d.scope=="string"?d.scope:"rule",detail:typeof d.text=="string"?d.text:sa(d),path:["rules"],value:d,currentValue:p,ruleValue:d})}let a=Or(n.components)?n.components:{},l=Or(e?.components)?e.components:{};for(let s of Object.keys(a)){let d=a[s],c=l[s];Kl(d,c)||r.push({id:`component:${s}`,group:"components",label:s,detail:sa(d),path:["components",s],value:d,currentValue:c})}return Or(n.tokens)&&Hf(n.tokens,e?.tokens,["tokens"],r),r}function vS(e,t,n){let r=t.filter(a=>n.has(a.id)),o=r.filter(a=>a.group==="rules"&&a.ruleValue),i=r.filter(a=>!a.ruleValue).map(a=>({path:a.path,value:a.value,decisionIds:a.decisionIds}));if(o.length>0){let a=Array.isArray(e?.rules)?[...e.rules]:[];for(let l of o){let s=l.ruleValue,d=Or(s)&&typeof s.id=="string"?s.id:null,c=d?a.findIndex(p=>Or(p)&&p.id===d):-1;c>=0?a[c]=s:a.push(s)}i.push({path:["rules"],value:a,decisionIds:[...new Set(o.flatMap(l=>l.decisionIds??[]))]})}return i}function bS(e){return(e.selectedChanges??[]).flatMap((t,n)=>{if(!t.label&&!t.detail)return[];let r=t.group==="rules"||t.group==="components"||t.group==="tokens"||t.group==="model"?t.group:"model";return[{id:`selected:${e.id}:${n}`,group:r,label:t.label??r,detail:t.detail??sa(t.value),path:t.path??[],value:t.value,currentValue:t.currentValue}]})}function xS({proposal:e,timestamp:t,bridgeUrl:n,accentColor:r,busy:o,onApplySelected:i,onDismiss:a,onReviewUnderlying:l,hideModelSenderUntilHover:s=!1}){let d=e.authorityStatus==="accepted",c=e.status==="pending"&&d,[p,u]=j(null),[h,m]=j(()=>new Set),[g,x]=j(null),S=Se(()=>{let q=bS(e);return!c&&q.length>0?q:yS(p,e)},[p,c,e]),D=Se(()=>vS(p,S,h),[S,p,h]),H=Se(()=>S.filter(q=>h.has(q.id)),[S,h]),w=Se(()=>{let q={rules:[],components:[],tokens:[],model:[]};for(let ie of S)q[ie.group].push(ie);return q},[S]),z=S.map(q=>q.id).join("|");O(()=>{let q=!1;return Yt(`${n}/model`).then(ie=>ie.ok?ie.json():null).then(ie=>{q||u(ie?.model&&typeof ie.model=="object"?ie.model:null)}).catch(()=>{q||u(null)}),()=>{q=!0}},[n,e.id]),O(()=>{m(c&&z?new Set(z.split("|")):new Set)},[z,c,e.id]);let Z=J(q=>{m(ie=>{let I=new Set(ie);return I.has(q)?I.delete(q):I.add(q),I})},[]),k=J(()=>{m(new Set(S.map(q=>q.id)))},[S]),G=J(()=>{m(new Set)},[]),N=`${S.length} ${S.length===1?"change":"changes"}`,Y=S.length===1?`1 ${S[0]?.group==="rules"?"rule":S[0]?.group==="components"?"component":S[0]?.group==="tokens"?"token":"change"}`:N;return e.status==="applied"?M("div",{"data-msg":!0,style:{display:"flex",flexDirection:"column",gap:16,position:"relative"},children:[M("div",{style:{display:"flex",flexDirection:"column",gap:12},children:[M("div",{style:{alignItems:"center",color:"var(--popmelt-thread-primary)",display:"flex",fontSize:12,fontStyle:"italic",gap:6,lineHeight:1.35},children:[f(io,{"aria-hidden":"true",color:r,size:12,strokeWidth:1.5}),f("span",{style:{opacity:.5},children:"Decision recorded"})]}),M("div",{style:{alignItems:"center",color:"var(--popmelt-thread-primary)",display:"flex",fontSize:12,fontStyle:"italic",gap:6,lineHeight:1.35},children:[f(gl,{"aria-hidden":"true",color:r,size:12,strokeWidth:1.5}),f("span",{style:{opacity:.5},children:"Model updated"})]})]}),M("div",{style:{alignItems:"center",display:"flex",gap:4,marginTop:s?0:16,...s?{left:0,position:"absolute",right:0,top:"calc(100% + 7px)",zIndex:1}:{}},children:[M("span",{"data-model-sender":"sender",style:{alignItems:"center",color:"var(--popmelt-thread-muted-strong)",display:"flex",fontSize:12,fontWeight:500,gap:4},children:[f(vs,{provider:e.provider,size:12,style:{color:"var(--popmelt-thread-muted-strong)"}}),f("span",{children:Wc(e.model,e.provider)})]}),f("span",{"data-message-timestamp":!0,style:{color:"var(--popmelt-thread-muted)",fontSize:12,fontWeight:400,marginLeft:"auto"},children:Ja(t)})]})]}):M("div",{"data-msg":!0,style:{display:"flex",flexDirection:"column",gap:16,position:"relative"},children:[M("div",{style:{background:"var(--popmelt-thread-soft)",border:"1px solid var(--popmelt-thread-border)",borderRadius:24,padding:16,display:"flex",flexDirection:"column",gap:12},children:[e.status==="dismissed"?M("div",{style:{alignItems:"center",display:"flex",gap:6,opacity:.45},children:[f(yl,{"aria-hidden":"true",size:16,strokeWidth:2.5}),f("span",{style:{fontSize:14,fontWeight:600},children:"Model suggestion dismissed"})]}):M("div",{style:{alignItems:"center",display:"flex",gap:8},children:[f(gl,{"aria-hidden":"true",color:r,size:16,strokeWidth:2}),f("span",{style:{fontSize:14,fontWeight:600},children:"Model suggestion"})]}),e.status==="pending"&&d&&S.length>0&&M("div",{style:{alignItems:"center",display:"flex",fontSize:14,lineHeight:1.35,marginTop:4},children:[f("span",{style:{fontWeight:600},children:Y}),M("div",{style:{display:"flex",gap:12,marginLeft:"auto"},children:[f("button",{type:"button",disabled:o,onClick:k,style:{background:"transparent",border:0,cursor:"pointer",fontFamily:ln,fontSize:12,fontWeight:600,color:"var(--popmelt-thread-muted-strong)",padding:0},children:"Select all"}),f("button",{type:"button",disabled:o,onClick:G,style:{background:"transparent",border:0,cursor:"pointer",fontFamily:ln,fontSize:12,fontWeight:600,color:"var(--popmelt-thread-muted-strong)",padding:0},children:"Clear"})]})]}),e.status==="pending"&&f(ct,{children:S.length>0?f("div",{style:{display:"flex",flexDirection:"column",gap:8,marginTop:4},children:["rules","components","tokens","model"].flatMap(q=>w[q]).map(q=>{let ie=h.has(q.id);return M("label",{style:{alignItems:"start",color:c&&!ie?"var(--popmelt-thread-secondary)":"var(--popmelt-thread-primary)",columnGap:8,cursor:c?"pointer":"default",display:"grid",fontSize:14,gridTemplateColumns:c?"14px minmax(0, 1fr)":"minmax(0, 1fr)",lineHeight:1.35,padding:"0 0 8px 12px"},children:[c&&f("input",{type:"checkbox",checked:ie,disabled:o,onChange:()=>Z(q.id),style:{WebkitAppearance:"none",appearance:"none",margin:"1px 0 0",width:14,height:14,backgroundColor:ie?r:"transparent",border:`1px solid ${ie?r:"rgba(0,0,0,0.34)"}`,boxSizing:"border-box",cursor:o?"default":"pointer"}}),M("span",{style:{minWidth:0},children:[f("span",{style:{fontWeight:700},children:q.label}),M("span",{children:[" \u2014 ",q.detail]}),q.currentValue!==void 0&&M("span",{style:{display:"block",marginTop:2,opacity:.5},children:["was ",sa(q.currentValue)]})]})]},q.id)})}):f("div",{style:{color:"var(--popmelt-thread-muted-strong)",fontSize:14,lineHeight:1.4},children:"No concrete model diff could be derived from this proposal."})}),!d&&e.status==="pending"&&f("div",{style:{color:"#92400e",background:"rgba(180,83,9,0.06)",border:"1px solid rgba(180,83,9,0.2)",padding:8,fontSize:12,lineHeight:1.4},children:f("strong",{children:"A competing product decision is pending"})}),e.status==="pending"&&d&&M("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:6},children:[M("button",{type:"button",disabled:o,onClick:a,onMouseEnter:()=>{o||x("reject")},onMouseLeave:()=>x(null),style:{...Ud,alignItems:"center",background:"var(--popmelt-thread-control)",border:0,color:"var(--popmelt-thread-primary)",display:"flex",fontSize:12,justifyContent:"space-between",padding:"8px 12px",transition:"background-color 120ms ease"},children:[f("span",{children:"Reject"}),f(yl,{"aria-hidden":"true",color:"#dd4141",size:12,strokeWidth:2.5})]}),M("button",{type:"button",disabled:o||D.length===0,onClick:()=>i(e,D,H),onMouseEnter:()=>{!o&&D.length>0&&x("confirm")},onMouseLeave:()=>x(null),style:{...qd,alignItems:"center",display:"flex",fontSize:12,background:g==="confirm"?"var(--popmelt-thread-action-hover)":"var(--popmelt-thread-action)",borderColor:g==="confirm"?"var(--popmelt-thread-action-hover)":"var(--popmelt-thread-action)",color:"var(--popmelt-thread-on-action)",justifyContent:"space-between",padding:"8px 12px",opacity:o||D.length===0?.45:1,cursor:o||D.length===0?"not-allowed":"pointer",transition:"background-color 120ms ease, border-color 120ms ease"},children:[f("span",{children:"Confirm"}),f(xi,{"aria-hidden":"true",color:"#61c920",size:12,strokeWidth:3})]})]}),e.status==="pending"&&!d&&M("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:[f("button",{type:"button",disabled:o,onClick:a,style:Ud,children:"Dismiss"}),f("button",{type:"button",disabled:o||!e.underlyingProposalId,onClick:l,style:{...qd,opacity:e.underlyingProposalId?1:.45},children:"Review decision"})]})]}),M("div",{style:{alignItems:"center",display:"flex",gap:4,marginTop:s?0:16,...s?{left:0,position:"absolute",right:0,top:"calc(100% + 7px)",zIndex:1}:{}},children:[M("span",{"data-model-sender":"sender",style:{alignItems:"center",color:"var(--popmelt-thread-muted-strong)",display:"flex",fontSize:12,fontWeight:500,gap:4},children:[f(vs,{provider:e.provider,size:12,style:{color:"var(--popmelt-thread-muted-strong)"}}),f("span",{children:Wc(e.model,e.provider)})]}),f("span",{"data-message-timestamp":!0,style:{color:"var(--popmelt-thread-muted)",fontSize:12,fontWeight:400,marginLeft:"auto"},children:Ja(t)})]})]})}var qd={border:"1px solid var(--popmelt-thread-action)",borderRadius:24,background:"var(--popmelt-thread-action)",color:"var(--popmelt-thread-on-action)",cursor:"pointer",fontFamily:ln,fontSize:12,fontWeight:700,padding:"6px 8px"},Ud={border:"1px solid var(--popmelt-thread-border)",borderRadius:16,background:"transparent",color:"var(--popmelt-thread-secondary)",cursor:"pointer",fontFamily:ln,fontSize:12,fontWeight:700,padding:"6px 8px"};function wS({onAttentionChange:e,threadId:t,bridgeUrl:n,accentColor:r,initialMessages:o=[],completedJobId:i,refreshKey:a,isStreaming:l,isQueued:s,queuePosition:d,activeJobId:c,streamingEvents:p,onClose:u,onReply:h,onContribute:m,onApproveSuggestion:g,onCancel:x,canManage:S=!0,readOnlyReason:D,lastError:H,onMouseEnter:w,temporarilyHidden:z=!1,instantVisibilityHandoff:Z=!1,backdropCursor:k,toolbarRef:G,surfaceRef:N,currentModel:Y,currentProvider:q,availableProviders:ie=[],models:I=[],modelIndex:Q=0,agentSettings:L,onProviderChange:F,onModelChange:R,onAgentSettingsChange:$,onModelMenuOpen:P,annotationNumber:A,annotationText:ne,onPreviousThread:re,onNextThread:ee,preferredSide:oe="right",modal:U=!0}){let[fe,,ge]=_s(),K=Ws[fe],Te={"--popmelt-thread-surface":K.surface,"--popmelt-thread-raised":K.raisedSurface,"--popmelt-thread-soft":K.softSurface,"--popmelt-thread-control":K.control,"--popmelt-thread-primary":K.threadPrimary,"--popmelt-thread-secondary":K.secondary,"--popmelt-thread-muted":K.muted,"--popmelt-thread-muted-strong":K.mutedStrong,"--popmelt-thread-border":K.border,"--popmelt-thread-hairline":K.hairline,"--popmelt-thread-soft-hairline":K.softHairline,"--popmelt-thread-action":K.actionSurface,"--popmelt-thread-on-action":K.actionForeground,"--popmelt-thread-action-hover":K.actionHover},[Me,Ee]=j(()=>o),[Ge,X]=j([]),[Oe,ve]=j(),Fe=Hr(il),qe=(Oe&&Fe?.peerColors?.[Oe.authorId])??r,je=Fe?.onThreadViewed;O(()=>{Oe!==void 0&&!z&&je?.(t)},[je,Oe,z,t]);let[$e,ce]=j(!1),[rt,at]=j(""),Be=Oe?.state==="pending",Ie=Oe===void 0?void 0:Be?m:Oe&&Oe.state!=="sent"?void 0:h,[_e,_t]=j([]);O(()=>(e?.(!z&&_e.length?{threadId:t,targets:_e}:null),()=>e?.(null)),[e,z,t,_e]);let wt=Se(()=>ww(ne,Me),[ne,Me]),[Pt,kt]=j([]),[lt,Ke]=j(!1),[jt,Vn]=j(!1),zt=nw({bridgeUrl:n,threadId:t,visible:!z,active:!!l,onPendingChange:Vn}),[rn,Ne]=j(o.length===0),$t=W(null);$t.current||($t.current=bw(t));let[y,ae]=j(()=>$t.current.text),[be,Ye]=j([]),[At,Tt]=j(!1),[Ae,Ze]=j(!1),Dt=W(null),me=W(null),We=W(null),Ve=W(null),gt=W(!1),ot=W(!1),Qe=W(!1),Mt=W(!1),Ue=W({selectionStart:$t.current.selectionStart,selectionEnd:$t.current.selectionEnd,selectionDirection:$t.current.selectionDirection}),[En,Dn]=j(!0),[An,po]=j(null),Gn=J(C=>po(C),[]),ut=W(null),ur=W(!0),Xt=W(null),Hn=W(0),Ht=W(null),pr=J((C,_)=>{let ye=C&&_.trim();ut.current&&(ut.current.style.opacity=ye?"0.65":"1")},[]),Rt=W(null),Nn=W(null),fo=W(null),wn=J(C=>{fo.current=C,N?.(C)},[N]),On=W(null),Fr=W(l),Cn=W(c),Kt=W(null);O(()=>{Fd(t,y,void 0,Ue.current)},[y,t]),It(()=>{let C=Nn.current,_=$t.current;!C||!_||_.text.length===0||C.setSelectionRange(_.selectionStart,_.selectionEnd,_.selectionDirection)},[]);let Mn=J(()=>{Dt.current&&(clearTimeout(Dt.current),Dt.current=null)},[]),Qt=J(()=>{me.current&&(clearTimeout(me.current),me.current=null)},[]),on=J(()=>{We.current&&(clearTimeout(We.current),We.current=null),Ve.current!==null&&(cancelAnimationFrame(Ve.current),Ve.current=null)},[]),qt=J(()=>{P?.(),on(),Ze(!0),Ve.current=requestAnimationFrame(()=>{Ve.current=null,Tt(!0)})},[on,P]),fr=J(()=>{on(),Tt(!1),We.current=setTimeout(()=>{We.current=null,Ze(!1)},Rw)},[on]),Fn=J(()=>{Mn(),Qt(),gt.current=!1,ot.current=!1,Qe.current=!1,fr()},[Qt,Mn,fr]),Sn=J(()=>{Qt(),Mn(),Dt.current=setTimeout(()=>{Dt.current=null,gt.current&&qt()},Cw)},[Qt,Mn,qt]),_r=J(()=>{Mn(),Qt(),!Qe.current&&(me.current=setTimeout(()=>{me.current=null,!gt.current&&!ot.current&&!Qe.current&&fr()},Mw))},[Qt,Mn,fr]),Yo=J(C=>{Qe.current=C,C?Qt():!gt.current&&!ot.current&&_r()},[Qt,_r]);O(()=>()=>{Mn(),Qt(),on()},[Qt,on,Mn]);let Nt=W(Wd(oe)),Zt=W({x:0,y:0}),sn=W(!1),hr=W({x:0,y:0,offsetX:0,offsetY:0}),mr=W(oe==="right"),[,Wr]=j(0),gr=`${Dw}:${oe}`;O(()=>{try{let C=localStorage.getItem(gr);if(C){let _=JSON.parse(C);if(typeof _.top=="number"&&typeof _.left=="number"){let{width:ye,height:Ce}=qo(),ke=gi(ye),De=Wa(ye),tt={top:Math.max(ke,Math.min(_.top,Ce-ke-200)),left:Math.max(ke,Math.min(_.left,De))};mr.current=tt.left>=De-2,Nt.current=tt,Wr(ft=>ft+1)}}}catch{}},[gr]),O(()=>{let C=()=>{if(mr.current)Nt.current=Wd(oe);else{let _=Nt.current,{width:ye,height:Ce}=qo(),ke=gi(ye),De=Wa(ye);Nt.current={top:Math.max(ke,Math.min(_.top,Ce-ke-200)),left:Math.max(ke,Math.min(_.left,De))}}Wr(_=>_+1)};return window.addEventListener("resize",C,{passive:!0}),window.visualViewport?.addEventListener("resize",C,{passive:!0}),()=>{window.removeEventListener("resize",C),window.visualViewport?.removeEventListener("resize",C)}},[oe]),O(()=>{let C=On.current;if(!C)return;let _=De=>{Cc(qo().width)||De.button!==0||De.target.closest("button")||(De.preventDefault(),De.stopPropagation(),sn.current=!0,hr.current={x:De.clientX,y:De.clientY,offsetX:Zt.current.x,offsetY:Zt.current.y})},ye=De=>{if(!sn.current)return;let tt=hr.current,ft=tt.offsetX+(De.clientX-tt.x),Le=tt.offsetY+(De.clientY-tt.y),{width:Bt}=qo(),pn=gi(Bt),Sr=Math.max(pn,Math.min(Wa(Bt),Nt.current.left+ft)),go=Math.max(pn,Nt.current.top+Le);Zt.current={x:Sr-Nt.current.left,y:go-Nt.current.top};let yo=fo.current;yo&&(yo.style.top=`${go}px`,yo.style.left=`${Sr}px`,yo.style.height=`${Sf(go,Sr,G?.current)}px`)},Ce=()=>{if(!sn.current)return;let De=Nt.current.top+Zt.current.y,tt=Nt.current.left+Zt.current.x;Nt.current={top:De,left:tt},Zt.current={x:0,y:0};let ft=Wa();mr.current=tt>=ft-2;try{localStorage.setItem(gr,JSON.stringify({top:De,left:tt}))}catch{}sn.current=!1},ke=()=>{Nt.current=Wd(oe),Zt.current={x:0,y:0},mr.current=oe==="right";try{localStorage.removeItem(gr)}catch{}Wr(De=>De+1)};return C.addEventListener("mousedown",_),window.addEventListener("mousemove",ye),window.addEventListener("mouseup",Ce),C.addEventListener("dblclick",ke),()=>{C.removeEventListener("mousedown",_),window.removeEventListener("mousemove",ye),window.removeEventListener("mouseup",Ce),C.removeEventListener("dblclick",ke)}},[gr,oe,G]);let et=J(async C=>{try{let _=await Yt(`${n}/thread/${t}`);if(!_.ok)throw new Error(`Thread fetch failed: ${_.status}`);let ye=await _.json(),Ce=ye.messages??[];X(ye.chatLinks??[]),ve(ye.suggestion??null);let ke=Yh(ye,location.pathname);_t(Le=>JSON.stringify(Le)===JSON.stringify(ke)?Le:ke);let De=C?.settleJobId,tt=Xh(Ce,De);(tt||C?.applyUnsettled)&&Ee(Le=>Ce.length===0&&Le.length>0?Le:Ce);let ft=Array.isArray(ye.modelProposals)?ye.modelProposals:ye.modelProposal?[ye.modelProposal]:[];return(tt||C?.applyUnsettled)&&kt(ft),Ne(!1),{messages:Ce,settled:tt}}catch{return Ne(!1),null}},[n,t]),yr=J(async(C,_)=>{if(!lt){Ke(!0);try{let ye=await Yt(`${n}/projection/proposals/${encodeURIComponent(C.id)}/${_}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:q,model:Y,...L})});if(ye.ok){let Ce=await ye.json();Ce.proposal&&kt(ke=>ke.map(De=>De.id===Ce.proposal.id?Ce.proposal:De)),await et()}}finally{Ke(!1)}}},[L,n,Y,q,et,lt]);O(()=>{a&&et({applyUnsettled:!0})},[a,et]);let Ei=J(async(C,_,ye)=>{if(!lt){Ke(!0);try{(await Yt(`${n}/memory/conversation-action`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:t,proposalId:C.proposalId,action:_,claim:ye,provider:q,model:Y,...L})})).ok&&await et()}finally{Ke(!1)}}},[L,n,Y,q,et,lt,t]),dn=J(async(C,_)=>{if(!lt){Ke(!0);try{(await Yt(`${n}/imprint/action`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:t,transactionId:C.transactionId,action:_})})).ok&&await et()}finally{Ke(!1)}}},[n,et,lt,t]),He=J(async(C,_,ye)=>{if(!(lt||_.length===0)){Ke(!0);try{let Ce=await Yt(`${n}/projection/proposals/${encodeURIComponent(C.id)}/apply-selected`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({changes:_,changeSummaries:ye.map(ke=>({group:ke.group,label:ke.label,detail:ke.detail,path:ke.path,value:ke.value,currentValue:ke.currentValue})),provider:q,model:Y,...L})});if(Ce.ok){let ke=await Ce.json();ke.proposal&&kt(De=>De.map(tt=>tt.id===ke.proposal.id?ke.proposal:tt)),await et()}}finally{Ke(!1)}}},[L,n,Y,q,et,lt]);O(()=>{let C=!1;Hn.current=0,Ne(o.length===0),Xt.current&&(clearTimeout(Xt.current),Xt.current=null);let _=async()=>{let ye=await et({applyUnsettled:!0});C||ye===null||ye.messages.length!==0||Hn.current>=5||(Hn.current+=1,Xt.current=setTimeout(_,200*Hn.current))};return _(),()=>{C=!0,Xt.current&&(clearTimeout(Xt.current),Xt.current=null)}},[et,o.length]);let gn=J(C=>{if(!C||Kt.current===C)return;Kt.current=C,Ht.current&&clearTimeout(Ht.current);let _=0,ye=async()=>{(await et({settleJobId:C,applyUnsettled:_>=5}))?.settled||_>=5||(_+=1,Ht.current=setTimeout(ye,80*_))};ye()},[et]);O(()=>{gn(i)},[i,gn]),O(()=>{Fr.current&&!l&&gn(Cn.current),Fr.current=l,c&&(Cn.current=c)},[c,l,gn]),O(()=>()=>{Ht.current&&clearTimeout(Ht.current)},[]);let cn=Se(()=>p?rS(p):[],[p]),en=Se(()=>vf(cn),[cn]),Qn=Se(()=>Af(cn.filter(C=>C.kind==="tool_group")),[cn]),Wt=Se(()=>Cf(Qn),[Qn]),da=Se(()=>Aw(p??[]),[p]),Vt=Se(()=>p?lS(p):void 0,[p]),Zn=Se(()=>Me.filter(C=>C.role==="human"&&C.replyToQuestion&&C.queued&&C.jobId!==c),[c,Me]),yn=Iw(Me,Oe?.submissionId,t,ut),Xo=!yn.replacementReady||!!(rt&&Oe?.state==="pending"),st=Se(()=>yn.messages.filter(C=>!(C.role==="human"&&C.replyToQuestion&&C.queued&&C.jobId!==c)),[c,yn.messages]),un=Se(()=>{let C=new Set,_=new Map,ye=new Map,Ce=new Map,ke=[];if(st.forEach((De,tt)=>{let ft=Pt.some(Le=>Le.status==="applied"&&Df(De,Le));if(mS(De,ft)){ke.push(tt);return}De.role!=="assistant"||ke.length===0||(_.set(tt,ke.map(Le=>st[Le])),ke.forEach(Le=>C.add(Le)),ke=[])}),ke.length>0){let De=ke[0]-1;if(st[De]?.role==="assistant"&&!C.has(De)){let tt=_.get(De)??[];_.set(De,[...tt,...ke.map(Le=>st[Le])]),ke.forEach(Le=>C.add(Le));let ft=ke[ke.length-1];ye.set(De,$f(st[ft],st[ft-1])),Ce.set(De,st[ft].timestamp)}else if(ke.length>1){let tt=ke[ke.length-1],ft=ke.slice(0,-1);_.set(tt,ft.map(Le=>st[Le])),ft.forEach(Le=>C.add(Le))}}return{hiddenIndices:C,messagesByTargetIndex:_,timestampByTargetIndex:Ce,workedForByTargetIndex:ye}},[Pt,st]),_n=Se(()=>{let C=new Map;for(let _ of Me)_.memoryReviewCard&&C.set(_.memoryReviewCard.proposalId,`${_.jobId}:${_.timestamp}`);return C},[Me]),er=Se(()=>{let C=[];return st.forEach((_,ye)=>{if(un.hiddenIndices.has(ye))return;let Ce=zf(_,st[ye-1]);_.role==="assistant"&&!Ce&&C.push(`message:${_.jobId}:${ye}`)}),l?"streaming":C[C.length-1]??null},[un,l,st]);O(()=>{let C=ut.current;if(!C)return;let _=()=>{let ye=C.scrollHeight-C.scrollTop-C.clientHeight;Dn(ye<40),ur.current=ye<2};return C.addEventListener("scroll",_,{passive:!0}),()=>{C.removeEventListener("scroll",_)}},[]),O(()=>{ur.current&&ut.current&&(ut.current.scrollTop=ut.current.scrollHeight)},[Me,cn.length,l,jt,yn.phase]),O(()=>{if(!Ae)return;let C=_=>{_.composedPath().some(ye=>ye instanceof HTMLElement&&ye.dataset.modelPicker!==void 0)||Fn()};return document.addEventListener("pointerdown",C,!0),()=>document.removeEventListener("pointerdown",C,!0)},[Fn,Ae]),O(()=>{let C=_=>{if(_.key==="Escape"){if(_.stopPropagation(),Ae){Fn();return}u()}};return document.addEventListener("keydown",C),()=>document.removeEventListener("keydown",C)},[Fn,Ae,u]);let tr=J((C,_,ye)=>{let Ce=C.trim();if(!Ce||!Ie)return!1;let ke=`_pending_reply_${Date.now()}`,De=/^@(Codex|Claude)(?:\s+|$)([\s\S]*)$/i.exec(Ce),tt=!!l&&!De,ft=_?_.map(Le=>URL.createObjectURL(Le)):void 0;return Ee(Le=>[...Le,{role:"human",timestamp:Date.now(),jobId:ke,replyToQuestion:Ce,...Be?{execution:"none"}:{},...tt?{queued:!0}:{},...ft?{replyImageUrls:ft}:{}}]),Promise.resolve().then(async()=>{if(!De)return Ie(t,Ce,_,ye);let{sendCanvasChatNote:Le}=await import("./canvas-chat-note-7HSL7MH6.mjs");return Le(n,t,Ge,De,S,!!_?.length)}).then(async Le=>{Le?.jobId&&(Ee(Bt=>Bt.map(pn=>pn.jobId===ke?{...pn,jobId:Le.jobId}:pn)),await et({applyUnsettled:!0}))}).catch(Le=>{Ee(Bt=>Bt.map(pn=>pn.jobId===ke?{...pn,queued:!1,errorKind:"send_rejected",error:Le instanceof Error?Le.message:"Reply was not sent. Check your connection and permissions before retrying."}:pn)),ae(Bt=>Bt||Ce),_&&Ye(Bt=>Bt.length?Bt:_)}),!0},[l,t,Ie,et,Be,n,S,Ge]),vr=J(()=>{let C=be.length>0?be:void 0;tr(y,C)&&(ae(""),Ye([]))},[y,be,tr]),br=J(C=>{let _=C.clipboardData.items,ye=[];for(let Ce=0;Ce<_.length;Ce++){let ke=_[Ce];if(ke.type.startsWith("image/")){let De=ke.getAsFile();De&&ye.push(De)}}if(ye.length>0){if(C.preventDefault(),Be){at("Suggestion discussion supports text for now; images were not attached.");return}Ye(Ce=>[...Ce,...ye])}},[Be]),ho=J(C=>{C.key==="Enter"&&(C.metaKey||C.ctrlKey)&&(C.preventDefault(),vr())},[vr]);It(()=>{let C=Nn.current;C&&(C.style.height="auto",C.style.height=`${Math.max(34,Math.min(C.scrollHeight,120))}px`,Rt.current&&(Rt.current.scrollTop=C.scrollTop))},[y]);let Br=Nt.current.top+Zt.current.y,Jr=Nt.current.left+Zt.current.x,xr=qo(),vn=Cc(xr.width),Wn=gi(xr.width),mo=Mc(xr.width),ca=Sf(Br,Jr,G?.current),Ko=Me.some(C=>C.memoryReviewCard&&!Me.some(_=>_.memoryReceipt?.proposalId===C.memoryReviewCard.proposalId)),wr=Be?"Add to suggestion (text only)":l?"Add steering context":Ko?"Ask for rule changes":"Ask for changes";return M(ct,{children:[U&&f("div",{"data-devtools":"thread-panel-backdrop",onPointerDown:C=>{C.target===C.currentTarget&&u()},style:{position:"fixed",inset:0,zIndex:9998,opacity:z?0:1,pointerEvents:z?"none":"auto",cursor:k,transition:z&&!Z?`opacity ${Is}ms ease`:"none"}}),M("div",{ref:wn,style:{...Nw,...Te,width:mo,height:vn?"auto":ca,position:"fixed",top:vn?`max(${Wn}px, env(safe-area-inset-top))`:Br,bottom:vn?`max(${Wn}px, env(safe-area-inset-bottom))`:void 0,left:vn?`max(${Wn}px, env(safe-area-inset-left))`:Jr,right:vn?`max(${Wn}px, env(safe-area-inset-right))`:void 0,zIndex:10004,opacity:z?0:1,pointerEvents:z?"none":"auto",transition:z&&!Z?`opacity ${Is}ms ease`:"none"},"data-devtools":"thread-panel","data-popmelt-thread-id":t,"data-popmelt-font":"sans","data-popmelt-theme":fe,"data-popmelt-theme-preference":ge,"aria-hidden":z||void 0,onMouseEnter:w,children:[zw,M("div",{style:{background:"var(--popmelt-thread-surface)",borderRadius:"12px 12px 16px 16px",display:"flex",flexDirection:"column",overflow:"hidden",flex:1,minHeight:0},children:[M("div",{ref:On,"data-popmelt-thread-header":!0,style:{...Ow,backgroundColor:qe,color:"#ffffff",cursor:"grab",overflow:vn?"visible":"hidden",paddingRight:vn?32:6,userSelect:"none",WebkitUserSelect:"none"},children:[M("span",{style:{display:"flex",alignItems:"center",gap:3,minWidth:0,flex:1},children:[(A||!Oe)&&f("span",{style:{flexShrink:0},children:A?`${A}.`:"Conversation"}),wt&&f("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:wt})]}),re&&ee&&M("span",{style:{display:"flex",flexShrink:0,gap:0,marginLeft:8},children:[f("button",{type:"button","aria-label":"Previous thread","data-popmelt-thread-nav":!0,onClick:re,style:{alignItems:"center",background:"transparent",border:0,color:"inherit",cursor:"pointer",display:"flex",height:Jo,minHeight:0,minWidth:0,boxSizing:"border-box",justifyContent:"center",margin:0,padding:0,position:"relative",width:Jo},children:f(_g,{"aria-hidden":"true",height:Jo,strokeWidth:2,width:Jo})}),f("button",{type:"button","aria-label":"Next thread","data-popmelt-thread-nav":!0,onClick:ee,style:{alignItems:"center",background:"transparent",border:0,color:"inherit",cursor:"pointer",display:"flex",height:Jo,minHeight:0,minWidth:0,boxSizing:"border-box",justifyContent:"center",margin:0,padding:0,position:"relative",width:Jo},children:f(Us,{"aria-hidden":"true",height:Jo,strokeWidth:2,width:Jo})})]}),vn&&f("button",{type:"button","aria-label":"Close thread",onClick:u,style:{alignItems:"center",background:"transparent",border:0,color:"inherit",cursor:"pointer",display:"flex",flexShrink:0,height:40,justifyContent:"center",margin:0,padding:0,position:"absolute",right:-4,top:"50%",transform:"translateY(-50%)",width:40},children:f(Xs,{"aria-hidden":"true",size:14,strokeWidth:2})})]}),f("style",{dangerouslySetInnerHTML:{__html:`
160
+ `)?cr(L):ki(L)})),e.chatDelivery&&M("span",{style:{alignSelf:"flex-end",display:"inline-flex",alignItems:"center",gap:4,color:"var(--popmelt-thread-muted)",fontSize:12},children:[f(Eu,{size:12,"aria-hidden":"true"}),e.chatDelivery==="claude-inbox"?"Sent to Claude":"Sent to Codex"]}),Ge&&f(qw,{memoryReview:e.memoryReview}),!w&&A&&ne.map((ve,Fe)=>{if(ve.kind==="approval")return f(ff,{approval:ve.approval},ve.approval.id);if(ve.kind==="tool_group")return null;if(ve.kind==="generated_image")return f(Tf,{src:uo(n,ve.url),onLightbox:o},Fe);if(ve.kind==="orientation")return f(Ef,{orientation:ve.orientation},Fe);if(re)return null;let qe=Ba(ve.text);return qe?f("div",{style:la,children:cr(qe)},Fe):null}),!w&&!A&&L&&f("div",{style:la,children:cr(L)}),!w&&re&&L&&f("div",{style:la,children:cr(L)}),!w&&e.memoryReviewCard&&S&&f(pS,{card:e.memoryReviewCard,accentColor:r,busy:u,resolved:h,superseded:m,onAction:(ve,Fe)=>S(e.memoryReviewCard,ve,Fe)}),!w&&e.imprintSummary&&D&&f(cS,{summary:e.imprintSummary,accentColor:r,busy:u,onAction:ve=>D(e.imprintSummary,ve)}),!w&&e.imprintRecognition&&f(uS,{receipt:e.imprintRecognition,accentColor:r}),X&&e.memoryReceipt&&M("div",{style:{alignItems:"center",color:"var(--popmelt-thread-primary)",display:"flex",fontSize:12,fontStyle:"italic",gap:6,lineHeight:1.35},children:[e.memoryReceipt.status==="committed"?f(io,{"aria-hidden":"true",color:r,size:12,strokeWidth:1.5}):f(yl,{"aria-hidden":"true",color:r,size:12,strokeWidth:1.5}),f("span",{style:{opacity:.5},children:e.memoryReceipt.status==="committed"?"Decision recorded":"Decision not recorded"})]}),R&&f("div",{style:la,children:cr(R)}),P&&f("div",{style:{backgroundColor:"var(--popmelt-thread-soft)",border:"1px solid var(--popmelt-thread-border)",borderRadius:24,color:"var(--popmelt-thread-muted-strong)",fontSize:14,letterSpacing:"0.14px",lineHeight:1.35,marginTop:-4,padding:16},children:$.map((ve,Fe)=>M("div",{children:[f("span",{style:{color:ve.status==="resolved"?"#10b981":"#f59e0b"},children:ve.status==="resolved"?"Done":"Needs review"}),ve.summary?` \u2014 ${ve.summary}`:""]},Fe))}),!w&&e.modelDetails?.length?f(Jw,{patterns:e.modelDetails}):null]},`${e.jobId}-${t}`)});function zf(e,t){return!t||e.role!=="human"||t.role!=="human"||e.authorPeer?.id!==t.authorPeer?.id||!e.replyToQuestion||!t.replyToQuestion?!1:e.jobId===t.jobId||e.timestamp-t.timestamp<6e4}function $f(e,t){if(!t||e.timestamp<=t.timestamp)return"a moment";let n=ty((e.segments??[]).flatMap(s=>s.kind==="approval"?[s.approval]:[]),t.timestamp,e.timestamp),r=Math.max(1,Math.round((e.timestamp-t.timestamp-n)/1e3));if(r<60)return`${r}s`;let o=Math.floor(r/60),i=r%60;if(o<60)return`${o}m${i?` ${i}s`:""}`;let a=Math.floor(o/60),l=o%60;return[`${a}h`,l?`${l}m`:"",i?`${i}s`:""].filter(Boolean).join(" ")}function mS(e,t){if(e.role!=="assistant"||e.cancelled||e.error)return!1;let n=Ba(e.responseText??"").trim(),r=(e.segments??[]).some(i=>i.kind==="approval"?!0:i.kind==="tool_group"?!1:i.kind==="generated_image"||i.kind==="orientation"?!0:Ba(i.text).trim().length>0),o=!!(n||e.question||e.resolutions?.length||e.memoryReviewCard||e.imprintSummary||r);return!!(e.memoryReceipt?.status==="committed"||e.toolsUsed?.length||e.segments?.some(i=>i.kind==="tool_group")||t)&&!o}function Df(e,t){return t.status==="applied"?t.applicationMode==="automatic"&&t.presentationJobId?e.jobId===t.presentationJobId:e.jobId===`apply-${t.id}`:t.status==="dismissed"?e.jobId===`dismiss-${t.id}`:t.presentationJobId?e.jobId===t.presentationJobId:t.runId&&e.jobId===t.runId?!0:!t.runId&&e.role==="assistant"&&!!e.responseText?.includes("Model suggestion ready")}function Or(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function Xl(e){if(e===void 0)return"undefined";try{return JSON.stringify(e)}catch{return String(e)}}function Kl(e,t){return Xl(e)===Xl(t)}function sa(e){if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);if(Array.isArray(e))return`${e.length} item${e.length===1?"":"s"}`;if(Or(e)){let t=Object.keys(e);return typeof e.value=="string"||typeof e.value=="number"?String(e.value):`{ ${t.slice(0,4).join(", ")}${t.length>4?", ...":""} }`}return String(e)}function gS(e,t){let n=e;for(let r of t){if(!n||typeof n!="object")return;n=n[String(r)]}return n}function Hf(e,t,n,r){if(!Or(e)){Kl(e,t)||r.push({id:`token:${n.join(".")}`,group:"tokens",label:n.join("."),detail:sa(e),path:n,value:e,currentValue:t});return}if("value"in e){Kl(e,t)||r.push({id:`token:${n.join(".")}`,group:"tokens",label:n.join("."),detail:sa(e),path:n,value:e,currentValue:t});return}for(let o of Object.keys(e))Hf(e[o],Or(t)?t[o]:void 0,[...n,o],r)}function yS(e,t){if(t.changes?.length)return t.changes.map(s=>{let d=s.path[0],c=d==="rules"||d==="components"||d==="tokens"?d:"model";return{id:s.id,group:c,label:s.label??s.path.map(String).join("."),detail:s.rationale,path:s.path,value:s.value,decisionIds:s.decisionIds,currentValue:gS(e,s.path)}});let n=t.proposedModel;if(!n)return[];let r=[],o=Array.isArray(e?.rules)?e.rules:[],i=Array.isArray(n.rules)?n.rules:[];for(let s=0;s<i.length;s++){let d=i[s];if(!Or(d))continue;let c=typeof d.id=="string"?d.id:`rule-${s}`,p=o.find(u=>Or(u)&&(typeof u.id=="string"&&u.id===c||Xl(u)===Xl(d)));Kl(p,d)||r.push({id:`rule:${c}`,group:"rules",label:typeof d.scope=="string"?d.scope:"rule",detail:typeof d.text=="string"?d.text:sa(d),path:["rules"],value:d,currentValue:p,ruleValue:d})}let a=Or(n.components)?n.components:{},l=Or(e?.components)?e.components:{};for(let s of Object.keys(a)){let d=a[s],c=l[s];Kl(d,c)||r.push({id:`component:${s}`,group:"components",label:s,detail:sa(d),path:["components",s],value:d,currentValue:c})}return Or(n.tokens)&&Hf(n.tokens,e?.tokens,["tokens"],r),r}function vS(e,t,n){let r=t.filter(a=>n.has(a.id)),o=r.filter(a=>a.group==="rules"&&a.ruleValue),i=r.filter(a=>!a.ruleValue).map(a=>({path:a.path,value:a.value,decisionIds:a.decisionIds}));if(o.length>0){let a=Array.isArray(e?.rules)?[...e.rules]:[];for(let l of o){let s=l.ruleValue,d=Or(s)&&typeof s.id=="string"?s.id:null,c=d?a.findIndex(p=>Or(p)&&p.id===d):-1;c>=0?a[c]=s:a.push(s)}i.push({path:["rules"],value:a,decisionIds:[...new Set(o.flatMap(l=>l.decisionIds??[]))]})}return i}function bS(e){return(e.selectedChanges??[]).flatMap((t,n)=>{if(!t.label&&!t.detail)return[];let r=t.group==="rules"||t.group==="components"||t.group==="tokens"||t.group==="model"?t.group:"model";return[{id:`selected:${e.id}:${n}`,group:r,label:t.label??r,detail:t.detail??sa(t.value),path:t.path??[],value:t.value,currentValue:t.currentValue}]})}function xS({proposal:e,timestamp:t,bridgeUrl:n,accentColor:r,busy:o,onApplySelected:i,onDismiss:a,onReviewUnderlying:l,hideModelSenderUntilHover:s=!1}){let d=e.authorityStatus==="accepted",c=e.status==="pending"&&d,[p,u]=j(null),[h,m]=j(()=>new Set),[g,x]=j(null),S=Se(()=>{let q=bS(e);return!c&&q.length>0?q:yS(p,e)},[p,c,e]),D=Se(()=>vS(p,S,h),[S,p,h]),H=Se(()=>S.filter(q=>h.has(q.id)),[S,h]),w=Se(()=>{let q={rules:[],components:[],tokens:[],model:[]};for(let ie of S)q[ie.group].push(ie);return q},[S]),z=S.map(q=>q.id).join("|");O(()=>{let q=!1;return Yt(`${n}/model`).then(ie=>ie.ok?ie.json():null).then(ie=>{q||u(ie?.model&&typeof ie.model=="object"?ie.model:null)}).catch(()=>{q||u(null)}),()=>{q=!0}},[n,e.id]),O(()=>{m(c&&z?new Set(z.split("|")):new Set)},[z,c,e.id]);let Z=J(q=>{m(ie=>{let I=new Set(ie);return I.has(q)?I.delete(q):I.add(q),I})},[]),k=J(()=>{m(new Set(S.map(q=>q.id)))},[S]),G=J(()=>{m(new Set)},[]),N=`${S.length} ${S.length===1?"change":"changes"}`,Y=S.length===1?`1 ${S[0]?.group==="rules"?"rule":S[0]?.group==="components"?"component":S[0]?.group==="tokens"?"token":"change"}`:N;return e.status==="applied"?M("div",{"data-msg":!0,style:{display:"flex",flexDirection:"column",gap:16,position:"relative"},children:[M("div",{style:{display:"flex",flexDirection:"column",gap:12},children:[M("div",{style:{alignItems:"center",color:"var(--popmelt-thread-primary)",display:"flex",fontSize:12,fontStyle:"italic",gap:6,lineHeight:1.35},children:[f(io,{"aria-hidden":"true",color:r,size:12,strokeWidth:1.5}),f("span",{style:{opacity:.5},children:"Decision recorded"})]}),M("div",{style:{alignItems:"center",color:"var(--popmelt-thread-primary)",display:"flex",fontSize:12,fontStyle:"italic",gap:6,lineHeight:1.35},children:[f(gl,{"aria-hidden":"true",color:r,size:12,strokeWidth:1.5}),f("span",{style:{opacity:.5},children:"Model updated"})]})]}),M("div",{style:{alignItems:"center",display:"flex",gap:4,marginTop:s?0:16,...s?{left:0,position:"absolute",right:0,top:"calc(100% + 7px)",zIndex:1}:{}},children:[M("span",{"data-model-sender":"sender",style:{alignItems:"center",color:"var(--popmelt-thread-muted-strong)",display:"flex",fontSize:12,fontWeight:500,gap:4},children:[f(vs,{provider:e.provider,size:12,style:{color:"var(--popmelt-thread-muted-strong)"}}),f("span",{children:Wc(e.model,e.provider)})]}),f("span",{"data-message-timestamp":!0,style:{color:"var(--popmelt-thread-muted)",fontSize:12,fontWeight:400,marginLeft:"auto"},children:Ja(t)})]})]}):M("div",{"data-msg":!0,style:{display:"flex",flexDirection:"column",gap:16,position:"relative"},children:[M("div",{style:{background:"var(--popmelt-thread-soft)",border:"1px solid var(--popmelt-thread-border)",borderRadius:24,padding:16,display:"flex",flexDirection:"column",gap:12},children:[e.status==="dismissed"?M("div",{style:{alignItems:"center",display:"flex",gap:6,opacity:.45},children:[f(yl,{"aria-hidden":"true",size:16,strokeWidth:2.5}),f("span",{style:{fontSize:14,fontWeight:600},children:"Model suggestion dismissed"})]}):M("div",{style:{alignItems:"center",display:"flex",gap:8},children:[f(gl,{"aria-hidden":"true",color:r,size:16,strokeWidth:2}),f("span",{style:{fontSize:14,fontWeight:600},children:"Model suggestion"})]}),e.status==="pending"&&d&&S.length>0&&M("div",{style:{alignItems:"center",display:"flex",fontSize:14,lineHeight:1.35,marginTop:4},children:[f("span",{style:{fontWeight:600},children:Y}),M("div",{style:{display:"flex",gap:12,marginLeft:"auto"},children:[f("button",{type:"button",disabled:o,onClick:k,style:{background:"transparent",border:0,cursor:"pointer",fontFamily:ln,fontSize:12,fontWeight:600,color:"var(--popmelt-thread-muted-strong)",padding:0},children:"Select all"}),f("button",{type:"button",disabled:o,onClick:G,style:{background:"transparent",border:0,cursor:"pointer",fontFamily:ln,fontSize:12,fontWeight:600,color:"var(--popmelt-thread-muted-strong)",padding:0},children:"Clear"})]})]}),e.status==="pending"&&f(ct,{children:S.length>0?f("div",{style:{display:"flex",flexDirection:"column",gap:8,marginTop:4},children:["rules","components","tokens","model"].flatMap(q=>w[q]).map(q=>{let ie=h.has(q.id);return M("label",{style:{alignItems:"start",color:c&&!ie?"var(--popmelt-thread-secondary)":"var(--popmelt-thread-primary)",columnGap:8,cursor:c?"pointer":"default",display:"grid",fontSize:14,gridTemplateColumns:c?"14px minmax(0, 1fr)":"minmax(0, 1fr)",lineHeight:1.35,padding:"0 0 8px 12px"},children:[c&&f("input",{type:"checkbox",checked:ie,disabled:o,onChange:()=>Z(q.id),style:{WebkitAppearance:"none",appearance:"none",margin:"1px 0 0",width:14,height:14,backgroundColor:ie?r:"transparent",border:`1px solid ${ie?r:"rgba(0,0,0,0.34)"}`,boxSizing:"border-box",cursor:o?"default":"pointer"}}),M("span",{style:{minWidth:0},children:[f("span",{style:{fontWeight:700},children:q.label}),M("span",{children:[" \u2014 ",q.detail]}),q.currentValue!==void 0&&M("span",{style:{display:"block",marginTop:2,opacity:.5},children:["was ",sa(q.currentValue)]})]})]},q.id)})}):f("div",{style:{color:"var(--popmelt-thread-muted-strong)",fontSize:14,lineHeight:1.4},children:"No concrete model diff could be derived from this proposal."})}),!d&&e.status==="pending"&&f("div",{style:{color:"#92400e",background:"rgba(180,83,9,0.06)",border:"1px solid rgba(180,83,9,0.2)",padding:8,fontSize:12,lineHeight:1.4},children:f("strong",{children:"A competing product decision is pending"})}),e.status==="pending"&&d&&M("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:6},children:[M("button",{type:"button",disabled:o,onClick:a,onMouseEnter:()=>{o||x("reject")},onMouseLeave:()=>x(null),style:{...Ud,alignItems:"center",background:"var(--popmelt-thread-control)",border:0,color:"var(--popmelt-thread-primary)",display:"flex",fontSize:12,justifyContent:"space-between",padding:"8px 12px",transition:"background-color 120ms ease"},children:[f("span",{children:"Reject"}),f(yl,{"aria-hidden":"true",color:"#dd4141",size:12,strokeWidth:2.5})]}),M("button",{type:"button",disabled:o||D.length===0,onClick:()=>i(e,D,H),onMouseEnter:()=>{!o&&D.length>0&&x("confirm")},onMouseLeave:()=>x(null),style:{...qd,alignItems:"center",display:"flex",fontSize:12,background:g==="confirm"?"var(--popmelt-thread-action-hover)":"var(--popmelt-thread-action)",borderColor:g==="confirm"?"var(--popmelt-thread-action-hover)":"var(--popmelt-thread-action)",color:"var(--popmelt-thread-on-action)",justifyContent:"space-between",padding:"8px 12px",opacity:o||D.length===0?.45:1,cursor:o||D.length===0?"not-allowed":"pointer",transition:"background-color 120ms ease, border-color 120ms ease"},children:[f("span",{children:"Confirm"}),f(xi,{"aria-hidden":"true",color:"#61c920",size:12,strokeWidth:3})]})]}),e.status==="pending"&&!d&&M("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:[f("button",{type:"button",disabled:o,onClick:a,style:Ud,children:"Dismiss"}),f("button",{type:"button",disabled:o||!e.underlyingProposalId,onClick:l,style:{...qd,opacity:e.underlyingProposalId?1:.45},children:"Review decision"})]})]}),M("div",{style:{alignItems:"center",display:"flex",gap:4,marginTop:s?0:16,...s?{left:0,position:"absolute",right:0,top:"calc(100% + 7px)",zIndex:1}:{}},children:[M("span",{"data-model-sender":"sender",style:{alignItems:"center",color:"var(--popmelt-thread-muted-strong)",display:"flex",fontSize:12,fontWeight:500,gap:4},children:[f(vs,{provider:e.provider,size:12,style:{color:"var(--popmelt-thread-muted-strong)"}}),f("span",{children:Wc(e.model,e.provider)})]}),f("span",{"data-message-timestamp":!0,style:{color:"var(--popmelt-thread-muted)",fontSize:12,fontWeight:400,marginLeft:"auto"},children:Ja(t)})]})]})}var qd={border:"1px solid var(--popmelt-thread-action)",borderRadius:24,background:"var(--popmelt-thread-action)",color:"var(--popmelt-thread-on-action)",cursor:"pointer",fontFamily:ln,fontSize:12,fontWeight:700,padding:"6px 8px"},Ud={border:"1px solid var(--popmelt-thread-border)",borderRadius:16,background:"transparent",color:"var(--popmelt-thread-secondary)",cursor:"pointer",fontFamily:ln,fontSize:12,fontWeight:700,padding:"6px 8px"};function wS({onAttentionChange:e,threadId:t,bridgeUrl:n,accentColor:r,initialMessages:o=[],completedJobId:i,refreshKey:a,isStreaming:l,isQueued:s,queuePosition:d,activeJobId:c,streamingEvents:p,onClose:u,onReply:h,onContribute:m,onApproveSuggestion:g,onCancel:x,canManage:S=!0,readOnlyReason:D,lastError:H,onMouseEnter:w,temporarilyHidden:z=!1,instantVisibilityHandoff:Z=!1,backdropCursor:k,toolbarRef:G,surfaceRef:N,currentModel:Y,currentProvider:q,availableProviders:ie=[],models:I=[],modelIndex:Q=0,agentSettings:L,onProviderChange:F,onModelChange:R,onAgentSettingsChange:$,onModelMenuOpen:P,annotationNumber:A,annotationText:ne,onPreviousThread:re,onNextThread:ee,preferredSide:oe="right",modal:U=!0}){let[fe,,ge]=_s(),K=Ws[fe],Te={"--popmelt-thread-surface":K.surface,"--popmelt-thread-raised":K.raisedSurface,"--popmelt-thread-soft":K.softSurface,"--popmelt-thread-control":K.control,"--popmelt-thread-primary":K.threadPrimary,"--popmelt-thread-secondary":K.secondary,"--popmelt-thread-muted":K.muted,"--popmelt-thread-muted-strong":K.mutedStrong,"--popmelt-thread-border":K.border,"--popmelt-thread-hairline":K.hairline,"--popmelt-thread-soft-hairline":K.softHairline,"--popmelt-thread-action":K.actionSurface,"--popmelt-thread-on-action":K.actionForeground,"--popmelt-thread-action-hover":K.actionHover},[Me,Ee]=j(()=>o),[Ge,X]=j([]),[Oe,ve]=j(),Fe=Hr(il),qe=(Oe&&Fe?.peerColors?.[Oe.authorId])??r,je=Fe?.onThreadViewed;O(()=>{Oe!==void 0&&!z&&je?.(t)},[je,Oe,z,t]);let[$e,ce]=j(!1),[rt,at]=j(""),Be=Oe?.state==="pending",Ie=Oe===void 0?void 0:Be?m:Oe&&Oe.state!=="sent"?void 0:h,[_e,_t]=j([]);O(()=>(e?.(!z&&_e.length?{threadId:t,targets:_e}:null),()=>e?.(null)),[e,z,t,_e]);let wt=Se(()=>ww(ne,Me),[ne,Me]),[Pt,kt]=j([]),[lt,Ke]=j(!1),[jt,Vn]=j(!1),zt=nw({bridgeUrl:n,threadId:t,visible:!z,active:!!l,onPendingChange:Vn}),[rn,Ne]=j(o.length===0),$t=W(null);$t.current||($t.current=bw(t));let[y,ae]=j(()=>$t.current.text),[be,Ye]=j([]),[At,Tt]=j(!1),[Ae,Ze]=j(!1),Dt=W(null),me=W(null),We=W(null),Ve=W(null),gt=W(!1),ot=W(!1),Qe=W(!1),Mt=W(!1),Ue=W({selectionStart:$t.current.selectionStart,selectionEnd:$t.current.selectionEnd,selectionDirection:$t.current.selectionDirection}),[En,Dn]=j(!0),[An,po]=j(null),Gn=J(C=>po(C),[]),ut=W(null),ur=W(!0),Xt=W(null),Hn=W(0),Ht=W(null),pr=J((C,_)=>{let ye=C&&_.trim();ut.current&&(ut.current.style.opacity=ye?"0.65":"1")},[]),Rt=W(null),Nn=W(null),fo=W(null),wn=J(C=>{fo.current=C,N?.(C)},[N]),On=W(null),Fr=W(l),Cn=W(c),Kt=W(null);O(()=>{Fd(t,y,void 0,Ue.current)},[y,t]),It(()=>{let C=Nn.current,_=$t.current;!C||!_||_.text.length===0||C.setSelectionRange(_.selectionStart,_.selectionEnd,_.selectionDirection)},[]);let Mn=J(()=>{Dt.current&&(clearTimeout(Dt.current),Dt.current=null)},[]),Qt=J(()=>{me.current&&(clearTimeout(me.current),me.current=null)},[]),on=J(()=>{We.current&&(clearTimeout(We.current),We.current=null),Ve.current!==null&&(cancelAnimationFrame(Ve.current),Ve.current=null)},[]),qt=J(()=>{P?.(),on(),Ze(!0),Ve.current=requestAnimationFrame(()=>{Ve.current=null,Tt(!0)})},[on,P]),fr=J(()=>{on(),Tt(!1),We.current=setTimeout(()=>{We.current=null,Ze(!1)},Rw)},[on]),Fn=J(()=>{Mn(),Qt(),gt.current=!1,ot.current=!1,Qe.current=!1,fr()},[Qt,Mn,fr]),Sn=J(()=>{Qt(),Mn(),Dt.current=setTimeout(()=>{Dt.current=null,gt.current&&qt()},Cw)},[Qt,Mn,qt]),_r=J(()=>{Mn(),Qt(),!Qe.current&&(me.current=setTimeout(()=>{me.current=null,!gt.current&&!ot.current&&!Qe.current&&fr()},Mw))},[Qt,Mn,fr]),Yo=J(C=>{Qe.current=C,C?Qt():!gt.current&&!ot.current&&_r()},[Qt,_r]);O(()=>()=>{Mn(),Qt(),on()},[Qt,on,Mn]);let Nt=W(Wd(oe)),Zt=W({x:0,y:0}),sn=W(!1),hr=W({x:0,y:0,offsetX:0,offsetY:0}),mr=W(oe==="right"),[,Wr]=j(0),gr=`${Dw}:${oe}`;O(()=>{try{let C=localStorage.getItem(gr);if(C){let _=JSON.parse(C);if(typeof _.top=="number"&&typeof _.left=="number"){let{width:ye,height:Ce}=qo(),ke=gi(ye),De=Wa(ye),tt={top:Math.max(ke,Math.min(_.top,Ce-ke-200)),left:Math.max(ke,Math.min(_.left,De))};mr.current=tt.left>=De-2,Nt.current=tt,Wr(ft=>ft+1)}}}catch{}},[gr]),O(()=>{let C=()=>{if(mr.current)Nt.current=Wd(oe);else{let _=Nt.current,{width:ye,height:Ce}=qo(),ke=gi(ye),De=Wa(ye);Nt.current={top:Math.max(ke,Math.min(_.top,Ce-ke-200)),left:Math.max(ke,Math.min(_.left,De))}}Wr(_=>_+1)};return window.addEventListener("resize",C,{passive:!0}),window.visualViewport?.addEventListener("resize",C,{passive:!0}),()=>{window.removeEventListener("resize",C),window.visualViewport?.removeEventListener("resize",C)}},[oe]),O(()=>{let C=On.current;if(!C)return;let _=De=>{Cc(qo().width)||De.button!==0||De.target.closest("button")||(De.preventDefault(),De.stopPropagation(),sn.current=!0,hr.current={x:De.clientX,y:De.clientY,offsetX:Zt.current.x,offsetY:Zt.current.y})},ye=De=>{if(!sn.current)return;let tt=hr.current,ft=tt.offsetX+(De.clientX-tt.x),Le=tt.offsetY+(De.clientY-tt.y),{width:Bt}=qo(),pn=gi(Bt),Sr=Math.max(pn,Math.min(Wa(Bt),Nt.current.left+ft)),go=Math.max(pn,Nt.current.top+Le);Zt.current={x:Sr-Nt.current.left,y:go-Nt.current.top};let yo=fo.current;yo&&(yo.style.top=`${go}px`,yo.style.left=`${Sr}px`,yo.style.height=`${Sf(go,Sr,G?.current)}px`)},Ce=()=>{if(!sn.current)return;let De=Nt.current.top+Zt.current.y,tt=Nt.current.left+Zt.current.x;Nt.current={top:De,left:tt},Zt.current={x:0,y:0};let ft=Wa();mr.current=tt>=ft-2;try{localStorage.setItem(gr,JSON.stringify({top:De,left:tt}))}catch{}sn.current=!1},ke=()=>{Nt.current=Wd(oe),Zt.current={x:0,y:0},mr.current=oe==="right";try{localStorage.removeItem(gr)}catch{}Wr(De=>De+1)};return C.addEventListener("mousedown",_),window.addEventListener("mousemove",ye),window.addEventListener("mouseup",Ce),C.addEventListener("dblclick",ke),()=>{C.removeEventListener("mousedown",_),window.removeEventListener("mousemove",ye),window.removeEventListener("mouseup",Ce),C.removeEventListener("dblclick",ke)}},[gr,oe,G]);let et=J(async C=>{try{let _=await Yt(`${n}/thread/${t}`);if(!_.ok)throw new Error(`Thread fetch failed: ${_.status}`);let ye=await _.json(),Ce=ye.messages??[];X(ye.chatLinks??[]),ve(ye.suggestion??null);let ke=Yh(ye,location.pathname);_t(Le=>JSON.stringify(Le)===JSON.stringify(ke)?Le:ke);let De=C?.settleJobId,tt=Xh(Ce,De);(tt||C?.applyUnsettled)&&Ee(Le=>Ce.length===0&&Le.length>0?Le:Ce);let ft=Array.isArray(ye.modelProposals)?ye.modelProposals:ye.modelProposal?[ye.modelProposal]:[];return(tt||C?.applyUnsettled)&&kt(ft),Ne(!1),{messages:Ce,settled:tt}}catch{return Ne(!1),null}},[n,t]),yr=J(async(C,_)=>{if(!lt){Ke(!0);try{let ye=await Yt(`${n}/projection/proposals/${encodeURIComponent(C.id)}/${_}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:q,model:Y,...L})});if(ye.ok){let Ce=await ye.json();Ce.proposal&&kt(ke=>ke.map(De=>De.id===Ce.proposal.id?Ce.proposal:De)),await et()}}finally{Ke(!1)}}},[L,n,Y,q,et,lt]);O(()=>{a&&et({applyUnsettled:!0})},[a,et]);let Ei=J(async(C,_,ye)=>{if(!lt){Ke(!0);try{(await Yt(`${n}/memory/conversation-action`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:t,proposalId:C.proposalId,action:_,claim:ye,provider:q,model:Y,...L})})).ok&&await et()}finally{Ke(!1)}}},[L,n,Y,q,et,lt,t]),dn=J(async(C,_)=>{if(!lt){Ke(!0);try{(await Yt(`${n}/imprint/action`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:t,transactionId:C.transactionId,action:_})})).ok&&await et()}finally{Ke(!1)}}},[n,et,lt,t]),He=J(async(C,_,ye)=>{if(!(lt||_.length===0)){Ke(!0);try{let Ce=await Yt(`${n}/projection/proposals/${encodeURIComponent(C.id)}/apply-selected`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({changes:_,changeSummaries:ye.map(ke=>({group:ke.group,label:ke.label,detail:ke.detail,path:ke.path,value:ke.value,currentValue:ke.currentValue})),provider:q,model:Y,...L})});if(Ce.ok){let ke=await Ce.json();ke.proposal&&kt(De=>De.map(tt=>tt.id===ke.proposal.id?ke.proposal:tt)),await et()}}finally{Ke(!1)}}},[L,n,Y,q,et,lt]);O(()=>{let C=!1;Hn.current=0,Ne(o.length===0),Xt.current&&(clearTimeout(Xt.current),Xt.current=null);let _=async()=>{let ye=await et({applyUnsettled:!0});C||ye===null||ye.messages.length!==0||Hn.current>=5||(Hn.current+=1,Xt.current=setTimeout(_,200*Hn.current))};return _(),()=>{C=!0,Xt.current&&(clearTimeout(Xt.current),Xt.current=null)}},[et,o.length]);let gn=J(C=>{if(!C||Kt.current===C)return;Kt.current=C,Ht.current&&clearTimeout(Ht.current);let _=0,ye=async()=>{(await et({settleJobId:C,applyUnsettled:_>=5}))?.settled||_>=5||(_+=1,Ht.current=setTimeout(ye,80*_))};ye()},[et]);O(()=>{gn(i)},[i,gn]),O(()=>{Fr.current&&!l&&gn(Cn.current),Fr.current=l,c&&(Cn.current=c)},[c,l,gn]),O(()=>()=>{Ht.current&&clearTimeout(Ht.current)},[]);let cn=Se(()=>p?rS(p):[],[p]),en=Se(()=>vf(cn),[cn]),Qn=Se(()=>Af(cn.filter(C=>C.kind==="tool_group")),[cn]),Wt=Se(()=>Cf(Qn),[Qn]),da=Se(()=>Aw(p??[]),[p]),Vt=Se(()=>p?lS(p):void 0,[p]),Zn=Se(()=>Me.filter(C=>C.role==="human"&&C.replyToQuestion&&C.queued&&C.jobId!==c),[c,Me]),yn=Iw(Me,Oe?.submissionId,t,ut),Xo=!yn.replacementReady||!!(rt&&Oe?.state==="pending"),st=Se(()=>yn.messages.filter(C=>!(C.role==="human"&&C.replyToQuestion&&C.queued&&C.jobId!==c)),[c,yn.messages]),un=Se(()=>{let C=new Set,_=new Map,ye=new Map,Ce=new Map,ke=[];if(st.forEach((De,tt)=>{let ft=Pt.some(Le=>Le.status==="applied"&&Df(De,Le));if(mS(De,ft)){ke.push(tt);return}De.role!=="assistant"||ke.length===0||(_.set(tt,ke.map(Le=>st[Le])),ke.forEach(Le=>C.add(Le)),ke=[])}),ke.length>0){let De=ke[0]-1;if(st[De]?.role==="assistant"&&!C.has(De)){let tt=_.get(De)??[];_.set(De,[...tt,...ke.map(Le=>st[Le])]),ke.forEach(Le=>C.add(Le));let ft=ke[ke.length-1];ye.set(De,$f(st[ft],st[ft-1])),Ce.set(De,st[ft].timestamp)}else if(ke.length>1){let tt=ke[ke.length-1],ft=ke.slice(0,-1);_.set(tt,ft.map(Le=>st[Le])),ft.forEach(Le=>C.add(Le))}}return{hiddenIndices:C,messagesByTargetIndex:_,timestampByTargetIndex:Ce,workedForByTargetIndex:ye}},[Pt,st]),_n=Se(()=>{let C=new Map;for(let _ of Me)_.memoryReviewCard&&C.set(_.memoryReviewCard.proposalId,`${_.jobId}:${_.timestamp}`);return C},[Me]),er=Se(()=>{let C=[];return st.forEach((_,ye)=>{if(un.hiddenIndices.has(ye))return;let Ce=zf(_,st[ye-1]);_.role==="assistant"&&!Ce&&C.push(`message:${_.jobId}:${ye}`)}),l?"streaming":C[C.length-1]??null},[un,l,st]);O(()=>{let C=ut.current;if(!C)return;let _=()=>{let ye=C.scrollHeight-C.scrollTop-C.clientHeight;Dn(ye<40),ur.current=ye<2};return C.addEventListener("scroll",_,{passive:!0}),()=>{C.removeEventListener("scroll",_)}},[]),O(()=>{ur.current&&ut.current&&(ut.current.scrollTop=ut.current.scrollHeight)},[Me,cn.length,l,jt,yn.phase]),O(()=>{if(!Ae)return;let C=_=>{_.composedPath().some(ye=>ye instanceof HTMLElement&&ye.dataset.modelPicker!==void 0)||Fn()};return document.addEventListener("pointerdown",C,!0),()=>document.removeEventListener("pointerdown",C,!0)},[Fn,Ae]),O(()=>{let C=_=>{if(_.key==="Escape"){if(_.stopPropagation(),Ae){Fn();return}u()}};return document.addEventListener("keydown",C),()=>document.removeEventListener("keydown",C)},[Fn,Ae,u]);let tr=J((C,_,ye)=>{let Ce=C.trim();if(!Ce||!Ie)return!1;let ke=`_pending_reply_${Date.now()}`,De=/^@(Codex|Claude)(?:\s+|$)([\s\S]*)$/i.exec(Ce),tt=!!l&&!De,ft=_?_.map(Le=>URL.createObjectURL(Le)):void 0;return Ee(Le=>[...Le,{role:"human",timestamp:Date.now(),jobId:ke,replyToQuestion:Ce,...Be?{execution:"none"}:{},...tt?{queued:!0}:{},...ft?{replyImageUrls:ft}:{}}]),Promise.resolve().then(async()=>{if(!De)return Ie(t,Ce,_,ye);let{sendCanvasChatNote:Le}=await import("./canvas-chat-note-NHYL3T6J.mjs");return Le(n,t,Ge,De,S,!!_?.length)}).then(async Le=>{Le?.jobId&&(Ee(Bt=>Bt.map(pn=>pn.jobId===ke?{...pn,jobId:Le.jobId}:pn)),await et({applyUnsettled:!0}))}).catch(Le=>{Ee(Bt=>Bt.map(pn=>pn.jobId===ke?{...pn,queued:!1,errorKind:"send_rejected",error:Le instanceof Error?Le.message:"Reply was not sent. Check your connection and permissions before retrying."}:pn)),ae(Bt=>Bt||Ce),_&&Ye(Bt=>Bt.length?Bt:_)}),!0},[l,t,Ie,et,Be,n,S,Ge]),vr=J(()=>{let C=be.length>0?be:void 0;tr(y,C)&&(ae(""),Ye([]))},[y,be,tr]),br=J(C=>{let _=C.clipboardData.items,ye=[];for(let Ce=0;Ce<_.length;Ce++){let ke=_[Ce];if(ke.type.startsWith("image/")){let De=ke.getAsFile();De&&ye.push(De)}}if(ye.length>0){if(C.preventDefault(),Be){at("Suggestion discussion supports text for now; images were not attached.");return}Ye(Ce=>[...Ce,...ye])}},[Be]),ho=J(C=>{C.key==="Enter"&&(C.metaKey||C.ctrlKey)&&(C.preventDefault(),vr())},[vr]);It(()=>{let C=Nn.current;C&&(C.style.height="auto",C.style.height=`${Math.max(34,Math.min(C.scrollHeight,120))}px`,Rt.current&&(Rt.current.scrollTop=C.scrollTop))},[y]);let Br=Nt.current.top+Zt.current.y,Jr=Nt.current.left+Zt.current.x,xr=qo(),vn=Cc(xr.width),Wn=gi(xr.width),mo=Mc(xr.width),ca=Sf(Br,Jr,G?.current),Ko=Me.some(C=>C.memoryReviewCard&&!Me.some(_=>_.memoryReceipt?.proposalId===C.memoryReviewCard.proposalId)),wr=Be?"Add to suggestion (text only)":l?"Add steering context":Ko?"Ask for rule changes":"Ask for changes";return M(ct,{children:[U&&f("div",{"data-devtools":"thread-panel-backdrop",onPointerDown:C=>{C.target===C.currentTarget&&u()},style:{position:"fixed",inset:0,zIndex:9998,opacity:z?0:1,pointerEvents:z?"none":"auto",cursor:k,transition:z&&!Z?`opacity ${Is}ms ease`:"none"}}),M("div",{ref:wn,style:{...Nw,...Te,width:mo,height:vn?"auto":ca,position:"fixed",top:vn?`max(${Wn}px, env(safe-area-inset-top))`:Br,bottom:vn?`max(${Wn}px, env(safe-area-inset-bottom))`:void 0,left:vn?`max(${Wn}px, env(safe-area-inset-left))`:Jr,right:vn?`max(${Wn}px, env(safe-area-inset-right))`:void 0,zIndex:10004,opacity:z?0:1,pointerEvents:z?"none":"auto",transition:z&&!Z?`opacity ${Is}ms ease`:"none"},"data-devtools":"thread-panel","data-popmelt-thread-id":t,"data-popmelt-font":"sans","data-popmelt-theme":fe,"data-popmelt-theme-preference":ge,"aria-hidden":z||void 0,onMouseEnter:w,children:[zw,M("div",{style:{background:"var(--popmelt-thread-surface)",borderRadius:"12px 12px 16px 16px",display:"flex",flexDirection:"column",overflow:"hidden",flex:1,minHeight:0},children:[M("div",{ref:On,"data-popmelt-thread-header":!0,style:{...Ow,backgroundColor:qe,color:"#ffffff",cursor:"grab",overflow:vn?"visible":"hidden",paddingRight:vn?32:6,userSelect:"none",WebkitUserSelect:"none"},children:[M("span",{style:{display:"flex",alignItems:"center",gap:3,minWidth:0,flex:1},children:[(A||!Oe)&&f("span",{style:{flexShrink:0},children:A?`${A}.`:"Conversation"}),wt&&f("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:wt})]}),re&&ee&&M("span",{style:{display:"flex",flexShrink:0,gap:0,marginLeft:8},children:[f("button",{type:"button","aria-label":"Previous thread","data-popmelt-thread-nav":!0,onClick:re,style:{alignItems:"center",background:"transparent",border:0,color:"inherit",cursor:"pointer",display:"flex",height:Jo,minHeight:0,minWidth:0,boxSizing:"border-box",justifyContent:"center",margin:0,padding:0,position:"relative",width:Jo},children:f(_g,{"aria-hidden":"true",height:Jo,strokeWidth:2,width:Jo})}),f("button",{type:"button","aria-label":"Next thread","data-popmelt-thread-nav":!0,onClick:ee,style:{alignItems:"center",background:"transparent",border:0,color:"inherit",cursor:"pointer",display:"flex",height:Jo,minHeight:0,minWidth:0,boxSizing:"border-box",justifyContent:"center",margin:0,padding:0,position:"relative",width:Jo},children:f(Us,{"aria-hidden":"true",height:Jo,strokeWidth:2,width:Jo})})]}),vn&&f("button",{type:"button","aria-label":"Close thread",onClick:u,style:{alignItems:"center",background:"transparent",border:0,color:"inherit",cursor:"pointer",display:"flex",flexShrink:0,height:40,justifyContent:"center",margin:0,padding:0,position:"absolute",right:-4,top:"50%",transform:"translateY(-50%)",width:40},children:f(Xs,{"aria-hidden":"true",size:14,strokeWidth:2})})]}),f("style",{dangerouslySetInnerHTML:{__html:`
176
161
  [data-devtools="thread-panel"] ::selection {
177
162
  background: color-mix(in srgb, ${qe} 15%, transparent);
178
163
  color: inherit;