page-harness 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/html2canvas-Dn6bw578.js","assets/rolldown-runtime-hePW80VL.js","assets/jspdf.es.min-Qzb6sJ_Q.js","assets/ws-DAWfQL6l.js","assets/ws-DtkfUYSX.css"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,R as _,S as v,T as y,U as b,V as x,W as S,X as C,Y as w,Z as T,_ as E,a as D,b as O,c as k,d as A,f as j,g as M,h as N,i as P,j as F,k as I,l as L,m as R,n as z,p as B,q as V,r as H,s as U,t as W,u as G,v as K,w as ee,x as te,y as q,z as J}from"./ws-DAWfQL6l.js";var Y={class:`tt`},ne={key:2,class:`menu card`},X={class:`acts`},Z=[`disabled`],re={class:`btn sm`,href:`/__ph/history`,target:`_blank`,rel:`noopener`},ie={class:`list`},ae=[`onClick`],oe={class:`tt`},se={class:`meta faint`},ce={class:`mt`},le=K(l({__name:`ChatSwitcher`,props:{store:{}},setup(e){let r=e.store,i=d(!1),s=d(!1),c=d(``),l=d(),v=d();function b(){c.value=r.chat.value?.title??``,s.value=!0,i.value=!1,f(()=>v.value?.select())}async function C(){s.value&&(s.value=!1,c.value.trim()&&c.value!==r.chat.value?.title&&await r.updateChat({title:c.value}))}let D=e=>{i.value&&l.value&&!e.composedPath().includes(l.value)&&(i.value=!1)};return J(()=>document.addEventListener(`mousedown`,D)),_(()=>document.removeEventListener(`mousedown`,D)),(e,d)=>(n(),m(`div`,{ref_key:`root`,ref:l,class:`switcher`},[s.value?S((n(),m(`input`,{key:0,ref_key:`input`,ref:v,"onUpdate:modelValue":d[0]||=e=>c.value=e,class:`input rn`,onKeydown:[a(C,[`enter`]),d[1]||=a(e=>s.value=!1,[`esc`])],onBlur:C},null,544)),[[y,c.value]]):(n(),m(`button`,{key:1,class:`cur`,"data-testid":`chat-switcher`,onClick:d[2]||=e=>i.value=!i.value,onDblclick:b},[t(`span`,Y,T(u(r).chat.value?.title||u(j).newChat),1),o(M,{name:`chevron`})],32)),i.value?(n(),m(`div`,ne,[t(`div`,X,[t(`button`,{class:`btn sm`,"data-testid":`new-chat`,onClick:d[3]||=e=>(i.value=!1,u(r).newChat())},[o(M,{name:`plus`}),g(T(u(j).newChat),1)]),t(`button`,{class:`btn sm`,disabled:!u(r).chat.value,onClick:b},[o(M,{name:`edit`}),g(T(u(j).rename),1)],8,Z),t(`a`,re,[o(M,{name:`history`}),g(T(u(j).history),1)])]),t(`div`,ie,[(n(!0),m(h,null,x(u(r).chats.value,e=>(n(),m(`button`,{key:e.id,class:w([`item`,{on:e.id===u(r).chat.value?.id}]),onClick:t=>(i.value=!1,u(r).switchChat(e.id))},[t(`span`,oe,T(e.title||u(j).untitled),1),t(`span`,se,[o(E,{id:e.agent,size:`xs`},null,8,[`id`]),t(`span`,ce,T(u(q)(e.agent).short)+T(e.model?` · ${e.model}`:``)+` · `+T(u(G)(e.updatedAt)),1)])],10,ae))),128))])])):p(`v-if`,!0)],512))}}),[[`__scopeId`,`data-v-3f95877a`]]),ue={class:`es`,"data-testid":`effort-picker`},de={class:`head`},fe=[`aria-pressed`,`aria-label`],pe={class:`tip`,role:`tooltip`},me={key:0},he={key:1,class:`side off`},Q={class:`mid`},$={class:`val`,"data-testid":`effort-value`},ge=[`disabled`,`title`],_e=[`aria-label`,`aria-valuemax`,`aria-valuenow`,`aria-valuetext`],ve=[`data-effort`,`title`],ye=K(l({__name:`EffortSlider`,props:{efforts:{},value:{},defaultEffort:{},model:{},fast:{type:Boolean},fastTier:{}},emits:[`change`,`model`,`fast`],setup(e,{emit:r}){let i=e,a=r,s=I(()=>{let e=i.fastTier?.description??``,t=/([\d.]+)\s*x\s*speed/i.exec(e)?.[1];return{title:t?U(j.value.fastSpeed,{n:t}):j.value.fastMode,sub:/increased usage/i.test(e)?j.value.fastUsage:t?``:e}}),c=d(),l=d(null),f=e=>e?j.value.effortNames[e]??e:``,_=I(()=>{let e=i.efforts.indexOf(i.value??i.defaultEffort??``);return e<0?0:e}),v=I(()=>l.value??_.value),y=I(()=>Math.max(1,i.efforts.length-1)),b=I(()=>v.value/y.value*100),S=I(()=>i.efforts[v.value]),E=I(()=>l.value===null&&!i.value&&!i.defaultEffort);function D(e){let t=i.efforts[e];if(t===void 0)return;let n=!i.value&&t===i.defaultEffort?null:t;n!==i.value&&a(`change`,n)}function O(e){let t=c.value.getBoundingClientRect(),n=Math.min(1,Math.max(0,(e-t.left)/t.width));return Math.round(n*y.value)}function k(e){e.currentTarget.setPointerCapture(e.pointerId),l.value=O(e.clientX)}function A(e){l.value!==null&&(l.value=O(e.clientX))}function N(){if(l.value===null)return;let e=l.value;l.value=null,D(e)}function P(e){let t=e.key===`ArrowRight`||e.key===`ArrowUp`?1:e.key===`ArrowLeft`||e.key===`ArrowDown`?-1:0;e.key===`Home`||e.key===`End`?(e.preventDefault(),D(e.key===`Home`?0:i.efforts.length-1)):t&&(e.preventDefault(),e.stopPropagation(),D(Math.min(i.efforts.length-1,Math.max(0,v.value+t))))}return(r,i)=>(n(),m(`div`,ue,[t(`div`,de,[e.fastTier?(n(),m(`button`,{key:0,class:w([`side fast`,{on:e.fast}]),type:`button`,"aria-pressed":e.fast,"aria-label":s.value.title,"data-testid":`fast-toggle`,onClick:i[0]||=t=>a(`fast`,!e.fast)},[o(M,{name:`zap`}),t(`span`,pe,[t(`b`,null,T(s.value.title),1),s.value.sub?(n(),m(`span`,me,T(s.value.sub),1)):p(`v-if`,!0)])],10,fe)):(n(),m(`span`,he,[o(M,{name:`zap`})])),t(`div`,Q,[t(`div`,$,T(E.value?u(j).effortDefault:f(S.value)),1),t(`button`,{class:`mdl`,type:`button`,onClick:i[1]||=e=>a(`model`)},[g(T(e.model),1),o(M,{name:`right`})])]),t(`button`,{class:`side rs`,type:`button`,disabled:!e.value,title:u(U)(u(j).effortReset,{v:f(e.defaultEffort)||u(j).effortDefault}),"data-testid":`effort-reset`,onClick:i[2]||=e=>a(`change`,null)},[o(M,{name:`reset`})],8,ge)]),t(`div`,{ref_key:`track`,ref:c,class:w([`track`,{unset:E.value}]),role:`slider`,tabindex:`0`,"aria-label":u(j).effort,"aria-valuemin":0,"aria-valuemax":e.efforts.length-1,"aria-valuenow":v.value,"aria-valuetext":E.value?u(j).effortDefault:f(S.value),onPointerdown:k,onPointermove:A,onPointerup:N,onPointercancel:i[3]||=e=>l.value=null,onKeydown:P},[t(`div`,{class:`fill`,style:C({width:`calc(12px + (100% - 24px) * ${b.value/100})`})},null,4),(n(!0),m(h,null,x(e.efforts,(e,t)=>(n(),m(`span`,{key:e,class:w([`dot`,{lit:t<=v.value}]),style:C({left:`calc(12px + (100% - 24px) * ${t/y.value})`}),"data-effort":e,"data-testid":`effort-option`,title:f(e)},null,14,ve))),128)),t(`span`,{class:`knob`,style:C({left:`calc(12px + (100% - 24px) * ${v.value/y.value})`})},null,4)],42,_e)]))}}),[[`__scopeId`,`data-v-ce9bf420`]]),be=[`disabled`,`title`],xe={class:`ag`},Se={class:`ml`},Ce=[`aria-expanded`,`aria-label`],we={class:`nm`},Te=[`aria-label`,`aria-activedescendant`],Ee=[`id`,`aria-selected`,`title`,`data-agent`,`onMousemove`,`onClick`],De={class:`nm`},Oe={key:0,class:`tag`},ke={key:0,class:`ni`,"data-testid":`agent-hint`},Ae={class:`mono`},je={class:`sbox`},Me=[`placeholder`],Ne={key:0,class:`state`},Pe={class:`lb`},Fe={key:0,class:`id mono`},Ie={key:1,class:`state`},Le={key:0,class:`gname`},Re=[`data-model`,`onMouseenter`,`onClick`],ze={class:`lb`},Be={key:0},Ve={key:0,class:`id mono`},He={class:`lb`},Ue={key:3,class:`state`},We={key:2,class:`foot faint`},Ge=K(l({__name:`ModelPicker`,props:{store:{}},setup(e){let r=e.store,a=d(!1),s=d(``),c=d(0),l=d(),v=d(),D=d(),k=d(360),A=I(()=>r.chat.value?.agent??``),N=I(()=>r.agents.value.find(e=>e.id===A.value)),P=I(()=>O(r.agents.value)),L=d(null),R=I(()=>r.agents.value.find(e=>e.id===L.value)),z=I(()=>r.chat.value?.model??null),B=I(()=>r.models.value[A.value]),V=I(()=>B.value===void 0),H=I(()=>B.value?.find(e=>e.isDefault)),W=I(()=>(B.value??[]).filter(e=>!e.isDefault)),G=(e,t)=>!t||e.id.toLowerCase().includes(t)||e.label.toLowerCase().includes(t),K=I(()=>W.value.filter(e=>G(e,s.value.trim().toLowerCase()))),ee=[[`Claude`,/^claude|^(sonnet|opus|haiku)$/i],[`GPT`,/^(gpt|o\d|codex)/i],[`Gemini`,/^gemini/i],[`Grok`,/grok/i],[`Composer`,/^composer/i],[`Hunyuan`,/^(hy\d|hunyuan)/i],[`DeepSeek`,/^deepseek/i],[`GLM`,/^glm/i],[`Kimi`,/^kimi/i],[`Qwen`,/^qwen/i]],te=e=>{let t=e.replace(/^[\w.@-]+\//,``);return ee.find(([,e])=>e.test(t))?.[0]??``},Y=I(()=>{let e=new Map;for(let t of K.value){let n=te(t.id);e.set(n,[...e.get(n)??[],t])}let t=[...ee.map(([e])=>e),``];return[...e.entries()].sort((e,n)=>t.indexOf(e[0])-t.indexOf(n[0])).map(([e,t])=>({name:e||j.value.groupOther,items:t}))}),ne=I(()=>Y.value.length>1),X=I(()=>{let e=s.value.trim();return e&&!/\s/.test(e)&&!W.value.some(t=>t.id===e)?e:``}),Z=I(()=>[...s.value.trim()?[]:[{kind:`default`}],...Y.value.flatMap(e=>e.items.map(e=>({kind:`model`,m:e}))),...X.value?[{kind:`custom`,id:X.value}]:[]]),re=e=>Z.value.findIndex(t=>t.kind===`model`&&t.m.id===e.id),ie=I(()=>r.chat.value?.effort??null),ae=I(()=>z.value?B.value?.find(e=>e.id===z.value)?.label??z.value:H.value?.label??j.value.defaultModel),oe=I(()=>ie.value?`${ae.value} · ${j.value.effortNames[ie.value]??ie.value}`:ae.value),se=I(()=>z.value?B.value?.find(e=>e.id===z.value):H.value),ce=I(()=>se.value?.efforts??[]),le=I(()=>!!r.chat.value?.fast&&!!se.value?.fastTier);async function ue(e){e!==ie.value&&await r.updateChat({effort:e})}function de(e){let t=s.value.trim().toLowerCase(),n=t?e.toLowerCase().indexOf(t):-1;return n<0?[{text:e,hit:!1}]:[{text:e.slice(0,n),hit:!1},{text:e.slice(n,n+t.length),hit:!0},{text:e.slice(n+t.length),hit:!1}].filter(e=>e.text)}function fe(){if(a.value)return pe();L.value=null,Q.value=!1,A.value&&r.loadModels(A.value);let e=l.value?.closest(`.composer`);k.value=Math.max(180,Math.min(440,(e?.getBoundingClientRect().top??400)-12)),s.value=``,c.value=0,a.value=!0,f(()=>v.value?.focus())}function pe(){a.value=!1}async function me(e){let t=e.kind==="default"?null:e.kind===`model`?e.m.id:e.id;pe(),t!==z.value&&await r.updateChat({model:t})}async function he(e){let t=r.agents.value.find(t=>t.id===e);if(t&&!t.available){L.value=L.value===e?null:e;return}L.value=null,e!==A.value&&(await r.updateChat({agent:e}),r.loadModels(e),c.value=0)}let Q=d(!1),$=d(0),ge=d(),_e=d();function ve(){$.value=Math.max(0,P.value.findIndex(e=>e.id===A.value)),Q.value=!0,f(()=>_e.value?.focus())}function Ge(e=!0){Q.value=!1,e&&f(()=>ge.value?.focus())}function Ke(){Q.value?Ge():ve()}async function qe(e){Ge(),await he(e)}let Je=d();function Ye(e){Q.value&&Je.value&&!e.composedPath().includes(Je.value)&&Ge(!1)}function Xe(e){e.isComposing||(e.key===`Enter`||e.key===` `||e.key===`ArrowDown`||e.key===`ArrowUp`)&&(e.preventDefault(),e.stopPropagation(),ve())}function Ze(e){if(e.isComposing)return;let t=P.value.length,n={ArrowDown:()=>Math.min(t-1,$.value+1),ArrowUp:()=>Math.max(0,$.value-1),Home:()=>0,End:()=>t-1};if(e.key in n)$.value=n[e.key]();else if(e.key===`Enter`||e.key===` `){let e=P.value[$.value];e&&qe(e.id)}else if(e.key===`Escape`)Ge();else if(e.key===`Tab`)return Ge(!1);else return;e.preventDefault(),e.stopPropagation(),f(()=>_e.value?.querySelector(`.ag-opt.active`)?.scrollIntoView({block:`nearest`}))}function Qe(e){if(!e.isComposing){if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=Z.value.length;t&&(c.value=(c.value+(e.key===`ArrowDown`?1:t-1))%t),f(()=>D.value?.querySelector(`.opt.active`)?.scrollIntoView({block:`nearest`}))}else if(e.key===`Enter`){e.preventDefault();let t=Z.value[c.value];t&&me(t)}else e.key===`Escape`&&(e.preventDefault(),pe())}}b(s,()=>c.value=0);let $e=e=>{a.value&&l.value&&!e.composedPath().includes(l.value)&&pe()};return J(()=>document.addEventListener(`mousedown`,$e)),_(()=>document.removeEventListener(`mousedown`,$e)),(e,d)=>(n(),m(`div`,{ref_key:`root`,ref:l,class:`mp`},[t(`button`,{class:w([`pill`,{on:a.value}]),disabled:!u(r).chat.value,"data-testid":`model-pill`,title:[N.value?.label??A.value,z.value??ae.value,le.value?u(j).fastShort:``].filter(Boolean).join(` · `),onClick:fe},[A.value?(n(),F(E,{key:0,id:A.value,size:`xs`,"data-testid":`pill-agent`},null,8,[`id`])):p(`v-if`,!0),t(`span`,xe,T(N.value?u(q)(N.value.id).short:A.value),1),d[8]||=t(`span`,{class:`sep`},`·`,-1),t(`span`,Se,T(oe.value),1),le.value?(n(),F(M,{key:1,name:`zap`,class:`fz`,"data-testid":`pill-fast`})):p(`v-if`,!0),o(M,{name:`chevron`,class:`chev`})],10,be),a.value?(n(),m(`div`,{key:0,class:`pop`,"data-testid":`model-picker`,style:C({maxHeight:`${k.value}px`}),onKeydown:Qe,onClick:Ye},[t(`div`,{ref_key:`agSel`,ref:Je,class:`agsel`},[t(`button`,{ref_key:`agTrigger`,ref:ge,class:w([`ag-trig`,{on:Q.value}]),"aria-haspopup":`listbox`,"aria-expanded":Q.value,"aria-label":`${u(j).agent}: ${N.value?.label??A.value}`,"data-testid":`agent-trigger`,onClick:Ke,onKeydown:Xe},[A.value?(n(),F(E,{key:0,id:A.value,size:`sm`},null,8,[`id`])):p(`v-if`,!0),t(`span`,we,T(N.value?u(q)(N.value.id).short:A.value),1),o(M,{name:`chevron`,class:`chev`})],42,Ce),Q.value?(n(),m(`div`,{key:0,ref_key:`agListEl`,ref:_e,class:`ag-list`,role:`listbox`,tabindex:`-1`,"aria-label":u(j).agent,"aria-activedescendant":P.value[$.value]?`ph-agent-${P.value[$.value].id}`:void 0,"data-testid":`agent-list`,onKeydown:Ze},[(n(!0),m(h,null,x(P.value,(e,r)=>(n(),m(`div`,{id:`ph-agent-${e.id}`,key:e.id,class:w([`ag-opt`,{active:r===$.value,on:e.id===A.value,off:!e.available}]),role:`option`,"aria-selected":e.id===A.value,title:e.available?[e.label,e.version,e.path].filter(Boolean).join(` · `):`${e.label} · ${u(j).notInstalled}`,"data-agent":e.id,"data-testid":`agent-option`,onMousemove:e=>$.value=r,onMousedown:d[0]||=i(()=>{},[`prevent`]),onClick:t=>qe(e.id)},[o(E,{id:e.id,size:`sm`,off:!e.available},null,8,[`id`,`off`]),t(`span`,De,T(u(q)(e.id).short),1),e.available?e.id===A.value?(n(),F(M,{key:1,name:`check`,class:`ck`})):p(`v-if`,!0):(n(),m(`span`,Oe,[o(M,{name:`download`}),g(T(u(j).notInstalled),1)]))],42,Ee))),128))],40,Te)):p(`v-if`,!0)],512),R.value?(n(),m(`div`,ke,[u(q)(R.value.id).install?(n(),m(h,{key:0},[g(T(u(U)(u(j).agentMissing,{agent:R.value.label}))+` `,1),t(`code`,Ae,T(u(q)(R.value.id).install),1)],64)):(n(),m(h,{key:1},[g(T(u(U)(u(j).agentMissingNoCmd,{agent:R.value.label})),1)],64)),g(` `+T(u(U)(u(j).agentPathHint,{flag:`--${R.value.id}-path`})),1)])):p(`v-if`,!0),t(`div`,je,[o(M,{name:`search`}),S(t(`input`,{ref_key:`search`,ref:v,"onUpdate:modelValue":d[1]||=e=>s.value=e,placeholder:u(j).searchModels,"data-testid":`model-search`},null,8,Me),[[y,s.value]])]),t(`div`,{ref_key:`listEl`,ref:D,class:`list`},[V.value?(n(),m(`div`,Ne,[d[9]||=t(`span`,{class:`spin`},null,-1),g(T(u(j).loadingModels),1)])):(n(),m(h,{key:1},[s.value.trim()?p(`v-if`,!0):(n(),m(`button`,{key:0,class:w([`opt`,{active:c.value===0,cur:!z.value}]),"data-testid":`model-default`,onMouseenter:d[2]||=e=>c.value=0,onClick:d[3]||=e=>me({kind:`default`})},[t(`span`,Pe,T(u(j).defaultAuto),1),H.value?(n(),m(`span`,Fe,T(H.value.label),1)):p(`v-if`,!0),z.value?p(`v-if`,!0):(n(),F(M,{key:1,name:`check`,class:`ck`}))],34)),B.value===null?(n(),m(`div`,Ie,T(u(j).modelsFailed),1)):p(`v-if`,!0),(n(!0),m(h,null,x(Y.value,e=>(n(),m(h,{key:e.name},[ne.value?(n(),m(`div`,Le,T(e.name),1)):p(`v-if`,!0),(n(!0),m(h,null,x(e.items,e=>(n(),m(`button`,{key:e.id,class:w([`opt`,{active:c.value===re(e),cur:z.value===e.id}]),"data-model":e.id,"data-testid":`model-option`,onMouseenter:t=>c.value=re(e),onClick:t=>me({kind:`model`,m:e})},[t(`span`,ze,[(n(!0),m(h,null,x(de(e.label),(e,t)=>(n(),m(h,{key:t},[e.hit?(n(),m(`mark`,Be,T(e.text),1)):(n(),m(h,{key:1},[g(T(e.text),1)],64))],64))),128))]),e.label===e.id?p(`v-if`,!0):(n(),m(`span`,Ve,T(e.id),1)),z.value===e.id?(n(),F(M,{key:1,name:`check`,class:`ck`})):p(`v-if`,!0)],42,Re))),128))],64))),128)),X.value?(n(),m(`button`,{key:2,class:w([`opt`,{active:c.value===Z.value.length-1}]),"data-testid":`model-custom`,onMouseenter:d[4]||=e=>c.value=Z.value.length-1,onClick:d[5]||=e=>me({kind:`custom`,id:X.value})},[o(M,{name:`plus`,class:`pl`}),t(`span`,He,T(u(U)(u(j).useCustom,{id:X.value})),1)],34)):p(`v-if`,!0),B.value&&!K.value.length&&!X.value&&s.value.trim()?(n(),m(`div`,Ue,T(u(j).noModels),1)):p(`v-if`,!0)],64))],512),ce.value.length>1?(n(),F(ye,{key:1,efforts:ce.value,value:ie.value,"default-effort":se.value?.defaultEffort,model:se.value?.label??ae.value,fast:le.value,"fast-tier":se.value?.fastTier,onChange:ue,onFast:d[6]||=e=>u(r).updateChat({fast:e}),onModel:d[7]||=e=>v.value?.focus()},null,8,[`efforts`,`value`,`default-effort`,`model`,`fast`,`fast-tier`])):p(`v-if`,!0),N.value?.version?(n(),m(`div`,We,[o(E,{id:N.value.id,size:`xs`},null,8,[`id`]),g(T(N.value.label)+` · `+T(u(U)(u(j).agentVersion,{v:N.value.version})),1)])):p(`v-if`,!0)],36)):p(`v-if`,!0)],512))}}),[[`__scopeId`,`data-v-f10ba9be`]]),Ke={class:`box`},qe={key:0,class:`drafts`},Je=[`title`],Ye={class:`lbl`},Xe=[`title`,`aria-label`,`onClick`],Ze=[`title`],Qe={class:`lbl`},$e=[`title`,`aria-label`,`onClick`],et=[`title`],tt=[`src`],nt={key:1,class:`fname`},rt={key:2,class:`spin`},it=[`title`,`onClick`],at=[`placeholder`],ot={class:`bar`},st=[`title`],ct=[`title`,`aria-label`,`disabled`],lt={class:`hint`},ut=K(l({__name:`Composer`,props:{store:{}},setup(e,{expose:r}){let a=e.store,s=d(),c=d(),l=d(!1),_=()=>{let e=s.value;e&&(e.style.height=`auto`,e.style.height=`${Math.min(Math.max(e.scrollHeight,40),128)}px`)};b(()=>a.draft.text,()=>f(_));function v(e){e.isComposing||e.keyCode===229||e.key===`Enter`&&!e.shiftKey&&!e.altKey&&(e.preventDefault(),C())}function C(){a.sendPrompt()&&f(()=>s.value?.focus())}function E(e){let t=[...e.clipboardData?.files??[]];t.length&&(e.preventDefault(),a.addFiles(t))}function D(){let e=c.value?.files;e?.length&&a.addFiles([...e]),c.value&&(c.value.value=``)}function O(e){l.value=!1;let t=[...e.dataTransfer?.files??[]];t.length&&a.addFiles(t)}return r({focus:()=>s.value?.focus()}),(e,r)=>(n(),m(`div`,{class:w([`composer`,{dragging:l.value}]),onDragover:r[3]||=i(e=>l.value=!0,[`prevent`]),onDragleave:r[4]||=e=>l.value=!1,onDrop:i(O,[`prevent`])},[t(`div`,Ke,[u(a).draft.picks.length||u(a).draft.marks.length||u(a).draft.attachments.length?(n(),m(`div`,qe,[(n(!0),m(h,null,x(u(a).draft.picks,(e,r)=>(n(),m(`span`,{key:e.id,class:`chip draft`,title:e.selector},[o(M,{name:`target`}),t(`span`,Ye,`<`+T(e.tagName.toLowerCase())+`> `+T(e.text||e.selector),1),t(`button`,{title:u(j).removeDraft,"aria-label":u(j).removeDraft,"data-testid":`remove-draft`,onClick:e=>u(a).draft.picks.splice(r,1)},[o(M,{name:`x`})],8,Xe)],8,Je))),128)),(n(!0),m(h,null,x(u(a).draft.marks,(e,r)=>(n(),m(`span`,{key:`m`+e.n,class:`chip draft`,title:e.note||void 0},[o(M,{name:`pen`}),t(`span`,Qe,T(u(j).marks)+` `+T(e.n)+T(e.note?` · ${e.note}`:``),1),t(`button`,{title:u(j).removeDraft,"aria-label":u(j).removeDraft,"data-testid":`remove-draft`,onClick:e=>u(a).draft.marks.splice(r,1)},[o(M,{name:`x`})],8,$e)],8,Ze))),128)),(n(!0),m(h,null,x(u(a).draft.attachments,(e,r)=>(n(),m(`span`,{key:`a`+r,class:w([`att`,{err:e.error}]),title:e.error||e.name},[e.preview?(n(),m(`img`,{key:0,src:e.preview,alt:``},null,8,tt)):(n(),m(`span`,nt,[o(M,{name:`file`}),g(T(e.name),1)])),e.uploading?(n(),m(`span`,rt)):p(`v-if`,!0),t(`button`,{title:u(j).removeDraft,onClick:e=>u(a).draft.attachments.splice(r,1)},[o(M,{name:`x`})],8,it)],10,et))),128))])):p(`v-if`,!0),S(t(`textarea`,{ref_key:`ta`,ref:s,"onUpdate:modelValue":r[0]||=e=>u(a).draft.text=e,rows:`1`,placeholder:u(a).running.value?u(j).placeholderBusy:u(j).placeholder,onKeydown:v,onPaste:E},null,40,at),[[y,u(a).draft.text]]),t(`div`,ot,[t(`button`,{class:`btn icon attach`,title:u(j).attach,onClick:r[1]||=e=>c.value?.click()},[o(M,{name:`clip`})],8,st),t(`input`,{ref_key:`fileInput`,ref:c,type:`file`,multiple:``,hidden:``,onChange:D},null,544),o(Ge,{store:u(a)},null,8,[`store`]),r[5]||=t(`span`,{class:`spacer`},null,-1),u(a).running.value?(n(),m(`button`,{key:0,class:`btn sm danger stop`,onClick:r[2]||=e=>u(a).send({type:`cancel`})},[o(M,{name:`stop`}),g(T(u(j).stop),1)])):p(`v-if`,!0),t(`button`,{class:`btn primary icon send`,title:u(j).send,"aria-label":u(j).send,disabled:!u(a).canSend.value||u(a).conn.value!==`ready`,"data-testid":`send`,onClick:C},[o(M,{name:`send`})],8,ct)])]),t(`div`,lt,T(u(j).enterHint),1)],34))}}),[[`__scopeId`,`data-v-6719d34f`]]),dt={key:0,class:`queue`},ft={class:`qh muted`},pt=[`onDragstart`,`onDragover`,`onDrop`],mt=[`title`,`onKeydown`],ht={class:`n faint`},gt={class:`txt`},_t={key:0,class:`chip`},vt={key:1,class:`chip`},yt=[`title`,`onClick`],bt=[`title`,`onClick`],xt=K(l({__name:`QueueList`,props:{store:{}},setup(e){let r=e.store,s=d(null),c=d(null);function l(e){let t=s.value;if(s.value=null,c.value=null,!t||t===e)return;let n=r.queue.value.map(e=>e.id);n.splice(n.indexOf(t),1),n.splice(n.indexOf(e),0,t),r.send({type:`queue_reorder`,ids:n})}function f(e,t){let n=r.queue.value.map(e=>e.id),i=n.indexOf(e),a=i+t;a<0||a>=n.length||([n[i],n[a]]=[n[a],n[i]],r.send({type:`queue_reorder`,ids:n}))}return(e,d)=>u(r).queue.value.length?(n(),m(`div`,dt,[t(`div`,ft,T(u(j).queue)+` · `+T(u(r).queue.value.length),1),(n(!0),m(h,null,x(u(r).queue.value,(e,h)=>(n(),m(`div`,{key:e.id,class:w([`qi`,{over:c.value===e.id,dragging:s.value===e.id}]),draggable:`true`,onDragstart:t=>s.value=e.id,onDragend:d[0]||=e=>{s.value=null,c.value=null},onDragover:i(t=>c.value=e.id,[`prevent`]),onDrop:i(t=>l(e.id),[`prevent`])},[t(`span`,{class:`grip`,title:u(j).dragToReorder,tabindex:`0`,onKeydown:[a(i(t=>f(e.id,-1),[`prevent`]),[`up`]),a(i(t=>f(e.id,1),[`prevent`]),[`down`])]},[o(M,{name:`grip`})],40,mt),t(`span`,ht,T(h+1),1),t(`span`,gt,T(e.text||(e.live?`Live`:`…`)),1),e.attachments.length?(n(),m(`span`,_t,`📎 `+T(e.attachments.length),1)):p(`v-if`,!0),e.picks.length||e.marks?.length?(n(),m(`span`,vt,`◎ `+T(e.picks.length+(e.marks?.length??0)),1)):p(`v-if`,!0),e.live?p(`v-if`,!0):(n(),m(`button`,{key:2,class:`btn ghost icon sm`,title:u(j).edit,onClick:t=>u(r).editQueued(e)},[o(M,{name:`edit`})],8,yt)),t(`button`,{class:`btn ghost icon sm`,title:u(j).withdraw,onClick:t=>u(r).send({type:`dequeue`,id:e.id})},[o(M,{name:`undo`})],8,bt)],42,pt))),128))])):p(`v-if`,!0)}}),[[`__scopeId`,`data-v-3e6df72c`]]),St={class:`rp`,"data-testid":`reviewer-panel`},Ct={class:`seg`},wt={key:0,class:`conn`},Tt={for:`rp-name`},Et=[`placeholder`],Dt=[`disabled`],Ot={key:1,class:`me`},kt={class:`av`},At={class:`who`},jt={"data-testid":`reviewer-me`},Mt={class:`muted`},Nt={class:`stats`},Pt={class:`how`},Ft={key:0},It={class:`muted small`},Lt=K(l({__name:`ReviewerPanel`,props:{store:{}},setup(e){let r=e.store,a=d(r.me.value?.name??``);b(()=>r.me.value?.name,e=>e&&(a.value=e));let s=I(()=>!!r.me.value?.name),c=d(!1),l=I(()=>r.review.value.items.filter(e=>e.status===`open`).length),f=I(()=>r.review.value.items.filter(e=>e.author.id===r.me.value?.id).length);function h(){a.value.trim()&&(r.setName(a.value.trim()),c.value=!1)}return(e,d)=>(n(),m(`div`,St,[t(`header`,null,[o(M,{name:`pen`}),t(`b`,null,T(u(j).reviewerTitle),1),d[4]||=t(`span`,{class:`spacer`},null,-1),t(`div`,Ct,[t(`button`,{class:w([`btn sm`,{on:u(k)===`zh-CN`}]),onClick:d[0]||=e=>u(A)(`zh-CN`)},`中`,2),t(`button`,{class:w([`btn sm`,{on:u(k)===`en`}]),onClick:d[1]||=e=>u(A)(`en`)},`EN`,2)])]),u(r).conn.value===`ready`?p(`v-if`,!0):(n(),m(`div`,wt,T(u(r).conn.value===`connecting`?u(j).connecting:u(j).netError),1)),t(`main`,null,[!s.value||c.value?(n(),m(`form`,{key:0,class:`name`,onSubmit:i(h,[`prevent`])},[t(`label`,Tt,T(u(j).reviewerNameLabel),1),S(t(`input`,{id:`rp-name`,"onUpdate:modelValue":d[2]||=e=>a.value=e,class:`input`,maxlength:`40`,placeholder:u(j).reviewerNamePh,"data-testid":`reviewer-name`,autofocus:``},null,8,Et),[[y,a.value]]),t(`button`,{class:`btn primary`,type:`submit`,disabled:!a.value.trim(),"data-testid":`reviewer-save`},T(u(j).reviewerJoin),9,Dt)],32)):(n(),m(`div`,Ot,[t(`div`,kt,T(u(r).me.value.name.slice(0,1).toUpperCase()),1),t(`div`,At,[t(`b`,jt,T(u(r).me.value.name),1),t(`span`,Mt,T(u(j).reviewerRole),1)]),t(`button`,{class:`btn ghost sm`,onClick:d[3]||=e=>c.value=!0},T(u(j).rename),1)])),t(`div`,Nt,[t(`span`,null,T(u(U)(u(j).reviewerStats,{open:l.value,mine:f.value})),1)]),t(`ul`,Pt,[t(`li`,null,T(u(j).reviewerHowComment),1),u(r).mode.value===`review`?(n(),m(`li`,Ft,T(u(j).reviewerHowEdit),1)):p(`v-if`,!0),t(`li`,null,T(u(j).reviewerHowThread),1),t(`li`,null,T(u(j).reviewerHowApprove),1)]),t(`p`,It,T(u(j).reviewerLimits),1)])]))}}),[[`__scopeId`,`data-v-c732b20b`]]),Rt=[`title`],zt={key:0,class:`dot`},Bt={key:0,class:`menu card`},Vt={class:`h`},Ht={class:`tog`},Ut={class:`desc`},Wt={class:`tog`},Gt={class:`desc`},Kt={class:`h`},qt={class:`field`},Jt={class:`muted`},Yt={class:`desc`},Xt={class:`share`},Zt=[`value`],Qt={key:2,class:`desc`},$t={class:`row`},en={class:`muted`},tn={class:`seg`},nn=K(l({__name:`SettingsMenu`,props:{store:{}},setup(e){let r=e.store,i=d(!1),s=d(``),c=d(!1);b(()=>r.me.value?.name,e=>s.value=e??``,{immediate:!0});function l(){s.value.trim()&&s.value.trim()!==r.me.value?.name&&r.setName(s.value.trim())}async function f(){if(r.share.value){try{await navigator.clipboard.writeText(r.share.value)}catch{let e=document.createElement(`textarea`);e.value=r.share.value,document.body.append(e),e.select(),document.execCommand(`copy`),e.remove()}c.value=!0,setTimeout(()=>c.value=!1,1500)}}let v=d(),x=I(()=>r.controlOn.value?r.controlOutdated.value||r.page.attached&&r.page.caps.pageControl===null&&r.pageStatus.value===`unsupported`?`unsupported`:r.pageStatus.value===`disabled`?`offline`:r.pageStatus.value:`disabled`),C=I(()=>j.value[`status_${x.value}`]),E=e=>{i.value&&v.value&&!e.composedPath().includes(v.value)&&(i.value=!1)};return J(()=>document.addEventListener(`mousedown`,E)),_(()=>document.removeEventListener(`mousedown`,E)),(e,d)=>(n(),m(`div`,{ref_key:`root`,ref:v,class:`settings`},[t(`button`,{class:`btn ghost icon`,title:u(j).settings,"data-testid":`settings`,onClick:d[0]||=e=>i.value=!i.value},[o(M,{name:`gear`}),u(r).controlOn.value?(n(),m(`span`,zt)):p(`v-if`,!0)],8,Rt),i.value?(n(),m(`div`,Bt,[t(`div`,Vt,T(u(j).settings),1),t(`label`,Ht,[t(`span`,null,T(u(j).allowControl),1),S(t(`input`,{"onUpdate:modelValue":d[1]||=e=>u(r).controlOn.value=e,class:`switch`,type:`checkbox`,"data-testid":`toggle-control`},null,512),[[ee,u(r).controlOn.value]])]),t(`p`,Ut,T(u(j).controlPrivacy),1),u(r).controlOn.value?(n(),m(`div`,{key:0,class:w([`status`,x.value]),"data-testid":`control-status`},[d[7]||=t(`i`,null,null,-1),g(T(C.value),1)],2)):p(`v-if`,!0),d[9]||=t(`hr`,null,null,-1),t(`label`,Wt,[t(`span`,null,T(u(j).liveToggle),1),S(t(`input`,{"onUpdate:modelValue":d[2]||=e=>u(r).liveOn.value=e,class:`switch`,type:`checkbox`,"data-testid":`toggle-live`},null,512),[[ee,u(r).liveOn.value]])]),t(`p`,Gt,T(u(r).mode.value===`review`?u(j).liveReviewDesc:u(j).liveDesc),1),d[10]||=t(`hr`,null,null,-1),t(`div`,Kt,T(u(j).teamTitle),1),t(`label`,qt,[t(`span`,Jt,T(u(j).myName),1),S(t(`input`,{"onUpdate:modelValue":d[3]||=e=>s.value=e,class:`input`,maxlength:`40`,"data-testid":`owner-name`,onChange:l,onKeydown:a(l,[`enter`])},null,544),[[y,s.value]])]),u(r).share.value?(n(),m(h,{key:1},[t(`p`,Yt,T(u(j).teamShareDesc),1),t(`div`,Xt,[t(`input`,{class:`input`,readonly:``,value:u(r).share.value,"data-testid":`share-link`,onFocus:d[4]||=e=>e.target.select()},null,40,Zt),t(`button`,{class:`btn sm`,onClick:f},T(c.value?u(j).copied:u(j).copyLink),1)])],64)):(n(),m(`p`,Qt,T(u(j).teamNoShare),1)),d[11]||=t(`hr`,null,null,-1),t(`div`,$t,[t(`span`,en,T(u(j).language),1),d[8]||=t(`span`,{class:`spacer`},null,-1),t(`div`,tn,[t(`button`,{class:w([`btn sm`,{on:u(k)===`zh-CN`}]),onClick:d[5]||=e=>u(A)(`zh-CN`)},`中文`,2),t(`button`,{class:w([`btn sm`,{on:u(k)===`en`}]),onClick:d[6]||=e=>u(A)(`en`)},`English`,2)])])])):p(`v-if`,!0)],512))}}),[[`__scopeId`,`data-v-e196614f`]]);function rn(e,t){let n=document.documentElement.dataset.appOrigin,r=window.parent!==window&&!!n,i=null;if(r){let r=new MessageChannel;i=r.port1,i.onmessage=e=>{let n=e.data;n&&typeof n==`object`&&typeof n.type==`string`&&t(n)},window.parent.postMessage({type:`ph:hello`,role:e},n,[r.port2])}return{embedded:r,send(e){i?.postMessage(e)}}}var an=(e,t)=>{try{let n=localStorage.getItem(e);return n===null?t:n===`1`}catch{return t}},on=(e,t)=>{try{localStorage.setItem(e,t?`1`:`0`)}catch{}};function sn(){let e=d([]),t=d(``),n=d(``),r=d(``),i=d(`source`),a=d({items:[],approvals:[]}),o=d(null),c=d(),l=d([]),u=d(null),f=d([]),p=d(!1),m=d(!1),h=d([]),g=d(null),_=d(new Set),y=d([]),x=s({}),S=d(`disabled`),C=d(!1),w=d(null),T=d(null),E=V({}),D=s({attached:!1,tab:``,url:``,title:``,visible:!0,caps:{pageControl:null,live:null}}),O=d(an(`ph:control`,!1)),j=d(an(`ph:live`,!0)),M=s({text:``,picks:[],marks:[],attachments:[]}),P=()=>{try{return localStorage.getItem(`ph:chat`)}catch{return null}},F=rn(`chat`,e=>U(e)),R=W(e=>H(e),()=>{R.send({type:`subscribe`,chat:u.value?.id??P(),role:`chat`}),z()});b(()=>R.state.value,(e,t)=>{e===`error`&&t!==`error`&&F.send({type:`ph:session-dead`})});function z(){R.send({type:`page_control`,on:O.value&&D.attached,attached:D.attached,visible:D.visible,tab:D.tab,version:D.caps.pageControl})}function H(s){switch(s.type){case`hello`:e.value=s.agents,t.value=s.defaultAgent,n.value=s.project,r.value=s.target,i.value=s.mode,o.value=s.me,c.value=s.share,G(),K();break;case`chats`:l.value=s.chats;break;case`snapshot`:{let e=s.snapshot;u.value=e.chat,f.value=e.turns,p.value=e.hasMore,h.value=e.queue,g.value=e.running,_.value=new Set(e.pendingAsks);try{localStorage.setItem(`ph:chat`,e.chat.id)}catch{}break}case`event`:if(s.event.chatId!==u.value?.id)break;if(N(f.value,s.event),s.event.t===`ask`&&(_.value=new Set([..._.value,s.event.askId])),s.event.t===`ask_answer`){let e=new Set(_.value);e.delete(s.event.askId),_.value=e}f.value=[...f.value];break;case`state`:if(s.chatId!==u.value?.id)break;u.value=s.chat,h.value=s.queue,g.value=s.running;break;case`live`:y.value=s.sessions,F.send({type:`ph:live-sessions`,sessions:JSON.parse(JSON.stringify(s.sessions))});break;case`review`:a.value=s.review,K();break;case`page_probe`:F.send({type:`ph:probe`,id:s.id,selector:s.selector});break;case`artifacts`:s.open&&F.send({type:`ph:open`,what:`artifacts`});break;case`page_cmd`:F.send({type:`ph:cmd`,id:s.id,cmd:s.cmd});break;case`page_cancel`:F.send({type:`ph:cmd-cancel`,id:s.id});break;case`page_status`:S.value=s.status,C.value!==s.busy&&F.send({type:`ph:busy`,busy:s.busy}),C.value=s.busy;break;case`notice`:T.value=s.message;break;case`error`:w.value=s.message,setTimeout(()=>w.value===s.message&&(w.value=null),5e3)}}function U(e){switch(e.type){case`ph:attach`:D.attached=!0,D.tab=e.tab,D.url=e.url,D.title=e.title,D.visible=e.visible,D.caps=e.caps,v.value=e.theme,!L.value&&e.lang!==k.value&&A(e.lang,!1),F.send({type:`ph:ready`,role:`chat`}),F.send({type:`ph:lang`,lang:k.value}),F.send({type:`ph:control`,on:O.value}),G(),K(),F.send({type:`ph:live-sessions`,sessions:JSON.parse(JSON.stringify(y.value))}),z();break;case`ph:url`:D.url=e.url,D.title=e.title;break;case`ph:visibility`:D.visible=e.visible,R.send({type:`page_visibility`,visible:e.visible});break;case`ph:caps`:D.caps=e.caps,z();break;case`ph:pick`:M.picks.length<20&&!M.picks.some(t=>t.selector===e.pick.selector&&t.url===e.pick.url)&&M.picks.push(e.pick);break;case`ph:probe-result`:R.send({type:`probe_result`,id:e.id,result:e.result});break;case`ph:review-remove`:R.send({type:`review_remove`,id:e.id});break;case`ph:review-add`:R.send({type:`review_add`,draft:e.draft});break;case`ph:review-look`:R.send({type:`review_look`,id:e.id,look:e.look});break;case`ph:review-reply`:R.send({type:`review_reply`,id:e.id,text:e.text});break;case`ph:review-edit`:R.send({type:`review_edit`,id:e.id,note:e.note});break;case`ph:review-status`:R.send({type:`review_status`,id:e.id,status:e.status});break;case`ph:review-approve`:R.send({type:`review_approve`,url:e.url,status:e.status});break;case`ph:review-clear`:R.send({type:`review_clear`});break;case`ph:review-export`:R.send({type:`review_export`});break;case`ph:cmd-result`:R.send({type:`page_result`,id:e.id,result:e.result});break;case`ph:live`:R.send({type:`live_op`,request:e.request});break;case`ph:live-view`:x[e.sid]={current:e.current,display:e.display};break;case`ph:theme`:v.value=e.theme;break;case`ph:control-stop`:O.value=!1,R.send({type:`page_stop`})}}b(O,e=>{on(`ph:control`,e),F.send({type:`ph:control`,on:e}),z()}),b(j,e=>{on(`ph:live`,e),G()});function G(){F.send({type:`ph:live-caps`,on:j.value&&o.value?.access!==`reviewer`})}function K(){o.value&&F.send({type:`ph:review-items`,review:JSON.parse(JSON.stringify(a.value)),mode:i.value,me:{...o.value}})}b(k,e=>F.send({type:`ph:lang`,lang:e}));let ee=I(()=>O.value&&D.attached&&D.caps.pageControl!==null&&D.caps.pageControl!==1),te=I(()=>!!(M.text.trim()||M.picks.length||M.attachments.some(e=>!e.uploading&&!e.error))&&!M.attachments.some(e=>e.uploading));function q(){if(!te.value||!R.send({type:`prompt`,message:{text:M.text.trim(),picks:M.picks.map(e=>({...e})),marks:M.marks.length?M.marks.map(e=>({...e})):void 0,attachments:M.attachments.filter(e=>!e.error&&!e.uploading).map(({id:e,name:t,mime:n,size:r,kind:i})=>({id:e,name:t,mime:n,size:r,kind:i})),pageUrl:D.url||void 0}}))return!1;for(let e of M.attachments)e.preview&&URL.revokeObjectURL(e.preview);return M.text=``,M.picks=[],M.marks=[],M.attachments=[],!0}async function J(e){for(let t of e){let e=s({id:``,name:t.name||`pasted.png`,mime:t.type,size:t.size,kind:t.type.startsWith(`image/`)?`image`:`file`,uploading:!0,preview:t.type.startsWith(`image/`)?URL.createObjectURL(t):void 0});M.attachments.push(e);try{let n=await B.upload(t,e.name);Object.assign(e,n,{uploading:!1})}catch(t){e.uploading=!1,e.error=t instanceof Error?t.message:String(t)}}}function Y(e){R.send({type:`dequeue`,id:e.id}),M.text=e.text,M.picks=[...e.picks],M.marks=[...e.marks??[]],M.attachments=e.attachments.map(e=>({...e}))}async function ne(){if(u.value&&p.value&&!m.value&&f.value.length){m.value=!0;try{let e=await B.get(`chats/${u.value.id}/turns?before=${f.value[0].id}&limit=20`);f.value=[...e.turns.filter(e=>!f.value.some(t=>t.id===e.id)),...f.value],p.value=e.hasMore}finally{m.value=!1}}}function X(e){R.send({type:`subscribe`,chat:e,role:`chat`})}async function Z(){X((await B.post(`chats`,{agent:u.value?.agent,model:u.value?.model})).id)}async function re(e){u.value&&=await B.patch(`chats/${u.value.id}`,e)}async function ie(e){if(!E.value[e])try{let t=(await B.get(`agents/${e}/models`)).map(e=>typeof e==`string`?{id:e,label:e}:e).filter(e=>e?.id);E.value={...E.value,[e]:t}}catch{E.value={...E.value,[e]:null}}}function ae(e,t){R.send({type:`answer`,askId:e,answer:t})}function oe(e){R.send({type:`live_op`,request:e})}function se(e,t,n){let r=x[e]??={current:t??1,display:n??`inplace`};t!==void 0&&(r.current=t),n&&(r.display=n),F.send({type:`ph:live-nav`,sid:e,current:t,display:n})}let ce=typeof BroadcastChannel<`u`?new BroadcastChannel(`ph-panel`):null,le=e=>{e&&X(e)};ce&&(ce.onmessage=e=>{let t=e.data;t?.type===`switch-chat`&&le(t.id)}),window.addEventListener(`storage`,e=>{if(e.key===`ph:chat-switch`&&e.newValue)try{le(JSON.parse(e.newValue).id)}catch{}});function ue(e,t){try{localStorage.setItem(`ph:art-open`,JSON.stringify({name:e,version:t,ts:Date.now()}))}catch{}ce?.postMessage({type:`open-artifact`,name:e,version:t}),F.send({type:`ph:open`,what:`artifacts`})}return{openArtifact:ue,agents:e,defaultAgent:t,project:n,target:r,mode:i,review:a,me:o,share:c,chats:l,chat:u,turns:f,hasMore:p,loadingOlder:m,queue:h,running:g,pendingAsks:_,liveSessions:y,liveViews:x,pageStatus:S,pageBusy:C,error:w,notice:T,models:E,page:D,controlOn:O,liveOn:j,draft:M,canSend:te,controlOutdated:ee,conn:R.state,embedded:F.embedded,reconnect:R.reconnect,send:R.send,sendPrompt:q,addFiles:J,editQueued:Y,loadOlder:ne,switchChat:X,newChat:Z,updateChat:re,loadModels:ie,answer:ae,live:oe,liveNav:se,setName(e){R.send({type:`set_name`,name:e})},setTheme(e){v.value=e,F.send({type:`ph:theme`,theme:e})}}}var cn={key:1,class:`chat-app`},ln=[`title`],un={key:0,class:`livebar`},dn=[`title`],fn=[`title`],pn={key:0,class:`spin`},mn={key:0,class:`spin`},hn={key:0,class:`headline`,"data-testid":`headline`},gn={class:`hl`},_n={key:1,class:`empty`},vn={class:`empty-av`},yn={class:`empty-title`},bn={class:`empty-hint`},xn={key:3,class:`toast err`},Sn=[`src`],Cn=K(l({__name:`ChatApp`,setup(e){let r=sn(),i=d(),a=d(),s=d(!0),c=d(!1),l=d(null),v=d(Date.now()),y=setInterval(()=>v.value=Date.now(),3e4),S=I(()=>r.liveSessions.value.filter(e=>e.status!==`accepted`&&e.status!==`discarded`)),C=I(()=>S.value.filter(e=>e.status!==`accepting`&&e.status!==`discarding`)),D=I(()=>S.value.filter(e=>e.status===`failed`)),O=I(()=>{let e=new Map;for(let t of r.turns.value)t.user.live?.sid&&e.set(t.user.live.sid,t.id);return e}),k=I(()=>r.agents.value.find(e=>e.id===r.chat.value?.agent)),A=d(0),N=I(()=>Math.max(1,r.turns.value.length-A.value));b(()=>r.chat.value?.agent,e=>e&&r.loadModels(e),{immediate:!0});let P=(e=!1)=>{let t=i.value;t&&(t.scrollTo({top:t.scrollHeight,behavior:e?`smooth`:`auto`}),c.value=!1)},L=0,R=()=>{let e=i.value;e&&(e.scrollHeight-e.scrollTop-e.clientHeight<60?s.value=!0:e.scrollTop<L-1&&(s.value=!1),L=e.scrollTop,s.value&&(c.value=!1))};b(()=>{let e=r.turns.value[r.turns.value.length-1];return[r.turns.value.length,e?.lastSeq,e?.items.length]},()=>{let e=s.value;f(()=>{e?P():c.value||(c.value=!0,A.value=r.turns.value.length-1)})}),b(()=>r.chat.value?.id,()=>f(()=>P()));async function B(){let e=i.value;if(!e||r.loadingOlder.value||!r.hasMore.value)return;let t=e.scrollHeight-e.scrollTop;await r.loadOlder(),await f(),e.scrollTop=e.scrollHeight-t}let V=null,H=new ResizeObserver(()=>s.value&&P());J(()=>{V=new IntersectionObserver(e=>e.some(e=>e.isIntersecting)&&B(),{root:i.value,rootMargin:`120px`}),a.value&&V.observe(a.value),i.value&&H.observe(i.value)}),_(()=>{V?.disconnect(),H.disconnect(),clearInterval(y)});function W(){let e=C.value;if(!e.some(e=>e.status!==`failed`)||confirm(U(j.value.confirmDiscardAll,{n:e.length})))for(let t of e)r.live({op:`discard`,sid:t.sid})}function G(){for(let e of D.value)r.live({op:`discard`,sid:e.sid})}return(e,d)=>u(r).me.value?.access===`reviewer`?(n(),F(Lt,{key:0,store:u(r)},null,8,[`store`])):(n(),m(`div`,cn,[t(`header`,null,[o(le,{store:u(r)},null,8,[`store`]),t(`button`,{class:`btn ghost icon`,title:u(j).newChat,onClick:d[0]||=e=>u(r).newChat()},[o(M,{name:`plus`})],8,ln),o(nn,{store:u(r)},null,8,[`store`])]),S.value.length?(n(),m(`div`,un,[o(M,{name:`sparkle`}),t(`span`,null,T(u(U)(u(j).liveActive,{n:S.value.length})),1),d[6]||=t(`span`,{class:`spacer`},null,-1),D.value.length?(n(),m(`button`,{key:0,class:`btn sm`,title:u(j).clearFailedHint,"data-testid":`live-clear-failed`,onClick:G},T(u(U)(u(j).clearFailed,{n:D.value.length})),9,dn)):p(`v-if`,!0),C.value.length?(n(),m(`button`,{key:1,class:`btn sm`,title:u(j).discardAllHint,"data-testid":`live-discard-all`,onClick:W},T(u(U)(u(j).discardAll,{n:C.value.length})),9,fn)):p(`v-if`,!0)])):p(`v-if`,!0),u(r).conn.value===`ready`?p(`v-if`,!0):(n(),m(`div`,{key:1,class:w([`conn`,u(r).conn.value]),"data-testid":`conn`},[u(r).conn.value===`connecting`?(n(),m(`span`,pn)):p(`v-if`,!0),t(`span`,null,T(u(r).conn.value===`connecting`?u(j).connecting:u(j).netError),1),u(r).conn.value===`error`?(n(),m(`button`,{key:1,class:`btn sm`,onClick:d[1]||=e=>u(r).reconnect()},T(u(j).retryNow),1)):p(`v-if`,!0)],2)),t(`main`,{ref_key:`list`,ref:i,class:`list`,onScroll:R},[t(`div`,{ref_key:`sentinel`,ref:a,class:`sentinel`},[u(r).loadingOlder.value?(n(),m(`span`,mn)):u(r).hasMore.value?(n(),m(`button`,{key:1,class:`btn ghost sm`,onClick:B},T(u(j).loadOlder),1)):p(`v-if`,!0)],512),u(r).turns.value.length?(n(),m(`div`,hn,[u(r).chat.value?.agent?(n(),F(E,{key:0,id:u(r).chat.value.agent,size:`xs`},null,8,[`id`])):p(`v-if`,!0),t(`span`,gn,T(u(U)(u(j).headerLine,{agent:k.value?.label??u(r).chat.value?.agent??``,n:u(r).turns.value.length})),1)])):u(r).conn.value===`ready`?(n(),m(`div`,_n,[t(`div`,vn,[o(M,{name:`robot`})]),t(`div`,yn,T(u(r).mode.value===`review`?u(j).reviewEmptyTitle:u(j).emptyTitle),1),t(`div`,bn,T(u(r).mode.value===`review`?u(j).reviewEmptyHint:u(j).emptyHint),1)])):p(`v-if`,!0),(n(!0),m(h,null,x(u(r).turns.value,e=>(n(),F(z,{key:e.id,turn:e,interactive:!0,"pending-asks":u(r).pendingAsks.value,"live-sessions":u(r).liveSessions.value,"live-views":u(r).liveViews,"live-latest":!!e.user.live?.sid&&O.value.get(e.user.live.sid)===e.id,now:v.value,onAnswer:u(r).answer,onRetry:d[2]||=e=>u(r).send({type:`retry`,turnId:e}),onLive:u(r).live,onNav:u(r).liveNav,onImage:d[3]||=e=>l.value=e,onArtifact:u(r).openArtifact},null,8,[`turn`,`pending-asks`,`live-sessions`,`live-views`,`live-latest`,`now`,`onAnswer`,`onLive`,`onNav`,`onArtifact`]))),128))],544),c.value&&!s.value?(n(),m(`button`,{key:2,class:`unread`,"data-testid":`unread`,onClick:d[4]||=e=>P(!0)},[o(M,{name:`chevrons`}),g(T(u(U)(u(j).newCount,{n:N.value})),1)])):p(`v-if`,!0),u(r).error.value?(n(),m(`div`,xn,T(u(r).error.value),1)):p(`v-if`,!0),o(xt,{store:u(r)},null,8,[`store`]),o(ut,{store:u(r)},null,8,[`store`]),l.value?(n(),m(`div`,{key:4,class:`lightbox`,onClick:d[5]||=e=>l.value=null},[t(`img`,{src:l.value,alt:``},null,8,Sn)])):p(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-ee35d567`]]);function wn(e,t){return`${e.replace(/\.[^.]+$/,``)}.${t}`}async function Tn(t){let{default:n}=await D(async()=>{let{default:t}=await import(`./html2canvas-Dn6bw578.js`).then(t=>e(t.default,1));return{default:t}},__vite__mapDeps([0,1]));return n(t,{backgroundColor:getComputedStyle(document.documentElement).getPropertyValue(`--bg`).trim()||`#fff`,scale:Math.min(2,window.devicePixelRatio||1),useCORS:!0,windowWidth:t.scrollWidth,height:t.scrollHeight,windowHeight:t.scrollHeight})}function En(e,t){let n=document.createElement(`a`);n.href=e,n.download=t,document.body.appendChild(n),n.click(),n.remove()}async function Dn(e,t){En((await Tn(e)).toDataURL(`image/png`),wn(t,`png`))}async function On(e,t){let n=await Tn(e),{jsPDF:r}=await D(async()=>{let{jsPDF:e}=await import(`./jspdf.es.min-Qzb6sJ_Q.js`);return{jsPDF:e}},__vite__mapDeps([2,1,3,4])),i=new r({unit:`pt`,format:`a4`,orientation:`portrait`}),a=i.internal.pageSize.getWidth(),o=i.internal.pageSize.getHeight(),s=a-48,c=s/n.width,l=Math.floor((o-48)/c);for(let e=0,t=0;e<n.height;e+=l,t++){let r=document.createElement(`canvas`);r.width=n.width,r.height=Math.min(l,n.height-e),r.getContext(`2d`).drawImage(n,0,e,n.width,r.height,0,0,n.width,r.height),t&&i.addPage(),i.addImage(r.toDataURL(`image/png`),`PNG`,24,24,s,r.height*c)}i.save(wn(t,`pdf`))}var kn={class:`jt`},An={key:0,class:`key`},jn={class:`pv`},Mn={key:0,class:`kids`},Nn={key:1,class:`leaf`},Pn={key:0,class:`key`},Fn=K(l({name:`JsonTree`,__name:`JsonTree`,props:{value:{},name:{},depth:{}},setup(e){let r=e,i=I(()=>r.depth??0),a=d(i.value<2),o=I(()=>r.value!==null&&typeof r.value==`object`),s=I(()=>o.value?Object.entries(r.value):[]),l=I(()=>Array.isArray(r.value)),u=I(()=>l.value?`[${s.value.length}]`:`{${s.value.length}}`),f=I(()=>r.value===null?`null`:typeof r.value),g=I(()=>typeof r.value==`string`?JSON.stringify(r.value):String(r.value));return(r,d)=>{let _=c(`JsonTree`,!0);return n(),m(`div`,kn,[o.value?(n(),m(h,{key:0},[t(`button`,{class:`tog`,onClick:d[0]||=e=>a.value=!a.value},[t(`span`,{class:w([`car`,{open:a.value}])},`▸`,2),e.name===void 0?p(`v-if`,!0):(n(),m(`span`,An,T(e.name)+`:`,1)),t(`span`,jn,T(u.value),1)]),a.value?(n(),m(`div`,Mn,[(n(!0),m(h,null,x(s.value,([e,t])=>(n(),F(_,{key:e,name:l.value?Number(e)+``:e,value:t,depth:i.value+1},null,8,[`name`,`value`,`depth`]))),128))])):p(`v-if`,!0)],64)):(n(),m(`div`,Nn,[e.name===void 0?p(`v-if`,!0):(n(),m(`span`,Pn,T(e.name)+`:`,1)),t(`span`,{class:w([`v`,f.value])},T(g.value),3)]))])}}}),[[`__scopeId`,`data-v-1e4fba0c`]]),In={class:`tb`},Ln=[`value`],Rn=[`value`],zn={key:1,class:`chip ro`},Bn={key:2,class:`seg`},Vn={key:3,class:`seg`},Hn=[`title`],Un=[`title`],Wn=[`title`,`href`],Gn=[`disabled`],Kn=[`disabled`],qn={key:0,class:`center`},Jn={key:1,class:`center col`},Yn={class:`muted`},Xn=[`src`,`title`],Zn={key:1,class:`center col`},Qn=[`src`,`alt`],$n={key:2,class:`center col`},er={class:`muted`},tr=[`href`],nr=1280,rr=390,ir=K(l({__name:`ArtifactPreview`,props:{info:{},version:{}},emits:[`version`],setup(e,{emit:r}){let i=e,a=r,s=I(()=>i.version??i.info.latest),c=I(()=>s.value!==i.info.latest),l=d(null),f=d(!1),v=d(!1),y=d(`structured`),S=d(`desktop`),E=d(!1),D=d(!1),O=d(0),k=d(),A=d(),N=d(),L=d(1),z=I(()=>![`image`,`file`,`html`].includes(i.info.kind)),B=I(()=>/\.([a-z0-9]+)$/i.exec(i.info.name)?.[1]?.toLowerCase()??`text`),V=I(()=>{if(i.info.kind===`json`&&l.value!==null)try{return{ok:!0,value:JSON.parse(l.value)}}catch{return{ok:!1}}}),U=I(()=>i.info.kind===`markdown`||i.info.kind===`json`&&y.value===`structured`),W=I(()=>{let e=R(i.info.name,c.value?s.value:void 0);return`${e}${e.includes(`?`)?`&`:`?`}t=${i.info.updatedAt}`});async function G(){if(f.value=!1,!z.value){O.value++;return}v.value=!0;try{let e=await fetch(R(i.info.name,s.value),{credentials:`same-origin`});if(!e.ok)throw Error(String(e.status));l.value=await e.text()}catch{f.value=!0,l.value=null}finally{v.value=!1}}b(()=>[i.info.name,s.value,i.info.updatedAt],G,{immediate:!0});let K=null,ee=()=>{let e=N.value;if(!e)return;let t=S.value===`desktop`?nr:rr;L.value=Math.min(1,(e.clientWidth-16)/t)};J(()=>{K=new ResizeObserver(ee),N.value&&K.observe(N.value)}),b(N,e=>e&&K?.observe(e)),b(S,ee),_(()=>K?.disconnect());async function te(){try{if(z.value&&l.value!==null)await navigator.clipboard.writeText(l.value);else if(i.info.kind===`html`)await navigator.clipboard.writeText(await(await fetch(R(i.info.name,s.value))).text());else if(i.info.kind===`image`){let e=await(await fetch(R(i.info.name,s.value))).blob();await navigator.clipboard.write([new ClipboardItem({[e.type]:e})])}D.value=!0,setTimeout(()=>D.value=!1,1500)}catch{}}let q=d(!1);async function Y(e){let t=A.value;if(t){q.value=!0;try{await(e===`png`?Dn(t,i.info.name):On(t,i.info.name))}finally{q.value=!1}}}let ne=e=>e.key===`Escape`&&(E.value=!1);return J(()=>addEventListener(`keydown`,ne)),_(()=>removeEventListener(`keydown`,ne)),(r,i)=>(n(),m(`div`,{class:w([`pv`,{zoomed:E.value}])},[t(`div`,In,[e.info.versions.length>1?(n(),m(`select`,{key:0,class:`input sel`,value:s.value,"data-testid":`version-select`,onChange:i[0]||=t=>a(`version`,Number(t.target.value)===e.info.latest?void 0:Number(t.target.value))},[(n(!0),m(h,null,x([...e.info.versions].reverse(),e=>(n(),m(`option`,{key:e.v,value:e.v},`v`+T(e.v)+` · `+T(new Date(e.ts).toLocaleString()),9,Rn))),128))],40,Ln)):p(`v-if`,!0),c.value?(n(),m(`span`,zn,T(u(j).readOnly),1)):p(`v-if`,!0),e.info.kind===`html`?(n(),m(`div`,Bn,[t(`button`,{class:w([`btn sm`,{on:S.value===`desktop`}]),onClick:i[1]||=e=>S.value=`desktop`},[o(M,{name:`monitor`}),g(T(u(j).desktop),1)],2),t(`button`,{class:w([`btn sm`,{on:S.value===`mobile`}]),onClick:i[2]||=e=>S.value=`mobile`},[o(M,{name:`phone`}),g(T(u(j).mobile),1)],2)])):p(`v-if`,!0),e.info.kind===`json`&&V.value?.ok?(n(),m(`div`,Vn,[t(`button`,{class:w([`btn sm`,{on:y.value===`structured`}]),onClick:i[3]||=e=>y.value=`structured`},T(u(j).structured),3),t(`button`,{class:w([`btn sm`,{on:y.value===`raw`}]),onClick:i[4]||=e=>y.value=`raw`},T(u(j).raw),3)])):p(`v-if`,!0),i[10]||=t(`span`,{class:`spacer`},null,-1),t(`button`,{class:`btn ghost icon sm`,title:u(j).zoom,onClick:i[5]||=e=>E.value=!E.value},[o(M,{name:E.value?`x`:`zoom`},null,8,[`name`])],8,Hn),e.info.kind===`file`?p(`v-if`,!0):(n(),m(`button`,{key:4,class:`btn ghost icon sm`,title:D.value?u(j).copied:u(j).copy,onClick:te},[o(M,{name:D.value?`check`:`copy`},null,8,[`name`])],8,Un)),t(`a`,{class:`btn ghost icon sm`,title:u(j).download,href:u(R)(e.info.name,s.value,!0)},[o(M,{name:`download`})],8,Wn),U.value&&l.value!==null?(n(),m(h,{key:5},[t(`button`,{class:`btn sm`,disabled:q.value,onClick:i[6]||=e=>Y(`png`)},`PNG`,8,Gn),t(`button`,{class:`btn sm`,disabled:q.value,onClick:i[7]||=e=>Y(`pdf`)},`PDF`,8,Kn)],64)):p(`v-if`,!0)]),t(`div`,{ref_key:`body`,ref:k,class:`body`},[v.value?(n(),m(`div`,qn,[...i[11]||=[t(`span`,{class:`spin`},null,-1)]])):f.value?(n(),m(`div`,Jn,[t(`span`,Yn,T(u(j).loadFailed),1),t(`button`,{class:`btn sm`,onClick:G},[o(M,{name:`refresh`}),g(T(u(j).retry),1)])])):(n(),m(h,{key:2},[e.info.kind===`html`?(n(),m(`div`,{key:0,ref_key:`frameBox`,ref:N,class:`frame-box`},[t(`div`,{class:`frame-wrap`,style:C({width:(S.value===`desktop`?1280:390)*L.value+`px`,height:`100%`})},[(n(),m(`iframe`,{key:W.value+S.value,src:W.value,sandbox:`allow-scripts allow-forms allow-popups allow-modals`,referrerpolicy:`no-referrer`,title:e.info.name,style:C({width:(S.value===`desktop`?1280:390)+`px`,height:100/L.value+`%`,transform:`scale(${L.value})`})},null,12,Xn))],4)],512)):e.info.kind===`image`?(n(),m(`div`,Zn,[(n(),m(`img`,{key:O.value,src:`${W.value}&r=${O.value}`,alt:e.info.name,class:`img`,onError:i[8]||=e=>f.value=!0},null,40,Qn))])):e.info.kind===`file`?(n(),m(`div`,$n,[o(M,{name:`file`,class:`big`}),t(`div`,null,T(e.info.name),1),t(`div`,er,T(u(j).binary)+` · `+T((e.info.size/1024).toFixed(1))+` KB`,1),t(`a`,{class:`btn primary`,href:u(R)(e.info.name,s.value,!0)},[o(M,{name:`download`}),g(T(u(j).download),1)],8,tr)])):e.info.kind===`markdown`&&l.value!==null?(n(),m(`div`,{key:3,ref_key:`rendered`,ref:A,class:`doc`,onDblclick:i[9]||=e=>E.value=!E.value},[o(P,{source:l.value},null,8,[`source`])],544)):e.info.kind===`json`&&l.value!==null&&y.value===`structured`&&V.value?.ok?(n(),m(`div`,{key:4,ref_key:`rendered`,ref:A,class:`doc`},[o(Fn,{value:V.value.value},null,8,[`value`])],512)):l.value===null?p(`v-if`,!0):(n(),F(H,{key:5,code:l.value,lang:e.info.kind===`json`?`json`:e.info.kind===`yaml`?`yaml`:B.value,class:`code`},null,8,[`code`,`lang`]))],64))],512)],2))}}),[[`__scopeId`,`data-v-d343d7ab`]]),ar={class:`art-app`},or={class:`tabs`},sr={class:`faint`},cr=[`onClick`],lr={class:`nm`},ur={key:0,class:`dot`},dr=[`title`,`onClick`],fr={key:0,class:`conn muted`},pr={key:1,class:`empty muted`},mr={key:2,class:`grid`},hr=[`data-artifact`,`onClick`],gr={class:`ic`},_r={class:`nm`},vr={class:`meta faint`},yr={class:`meta faint`},br={key:0,class:`flag new`},xr={key:1,class:`flag upd`},Sr=K(l({__name:`ArtifactsApp`,setup(e){let r=d([]),a=d(!1),c=(e,t,n)=>{try{let r=e.getItem(t);return r?JSON.parse(r):n}catch{return n}},l=(e,t,n)=>{try{e.setItem(t,JSON.stringify(n))}catch{}},f=s(c(sessionStorage,`ph:art-tabs`,{tabs:[],active:null,versions:{}})),y=s(c(localStorage,`ph:art-seen`,{}));b(f,()=>l(sessionStorage,`ph:art-tabs`,f),{deep:!0}),b(y,()=>l(localStorage,`ph:art-seen`,y),{deep:!0});let S=I(()=>new Map(r.value.map(e=>[e.name,e]))),C=I(()=>f.active?S.value.get(f.active):void 0),E=d(Date.now()),D=setInterval(()=>E.value=Date.now(),3e4);_(()=>clearInterval(D));function O(e,t){f.tabs.includes(e)||f.tabs.push(e),f.active=e,t&&S.value.get(e)?.latest!==t?f.versions[e]=t:delete f.versions[e]}function k(e){let t=f.tabs.indexOf(e);t>=0&&f.tabs.splice(t,1),f.active===e&&(f.active=f.tabs[t]??f.tabs[t-1]??null),delete f.versions[e]}b(()=>[C.value?.name,C.value?.latest],()=>{C.value&&(y[C.value.name]=C.value.latest)});let A=e=>y[e.name]===void 0?`new`:y[e.name]<e.latest?`updated`:``,N=!1,P=W(e=>{if(e.type===`artifacts`){r.value=e.artifacts;for(let t of[...f.tabs])e.artifacts.some(e=>e.name===t)||k(t);a.value||(a.value=!0,L()),e.open?O(e.open):e.pinned&&!N&&!f.active&&O(e.pinned),N=!0}},()=>{});_(()=>P.close());function L(){let e=c(localStorage,`ph:art-open`,null);e&&Date.now()-e.ts<3e4&&S.value.has(e.name)&&O(e.name,e.version),localStorage.removeItem(`ph:art-open`)}let R=typeof BroadcastChannel<`u`?new BroadcastChannel(`ph-panel`):null;R&&(R.onmessage=e=>{let t=e.data;t?.type===`open-artifact`&&(O(t.name,t.version),localStorage.removeItem(`ph:art-open`))}),rn(`artifacts`,e=>{(e.type===`ph:attach`||e.type===`ph:theme`)&&(v.value=e.theme)});let z={html:`monitor`,json:`file`,markdown:`file`,yaml:`file`,image:`image`,text:`file`,file:`file`},B={html:`HTML`,json:`JSON`,markdown:`Markdown`,yaml:`YAML`,image:`Image`,text:`Text`,file:`File`},V=e=>e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`;return(e,s)=>(n(),m(`div`,ar,[t(`nav`,or,[t(`button`,{class:w([`tab`,{on:!f.active}]),"data-testid":`tab-all`,onClick:s[0]||=e=>f.active=null},[g(T(u(j).allArtifacts)+` `,1),t(`span`,sr,T(r.value.length),1)],2),(n(!0),m(h,null,x(f.tabs,e=>(n(),m(`div`,{key:e,class:w([`tab`,{on:f.active===e}]),onClick:t=>f.active=e},[t(`span`,lr,T(e),1),S.value.get(e)&&A(S.value.get(e))===`updated`&&f.active!==e?(n(),m(`span`,ur)):p(`v-if`,!0),t(`button`,{class:`x`,title:u(j).close,onClick:i(t=>k(e),[`stop`])},[o(M,{name:`x`})],8,dr)],10,cr))),128))]),u(P).state.value===`ready`?p(`v-if`,!0):(n(),m(`div`,fr,[s[2]||=t(`span`,{class:`spin`},null,-1),g(T(u(P).state.value===`error`?u(j).netError:u(j).connecting),1)])),t(`main`,null,[C.value?(n(),F(ir,{key:C.value.name,info:C.value,version:f.versions[C.value.name],onVersion:s[1]||=e=>e?f.versions[C.value.name]=e:delete f.versions[C.value.name]},null,8,[`info`,`version`])):a.value&&!r.value.length?(n(),m(`div`,pr,[o(M,{name:`sparkle`}),g(T(u(j).noArtifacts),1)])):(n(),m(`div`,mr,[(n(!0),m(h,null,x(r.value,e=>(n(),m(`button`,{key:e.name,class:`tile card`,"data-artifact":e.name,onClick:t=>O(e.name)},[t(`div`,gr,[o(M,{name:z[e.kind]},null,8,[`name`])]),t(`div`,_r,T(e.name),1),t(`div`,vr,T(B[e.kind])+` · `+T(V(e.size))+` · v`+T(e.latest),1),t(`div`,yr,T(u(G)(e.updatedAt,E.value)),1),A(e)===`new`?(n(),m(`span`,br,T(u(j).new),1)):A(e)===`updated`?(n(),m(`span`,xr,T(u(j).updated),1)):p(`v-if`,!0)],8,hr))),128))]))])]))}}),[[`__scopeId`,`data-v-f36091ad`]]);te(),document.documentElement.lang=k.value;var Cr=location.hash===`#artifacts`?`artifacts`:`chat`;r(Cr===`artifacts`?Sr:Cn).mount(`#app`);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/html2canvas-Dn6bw578.js","assets/rolldown-runtime-hePW80VL.js","assets/jspdf.es.min-BF5gKf3S.js","assets/ws-Kt3Cg5KH.js","assets/ws-DtkfUYSX.css"])))=>i.map(i=>d[i]);
2
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,R as _,S as v,T as y,U as b,V as x,W as S,X as C,Y as w,Z as T,_ as E,a as D,b as O,c as k,d as A,f as j,g as M,h as N,i as P,j as F,k as I,l as L,m as R,n as z,p as B,q as V,r as H,s as U,t as W,u as G,v as K,w as ee,x as te,y as q,z as J}from"./ws-Kt3Cg5KH.js";var Y={class:`tt`},ne={key:2,class:`menu card`},X={class:`acts`},Z=[`disabled`],re={class:`btn sm`,href:`/__ph/history`,target:`_blank`,rel:`noopener`},ie={class:`list`},ae=[`onClick`],oe={class:`tt`},se={class:`meta faint`},ce={class:`mt`},le=K(l({__name:`ChatSwitcher`,props:{store:{}},setup(e){let r=e.store,i=d(!1),s=d(!1),c=d(``),l=d(),v=d();function b(){c.value=r.chat.value?.title??``,s.value=!0,i.value=!1,f(()=>v.value?.select())}async function C(){s.value&&(s.value=!1,c.value.trim()&&c.value!==r.chat.value?.title&&await r.updateChat({title:c.value}))}let D=e=>{i.value&&l.value&&!e.composedPath().includes(l.value)&&(i.value=!1)};return J(()=>document.addEventListener(`mousedown`,D)),_(()=>document.removeEventListener(`mousedown`,D)),(e,d)=>(n(),m(`div`,{ref_key:`root`,ref:l,class:`switcher`},[s.value?S((n(),m(`input`,{key:0,ref_key:`input`,ref:v,"onUpdate:modelValue":d[0]||=e=>c.value=e,class:`input rn`,onKeydown:[a(C,[`enter`]),d[1]||=a(e=>s.value=!1,[`esc`])],onBlur:C},null,544)),[[y,c.value]]):(n(),m(`button`,{key:1,class:`cur`,"data-testid":`chat-switcher`,onClick:d[2]||=e=>i.value=!i.value,onDblclick:b},[t(`span`,Y,T(u(r).chat.value?.title||u(j).newChat),1),o(M,{name:`chevron`})],32)),i.value?(n(),m(`div`,ne,[t(`div`,X,[t(`button`,{class:`btn sm`,"data-testid":`new-chat`,onClick:d[3]||=e=>(i.value=!1,u(r).newChat())},[o(M,{name:`plus`}),g(T(u(j).newChat),1)]),t(`button`,{class:`btn sm`,disabled:!u(r).chat.value,onClick:b},[o(M,{name:`edit`}),g(T(u(j).rename),1)],8,Z),t(`a`,re,[o(M,{name:`history`}),g(T(u(j).history),1)])]),t(`div`,ie,[(n(!0),m(h,null,x(u(r).chats.value,e=>(n(),m(`button`,{key:e.id,class:w([`item`,{on:e.id===u(r).chat.value?.id}]),onClick:t=>(i.value=!1,u(r).switchChat(e.id))},[t(`span`,oe,T(e.title||u(j).untitled),1),t(`span`,se,[o(E,{id:e.agent,size:`xs`},null,8,[`id`]),t(`span`,ce,T(u(q)(e.agent).short)+T(e.model?` · ${e.model}`:``)+` · `+T(u(G)(e.updatedAt)),1)])],10,ae))),128))])])):p(`v-if`,!0)],512))}}),[[`__scopeId`,`data-v-3f95877a`]]),ue={class:`es`,"data-testid":`effort-picker`},de={class:`head`},fe=[`aria-pressed`,`aria-label`],pe={class:`tip`,role:`tooltip`},me={key:0},he={key:1,class:`side off`},Q={class:`mid`},$={class:`val`,"data-testid":`effort-value`},ge=[`disabled`,`title`],_e=[`aria-label`,`aria-valuemax`,`aria-valuenow`,`aria-valuetext`],ve=[`data-effort`,`title`],ye=K(l({__name:`EffortSlider`,props:{efforts:{},value:{},defaultEffort:{},model:{},fast:{type:Boolean},fastTier:{}},emits:[`change`,`model`,`fast`],setup(e,{emit:r}){let i=e,a=r,s=I(()=>{let e=i.fastTier?.description??``,t=/([\d.]+)\s*x\s*speed/i.exec(e)?.[1];return{title:t?U(j.value.fastSpeed,{n:t}):j.value.fastMode,sub:/increased usage/i.test(e)?j.value.fastUsage:t?``:e}}),c=d(),l=d(null),f=e=>e?j.value.effortNames[e]??e:``,_=I(()=>{let e=i.efforts.indexOf(i.value??i.defaultEffort??``);return e<0?0:e}),v=I(()=>l.value??_.value),y=I(()=>Math.max(1,i.efforts.length-1)),b=I(()=>v.value/y.value*100),S=I(()=>i.efforts[v.value]),E=I(()=>l.value===null&&!i.value&&!i.defaultEffort);function D(e){let t=i.efforts[e];if(t===void 0)return;let n=!i.value&&t===i.defaultEffort?null:t;n!==i.value&&a(`change`,n)}function O(e){let t=c.value.getBoundingClientRect(),n=Math.min(1,Math.max(0,(e-t.left)/t.width));return Math.round(n*y.value)}function k(e){e.currentTarget.setPointerCapture(e.pointerId),l.value=O(e.clientX)}function A(e){l.value!==null&&(l.value=O(e.clientX))}function N(){if(l.value===null)return;let e=l.value;l.value=null,D(e)}function P(e){let t=e.key===`ArrowRight`||e.key===`ArrowUp`?1:e.key===`ArrowLeft`||e.key===`ArrowDown`?-1:0;e.key===`Home`||e.key===`End`?(e.preventDefault(),D(e.key===`Home`?0:i.efforts.length-1)):t&&(e.preventDefault(),e.stopPropagation(),D(Math.min(i.efforts.length-1,Math.max(0,v.value+t))))}return(r,i)=>(n(),m(`div`,ue,[t(`div`,de,[e.fastTier?(n(),m(`button`,{key:0,class:w([`side fast`,{on:e.fast}]),type:`button`,"aria-pressed":e.fast,"aria-label":s.value.title,"data-testid":`fast-toggle`,onClick:i[0]||=t=>a(`fast`,!e.fast)},[o(M,{name:`zap`}),t(`span`,pe,[t(`b`,null,T(s.value.title),1),s.value.sub?(n(),m(`span`,me,T(s.value.sub),1)):p(`v-if`,!0)])],10,fe)):(n(),m(`span`,he,[o(M,{name:`zap`})])),t(`div`,Q,[t(`div`,$,T(E.value?u(j).effortDefault:f(S.value)),1),t(`button`,{class:`mdl`,type:`button`,onClick:i[1]||=e=>a(`model`)},[g(T(e.model),1),o(M,{name:`right`})])]),t(`button`,{class:`side rs`,type:`button`,disabled:!e.value,title:u(U)(u(j).effortReset,{v:f(e.defaultEffort)||u(j).effortDefault}),"data-testid":`effort-reset`,onClick:i[2]||=e=>a(`change`,null)},[o(M,{name:`reset`})],8,ge)]),t(`div`,{ref_key:`track`,ref:c,class:w([`track`,{unset:E.value}]),role:`slider`,tabindex:`0`,"aria-label":u(j).effort,"aria-valuemin":0,"aria-valuemax":e.efforts.length-1,"aria-valuenow":v.value,"aria-valuetext":E.value?u(j).effortDefault:f(S.value),onPointerdown:k,onPointermove:A,onPointerup:N,onPointercancel:i[3]||=e=>l.value=null,onKeydown:P},[t(`div`,{class:`fill`,style:C({width:`calc(12px + (100% - 24px) * ${b.value/100})`})},null,4),(n(!0),m(h,null,x(e.efforts,(e,t)=>(n(),m(`span`,{key:e,class:w([`dot`,{lit:t<=v.value}]),style:C({left:`calc(12px + (100% - 24px) * ${t/y.value})`}),"data-effort":e,"data-testid":`effort-option`,title:f(e)},null,14,ve))),128)),t(`span`,{class:`knob`,style:C({left:`calc(12px + (100% - 24px) * ${v.value/y.value})`})},null,4)],42,_e)]))}}),[[`__scopeId`,`data-v-ce9bf420`]]),be=[`disabled`,`title`],xe={class:`ag`},Se={class:`ml`},Ce=[`aria-expanded`,`aria-label`],we={class:`nm`},Te=[`aria-label`,`aria-activedescendant`],Ee=[`id`,`aria-selected`,`title`,`data-agent`,`onMousemove`,`onClick`],De={class:`nm`},Oe={key:0,class:`tag`},ke={key:0,class:`ni`,"data-testid":`agent-hint`},Ae={class:`mono`},je={class:`sbox`},Me=[`placeholder`],Ne={key:0,class:`state`},Pe={class:`lb`},Fe={key:0,class:`id mono`},Ie={key:1,class:`state`},Le={key:0,class:`gname`},Re=[`data-model`,`onMouseenter`,`onClick`],ze={class:`lb`},Be={key:0},Ve={key:0,class:`id mono`},He={class:`lb`},Ue={key:3,class:`state`},We={key:2,class:`foot faint`},Ge=K(l({__name:`ModelPicker`,props:{store:{}},setup(e){let r=e.store,a=d(!1),s=d(``),c=d(0),l=d(),v=d(),D=d(),k=d(360),A=I(()=>r.chat.value?.agent??``),N=I(()=>r.agents.value.find(e=>e.id===A.value)),P=I(()=>O(r.agents.value)),L=d(null),R=I(()=>r.agents.value.find(e=>e.id===L.value)),z=I(()=>r.chat.value?.model??null),B=I(()=>r.models.value[A.value]),V=I(()=>B.value===void 0),H=I(()=>B.value?.find(e=>e.isDefault)),W=I(()=>(B.value??[]).filter(e=>!e.isDefault)),G=(e,t)=>!t||e.id.toLowerCase().includes(t)||e.label.toLowerCase().includes(t),K=I(()=>W.value.filter(e=>G(e,s.value.trim().toLowerCase()))),ee=[[`Claude`,/^claude|^(sonnet|opus|haiku)$/i],[`GPT`,/^(gpt|o\d|codex)/i],[`Gemini`,/^gemini/i],[`Grok`,/grok/i],[`Composer`,/^composer/i],[`Hunyuan`,/^(hy\d|hunyuan)/i],[`DeepSeek`,/^deepseek/i],[`GLM`,/^glm/i],[`Kimi`,/^kimi/i],[`Qwen`,/^qwen/i]],te=e=>{let t=e.replace(/^[\w.@-]+\//,``);return ee.find(([,e])=>e.test(t))?.[0]??``},Y=I(()=>{let e=new Map;for(let t of K.value){let n=te(t.id);e.set(n,[...e.get(n)??[],t])}let t=[...ee.map(([e])=>e),``];return[...e.entries()].sort((e,n)=>t.indexOf(e[0])-t.indexOf(n[0])).map(([e,t])=>({name:e||j.value.groupOther,items:t}))}),ne=I(()=>Y.value.length>1),X=I(()=>{let e=s.value.trim();return e&&!/\s/.test(e)&&!W.value.some(t=>t.id===e)?e:``}),Z=I(()=>[...s.value.trim()?[]:[{kind:`default`}],...Y.value.flatMap(e=>e.items.map(e=>({kind:`model`,m:e}))),...X.value?[{kind:`custom`,id:X.value}]:[]]),re=e=>Z.value.findIndex(t=>t.kind===`model`&&t.m.id===e.id),ie=I(()=>r.chat.value?.effort??null),ae=I(()=>z.value?B.value?.find(e=>e.id===z.value)?.label??z.value:H.value?.label??j.value.defaultModel),oe=I(()=>ie.value?`${ae.value} · ${j.value.effortNames[ie.value]??ie.value}`:ae.value),se=I(()=>z.value?B.value?.find(e=>e.id===z.value):H.value),ce=I(()=>se.value?.efforts??[]),le=I(()=>!!r.chat.value?.fast&&!!se.value?.fastTier);async function ue(e){e!==ie.value&&await r.updateChat({effort:e})}function de(e){let t=s.value.trim().toLowerCase(),n=t?e.toLowerCase().indexOf(t):-1;return n<0?[{text:e,hit:!1}]:[{text:e.slice(0,n),hit:!1},{text:e.slice(n,n+t.length),hit:!0},{text:e.slice(n+t.length),hit:!1}].filter(e=>e.text)}function fe(){if(a.value)return pe();L.value=null,Q.value=!1,A.value&&r.loadModels(A.value);let e=l.value?.closest(`.composer`);k.value=Math.max(180,Math.min(440,(e?.getBoundingClientRect().top??400)-12)),s.value=``,c.value=0,a.value=!0,f(()=>v.value?.focus())}function pe(){a.value=!1}async function me(e){let t=e.kind==="default"?null:e.kind===`model`?e.m.id:e.id;pe(),t!==z.value&&await r.updateChat({model:t})}async function he(e){let t=r.agents.value.find(t=>t.id===e);if(t&&!t.available){L.value=L.value===e?null:e;return}L.value=null,e!==A.value&&(await r.updateChat({agent:e}),r.loadModels(e),c.value=0)}let Q=d(!1),$=d(0),ge=d(),_e=d();function ve(){$.value=Math.max(0,P.value.findIndex(e=>e.id===A.value)),Q.value=!0,f(()=>_e.value?.focus())}function Ge(e=!0){Q.value=!1,e&&f(()=>ge.value?.focus())}function Ke(){Q.value?Ge():ve()}async function qe(e){Ge(),await he(e)}let Je=d();function Ye(e){Q.value&&Je.value&&!e.composedPath().includes(Je.value)&&Ge(!1)}function Xe(e){e.isComposing||(e.key===`Enter`||e.key===` `||e.key===`ArrowDown`||e.key===`ArrowUp`)&&(e.preventDefault(),e.stopPropagation(),ve())}function Ze(e){if(e.isComposing)return;let t=P.value.length,n={ArrowDown:()=>Math.min(t-1,$.value+1),ArrowUp:()=>Math.max(0,$.value-1),Home:()=>0,End:()=>t-1};if(e.key in n)$.value=n[e.key]();else if(e.key===`Enter`||e.key===` `){let e=P.value[$.value];e&&qe(e.id)}else if(e.key===`Escape`)Ge();else if(e.key===`Tab`)return Ge(!1);else return;e.preventDefault(),e.stopPropagation(),f(()=>_e.value?.querySelector(`.ag-opt.active`)?.scrollIntoView({block:`nearest`}))}function Qe(e){if(!e.isComposing){if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=Z.value.length;t&&(c.value=(c.value+(e.key===`ArrowDown`?1:t-1))%t),f(()=>D.value?.querySelector(`.opt.active`)?.scrollIntoView({block:`nearest`}))}else if(e.key===`Enter`){e.preventDefault();let t=Z.value[c.value];t&&me(t)}else e.key===`Escape`&&(e.preventDefault(),pe())}}b(s,()=>c.value=0);let $e=e=>{a.value&&l.value&&!e.composedPath().includes(l.value)&&pe()};return J(()=>document.addEventListener(`mousedown`,$e)),_(()=>document.removeEventListener(`mousedown`,$e)),(e,d)=>(n(),m(`div`,{ref_key:`root`,ref:l,class:`mp`},[t(`button`,{class:w([`pill`,{on:a.value}]),disabled:!u(r).chat.value,"data-testid":`model-pill`,title:[N.value?.label??A.value,z.value??ae.value,le.value?u(j).fastShort:``].filter(Boolean).join(` · `),onClick:fe},[A.value?(n(),F(E,{key:0,id:A.value,size:`xs`,"data-testid":`pill-agent`},null,8,[`id`])):p(`v-if`,!0),t(`span`,xe,T(N.value?u(q)(N.value.id).short:A.value),1),d[8]||=t(`span`,{class:`sep`},`·`,-1),t(`span`,Se,T(oe.value),1),le.value?(n(),F(M,{key:1,name:`zap`,class:`fz`,"data-testid":`pill-fast`})):p(`v-if`,!0),o(M,{name:`chevron`,class:`chev`})],10,be),a.value?(n(),m(`div`,{key:0,class:`pop`,"data-testid":`model-picker`,style:C({maxHeight:`${k.value}px`}),onKeydown:Qe,onClick:Ye},[t(`div`,{ref_key:`agSel`,ref:Je,class:`agsel`},[t(`button`,{ref_key:`agTrigger`,ref:ge,class:w([`ag-trig`,{on:Q.value}]),"aria-haspopup":`listbox`,"aria-expanded":Q.value,"aria-label":`${u(j).agent}: ${N.value?.label??A.value}`,"data-testid":`agent-trigger`,onClick:Ke,onKeydown:Xe},[A.value?(n(),F(E,{key:0,id:A.value,size:`sm`},null,8,[`id`])):p(`v-if`,!0),t(`span`,we,T(N.value?u(q)(N.value.id).short:A.value),1),o(M,{name:`chevron`,class:`chev`})],42,Ce),Q.value?(n(),m(`div`,{key:0,ref_key:`agListEl`,ref:_e,class:`ag-list`,role:`listbox`,tabindex:`-1`,"aria-label":u(j).agent,"aria-activedescendant":P.value[$.value]?`ph-agent-${P.value[$.value].id}`:void 0,"data-testid":`agent-list`,onKeydown:Ze},[(n(!0),m(h,null,x(P.value,(e,r)=>(n(),m(`div`,{id:`ph-agent-${e.id}`,key:e.id,class:w([`ag-opt`,{active:r===$.value,on:e.id===A.value,off:!e.available}]),role:`option`,"aria-selected":e.id===A.value,title:e.available?[e.label,e.version,e.path].filter(Boolean).join(` · `):`${e.label} · ${u(j).notInstalled}`,"data-agent":e.id,"data-testid":`agent-option`,onMousemove:e=>$.value=r,onMousedown:d[0]||=i(()=>{},[`prevent`]),onClick:t=>qe(e.id)},[o(E,{id:e.id,size:`sm`,off:!e.available},null,8,[`id`,`off`]),t(`span`,De,T(u(q)(e.id).short),1),e.available?e.id===A.value?(n(),F(M,{key:1,name:`check`,class:`ck`})):p(`v-if`,!0):(n(),m(`span`,Oe,[o(M,{name:`download`}),g(T(u(j).notInstalled),1)]))],42,Ee))),128))],40,Te)):p(`v-if`,!0)],512),R.value?(n(),m(`div`,ke,[u(q)(R.value.id).install?(n(),m(h,{key:0},[g(T(u(U)(u(j).agentMissing,{agent:R.value.label}))+` `,1),t(`code`,Ae,T(u(q)(R.value.id).install),1)],64)):(n(),m(h,{key:1},[g(T(u(U)(u(j).agentMissingNoCmd,{agent:R.value.label})),1)],64)),g(` `+T(u(U)(u(j).agentPathHint,{flag:`--${R.value.id}-path`})),1)])):p(`v-if`,!0),t(`div`,je,[o(M,{name:`search`}),S(t(`input`,{ref_key:`search`,ref:v,"onUpdate:modelValue":d[1]||=e=>s.value=e,placeholder:u(j).searchModels,"data-testid":`model-search`},null,8,Me),[[y,s.value]])]),t(`div`,{ref_key:`listEl`,ref:D,class:`list`},[V.value?(n(),m(`div`,Ne,[d[9]||=t(`span`,{class:`spin`},null,-1),g(T(u(j).loadingModels),1)])):(n(),m(h,{key:1},[s.value.trim()?p(`v-if`,!0):(n(),m(`button`,{key:0,class:w([`opt`,{active:c.value===0,cur:!z.value}]),"data-testid":`model-default`,onMouseenter:d[2]||=e=>c.value=0,onClick:d[3]||=e=>me({kind:`default`})},[t(`span`,Pe,T(u(j).defaultAuto),1),H.value?(n(),m(`span`,Fe,T(H.value.label),1)):p(`v-if`,!0),z.value?p(`v-if`,!0):(n(),F(M,{key:1,name:`check`,class:`ck`}))],34)),B.value===null?(n(),m(`div`,Ie,T(u(j).modelsFailed),1)):p(`v-if`,!0),(n(!0),m(h,null,x(Y.value,e=>(n(),m(h,{key:e.name},[ne.value?(n(),m(`div`,Le,T(e.name),1)):p(`v-if`,!0),(n(!0),m(h,null,x(e.items,e=>(n(),m(`button`,{key:e.id,class:w([`opt`,{active:c.value===re(e),cur:z.value===e.id}]),"data-model":e.id,"data-testid":`model-option`,onMouseenter:t=>c.value=re(e),onClick:t=>me({kind:`model`,m:e})},[t(`span`,ze,[(n(!0),m(h,null,x(de(e.label),(e,t)=>(n(),m(h,{key:t},[e.hit?(n(),m(`mark`,Be,T(e.text),1)):(n(),m(h,{key:1},[g(T(e.text),1)],64))],64))),128))]),e.label===e.id?p(`v-if`,!0):(n(),m(`span`,Ve,T(e.id),1)),z.value===e.id?(n(),F(M,{key:1,name:`check`,class:`ck`})):p(`v-if`,!0)],42,Re))),128))],64))),128)),X.value?(n(),m(`button`,{key:2,class:w([`opt`,{active:c.value===Z.value.length-1}]),"data-testid":`model-custom`,onMouseenter:d[4]||=e=>c.value=Z.value.length-1,onClick:d[5]||=e=>me({kind:`custom`,id:X.value})},[o(M,{name:`plus`,class:`pl`}),t(`span`,He,T(u(U)(u(j).useCustom,{id:X.value})),1)],34)):p(`v-if`,!0),B.value&&!K.value.length&&!X.value&&s.value.trim()?(n(),m(`div`,Ue,T(u(j).noModels),1)):p(`v-if`,!0)],64))],512),ce.value.length>1?(n(),F(ye,{key:1,efforts:ce.value,value:ie.value,"default-effort":se.value?.defaultEffort,model:se.value?.label??ae.value,fast:le.value,"fast-tier":se.value?.fastTier,onChange:ue,onFast:d[6]||=e=>u(r).updateChat({fast:e}),onModel:d[7]||=e=>v.value?.focus()},null,8,[`efforts`,`value`,`default-effort`,`model`,`fast`,`fast-tier`])):p(`v-if`,!0),N.value?.version?(n(),m(`div`,We,[o(E,{id:N.value.id,size:`xs`},null,8,[`id`]),g(T(N.value.label)+` · `+T(u(U)(u(j).agentVersion,{v:N.value.version})),1)])):p(`v-if`,!0)],36)):p(`v-if`,!0)],512))}}),[[`__scopeId`,`data-v-f10ba9be`]]),Ke={class:`box`},qe={key:0,class:`drafts`},Je=[`title`],Ye={class:`lbl`},Xe=[`title`,`aria-label`,`onClick`],Ze=[`title`],Qe={class:`lbl`},$e=[`title`,`aria-label`,`onClick`],et=[`title`],tt=[`src`],nt={key:1,class:`fname`},rt={key:2,class:`spin`},it=[`title`,`onClick`],at=[`placeholder`],ot={class:`bar`},st=[`title`],ct=[`title`,`aria-label`,`disabled`],lt={class:`hint`},ut=K(l({__name:`Composer`,props:{store:{}},setup(e,{expose:r}){let a=e.store,s=d(),c=d(),l=d(!1),_=()=>{let e=s.value;e&&(e.style.height=`auto`,e.style.height=`${Math.min(Math.max(e.scrollHeight,40),128)}px`)};b(()=>a.draft.text,()=>f(_));function v(e){e.isComposing||e.keyCode===229||e.key===`Enter`&&!e.shiftKey&&!e.altKey&&(e.preventDefault(),C())}function C(){a.sendPrompt()&&f(()=>s.value?.focus())}function E(e){let t=[...e.clipboardData?.files??[]];t.length&&(e.preventDefault(),a.addFiles(t))}function D(){let e=c.value?.files;e?.length&&a.addFiles([...e]),c.value&&(c.value.value=``)}function O(e){l.value=!1;let t=[...e.dataTransfer?.files??[]];t.length&&a.addFiles(t)}return r({focus:()=>s.value?.focus()}),(e,r)=>(n(),m(`div`,{class:w([`composer`,{dragging:l.value}]),onDragover:r[3]||=i(e=>l.value=!0,[`prevent`]),onDragleave:r[4]||=e=>l.value=!1,onDrop:i(O,[`prevent`])},[t(`div`,Ke,[u(a).draft.picks.length||u(a).draft.marks.length||u(a).draft.attachments.length?(n(),m(`div`,qe,[(n(!0),m(h,null,x(u(a).draft.picks,(e,r)=>(n(),m(`span`,{key:e.id,class:`chip draft`,title:e.selector},[o(M,{name:`target`}),t(`span`,Ye,`<`+T(e.tagName.toLowerCase())+`> `+T(e.text||e.selector),1),t(`button`,{title:u(j).removeDraft,"aria-label":u(j).removeDraft,"data-testid":`remove-draft`,onClick:e=>u(a).draft.picks.splice(r,1)},[o(M,{name:`x`})],8,Xe)],8,Je))),128)),(n(!0),m(h,null,x(u(a).draft.marks,(e,r)=>(n(),m(`span`,{key:`m`+e.n,class:`chip draft`,title:e.note||void 0},[o(M,{name:`pen`}),t(`span`,Qe,T(u(j).marks)+` `+T(e.n)+T(e.note?` · ${e.note}`:``),1),t(`button`,{title:u(j).removeDraft,"aria-label":u(j).removeDraft,"data-testid":`remove-draft`,onClick:e=>u(a).draft.marks.splice(r,1)},[o(M,{name:`x`})],8,$e)],8,Ze))),128)),(n(!0),m(h,null,x(u(a).draft.attachments,(e,r)=>(n(),m(`span`,{key:`a`+r,class:w([`att`,{err:e.error}]),title:e.error||e.name},[e.preview?(n(),m(`img`,{key:0,src:e.preview,alt:``},null,8,tt)):(n(),m(`span`,nt,[o(M,{name:`file`}),g(T(e.name),1)])),e.uploading?(n(),m(`span`,rt)):p(`v-if`,!0),t(`button`,{title:u(j).removeDraft,onClick:e=>u(a).draft.attachments.splice(r,1)},[o(M,{name:`x`})],8,it)],10,et))),128))])):p(`v-if`,!0),S(t(`textarea`,{ref_key:`ta`,ref:s,"onUpdate:modelValue":r[0]||=e=>u(a).draft.text=e,rows:`1`,placeholder:u(a).running.value?u(j).placeholderBusy:u(j).placeholder,onKeydown:v,onPaste:E},null,40,at),[[y,u(a).draft.text]]),t(`div`,ot,[t(`button`,{class:`btn icon attach`,title:u(j).attach,onClick:r[1]||=e=>c.value?.click()},[o(M,{name:`clip`})],8,st),t(`input`,{ref_key:`fileInput`,ref:c,type:`file`,multiple:``,hidden:``,onChange:D},null,544),o(Ge,{store:u(a)},null,8,[`store`]),r[5]||=t(`span`,{class:`spacer`},null,-1),u(a).running.value?(n(),m(`button`,{key:0,class:`btn sm danger stop`,onClick:r[2]||=e=>u(a).send({type:`cancel`})},[o(M,{name:`stop`}),g(T(u(j).stop),1)])):p(`v-if`,!0),t(`button`,{class:`btn primary icon send`,title:u(j).send,"aria-label":u(j).send,disabled:!u(a).canSend.value||u(a).conn.value!==`ready`,"data-testid":`send`,onClick:C},[o(M,{name:`send`})],8,ct)])]),t(`div`,lt,T(u(j).enterHint),1)],34))}}),[[`__scopeId`,`data-v-6719d34f`]]),dt={key:0,class:`queue`},ft={class:`qh muted`},pt=[`onDragstart`,`onDragover`,`onDrop`],mt=[`title`,`onKeydown`],ht={class:`n faint`},gt={class:`txt`},_t={key:0,class:`chip`},vt={key:1,class:`chip`},yt=[`title`,`onClick`],bt=[`title`,`onClick`],xt=K(l({__name:`QueueList`,props:{store:{}},setup(e){let r=e.store,s=d(null),c=d(null);function l(e){let t=s.value;if(s.value=null,c.value=null,!t||t===e)return;let n=r.queue.value.map(e=>e.id);n.splice(n.indexOf(t),1),n.splice(n.indexOf(e),0,t),r.send({type:`queue_reorder`,ids:n})}function f(e,t){let n=r.queue.value.map(e=>e.id),i=n.indexOf(e),a=i+t;a<0||a>=n.length||([n[i],n[a]]=[n[a],n[i]],r.send({type:`queue_reorder`,ids:n}))}return(e,d)=>u(r).queue.value.length?(n(),m(`div`,dt,[t(`div`,ft,T(u(j).queue)+` · `+T(u(r).queue.value.length),1),(n(!0),m(h,null,x(u(r).queue.value,(e,h)=>(n(),m(`div`,{key:e.id,class:w([`qi`,{over:c.value===e.id,dragging:s.value===e.id}]),draggable:`true`,onDragstart:t=>s.value=e.id,onDragend:d[0]||=e=>{s.value=null,c.value=null},onDragover:i(t=>c.value=e.id,[`prevent`]),onDrop:i(t=>l(e.id),[`prevent`])},[t(`span`,{class:`grip`,title:u(j).dragToReorder,tabindex:`0`,onKeydown:[a(i(t=>f(e.id,-1),[`prevent`]),[`up`]),a(i(t=>f(e.id,1),[`prevent`]),[`down`])]},[o(M,{name:`grip`})],40,mt),t(`span`,ht,T(h+1),1),t(`span`,gt,T(e.text||(e.live?`Live`:`…`)),1),e.attachments.length?(n(),m(`span`,_t,`📎 `+T(e.attachments.length),1)):p(`v-if`,!0),e.picks.length||e.marks?.length?(n(),m(`span`,vt,`◎ `+T(e.picks.length+(e.marks?.length??0)),1)):p(`v-if`,!0),e.live?p(`v-if`,!0):(n(),m(`button`,{key:2,class:`btn ghost icon sm`,title:u(j).edit,onClick:t=>u(r).editQueued(e)},[o(M,{name:`edit`})],8,yt)),t(`button`,{class:`btn ghost icon sm`,title:u(j).withdraw,onClick:t=>u(r).send({type:`dequeue`,id:e.id})},[o(M,{name:`undo`})],8,bt)],42,pt))),128))])):p(`v-if`,!0)}}),[[`__scopeId`,`data-v-3e6df72c`]]),St={class:`rp`,"data-testid":`reviewer-panel`},Ct={class:`seg`},wt={key:0,class:`conn`},Tt={for:`rp-name`},Et=[`placeholder`],Dt=[`disabled`],Ot={key:1,class:`me`},kt={class:`av`},At={class:`who`},jt={"data-testid":`reviewer-me`},Mt={class:`muted`},Nt={class:`stats`},Pt={class:`how`},Ft={key:0},It={class:`muted small`},Lt=K(l({__name:`ReviewerPanel`,props:{store:{}},setup(e){let r=e.store,a=d(r.me.value?.name??``);b(()=>r.me.value?.name,e=>e&&(a.value=e));let s=I(()=>!!r.me.value?.name),c=d(!1),l=I(()=>r.review.value.items.filter(e=>e.status===`open`).length),f=I(()=>r.review.value.items.filter(e=>e.author.id===r.me.value?.id).length);function h(){a.value.trim()&&(r.setName(a.value.trim()),c.value=!1)}return(e,d)=>(n(),m(`div`,St,[t(`header`,null,[o(M,{name:`pen`}),t(`b`,null,T(u(j).reviewerTitle),1),d[4]||=t(`span`,{class:`spacer`},null,-1),t(`div`,Ct,[t(`button`,{class:w([`btn sm`,{on:u(k)===`zh-CN`}]),onClick:d[0]||=e=>u(A)(`zh-CN`)},`中`,2),t(`button`,{class:w([`btn sm`,{on:u(k)===`en`}]),onClick:d[1]||=e=>u(A)(`en`)},`EN`,2)])]),u(r).conn.value===`ready`?p(`v-if`,!0):(n(),m(`div`,wt,T(u(r).conn.value===`connecting`?u(j).connecting:u(j).netError),1)),t(`main`,null,[!s.value||c.value?(n(),m(`form`,{key:0,class:`name`,onSubmit:i(h,[`prevent`])},[t(`label`,Tt,T(u(j).reviewerNameLabel),1),S(t(`input`,{id:`rp-name`,"onUpdate:modelValue":d[2]||=e=>a.value=e,class:`input`,maxlength:`40`,placeholder:u(j).reviewerNamePh,"data-testid":`reviewer-name`,autofocus:``},null,8,Et),[[y,a.value]]),t(`button`,{class:`btn primary`,type:`submit`,disabled:!a.value.trim(),"data-testid":`reviewer-save`},T(u(j).reviewerJoin),9,Dt)],32)):(n(),m(`div`,Ot,[t(`div`,kt,T(u(r).me.value.name.slice(0,1).toUpperCase()),1),t(`div`,At,[t(`b`,jt,T(u(r).me.value.name),1),t(`span`,Mt,T(u(j).reviewerRole),1)]),t(`button`,{class:`btn ghost sm`,onClick:d[3]||=e=>c.value=!0},T(u(j).rename),1)])),t(`div`,Nt,[t(`span`,null,T(u(U)(u(j).reviewerStats,{open:l.value,mine:f.value})),1)]),t(`ul`,Pt,[t(`li`,null,T(u(j).reviewerHowComment),1),u(r).mode.value===`review`?(n(),m(`li`,Ft,T(u(j).reviewerHowEdit),1)):p(`v-if`,!0),t(`li`,null,T(u(j).reviewerHowThread),1),t(`li`,null,T(u(j).reviewerHowApprove),1)]),t(`p`,It,T(u(j).reviewerLimits),1)])]))}}),[[`__scopeId`,`data-v-c732b20b`]]),Rt=[`title`],zt={key:0,class:`dot`},Bt={key:0,class:`menu card`},Vt={class:`h`},Ht={class:`tog`},Ut={class:`desc`},Wt={class:`tog`},Gt={class:`desc`},Kt={class:`h`},qt={class:`field`},Jt={class:`muted`},Yt={class:`desc`},Xt={class:`share`},Zt=[`value`],Qt={key:2,class:`desc`},$t={class:`row`},en={class:`muted`},tn={class:`seg`},nn=K(l({__name:`SettingsMenu`,props:{store:{}},setup(e){let r=e.store,i=d(!1),s=d(``),c=d(!1);b(()=>r.me.value?.name,e=>s.value=e??``,{immediate:!0});function l(){s.value.trim()&&s.value.trim()!==r.me.value?.name&&r.setName(s.value.trim())}async function f(){if(r.share.value){try{await navigator.clipboard.writeText(r.share.value)}catch{let e=document.createElement(`textarea`);e.value=r.share.value,document.body.append(e),e.select(),document.execCommand(`copy`),e.remove()}c.value=!0,setTimeout(()=>c.value=!1,1500)}}let v=d(),x=I(()=>r.controlOn.value?r.controlOutdated.value||r.page.attached&&r.page.caps.pageControl===null&&r.pageStatus.value===`unsupported`?`unsupported`:r.pageStatus.value===`disabled`?`offline`:r.pageStatus.value:`disabled`),C=I(()=>j.value[`status_${x.value}`]),E=e=>{i.value&&v.value&&!e.composedPath().includes(v.value)&&(i.value=!1)};return J(()=>document.addEventListener(`mousedown`,E)),_(()=>document.removeEventListener(`mousedown`,E)),(e,d)=>(n(),m(`div`,{ref_key:`root`,ref:v,class:`settings`},[t(`button`,{class:`btn ghost icon`,title:u(j).settings,"data-testid":`settings`,onClick:d[0]||=e=>i.value=!i.value},[o(M,{name:`gear`}),u(r).controlOn.value?(n(),m(`span`,zt)):p(`v-if`,!0)],8,Rt),i.value?(n(),m(`div`,Bt,[t(`div`,Vt,T(u(j).settings),1),t(`label`,Ht,[t(`span`,null,T(u(j).allowControl),1),S(t(`input`,{"onUpdate:modelValue":d[1]||=e=>u(r).controlOn.value=e,class:`switch`,type:`checkbox`,"data-testid":`toggle-control`},null,512),[[ee,u(r).controlOn.value]])]),t(`p`,Ut,T(u(j).controlPrivacy),1),u(r).controlOn.value?(n(),m(`div`,{key:0,class:w([`status`,x.value]),"data-testid":`control-status`},[d[7]||=t(`i`,null,null,-1),g(T(C.value),1)],2)):p(`v-if`,!0),d[9]||=t(`hr`,null,null,-1),t(`label`,Wt,[t(`span`,null,T(u(j).liveToggle),1),S(t(`input`,{"onUpdate:modelValue":d[2]||=e=>u(r).liveOn.value=e,class:`switch`,type:`checkbox`,"data-testid":`toggle-live`},null,512),[[ee,u(r).liveOn.value]])]),t(`p`,Gt,T(u(r).mode.value===`review`?u(j).liveReviewDesc:u(j).liveDesc),1),d[10]||=t(`hr`,null,null,-1),t(`div`,Kt,T(u(j).teamTitle),1),t(`label`,qt,[t(`span`,Jt,T(u(j).myName),1),S(t(`input`,{"onUpdate:modelValue":d[3]||=e=>s.value=e,class:`input`,maxlength:`40`,"data-testid":`owner-name`,onChange:l,onKeydown:a(l,[`enter`])},null,544),[[y,s.value]])]),u(r).share.value?(n(),m(h,{key:1},[t(`p`,Yt,T(u(j).teamShareDesc),1),t(`div`,Xt,[t(`input`,{class:`input`,readonly:``,value:u(r).share.value,"data-testid":`share-link`,onFocus:d[4]||=e=>e.target.select()},null,40,Zt),t(`button`,{class:`btn sm`,onClick:f},T(c.value?u(j).copied:u(j).copyLink),1)])],64)):(n(),m(`p`,Qt,T(u(j).teamNoShare),1)),d[11]||=t(`hr`,null,null,-1),t(`div`,$t,[t(`span`,en,T(u(j).language),1),d[8]||=t(`span`,{class:`spacer`},null,-1),t(`div`,tn,[t(`button`,{class:w([`btn sm`,{on:u(k)===`zh-CN`}]),onClick:d[5]||=e=>u(A)(`zh-CN`)},`中文`,2),t(`button`,{class:w([`btn sm`,{on:u(k)===`en`}]),onClick:d[6]||=e=>u(A)(`en`)},`English`,2)])])])):p(`v-if`,!0)],512))}}),[[`__scopeId`,`data-v-e196614f`]]);function rn(e,t){let n=document.documentElement.dataset.appOrigin,r=window.parent!==window&&!!n,i=null;if(r){let r=new MessageChannel;i=r.port1,i.onmessage=e=>{let n=e.data;n&&typeof n==`object`&&typeof n.type==`string`&&t(n)},window.parent.postMessage({type:`ph:hello`,role:e},n,[r.port2])}return{embedded:r,send(e){i?.postMessage(e)}}}var an=(e,t)=>{try{let n=localStorage.getItem(e);return n===null?t:n===`1`}catch{return t}},on=(e,t)=>{try{localStorage.setItem(e,t?`1`:`0`)}catch{}};function sn(){let e=d([]),t=d(``),n=d(``),r=d(``),i=d(`source`),a=d({items:[],approvals:[]}),o=d(null),c=d(),l=d([]),u=d(null),f=d([]),p=d(!1),m=d(!1),h=d([]),g=d(null),_=d(new Set),y=d([]),x=s({}),S=d(`disabled`),C=d(!1),w=d(null),T=d(null),E=V({}),D=s({attached:!1,tab:``,url:``,title:``,visible:!0,caps:{pageControl:null,live:null}}),O=d(an(`ph:control`,!1)),j=d(an(`ph:live`,!0)),M=s({text:``,picks:[],marks:[],attachments:[]}),P=()=>{try{return localStorage.getItem(`ph:chat`)}catch{return null}},F=rn(`chat`,e=>U(e)),R=W(e=>H(e),()=>{R.send({type:`subscribe`,chat:u.value?.id??P(),role:`chat`}),z()});b(()=>R.state.value,(e,t)=>{e===`error`&&t!==`error`&&F.send({type:`ph:session-dead`})});function z(){R.send({type:`page_control`,on:O.value&&D.attached,attached:D.attached,visible:D.visible,tab:D.tab,version:D.caps.pageControl})}function H(s){switch(s.type){case`hello`:e.value=s.agents,t.value=s.defaultAgent,n.value=s.project,r.value=s.target,i.value=s.mode,o.value=s.me,c.value=s.share,G(),K();break;case`chats`:l.value=s.chats;break;case`snapshot`:{let e=s.snapshot;u.value=e.chat,f.value=e.turns,p.value=e.hasMore,h.value=e.queue,g.value=e.running,_.value=new Set(e.pendingAsks);try{localStorage.setItem(`ph:chat`,e.chat.id)}catch{}break}case`event`:if(s.event.chatId!==u.value?.id)break;if(N(f.value,s.event),s.event.t===`ask`&&(_.value=new Set([..._.value,s.event.askId])),s.event.t===`ask_answer`){let e=new Set(_.value);e.delete(s.event.askId),_.value=e}f.value=[...f.value];break;case`state`:if(s.chatId!==u.value?.id)break;u.value=s.chat,h.value=s.queue,g.value=s.running;break;case`live`:y.value=s.sessions,F.send({type:`ph:live-sessions`,sessions:JSON.parse(JSON.stringify(s.sessions))});break;case`review`:a.value=s.review,K();break;case`page_probe`:F.send({type:`ph:probe`,id:s.id,selector:s.selector});break;case`artifacts`:s.open&&F.send({type:`ph:open`,what:`artifacts`});break;case`page_cmd`:F.send({type:`ph:cmd`,id:s.id,cmd:s.cmd});break;case`page_cancel`:F.send({type:`ph:cmd-cancel`,id:s.id});break;case`page_status`:S.value=s.status,C.value!==s.busy&&F.send({type:`ph:busy`,busy:s.busy}),C.value=s.busy;break;case`notice`:T.value=s.message;break;case`error`:w.value=s.message,setTimeout(()=>w.value===s.message&&(w.value=null),5e3)}}function U(e){switch(e.type){case`ph:attach`:D.attached=!0,D.tab=e.tab,D.url=e.url,D.title=e.title,D.visible=e.visible,D.caps=e.caps,v.value=e.theme,!L.value&&e.lang!==k.value&&A(e.lang,!1),F.send({type:`ph:ready`,role:`chat`}),F.send({type:`ph:lang`,lang:k.value}),F.send({type:`ph:control`,on:O.value}),G(),K(),F.send({type:`ph:live-sessions`,sessions:JSON.parse(JSON.stringify(y.value))}),z();break;case`ph:url`:D.url=e.url,D.title=e.title;break;case`ph:visibility`:D.visible=e.visible,R.send({type:`page_visibility`,visible:e.visible});break;case`ph:caps`:D.caps=e.caps,z();break;case`ph:pick`:M.picks.length<20&&!M.picks.some(t=>t.selector===e.pick.selector&&t.url===e.pick.url)&&M.picks.push(e.pick);break;case`ph:probe-result`:R.send({type:`probe_result`,id:e.id,result:e.result});break;case`ph:review-remove`:R.send({type:`review_remove`,id:e.id});break;case`ph:review-add`:R.send({type:`review_add`,draft:e.draft});break;case`ph:review-look`:R.send({type:`review_look`,id:e.id,look:e.look});break;case`ph:review-reply`:R.send({type:`review_reply`,id:e.id,text:e.text});break;case`ph:review-edit`:R.send({type:`review_edit`,id:e.id,note:e.note});break;case`ph:review-status`:R.send({type:`review_status`,id:e.id,status:e.status});break;case`ph:review-approve`:R.send({type:`review_approve`,url:e.url,status:e.status,host:e.host});break;case`ph:review-clear`:R.send({type:`review_clear`,host:e.host});break;case`ph:review-export`:R.send({type:`review_export`});break;case`ph:cmd-result`:R.send({type:`page_result`,id:e.id,result:e.result});break;case`ph:live`:R.send({type:`live_op`,request:e.request});break;case`ph:live-view`:x[e.sid]={current:e.current,display:e.display};break;case`ph:theme`:v.value=e.theme;break;case`ph:control-stop`:O.value=!1,R.send({type:`page_stop`})}}b(O,e=>{on(`ph:control`,e),F.send({type:`ph:control`,on:e}),z()}),b(j,e=>{on(`ph:live`,e),G()});function G(){F.send({type:`ph:live-caps`,on:j.value&&o.value?.access!==`reviewer`})}function K(){o.value&&F.send({type:`ph:review-items`,review:JSON.parse(JSON.stringify(a.value)),mode:i.value,me:{...o.value}})}b(k,e=>F.send({type:`ph:lang`,lang:e}));let ee=I(()=>O.value&&D.attached&&D.caps.pageControl!==null&&D.caps.pageControl!==1),te=I(()=>!!(M.text.trim()||M.picks.length||M.attachments.some(e=>!e.uploading&&!e.error))&&!M.attachments.some(e=>e.uploading));function q(){if(!te.value||!R.send({type:`prompt`,message:{text:M.text.trim(),picks:M.picks.map(e=>({...e})),marks:M.marks.length?M.marks.map(e=>({...e})):void 0,attachments:M.attachments.filter(e=>!e.error&&!e.uploading).map(({id:e,name:t,mime:n,size:r,kind:i})=>({id:e,name:t,mime:n,size:r,kind:i})),pageUrl:D.url||void 0}}))return!1;for(let e of M.attachments)e.preview&&URL.revokeObjectURL(e.preview);return M.text=``,M.picks=[],M.marks=[],M.attachments=[],!0}async function J(e){for(let t of e){let e=s({id:``,name:t.name||`pasted.png`,mime:t.type,size:t.size,kind:t.type.startsWith(`image/`)?`image`:`file`,uploading:!0,preview:t.type.startsWith(`image/`)?URL.createObjectURL(t):void 0});M.attachments.push(e);try{let n=await B.upload(t,e.name);Object.assign(e,n,{uploading:!1})}catch(t){e.uploading=!1,e.error=t instanceof Error?t.message:String(t)}}}function Y(e){R.send({type:`dequeue`,id:e.id}),M.text=e.text,M.picks=[...e.picks],M.marks=[...e.marks??[]],M.attachments=e.attachments.map(e=>({...e}))}async function ne(){if(u.value&&p.value&&!m.value&&f.value.length){m.value=!0;try{let e=await B.get(`chats/${u.value.id}/turns?before=${f.value[0].id}&limit=20`);f.value=[...e.turns.filter(e=>!f.value.some(t=>t.id===e.id)),...f.value],p.value=e.hasMore}finally{m.value=!1}}}function X(e){R.send({type:`subscribe`,chat:e,role:`chat`})}async function Z(){X((await B.post(`chats`,{agent:u.value?.agent,model:u.value?.model})).id)}async function re(e){u.value&&=await B.patch(`chats/${u.value.id}`,e)}async function ie(e){if(!E.value[e])try{let t=(await B.get(`agents/${e}/models`)).map(e=>typeof e==`string`?{id:e,label:e}:e).filter(e=>e?.id);E.value={...E.value,[e]:t}}catch{E.value={...E.value,[e]:null}}}function ae(e,t){R.send({type:`answer`,askId:e,answer:t})}function oe(e){R.send({type:`live_op`,request:e})}function se(e,t,n){let r=x[e]??={current:t??1,display:n??`inplace`};t!==void 0&&(r.current=t),n&&(r.display=n),F.send({type:`ph:live-nav`,sid:e,current:t,display:n})}let ce=typeof BroadcastChannel<`u`?new BroadcastChannel(`ph-panel`):null,le=e=>{e&&X(e)};ce&&(ce.onmessage=e=>{let t=e.data;t?.type===`switch-chat`&&le(t.id)}),window.addEventListener(`storage`,e=>{if(e.key===`ph:chat-switch`&&e.newValue)try{le(JSON.parse(e.newValue).id)}catch{}});function ue(e,t){try{localStorage.setItem(`ph:art-open`,JSON.stringify({name:e,version:t,ts:Date.now()}))}catch{}ce?.postMessage({type:`open-artifact`,name:e,version:t}),F.send({type:`ph:open`,what:`artifacts`})}return{openArtifact:ue,agents:e,defaultAgent:t,project:n,target:r,mode:i,review:a,me:o,share:c,chats:l,chat:u,turns:f,hasMore:p,loadingOlder:m,queue:h,running:g,pendingAsks:_,liveSessions:y,liveViews:x,pageStatus:S,pageBusy:C,error:w,notice:T,models:E,page:D,controlOn:O,liveOn:j,draft:M,canSend:te,controlOutdated:ee,conn:R.state,embedded:F.embedded,reconnect:R.reconnect,send:R.send,sendPrompt:q,addFiles:J,editQueued:Y,loadOlder:ne,switchChat:X,newChat:Z,updateChat:re,loadModels:ie,answer:ae,live:oe,liveNav:se,setName(e){R.send({type:`set_name`,name:e})},setTheme(e){v.value=e,F.send({type:`ph:theme`,theme:e})}}}var cn={key:1,class:`chat-app`},ln=[`title`],un={key:0,class:`livebar`},dn=[`title`],fn=[`title`],pn={key:0,class:`spin`},mn={key:0,class:`spin`},hn={key:0,class:`headline`,"data-testid":`headline`},gn={class:`hl`},_n={key:1,class:`empty`},vn={class:`empty-av`},yn={class:`empty-title`},bn={class:`empty-hint`},xn={key:3,class:`toast err`},Sn=[`src`],Cn=K(l({__name:`ChatApp`,setup(e){let r=sn(),i=d(),a=d(),s=d(!0),c=d(!1),l=d(null),v=d(Date.now()),y=setInterval(()=>v.value=Date.now(),3e4),S=I(()=>r.liveSessions.value.filter(e=>e.status!==`accepted`&&e.status!==`discarded`)),C=I(()=>S.value.filter(e=>e.status!==`accepting`&&e.status!==`discarding`)),D=I(()=>S.value.filter(e=>e.status===`failed`)),O=I(()=>{let e=new Map;for(let t of r.turns.value)t.user.live?.sid&&e.set(t.user.live.sid,t.id);return e}),k=I(()=>r.agents.value.find(e=>e.id===r.chat.value?.agent)),A=d(0),N=I(()=>Math.max(1,r.turns.value.length-A.value));b(()=>r.chat.value?.agent,e=>e&&r.loadModels(e),{immediate:!0});let P=(e=!1)=>{let t=i.value;t&&(t.scrollTo({top:t.scrollHeight,behavior:e?`smooth`:`auto`}),c.value=!1)},L=0,R=()=>{let e=i.value;e&&(e.scrollHeight-e.scrollTop-e.clientHeight<60?s.value=!0:e.scrollTop<L-1&&(s.value=!1),L=e.scrollTop,s.value&&(c.value=!1))};b(()=>{let e=r.turns.value[r.turns.value.length-1];return[r.turns.value.length,e?.lastSeq,e?.items.length]},()=>{let e=s.value;f(()=>{e?P():c.value||(c.value=!0,A.value=r.turns.value.length-1)})}),b(()=>r.chat.value?.id,()=>f(()=>P()));async function B(){let e=i.value;if(!e||r.loadingOlder.value||!r.hasMore.value)return;let t=e.scrollHeight-e.scrollTop;await r.loadOlder(),await f(),e.scrollTop=e.scrollHeight-t}let V=null,H=new ResizeObserver(()=>s.value&&P());J(()=>{V=new IntersectionObserver(e=>e.some(e=>e.isIntersecting)&&B(),{root:i.value,rootMargin:`120px`}),a.value&&V.observe(a.value),i.value&&H.observe(i.value)}),_(()=>{V?.disconnect(),H.disconnect(),clearInterval(y)});function W(){let e=C.value;if(!e.some(e=>e.status!==`failed`)||confirm(U(j.value.confirmDiscardAll,{n:e.length})))for(let t of e)r.live({op:`discard`,sid:t.sid})}function G(){for(let e of D.value)r.live({op:`discard`,sid:e.sid})}return(e,d)=>u(r).me.value?.access===`reviewer`?(n(),F(Lt,{key:0,store:u(r)},null,8,[`store`])):(n(),m(`div`,cn,[t(`header`,null,[o(le,{store:u(r)},null,8,[`store`]),t(`button`,{class:`btn ghost icon`,title:u(j).newChat,onClick:d[0]||=e=>u(r).newChat()},[o(M,{name:`plus`})],8,ln),o(nn,{store:u(r)},null,8,[`store`])]),S.value.length?(n(),m(`div`,un,[o(M,{name:`sparkle`}),t(`span`,null,T(u(U)(u(j).liveActive,{n:S.value.length})),1),d[6]||=t(`span`,{class:`spacer`},null,-1),D.value.length?(n(),m(`button`,{key:0,class:`btn sm`,title:u(j).clearFailedHint,"data-testid":`live-clear-failed`,onClick:G},T(u(U)(u(j).clearFailed,{n:D.value.length})),9,dn)):p(`v-if`,!0),C.value.length?(n(),m(`button`,{key:1,class:`btn sm`,title:u(j).discardAllHint,"data-testid":`live-discard-all`,onClick:W},T(u(U)(u(j).discardAll,{n:C.value.length})),9,fn)):p(`v-if`,!0)])):p(`v-if`,!0),u(r).conn.value===`ready`?p(`v-if`,!0):(n(),m(`div`,{key:1,class:w([`conn`,u(r).conn.value]),"data-testid":`conn`},[u(r).conn.value===`connecting`?(n(),m(`span`,pn)):p(`v-if`,!0),t(`span`,null,T(u(r).conn.value===`connecting`?u(j).connecting:u(j).netError),1),u(r).conn.value===`error`?(n(),m(`button`,{key:1,class:`btn sm`,onClick:d[1]||=e=>u(r).reconnect()},T(u(j).retryNow),1)):p(`v-if`,!0)],2)),t(`main`,{ref_key:`list`,ref:i,class:`list`,onScroll:R},[t(`div`,{ref_key:`sentinel`,ref:a,class:`sentinel`},[u(r).loadingOlder.value?(n(),m(`span`,mn)):u(r).hasMore.value?(n(),m(`button`,{key:1,class:`btn ghost sm`,onClick:B},T(u(j).loadOlder),1)):p(`v-if`,!0)],512),u(r).turns.value.length?(n(),m(`div`,hn,[u(r).chat.value?.agent?(n(),F(E,{key:0,id:u(r).chat.value.agent,size:`xs`},null,8,[`id`])):p(`v-if`,!0),t(`span`,gn,T(u(U)(u(j).headerLine,{agent:k.value?.label??u(r).chat.value?.agent??``,n:u(r).turns.value.length})),1)])):u(r).conn.value===`ready`?(n(),m(`div`,_n,[t(`div`,vn,[o(M,{name:`robot`})]),t(`div`,yn,T(u(r).mode.value===`review`?u(j).reviewEmptyTitle:u(j).emptyTitle),1),t(`div`,bn,T(u(r).mode.value===`review`?u(j).reviewEmptyHint:u(j).emptyHint),1)])):p(`v-if`,!0),(n(!0),m(h,null,x(u(r).turns.value,e=>(n(),F(z,{key:e.id,turn:e,interactive:!0,"pending-asks":u(r).pendingAsks.value,"live-sessions":u(r).liveSessions.value,"live-views":u(r).liveViews,"live-latest":!!e.user.live?.sid&&O.value.get(e.user.live.sid)===e.id,now:v.value,onAnswer:u(r).answer,onRetry:d[2]||=e=>u(r).send({type:`retry`,turnId:e}),onLive:u(r).live,onNav:u(r).liveNav,onImage:d[3]||=e=>l.value=e,onArtifact:u(r).openArtifact},null,8,[`turn`,`pending-asks`,`live-sessions`,`live-views`,`live-latest`,`now`,`onAnswer`,`onLive`,`onNav`,`onArtifact`]))),128))],544),c.value&&!s.value?(n(),m(`button`,{key:2,class:`unread`,"data-testid":`unread`,onClick:d[4]||=e=>P(!0)},[o(M,{name:`chevrons`}),g(T(u(U)(u(j).newCount,{n:N.value})),1)])):p(`v-if`,!0),u(r).error.value?(n(),m(`div`,xn,T(u(r).error.value),1)):p(`v-if`,!0),o(xt,{store:u(r)},null,8,[`store`]),o(ut,{store:u(r)},null,8,[`store`]),l.value?(n(),m(`div`,{key:4,class:`lightbox`,onClick:d[5]||=e=>l.value=null},[t(`img`,{src:l.value,alt:``},null,8,Sn)])):p(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-ee35d567`]]);function wn(e,t){return`${e.replace(/\.[^.]+$/,``)}.${t}`}async function Tn(t){let{default:n}=await D(async()=>{let{default:t}=await import(`./html2canvas-Dn6bw578.js`).then(t=>e(t.default,1));return{default:t}},__vite__mapDeps([0,1]));return n(t,{backgroundColor:getComputedStyle(document.documentElement).getPropertyValue(`--bg`).trim()||`#fff`,scale:Math.min(2,window.devicePixelRatio||1),useCORS:!0,windowWidth:t.scrollWidth,height:t.scrollHeight,windowHeight:t.scrollHeight})}function En(e,t){let n=document.createElement(`a`);n.href=e,n.download=t,document.body.appendChild(n),n.click(),n.remove()}async function Dn(e,t){En((await Tn(e)).toDataURL(`image/png`),wn(t,`png`))}async function On(e,t){let n=await Tn(e),{jsPDF:r}=await D(async()=>{let{jsPDF:e}=await import(`./jspdf.es.min-BF5gKf3S.js`);return{jsPDF:e}},__vite__mapDeps([2,1,3,4])),i=new r({unit:`pt`,format:`a4`,orientation:`portrait`}),a=i.internal.pageSize.getWidth(),o=i.internal.pageSize.getHeight(),s=a-48,c=s/n.width,l=Math.floor((o-48)/c);for(let e=0,t=0;e<n.height;e+=l,t++){let r=document.createElement(`canvas`);r.width=n.width,r.height=Math.min(l,n.height-e),r.getContext(`2d`).drawImage(n,0,e,n.width,r.height,0,0,n.width,r.height),t&&i.addPage(),i.addImage(r.toDataURL(`image/png`),`PNG`,24,24,s,r.height*c)}i.save(wn(t,`pdf`))}var kn={class:`jt`},An={key:0,class:`key`},jn={class:`pv`},Mn={key:0,class:`kids`},Nn={key:1,class:`leaf`},Pn={key:0,class:`key`},Fn=K(l({name:`JsonTree`,__name:`JsonTree`,props:{value:{},name:{},depth:{}},setup(e){let r=e,i=I(()=>r.depth??0),a=d(i.value<2),o=I(()=>r.value!==null&&typeof r.value==`object`),s=I(()=>o.value?Object.entries(r.value):[]),l=I(()=>Array.isArray(r.value)),u=I(()=>l.value?`[${s.value.length}]`:`{${s.value.length}}`),f=I(()=>r.value===null?`null`:typeof r.value),g=I(()=>typeof r.value==`string`?JSON.stringify(r.value):String(r.value));return(r,d)=>{let _=c(`JsonTree`,!0);return n(),m(`div`,kn,[o.value?(n(),m(h,{key:0},[t(`button`,{class:`tog`,onClick:d[0]||=e=>a.value=!a.value},[t(`span`,{class:w([`car`,{open:a.value}])},`▸`,2),e.name===void 0?p(`v-if`,!0):(n(),m(`span`,An,T(e.name)+`:`,1)),t(`span`,jn,T(u.value),1)]),a.value?(n(),m(`div`,Mn,[(n(!0),m(h,null,x(s.value,([e,t])=>(n(),F(_,{key:e,name:l.value?Number(e)+``:e,value:t,depth:i.value+1},null,8,[`name`,`value`,`depth`]))),128))])):p(`v-if`,!0)],64)):(n(),m(`div`,Nn,[e.name===void 0?p(`v-if`,!0):(n(),m(`span`,Pn,T(e.name)+`:`,1)),t(`span`,{class:w([`v`,f.value])},T(g.value),3)]))])}}}),[[`__scopeId`,`data-v-1e4fba0c`]]),In={class:`tb`},Ln=[`value`],Rn=[`value`],zn={key:1,class:`chip ro`},Bn={key:2,class:`seg`},Vn={key:3,class:`seg`},Hn=[`title`],Un=[`title`],Wn=[`title`,`href`],Gn=[`disabled`],Kn=[`disabled`],qn={key:0,class:`center`},Jn={key:1,class:`center col`},Yn={class:`muted`},Xn=[`src`,`title`],Zn={key:1,class:`center col`},Qn=[`src`,`alt`],$n={key:2,class:`center col`},er={class:`muted`},tr=[`href`],nr=1280,rr=390,ir=K(l({__name:`ArtifactPreview`,props:{info:{},version:{}},emits:[`version`],setup(e,{emit:r}){let i=e,a=r,s=I(()=>i.version??i.info.latest),c=I(()=>s.value!==i.info.latest),l=d(null),f=d(!1),v=d(!1),y=d(`structured`),S=d(`desktop`),E=d(!1),D=d(!1),O=d(0),k=d(),A=d(),N=d(),L=d(1),z=I(()=>![`image`,`file`,`html`].includes(i.info.kind)),B=I(()=>/\.([a-z0-9]+)$/i.exec(i.info.name)?.[1]?.toLowerCase()??`text`),V=I(()=>{if(i.info.kind===`json`&&l.value!==null)try{return{ok:!0,value:JSON.parse(l.value)}}catch{return{ok:!1}}}),U=I(()=>i.info.kind===`markdown`||i.info.kind===`json`&&y.value===`structured`),W=I(()=>{let e=R(i.info.name,c.value?s.value:void 0);return`${e}${e.includes(`?`)?`&`:`?`}t=${i.info.updatedAt}`});async function G(){if(f.value=!1,!z.value){O.value++;return}v.value=!0;try{let e=await fetch(R(i.info.name,s.value),{credentials:`same-origin`});if(!e.ok)throw Error(String(e.status));l.value=await e.text()}catch{f.value=!0,l.value=null}finally{v.value=!1}}b(()=>[i.info.name,s.value,i.info.updatedAt],G,{immediate:!0});let K=null,ee=()=>{let e=N.value;if(!e)return;let t=S.value===`desktop`?nr:rr;L.value=Math.min(1,(e.clientWidth-16)/t)};J(()=>{K=new ResizeObserver(ee),N.value&&K.observe(N.value)}),b(N,e=>e&&K?.observe(e)),b(S,ee),_(()=>K?.disconnect());async function te(){try{if(z.value&&l.value!==null)await navigator.clipboard.writeText(l.value);else if(i.info.kind===`html`)await navigator.clipboard.writeText(await(await fetch(R(i.info.name,s.value))).text());else if(i.info.kind===`image`){let e=await(await fetch(R(i.info.name,s.value))).blob();await navigator.clipboard.write([new ClipboardItem({[e.type]:e})])}D.value=!0,setTimeout(()=>D.value=!1,1500)}catch{}}let q=d(!1);async function Y(e){let t=A.value;if(t){q.value=!0;try{await(e===`png`?Dn(t,i.info.name):On(t,i.info.name))}finally{q.value=!1}}}let ne=e=>e.key===`Escape`&&(E.value=!1);return J(()=>addEventListener(`keydown`,ne)),_(()=>removeEventListener(`keydown`,ne)),(r,i)=>(n(),m(`div`,{class:w([`pv`,{zoomed:E.value}])},[t(`div`,In,[e.info.versions.length>1?(n(),m(`select`,{key:0,class:`input sel`,value:s.value,"data-testid":`version-select`,onChange:i[0]||=t=>a(`version`,Number(t.target.value)===e.info.latest?void 0:Number(t.target.value))},[(n(!0),m(h,null,x([...e.info.versions].reverse(),e=>(n(),m(`option`,{key:e.v,value:e.v},`v`+T(e.v)+` · `+T(new Date(e.ts).toLocaleString()),9,Rn))),128))],40,Ln)):p(`v-if`,!0),c.value?(n(),m(`span`,zn,T(u(j).readOnly),1)):p(`v-if`,!0),e.info.kind===`html`?(n(),m(`div`,Bn,[t(`button`,{class:w([`btn sm`,{on:S.value===`desktop`}]),onClick:i[1]||=e=>S.value=`desktop`},[o(M,{name:`monitor`}),g(T(u(j).desktop),1)],2),t(`button`,{class:w([`btn sm`,{on:S.value===`mobile`}]),onClick:i[2]||=e=>S.value=`mobile`},[o(M,{name:`phone`}),g(T(u(j).mobile),1)],2)])):p(`v-if`,!0),e.info.kind===`json`&&V.value?.ok?(n(),m(`div`,Vn,[t(`button`,{class:w([`btn sm`,{on:y.value===`structured`}]),onClick:i[3]||=e=>y.value=`structured`},T(u(j).structured),3),t(`button`,{class:w([`btn sm`,{on:y.value===`raw`}]),onClick:i[4]||=e=>y.value=`raw`},T(u(j).raw),3)])):p(`v-if`,!0),i[10]||=t(`span`,{class:`spacer`},null,-1),t(`button`,{class:`btn ghost icon sm`,title:u(j).zoom,onClick:i[5]||=e=>E.value=!E.value},[o(M,{name:E.value?`x`:`zoom`},null,8,[`name`])],8,Hn),e.info.kind===`file`?p(`v-if`,!0):(n(),m(`button`,{key:4,class:`btn ghost icon sm`,title:D.value?u(j).copied:u(j).copy,onClick:te},[o(M,{name:D.value?`check`:`copy`},null,8,[`name`])],8,Un)),t(`a`,{class:`btn ghost icon sm`,title:u(j).download,href:u(R)(e.info.name,s.value,!0)},[o(M,{name:`download`})],8,Wn),U.value&&l.value!==null?(n(),m(h,{key:5},[t(`button`,{class:`btn sm`,disabled:q.value,onClick:i[6]||=e=>Y(`png`)},`PNG`,8,Gn),t(`button`,{class:`btn sm`,disabled:q.value,onClick:i[7]||=e=>Y(`pdf`)},`PDF`,8,Kn)],64)):p(`v-if`,!0)]),t(`div`,{ref_key:`body`,ref:k,class:`body`},[v.value?(n(),m(`div`,qn,[...i[11]||=[t(`span`,{class:`spin`},null,-1)]])):f.value?(n(),m(`div`,Jn,[t(`span`,Yn,T(u(j).loadFailed),1),t(`button`,{class:`btn sm`,onClick:G},[o(M,{name:`refresh`}),g(T(u(j).retry),1)])])):(n(),m(h,{key:2},[e.info.kind===`html`?(n(),m(`div`,{key:0,ref_key:`frameBox`,ref:N,class:`frame-box`},[t(`div`,{class:`frame-wrap`,style:C({width:(S.value===`desktop`?1280:390)*L.value+`px`,height:`100%`})},[(n(),m(`iframe`,{key:W.value+S.value,src:W.value,sandbox:`allow-scripts allow-forms allow-popups allow-modals`,referrerpolicy:`no-referrer`,title:e.info.name,style:C({width:(S.value===`desktop`?1280:390)+`px`,height:100/L.value+`%`,transform:`scale(${L.value})`})},null,12,Xn))],4)],512)):e.info.kind===`image`?(n(),m(`div`,Zn,[(n(),m(`img`,{key:O.value,src:`${W.value}&r=${O.value}`,alt:e.info.name,class:`img`,onError:i[8]||=e=>f.value=!0},null,40,Qn))])):e.info.kind===`file`?(n(),m(`div`,$n,[o(M,{name:`file`,class:`big`}),t(`div`,null,T(e.info.name),1),t(`div`,er,T(u(j).binary)+` · `+T((e.info.size/1024).toFixed(1))+` KB`,1),t(`a`,{class:`btn primary`,href:u(R)(e.info.name,s.value,!0)},[o(M,{name:`download`}),g(T(u(j).download),1)],8,tr)])):e.info.kind===`markdown`&&l.value!==null?(n(),m(`div`,{key:3,ref_key:`rendered`,ref:A,class:`doc`,onDblclick:i[9]||=e=>E.value=!E.value},[o(P,{source:l.value},null,8,[`source`])],544)):e.info.kind===`json`&&l.value!==null&&y.value===`structured`&&V.value?.ok?(n(),m(`div`,{key:4,ref_key:`rendered`,ref:A,class:`doc`},[o(Fn,{value:V.value.value},null,8,[`value`])],512)):l.value===null?p(`v-if`,!0):(n(),F(H,{key:5,code:l.value,lang:e.info.kind===`json`?`json`:e.info.kind===`yaml`?`yaml`:B.value,class:`code`},null,8,[`code`,`lang`]))],64))],512)],2))}}),[[`__scopeId`,`data-v-d343d7ab`]]),ar={class:`art-app`},or={class:`tabs`},sr={class:`faint`},cr=[`onClick`],lr={class:`nm`},ur={key:0,class:`dot`},dr=[`title`,`onClick`],fr={key:0,class:`conn muted`},pr={key:1,class:`empty muted`},mr={key:2,class:`grid`},hr=[`data-artifact`,`onClick`],gr={class:`ic`},_r={class:`nm`},vr={class:`meta faint`},yr={class:`meta faint`},br={key:0,class:`flag new`},xr={key:1,class:`flag upd`},Sr=K(l({__name:`ArtifactsApp`,setup(e){let r=d([]),a=d(!1),c=(e,t,n)=>{try{let r=e.getItem(t);return r?JSON.parse(r):n}catch{return n}},l=(e,t,n)=>{try{e.setItem(t,JSON.stringify(n))}catch{}},f=s(c(sessionStorage,`ph:art-tabs`,{tabs:[],active:null,versions:{}})),y=s(c(localStorage,`ph:art-seen`,{}));b(f,()=>l(sessionStorage,`ph:art-tabs`,f),{deep:!0}),b(y,()=>l(localStorage,`ph:art-seen`,y),{deep:!0});let S=I(()=>new Map(r.value.map(e=>[e.name,e]))),C=I(()=>f.active?S.value.get(f.active):void 0),E=d(Date.now()),D=setInterval(()=>E.value=Date.now(),3e4);_(()=>clearInterval(D));function O(e,t){f.tabs.includes(e)||f.tabs.push(e),f.active=e,t&&S.value.get(e)?.latest!==t?f.versions[e]=t:delete f.versions[e]}function k(e){let t=f.tabs.indexOf(e);t>=0&&f.tabs.splice(t,1),f.active===e&&(f.active=f.tabs[t]??f.tabs[t-1]??null),delete f.versions[e]}b(()=>[C.value?.name,C.value?.latest],()=>{C.value&&(y[C.value.name]=C.value.latest)});let A=e=>y[e.name]===void 0?`new`:y[e.name]<e.latest?`updated`:``,N=!1,P=W(e=>{if(e.type===`artifacts`){r.value=e.artifacts;for(let t of[...f.tabs])e.artifacts.some(e=>e.name===t)||k(t);a.value||(a.value=!0,L()),e.open?O(e.open):e.pinned&&!N&&!f.active&&O(e.pinned),N=!0}},()=>{});_(()=>P.close());function L(){let e=c(localStorage,`ph:art-open`,null);e&&Date.now()-e.ts<3e4&&S.value.has(e.name)&&O(e.name,e.version),localStorage.removeItem(`ph:art-open`)}let R=typeof BroadcastChannel<`u`?new BroadcastChannel(`ph-panel`):null;R&&(R.onmessage=e=>{let t=e.data;t?.type===`open-artifact`&&(O(t.name,t.version),localStorage.removeItem(`ph:art-open`))}),rn(`artifacts`,e=>{(e.type===`ph:attach`||e.type===`ph:theme`)&&(v.value=e.theme)});let z={html:`monitor`,json:`file`,markdown:`file`,yaml:`file`,image:`image`,text:`file`,file:`file`},B={html:`HTML`,json:`JSON`,markdown:`Markdown`,yaml:`YAML`,image:`Image`,text:`Text`,file:`File`},V=e=>e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`;return(e,s)=>(n(),m(`div`,ar,[t(`nav`,or,[t(`button`,{class:w([`tab`,{on:!f.active}]),"data-testid":`tab-all`,onClick:s[0]||=e=>f.active=null},[g(T(u(j).allArtifacts)+` `,1),t(`span`,sr,T(r.value.length),1)],2),(n(!0),m(h,null,x(f.tabs,e=>(n(),m(`div`,{key:e,class:w([`tab`,{on:f.active===e}]),onClick:t=>f.active=e},[t(`span`,lr,T(e),1),S.value.get(e)&&A(S.value.get(e))===`updated`&&f.active!==e?(n(),m(`span`,ur)):p(`v-if`,!0),t(`button`,{class:`x`,title:u(j).close,onClick:i(t=>k(e),[`stop`])},[o(M,{name:`x`})],8,dr)],10,cr))),128))]),u(P).state.value===`ready`?p(`v-if`,!0):(n(),m(`div`,fr,[s[2]||=t(`span`,{class:`spin`},null,-1),g(T(u(P).state.value===`error`?u(j).netError:u(j).connecting),1)])),t(`main`,null,[C.value?(n(),F(ir,{key:C.value.name,info:C.value,version:f.versions[C.value.name],onVersion:s[1]||=e=>e?f.versions[C.value.name]=e:delete f.versions[C.value.name]},null,8,[`info`,`version`])):a.value&&!r.value.length?(n(),m(`div`,pr,[o(M,{name:`sparkle`}),g(T(u(j).noArtifacts),1)])):(n(),m(`div`,mr,[(n(!0),m(h,null,x(r.value,e=>(n(),m(`button`,{key:e.name,class:`tile card`,"data-artifact":e.name,onClick:t=>O(e.name)},[t(`div`,gr,[o(M,{name:z[e.kind]},null,8,[`name`])]),t(`div`,_r,T(e.name),1),t(`div`,vr,T(B[e.kind])+` · `+T(V(e.size))+` · v`+T(e.latest),1),t(`div`,yr,T(u(G)(e.updatedAt,E.value)),1),A(e)===`new`?(n(),m(`span`,br,T(u(j).new),1)):A(e)===`updated`?(n(),m(`span`,xr,T(u(j).updated),1)):p(`v-if`,!0)],8,hr))),128))]))])]))}}),[[`__scopeId`,`data-v-f36091ad`]]);te(),document.documentElement.lang=k.value;var Cr=location.hash===`#artifacts`?`artifacts`:`chat`;r(Cr===`artifacts`?Sr:Cn).mount(`#app`);