page-harness 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "page-harness",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Point it at any frontend URL and get Pick / Artifacts / Chat on the page, driven by the coding agent CLI on your machine.",
5
5
  "keywords": [
6
6
  "agent",
@@ -1 +0,0 @@
1
- import{A as e,B as t,D as n,E as r,F as ee,G as i,I as te,J as a,K as ne,L as o,M as s,N as re,O as ie,P as c,R as l,S as ae,T as u,U as d,V as oe,_ as f,b as p,c as m,d as h,f as g,g as se,j as _,k as v,l as y,m as b,n as ce,p as x,s as S,t as le,v as C,y as w}from"./ws-B8OO397O.js";var ue={class:`hist`},de={class:`brand`},fe={class:`faint`},pe={class:`search`},me=[`placeholder`],he={key:0,class:`list`},ge={class:`cnt faint`},T=[`onClick`],E={class:`tt`},D=[`innerHTML`],O={class:`meta faint`},k={key:1,class:`list`},A={key:0,class:`cnt faint`},j=[`data-chat`,`onClick`],M={class:`tt`},N={key:0,class:`snip`},P={class:`meta faint`},F={class:`foot`},I={class:`ttl`},L={class:`faint sub`},_e=[`href`],ve=[`title`],ye={key:0,class:`hint`},be={class:`older`},xe={key:0,class:`center`},Se={key:1,class:`center muted`},Ce=[`src`],R=S(re({__name:`HistoryApp`,setup(re){let p=d([]),S=d(null),C=d([]),R=d(!1),z=d(!1),B=d(``),V=d(null),H=d(!1),U=d(``),W=d(Date.now()),G=d(null),K=d(),we=setInterval(()=>W.value=Date.now(),3e4),q=le(e=>{if(e.type===`chats`)p.value=e.chats;else if(e.type===`snapshot`&&e.snapshot.chat.id===S.value?.id){S.value=e.snapshot.chat;let t=e.snapshot.turns[0]?.id,n=t?C.value.findIndex(e=>e.id===t):-1;C.value=n>=0?[...C.value.slice(0,n),...e.snapshot.turns]:e.snapshot.turns,n<0&&(R.value=e.snapshot.hasMore)}else e.type===`event`&&e.event.chatId===S.value?.id?(se(C.value,e.event),C.value=[...C.value]):e.type===`state`&&e.chatId===S.value?.id&&(S.value=e.chat)},()=>{q.send({type:`subscribe`,chat:S.value?.id??null,role:`history`})});async function J(){p.value=await b.get(`chats`)}async function Y(e,t){if(S.value?.id!==e){z.value=!0;try{let t=await b.get(`chats/${e}`);S.value=t.chat,C.value=t.turns,R.value=t.hasMore}finally{z.value=!1}q.send({type:`subscribe`,chat:e,role:`history`})}if(history.replaceState(null,``,`#chat=${e}${t?`&turn=${t}`:``}`),t){for(let e=0;e<20&&!C.value.some(e=>e.id===t)&&R.value;e++)await X(200);await c();let e=K.value?.querySelector(`[data-turn="${t}"]`);e?.scrollIntoView({block:`start`}),e?.classList.add(`flash`),setTimeout(()=>e?.classList.remove(`flash`),1600)}else await c(),K.value?.scrollTo({top:K.value.scrollHeight})}async function X(e=20){if(!S.value||!R.value||!C.value.length)return;let t=K.value,n=t?t.scrollHeight-t.scrollTop:0,r=await b.get(`chats/${S.value.id}/turns?before=${C.value[0].id}&limit=${e}`);C.value=[...r.turns,...C.value],R.value=r.hasMore,await c(),t&&(t.scrollTop=t.scrollHeight-n)}let Z=0;t(B,e=>{if(clearTimeout(Z),!e.trim()){V.value=null;return}Z=window.setTimeout(async()=>{H.value=!0;try{V.value=await b.get(`search?q=${encodeURIComponent(e.trim())}`)}finally{H.value=!1}},200)});function Te(e){let t=e.replace(/[&<>"]/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`})[e]),n=B.value.trim();if(!n)return t;let r=new RegExp(n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`).replace(/[&<>"]/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`})[e]),`gi`);return t.replace(r,e=>`<mark>${e}</mark>`)}let Q=typeof BroadcastChannel<`u`?new BroadcastChannel(`ph-panel`):null;function Ee(){if(!S.value)return;let e=S.value.id;try{localStorage.setItem(`ph:chat`,e),localStorage.setItem(`ph:chat-switch`,JSON.stringify({id:e,ts:Date.now()}))}catch{}Q?.postMessage({type:`switch-chat`,id:e}),q.send({type:`focus_chat`,id:e}),U.value=x.value.continueHint,setTimeout(()=>U.value=``,4e3)}async function De(){S.value&&confirm(x.value.confirmDelete)&&(await b.del(`chats/${S.value.id}`),S.value=null,C.value=[],history.replaceState(null,``,`#`),await J())}let $=r(()=>{let e=0,t=0;for(let n of C.value)e+=n.durationMs??0,t+=(n.usage?.inputTokens??0)+(n.usage?.outputTokens??0);return{ms:e,tok:t}});return te(async()=>{await J();let e=/chat=([\w-]+)(?:&turn=([\w-]+))?/.exec(location.hash);e&&await Y(e[1],e[2])}),ee(()=>{clearInterval(we),Q?.close(),q.close()}),(t,r)=>(o(),e(`div`,ue,[n(`aside`,null,[n(`div`,de,[r[6]||=n(`i`,null,null,-1),r[7]||=_(`Page Harness `,-1),n(`span`,fe,`· `+a(i(x).history),1)]),n(`div`,pe,[s(f,{name:`search`}),oe(n(`input`,{"onUpdate:modelValue":r[0]||=e=>B.value=e,class:`input`,placeholder:i(x).search,"data-testid":`history-search`},null,8,me),[[ae,B.value]])]),V.value?(o(),e(`div`,he,[n(`div`,ge,a(H.value?`…`:V.value.length?i(m)(i(x).results,{n:V.value.length}):i(x).noResults),1),(o(!0),e(u,null,l(V.value,(t,r)=>(o(),e(`button`,{key:r,class:`item hit`,onClick:e=>Y(t.chatId,t.turnId||void 0)},[n(`span`,E,a(t.title||i(x).untitled),1),n(`span`,{class:`snip`,innerHTML:Te(t.snippet)},null,8,D),n(`span`,O,a(t.role===`user`?i(x).you:`Agent`)+` · `+a(i(h)(t.ts,W.value)),1)],8,T))),128))])):(o(),e(`div`,k,[p.value.length?v(`v-if`,!0):(o(),e(`div`,A,a(i(x).noChats),1)),(o(!0),e(u,null,l(p.value,t=>(o(),e(`button`,{key:t.id,class:ne([`item`,{on:t.id===S.value?.id}]),"data-chat":t.id,onClick:e=>Y(t.id)},[n(`span`,M,a(t.title||i(x).untitled),1),t.preview?(o(),e(`span`,N,a(t.preview),1)):v(`v-if`,!0),n(`span`,P,a(t.agent)+` · `+a(i(m)(i(x).turns,{n:t.turns}))+` · `+a(i(h)(t.updatedAt,W.value)),1)],10,j))),128))])),n(`div`,F,[n(`button`,{class:`btn ghost sm`,onClick:r[1]||=e=>i(g)(i(y)===`en`?`zh-CN`:`en`)},a(i(y)===`en`?`中文`:`English`),1),n(`button`,{class:`btn ghost icon sm`,onClick:r[2]||=e=>w.value=i(w)===`dark`?`light`:`dark`},[s(f,{name:i(w)===`dark`?`sun`:`moon`},null,8,[`name`])])])]),n(`section`,null,[S.value?(o(),e(u,{key:0},[n(`header`,null,[n(`div`,I,[n(`h1`,null,a(S.value.title||i(x).untitled),1),n(`div`,L,[_(a(S.value.agent)+a(S.value.model?` · ${S.value.model}`:``)+` · `+a(i(m)(i(x).turns,{n:S.value.turns}))+` · `+a(new Date(S.value.createdAt).toLocaleString())+` `,1),$.value.tok?(o(),e(u,{key:0},[_(` · `+a($.value.tok.toLocaleString())+` `+a(i(x).tokens),1)],64)):v(`v-if`,!0)])]),n(`button`,{class:`btn sm`,"data-testid":`continue`,onClick:Ee},[s(f,{name:`external`}),_(a(i(x).continueInPanel),1)]),n(`a`,{class:`btn sm`,href:`/__ph/api/chats/${S.value.id}/export.md`,"data-testid":`export`},[s(f,{name:`download`}),_(a(i(x).exportMd),1)],8,_e),n(`button`,{class:`btn sm danger icon`,title:i(x).delete,onClick:De},[s(f,{name:`trash`})],8,ve)]),U.value?(o(),e(`div`,ye,a(U.value),1)):v(`v-if`,!0),n(`main`,{ref_key:`main`,ref:K},[n(`div`,be,[R.value?(o(),e(`button`,{key:0,class:`btn ghost sm`,onClick:r[3]||=e=>X()},a(i(x).loadOlder),1)):v(`v-if`,!0)]),z.value?(o(),e(`div`,xe,[...r[8]||=[n(`span`,{class:`spin`},null,-1)]])):v(`v-if`,!0),(o(!0),e(u,null,l(C.value,e=>(o(),ie(ce,{key:e.id,turn:e,interactive:!1,now:W.value,onImage:r[4]||=e=>G.value=e},null,8,[`turn`,`now`]))),128))],512)],64)):(o(),e(`div`,Se,a(i(x).selectChat),1))]),G.value?(o(),e(`div`,{key:0,class:`lightbox`,onClick:r[5]||=e=>G.value=null},[n(`img`,{src:G.value,alt:``},null,8,Ce)])):v(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-ce84bb39`]]);C(),document.documentElement.lang=y.value,p(R).mount(`#app`);
@@ -1 +0,0 @@
1
- .hist[data-v-ce84bb39]{grid-template-columns:320px 1fr;height:100%;display:grid}aside[data-v-ce84bb39]{border-right:1px solid var(--line);background:var(--bg2);flex-direction:column;min-height:0;display:flex}.brand[data-v-ce84bb39]{align-items:center;gap:8px;padding:14px 14px 8px;font-size:14px;font-weight:700;display:flex}.brand i[data-v-ce84bb39]{background:var(--accent);border-radius:3px;width:10px;height:10px;transform:rotate(45deg)}.search[data-v-ce84bb39]{padding:4px 12px 8px;position:relative}.search svg[data-v-ce84bb39]{width:14px;height:14px;color:var(--fg3);position:absolute;top:12px;left:22px}.search .input[data-v-ce84bb39]{width:100%;padding-left:30px}.list[data-v-ce84bb39]{flex-direction:column;flex:1;gap:2px;padding:4px 8px;display:flex;overflow:auto}.cnt[data-v-ce84bb39]{padding:4px 6px;font-size:12px}.item[data-v-ce84bb39]{text-align:left;background:0 0;border:0;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;padding:8px;display:flex}.item[data-v-ce84bb39]:hover{background:var(--bg3)}.item.on[data-v-ce84bb39]{background:var(--accent-soft)}.tt[data-v-ce84bb39]{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-weight:600;overflow:hidden}.snip[data-v-ce84bb39]{color:var(--fg2);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;display:-webkit-box;overflow:hidden}.snip[data-v-ce84bb39] mark{background:color-mix(in srgb, var(--accent) 30%, transparent);color:inherit;border-radius:2px}.meta[data-v-ce84bb39]{font-size:11px}.foot[data-v-ce84bb39]{border-top:1px solid var(--line);justify-content:space-between;padding:8px 12px;display:flex}section[data-v-ce84bb39]{flex-direction:column;min-width:0;min-height:0;display:flex}header[data-v-ce84bb39]{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:12px 20px;display:flex}header a[data-v-ce84bb39]{color:var(--fg);text-decoration:none}.ttl[data-v-ce84bb39]{flex:1;min-width:0}h1[data-v-ce84bb39]{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:16px;overflow:hidden}.sub[data-v-ce84bb39]{font-size:12px}.hint[data-v-ce84bb39]{background:var(--accent-soft);padding:6px 20px;font-size:12px}main[data-v-ce84bb39]{flex:1;padding:0 8px 40px;overflow:auto}main[data-v-ce84bb39] .turn{border-bottom:1px solid var(--line);max-width:860px;margin:0 auto}main[data-v-ce84bb39] .turn.flash{animation:1.6s flash-ce84bb39}@keyframes flash-ce84bb39{0%,40%{background:var(--accent-soft)}to{background:0 0}}.older[data-v-ce84bb39]{justify-content:center;padding:8px;display:flex}.center[data-v-ce84bb39]{justify-content:center;align-items:center;height:100%;padding:24px;display:flex}@media (width<=720px){.hist[data-v-ce84bb39]{grid-template-columns:1fr}aside[data-v-ce84bb39]{max-height:40vh}}
@@ -1 +0,0 @@
1
- .switcher[data-v-e6451992]{flex:1;min-width:0;position:relative}.cur[data-v-e6451992]{border-radius:var(--r);background:0 0;border:0;align-items:center;gap:4px;max-width:100%;height:28px;padding:0 8px;font-weight:600;display:flex}.cur[data-v-e6451992]:hover{background:var(--bg2)}.cur svg[data-v-e6451992]{width:14px;height:14px;color:var(--fg2);flex:none}.tt[data-v-e6451992]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rn[data-v-e6451992]{width:100%;height:28px}.menu[data-v-e6451992]{border-radius:var(--r-lg);z-index:30;width:min(320px,100vw - 16px);box-shadow:var(--shadow);position:absolute;top:36px;left:0;overflow:hidden}.acts[data-v-e6451992]{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:4px;padding:8px;display:flex}.acts a[data-v-e6451992]{color:var(--fg);text-decoration:none}.list[data-v-e6451992]{max-height:50vh;padding:4px;overflow:auto}.item[data-v-e6451992]{border-radius:var(--r-sm);text-align:left;background:0 0;border:0;flex-direction:column;align-items:flex-start;gap:1px;width:100%;padding:6px 10px;display:flex}.item[data-v-e6451992]:hover{background:var(--bg2)}.item.on[data-v-e6451992]{background:var(--accent-soft)}.item.on .tt[data-v-e6451992]{color:var(--accent-2);font-weight:600}.item .tt[data-v-e6451992]{max-width:100%}.meta[data-v-e6451992]{font-size:11px}.mp[data-v-9694d8b9]{min-width:0;display:flex}.pill[data-v-9694d8b9]{border-radius:var(--r);min-width:0;max-width:100%;height:28px;color:var(--fg2);font-size:var(--fs-sm);background:0 0;border:1px solid #0000;align-items:center;gap:5px;padding:0 8px;display:inline-flex}.pill[data-v-9694d8b9]:hover:not(:disabled),.pill.on[data-v-9694d8b9]{background:var(--bg2);border-color:var(--line);color:var(--fg)}.pill svg[data-v-9694d8b9]{flex:none;width:13px;height:13px}.ag[data-v-9694d8b9]{flex:none;font-weight:500}.sep[data-v-9694d8b9]{color:var(--fg3)}.ml[data-v-9694d8b9]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.chev[data-v-9694d8b9]{color:var(--fg3)}.pop[data-v-9694d8b9]{z-index:30;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--bg);box-shadow:var(--shadow);animation:mp-in-9694d8b9 var(--dur) var(--ease);flex-direction:column;display:flex;position:absolute;bottom:calc(100% + 6px);left:8px;right:8px;overflow:hidden}@keyframes mp-in-9694d8b9{0%{opacity:0;transform:translateY(4px)}}.agents[data-v-9694d8b9]{margin:8px 8px 0;display:flex}.agents .btn[data-v-9694d8b9]{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.ni[data-v-9694d8b9]{font-size:var(--fs-xs);color:var(--fg3);margin:4px 10px 0}.sbox[data-v-9694d8b9]{border:1px solid var(--line);border-radius:var(--r);background:var(--base);align-items:center;gap:6px;height:30px;margin:8px;padding:0 8px;display:flex}.sbox[data-v-9694d8b9]:focus-within{border-color:var(--accent);box-shadow:var(--focus)}.sbox svg[data-v-9694d8b9]{width:13px;height:13px;color:var(--fg3);flex:none}.sbox input[data-v-9694d8b9]{min-width:0;font-size:var(--fs-sm);background:0 0;border:0;outline:none;flex:1}.list[data-v-9694d8b9]{border-top:1px solid var(--line2);flex:1;min-height:0;padding:4px;overflow-y:auto}.gname[data-v-9694d8b9]{font-size:var(--fs-xs);color:var(--fg3);text-transform:uppercase;letter-spacing:.04em;padding:8px 8px 2px;font-weight:600}.opt[data-v-9694d8b9]{border-radius:var(--r-sm);text-align:left;width:100%;min-height:30px;font-size:var(--fs-sm);color:var(--fg);background:0 0;border:0;align-items:center;gap:8px;padding:4px 8px;display:flex}.opt.active[data-v-9694d8b9]{background:var(--bg2)}.opt.cur .lb[data-v-9694d8b9]{color:var(--accent-2);font-weight:600}.lb[data-v-9694d8b9]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.lb mark[data-v-9694d8b9]{background:var(--accent-soft);color:var(--accent-2);border-radius:2px}.id[data-v-9694d8b9]{text-overflow:ellipsis;white-space:nowrap;max-width:45%;color:var(--fg3);flex:none;font-size:10.5px;overflow:hidden}.ck[data-v-9694d8b9]{width:13px;height:13px;color:var(--accent-2);flex:none}.pl[data-v-9694d8b9]{width:13px;height:13px;color:var(--fg3);flex:none}.state[data-v-9694d8b9]{font-size:var(--fs-sm);color:var(--fg3);align-items:center;gap:8px;padding:10px 8px;display:flex}.foot[data-v-9694d8b9]{border-top:1px solid var(--line2);font-size:var(--fs-xs);padding:6px 12px}.composer[data-v-6719d34f]{border-top:1px solid var(--line);background:var(--bg);padding:8px 12px 6px;position:relative}.box[data-v-6719d34f]{border:1px solid var(--line);border-radius:var(--r);background:var(--base);transition:border-color var(--dur), box-shadow var(--dur);flex-direction:column;display:flex}.box[data-v-6719d34f]:focus-within{border-color:var(--accent);box-shadow:var(--focus)}.dragging .box[data-v-6719d34f]{border-style:dashed;border-color:var(--accent)}.drafts[data-v-6719d34f]{flex-wrap:wrap;gap:6px;padding:8px 8px 0;display:flex}.chip.draft[data-v-6719d34f]{background:var(--accent-soft);color:var(--fg);border:1px solid color-mix(in srgb, var(--accent) 25%, transparent);max-width:100%;padding-right:2px}.chip.draft svg[data-v-6719d34f]{flex:none;width:12px;height:12px}.chip.draft .lbl[data-v-6719d34f]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.chip.draft button[data-v-6719d34f]{flex:none}.chip.draft button[data-v-6719d34f],.att button[data-v-6719d34f]{color:var(--fg2);background:0 0;border:0;place-items:center;padding:0 2px;display:inline-grid}.chip.draft button svg[data-v-6719d34f],.att button svg[data-v-6719d34f]{width:12px;height:12px}.att[data-v-6719d34f]{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg);align-items:center;gap:4px;padding:2px;display:inline-flex;position:relative}.att.err[data-v-6719d34f]{border-color:var(--err)}.att img[data-v-6719d34f]{object-fit:cover;border-radius:4px;width:52px;height:52px}.att .fname[data-v-6719d34f]{font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:4px;max-width:160px;height:28px;padding:0 6px;display:inline-flex;overflow:hidden}.att .fname svg[data-v-6719d34f]{width:13px;height:13px}.att>button[data-v-6719d34f]{background:var(--err);color:#fff;border-radius:50%;width:16px;height:16px;position:absolute;top:-6px;right:-6px}textarea[data-v-6719d34f]{resize:none;width:100%;min-height:40px;max-height:128px;line-height:1.5;font-size:var(--fs-lg);background:0 0;border:0;outline:none;padding:9px 10px 4px;display:block}.bar[data-v-6719d34f]{align-items:center;gap:6px;height:44px;padding:0 8px;display:flex}.attach[data-v-6719d34f]{width:32px;height:32px;color:var(--fg2);background:var(--bg)}.attach svg[data-v-6719d34f]{width:16px;height:16px}.send[data-v-6719d34f]{width:30px;height:30px}.send svg[data-v-6719d34f]{width:14px;height:14px}.stop[data-v-6719d34f]{height:28px}.hint[data-v-6719d34f]{font-size:var(--fs-xs);color:var(--fg3);padding:4px 2px 0}.queue[data-v-3e6df72c]{border-top:1px solid var(--line);background:var(--bg);flex-direction:column;gap:6px;max-height:30vh;padding:8px 12px;display:flex;overflow:auto}.qh[data-v-3e6df72c]{font-size:var(--fs-xs);color:var(--fg3);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.qi[data-v-3e6df72c]{border:1px solid var(--line);border-radius:var(--r);background:var(--base);height:32px;transition:border-color var(--dur);align-items:center;gap:6px;padding:0 4px 0 6px;display:flex}.qi[data-v-3e6df72c]:hover{border-color:var(--line-strong)}.qi.over[data-v-3e6df72c]{border-color:var(--accent)}.qi.dragging[data-v-3e6df72c]{opacity:.5}.grip[data-v-3e6df72c]{cursor:grab;color:var(--fg3);border-radius:4px;display:inline-grid}.grip[data-v-3e6df72c]:focus-visible{box-shadow:var(--focus);outline:none}.grip svg[data-v-3e6df72c]{width:14px;height:14px}.n[data-v-3e6df72c]{font-size:var(--fs-xs);min-width:10px}.txt[data-v-3e6df72c]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.chip[data-v-3e6df72c]{height:20px;font-size:var(--fs-xs)}.rp[data-v-c732b20b]{background:var(--bg);flex-direction:column;height:100%;display:flex}header[data-v-c732b20b]{border-bottom:1px solid var(--line);align-items:center;gap:8px;height:40px;padding:0 10px;display:flex}header svg[data-v-c732b20b]{width:15px;height:15px;color:var(--accent)}.conn[data-v-c732b20b]{font-size:var(--fs-sm);background:var(--bg2);border-bottom:1px solid var(--line);padding:6px 12px}main[data-v-c732b20b]{flex-direction:column;gap:14px;padding:16px;display:flex;overflow:auto}.name[data-v-c732b20b]{flex-direction:column;gap:8px;display:flex}.name label[data-v-c732b20b]{font-weight:600}.me[data-v-c732b20b]{align-items:center;gap:10px;display:flex}.av[data-v-c732b20b]{background:var(--accent);width:34px;height:34px;color:var(--accent-fg);border-radius:50%;place-items:center;font-weight:700;display:grid}.who[data-v-c732b20b]{flex-direction:column;flex:1;min-width:0;display:flex}.stats[data-v-c732b20b]{font-size:var(--fs-sm);color:var(--fg2)}.how[data-v-c732b20b]{font-size:var(--fs-sm);flex-direction:column;gap:6px;margin:0;padding-left:18px;line-height:1.5;display:flex}.small[data-v-c732b20b]{font-size:var(--fs-xs);margin:0;line-height:1.5}.settings[data-v-e196614f]{position:relative}.dot[data-v-e196614f]{background:var(--accent);width:7px;height:7px;box-shadow:0 0 0 2px var(--bg);border-radius:50%;position:absolute;top:4px;right:4px}.menu[data-v-e196614f]{border-radius:var(--r-lg);z-index:30;width:300px;box-shadow:var(--shadow);flex-direction:column;gap:8px;padding:12px;display:flex;position:absolute;top:36px;right:0}.h[data-v-e196614f]{font-weight:600}.field[data-v-e196614f]{font-size:var(--fs-sm);flex-direction:column;gap:4px;display:flex}.share[data-v-e196614f]{gap:6px;display:flex}.share .input[data-v-e196614f]{min-width:0;font:var(--fs-xs)/1 var(--mono);flex:1}.tog[data-v-e196614f]{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;font-weight:600;display:flex}.desc[data-v-e196614f]{color:var(--fg2);font-size:var(--fs-sm);margin:0;line-height:1.5}.status[data-v-e196614f]{font-size:var(--fs-sm);align-items:center;gap:6px;display:flex}.status i[data-v-e196614f]{background:var(--fg3);border-radius:50%;width:8px;height:8px}.status.online i[data-v-e196614f]{background:var(--ok)}.status.paused i[data-v-e196614f],.status.transferred i[data-v-e196614f]{background:var(--warn)}.status.unsupported[data-v-e196614f]{color:var(--err)}.status.unsupported i[data-v-e196614f]{background:var(--err)}hr[data-v-e196614f]{border:0;border-top:1px solid var(--line2);width:100%;margin:2px 0}.chat-app[data-v-cacd21df]{background:var(--bg);flex-direction:column;height:100%;display:flex;position:relative}header[data-v-cacd21df]{border-bottom:1px solid var(--line);align-items:center;gap:2px;height:40px;padding:0 8px;display:flex}.livebar[data-v-cacd21df]{background:var(--accent-soft);border-bottom:1px solid var(--line);font-size:var(--fs-sm);align-items:center;gap:6px;padding:6px 12px;display:flex}.livebar svg[data-v-cacd21df]{width:14px;height:14px;color:var(--accent-2)}.conn[data-v-cacd21df]{font-size:var(--fs-sm);background:var(--bg2);border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:6px 12px;display:flex}.conn.error[data-v-cacd21df]{background:var(--err-bg);color:var(--err)}.list[data-v-cacd21df]{overscroll-behavior:contain;flex:1;padding-bottom:12px;overflow:auto}.sentinel[data-v-cacd21df]{justify-content:center;min-height:4px;padding:4px;display:flex}.headline[data-v-cacd21df]{font-size:var(--fs-xs);color:var(--fg3);align-items:center;gap:6px;padding:2px 14px 4px;display:flex}.headline svg[data-v-cacd21df]{width:13px;height:13px}.empty[data-v-cacd21df]{text-align:center;flex-direction:column;align-items:center;gap:8px;padding:56px 28px 24px;display:flex}.empty-av[data-v-cacd21df]{background:var(--agent-soft);width:44px;height:44px;color:var(--agent);border-radius:50%;place-items:center;display:grid}.empty-av svg[data-v-cacd21df]{width:22px;height:22px}.empty-title[data-v-cacd21df]{font-size:var(--fs-lg);font-weight:600}.empty-hint[data-v-cacd21df]{font-size:var(--fs-sm);color:var(--fg2);max-width:280px;line-height:1.6}.unread[data-v-cacd21df]{z-index:5;border:1px solid var(--line);background:var(--bg);height:34px;color:var(--info);font-size:var(--fs-sm);box-shadow:var(--shadow-pop);animation:un-in-cacd21df var(--dur) var(--ease);border-radius:999px;align-items:center;gap:6px;padding:0 14px;font-weight:600;display:inline-flex;position:absolute;bottom:140px;left:50%;transform:translate(-50%)}.unread svg[data-v-cacd21df]{width:15px;height:15px}@keyframes un-in-cacd21df{0%{opacity:0;transform:translate(-50%,6px)}}.toast[data-v-cacd21df]{border-radius:var(--r);font-size:var(--fs-sm);z-index:6;box-shadow:var(--shadow);padding:8px 12px;position:absolute;bottom:140px;left:12px;right:12px}.toast.err[data-v-cacd21df]{background:var(--err-bg);color:var(--err);border:1px solid color-mix(in srgb, var(--err) 30%, transparent)}.jt[data-v-1e4fba0c]{font:12px/1.6 var(--mono)}.tog[data-v-1e4fba0c]{font:inherit;background:0 0;border:0;align-items:baseline;gap:4px;padding:0;display:inline-flex}.car[data-v-1e4fba0c]{width:10px;color:var(--fg3);transition:transform .1s;display:inline-block}.car.open[data-v-1e4fba0c]{transform:rotate(90deg)}.kids[data-v-1e4fba0c]{border-left:1px dashed var(--line);margin-left:4px;padding-left:16px}.leaf[data-v-1e4fba0c]{word-break:break-word;padding-left:14px}.key[data-v-1e4fba0c]{color:var(--accent);margin-right:4px}.pv[data-v-1e4fba0c]{color:var(--fg3)}.v.string[data-v-1e4fba0c]{color:#0a7f45}.v.number[data-v-1e4fba0c]{color:#b35900}.v.boolean[data-v-1e4fba0c],.v.null[data-v-1e4fba0c]{color:#8250df}:root[data-theme=dark] .v.string[data-v-1e4fba0c]{color:#7ee2a8}:root[data-theme=dark] .v.number[data-v-1e4fba0c]{color:#ffa657}:root[data-theme=dark] .v.boolean[data-v-1e4fba0c],:root[data-theme=dark] .v.null[data-v-1e4fba0c]{color:#d2a8ff}.pv[data-v-d343d7ab]{background:var(--bg);flex-direction:column;height:100%;min-height:0;display:flex}.pv.zoomed[data-v-d343d7ab]{z-index:50;position:fixed;inset:0}.tb[data-v-d343d7ab]{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:6px;padding:6px 8px;display:flex}.tb a[data-v-d343d7ab]{color:var(--fg)}.sel[data-v-d343d7ab]{max-width:220px;height:26px;font-size:12px}.ro[data-v-d343d7ab]{background:var(--warn-bg);color:var(--warn)}.body[data-v-d343d7ab]{flex:1;min-height:0;position:relative;overflow:auto}.center[data-v-d343d7ab]{justify-content:center;align-items:center;gap:8px;height:100%;padding:24px;display:flex}.center.col[data-v-d343d7ab]{flex-direction:column}.big[data-v-d343d7ab]{width:40px;height:40px;color:var(--fg3)}.img[data-v-d343d7ab]{object-fit:contain;background:repeating-conic-gradient(var(--bg2) 0 25%, var(--bg) 0 50%) 0 0 / 16px 16px;max-width:100%;max-height:100%}.doc[data-v-d343d7ab]{max-width:920px;margin:0 auto;padding:16px 20px}.code[data-v-d343d7ab]{min-height:100%}.frame-box[data-v-d343d7ab]{background:var(--bg2);justify-content:center;height:100%;padding:8px;display:flex;overflow:hidden}.frame-wrap[data-v-d343d7ab]{border:1px solid var(--line);background:#fff;border-radius:8px;flex:none;overflow:hidden}.frame-wrap iframe[data-v-d343d7ab]{transform-origin:0 0;background:#fff;border:0;display:block}.art-app[data-v-f36091ad]{flex-direction:column;height:100%;display:flex}.tabs[data-v-f36091ad]{border-bottom:1px solid var(--line);background:var(--bg2);flex:none;gap:2px;padding:4px 6px 0;display:flex;overflow-x:auto}.tab[data-v-f36091ad]{cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-bottom:0;border-radius:8px 8px 0 0;align-items:center;gap:6px;max-width:220px;height:30px;padding:0 10px;display:inline-flex}.tab.on[data-v-f36091ad]{background:var(--bg);border-color:var(--line);margin-bottom:-1px}.tab .nm[data-v-f36091ad]{text-overflow:ellipsis;overflow:hidden}.tab .x[data-v-f36091ad]{color:var(--fg3);background:0 0;border:0;padding:0;display:inline-grid}.tab .x svg[data-v-f36091ad]{width:12px;height:12px}.dot[data-v-f36091ad]{background:var(--accent);border-radius:50%;width:6px;height:6px}.conn[data-v-f36091ad]{align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:flex}main[data-v-f36091ad]{flex:1;min-height:0;overflow:auto}.empty[data-v-f36091ad]{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;height:100%;padding:24px;display:flex}.empty svg[data-v-f36091ad]{width:28px;height:28px;color:var(--accent)}.grid[data-v-f36091ad]{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;padding:12px;display:grid}.tile[data-v-f36091ad]{text-align:left;cursor:pointer;flex-direction:column;gap:4px;padding:12px;display:flex;position:relative}.tile[data-v-f36091ad]:hover{border-color:var(--accent)}.tile .ic[data-v-f36091ad]{background:var(--accent-soft);width:32px;height:32px;color:var(--accent);border-radius:8px;place-items:center;display:grid}.tile .ic svg[data-v-f36091ad]{width:18px;height:18px}.tile .nm[data-v-f36091ad]{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.meta[data-v-f36091ad]{font-size:11px}.flag[data-v-f36091ad]{border-radius:999px;padding:1px 6px;font-size:10px;font-weight:700;position:absolute;top:8px;right:8px}.flag.new[data-v-f36091ad]{background:var(--accent);color:var(--accent-fg)}.flag.upd[data-v-f36091ad]{background:var(--warn-bg);color:var(--warn)}
@@ -1,2 +0,0 @@
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-OsUFBIXu.js","assets/ws-B8OO397O.js","assets/ws-BhXqMf5F.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,_ as C,a as w,b as T,c as E,d as D,f as O,g as k,h as A,i as j,j as M,k as N,l as P,m as F,n as I,p as L,q as R,r as z,s as B,t as V,u as H,v as U,w as W,x as G,y as K,z as q}from"./ws-B8OO397O.js";var J={class:`tt`},Y={key:2,class:`menu card`},X={class:`acts`},Z=[`disabled`],ee={class:`btn sm`,href:`/__ph/history`,target:`_blank`,rel:`noopener`},Q={class:`list`},$=[`onClick`],te={class:`tt`},ne={class:`meta faint`},re=B(m({__name:`ChatSwitcher`,props:{store:{}},setup(e){let n=e.store,a=b(!1),c=b(!1),m=b(``),h=b(),S=b();function w(){m.value=n.chat.value?.title??``,c.value=!0,a.value=!1,g(()=>S.value?.select())}async function T(){c.value&&(c.value=!1,m.value.trim()&&m.value!==n.chat.value?.title&&await n.updateChat({title:m.value}))}let E=e=>{a.value&&h.value&&!e.composedPath().includes(h.value)&&(a.value=!1)};return l(()=>document.addEventListener(`mousedown`,E)),o(()=>document.removeEventListener(`mousedown`,E)),(e,o)=>(f(),t(`div`,{ref_key:`root`,ref:h,class:`switcher`},[c.value?x((f(),t(`input`,{key:0,ref_key:`input`,ref:S,"onUpdate:modelValue":o[0]||=e=>m.value=e,class:`input rn`,onKeydown:[r(T,[`enter`]),o[1]||=r(e=>c.value=!1,[`esc`])],onBlur:T},null,544)),[[v,m.value]]):(f(),t(`button`,{key:1,class:`cur`,"data-testid":`chat-switcher`,onClick:o[2]||=e=>a.value=!a.value,onDblclick:w},[i(`span`,J,u(s(n).chat.value?.title||s(L).newChat),1),p(C,{name:`chevron`})],32)),a.value?(f(),t(`div`,Y,[i(`div`,X,[i(`button`,{class:`btn sm`,"data-testid":`new-chat`,onClick:o[3]||=e=>(a.value=!1,s(n).newChat())},[p(C,{name:`plus`}),M(u(s(L).newChat),1)]),i(`button`,{class:`btn sm`,disabled:!s(n).chat.value,onClick:w},[p(C,{name:`edit`}),M(u(s(L).rename),1)],8,Z),i(`a`,ee,[p(C,{name:`history`}),M(u(s(L).history),1)])]),i(`div`,Q,[(f(!0),t(y,null,_(s(n).chats.value,e=>(f(),t(`button`,{key:e.id,class:d([`item`,{on:e.id===s(n).chat.value?.id}]),onClick:t=>(a.value=!1,s(n).switchChat(e.id))},[i(`span`,te,u(e.title||s(L).untitled),1),i(`span`,ne,u(e.agent)+` · `+u(s(D)(e.updatedAt)),1)],10,$))),128))])])):N(`v-if`,!0)],512))}}),[[`__scopeId`,`data-v-e6451992`]]),ie=[`disabled`,`title`],ae={class:`ag`},oe={class:`ml`},se={class:`agents seg`,role:`tablist`},ce=[`disabled`,`title`,`data-agent`,`onClick`],le={key:0,class:`ni`},ue={class:`sbox`},de=[`placeholder`],fe={key:0,class:`state`},pe={class:`lb`},me={key:0,class:`id mono`},he={key:1,class:`state`},ge={key:0,class:`gname`},_e=[`data-model`,`onMouseenter`,`onClick`],ve={class:`lb`},ye={key:0},be={key:0,class:`id mono`},xe={class:`lb`},Se={key:3,class:`state`},Ce={key:1,class:`foot faint`},we=B(m({__name:`ModelPicker`,props:{store:{}},setup(e){let r=e.store,c=b(!1),m=b(``),S=b(0),w=b(),T=b(),D=b(),O=b(360),k=a(()=>r.chat.value?.agent??``),A=a(()=>r.agents.value.find(e=>e.id===k.value)),j=a(()=>r.agents.value.filter(e=>!e.available).map(e=>e.label)),P=a(()=>r.chat.value?.model??null),F=a(()=>r.models.value[k.value]),I=a(()=>F.value===void 0),z=a(()=>F.value?.find(e=>e.isDefault)),B=a(()=>(F.value??[]).filter(e=>!e.isDefault)),V=(e,t)=>!t||e.id.toLowerCase().includes(t)||e.label.toLowerCase().includes(t),H=a(()=>B.value.filter(e=>V(e,m.value.trim().toLowerCase()))),U=[[`Claude`,/^claude|^(sonnet|opus|haiku)$/i],[`GPT`,/^(gpt|o\d|codex)/i],[`Gemini`,/^gemini/i],[`Grok`,/grok/i],[`Composer`,/^composer/i]],W=e=>U.find(([,t])=>t.test(e))?.[0]??``,G=a(()=>{let e=new Map;for(let t of H.value){let n=W(t.id);e.set(n,[...e.get(n)??[],t])}let t=[...U.map(([e])=>e),``];return[...e.entries()].sort((e,n)=>t.indexOf(e[0])-t.indexOf(n[0])).map(([e,t])=>({name:e||L.value.groupOther,items:t}))}),K=a(()=>G.value.length>1),q=a(()=>{let e=m.value.trim();return e&&!/\s/.test(e)&&!B.value.some(t=>t.id===e)?e:``}),J=a(()=>[...m.value.trim()?[]:[{kind:`default`}],...G.value.flatMap(e=>e.items.map(e=>({kind:`model`,m:e}))),...q.value?[{kind:`custom`,id:q.value}]:[]]),Y=e=>J.value.findIndex(t=>t.kind===`model`&&t.m.id===e.id),X=a(()=>P.value?F.value?.find(e=>e.id===P.value)?.label??P.value:z.value?.label??L.value.defaultModel);function Z(e){let t=m.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 ee(){if(c.value)return Q();k.value&&r.loadModels(k.value);let e=w.value?.closest(`.composer`);O.value=Math.max(180,Math.min(440,(e?.getBoundingClientRect().top??400)-12)),m.value=``,S.value=0,c.value=!0,g(()=>T.value?.focus())}function Q(){c.value=!1}async function $(e){let t=e.kind==="default"?null:e.kind===`model`?e.m.id:e.id;Q(),t!==P.value&&await r.updateChat({model:t})}async function te(e){e!==k.value&&(await r.updateChat({agent:e}),r.loadModels(e),S.value=0)}function ne(e){if(!e.isComposing){if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=J.value.length;t&&(S.value=(S.value+(e.key===`ArrowDown`?1:t-1))%t),g(()=>D.value?.querySelector(`.opt.active`)?.scrollIntoView({block:`nearest`}))}else if(e.key===`Enter`){e.preventDefault();let t=J.value[S.value];t&&$(t)}else e.key===`Escape`&&(e.preventDefault(),Q())}}n(m,()=>S.value=0);let re=e=>{c.value&&w.value&&!e.composedPath().includes(w.value)&&Q()};return l(()=>document.addEventListener(`mousedown`,re)),o(()=>document.removeEventListener(`mousedown`,re)),(e,n)=>(f(),t(`div`,{ref_key:`root`,ref:w,class:`mp`},[i(`button`,{class:d([`pill`,{on:c.value}]),disabled:!s(r).chat.value,"data-testid":`model-pill`,title:P.value??``,onClick:ee},[p(C,{name:`cpu`}),i(`span`,ae,u(A.value?.label??k.value),1),n[5]||=i(`span`,{class:`sep`},`·`,-1),i(`span`,oe,u(X.value),1),p(C,{name:`chevron`,class:`chev`})],10,ie),c.value?(f(),t(`div`,{key:0,class:`pop`,"data-testid":`model-picker`,style:R({maxHeight:`${O.value}px`}),onKeydown:ne},[i(`div`,se,[(f(!0),t(y,null,_(s(r).agents.value,e=>(f(),t(`button`,{key:e.id,class:d([`btn sm`,{on:e.id===k.value}]),disabled:!e.available,title:e.available?e.path:s(L).notInstalled,"data-agent":e.id,"data-testid":`agent-option`,onClick:t=>te(e.id)},u(e.label),11,ce))),128))]),j.value.length?(f(),t(`div`,le,u(s(L).notInstalled)+`: `+u(j.value.join(`, `)),1)):N(`v-if`,!0),i(`div`,ue,[p(C,{name:`search`}),x(i(`input`,{ref_key:`search`,ref:T,"onUpdate:modelValue":n[0]||=e=>m.value=e,placeholder:s(L).searchModels,"data-testid":`model-search`},null,8,de),[[v,m.value]])]),i(`div`,{ref_key:`listEl`,ref:D,class:`list`},[I.value?(f(),t(`div`,fe,[n[6]||=i(`span`,{class:`spin`},null,-1),M(u(s(L).loadingModels),1)])):(f(),t(y,{key:1},[m.value.trim()?N(`v-if`,!0):(f(),t(`button`,{key:0,class:d([`opt`,{active:S.value===0,cur:!P.value}]),"data-testid":`model-default`,onMouseenter:n[1]||=e=>S.value=0,onClick:n[2]||=e=>$({kind:`default`})},[i(`span`,pe,u(s(L).defaultAuto),1),z.value?(f(),t(`span`,me,u(z.value.label),1)):N(`v-if`,!0),P.value?N(`v-if`,!0):(f(),h(C,{key:1,name:`check`,class:`ck`}))],34)),F.value===null?(f(),t(`div`,he,u(s(L).modelsFailed),1)):N(`v-if`,!0),(f(!0),t(y,null,_(G.value,e=>(f(),t(y,{key:e.name},[K.value?(f(),t(`div`,ge,u(e.name),1)):N(`v-if`,!0),(f(!0),t(y,null,_(e.items,e=>(f(),t(`button`,{key:e.id,class:d([`opt`,{active:S.value===Y(e),cur:P.value===e.id}]),"data-model":e.id,"data-testid":`model-option`,onMouseenter:t=>S.value=Y(e),onClick:t=>$({kind:`model`,m:e})},[i(`span`,ve,[(f(!0),t(y,null,_(Z(e.label),(e,n)=>(f(),t(y,{key:n},[e.hit?(f(),t(`mark`,ye,u(e.text),1)):(f(),t(y,{key:1},[M(u(e.text),1)],64))],64))),128))]),e.label===e.id?N(`v-if`,!0):(f(),t(`span`,be,u(e.id),1)),P.value===e.id?(f(),h(C,{key:1,name:`check`,class:`ck`})):N(`v-if`,!0)],42,_e))),128))],64))),128)),q.value?(f(),t(`button`,{key:2,class:d([`opt`,{active:S.value===J.value.length-1}]),"data-testid":`model-custom`,onMouseenter:n[3]||=e=>S.value=J.value.length-1,onClick:n[4]||=e=>$({kind:`custom`,id:q.value})},[p(C,{name:`plus`,class:`pl`}),i(`span`,xe,u(s(E)(s(L).useCustom,{id:q.value})),1)],34)):N(`v-if`,!0),F.value&&!H.value.length&&!q.value&&m.value.trim()?(f(),t(`div`,Se,u(s(L).noModels),1)):N(`v-if`,!0)],64))],512),A.value?.version?(f(),t(`div`,Ce,u(s(E)(s(L).agentVersion,{v:A.value.version})),1)):N(`v-if`,!0)],36)):N(`v-if`,!0)],512))}}),[[`__scopeId`,`data-v-9694d8b9`]]),Te={class:`box`},Ee={key:0,class:`drafts`},De=[`title`],Oe={class:`lbl`},ke=[`title`,`aria-label`,`onClick`],Ae=[`title`],je={class:`lbl`},Me=[`title`,`aria-label`,`onClick`],Ne=[`title`],Pe=[`src`],Fe={key:1,class:`fname`},Ie={key:2,class:`spin`},Le=[`title`,`onClick`],Re=[`placeholder`],ze={class:`bar`},Be=[`title`],Ve=[`title`,`aria-label`,`disabled`],He={class:`hint`},Ue=B(m({__name:`Composer`,props:{store:{}},setup(e,{expose:r}){let a=e.store,o=b(),c=b(),l=b(!1),m=()=>{let e=o.value;e&&(e.style.height=`auto`,e.style.height=`${Math.min(Math.max(e.scrollHeight,40),128)}px`)};n(()=>a.draft.text,()=>g(m));function h(e){e.isComposing||e.keyCode===229||e.key===`Enter`&&!e.shiftKey&&!e.altKey&&(e.preventDefault(),S())}function S(){a.sendPrompt()&&g(()=>o.value?.focus())}function w(e){let t=[...e.clipboardData?.files??[]];t.length&&(e.preventDefault(),a.addFiles(t))}function T(){let e=c.value?.files;e?.length&&a.addFiles([...e]),c.value&&(c.value.value=``)}function E(e){l.value=!1;let t=[...e.dataTransfer?.files??[]];t.length&&a.addFiles(t)}return r({focus:()=>o.value?.focus()}),(e,n)=>(f(),t(`div`,{class:d([`composer`,{dragging:l.value}]),onDragover:n[3]||=W(e=>l.value=!0,[`prevent`]),onDragleave:n[4]||=e=>l.value=!1,onDrop:W(E,[`prevent`])},[i(`div`,Te,[s(a).draft.picks.length||s(a).draft.marks.length||s(a).draft.attachments.length?(f(),t(`div`,Ee,[(f(!0),t(y,null,_(s(a).draft.picks,(e,n)=>(f(),t(`span`,{key:e.id,class:`chip draft`,title:e.selector},[p(C,{name:`target`}),i(`span`,Oe,`<`+u(e.tagName.toLowerCase())+`> `+u(e.text||e.selector),1),i(`button`,{title:s(L).removeDraft,"aria-label":s(L).removeDraft,"data-testid":`remove-draft`,onClick:e=>s(a).draft.picks.splice(n,1)},[p(C,{name:`x`})],8,ke)],8,De))),128)),(f(!0),t(y,null,_(s(a).draft.marks,(e,n)=>(f(),t(`span`,{key:`m`+e.n,class:`chip draft`,title:e.note||void 0},[p(C,{name:`pen`}),i(`span`,je,u(s(L).marks)+` `+u(e.n)+u(e.note?` · ${e.note}`:``),1),i(`button`,{title:s(L).removeDraft,"aria-label":s(L).removeDraft,"data-testid":`remove-draft`,onClick:e=>s(a).draft.marks.splice(n,1)},[p(C,{name:`x`})],8,Me)],8,Ae))),128)),(f(!0),t(y,null,_(s(a).draft.attachments,(e,n)=>(f(),t(`span`,{key:`a`+n,class:d([`att`,{err:e.error}]),title:e.error||e.name},[e.preview?(f(),t(`img`,{key:0,src:e.preview,alt:``},null,8,Pe)):(f(),t(`span`,Fe,[p(C,{name:`file`}),M(u(e.name),1)])),e.uploading?(f(),t(`span`,Ie)):N(`v-if`,!0),i(`button`,{title:s(L).removeDraft,onClick:e=>s(a).draft.attachments.splice(n,1)},[p(C,{name:`x`})],8,Le)],10,Ne))),128))])):N(`v-if`,!0),x(i(`textarea`,{ref_key:`ta`,ref:o,"onUpdate:modelValue":n[0]||=e=>s(a).draft.text=e,rows:`1`,placeholder:s(a).running.value?s(L).placeholderBusy:s(L).placeholder,onKeydown:h,onPaste:w},null,40,Re),[[v,s(a).draft.text]]),i(`div`,ze,[i(`button`,{class:`btn icon attach`,title:s(L).attach,onClick:n[1]||=e=>c.value?.click()},[p(C,{name:`clip`})],8,Be),i(`input`,{ref_key:`fileInput`,ref:c,type:`file`,multiple:``,hidden:``,onChange:T},null,544),p(we,{store:s(a)},null,8,[`store`]),n[5]||=i(`span`,{class:`spacer`},null,-1),s(a).running.value?(f(),t(`button`,{key:0,class:`btn sm danger stop`,onClick:n[2]||=e=>s(a).send({type:`cancel`})},[p(C,{name:`stop`}),M(u(s(L).stop),1)])):N(`v-if`,!0),i(`button`,{class:`btn primary icon send`,title:s(L).send,"aria-label":s(L).send,disabled:!s(a).canSend.value||s(a).conn.value!==`ready`,"data-testid":`send`,onClick:S},[p(C,{name:`send`})],8,Ve)])]),i(`div`,He,u(s(L).enterHint),1)],34))}}),[[`__scopeId`,`data-v-6719d34f`]]),We={key:0,class:`queue`},Ge={class:`qh muted`},Ke=[`onDragstart`,`onDragover`,`onDrop`],qe=[`title`,`onKeydown`],Je={class:`n faint`},Ye={class:`txt`},Xe={key:0,class:`chip`},Ze={key:1,class:`chip`},Qe=[`title`,`onClick`],$e=[`title`,`onClick`],et=B(m({__name:`QueueList`,props:{store:{}},setup(e){let n=e.store,a=b(null),o=b(null);function c(e){let t=a.value;if(a.value=null,o.value=null,!t||t===e)return;let r=n.queue.value.map(e=>e.id);r.splice(r.indexOf(t),1),r.splice(r.indexOf(e),0,t),n.send({type:`queue_reorder`,ids:r})}function l(e,t){let r=n.queue.value.map(e=>e.id),i=r.indexOf(e),a=i+t;a<0||a>=r.length||([r[i],r[a]]=[r[a],r[i]],n.send({type:`queue_reorder`,ids:r}))}return(e,m)=>s(n).queue.value.length?(f(),t(`div`,We,[i(`div`,Ge,u(s(L).queue)+` · `+u(s(n).queue.value.length),1),(f(!0),t(y,null,_(s(n).queue.value,(e,h)=>(f(),t(`div`,{key:e.id,class:d([`qi`,{over:o.value===e.id,dragging:a.value===e.id}]),draggable:`true`,onDragstart:t=>a.value=e.id,onDragend:m[0]||=e=>{a.value=null,o.value=null},onDragover:W(t=>o.value=e.id,[`prevent`]),onDrop:W(t=>c(e.id),[`prevent`])},[i(`span`,{class:`grip`,title:s(L).dragToReorder,tabindex:`0`,onKeydown:[r(W(t=>l(e.id,-1),[`prevent`]),[`up`]),r(W(t=>l(e.id,1),[`prevent`]),[`down`])]},[p(C,{name:`grip`})],40,qe),i(`span`,Je,u(h+1),1),i(`span`,Ye,u(e.text||(e.live?`Live`:`…`)),1),e.attachments.length?(f(),t(`span`,Xe,`📎 `+u(e.attachments.length),1)):N(`v-if`,!0),e.picks.length||e.marks?.length?(f(),t(`span`,Ze,`◎ `+u(e.picks.length+(e.marks?.length??0)),1)):N(`v-if`,!0),e.live?N(`v-if`,!0):(f(),t(`button`,{key:2,class:`btn ghost icon sm`,title:s(L).edit,onClick:t=>s(n).editQueued(e)},[p(C,{name:`edit`})],8,Qe)),i(`button`,{class:`btn ghost icon sm`,title:s(L).withdraw,onClick:t=>s(n).send({type:`dequeue`,id:e.id})},[p(C,{name:`undo`})],8,$e)],42,Ke))),128))])):N(`v-if`,!0)}}),[[`__scopeId`,`data-v-3e6df72c`]]),tt={class:`rp`,"data-testid":`reviewer-panel`},nt={class:`seg`},rt={key:0,class:`conn`},it={for:`rp-name`},at=[`placeholder`],ot=[`disabled`],st={key:1,class:`me`},ct={class:`av`},lt={class:`who`},ut={"data-testid":`reviewer-me`},dt={class:`muted`},ft={class:`stats`},pt={class:`how`},mt={key:0},ht={class:`muted small`},gt=B(m({__name:`ReviewerPanel`,props:{store:{}},setup(e){let r=e.store,o=b(r.me.value?.name??``);n(()=>r.me.value?.name,e=>e&&(o.value=e));let c=a(()=>!!r.me.value?.name),l=b(!1),m=a(()=>r.review.value.items.filter(e=>e.status===`open`).length),h=a(()=>r.review.value.items.filter(e=>e.author.id===r.me.value?.id).length);function g(){o.value.trim()&&(r.setName(o.value.trim()),l.value=!1)}return(e,n)=>(f(),t(`div`,tt,[i(`header`,null,[p(C,{name:`pen`}),i(`b`,null,u(s(L).reviewerTitle),1),n[4]||=i(`span`,{class:`spacer`},null,-1),i(`div`,nt,[i(`button`,{class:d([`btn sm`,{on:s(P)===`zh-CN`}]),onClick:n[0]||=e=>s(O)(`zh-CN`)},`中`,2),i(`button`,{class:d([`btn sm`,{on:s(P)===`en`}]),onClick:n[1]||=e=>s(O)(`en`)},`EN`,2)])]),s(r).conn.value===`ready`?N(`v-if`,!0):(f(),t(`div`,rt,u(s(r).conn.value===`connecting`?s(L).connecting:s(L).netError),1)),i(`main`,null,[!c.value||l.value?(f(),t(`form`,{key:0,class:`name`,onSubmit:W(g,[`prevent`])},[i(`label`,it,u(s(L).reviewerNameLabel),1),x(i(`input`,{id:`rp-name`,"onUpdate:modelValue":n[2]||=e=>o.value=e,class:`input`,maxlength:`40`,placeholder:s(L).reviewerNamePh,"data-testid":`reviewer-name`,autofocus:``},null,8,at),[[v,o.value]]),i(`button`,{class:`btn primary`,type:`submit`,disabled:!o.value.trim(),"data-testid":`reviewer-save`},u(s(L).reviewerJoin),9,ot)],32)):(f(),t(`div`,st,[i(`div`,ct,u(s(r).me.value.name.slice(0,1).toUpperCase()),1),i(`div`,lt,[i(`b`,ut,u(s(r).me.value.name),1),i(`span`,dt,u(s(L).reviewerRole),1)]),i(`button`,{class:`btn ghost sm`,onClick:n[3]||=e=>l.value=!0},u(s(L).rename),1)])),i(`div`,ft,[i(`span`,null,u(s(E)(s(L).reviewerStats,{open:m.value,mine:h.value})),1)]),i(`ul`,pt,[i(`li`,null,u(s(L).reviewerHowComment),1),s(r).mode.value===`review`?(f(),t(`li`,mt,u(s(L).reviewerHowEdit),1)):N(`v-if`,!0),i(`li`,null,u(s(L).reviewerHowThread),1),i(`li`,null,u(s(L).reviewerHowApprove),1)]),i(`p`,ht,u(s(L).reviewerLimits),1)])]))}}),[[`__scopeId`,`data-v-c732b20b`]]),_t=[`title`],vt={key:0,class:`dot`},yt={key:0,class:`menu card`},bt={class:`h`},xt={class:`tog`},St={class:`desc`},Ct={class:`tog`},wt={class:`desc`},Tt={class:`h`},Et={class:`field`},Dt={class:`muted`},Ot={class:`desc`},kt={class:`share`},At=[`value`],jt={key:2,class:`desc`},Mt={class:`row`},Nt={class:`muted`},Pt={class:`seg`},Ft=B(m({__name:`SettingsMenu`,props:{store:{}},setup(e){let c=e.store,m=b(!1),h=b(``),g=b(!1);n(()=>c.me.value?.name,e=>h.value=e??``,{immediate:!0});function _(){h.value.trim()&&h.value.trim()!==c.me.value?.name&&c.setName(h.value.trim())}async function S(){if(c.share.value){try{await navigator.clipboard.writeText(c.share.value)}catch{let e=document.createElement(`textarea`);e.value=c.share.value,document.body.append(e),e.select(),document.execCommand(`copy`),e.remove()}g.value=!0,setTimeout(()=>g.value=!1,1500)}}let w=b(),T=a(()=>c.controlOn.value?c.controlOutdated.value||c.page.attached&&c.page.caps.pageControl===null&&c.pageStatus.value===`unsupported`?`unsupported`:c.pageStatus.value===`disabled`?`offline`:c.pageStatus.value:`disabled`),E=a(()=>L.value[`status_${T.value}`]),D=e=>{m.value&&w.value&&!e.composedPath().includes(w.value)&&(m.value=!1)};return l(()=>document.addEventListener(`mousedown`,D)),o(()=>document.removeEventListener(`mousedown`,D)),(e,n)=>(f(),t(`div`,{ref_key:`root`,ref:w,class:`settings`},[i(`button`,{class:`btn ghost icon`,title:s(L).settings,"data-testid":`settings`,onClick:n[0]||=e=>m.value=!m.value},[p(C,{name:`gear`}),s(c).controlOn.value?(f(),t(`span`,vt)):N(`v-if`,!0)],8,_t),m.value?(f(),t(`div`,yt,[i(`div`,bt,u(s(L).settings),1),i(`label`,xt,[i(`span`,null,u(s(L).allowControl),1),x(i(`input`,{"onUpdate:modelValue":n[1]||=e=>s(c).controlOn.value=e,class:`switch`,type:`checkbox`,"data-testid":`toggle-control`},null,512),[[G,s(c).controlOn.value]])]),i(`p`,St,u(s(L).controlPrivacy),1),s(c).controlOn.value?(f(),t(`div`,{key:0,class:d([`status`,T.value]),"data-testid":`control-status`},[n[7]||=i(`i`,null,null,-1),M(u(E.value),1)],2)):N(`v-if`,!0),n[9]||=i(`hr`,null,null,-1),i(`label`,Ct,[i(`span`,null,u(s(L).liveToggle),1),x(i(`input`,{"onUpdate:modelValue":n[2]||=e=>s(c).liveOn.value=e,class:`switch`,type:`checkbox`,"data-testid":`toggle-live`},null,512),[[G,s(c).liveOn.value]])]),i(`p`,wt,u(s(c).mode.value===`review`?s(L).liveReviewDesc:s(L).liveDesc),1),n[10]||=i(`hr`,null,null,-1),i(`div`,Tt,u(s(L).teamTitle),1),i(`label`,Et,[i(`span`,Dt,u(s(L).myName),1),x(i(`input`,{"onUpdate:modelValue":n[3]||=e=>h.value=e,class:`input`,maxlength:`40`,"data-testid":`owner-name`,onChange:_,onKeydown:r(_,[`enter`])},null,544),[[v,h.value]])]),s(c).share.value?(f(),t(y,{key:1},[i(`p`,Ot,u(s(L).teamShareDesc),1),i(`div`,kt,[i(`input`,{class:`input`,readonly:``,value:s(c).share.value,"data-testid":`share-link`,onFocus:n[4]||=e=>e.target.select()},null,40,At),i(`button`,{class:`btn sm`,onClick:S},u(g.value?s(L).copied:s(L).copyLink),1)])],64)):(f(),t(`p`,jt,u(s(L).teamNoShare),1)),n[11]||=i(`hr`,null,null,-1),i(`div`,Mt,[i(`span`,Nt,u(s(L).language),1),n[8]||=i(`span`,{class:`spacer`},null,-1),i(`div`,Pt,[i(`button`,{class:d([`btn sm`,{on:s(P)===`zh-CN`}]),onClick:n[5]||=e=>s(O)(`zh-CN`)},`中文`,2),i(`button`,{class:d([`btn sm`,{on:s(P)===`en`}]),onClick:n[6]||=e=>s(O)(`en`)},`English`,2)])])])):N(`v-if`,!0)],512))}}),[[`__scopeId`,`data-v-e196614f`]]);function It(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 Lt=(e,t)=>{try{let n=localStorage.getItem(e);return n===null?t:n===`1`}catch{return t}},Rt=(e,t)=>{try{localStorage.setItem(e,t?`1`:`0`)}catch{}};function zt(){let e=b([]),t=b(``),r=b(``),i=b(``),o=b(`source`),s=b({items:[],approvals:[]}),l=b(null),u=b(),d=b([]),f=b(null),p=b([]),m=b(!1),h=b(!1),g=b([]),_=b(null),v=b(new Set),y=b([]),x=c({}),C=b(`disabled`),w=b(!1),T=b(null),E=b(null),D=S({}),A=c({attached:!1,tab:``,url:``,title:``,visible:!0,caps:{pageControl:null,live:null}}),j=b(Lt(`ph:control`,!1)),M=b(Lt(`ph:live`,!0)),N=c({text:``,picks:[],marks:[],attachments:[]}),I=()=>{try{return localStorage.getItem(`ph:chat`)}catch{return null}},L=It(`chat`,e=>U(e)),R=V(e=>B(e),()=>{R.send({type:`subscribe`,chat:f.value?.id??I(),role:`chat`}),z()});n(()=>R.state.value,(e,t)=>{e===`error`&&t!==`error`&&L.send({type:`ph:session-dead`})});function z(){R.send({type:`page_control`,on:j.value&&A.attached,attached:A.attached,visible:A.visible,tab:A.tab,version:A.caps.pageControl})}function B(n){switch(n.type){case`hello`:e.value=n.agents,t.value=n.defaultAgent,r.value=n.project,i.value=n.target,o.value=n.mode,l.value=n.me,u.value=n.share,W(),G();break;case`chats`:d.value=n.chats;break;case`snapshot`:{let e=n.snapshot;f.value=e.chat,p.value=e.turns,m.value=e.hasMore,g.value=e.queue,_.value=e.running,v.value=new Set(e.pendingAsks);try{localStorage.setItem(`ph:chat`,e.chat.id)}catch{}break}case`event`:if(n.event.chatId!==f.value?.id)break;if(k(p.value,n.event),n.event.t===`ask`&&(v.value=new Set([...v.value,n.event.askId])),n.event.t===`ask_answer`){let e=new Set(v.value);e.delete(n.event.askId),v.value=e}p.value=[...p.value];break;case`state`:if(n.chatId!==f.value?.id)break;f.value=n.chat,g.value=n.queue,_.value=n.running;break;case`live`:y.value=n.sessions,L.send({type:`ph:live-sessions`,sessions:JSON.parse(JSON.stringify(n.sessions))});break;case`review`:s.value=n.review,G();break;case`page_probe`:L.send({type:`ph:probe`,id:n.id,selector:n.selector});break;case`artifacts`:n.open&&L.send({type:`ph:open`,what:`artifacts`});break;case`page_cmd`:L.send({type:`ph:cmd`,id:n.id,cmd:n.cmd});break;case`page_cancel`:L.send({type:`ph:cmd-cancel`,id:n.id});break;case`page_status`:C.value=n.status,w.value!==n.busy&&L.send({type:`ph:busy`,busy:n.busy}),w.value=n.busy;break;case`notice`:E.value=n.message;break;case`error`:T.value=n.message,setTimeout(()=>T.value===n.message&&(T.value=null),5e3)}}function U(e){switch(e.type){case`ph:attach`:A.attached=!0,A.tab=e.tab,A.url=e.url,A.title=e.title,A.visible=e.visible,A.caps=e.caps,K.value=e.theme,!H.value&&e.lang!==P.value&&O(e.lang,!1),L.send({type:`ph:ready`,role:`chat`}),L.send({type:`ph:lang`,lang:P.value}),L.send({type:`ph:control`,on:j.value}),W(),G(),L.send({type:`ph:live-sessions`,sessions:JSON.parse(JSON.stringify(y.value))}),z();break;case`ph:url`:A.url=e.url,A.title=e.title;break;case`ph:visibility`:A.visible=e.visible,R.send({type:`page_visibility`,visible:e.visible});break;case`ph:caps`:A.caps=e.caps,z();break;case`ph:pick`:N.picks.length<20&&!N.picks.some(t=>t.selector===e.pick.selector&&t.url===e.pick.url)&&N.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`:K.value=e.theme;break;case`ph:control-stop`:j.value=!1,R.send({type:`page_stop`})}}n(j,e=>{Rt(`ph:control`,e),L.send({type:`ph:control`,on:e}),z()}),n(M,e=>{Rt(`ph:live`,e),W()});function W(){L.send({type:`ph:live-caps`,on:M.value&&l.value?.access!==`reviewer`})}function G(){l.value&&L.send({type:`ph:review-items`,review:JSON.parse(JSON.stringify(s.value)),mode:o.value,me:{...l.value}})}n(P,e=>L.send({type:`ph:lang`,lang:e}));let q=a(()=>j.value&&A.attached&&A.caps.pageControl!==null&&A.caps.pageControl!==1),J=a(()=>!!(N.text.trim()||N.picks.length||N.attachments.some(e=>!e.uploading&&!e.error))&&!N.attachments.some(e=>e.uploading));function Y(){if(!J.value||!R.send({type:`prompt`,message:{text:N.text.trim(),picks:N.picks.map(e=>({...e})),marks:N.marks.length?N.marks.map(e=>({...e})):void 0,attachments:N.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:A.url||void 0}}))return!1;for(let e of N.attachments)e.preview&&URL.revokeObjectURL(e.preview);return N.text=``,N.picks=[],N.marks=[],N.attachments=[],!0}async function X(e){for(let t of e){let e=c({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});N.attachments.push(e);try{let n=await F.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 Z(e){R.send({type:`dequeue`,id:e.id}),N.text=e.text,N.picks=[...e.picks],N.marks=[...e.marks??[]],N.attachments=e.attachments.map(e=>({...e}))}async function ee(){if(f.value&&m.value&&!h.value&&p.value.length){h.value=!0;try{let e=await F.get(`chats/${f.value.id}/turns?before=${p.value[0].id}&limit=20`);p.value=[...e.turns.filter(e=>!p.value.some(t=>t.id===e.id)),...p.value],m.value=e.hasMore}finally{h.value=!1}}}function Q(e){R.send({type:`subscribe`,chat:e,role:`chat`})}async function $(){Q((await F.post(`chats`,{agent:f.value?.agent,model:f.value?.model})).id)}async function te(e){f.value&&=await F.patch(`chats/${f.value.id}`,e)}async function ne(e){if(!D.value[e])try{let t=(await F.get(`agents/${e}/models`)).map(e=>typeof e==`string`?{id:e,label:e}:e).filter(e=>e?.id);D.value={...D.value,[e]:t}}catch{D.value={...D.value,[e]:null}}}function re(e,t){R.send({type:`answer`,askId:e,answer:t})}function ie(e){R.send({type:`live_op`,request:e})}function ae(e,t,n){let r=x[e]??={current:t??1,display:n??`inplace`};t!==void 0&&(r.current=t),n&&(r.display=n),L.send({type:`ph:live-nav`,sid:e,current:t,display:n})}let oe=typeof BroadcastChannel<`u`?new BroadcastChannel(`ph-panel`):null,se=e=>{e&&Q(e)};oe&&(oe.onmessage=e=>{let t=e.data;t?.type===`switch-chat`&&se(t.id)}),window.addEventListener(`storage`,e=>{if(e.key===`ph:chat-switch`&&e.newValue)try{se(JSON.parse(e.newValue).id)}catch{}});function ce(e,t){try{localStorage.setItem(`ph:art-open`,JSON.stringify({name:e,version:t,ts:Date.now()}))}catch{}oe?.postMessage({type:`open-artifact`,name:e,version:t}),L.send({type:`ph:open`,what:`artifacts`})}return{openArtifact:ce,agents:e,defaultAgent:t,project:r,target:i,mode:o,review:s,me:l,share:u,chats:d,chat:f,turns:p,hasMore:m,loadingOlder:h,queue:g,running:_,pendingAsks:v,liveSessions:y,liveViews:x,pageStatus:C,pageBusy:w,error:T,notice:E,models:D,page:A,controlOn:j,liveOn:M,draft:N,canSend:J,controlOutdated:q,conn:R.state,embedded:L.embedded,reconnect:R.reconnect,send:R.send,sendPrompt:Y,addFiles:X,editQueued:Z,loadOlder:ee,switchChat:Q,newChat:$,updateChat:te,loadModels:ne,answer:re,live:ie,liveNav:ae,setName(e){R.send({type:`set_name`,name:e})},setTheme(e){K.value=e,L.send({type:`ph:theme`,theme:e})}}}var Bt={key:1,class:`chat-app`},Vt=[`title`],Ht={key:0,class:`livebar`},Ut=[`title`],Wt=[`title`],Gt={key:0,class:`spin`},Kt={key:0,class:`spin`},qt={key:0,class:`headline`},Jt={key:1,class:`empty`},Yt={class:`empty-av`},Xt={class:`empty-title`},Zt={class:`empty-hint`},Qt={key:3,class:`toast err`},$t=[`src`],en=B(m({__name:`ChatApp`,setup(e){let r=zt(),c=b(),m=b(),v=b(!0),x=b(!1),S=b(null),w=b(Date.now()),T=setInterval(()=>w.value=Date.now(),3e4),D=a(()=>r.liveSessions.value.filter(e=>e.status!==`accepted`&&e.status!==`discarded`)),O=a(()=>D.value.filter(e=>e.status!==`accepting`&&e.status!==`discarding`)),k=a(()=>D.value.filter(e=>e.status===`failed`)),A=a(()=>{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}),j=a(()=>r.agents.value.find(e=>e.id===r.chat.value?.agent)),P=b(0),F=a(()=>Math.max(1,r.turns.value.length-P.value));n(()=>r.chat.value?.agent,e=>e&&r.loadModels(e),{immediate:!0});let R=(e=!1)=>{let t=c.value;t&&(t.scrollTo({top:t.scrollHeight,behavior:e?`smooth`:`auto`}),x.value=!1)},z=0,B=()=>{let e=c.value;e&&(e.scrollHeight-e.scrollTop-e.clientHeight<60?v.value=!0:e.scrollTop<z-1&&(v.value=!1),z=e.scrollTop,v.value&&(x.value=!1))};n(()=>{let e=r.turns.value[r.turns.value.length-1];return[r.turns.value.length,e?.lastSeq,e?.items.length]},()=>{let e=v.value;g(()=>{e?R():x.value||(x.value=!0,P.value=r.turns.value.length-1)})}),n(()=>r.chat.value?.id,()=>g(()=>R()));async function V(){let e=c.value;if(!e||r.loadingOlder.value||!r.hasMore.value)return;let t=e.scrollHeight-e.scrollTop;await r.loadOlder(),await g(),e.scrollTop=e.scrollHeight-t}let H=null,U=new ResizeObserver(()=>v.value&&R());l(()=>{H=new IntersectionObserver(e=>e.some(e=>e.isIntersecting)&&V(),{root:c.value,rootMargin:`120px`}),m.value&&H.observe(m.value),c.value&&U.observe(c.value)}),o(()=>{H?.disconnect(),U.disconnect(),clearInterval(T)});function W(){let e=O.value;if(!e.some(e=>e.status!==`failed`)||confirm(E(L.value.confirmDiscardAll,{n:e.length})))for(let t of e)r.live({op:`discard`,sid:t.sid})}function G(){for(let e of k.value)r.live({op:`discard`,sid:e.sid})}return(e,n)=>s(r).me.value?.access===`reviewer`?(f(),h(gt,{key:0,store:s(r)},null,8,[`store`])):(f(),t(`div`,Bt,[i(`header`,null,[p(re,{store:s(r)},null,8,[`store`]),i(`button`,{class:`btn ghost icon`,title:s(L).newChat,onClick:n[0]||=e=>s(r).newChat()},[p(C,{name:`plus`})],8,Vt),p(Ft,{store:s(r)},null,8,[`store`])]),D.value.length?(f(),t(`div`,Ht,[p(C,{name:`sparkle`}),i(`span`,null,u(s(E)(s(L).liveActive,{n:D.value.length})),1),n[6]||=i(`span`,{class:`spacer`},null,-1),k.value.length?(f(),t(`button`,{key:0,class:`btn sm`,title:s(L).clearFailedHint,"data-testid":`live-clear-failed`,onClick:G},u(s(E)(s(L).clearFailed,{n:k.value.length})),9,Ut)):N(`v-if`,!0),O.value.length?(f(),t(`button`,{key:1,class:`btn sm`,title:s(L).discardAllHint,"data-testid":`live-discard-all`,onClick:W},u(s(E)(s(L).discardAll,{n:O.value.length})),9,Wt)):N(`v-if`,!0)])):N(`v-if`,!0),s(r).conn.value===`ready`?N(`v-if`,!0):(f(),t(`div`,{key:1,class:d([`conn`,s(r).conn.value]),"data-testid":`conn`},[s(r).conn.value===`connecting`?(f(),t(`span`,Gt)):N(`v-if`,!0),i(`span`,null,u(s(r).conn.value===`connecting`?s(L).connecting:s(L).netError),1),s(r).conn.value===`error`?(f(),t(`button`,{key:1,class:`btn sm`,onClick:n[1]||=e=>s(r).reconnect()},u(s(L).retryNow),1)):N(`v-if`,!0)],2)),i(`main`,{ref_key:`list`,ref:c,class:`list`,onScroll:B},[i(`div`,{ref_key:`sentinel`,ref:m,class:`sentinel`},[s(r).loadingOlder.value?(f(),t(`span`,Kt)):s(r).hasMore.value?(f(),t(`button`,{key:1,class:`btn ghost sm`,onClick:V},u(s(L).loadOlder),1)):N(`v-if`,!0)],512),s(r).turns.value.length?(f(),t(`div`,qt,[p(C,{name:`chat`}),M(u(s(E)(s(L).headerLine,{agent:j.value?.label??s(r).chat.value?.agent??``,n:s(r).turns.value.length})),1)])):s(r).conn.value===`ready`?(f(),t(`div`,Jt,[i(`div`,Yt,[p(C,{name:`robot`})]),i(`div`,Xt,u(s(r).mode.value===`review`?s(L).reviewEmptyTitle:s(L).emptyTitle),1),i(`div`,Zt,u(s(r).mode.value===`review`?s(L).reviewEmptyHint:s(L).emptyHint),1)])):N(`v-if`,!0),(f(!0),t(y,null,_(s(r).turns.value,e=>(f(),h(I,{key:e.id,turn:e,interactive:!0,"pending-asks":s(r).pendingAsks.value,"live-sessions":s(r).liveSessions.value,"live-views":s(r).liveViews,"live-latest":!!e.user.live?.sid&&A.value.get(e.user.live.sid)===e.id,now:w.value,onAnswer:s(r).answer,onRetry:n[2]||=e=>s(r).send({type:`retry`,turnId:e}),onLive:s(r).live,onNav:s(r).liveNav,onImage:n[3]||=e=>S.value=e,onArtifact:s(r).openArtifact},null,8,[`turn`,`pending-asks`,`live-sessions`,`live-views`,`live-latest`,`now`,`onAnswer`,`onLive`,`onNav`,`onArtifact`]))),128))],544),x.value&&!v.value?(f(),t(`button`,{key:2,class:`unread`,"data-testid":`unread`,onClick:n[4]||=e=>R(!0)},[p(C,{name:`chevrons`}),M(u(s(E)(s(L).newCount,{n:F.value})),1)])):N(`v-if`,!0),s(r).error.value?(f(),t(`div`,Qt,u(s(r).error.value),1)):N(`v-if`,!0),p(et,{store:s(r)},null,8,[`store`]),p(Ue,{store:s(r)},null,8,[`store`]),S.value?(f(),t(`div`,{key:4,class:`lightbox`,onClick:n[5]||=e=>S.value=null},[i(`img`,{src:S.value,alt:``},null,8,$t)])):N(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-cacd21df`]]);function tn(e,t){return`${e.replace(/\.[^.]+$/,``)}.${t}`}async function nn(t){let{default:n}=await w(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 rn(e,t){let n=document.createElement(`a`);n.href=e,n.download=t,document.body.appendChild(n),n.click(),n.remove()}async function an(e,t){rn((await nn(e)).toDataURL(`image/png`),tn(t,`png`))}async function on(e,t){let n=await nn(e),{jsPDF:r}=await w(async()=>{let{jsPDF:e}=await import(`./jspdf.es.min-OsUFBIXu.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(tn(t,`pdf`))}var sn={class:`jt`},cn={key:0,class:`key`},ln={class:`pv`},un={key:0,class:`kids`},dn={key:1,class:`leaf`},fn={key:0,class:`key`},pn=B(m({name:`JsonTree`,__name:`JsonTree`,props:{value:{},name:{},depth:{}},setup(e){let n=e,r=a(()=>n.depth??0),o=b(r.value<2),s=a(()=>n.value!==null&&typeof n.value==`object`),c=a(()=>s.value?Object.entries(n.value):[]),l=a(()=>Array.isArray(n.value)),p=a(()=>l.value?`[${c.value.length}]`:`{${c.value.length}}`),m=a(()=>n.value===null?`null`:typeof n.value),g=a(()=>typeof n.value==`string`?JSON.stringify(n.value):String(n.value));return(n,a)=>{let v=q(`JsonTree`,!0);return f(),t(`div`,sn,[s.value?(f(),t(y,{key:0},[i(`button`,{class:`tog`,onClick:a[0]||=e=>o.value=!o.value},[i(`span`,{class:d([`car`,{open:o.value}])},`▸`,2),e.name===void 0?N(`v-if`,!0):(f(),t(`span`,cn,u(e.name)+`:`,1)),i(`span`,ln,u(p.value),1)]),o.value?(f(),t(`div`,un,[(f(!0),t(y,null,_(c.value,([e,t])=>(f(),h(v,{key:e,name:l.value?Number(e)+``:e,value:t,depth:r.value+1},null,8,[`name`,`value`,`depth`]))),128))])):N(`v-if`,!0)],64)):(f(),t(`div`,dn,[e.name===void 0?N(`v-if`,!0):(f(),t(`span`,fn,u(e.name)+`:`,1)),i(`span`,{class:d([`v`,m.value])},u(g.value),3)]))])}}}),[[`__scopeId`,`data-v-1e4fba0c`]]),mn={class:`tb`},hn=[`value`],gn=[`value`],_n={key:1,class:`chip ro`},vn={key:2,class:`seg`},yn={key:3,class:`seg`},bn=[`title`],xn=[`title`],Sn=[`title`,`href`],Cn=[`disabled`],wn=[`disabled`],Tn={key:0,class:`center`},En={key:1,class:`center col`},Dn={class:`muted`},On=[`src`,`title`],kn={key:1,class:`center col`},An=[`src`,`alt`],jn={key:2,class:`center col`},Mn={class:`muted`},Nn=[`href`],Pn=1280,Fn=390,In=B(m({__name:`ArtifactPreview`,props:{info:{},version:{}},emits:[`version`],setup(e,{emit:r}){let c=e,m=r,g=a(()=>c.version??c.info.latest),v=a(()=>g.value!==c.info.latest),x=b(null),S=b(!1),w=b(!1),T=b(`structured`),E=b(`desktop`),D=b(!1),O=b(!1),k=b(0),P=b(),F=b(),I=b(),B=b(1),V=a(()=>![`image`,`file`,`html`].includes(c.info.kind)),H=a(()=>/\.([a-z0-9]+)$/i.exec(c.info.name)?.[1]?.toLowerCase()??`text`),U=a(()=>{if(c.info.kind===`json`&&x.value!==null)try{return{ok:!0,value:JSON.parse(x.value)}}catch{return{ok:!1}}}),W=a(()=>c.info.kind===`markdown`||c.info.kind===`json`&&T.value===`structured`),G=a(()=>{let e=A(c.info.name,v.value?g.value:void 0);return`${e}${e.includes(`?`)?`&`:`?`}t=${c.info.updatedAt}`});async function K(){if(S.value=!1,!V.value){k.value++;return}w.value=!0;try{let e=await fetch(A(c.info.name,g.value),{credentials:`same-origin`});if(!e.ok)throw Error(String(e.status));x.value=await e.text()}catch{S.value=!0,x.value=null}finally{w.value=!1}}n(()=>[c.info.name,g.value,c.info.updatedAt],K,{immediate:!0});let q=null,J=()=>{let e=I.value;if(!e)return;let t=E.value===`desktop`?Pn:Fn;B.value=Math.min(1,(e.clientWidth-16)/t)};l(()=>{q=new ResizeObserver(J),I.value&&q.observe(I.value)}),n(I,e=>e&&q?.observe(e)),n(E,J),o(()=>q?.disconnect());async function Y(){try{if(V.value&&x.value!==null)await navigator.clipboard.writeText(x.value);else if(c.info.kind===`html`)await navigator.clipboard.writeText(await(await fetch(A(c.info.name,g.value))).text());else if(c.info.kind===`image`){let e=await(await fetch(A(c.info.name,g.value))).blob();await navigator.clipboard.write([new ClipboardItem({[e.type]:e})])}O.value=!0,setTimeout(()=>O.value=!1,1500)}catch{}}let X=b(!1);async function Z(e){let t=F.value;if(t){X.value=!0;try{await(e===`png`?an(t,c.info.name):on(t,c.info.name))}finally{X.value=!1}}}let ee=e=>e.key===`Escape`&&(D.value=!1);return l(()=>addEventListener(`keydown`,ee)),o(()=>removeEventListener(`keydown`,ee)),(n,r)=>(f(),t(`div`,{class:d([`pv`,{zoomed:D.value}])},[i(`div`,mn,[e.info.versions.length>1?(f(),t(`select`,{key:0,class:`input sel`,value:g.value,"data-testid":`version-select`,onChange:r[0]||=t=>m(`version`,Number(t.target.value)===e.info.latest?void 0:Number(t.target.value))},[(f(!0),t(y,null,_([...e.info.versions].reverse(),e=>(f(),t(`option`,{key:e.v,value:e.v},`v`+u(e.v)+` · `+u(new Date(e.ts).toLocaleString()),9,gn))),128))],40,hn)):N(`v-if`,!0),v.value?(f(),t(`span`,_n,u(s(L).readOnly),1)):N(`v-if`,!0),e.info.kind===`html`?(f(),t(`div`,vn,[i(`button`,{class:d([`btn sm`,{on:E.value===`desktop`}]),onClick:r[1]||=e=>E.value=`desktop`},[p(C,{name:`monitor`}),M(u(s(L).desktop),1)],2),i(`button`,{class:d([`btn sm`,{on:E.value===`mobile`}]),onClick:r[2]||=e=>E.value=`mobile`},[p(C,{name:`phone`}),M(u(s(L).mobile),1)],2)])):N(`v-if`,!0),e.info.kind===`json`&&U.value?.ok?(f(),t(`div`,yn,[i(`button`,{class:d([`btn sm`,{on:T.value===`structured`}]),onClick:r[3]||=e=>T.value=`structured`},u(s(L).structured),3),i(`button`,{class:d([`btn sm`,{on:T.value===`raw`}]),onClick:r[4]||=e=>T.value=`raw`},u(s(L).raw),3)])):N(`v-if`,!0),r[10]||=i(`span`,{class:`spacer`},null,-1),i(`button`,{class:`btn ghost icon sm`,title:s(L).zoom,onClick:r[5]||=e=>D.value=!D.value},[p(C,{name:D.value?`x`:`zoom`},null,8,[`name`])],8,bn),e.info.kind===`file`?N(`v-if`,!0):(f(),t(`button`,{key:4,class:`btn ghost icon sm`,title:O.value?s(L).copied:s(L).copy,onClick:Y},[p(C,{name:O.value?`check`:`copy`},null,8,[`name`])],8,xn)),i(`a`,{class:`btn ghost icon sm`,title:s(L).download,href:s(A)(e.info.name,g.value,!0)},[p(C,{name:`download`})],8,Sn),W.value&&x.value!==null?(f(),t(y,{key:5},[i(`button`,{class:`btn sm`,disabled:X.value,onClick:r[6]||=e=>Z(`png`)},`PNG`,8,Cn),i(`button`,{class:`btn sm`,disabled:X.value,onClick:r[7]||=e=>Z(`pdf`)},`PDF`,8,wn)],64)):N(`v-if`,!0)]),i(`div`,{ref_key:`body`,ref:P,class:`body`},[w.value?(f(),t(`div`,Tn,[...r[11]||=[i(`span`,{class:`spin`},null,-1)]])):S.value?(f(),t(`div`,En,[i(`span`,Dn,u(s(L).loadFailed),1),i(`button`,{class:`btn sm`,onClick:K},[p(C,{name:`refresh`}),M(u(s(L).retry),1)])])):(f(),t(y,{key:2},[e.info.kind===`html`?(f(),t(`div`,{key:0,ref_key:`frameBox`,ref:I,class:`frame-box`},[i(`div`,{class:`frame-wrap`,style:R({width:(E.value===`desktop`?1280:390)*B.value+`px`,height:`100%`})},[(f(),t(`iframe`,{key:G.value+E.value,src:G.value,sandbox:`allow-scripts allow-forms allow-popups allow-modals`,referrerpolicy:`no-referrer`,title:e.info.name,style:R({width:(E.value===`desktop`?1280:390)+`px`,height:100/B.value+`%`,transform:`scale(${B.value})`})},null,12,On))],4)],512)):e.info.kind===`image`?(f(),t(`div`,kn,[(f(),t(`img`,{key:k.value,src:`${G.value}&r=${k.value}`,alt:e.info.name,class:`img`,onError:r[8]||=e=>S.value=!0},null,40,An))])):e.info.kind===`file`?(f(),t(`div`,jn,[p(C,{name:`file`,class:`big`}),i(`div`,null,u(e.info.name),1),i(`div`,Mn,u(s(L).binary)+` · `+u((e.info.size/1024).toFixed(1))+` KB`,1),i(`a`,{class:`btn primary`,href:s(A)(e.info.name,g.value,!0)},[p(C,{name:`download`}),M(u(s(L).download),1)],8,Nn)])):e.info.kind===`markdown`&&x.value!==null?(f(),t(`div`,{key:3,ref_key:`rendered`,ref:F,class:`doc`,onDblclick:r[9]||=e=>D.value=!D.value},[p(j,{source:x.value},null,8,[`source`])],544)):e.info.kind===`json`&&x.value!==null&&T.value===`structured`&&U.value?.ok?(f(),t(`div`,{key:4,ref_key:`rendered`,ref:F,class:`doc`},[p(pn,{value:U.value.value},null,8,[`value`])],512)):x.value===null?N(`v-if`,!0):(f(),h(z,{key:5,code:x.value,lang:e.info.kind===`json`?`json`:e.info.kind===`yaml`?`yaml`:H.value,class:`code`},null,8,[`code`,`lang`]))],64))],512)],2))}}),[[`__scopeId`,`data-v-d343d7ab`]]),Ln={class:`art-app`},Rn={class:`tabs`},zn={class:`faint`},Bn=[`onClick`],Vn={class:`nm`},Hn={key:0,class:`dot`},Un=[`title`,`onClick`],Wn={key:0,class:`conn muted`},Gn={key:1,class:`empty muted`},Kn={key:2,class:`grid`},qn=[`data-artifact`,`onClick`],Jn={class:`ic`},Yn={class:`nm`},Xn={class:`meta faint`},Zn={class:`meta faint`},Qn={key:0,class:`flag new`},$n={key:1,class:`flag upd`},er=B(m({__name:`ArtifactsApp`,setup(e){let r=b([]),l=b(!1),m=(e,t,n)=>{try{let r=e.getItem(t);return r?JSON.parse(r):n}catch{return n}},g=(e,t,n)=>{try{e.setItem(t,JSON.stringify(n))}catch{}},v=c(m(sessionStorage,`ph:art-tabs`,{tabs:[],active:null,versions:{}})),x=c(m(localStorage,`ph:art-seen`,{}));n(v,()=>g(sessionStorage,`ph:art-tabs`,v),{deep:!0}),n(x,()=>g(localStorage,`ph:art-seen`,x),{deep:!0});let S=a(()=>new Map(r.value.map(e=>[e.name,e]))),w=a(()=>v.active?S.value.get(v.active):void 0),T=b(Date.now()),E=setInterval(()=>T.value=Date.now(),3e4);o(()=>clearInterval(E));function O(e,t){v.tabs.includes(e)||v.tabs.push(e),v.active=e,t&&S.value.get(e)?.latest!==t?v.versions[e]=t:delete v.versions[e]}function k(e){let t=v.tabs.indexOf(e);t>=0&&v.tabs.splice(t,1),v.active===e&&(v.active=v.tabs[t]??v.tabs[t-1]??null),delete v.versions[e]}n(()=>[w.value?.name,w.value?.latest],()=>{w.value&&(x[w.value.name]=w.value.latest)});let A=e=>x[e.name]===void 0?`new`:x[e.name]<e.latest?`updated`:``,j=!1,P=V(e=>{if(e.type===`artifacts`){r.value=e.artifacts;for(let t of[...v.tabs])e.artifacts.some(e=>e.name===t)||k(t);l.value||(l.value=!0,F()),e.open?O(e.open):e.pinned&&!j&&!v.active&&O(e.pinned),j=!0}},()=>{});o(()=>P.close());function F(){let e=m(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 I=typeof BroadcastChannel<`u`?new BroadcastChannel(`ph-panel`):null;I&&(I.onmessage=e=>{let t=e.data;t?.type===`open-artifact`&&(O(t.name,t.version),localStorage.removeItem(`ph:art-open`))}),It(`artifacts`,e=>{(e.type===`ph:attach`||e.type===`ph:theme`)&&(K.value=e.theme)});let R={html:`monitor`,json:`file`,markdown:`file`,yaml:`file`,image:`image`,text:`file`,file:`file`},z={html:`HTML`,json:`JSON`,markdown:`Markdown`,yaml:`YAML`,image:`Image`,text:`Text`,file:`File`},B=e=>e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`;return(e,n)=>(f(),t(`div`,Ln,[i(`nav`,Rn,[i(`button`,{class:d([`tab`,{on:!v.active}]),"data-testid":`tab-all`,onClick:n[0]||=e=>v.active=null},[M(u(s(L).allArtifacts)+` `,1),i(`span`,zn,u(r.value.length),1)],2),(f(!0),t(y,null,_(v.tabs,e=>(f(),t(`div`,{key:e,class:d([`tab`,{on:v.active===e}]),onClick:t=>v.active=e},[i(`span`,Vn,u(e),1),S.value.get(e)&&A(S.value.get(e))===`updated`&&v.active!==e?(f(),t(`span`,Hn)):N(`v-if`,!0),i(`button`,{class:`x`,title:s(L).close,onClick:W(t=>k(e),[`stop`])},[p(C,{name:`x`})],8,Un)],10,Bn))),128))]),s(P).state.value===`ready`?N(`v-if`,!0):(f(),t(`div`,Wn,[n[2]||=i(`span`,{class:`spin`},null,-1),M(u(s(P).state.value===`error`?s(L).netError:s(L).connecting),1)])),i(`main`,null,[w.value?(f(),h(In,{key:w.value.name,info:w.value,version:v.versions[w.value.name],onVersion:n[1]||=e=>e?v.versions[w.value.name]=e:delete v.versions[w.value.name]},null,8,[`info`,`version`])):l.value&&!r.value.length?(f(),t(`div`,Gn,[p(C,{name:`sparkle`}),M(u(s(L).noArtifacts),1)])):(f(),t(`div`,Kn,[(f(!0),t(y,null,_(r.value,e=>(f(),t(`button`,{key:e.name,class:`tile card`,"data-artifact":e.name,onClick:t=>O(e.name)},[i(`div`,Jn,[p(C,{name:R[e.kind]},null,8,[`name`])]),i(`div`,Yn,u(e.name),1),i(`div`,Xn,u(z[e.kind])+` · `+u(B(e.size))+` · v`+u(e.latest),1),i(`div`,Zn,u(s(D)(e.updatedAt,T.value)),1),A(e)===`new`?(f(),t(`span`,Qn,u(s(L).new),1)):A(e)===`updated`?(f(),t(`span`,$n,u(s(L).updated),1)):N(`v-if`,!0)],8,qn))),128))]))])]))}}),[[`__scopeId`,`data-v-f36091ad`]]);U(),document.documentElement.lang=P.value;var tr=location.hash===`#artifacts`?`artifacts`:`chat`;T(tr===`artifacts`?er:en).mount(`#app`);