@timqi/pier 0.0.24 → 0.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/web/public/assets/{activity-DRJDNEP9.js → activity-xRauUtIM.js} +1 -1
  2. package/dist/web/public/assets/activity-xRauUtIM.js.br +0 -0
  3. package/dist/web/public/assets/activity-xRauUtIM.js.gz +0 -0
  4. package/dist/web/public/assets/{boards-ZmKTkCZ-.js → boards-CxXk1JfX.js} +1 -1
  5. package/dist/web/public/assets/boards-CxXk1JfX.js.br +0 -0
  6. package/dist/web/public/assets/boards-CxXk1JfX.js.gz +0 -0
  7. package/dist/web/public/assets/{code-D1-CYID1.js → code-pUOkepAa.js} +1 -1
  8. package/dist/web/public/assets/{explorer-De8NHWLj.js → explorer-C1KiLceA.js} +1 -1
  9. package/dist/web/public/assets/explorer-C1KiLceA.js.br +0 -0
  10. package/dist/web/public/assets/explorer-C1KiLceA.js.gz +0 -0
  11. package/dist/web/public/assets/index-CZeL3DfU.css +2 -0
  12. package/dist/web/public/assets/index-CZeL3DfU.css.br +0 -0
  13. package/dist/web/public/assets/index-CZeL3DfU.css.gz +0 -0
  14. package/dist/web/public/assets/{index-DuhZm2hI.js → index-D9euDszY.js} +3 -3
  15. package/dist/web/public/assets/index-D9euDszY.js.br +0 -0
  16. package/dist/web/public/assets/index-D9euDszY.js.gz +0 -0
  17. package/dist/web/public/assets/{runs-C7BNc137.js → runs-BuE-mags.js} +1 -1
  18. package/dist/web/public/assets/runs-BuE-mags.js.br +0 -0
  19. package/dist/web/public/assets/runs-BuE-mags.js.gz +0 -0
  20. package/dist/web/public/assets/{settings-BcWcHc7F.js → settings-5KvCAMBF.js} +1 -1
  21. package/dist/web/public/assets/settings-5KvCAMBF.js.br +0 -0
  22. package/dist/web/public/assets/{settings-BcWcHc7F.js.gz → settings-5KvCAMBF.js.gz} +0 -0
  23. package/dist/web/public/assets/{task-runs-CJz8WLzY.js → task-runs-DIlw1pXt.js} +1 -1
  24. package/dist/web/public/assets/task-runs-DIlw1pXt.js.br +0 -0
  25. package/dist/web/public/assets/task-runs-DIlw1pXt.js.gz +0 -0
  26. package/dist/web/public/assets/{tasks-DQnZGbBg.js → tasks-CcAxbMR8.js} +2 -2
  27. package/dist/web/public/assets/tasks-CcAxbMR8.js.br +0 -0
  28. package/dist/web/public/assets/tasks-CcAxbMR8.js.gz +0 -0
  29. package/dist/web/public/index.html +2 -2
  30. package/dist/web/public/index.html.br +0 -0
  31. package/dist/web/public/index.html.gz +0 -0
  32. package/package.json +1 -1
  33. package/dist/web/public/assets/activity-DRJDNEP9.js.br +0 -0
  34. package/dist/web/public/assets/activity-DRJDNEP9.js.gz +0 -0
  35. package/dist/web/public/assets/boards-ZmKTkCZ-.js.br +0 -0
  36. package/dist/web/public/assets/boards-ZmKTkCZ-.js.gz +0 -0
  37. package/dist/web/public/assets/explorer-De8NHWLj.js.br +0 -0
  38. package/dist/web/public/assets/explorer-De8NHWLj.js.gz +0 -0
  39. package/dist/web/public/assets/index-DP1-BW-q.css +0 -2
  40. package/dist/web/public/assets/index-DP1-BW-q.css.br +0 -0
  41. package/dist/web/public/assets/index-DP1-BW-q.css.gz +0 -0
  42. package/dist/web/public/assets/index-DuhZm2hI.js.br +0 -0
  43. package/dist/web/public/assets/index-DuhZm2hI.js.gz +0 -0
  44. package/dist/web/public/assets/runs-C7BNc137.js.br +0 -0
  45. package/dist/web/public/assets/runs-C7BNc137.js.gz +0 -0
  46. package/dist/web/public/assets/settings-BcWcHc7F.js.br +0 -0
  47. package/dist/web/public/assets/task-runs-CJz8WLzY.js.br +0 -0
  48. package/dist/web/public/assets/task-runs-CJz8WLzY.js.gz +0 -0
  49. package/dist/web/public/assets/tasks-DQnZGbBg.js.br +0 -0
  50. package/dist/web/public/assets/tasks-DQnZGbBg.js.gz +0 -0
@@ -1,4 +1,4 @@
1
- import{B as e,C as t,H as n,I as r,K as i,L as a,N as o,k as s,m as c,v as l,z as u}from"./index-DuhZm2hI.js";var d=(e,t={})=>{let n=document.createElementNS(`http://www.w3.org/2000/svg`,e);for(let[e,r]of Object.entries(t))n.setAttribute(e,r);return n},f=e=>e===null?`-`:r(Date.now()-e),p={light:{edge:`#a3a3a3`,callback:`#0891b2`,message:`#d97706`,scheduler:{fill:`#f5f3ff`,stroke:`#a78bfa`,text:`#5b21b6`},console:{fill:`#eff6ff`,stroke:`#93c5fd`,text:`#1d4ed8`},task:{fill:`#fffbeb`,stroke:`#fbbf24`,text:`#92400e`},process:{fill:`#f5f5f5`,stroke:`#a3a3a3`,text:`#525252`,dash:`4 3`},streaming:{fill:`#ffffff`,stroke:`#10b981`,text:`#262626`},idle:{fill:`#fafafa`,stroke:`#d4d4d4`,text:`#737373`}},dark:{edge:`#7a7a7a`,callback:`#3fc3dd`,message:`#e0a13a`,scheduler:{fill:`#2b2440`,stroke:`#7d63c9`,text:`#c9b8f5`},console:{fill:`#1f2a3d`,stroke:`#4a7fbf`,text:`#a8c8f0`},task:{fill:`#3a2f1c`,stroke:`#b8862a`,text:`#f0d49a`},process:{fill:`#262626`,stroke:`#5c5c5c`,text:`#a3a3a3`,dash:`4 3`},streaming:{fill:`#22302a`,stroke:`#10b981`,text:`#e5e5e5`},idle:{fill:`#212121`,stroke:`#4a4a4a`,text:`#9a9a9a`}}},m=()=>p[document.documentElement.dataset.theme===`dark`?`dark`:`light`];function h(r,p,h){let g=`sessions`,_=`active`,v={sessions:[],runs:[],messages:[]},y=``,b=e(async()=>{let e=_,t=await n(`/api/activity?scope=${e}`,`Failed to load activity`);if(!t.ok){y=``,r.replaceChildren(a(`p`,`p-4 text-[13px] text-red-600`,t.error));return}if(e!==_)return;let o=JSON.stringify(t.value);if(`${e}:${o}`===y)return;y=`${e}:${o}`;let s=t.value;v={...s,sessions:s.sessions.map(e=>({...e,title:i(e.title)}))},x()});function x(){let e=s(t([[`Sessions`,`sessions`],[`Relationships`,`dependencies`]],g,e=>{g=e,x()}),a(`span`,`ml-auto text-[11.5px] text-neutral-400`,`${v.sessions.length} sessions · ${v.runs.length} runs`),t([[`Current`,`active`],[`Last 24h`,`recent`]],_,e=>{_=e,x(),b()})),n=a(`div`,`min-h-0 flex-1 overflow-auto`);g===`sessions`?S(n):w(n),r.replaceChildren(e,n)}function S(e){let t=document.createElement(`table`);t.className=`w-full table-fixed text-left text-[12.5px]`,t.innerHTML=`<thead class="sticky top-0 bg-neutral-50 text-[10.5px] uppercase tracking-wide text-neutral-400 shadow-[inset_0_-1px_0_var(--color-neutral-200)]"><tr>
1
+ import{B as e,C as t,H as n,I as r,K as i,L as a,N as o,k as s,m as c,v as l,z as u}from"./index-D9euDszY.js";var d=(e,t={})=>{let n=document.createElementNS(`http://www.w3.org/2000/svg`,e);for(let[e,r]of Object.entries(t))n.setAttribute(e,r);return n},f=e=>e===null?`-`:r(Date.now()-e),p={light:{edge:`#a3a3a3`,callback:`#0891b2`,message:`#d97706`,scheduler:{fill:`#f5f3ff`,stroke:`#a78bfa`,text:`#5b21b6`},console:{fill:`#eff6ff`,stroke:`#93c5fd`,text:`#1d4ed8`},task:{fill:`#fffbeb`,stroke:`#fbbf24`,text:`#92400e`},process:{fill:`#f5f5f5`,stroke:`#a3a3a3`,text:`#525252`,dash:`4 3`},streaming:{fill:`#ffffff`,stroke:`#10b981`,text:`#262626`},idle:{fill:`#fafafa`,stroke:`#d4d4d4`,text:`#737373`}},dark:{edge:`#7a7a7a`,callback:`#3fc3dd`,message:`#e0a13a`,scheduler:{fill:`#2b2440`,stroke:`#7d63c9`,text:`#c9b8f5`},console:{fill:`#1f2a3d`,stroke:`#4a7fbf`,text:`#a8c8f0`},task:{fill:`#3a2f1c`,stroke:`#b8862a`,text:`#f0d49a`},process:{fill:`#262626`,stroke:`#5c5c5c`,text:`#a3a3a3`,dash:`4 3`},streaming:{fill:`#22302a`,stroke:`#10b981`,text:`#e5e5e5`},idle:{fill:`#212121`,stroke:`#4a4a4a`,text:`#9a9a9a`}}},m=()=>p[document.documentElement.dataset.theme===`dark`?`dark`:`light`];function h(r,p,h){let g=`sessions`,_=`active`,v={sessions:[],runs:[],messages:[]},y=``,b=e(async()=>{let e=_,t=await n(`/api/activity?scope=${e}`,`Failed to load activity`);if(!t.ok){y=``,r.replaceChildren(a(`p`,`p-4 text-[13px] text-red-600`,t.error));return}if(e!==_)return;let o=JSON.stringify(t.value);if(`${e}:${o}`===y)return;y=`${e}:${o}`;let s=t.value;v={...s,sessions:s.sessions.map(e=>({...e,title:i(e.title)}))},x()});function x(){let e=s(t([[`Sessions`,`sessions`],[`Relationships`,`dependencies`]],g,e=>{g=e,x()}),a(`span`,`ml-auto text-[11.5px] text-neutral-400`,`${v.sessions.length} sessions · ${v.runs.length} runs`),t([[`Current`,`active`],[`Last 24h`,`recent`]],_,e=>{_=e,x(),b()})),n=a(`div`,`min-h-0 flex-1 overflow-auto`);g===`sessions`?S(n):w(n),r.replaceChildren(e,n)}function S(e){let t=document.createElement(`table`);t.className=`w-full table-fixed text-left text-[12.5px]`,t.innerHTML=`<thead class="sticky top-0 bg-neutral-50 text-[10.5px] uppercase tracking-wide text-neutral-400 shadow-[inset_0_-1px_0_var(--color-neutral-200)]"><tr>
2
2
  <th class="w-[50%] px-4 py-2 font-semibold md:w-[34%]">Session</th>
3
3
  <th class="hidden w-[38%] px-2 py-2 font-semibold md:table-cell">Project</th>
4
4
  <th class="px-2 py-2 font-semibold md:w-[14%]">State</th>
@@ -1 +1 @@
1
- import{G as e,H as t,L as n,N as r,O as i,P as a,R as o,V as s,W as c,h as l}from"./index-DuhZm2hI.js";var u=e=>e.public&&e.token?`/p/${e.slug}-${e.token}/`:`/boards/${e.slug}/`;function d(d,f){let p=[],m=``,h=n(`header`,`sticky top-0 z-30 flex h-10 items-center gap-3 border-b border-neutral-200 bg-white px-4`,n(`span`,`font-medium max-md:hidden`,`Boards`)),g=n(`div`,`px-4 py-5`);d.append(n(`div`,`min-h-0 flex-1 overflow-y-auto`,h,g));async function _(t,n){let r=await e(`/api/boards/${t.slug}`,{public:n},`PATCH`);if(r.ok)return t.token=(await r.json().catch(()=>({}))).token??``,x();m=await s(r,`Could not change ${t.slug}`),await S()}async function v(e){m=await c(`/api/boards/${e}`,`DELETE`,`Could not delete ${e}`)??``,await S()}function y(e){let t=n(`div`,`group flex flex-col gap-1 border-b border-neutral-200/70 px-1 py-2.5 last:border-b-0`),r=document.createElement(`a`);r.className=`truncate font-medium text-neutral-800 hover:text-indigo-700`,r.href=u(e),r.target=`_blank`,r.rel=`noreferrer`,r.textContent=e.title;let s=n(`div`,`flex items-center gap-2`,r,n(`span`,`flex-none font-mono text-[11.5px] text-neutral-400`,e.slug)),c=i(``,``,e.public,t=>{e.public=t,_(e,t)});c.className=`ml-auto flex flex-none cursor-pointer items-center gap-1.5 text-[11.5px] text-neutral-500`,c.append(n(`span`,``,`Public`));let d=l(`Delete`,`flex-none cursor-pointer text-[11.5px] text-neutral-400 opacity-0 transition-opacity hover:text-red-600 group-hover:opacity-100`);d.title=`Renames the folder on disk; nothing is erased`,d.onclick=()=>void v(e.slug);let p=a(`flex-none cursor-pointer text-[11.5px] text-neutral-400 opacity-0 transition-opacity hover:text-indigo-600 group-hover:opacity-100`,()=>`${location.origin}${u(e)}`);p.title=`Copy the board's link`,s.append(c,p,d),t.append(s);let m=n(`div`,`flex flex-wrap items-center gap-x-3 gap-y-1 text-[11.5px] text-neutral-500`);e.description&&m.append(n(`span`,`min-w-0 truncate`,e.description)),m.append(n(`span`,`flex-none text-neutral-400`,o(Date.parse(e.updatedAt))));for(let t of e.sessions){let e=l(t.slice(0,8),`flex-none cursor-pointer font-mono text-indigo-600 hover:underline`);e.title=`Open session ${t}`,e.onclick=()=>f(t),m.append(e)}if(e.public&&e.token){let t=n(`span`,`flex-none font-mono text-neutral-400`,u(e));t.title=`Public URL — anyone holding this link can read the board, no password`,m.append(t)}return t.append(m),t}let b=[{title:`Public`,hint:`Readable at /p/<slug>-<token>/ by anyone holding the link.`,wanted:!0},{title:`Private`,hint:`Reachable from the Console only.`,wanted:!1}];function x(){let e=n(`div`,`mx-auto flex max-w-3xl flex-col`);p.length===0&&e.append(n(`p`,`rounded-xl border border-dashed border-neutral-300 px-4 py-6 text-center text-[12.5px] text-neutral-500`,`No boards yet. Ask an agent to build one — it writes a folder under ~/.pier/boards.`));for(let{title:t,hint:r,wanted:i}of b){let a=p.filter(e=>e.public===i);if(a.length===0)continue;let o=n(`section`,`mb-6`);o.append(n(`h2`,`text-[13px] font-semibold text-neutral-700`,t)),o.append(n(`p`,`mb-1 text-[11.5px] leading-snug text-neutral-500`,r));let s=n(`div`,`rounded-xl border border-neutral-200 bg-white px-3`);s.append(...a.map(y)),o.append(s),e.append(o)}g.replaceChildren(...m?[n(`p`,`mb-3 text-[13px] text-red-600`,m)]:[],e)}async function S(){let e=await t(`/api/boards`,`Could not load boards`);if(!e.ok)return m=e.error,x();p=e.value,x(),m=``}let C=r(d,()=>void S());return window.addEventListener(`focus`,()=>{C.visible&&S()}),C}export{d as createBoardsView};
1
+ import{G as e,H as t,L as n,N as r,O as i,P as a,R as o,V as s,W as c,h as l}from"./index-D9euDszY.js";var u=e=>e.public&&e.token?`/p/${e.slug}-${e.token}/`:`/boards/${e.slug}/`;function d(d,f){let p=[],m=``,h=n(`header`,`sticky top-0 z-30 flex h-10 items-center gap-3 border-b border-neutral-200 bg-white px-4`,n(`span`,`font-medium max-md:hidden`,`Boards`)),g=n(`div`,`px-4 py-5`);d.append(n(`div`,`min-h-0 flex-1 overflow-y-auto`,h,g));async function _(t,n){let r=await e(`/api/boards/${t.slug}`,{public:n},`PATCH`);if(r.ok)return t.token=(await r.json().catch(()=>({}))).token??``,x();m=await s(r,`Could not change ${t.slug}`),await S()}async function v(e){m=await c(`/api/boards/${e}`,`DELETE`,`Could not delete ${e}`)??``,await S()}function y(e){let t=n(`div`,`group flex flex-col gap-1 border-b border-neutral-200/70 px-1 py-2.5 last:border-b-0`),r=document.createElement(`a`);r.className=`truncate font-medium text-neutral-800 hover:text-indigo-700`,r.href=u(e),r.target=`_blank`,r.rel=`noreferrer`,r.textContent=e.title;let s=n(`div`,`flex items-center gap-2`,r,n(`span`,`flex-none font-mono text-[11.5px] text-neutral-400`,e.slug)),c=i(``,``,e.public,t=>{e.public=t,_(e,t)});c.className=`ml-auto flex flex-none cursor-pointer items-center gap-1.5 text-[11.5px] text-neutral-500`,c.append(n(`span`,``,`Public`));let d=l(`Delete`,`flex-none cursor-pointer text-[11.5px] text-neutral-400 opacity-0 transition-opacity hover:text-red-600 group-hover:opacity-100`);d.title=`Renames the folder on disk; nothing is erased`,d.onclick=()=>void v(e.slug);let p=a(`flex-none cursor-pointer text-[11.5px] text-neutral-400 opacity-0 transition-opacity hover:text-indigo-600 group-hover:opacity-100`,()=>`${location.origin}${u(e)}`);p.title=`Copy the board's link`,s.append(c,p,d),t.append(s);let m=n(`div`,`flex flex-wrap items-center gap-x-3 gap-y-1 text-[11.5px] text-neutral-500`);e.description&&m.append(n(`span`,`min-w-0 truncate`,e.description)),m.append(n(`span`,`flex-none text-neutral-400`,o(Date.parse(e.updatedAt))));for(let t of e.sessions){let e=l(t.slice(0,8),`flex-none cursor-pointer font-mono text-indigo-600 hover:underline`);e.title=`Open session ${t}`,e.onclick=()=>f(t),m.append(e)}if(e.public&&e.token){let t=n(`span`,`flex-none font-mono text-neutral-400`,u(e));t.title=`Public URL — anyone holding this link can read the board, no password`,m.append(t)}return t.append(m),t}let b=[{title:`Public`,hint:`Readable at /p/<slug>-<token>/ by anyone holding the link.`,wanted:!0},{title:`Private`,hint:`Reachable from the Console only.`,wanted:!1}];function x(){let e=n(`div`,`mx-auto flex max-w-3xl flex-col`);p.length===0&&e.append(n(`p`,`rounded-xl border border-dashed border-neutral-300 px-4 py-6 text-center text-[12.5px] text-neutral-500`,`No boards yet. Ask an agent to build one — it writes a folder under ~/.pier/boards.`));for(let{title:t,hint:r,wanted:i}of b){let a=p.filter(e=>e.public===i);if(a.length===0)continue;let o=n(`section`,`mb-6`);o.append(n(`h2`,`text-[13px] font-semibold text-neutral-700`,t)),o.append(n(`p`,`mb-1 text-[11.5px] leading-snug text-neutral-500`,r));let s=n(`div`,`rounded-xl border border-neutral-200 bg-white px-3`);s.append(...a.map(y)),o.append(s),e.append(o)}g.replaceChildren(...m?[n(`p`,`mb-3 text-[13px] text-red-600`,m)]:[],e)}async function S(){let e=await t(`/api/boards`,`Could not load boards`);if(!e.ok)return m=e.error,x();p=e.value,x(),m=``}let C=r(d,()=>void S());return window.addEventListener(`focus`,()=>{C.visible&&S()}),C}export{d as createBoardsView};
@@ -1 +1 @@
1
- import{L as e,d as t}from"./index-DuhZm2hI.js";var n=2e4,r=e=>e.map((e,t)=>({nums:[t+1],text:e,tone:``}));function i(t,r){let i=t.length<=n?r:null,o=Math.max(2,...t.map(e=>e.nums.reduce((e,t)=>Math.max(e,String(t).length),0))),s=e(`div`,`py-2 font-mono text-[12px] leading-[1.5]`);for(let n of t){let t=e(`div`,`flex pl-2 pr-4 ${n.tone===`add`?`bg-emerald-50`:n.tone===`del`?`bg-red-50`:``}`);for(let r of n.nums){let n=e(`span`,`flex-none select-none pr-1.5 text-right text-neutral-300`,r===``?``:String(r));n.style.width=`calc(${o}ch + 0.375rem)`,t.append(n)}t.append(a(n,i)),s.append(t)}return s}function a(n,r){let i=`min-w-0 flex-1 whitespace-pre-wrap [overflow-wrap:anywhere]`;if(!n.mark||n.mark[0]>=n.mark[1]){let e=t(n.text,r);return e.className=i,e}let[a,o]=n.mark,s=t(n.text.slice(a,o),r);return s.className=`rounded-xs ${n.tone===`add`?`bg-emerald-200/80`:`bg-red-200/70`}`,e(`span`,i,t(n.text.slice(0,a),r),s,t(n.text.slice(o),r))}export{r as n,i as t};
1
+ import{L as e,d as t}from"./index-D9euDszY.js";var n=2e4,r=e=>e.map((e,t)=>({nums:[t+1],text:e,tone:``}));function i(t,r){let i=t.length<=n?r:null,o=Math.max(2,...t.map(e=>e.nums.reduce((e,t)=>Math.max(e,String(t).length),0))),s=e(`div`,`py-2 font-mono text-[12px] leading-[1.5]`);for(let n of t){let t=e(`div`,`flex pl-2 pr-4 ${n.tone===`add`?`bg-emerald-50`:n.tone===`del`?`bg-red-50`:``}`);for(let r of n.nums){let n=e(`span`,`flex-none select-none pr-1.5 text-right text-neutral-300`,r===``?``:String(r));n.style.width=`calc(${o}ch + 0.375rem)`,t.append(n)}t.append(a(n,i)),s.append(t)}return s}function a(n,r){let i=`min-w-0 flex-1 whitespace-pre-wrap [overflow-wrap:anywhere]`;if(!n.mark||n.mark[0]>=n.mark[1]){let e=t(n.text,r);return e.className=i,e}let[a,o]=n.mark,s=t(n.text.slice(a,o),r);return s.className=`rounded-xs ${n.tone===`add`?`bg-emerald-200/80`:`bg-red-200/70`}`,e(`span`,i,t(n.text.slice(0,a),r),s,t(n.text.slice(o),r))}export{r as n,i as t};
@@ -1,4 +1,4 @@
1
- import{F as e,L as t,M as n,N as r,R as i,U as a,a as o,i as s,n as c,s as l,u}from"./index-DuhZm2hI.js";import{n as d,t as f}from"./code-D1-CYID1.js";var p=e=>{let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`},m=e=>[e.subject,e.body,[[e.author,e.email?`<${e.email}>`:``].filter(Boolean).join(` `),e.at?p(e.at):``].filter(Boolean).join(` · `)].filter(Boolean).join(`
1
+ import{F as e,L as t,M as n,N as r,R as i,U as a,a as o,i as s,n as c,s as l,u}from"./index-D9euDszY.js";import{n as d,t as f}from"./code-pUOkepAa.js";var p=e=>{let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`},m=e=>[e.subject,e.body,[[e.author,e.email?`<${e.email}>`:``].filter(Boolean).join(` `),e.at?p(e.at):``].filter(Boolean).join(` · `)].filter(Boolean).join(`
2
2
 
3
3
  `),h=null;function g(){h&&(h.remove(),h=null,document.removeEventListener(`pointerdown`,g,!0),window.removeEventListener(`scroll`,g,!0))}function _(e,n){e.onmouseenter=()=>{g();let r=n();if(!r)return;h=t(`div`,`pointer-events-none fixed z-50 max-w-96 whitespace-pre-wrap rounded-lg bg-neutral-800/95 px-3 py-2 font-sans text-[11.5px] leading-snug text-neutral-100 shadow-lg`),h.textContent=r,document.body.append(h),document.addEventListener(`pointerdown`,g,!0),window.addEventListener(`scroll`,g,!0);let i=e.getBoundingClientRect();h.style.left=`${Math.max(8,Math.min(i.left,window.innerWidth-h.offsetWidth-8))}px`,h.style.top=i.bottom+6+h.offsetHeight>window.innerHeight?`${i.top-h.offsetHeight-6}px`:`${i.bottom+6}px`},e.onmouseleave=g}function v(e,n,r){let a=t(`button`,`flex w-full cursor-pointer items-center gap-1.5 px-2 py-1 text-left hover:bg-neutral-100`,t(`span`,`w-3 flex-none text-indigo-600`,e.value===n?`✓`:``),t(`span`,`flex-none font-mono text-[11.5px] text-neutral-800`,e.label??e.value));return e.subject&&a.append(t(`span`,`min-w-0 truncate text-[11px] text-neutral-400`,e.subject)),e.author&&a.append(t(`span`,`ml-auto flex-none pl-1.5 text-[10.5px] text-neutral-400`,`${e.author} · ${e.at?i(e.at):``}`)),_(a,()=>m(e)),a.onclick=()=>r(e.value),a}function ee(e,n,r,i,a){let{base:c,head:l}=r,u=()=>l&&c===`${l}~1`?l:``,d=u()?`commit`:`compare`,f=n.commits[0],p=e=>[...e?[{value:``,label:`Working tree`,subject:`the files on disk, uncommitted changes included`}]:[],{...f,value:`HEAD`},...n.refs.map(e=>({value:e.name,subject:e.subject})),...n.commits.map(e=>({...e,value:e.hash}))],m=t(`div`,`flex w-[38rem] max-w-full flex-col`);function h(){let e=(e,n)=>{let r=t(`button`,`cursor-pointer rounded-full px-2.5 py-0.5 text-[11.5px] ${d===n?`bg-indigo-50 font-medium text-indigo-700`:`text-neutral-500 hover:bg-neutral-100`}`,e);return r.onclick=()=>{d=n,h()},r},r=(e,n,r,i)=>t(`div`,`flex min-w-0 flex-1 flex-col`,t(`div`,`flex-none px-2 pb-0.5 text-[10.5px] font-semibold uppercase tracking-wide text-neutral-400`,e),t(`div`,`min-h-0 flex-1 overflow-y-auto`,...n.map(e=>v(e,r,i)))),o=d===`compare`?t(`div`,`flex h-72 min-h-0 divide-x divide-neutral-200 pb-1`,r(`base`,p(!1),c,e=>{c=e,h(),i(c,l)}),r(`to`,p(!0),l,e=>{l=e,h(),i(c,l)})):t(`div`,`flex h-72 min-h-0 flex-col overflow-y-auto pb-1`,...n.commits.map(e=>v({value:e.hash,...e},u(),e=>{c=`${e}~1`,l=e,s(),i(c,l)}))),f=t(`div`,`flex-none border-t border-neutral-200`,v({value:a,label:`↺ ${a} ↔ Working tree`,subject:`back to the default: the main line's tip vs the files on disk`},c===a&&l===``?a:``,()=>{c=a,l=``,h(),i(c,l)}));m.replaceChildren(t(`div`,`flex flex-none items-center gap-1 border-b border-neutral-200 px-2 py-1.5`,e(`Compare two points`,`compare`),e(`One commit`,`commit`)),o,...d===`compare`?[f]:[])}h(),o(e,m)}var te=/\.(png|jpe?g|gif|webp|avif|bmp|svg)$/i,ne={A:`text-emerald-600`,M:`text-amber-600`,D:`text-red-600`},re=30,y=`pier.filesPrefs`,b=50,x=()=>{try{let e=JSON.parse(localStorage.getItem(y)??`{}`);return e&&typeof e==`object`?e:{}}catch{return{}}},S=e=>{let t=e?x()[e]:void 0;return typeof t?.cwd==`string`&&typeof t.base==`string`&&typeof t.head==`string`?{cwd:t.cwd,base:t.base,head:t.head}:null},ie=(e,t)=>{let n=x();delete n[e],n[e]=t;let r=Object.keys(n);for(let e of r.slice(0,Math.max(0,r.length-b)))delete n[e];try{localStorage.setItem(y,JSON.stringify(n))}catch(e){console.warn(`Files: could not remember this folder`,e)}},C=(e,n=`indigo`)=>{let r=t(`button`,`min-w-0 cursor-pointer truncate rounded-md px-2 py-0.5 text-left font-mono text-[11.5px] ${n===`indigo`?`bg-indigo-50 font-medium text-indigo-700 hover:bg-indigo-100`:`bg-neutral-100 text-neutral-600 hover:bg-neutral-200`}`,e);return r.type=`button`,r};function w(i,o,s,p){let h=``,g=``,v={branch:null,refs:[],commits:[],worktrees:[]},y=`HEAD`,b=``,x=new Map,w=!0,T=!1,ae=[],E=new Set,D=null,O=null,k=t(`header`,`flex h-10 flex-none items-center gap-2 border-b border-neutral-200 bg-white px-3`),A=t(`div`,`flex-none border-b border-neutral-200`),j=t(`div`,`min-h-0 flex-1 overflow-y-auto py-1`),oe=t(`aside`,`flex w-64 flex-none flex-col border-r border-neutral-200 text-[12.5px] max-md:h-2/5 max-md:w-full max-md:border-b max-md:border-r-0`,A,j),M=t(`div`,`h-full min-w-0 overflow-auto`),N=t(`div`,`pointer-events-none absolute inset-y-0 right-0 z-20 hidden w-2`),se=t(`section`,`relative min-h-0 min-w-0 flex-1`,M,N);i.append(k,t(`div`,`flex min-h-0 flex-1 max-md:flex-col`,oe,se));let P=(e,t)=>`/api/explorer/${e}?${new URLSearchParams({root:h,...t})}`,F=(e,t)=>`/api/fs/${e}?${new URLSearchParams({root:h,...t})}`,I=(e,n=`text-neutral-400`)=>t(`p`,`px-4 py-3 text-[12.5px] ${n}`,e),L=e=>{let t=0;for(let n of x.keys())n.startsWith(`${e}/`)&&t++;return t};function R(e,t){let n=new Set(t.map(e=>e.name)),r=e?`${e}/`:``;for(let[e,i]of x){if(i.status!==`D`||!e.startsWith(r))continue;let a=e.slice(r.length).split(`/`)[0];n.has(a)||(n.add(a),t.push({name:a,dir:e.slice(r.length).includes(`/`)}))}let i=t;return w&&v.branch&&(i=t.filter(e=>e.dir?L(`${r}${e.name}`)>0:x.has(`${r}${e.name}`))),i.sort((e,t)=>Number(t.dir)-Number(e.dir)||e.name.localeCompare(t.name)),i.map(e=>e.dir?ce(`${r}${e.name}`,e.name):le(`${r}${e.name}`,e.name))}async function z(e,t){try{let{entries:n}=await a(F(`ls`,{path:t}),`could not list this folder`);e.replaceChildren(...R(t,n)),e.childElementCount||e.append(I(w?`No changes.`:`Empty.`))}catch(n){let r=R(t,[]);r.length?e.replaceChildren(...r):e.replaceChildren(I(String(n),`text-red-600`))}}function ce(n,r){let i=L(n),a=[t(`span`,`truncate`,r)];i&&a.push(t(`span`,`ml-auto flex-none rounded bg-amber-100/80 px-1 font-mono text-[10px] text-amber-700`,String(i)));let{el:o,summary:s}=e(``,a);s.className+=` px-2 py-0.5 hover:bg-neutral-100`;let c=t(`div`,`pl-3`);o.append(c);let l=!1,u=()=>{l||(l=!0,c.append(I(`…`)),z(c,n))};return o.ontoggle=()=>{E[o.open?`add`:`delete`](n),o.open&&u()},(w&&v.branch&&!T||E.has(n))&&(o.open=!0,u()),o}function B(e){O?.classList.remove(`bg-indigo-50`,`text-indigo-700`),O=e,e.classList.add(`bg-indigo-50`,`text-indigo-700`)}function le(e,n){let r=x.get(e)?.status,i=t(`button`,`flex w-full cursor-pointer items-center gap-1.5 px-2 py-0.5 pl-6 text-left hover:bg-neutral-100`,t(`span`,`truncate`,n));return r&&i.append(t(`span`,`ml-auto flex-none font-mono text-[10.5px] font-semibold ${ne[r]??`text-neutral-500`}`,r)),i.title=e,e===D&&B(i),i.onclick=()=>{B(i),D=e,de(e)},i}let V=()=>void z(j,``),H=(e,n)=>[...e?[t(`span`,`flex-none font-mono text-[10.5px] font-semibold text-emerald-600`,`+${e}`)]:[],...n?[t(`span`,`flex-none font-mono text-[10.5px] font-semibold text-red-600`,`−${n}`)]:[]];function U(e,r,i){let a=x.get(e),o=t(`div`,`sticky top-0 z-10 flex items-center gap-2 border-b border-neutral-200 bg-white px-4 py-1.5 font-mono text-[11.5px] text-neutral-500`,t(`span`,`truncate`,e));a&&(o.append(t(`span`,`flex-none font-semibold ${ne[a.status]??``}`,a.status)),o.append(...H(a.add,a.del)));let s=t(`div`,`ml-auto flex flex-none items-center gap-2`);if(i&&s.append(i),r){let t=document.createElement(`a`);t.className=`flex-none text-neutral-400 hover:text-indigo-700 hover:underline`,t.href=F(`file`,{path:e}),t.download=n(e),t.textContent=`Download`,s.append(t)}return o.append(s),o}function ue(e){let t=0;for(;t<e.length;){if(e[t].tone!==`del`){t++;continue}let n=t;for(;t<e.length&&e[t].tone===`del`;)t++;let r=t;for(;t<e.length&&e[t].tone===`add`;)t++;let i=Math.min(r-n,t-r);for(let t=0;t<i;t++){let i=e[n+t],a=e[r+t],o=Math.min(i.text.length,a.text.length),s=0;for(;s<o&&i.text[s]===a.text[s];)s++;let c=0;for(;c<o-s&&i.text[i.text.length-1-c]===a.text[a.text.length-1-c];)c++;s+c!==0&&(i.mark=[s,i.text.length-c],a.mark=[s,a.text.length-c])}}}let W=_e();function G(){N.classList.add(`hidden`),N.replaceChildren(),W.set([],[])}let K=0,q=e=>e===K;function de(e){let t=++K;return x.has(e)?ve(e,t):J(e,t)}async function J(e,n){if(!q(n))return;G();let r=F(`file`,{path:e}),i=t(`div`,`min-w-0`);if(M.classList.remove(`flex`,`flex-col`),M.replaceChildren(U(e,!0),i),te.test(e)){let e=t(`img`,`max-w-full p-4`);e.src=r,e.onerror=()=>i.replaceChildren(I(`Could not load image.`,`text-red-600`)),i.append(e);return}if(e.toLowerCase().endsWith(`.pdf`)){let t=document.createElement(`iframe`);t.className=`h-full w-full`,t.src=r,M.replaceChildren(U(e,!0),t),M.classList.add(`flex`,`flex-col`);return}i.append(I(`…`));let a=await fetch(r);if(!q(n))return;if(!a.ok){let{error:e}=await a.json().catch(()=>({}));i.replaceChildren(I(e??`HTTP ${a.status}`,`text-red-600`));return}if(!(a.headers.get(`content-type`)??``).startsWith(`text/plain`)){i.replaceChildren(I(`Binary file — use Download.`));return}let o=(await a.text()).split(`
4
4
  `);if(!q(n))return;o.at(-1)===``&&o.pop();let s=await u(e);q(n)&&i.replaceChildren(f(d(o),s))}function fe(e){let t=[],n=0,r=0,i=!1,a=e.split(`
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-content:"";--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-green-50:oklch(98.2% .018 155.826);--color-green-500:oklch(72.3% .219 149.579);--color-green-700:oklch(52.7% .154 150.069);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-cyan-50:oklch(98.4% .019 200.873);--color-cyan-500:oklch(71.5% .143 215.221);--color-cyan-700:oklch(52% .105 223.128);--color-sky-50:oklch(97.7% .013 236.62);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-700:oklch(50% .134 242.749);--color-blue-700:oklch(48.8% .243 264.376);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-indigo-800:oklch(39.8% .195 277.366);--color-violet-50:oklch(96.9% .016 293.756);--color-violet-200:oklch(89.4% .057 293.283);--color-violet-700:oklch(49.1% .27 292.581);--color-fuchsia-50:oklch(97.7% .017 320.058);--color-fuchsia-500:oklch(66.7% .295 322.15);--color-fuchsia-700:oklch(51.8% .253 323.949);--color-neutral-50:oklch(98.5% 0 none);--color-neutral-100:oklch(97% 0 none);--color-neutral-200:oklch(92.2% 0 none);--color-neutral-300:oklch(87% 0 none);--color-neutral-400:oklch(70.8% 0 none);--color-neutral-500:oklch(55.6% 0 none);--color-neutral-600:oklch(43.9% 0 none);--color-neutral-700:oklch(37.1% 0 none);--color-neutral-800:oklch(26.9% 0 none);--color-neutral-900:oklch(20.5% 0 none);--color-neutral-950:oklch(14.5% 0 none);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components{.btn{cursor:pointer;border-radius:var(--radius-md);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-300);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3);padding-block:var(--spacing);--tw-shadow:0 1px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.btn:hover{background-color:var(--color-neutral-100)}}.btn:active{background-color:var(--color-neutral-200)}.btn:disabled{cursor:not-allowed;opacity:.45}@media (hover:hover){.btn:disabled:hover{background-color:var(--color-white)}}.btn-primary{border-color:var(--color-indigo-600);background-color:var(--color-indigo-600);color:var(--color-white);--tw-shadow-color:#4f39f633}@supports (color:color-mix(in lab, red, red)){.btn-primary{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-indigo-600) 20%, transparent) var(--tw-shadow-alpha), transparent)}}@media (hover:hover){.btn-primary:hover{background-color:var(--color-indigo-500)}}.btn-primary:active{background-color:var(--color-indigo-700)}.btn-primary:where([data-theme=dark],[data-theme=dark] *){color:var(--color-neutral-50)}.select{cursor:pointer;appearance:none;background-color:var(--color-white);padding-right:calc(var(--spacing) * 8);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23737373' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path d='M4.5 6.25 8 9.75l3.5-3.5'/></svg>");background-position:right .5rem center;background-repeat:no-repeat;background-size:.9rem}.icon-btn{height:calc(var(--spacing) * 5);width:calc(var(--spacing) * 5);cursor:pointer;color:var(--color-neutral-400);border-radius:.25rem;flex:none;justify-content:center;align-items:center;display:flex}@media (hover:hover){.icon-btn:hover{background-color:var(--color-neutral-200);color:var(--color-neutral-700)}}.tabstrip{align-items:center;gap:var(--spacing);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-neutral-200);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 2);white-space:nowrap;flex:none;display:flex;overflow-x:auto}@media not all and (width>=48rem){.tabstrip{row-gap:calc(var(--spacing) * 2);flex-wrap:wrap}}.lightbox-nav{height:calc(var(--spacing) * 10);width:calc(var(--spacing) * 10);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y);cursor:pointer;background-color:#00000073;border-radius:2147483647px;justify-content:center;align-items:center;display:flex;position:absolute;top:50%}@supports (color:color-mix(in lab, red, red)){.lightbox-nav{background-color:color-mix(in oklab, var(--color-black) 45%, transparent)}}.lightbox-nav{--tw-leading:1;color:var(--color-white);font-size:1.5rem;line-height:1}@media (hover:hover){.lightbox-nav:hover{background-color:#000000b3}@supports (color:color-mix(in lab, red, red)){.lightbox-nav:hover{background-color:color-mix(in oklab, var(--color-black) 70%, transparent)}}}.lightbox-nav:where([data-theme=dark],[data-theme=dark] *){color:var(--color-neutral-950)}summary{list-style-type:none}summary::-webkit-details-marker{display:none}.chev{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;flex:none;font-size:10px;transition-duration:.15s;display:inline-block}details[open]>summary .chev{transform:rotate(90deg)}.spinner{height:calc(var(--spacing) * 3);width:calc(var(--spacing) * 3);animation:var(--animate-spin);border-style:var(--tw-border-style);border-width:2px;border-color:#0000 currentColor currentColor;border-radius:2147483647px;flex:none}.skeleton{animation:var(--animate-pulse);background-color:var(--color-neutral-200);border-radius:.25rem}.thumb{height:calc(var(--spacing) * 16);width:calc(var(--spacing) * 16);cursor:zoom-in;border-radius:var(--radius-md);border-style:var(--tw-border-style);border-width:1px;border-color:#0000000d;display:inline-block}@supports (color:color-mix(in lab, red, red)){.thumb{border-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.thumb{background-color:#00000005}@supports (color:color-mix(in lab, red, red)){.thumb{background-color:color-mix(in oklab, var(--color-black) 2%, transparent)}}.thumb{object-fit:contain;vertical-align:middle}.thumb:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-neutral-200);background-color:var(--color-neutral-100)}.thumbs{margin-top:calc(var(--spacing) * 1.5);align-items:center;gap:calc(var(--spacing) * 1.5);flex-wrap:wrap;display:flex}.help code{background-color:var(--color-neutral-100);padding-inline:var(--spacing);font-family:var(--font-mono);color:var(--color-neutral-700);border-radius:.25rem;padding-block:1px;font-size:11.5px}.help a{color:var(--color-indigo-600);text-decoration-line:underline}.help em{font-style:italic}.md{color:var(--tw-prose-body);max-width:65ch}.md :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.md :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.md :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.md :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.md :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.md :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.md :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.md :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.md :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.md :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.md :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.md :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.md :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.md :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.md :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.md :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.md :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.md :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.md :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.md :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.md :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.md :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.md :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.md :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.md :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.md :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.md :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.md :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.md :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.md :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.md :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.md :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.md :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.md :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.md :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.md :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.md :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.md :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.md :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.md :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.md :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.md :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.md :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.md :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.md :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.md :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.md :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.md :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.md :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.md :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.md :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.md :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.md :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.md :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.md :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.md :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.md :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.md :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.md :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.md :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.md :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.md :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.md{--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75}.md :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.md :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.md :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.md :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.md :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.md :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.md :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.md :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.md :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.md :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.md :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.md :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.md :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.md :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.md :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.md :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.md :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.md :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.md :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.md :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.md :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.md :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.md :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.md :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.md{--tw-prose-body:var(--color-neutral-900);--tw-prose-headings:var(--color-neutral-900);--tw-prose-lead:oklch(43.9% 0 none);--tw-prose-links:var(--color-neutral-900);--tw-prose-bold:var(--color-neutral-900);--tw-prose-counters:oklch(55.6% 0 none);--tw-prose-bullets:oklch(87% 0 none);--tw-prose-hr:oklch(92.2% 0 none);--tw-prose-quotes:var(--color-neutral-900);--tw-prose-quote-borders:oklch(92.2% 0 none);--tw-prose-captions:oklch(55.6% 0 none);--tw-prose-kbd:var(--color-neutral-900);--tw-prose-kbd-shadows:#1717171a;--tw-prose-code:oklch(20.5% 0 none);--tw-prose-pre-code:oklch(92.2% 0 none);--tw-prose-pre-bg:oklch(26.9% 0 none);--tw-prose-th-borders:oklch(87% 0 none);--tw-prose-td-borders:oklch(92.2% 0 none);--tw-prose-invert-body:oklch(87% 0 none);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.8% 0 none);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.8% 0 none);--tw-prose-invert-bullets:oklch(43.9% 0 none);--tw-prose-invert-hr:oklch(37.1% 0 none);--tw-prose-invert-quotes:oklch(97% 0 none);--tw-prose-invert-quote-borders:oklch(37.1% 0 none);--tw-prose-invert-captions:oklch(70.8% 0 none);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87% 0 none);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(43.9% 0 none);--tw-prose-invert-td-borders:oklch(37.1% 0 none);max-width:none;font-size:inherit;line-height:inherit}@supports (color:color-mix(in lab, red, red)){.md{--tw-prose-kbd-shadows:color-mix(in oklab, var(--color-neutral-900) 10%, transparent)}}.md{--tw-prose-code:var(--color-neutral-900);--tw-prose-counters:var(--color-neutral-500);--tw-prose-captions:var(--color-neutral-500);--tw-prose-bullets:var(--color-neutral-300);--tw-prose-th-borders:var(--color-neutral-300);--tw-prose-hr:var(--color-neutral-200);--tw-prose-quote-borders:var(--color-neutral-200);--tw-prose-td-borders:var(--color-neutral-200)}.md p,.md ul,.md ol,.md pre,.md blockquote,.md table{margin-block:.5em}.md li{margin-block:.1em}.md li>p,.md :is(ul,ol) :is(ul,ol){margin-block:.2em}.md :first-child{margin-top:0}.md>:first-child:not(p,h1,h2,h3,h4,h5,h6){clear:left}.md :last-child{margin-bottom:0}.md :is(h1,h2,h3,h4,h5,h6){margin-block:.8em .2em;font-size:1em;font-weight:600;line-height:1.3}.md h1{font-size:1.22em}.md h2{font-size:1.12em}.md hr{margin-block:.9em}.md table{overscroll-behavior-x:contain;width:max-content;max-width:100%;display:block;overflow-x:auto}.md pre{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:#0000000f;overflow-x:hidden}@supports (color:color-mix(in lab, red, red)){.md pre{border-color:color-mix(in oklab, var(--color-black) 6%, transparent)}}.md pre{background-color:#00000006}@supports (color:color-mix(in lab, red, red)){.md pre{background-color:color-mix(in oklab, var(--color-black) 2.5%, transparent)}}.md pre{padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);white-space:pre-wrap;font-size:13px}.md pre:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-neutral-200);background-color:var(--color-neutral-100)}.md pre{overflow-wrap:anywhere;color:var(--color-neutral-800)}.md pre code{white-space:inherit;overflow-wrap:inherit}.md :not(pre)>code{background-color:#0000000e;border-radius:.25rem}@supports (color:color-mix(in lab, red, red)){.md :not(pre)>code{background-color:color-mix(in oklab, var(--color-black) 5.5%, transparent)}}.md :not(pre)>code{padding-inline:var(--spacing);--tw-font-weight:var(--font-weight-normal);font-size:.9em;font-weight:var(--font-weight-normal);color:var(--color-neutral-800);padding-block:1px}.md :not(pre)>code:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-neutral-100)}.md :not(pre)>code:before,.md :not(pre)>code:after{content:none}.hljs-comment,.hljs-quote{color:var(--color-neutral-400);font-style:italic}.hljs-keyword,.hljs-literal,.hljs-selector-tag,.hljs-type{color:var(--color-violet-700)}.hljs-string,.hljs-regexp,.hljs-addition{color:var(--color-emerald-700)}.hljs-number,.hljs-symbol,.hljs-attr,.hljs-attribute,.hljs-meta{color:var(--color-amber-700)}.hljs-title,.hljs-section,.hljs-name{color:var(--color-blue-700)}.hljs-built_in,.hljs-variable,.hljs-template-variable{color:var(--color-cyan-700)}.hljs-deletion{color:var(--color-red-600)}.hljs-emphasis{font-style:italic}.hljs-strong{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-2{inset-inline:calc(var(--spacing) * 2)}.inset-y-0{inset-block:0}.-top-0\.5{top:calc(var(--spacing) * -.5)}.-top-1\.5{top:calc(var(--spacing) * -1.5)}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.-right-1\.5{right:calc(var(--spacing) * -1.5)}.right-0{right:0}.right-1\.5{right:calc(var(--spacing) * 1.5)}.right-2{right:calc(var(--spacing) * 2)}.bottom-2{bottom:calc(var(--spacing) * 2)}.left-0{left:0}.left-2{left:calc(var(--spacing) * 2)}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.float-left{float:left}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-4{margin:calc(var(--spacing) * 4)}.m-auto{margin:auto}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.my-1\.5{margin-block:calc(var(--spacing) * 1.5)}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.prose{--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-\[3px\]{margin-top:3px}.mt-\[12vh\]{margin-top:12vh}.mr-auto{margin-right:auto}.mb-1{margin-bottom:var(--spacing)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-auto{margin-bottom:auto}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-0{height:0}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-24{height:calc(var(--spacing) * 24)}.h-72{height:calc(var(--spacing) * 72)}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[6rem\]{max-height:6rem}.max-h-\[60vh\]{max-height:60vh}.max-h-\[65vh\]{max-height:65vh}.max-h-\[70dvh\]{max-height:70dvh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[88vh\]{max-height:88vh}.max-h-\[92vh\]{max-height:92vh}.max-h-\[min\(18rem\,40dvh\)\]{max-height:min(18rem,40dvh)}.min-h-0{min-height:0}.min-h-10{min-height:calc(var(--spacing) * 10)}.\!w-48{width:calc(var(--spacing) * 48)!important}.\!w-auto{width:auto!important}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/3{width:33.3333%}.w-2{width:calc(var(--spacing) * 2)}.w-2\/3{width:66.6667%}.w-2\/5{width:40%}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/5{width:60%}.w-4{width:calc(var(--spacing) * 4)}.w-4\/5{width:80%}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-10{width:calc(var(--spacing) * 10)}.w-44{width:calc(var(--spacing) * 44)}.w-52{width:calc(var(--spacing) * 52)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-\[6rem\]{width:6rem}.w-\[10\%\]{width:10%}.w-\[17\%\]{width:17%}.w-\[23\%\]{width:23%}.w-\[35rem\]{width:35rem}.w-\[38\%\]{width:38%}.w-\[38\.75rem\]{width:38.75rem}.w-\[38rem\]{width:38rem}.w-\[42\%\]{width:42%}.w-\[45rem\]{width:45rem}.w-\[50\%\]{width:50%}.w-\[min\(24rem\,92vw\)\]{width:min(24rem,92vw)}.w-\[min\(27rem\,calc\(100vw-3rem\)\)\]{width:min(27rem,100vw - 3rem)}.w-\[min\(32rem\,92vw\)\]{width:min(32rem,92vw)}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-48{max-width:calc(var(--spacing) * 48)}.max-w-52{max-width:calc(var(--spacing) * 52)}.max-w-72{max-width:calc(var(--spacing) * 72)}.max-w-80{max-width:calc(var(--spacing) * 80)}.max-w-96{max-width:calc(var(--spacing) * 96)}.max-w-\[45\%\]{max-width:45%}.max-w-\[90vw\]{max-width:90vw}.max-w-\[92vw\]{max-width:92vw}.max-w-\[94vw\]{max-width:94vw}.max-w-\[min\(42rem\,calc\(100vw-1rem\)\)\]{max-width:min(42rem,100vw - 1rem)}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-3\.5{min-width:calc(var(--spacing) * 3.5)}.min-w-32{min-width:calc(var(--spacing) * 32)}.min-w-52{min-width:calc(var(--spacing) * 52)}.min-w-\[6\.5rem\]{min-width:6.5rem}.flex-1{flex:1}.flex-none{flex:none}.grow{flex-grow:1}.basis-0{flex-basis:0}.table-fixed{table-layout:fixed}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.cursor-zoom-out{cursor:zoom-out}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-decimal{list-style-type:decimal}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[6rem_minmax\(0\,1fr\)\]{grid-template-columns:6rem minmax(0,1fr)}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-cols-\[auto_minmax\(0\,1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[minmax\(8rem\,1fr\)_minmax\(8rem\,auto\)_minmax\(9rem\,auto\)\]{grid-template-columns:minmax(8rem,1fr) minmax(8rem,auto) minmax(9rem,auto)}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-1{row-gap:var(--spacing)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3\.5{row-gap:calc(var(--spacing) * 3.5)}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-neutral-100>:not(:last-child)){border-color:var(--color-neutral-100)}:where(.divide-neutral-200>:not(:last-child)){border-color:var(--color-neutral-200)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-solid{--tw-border-style:solid;border-style:solid}.border-amber-500{border-color:var(--color-amber-500)}.border-black\/5{border-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.border-black\/5{border-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.border-black\/10{border-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.border-black\/10{border-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.border-black\/\[0\.06\]{border-color:#0000000f}@supports (color:color-mix(in lab, red, red)){.border-black\/\[0\.06\]{border-color:color-mix(in oklab, var(--color-black) 6%, transparent)}}.border-black\/\[0\.08\]{border-color:#00000014}@supports (color:color-mix(in lab, red, red)){.border-black\/\[0\.08\]{border-color:color-mix(in oklab, var(--color-black) 8%, transparent)}}.border-cyan-500{border-color:var(--color-cyan-500)}.border-indigo-200{border-color:var(--color-indigo-200)}.border-indigo-300{border-color:var(--color-indigo-300)}.border-indigo-400{border-color:var(--color-indigo-400)}.border-indigo-500{border-color:var(--color-indigo-500)}.border-neutral-100{border-color:var(--color-neutral-100)}.border-neutral-200{border-color:var(--color-neutral-200)}.border-neutral-200\/70{border-color:#e5e5e5b3}@supports (color:color-mix(in lab, red, red)){.border-neutral-200\/70{border-color:color-mix(in oklab, var(--color-neutral-200) 70%, transparent)}}.border-neutral-300{border-color:var(--color-neutral-300)}.border-neutral-400{border-color:var(--color-neutral-400)}.border-red-200{border-color:var(--color-red-200)}.border-transparent{border-color:#0000}.border-l-amber-400{border-left-color:var(--color-amber-400)}.border-l-cyan-500{border-left-color:var(--color-cyan-500)}.border-l-fuchsia-500{border-left-color:var(--color-fuchsia-500)}.border-l-green-500{border-left-color:var(--color-green-500)}.border-l-indigo-500{border-left-color:var(--color-indigo-500)}.border-l-neutral-300{border-left-color:var(--color-neutral-300)}.border-l-red-400{border-left-color:var(--color-red-400)}.border-l-red-500{border-left-color:var(--color-red-500)}.border-l-transparent{border-left-color:#0000}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-100\/80{background-color:#fef3c6cc}@supports (color:color-mix(in lab, red, red)){.bg-amber-100\/80{background-color:color-mix(in oklab, var(--color-amber-100) 80%, transparent)}}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-black\/25{background-color:#00000040}@supports (color:color-mix(in lab, red, red)){.bg-black\/25{background-color:color-mix(in oklab, var(--color-black) 25%, transparent)}}.bg-black\/\[0\.04\]{background-color:#0000000a}@supports (color:color-mix(in lab, red, red)){.bg-black\/\[0\.04\]{background-color:color-mix(in oklab, var(--color-black) 4%, transparent)}}.bg-black\/\[0\.05\]{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.bg-black\/\[0\.05\]{background-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.bg-black\/\[0\.025\]{background-color:#00000006}@supports (color:color-mix(in lab, red, red)){.bg-black\/\[0\.025\]{background-color:color-mix(in oklab, var(--color-black) 2.5%, transparent)}}.bg-cyan-50{background-color:var(--color-cyan-50)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-200\/80{background-color:#a4f4cfcc}@supports (color:color-mix(in lab, red, red)){.bg-emerald-200\/80{background-color:color-mix(in oklab, var(--color-emerald-200) 80%, transparent)}}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-fuchsia-50\/70{background-color:#fdf4ffb3}@supports (color:color-mix(in lab, red, red)){.bg-fuchsia-50\/70{background-color:color-mix(in oklab, var(--color-fuchsia-50) 70%, transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-neutral-50{background-color:var(--color-neutral-50)}.bg-neutral-50\/60{background-color:#fafafa99}@supports (color:color-mix(in lab, red, red)){.bg-neutral-50\/60{background-color:color-mix(in oklab, var(--color-neutral-50) 60%, transparent)}}.bg-neutral-50\/70{background-color:#fafafab3}@supports (color:color-mix(in lab, red, red)){.bg-neutral-50\/70{background-color:color-mix(in oklab, var(--color-neutral-50) 70%, transparent)}}.bg-neutral-100{background-color:var(--color-neutral-100)}.bg-neutral-200\/70{background-color:#e5e5e5b3}@supports (color:color-mix(in lab, red, red)){.bg-neutral-200\/70{background-color:color-mix(in oklab, var(--color-neutral-200) 70%, transparent)}}.bg-neutral-300{background-color:var(--color-neutral-300)}.bg-neutral-700{background-color:var(--color-neutral-700)}.bg-neutral-800{background-color:var(--color-neutral-800)}.bg-neutral-800\/95{background-color:#262626f2}@supports (color:color-mix(in lab, red, red)){.bg-neutral-800\/95{background-color:color-mix(in oklab, var(--color-neutral-800) 95%, transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-200\/70{background-color:#ffcacab3}@supports (color:color-mix(in lab, red, red)){.bg-red-200\/70{background-color:color-mix(in oklab, var(--color-red-200) 70%, transparent)}}.bg-red-400{background-color:var(--color-red-400)}.bg-sky-50{background-color:var(--color-sky-50)}.bg-sky-500{background-color:var(--color-sky-500)}.bg-transparent{background-color:#0000}.bg-violet-50{background-color:var(--color-violet-50)}.bg-white{background-color:var(--color-white)}.bg-white\/15{background-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.bg-white\/15{background-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.bg-white\/85{background-color:#ffffffd9}@supports (color:color-mix(in lab, red, red)){.bg-white\/85{background-color:color-mix(in oklab, var(--color-white) 85%, transparent)}}.object-contain{object-fit:contain}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-px{padding-block:1px}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-px{padding-top:1px}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-\[calc\(0\.25rem\+env\(safe-area-inset-bottom\)\)\]{padding-bottom:calc(.25rem + env(safe-area-inset-bottom))}.pl-1{padding-left:var(--spacing)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-\[9px\]{font-size:9px}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13\.5px\]{font-size:13.5px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[20px\]{font-size:20px}.leading-\[1\.5\]{--tw-leading:1.5;line-height:1.5}.leading-\[1\.35\]{--tw-leading:1.35;line-height:1.35}.leading-\[1\.45\]{--tw-leading:1.45;line-height:1.45}.leading-\[1\.55\]{--tw-leading:1.55;line-height:1.55}.leading-\[15px\]{--tw-leading:15px;line-height:15px}.leading-\[18px\]{--tw-leading:18px;line-height:18px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.\!whitespace-normal{white-space:normal!important}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-cyan-700{color:var(--color-cyan-700)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-fuchsia-700{color:var(--color-fuchsia-700)}.text-green-700{color:var(--color-green-700)}.text-indigo-500{color:var(--color-indigo-500)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-indigo-800{color:var(--color-indigo-800)}.text-neutral-100{color:var(--color-neutral-100)}.text-neutral-300{color:var(--color-neutral-300)}.text-neutral-400{color:var(--color-neutral-400)}.text-neutral-500{color:var(--color-neutral-500)}.text-neutral-600{color:var(--color-neutral-600)}.text-neutral-700{color:var(--color-neutral-700)}.text-neutral-800{color:var(--color-neutral-800)}.text-neutral-900{color:var(--color-neutral-900)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-sky-700{color:var(--color-sky-700)}.text-violet-700{color:var(--color-violet-700)}.text-white{color:var(--color-white)}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.shadow-2xs{--tw-shadow:0 1px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[inset_0_-1px_0_var\(--color-neutral-200\)\]{--tw-shadow:inset 0 -1px 0 var(--tw-shadow-color,var(--color-neutral-200));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-amber-200{--tw-ring-color:var(--color-amber-200)}.ring-emerald-200{--tw-ring-color:var(--color-emerald-200)}.ring-emerald-600\/20{--tw-ring-color:#00976733}@supports (color:color-mix(in lab, red, red)){.ring-emerald-600\/20{--tw-ring-color:color-mix(in oklab, var(--color-emerald-600) 20%, transparent)}}.ring-indigo-200\/70{--tw-ring-color:#c7d2ffb3}@supports (color:color-mix(in lab, red, red)){.ring-indigo-200\/70{--tw-ring-color:color-mix(in oklab, var(--color-indigo-200) 70%, transparent)}}.ring-neutral-200{--tw-ring-color:var(--color-neutral-200)}.ring-red-200{--tw-ring-color:var(--color-red-200)}.ring-sky-200{--tw-ring-color:var(--color-sky-200)}.ring-violet-200{--tw-ring-color:var(--color-violet-200)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:block:is(:where(.group):hover *){display:block}.group-hover\:flex:is(:where(.group):hover *){display:flex}.group-hover\:hidden:is(:where(.group):hover *){display:none}.group-hover\:border-indigo-400:is(:where(.group):hover *){border-color:var(--color-indigo-400)}.group-hover\:text-indigo-500:is(:where(.group):hover *){color:var(--color-indigo-500)}.group-hover\:opacity-100:is(:where(.group):hover *),.group-hover\/code\:opacity-100:is(:where(.group\/code):hover *),.group-hover\/row\:opacity-100:is(:where(.group\/row):hover *){opacity:1}}.peer-checked\:bg-indigo-600:is(:where(.peer):checked~*){background-color:var(--color-indigo-600)}.peer-focus-visible\:ring-2:is(:where(.peer):focus-visible~*){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.peer-focus-visible\:ring-indigo-200:is(:where(.peer):focus-visible~*){--tw-ring-color:var(--color-indigo-200)}.marker\:text-neutral-400 ::marker{color:var(--color-neutral-400)}.marker\:text-neutral-400::marker{color:var(--color-neutral-400)}.marker\:text-neutral-400 ::-webkit-details-marker{color:var(--color-neutral-400)}.marker\:text-neutral-400::-webkit-details-marker{color:var(--color-neutral-400)}.placeholder\:text-neutral-400::placeholder{color:var(--color-neutral-400)}.backdrop\:bg-black\/20::backdrop{background-color:#0003}@supports (color:color-mix(in lab, red, red)){.backdrop\:bg-black\/20::backdrop{background-color:color-mix(in oklab, var(--color-black) 20%, transparent)}}.backdrop\:bg-black\/30::backdrop{background-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.backdrop\:bg-black\/30::backdrop{background-color:color-mix(in oklab, var(--color-black) 30%, transparent)}}.backdrop\:bg-black\/40::backdrop{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.backdrop\:bg-black\/40::backdrop{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.backdrop\:bg-black\/70::backdrop{background-color:#000000b3}@supports (color:color-mix(in lab, red, red)){.backdrop\:bg-black\/70::backdrop{background-color:color-mix(in oklab, var(--color-black) 70%, transparent)}}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:top-0\.5:after{content:var(--tw-content);top:calc(var(--spacing) * .5)}.after\:left-0\.5:after{content:var(--tw-content);left:calc(var(--spacing) * .5)}.after\:h-3:after{content:var(--tw-content);height:calc(var(--spacing) * 3)}.after\:w-3:after{content:var(--tw-content);width:calc(var(--spacing) * 3)}.after\:rounded-full:after{content:var(--tw-content);border-radius:2147483647px}.after\:bg-white:after{content:var(--tw-content);background-color:var(--color-white)}.after\:shadow-sm:after{content:var(--tw-content);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.after\:transition-transform:after{content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.peer-checked\:after\:translate-x-3:is(:where(.peer):checked~*):after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing) * 3);translate:var(--tw-translate-x) var(--tw-translate-y)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.open\:float-none:is([open],:popover-open,:open){float:none}.open\:mt-0:is([open],:popover-open,:open){margin-top:0}.open\:mb-1\.5:is([open],:popover-open,:open){margin-bottom:calc(var(--spacing) * 1.5)}.open\:min-w-0:is([open],:popover-open,:open){min-width:0}.open\:border:is([open],:popover-open,:open){border-style:var(--tw-border-style);border-width:1px}.open\:border-black\/\[0\.06\]:is([open],:popover-open,:open){border-color:#0000000f}@supports (color:color-mix(in lab, red, red)){.open\:border-black\/\[0\.06\]:is([open],:popover-open,:open){border-color:color-mix(in oklab, var(--color-black) 6%, transparent)}}.open\:bg-amber-50:is([open],:popover-open,:open){background-color:var(--color-amber-50)}.open\:bg-black\/\[0\.02\]:is([open],:popover-open,:open){background-color:#00000005}@supports (color:color-mix(in lab, red, red)){.open\:bg-black\/\[0\.02\]:is([open],:popover-open,:open){background-color:color-mix(in oklab, var(--color-black) 2%, transparent)}}.open\:bg-green-50:is([open],:popover-open,:open){background-color:var(--color-green-50)}.open\:bg-red-50:is([open],:popover-open,:open){background-color:var(--color-red-50)}.open\:px-2:is([open],:popover-open,:open){padding-inline:calc(var(--spacing) * 2)}.open\:py-1\.5:is([open],:popover-open,:open){padding-block:calc(var(--spacing) * 1.5)}.open\:pr-0:is([open],:popover-open,:open){padding-right:0}.open\:text-neutral-500:is([open],:popover-open,:open){color:var(--color-neutral-500)}.focus-within\:border-indigo-400:focus-within{border-color:var(--color-indigo-400)}.focus-within\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\:ring-indigo-100:focus-within{--tw-ring-color:var(--color-indigo-100)}@media (hover:hover){.hover\:border-indigo-300:hover{border-color:var(--color-indigo-300)}.hover\:bg-amber-100:hover{background-color:var(--color-amber-100)}.hover\:bg-amber-200:hover{background-color:var(--color-amber-200)}.hover\:bg-black\/\[0\.03\]:hover{background-color:#00000008}@supports (color:color-mix(in lab, red, red)){.hover\:bg-black\/\[0\.03\]:hover{background-color:color-mix(in oklab, var(--color-black) 3%, transparent)}}.hover\:bg-emerald-100:hover{background-color:var(--color-emerald-100)}.hover\:bg-indigo-50:hover{background-color:var(--color-indigo-50)}.hover\:bg-indigo-100:hover{background-color:var(--color-indigo-100)}.hover\:bg-indigo-500:hover{background-color:var(--color-indigo-500)}.hover\:bg-neutral-50:hover{background-color:var(--color-neutral-50)}.hover\:bg-neutral-100:hover{background-color:var(--color-neutral-100)}.hover\:bg-neutral-200:hover{background-color:var(--color-neutral-200)}.hover\:bg-red-100:hover{background-color:var(--color-red-100)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:text-amber-500:hover{color:var(--color-amber-500)}.hover\:text-indigo-600:hover{color:var(--color-indigo-600)}.hover\:text-indigo-700:hover{color:var(--color-indigo-700)}.hover\:text-neutral-600:hover{color:var(--color-neutral-600)}.hover\:text-neutral-700:hover{color:var(--color-neutral-700)}.hover\:text-neutral-800:hover{color:var(--color-neutral-800)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:border-indigo-400:focus{border-color:var(--color-indigo-400)}.focus\:opacity-100:focus{opacity:1}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-indigo-100:focus{--tw-ring-color:var(--color-indigo-100)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:bg-amber-200:active{background-color:var(--color-amber-200)}.active\:bg-amber-300:active{background-color:var(--color-amber-300)}.active\:bg-indigo-700:active{background-color:var(--color-indigo-700)}.active\:bg-neutral-100:active{background-color:var(--color-neutral-100)}.active\:bg-neutral-200:active{background-color:var(--color-neutral-200)}.disabled\:cursor-default:disabled{cursor:default}.disabled\:opacity-40:disabled{opacity:.4}@media not all and (width>=48rem){.max-md\:hidden{display:none}.max-md\:h-2\/5{height:40%}.max-md\:max-h-48{max-height:calc(var(--spacing) * 48)}.max-md\:\!w-full{width:100%!important}.max-md\:w-full{width:100%}.max-md\:flex-col{flex-direction:column}.max-md\:flex-wrap{flex-wrap:wrap}.max-md\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.max-md\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}}@media not all and (width>=40rem){.max-sm\:grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}}@media (width>=40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=48rem){.md\:order-1{order:1}.md\:order-2{order:2}.md\:order-3{order:3}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-3{grid-column:span 3/span 3}.md\:flex{display:flex}.md\:hidden{display:none}.md\:table-cell{display:table-cell}.md\:w-\[14\%\]{width:14%}.md\:w-\[24\%\]{width:24%}.md\:w-\[34\%\]{width:34%}.md\:grid-cols-\[6\.25rem_6\.25rem_minmax\(0\,1fr\)\]{grid-template-columns:6.25rem 6.25rem minmax(0,1fr)}.md\:grid-cols-\[7\.5rem_minmax\(0\,1fr\)_7\.5rem_6\.25rem\]{grid-template-columns:7.5rem minmax(0,1fr) 7.5rem 6.25rem}.md\:grid-cols-\[9\.375rem_minmax\(0\,1fr\)\]{grid-template-columns:9.375rem minmax(0,1fr)}.md\:grid-cols-\[14\.5rem_minmax\(0\,1fr\)\]{grid-template-columns:14.5rem minmax(0,1fr)}.md\:grid-cols-\[minmax\(0\,1fr\)_12rem_5rem\]{grid-template-columns:minmax(0,1fr) 12rem 5rem}}.dark\:border-neutral-200:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-neutral-200)}.dark\:bg-neutral-50:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-neutral-50)}.dark\:bg-neutral-100:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-neutral-100)}.dark\:bg-neutral-200:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-neutral-200)}.dark\:text-neutral-50:where([data-theme=dark],[data-theme=dark] *){color:var(--color-neutral-50)}.dark\:open\:border-neutral-200:where([data-theme=dark],[data-theme=dark] *):is([open],:popover-open,:open){border-color:var(--color-neutral-200)}.dark\:open\:bg-neutral-100:where([data-theme=dark],[data-theme=dark] *):is([open],:popover-open,:open){background-color:var(--color-neutral-100)}@media (hover:hover){.dark\:hover\:bg-neutral-100:where([data-theme=dark],[data-theme=dark] *):hover{background-color:var(--color-neutral-100)}}@media (pointer:coarse){.pointer-coarse\:block{display:block}.pointer-coarse\:flex{display:flex}.pointer-coarse\:py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.pointer-coarse\:opacity-100{opacity:1}}}html[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background-color:var(--color-white);--color-white:oklch(22.5% 0 none);--color-neutral-50:oklch(19% 0 none);--color-neutral-100:oklch(27.5% 0 none);--color-neutral-200:oklch(32.5% 0 none);--color-neutral-300:oklch(39% 0 none);--color-neutral-400:oklch(62% 0 none);--color-neutral-500:oklch(70% 0 none);--color-neutral-600:oklch(78% 0 none);--color-neutral-700:oklch(85% 0 none);--color-neutral-800:oklch(90% 0 none);--color-neutral-900:oklch(94% 0 none);--color-neutral-950:oklch(97% 0 none);--color-indigo-50:oklch(24.5% .028 272.314);--color-indigo-100:oklch(32% .065 272.788);--color-indigo-200:oklch(40% .09 274.039);--color-indigo-300:oklch(50% .125 274.713);--color-indigo-400:oklch(62% .155 276.935);--color-indigo-500:oklch(68% .165 277.117);--color-indigo-600:oklch(70% .175 276.966);--color-indigo-700:oklch(80% .115 277.023);--color-indigo-800:oklch(86% .08 277.366);--color-red-50:oklch(24.5% .028 17.38);--color-red-100:oklch(32% .065 17.717);--color-red-200:oklch(40% .09 18.334);--color-red-400:oklch(62% .155 22.216);--color-red-600:oklch(73% .145 27.325);--color-red-700:oklch(80% .115 27.518);--color-amber-50:oklch(24.5% .028 95.277);--color-amber-100:oklch(32% .065 95.617);--color-amber-200:oklch(40% .09 95.746);--color-amber-300:oklch(50% .125 91.605);--color-amber-400:oklch(62% .155 84.429);--color-amber-500:oklch(68% .165 70.08);--color-amber-600:oklch(73% .145 58.318);--color-amber-700:oklch(80% .115 48.998);--color-amber-800:oklch(86% .08 46.201);--color-emerald-50:oklch(24.5% .028 166.113);--color-emerald-100:oklch(32% .065 163.051);--color-emerald-200:oklch(40% .09 164.15);--color-emerald-400:oklch(62% .155 163.223);--color-emerald-500:oklch(68% .165 162.48);--color-emerald-600:oklch(73% .145 163.225);--color-emerald-700:oklch(80% .115 165.612);--color-green-50:oklch(24.5% .028 155.826);--color-green-200:oklch(40% .09 155.995);--color-green-500:oklch(68% .165 149.579);--color-green-700:oklch(80% .115 150.069);--color-green-800:oklch(86% .08 151.328);--color-cyan-50:oklch(24.5% .028 200.873);--color-cyan-100:oklch(32% .065 203.388);--color-cyan-200:oklch(40% .09 205.041);--color-cyan-400:oklch(62% .155 211.53);--color-cyan-500:oklch(68% .165 215.221);--color-cyan-700:oklch(80% .115 223.128);--color-cyan-800:oklch(86% .08 224.283);--color-sky-50:oklch(24.5% .028 236.62);--color-sky-200:oklch(40% .09 230.902);--color-sky-500:oklch(68% .165 237.323);--color-sky-700:oklch(80% .115 242.749);--color-fuchsia-50:oklch(24.5% .028 320.058);--color-fuchsia-500:oklch(68% .165 322.15);--color-fuchsia-700:oklch(80% .115 323.949);--color-violet-50:oklch(24.5% .028 293.756);--color-violet-200:oklch(40% .09 293.283);--color-violet-700:oklch(80% .115 292.581);--color-blue-700:oklch(80% .115 264.376)}html{font-size:112.5%}.text-\[9px\]{font-size:.5625rem}.text-\[10px\]{font-size:.625rem}.text-\[10\.5px\]{font-size:.65625rem}.text-\[11px\]{font-size:.6875rem}.text-\[11\.5px\]{font-size:.71875rem}.text-\[12px\]{font-size:.75rem}.text-\[12\.5px\]{font-size:.78125rem}.text-\[13px\]{font-size:.8125rem}.text-\[13\.5px\]{font-size:.84375rem}.text-\[14px\]{font-size:.875rem}.text-\[15px\]{font-size:.9375rem}.text-\[16px\]{font-size:1rem}.text-\[17px\]{font-size:1.0625rem}.text-\[20px\]{font-size:1.25rem}.thumbs>*{margin:0}@media (width>=48rem){body[data-rail=closed]{grid-template-columns:minmax(0,1fr)}body[data-rail=closed] #sidebar{display:none}#rail-toggle{left:12.375rem}body[data-rail=closed] #rail-toggle{left:.375rem}body[data-rail=closed] #rail-toggle svg{transform:rotate(180deg)}body:not([data-rail=closed]) #rail-toggle .attention{display:none}body[data-rail=closed] :is(#chat-header,main>section>header:first-child,main>section>div:first-child>header:first-child){padding-left:2.75rem}}@media not all and (width>=48rem){#sidebar{z-index:40;inset-block:0;width:19rem;transition:transform .18s ease-out;position:fixed;left:0;transform:translate(-100%);box-shadow:0 8px 30px #0000002e}#sidebar[data-open]{transform:translate(0)}#sidebar,#console-section ul,#project-tree{font-size:.9375rem}body{overscroll-behavior:none}#composer,#project-tree{padding-bottom:calc(.5rem + env(safe-area-inset-bottom))}body[data-kb] #composer{padding-bottom:.5rem}main,#sidebar{padding-top:env(safe-area-inset-top)}#project-tree li,#project-tree summary,#console-section li button{padding-block:.5rem}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/tasks-DQnZGbBg.js","assets/task-runs-CJz8WLzY.js","assets/runs-C7BNc137.js","assets/explorer-De8NHWLj.js","assets/code-D1-CYID1.js","assets/settings-BcWcHc7F.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/tasks-CcAxbMR8.js","assets/task-runs-DIlw1pXt.js","assets/runs-BuE-mags.js","assets/explorer-C1KiLceA.js","assets/code-pUOkepAa.js","assets/settings-5KvCAMBF.js"])))=>i.map(i=>d[i]);
2
2
  (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=/[\u201c\u201d"\u2018\u2019'()\uff08\uff09\u300c\u300d\u300e\u300f\u3010\u3011\u300a\u300b\u3008\u3009[\]]/;function t(t){let n=[],r=e=>`\uE010${n.push(e)-1}\uE011`,i=t.replace(/```[\s\S]*?```/g,e=>r(e)).replace(/`[^`\n]+`/g,e=>r(e));return i=i.replace(/\*\*(\S|\S[\s\S]*?\S)\*\*/g,(t,n)=>{let r=``,i=``,a=n;for(;a.length>1&&e.test(a[0]);)r+=a[0],a=a.slice(1);for(;a.length>1&&e.test(a.at(-1));)i=a.at(-1)+i,a=a.slice(0,-1);return r||i?`${r}**${a}**${i}`:t}),i.replace(/\uE010(\d+)\uE011/g,(e,t)=>n[Number(t)]??``)}var n=e=>!e.text.trim()&&e.suggestions.length===0,r=e=>e===`xhigh`?`Extra high`:e[0].toUpperCase()+e.slice(1),i=e=>{if(e<1e3)return String(e);let t=e/1e3;return t>=9.95?`${Math.round(t)}K`:`${t.toFixed(1)}K`},a=/(?:^|\n)[ \t]*-{3,}[ \t]*\r?\n((?:[ \t]*\[[^\]\r\n]+\][ \t]*(?:[||][ \t]*)?)+)\s*$/,o=/\[([^\]\r\n]+)\]/g,s=5,c=/<silent>([\s\S]*?)<\/silent>/gi;function l(e){let t=[...e.matchAll(c)].map(e=>(e[1]??``).trim()).filter(Boolean);return t.length?t.join(` · `):void 0}function u(e,t){let n=d(e),r=l(e),i=a.exec(n);if(!i?.[1])return{text:n,suggestions:[],meta:t,silence:r};let c=[...i[1].matchAll(o)].map(e=>(e[1]??``).trim()).filter(Boolean).slice(0,s);return c.length?{text:n.slice(0,i.index).trimEnd(),suggestions:c,meta:t,silence:r}:{text:n,suggestions:[],meta:t,silence:r}}var d=e=>t(e.replace(c,``).trim()),ee=/^(?:\s|[-*+>]|\d+[.)])/;function f(e,t=0){let n=e.lastIndexOf(`
3
3
  `)+1,r=``,i=!1,a=t,o=-1,s=``;for(let c=t;c<n;){let t=e.indexOf(`
4
4
  `,c),n=e.slice(c,t);c=t+1;let l=/^\s*(`{3,}|~{3,})(.*)$/.exec(n);if(!r&&!i&&!n.trim()){o<0&&s&&(o=c);continue}!r&&!i&&o>=0&&!(ee.test(s)&&ee.test(n))&&(a=o);let u=l?.[1]??``;if(!r&&u&&!i?r=u:r&&u[0]===r[0]&&u.length>=r.length&&!l?.[2]?.trim()&&(r=``),!r&&(!u||i))for(let e of n.matchAll(/<(\/?)silent>/gi))i=!e[1];o=-1,s=n}return a}var p=/^\[(?:([^\n[\]<>]*)<([^\n[\]<>]+)>)? ?((?:\d{4}-\d{2}-\d{2} )?\d{1,2}:\d{2})?\]\n/;function te(e){let t=p.exec(e);return!t?.[2]&&!t?.[3]?{text:e}:{...t[1]?{name:t[1]}:{},...t[2]?{id:t[2]}:{},...t[3]?{when:t[3]}:{},text:e.slice(t[0].length)}}function ne(e){if(!e)return e;let{text:t}=te(e);return t===e?e:t.replace(/\s+/g,` `).trim()||e}function re(e){let t,n=!1;return()=>(n=!0,t??=(async()=>{for(;n;)n=!1,await e()})().finally(()=>{t=void 0}))}var m=(e,t,n=`POST`)=>fetch(e,{method:n,headers:{"content-type":`application/json`},body:JSON.stringify(t)});async function h(e,t){return(await e.json().catch(()=>({}))).error??`${t} (${e.status})`}async function g(e,t,n){let r;try{r=await fetch(e,n)}catch(e){return{ok:!1,error:`${t}: ${String(e)}`}}if(!r.ok)return{ok:!1,error:await h(r,t)};try{return{ok:!0,value:await r.json()}}catch(e){return{ok:!1,error:`${t}: ${String(e)}`}}}async function ie(e,t,n){let r=await g(e,t,n);if(!r.ok)throw Error(r.error);return r.value}async function ae(e,t,n){try{let r=await fetch(e,{method:t});return r.ok?void 0:await h(r,n)}catch(e){return`${n}: ${String(e)}`}}function oe(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function _(e){if(Array.isArray(e))return e}function se(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t!==0)for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function ce(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
@@ -70,7 +70,7 @@ ${e}</tr>
70
70
  Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+M(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function I(e,t){return Zn.parse(e,t)}I.options=I.setOptions=function(e){return Zn.setOptions(e),I.defaults=Zn.defaults,wt(I.defaults),I},I.getDefaults=St,I.defaults=Ct;function Qn(...e){return Zn.use(...e),I.defaults=Zn.defaults,wt(I.defaults),I}I.use=Qn,I.walkTokens=function(e,t){return Zn.walkTokens(e,t)},I.parseInline=Zn.parseInline,I.Parser=F,I.parser=F.parse,I.Renderer=Jn,I.TextRenderer=Yn,I.Lexer=P,I.lexer=P.lex,I.Tokenizer=qn,I.Hooks=Xn,I.parse=I,I.options,I.setOptions,I.walkTokens,I.parseInline,F.parse,P.lex;var L=e=>{let t=document.querySelector(e);if(!t)throw Error(`missing element: ${e}`);return t};function $n(e){let t=Math.round((Date.now()-e)/6e4);return t<1?`now`:t<60?`${t}m`:t<1440?`${Math.round(t/60)}h`:`${Math.round(t/1440)}d`}var er=e=>{let t=$n(e);return t===`now`?`just now`:`${t} ago`};function R(e,t,...n){let r=document.createElement(e);return t&&(r.className=t),r.append(...n),r}var tr=e=>e.split(`/`).filter(Boolean).pop()??e,nr=e=>`New session in ${tr(e)}`;function rr(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}`} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function ir(e){let t=Math.max(0,Math.round(e/1e3));return t<60?`${t}s`:`${Math.floor(t/60)}m ${t%60}s`}function ar(e,t,n){return{visible:!1,show(n,r){this.visible=!0,e.classList.remove(`hidden`),e.classList.add(`flex`),t(n,r)},hide(){n?.(),this.visible=!1,e.classList.add(`hidden`),e.classList.remove(`flex`)}}}function or(e){let t=R(`span`,`help`);return t.innerHTML=xt.sanitize(I.parseInline(e,{async:!1})),sr(t),t}function sr(e){for(let t of e.querySelectorAll(`a`))(t.getAttribute(`href`)??``).startsWith(`#`)||(t.target=`_blank`,t.rel=`noreferrer`)}async function cr(e){if(navigator.clipboard)return navigator.clipboard.writeText(e);let t=document.createElement(`textarea`);t.value=e,t.className=`fixed opacity-0`,document.body.append(t),t.select();let n=document.execCommand(`copy`);if(t.remove(),!n)throw Error(`clipboard unavailable`)}function lr(e,t){let n=R(`button`,e,`Copy`);n.title=`Copy to clipboard`;let r;return n.onclick=async e=>{e.stopPropagation(),n.textContent=await cr(t()).then(()=>`Copied`,()=>`Failed`),clearTimeout(r),r=setTimeout(()=>n.textContent=`Copy`,1200)},n}function ur(e,t){let n=document.createElement(`details`);n.className=e;let r=R(`summary`,`flex cursor-pointer select-none items-center gap-1.5`);return r.append(R(`span`,`chev`,`▶`),...t),n.append(r),{el:n,summary:r}}var dr=`text-[10.5px] font-semibold uppercase tracking-wide text-neutral-400`,fr=(e,t=!1)=>pr(e,`${t?`btn btn-primary`:`btn`} text-[12.5px]`),pr=(e,t=``)=>{let n=R(`button`,t,e);return n.type=`button`,n},mr=(...e)=>R(`div`,`flex min-h-10 flex-none flex-wrap items-center gap-2 border-b border-neutral-200 px-4 py-2`,...e);function hr(e,t,n){let r=R(`div`,`inline-flex flex-none items-center gap-0.5 rounded-lg bg-neutral-100 p-0.5`);for(let[i,a]of e){let e=a===t,o=pr(i,`cursor-pointer whitespace-nowrap rounded-md px-2.5 py-1 text-[12px] transition-colors ${e?`bg-white font-medium text-neutral-800 shadow-xs`:`text-neutral-500 hover:text-neutral-700`}`);o.setAttribute(`aria-pressed`,String(e)),o.onclick=()=>n(a),r.append(o)}return r}function gr(e,t,n){let r=pr(e,`flex cursor-pointer items-center gap-1.5 rounded-full px-3 py-1 text-[13px] transition-colors ${t?`bg-indigo-50 font-medium text-indigo-700 ring-1 ring-indigo-200/70`:`text-neutral-600 hover:bg-neutral-100`}`);return r.onclick=n,r}function _r(e,t,...n){let r=R(`section`,`rounded-xl border border-neutral-200 bg-white shadow-xs`),i=R(`div`,`rounded-t-xl border-b border-neutral-200/70 bg-neutral-50/70 px-4 py-2.5`);return i.append(R(`h2`,`text-[13px] font-semibold text-neutral-700`,e)),t&&i.append(R(`p`,`mt-0.5 text-[11.5px] leading-snug text-neutral-500`,t)),r.append(i,R(`div`,`flex flex-col gap-4 px-4 py-3.5`,...n)),r}function vr(e,t,n={}){let r=R(`div`,`flex flex-col gap-1.5`),i=R(`div`,`flex items-center gap-1.5`,R(`span`,dr,e));return n.help&&i.append(n.help),r.append(i,t),n.hint&&r.append(R(`span`,`text-[11.5px] leading-snug text-neutral-400`,n.hint)),r}var yr=`w-full rounded-lg border border-neutral-300 bg-white px-2.5 py-1.5 text-[12.5px] transition-colors placeholder:text-neutral-400 focus:border-indigo-400 focus:ring-2 focus:ring-indigo-100 focus:outline-none`,br=(e,t,n,r=!1)=>{let i=document.createElement(`input`);return i.className=r?`${yr} font-mono`:yr,i.value=e,i.placeholder=t,i.oninput=()=>n(i.value),i},xr=(e=``,t=`text`)=>{let n=document.createElement(`input`);return n.type=t,n.className=yr,n.value=e,n},Sr=(e,t)=>{let n=document.createElement(`select`);return n.className=`${yr} select`,n.append(...e.map(([e,t])=>new Option(e,t))),n.value=t,n},Cr=(e=``,t=4)=>{let n=document.createElement(`textarea`);return n.className=`${yr} resize-y font-mono`,n.value=e,n.rows=t,n.spellcheck=!1,n};function wr(e,t,n,r,i){let a=document.createElement(`input`);a.type=`checkbox`,a.className=`peer sr-only`,a.checked=n,a.onchange=()=>r(a.checked);let o=R(`span`,`relative h-4 w-7 flex-none rounded-full bg-neutral-300 transition-colors after:absolute after:left-0.5 after:top-0.5 after:h-3 after:w-3 after:rounded-full after:bg-white after:shadow-sm after:transition-transform peer-checked:bg-indigo-600 peer-checked:after:translate-x-3 peer-focus-visible:ring-2 peer-focus-visible:ring-indigo-200`),s=R(`label`,`flex cursor-pointer gap-2.5 ${e?`items-start`:`items-center`}`);if(s.append(a,o),e){let n=R(`span`,`flex items-center gap-1.5`,R(`span`,`text-[13px] text-neutral-700`,e));i&&n.append(i);let r=R(`span`,`flex min-w-0 flex-col`,n);t&&r.append(R(`span`,`text-[11.5px] leading-snug text-neutral-400`,t)),s.append(r)}return s}var Tr={idle:`text-neutral-400`,saving:`text-neutral-400`,saved:`text-green-700`,failed:`text-red-600`};function Er(e,t,n){e.className=`text-[11.5px] ${Tr[t]}`,e.textContent=n}var Dr=(e,t,n)=>R(`span`,`inline-flex flex-none items-center gap-1 rounded-full px-1.5 py-px text-[10px] font-medium uppercase tracking-wide ring-1 ${t}`,...n?[R(`span`,`inline-block h-1.5 w-1.5 flex-none rounded-full ${n}`)]:[],e),Or=e=>R(`p`,`rounded-lg border border-dashed border-neutral-200 px-3 py-4 text-center text-[12.5px] text-neutral-400`,e);function kr(e,t,n=`left`){let r=R(`span`,`group relative inline-flex`),i=pr(`?`,`flex h-4 w-4 cursor-help items-center justify-center rounded-full border border-neutral-300 text-[9px] font-bold text-neutral-400 transition-colors group-hover:border-indigo-400 group-hover:text-indigo-500`),a=R(`span`,`absolute ${n===`right`?`right-0`:`left-0`} top-full z-20 hidden w-[min(27rem,calc(100vw-3rem))] pt-1.5 group-hover:block`),o=R(`span`,`flex flex-col gap-2 rounded-xl border border-neutral-200 bg-white p-3.5 text-[12px] font-normal normal-case leading-[1.55] tracking-normal text-neutral-600 shadow-xl`);o.append(R(`span`,`text-[12.5px] font-semibold text-neutral-800`,e));let s=R(`ol`,`flex list-decimal flex-col gap-1.5 pl-4`);for(let e of t){let t=R(`li`,`marker:text-neutral-400`);t.append(typeof e==`string`?or(e):e),s.append(t)}return o.append(s),a.append(o),i.onclick=()=>{let e=a.classList.contains(`hidden`);a.classList.toggle(`hidden`,!e),a.classList.toggle(`block`,e),i.classList.toggle(`border-indigo-400`,e),i.classList.toggle(`text-indigo-500`,e)},r.append(i,a),r}var Ar=(e,t)=>R(`span`,`flex flex-col gap-1`,or(e),t),jr=L(`#image-dialog`),Mr=L(`#image-full`),Nr=L(`#image-prev`),Pr=L(`#image-next`),Fr=[],Ir=0;function Lr(e){Fr.length<2||(Ir=(Ir+e+Fr.length)%Fr.length,Mr.src=Fr[Ir])}function Rr(e){let t=e.closest(`[data-gallery]`);Fr=t?[...t.querySelectorAll(`img.thumb`)].map(e=>e.src):[e.src],Ir=Math.max(0,Fr.indexOf(e.src)),Mr.src=e.src;let n=Fr.length<2?`none`:`flex`;Nr.style.display=n,Pr.style.display=n,jr.showModal()}jr.onclick=()=>jr.close();var zr=(e,t)=>{e.onclick=e=>{e.stopPropagation(),Lr(t)}};zr(Nr,-1),zr(Pr,1),jr.onkeydown=e=>{(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&(e.preventDefault(),Lr(e.key===`ArrowLeft`?-1:1))};function Br(e){let t=e.querySelector(`:scope > .thumbs`);if(t)return t;let n=R(`div`,`thumbs`);return e.append(n),n}function Vr(e){let t=document.createElement(`img`);return t.src=e,t.loading=`lazy`,t.className=`thumb`,t.onclick=()=>Rr(t),t}var Hr=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`avif`,`bmp`]),Ur=new Set([`txt`,`md`,`log`,`json`,`csv`,`yaml`,`yml`]),Wr=524288,Gr=L(`#file-dialog`),Kr=L(`#file-name`),qr=L(`#file-text`),Jr=L(`#file-download`);L(`#file-close`).onclick=()=>Gr.close();var Yr=e=>e.split(`.`).pop()?.toLowerCase()??``,Xr=(e,t,n=!1)=>`/api/sessions/${encodeURIComponent(e)}/files?path=${encodeURIComponent(t)}${n?`&download=1`:``}`;function Zr(e,t){return e.replace(/\]\(\s*<?file:\/\/(\/[^)>\s]*)>?\s*\)/g,(e,n)=>{let r=n;try{r=decodeURIComponent(n)}catch{}return`](${Xr(t,r)})`})}var Qr=e=>/^\/api\/sessions\/[^/]+\/files\?/.test(e);function $r(e,t){let n=tr(t)||`file`,r=Xr(e,t);return Hr.has(Yr(n))?ni(r,n):ri(r,n)}function ei(e){return new URLSearchParams(e.slice(e.indexOf(`?`)+1)).get(`path`)??``}async function ti(e,t){Kr.textContent=t,Jr.href=`${e}&download=1`,qr.textContent=`loading…`,Gr.showModal();let n;try{let t=await fetch(e);n=t.ok?await t.text():await h(t,`failed to load`)}catch(e){n=`failed to load: ${String(e)}`}qr.textContent=n.length>Wr?`${n.slice(0,Wr)}\n…`:n}function ni(e,t){let n=Vr(e);return n.alt=t,n}function ri(e,t){let n=Yr(t),r=R(`span`,`inline-flex max-w-full items-center gap-2.5 rounded-lg border border-neutral-200 bg-neutral-50 px-2.5 py-1.5 no-underline`),i=R(`span`,`flex h-7 w-7 flex-none items-center justify-center rounded-md bg-indigo-50 text-[10px] font-semibold uppercase text-indigo-600`,n.slice(0,4)||`file`),a=R(`span`,`min-w-0 truncate text-[13px] font-medium text-neutral-800`,t),o=R(`span`,`ml-1 flex flex-none items-center gap-0.5`);if(Ur.has(n)||n===`pdf`){let r=R(`button`,`icon-btn h-6 w-6 text-[13px]`,`◉`);r.title=`Preview`,r.onclick=r=>{r.preventDefault(),n===`pdf`?window.open(e,`_blank`,`noopener`):ti(e,t)},o.append(r)}let s=document.createElement(`a`);return s.className=`icon-btn h-6 w-6 text-[13px] no-underline`,s.href=`${e}&download=1`,s.download=t,s.title=`Download`,s.textContent=`↓`,o.append(s),r.append(i,a,o),r}function ii(e){let t=new Set;for(let n of e)n.parentElement&&t.add(n.parentElement);for(let n of t){let t=[...n.children].filter(t=>e.includes(t));if([...n.childNodes].every(e=>e.nodeType===Node.TEXT_NODE?!e.textContent?.trim():t.includes(e))){n.classList.add(`thumbs`);continue}let r=R(`div`,`thumbs`);r.append(...t),n.after(r)}}function ai(e){let t=[];for(let n of e.querySelectorAll(`img`)){let e=n.getAttribute(`src`)??``;if(!Qr(e))continue;let r=ni(e,tr(ei(e)));n.replaceWith(r),t.push(r)}for(let n of e.querySelectorAll(`a`)){let e=n.getAttribute(`href`)??``;if(!Qr(e))continue;let r=tr(ei(e))||n.textContent?.trim()||`file`,i=Hr.has(Yr(r))?ni(e,r):ri(e,r);n.replaceWith(i),t.push(i)}t.length&&ii(t)}var oi=e=>`[${e.split(`/`).pop()??`file`}](file://${encodeURI(e).replace(/\(/g,`%28`).replace(/\)/g,`%29`)})`,si=/^\[[^\]\n]*\]\(\s*<?file:\/\/(\/[^)>\s]*)>?\s*\)$/;function ci(e){let t=e.split(`
71
71
  `),n=t.length;for(;n>0&&si.test(t[n-1].trim());)n--;let r=t.slice(n).map(e=>{let t=si.exec(e.trim())[1];try{return decodeURIComponent(t)}catch{return t}});return{text:t.slice(0,n).join(`
72
72
  `).trimEnd(),paths:r}}var li=`modulepreload`,ui=function(e){return`/`+e},di={},fi=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=ui(t,n),t=s(t),t in di)return;di[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:li,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},pi,mi;function hi(){return mi??=fi(()=>import(`./hljs-tWqyD59G.js`).then(e=>pi=e.default,e=>{console.warn(`highlighting unavailable — code stays plain text`,e)}),[]),mi}async function gi(e){let t=await hi();if(t)for(let n of e.querySelectorAll(`pre code[class]`)){let e=/(?:language|lang)-(\S+)/.exec(n.className)?.[1]?.toLowerCase();!e||!t.getLanguage(e)||(n.innerHTML=t.highlight(n.textContent??``,{language:e}).value)}}var _i={ts:`typescript`,tsx:`typescript`,mts:`typescript`,cts:`typescript`,js:`javascript`,jsx:`javascript`,mjs:`javascript`,cjs:`javascript`,py:`python`,rs:`rust`,sh:`bash`,zsh:`bash`,md:`markdown`,yml:`yaml`,html:`xml`,htm:`xml`,svg:`xml`,patch:`diff`};async function vi(e){let t=await hi(),n=e.split(`.`).pop()?.toLowerCase()??``,r=_i[n]??n;return t?.getLanguage(r)?r:null}function yi(e,t){let n=document.createElement(`span`);return pi&&t&&e.length<=500?n.innerHTML=pi.highlight(e,{language:t}).value:n.textContent=e,n}var bi=null,xi=`max-w-full cursor-pointer break-words rounded-full border border-indigo-200 bg-indigo-50 px-2.5 py-0.5 text-left text-[12.5px] text-indigo-700 transition-colors hover:border-indigo-300 hover:bg-indigo-100`;function Si(){bi=null}function Ci(e,t,n){if(bi?.remove(),bi=null,!t.length)return;let r=R(`div`,`mt-1.5 flex flex-wrap gap-1.5`);for(let e of t){let t=R(`button`,xi,e);t.type=`button`,t.onclick=()=>{bi===r&&(bi=null),r.remove(),n(e)},r.append(t)}e.append(r),bi=r}var wi=8e3,Ti=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`],Ei=e=>typeof e==`string`&&Ti.includes(e),Di,Oi;function ki(e,t){Di=e,Oi=t}var Ai=e=>e.slice(0,8),ji=e=>`group relative mt-1.5 border-l-2 px-5 py-2 ${e}`,Mi=e=>R(`div`,ji(e));function Ni(e,t){let n=e.split(`
73
- `).length,r=t?e.length>300||n>4:e.length>800||n>12,i=[t?`max-h-24`:`max-h-[min(18rem,40dvh)]`,`overflow-hidden`],a=R(`div`,`mt-1 whitespace-pre-wrap break-words text-[14px] text-neutral-800 ${i.join(` `)}`,e),o=R(`button`,`mx-auto mt-1.5 hidden w-fit rounded border border-black/10 bg-white px-2 py-1 text-[12px] font-medium text-neutral-700 shadow-sm hover:bg-black/[0.03] pointer-coarse:py-3.5 dark:border-neutral-200 dark:bg-neutral-50`,`Show full message`);return o.setAttribute(`type`,`button`),o.onclick=()=>{let e=a.classList.toggle(i[0]);a.classList.toggle(i[1],e),o.textContent=e?`Show full message`:`Collapse message`,a.tabIndex=-1,a.focus({preventScroll:!0})},queueMicrotask(()=>{(a.clientHeight?a.scrollHeight>a.clientHeight+1:r)?o.classList.remove(`hidden`):a.classList.remove(...i)}),[a,o]}function Pi(e){let t=R(`div`,`flex flex-wrap items-center gap-x-2 gap-y-1 text-[11px] text-neutral-500`,e.glyph);t.append(R(`span`,`flex-none font-semibold uppercase ${e.labelCls}`,e.label)),e.taskName&&t.append(R(`span`,`min-w-0 grow basis-0 truncate text-[12.5px] font-medium text-neutral-800`,e.taskName));let n=R(`div`,`ml-auto flex min-w-0 flex-wrap items-center gap-x-2 font-mono`);if(e.note&&n.append(R(`span`,`flex-none`,e.note)),e.model){let t=R(`span`,`flex-none rounded bg-black/[0.05] px-1.5 py-px font-medium text-neutral-700 dark:bg-neutral-200`,e.model.id);t.title=`${e.model.provider} / ${e.model.id}`,n.append(t)}if(e.thinking){let t=R(`span`,`flex-none`,e.thinking);t.title=`Reasoning effort`,n.append(t)}let r=R(`button`,`flex-none hover:underline`,Ai(e.runId));if(r.title=`Run ${e.runId}`,r.onclick=()=>Di.showRun(e.runId),n.append(r),e.sessionId&&e.sessionId!==`console`){let t=e.sessionId,r=R(`button`,`flex-none text-indigo-600 hover:underline`,Ai(t));r.title=`Open session ${t}`,r.onclick=()=>Di.select(t),n.append(r)}return t.append(n),t}var Fi=`bg-indigo-50/70`,Ii={queued:{edge:`border-l-amber-400`,label:`text-amber-700`,glyph:``},running:{edge:`border-l-indigo-500`,label:`text-indigo-700`,glyph:``},succeeded:{edge:`border-l-green-500`,label:`text-green-700`,glyph:`✓`},failed:{edge:`border-l-red-500`,label:`text-red-600`,glyph:`✕`},cancelled:{edge:`border-l-neutral-300`,label:`text-neutral-500`,glyph:`·`},interrupted:{edge:`border-l-amber-400`,label:`text-amber-700`,glyph:`⏸`},skipped:{edge:`border-l-neutral-300`,label:`text-neutral-500`,glyph:`·`}},Li=e=>Ii[e].glyph?R(`span`,`w-3 flex-none text-center font-bold ${Ii[e].label}`,Ii[e].glyph):R(`span`,`spinner ${Ii[e].label}`),Ri=new Map,zi=new WeakMap;async function Bi(e,t){let n=await ae(e,`POST`,t);n&&Oi.append(`error`,n)}function Vi(e){for(let[e,t]of Ri)t.isConnected||Ri.delete(e);let t=Ri.get(e.runId);t||(t=Mi(`${Ii[e.state].edge} ${Fi}`),t.dataset.kind=`background-run`,Oi.el.append(t),Ri.set(e.runId,t)),t.className=ji(`${Ii[e.state].edge} ${Fi}`);let n=e.state===`queued`||e.state===`running`,r=`/api/task-runs/${e.runId}`,i=Math.max(0,Math.round(((e.finishedAt??Date.now())-(e.startedAt??e.queuedAt))/1e3)),a=Pi({glyph:Li(e.state),label:e.state,labelCls:Ii[e.state].label,taskName:e.taskName,note:`${e.sessionMode??`task`} · depth ${String(e.depth)} · ${String(i)}s`,runId:e.runId,sessionId:e.targetSessionId}),o=R(`div`,`flex flex-none items-center gap-2 text-[11px] font-semibold text-neutral-700`);if(n){let t=R(`button`,`hover:underline`,`Stop`);t.onclick=()=>{window.confirm(`Stop "${e.taskName}"?`)&&Bi(`${r}/cancel`,`could not stop the run`)},o.append(t)}o.childElementCount&&a.append(o);let s=zi.get(t);!s&&e.prompt!==null&&(s=Ni(e.prompt,!0),zi.set(t,s)),t.replaceChildren(a,...s??[]),Oi.scroll()}var z=null,Hi=null,Ui=null,Wi=!1;function Gi(){if(!Hi)return;Hi.text=Hi.text.slice(-4e3),Hi.pre.textContent=Hi.text;let e=Hi.text.split(`
73
+ `).length,r=t?e.length>300||n>4:e.length>800||n>12,i=[t?`max-h-24`:`max-h-[min(18rem,40dvh)]`,`overflow-hidden`],a=R(`div`,`mt-1 whitespace-pre-wrap break-words text-[14px] text-neutral-800 ${i.join(` `)}`,e),o=R(`button`,`mx-auto mt-1.5 hidden w-fit rounded border border-black/10 bg-white px-2 py-1 text-[12px] font-medium text-neutral-700 shadow-sm hover:bg-black/[0.03] pointer-coarse:py-3.5 dark:border-neutral-200 dark:bg-neutral-50`,`Show full message`);return o.setAttribute(`type`,`button`),o.onclick=()=>{let e=a.classList.toggle(i[0]);a.classList.toggle(i[1],e),o.textContent=e?`Show full message`:`Collapse message`,a.tabIndex=-1,a.focus({preventScroll:!0})},queueMicrotask(()=>{(a.clientHeight?a.scrollHeight>a.clientHeight+1:r)?o.classList.remove(`hidden`):a.classList.remove(...i)}),[a,o]}function Pi(e){let t=R(`div`,`flex flex-wrap items-center gap-x-2 gap-y-1 text-[11px] text-neutral-500`,e.glyph);t.append(R(`span`,`flex-none font-semibold uppercase ${e.labelCls}`,e.label)),e.taskName&&t.append(R(`span`,`min-w-0 grow basis-0 truncate text-[12.5px] font-medium text-neutral-800`,e.taskName));let n=R(`div`,`ml-auto flex min-w-0 flex-wrap items-center gap-x-2 font-mono`);if(e.note&&n.append(R(`span`,`flex-none`,e.note)),e.model){let t=R(`span`,`flex-none rounded bg-black/[0.05] px-1.5 py-px font-medium text-neutral-700 dark:bg-neutral-200`,e.model.id);t.title=`${e.model.provider} / ${e.model.id}`,n.append(t)}if(e.thinking){let t=R(`span`,`flex-none`,e.thinking);t.title=`Reasoning effort`,n.append(t)}let r=R(`button`,`flex-none hover:underline`,Ai(e.runId));if(r.title=`Run ${e.runId}`,r.onclick=()=>Di.showRun(e.runId),n.append(r),e.sessionId&&e.sessionId!==`console`){let t=e.sessionId,r=R(`button`,`flex-none text-indigo-600 hover:underline`,Ai(t));r.title=`Open session ${t}`,r.onclick=()=>Di.select(t),n.append(r)}return t.append(n),t}var Fi=`bg-fuchsia-50/70`,Ii={queued:{edge:`border-l-amber-400`,label:`text-amber-700`,glyph:``},running:{edge:`border-l-fuchsia-500`,label:`text-fuchsia-700`,glyph:``},succeeded:{edge:`border-l-green-500`,label:`text-green-700`,glyph:`✓`},failed:{edge:`border-l-red-500`,label:`text-red-600`,glyph:`✕`},cancelled:{edge:`border-l-neutral-300`,label:`text-neutral-500`,glyph:`·`},interrupted:{edge:`border-l-amber-400`,label:`text-amber-700`,glyph:`⏸`},skipped:{edge:`border-l-neutral-300`,label:`text-neutral-500`,glyph:`·`}},Li=e=>Ii[e].glyph?R(`span`,`w-3 flex-none text-center font-bold ${Ii[e].label}`,Ii[e].glyph):R(`span`,`spinner ${Ii[e].label}`),Ri=new Map,zi=new WeakMap;async function Bi(e,t){let n=await ae(e,`POST`,t);n&&Oi.append(`error`,n)}function Vi(e){for(let[e,t]of Ri)t.isConnected||Ri.delete(e);let t=Ri.get(e.runId);t||(t=Mi(`${Ii[e.state].edge} ${Fi}`),t.dataset.kind=`background-run`,Oi.el.append(t),Ri.set(e.runId,t)),t.className=ji(`${Ii[e.state].edge} ${Fi}`);let n=e.state===`queued`||e.state===`running`,r=`/api/task-runs/${e.runId}`,i=Math.max(0,Math.round(((e.finishedAt??Date.now())-(e.startedAt??e.queuedAt))/1e3)),a=Pi({glyph:Li(e.state),label:e.state,labelCls:Ii[e.state].label,taskName:e.taskName,note:`${e.sessionMode??`task`} · depth ${String(e.depth)} · ${String(i)}s`,runId:e.runId,sessionId:e.targetSessionId}),o=R(`div`,`flex flex-none items-center gap-2 text-[11px] font-semibold text-neutral-700`);if(n){let t=R(`button`,`hover:underline`,`Stop`);t.onclick=()=>{window.confirm(`Stop "${e.taskName}"?`)&&Bi(`${r}/cancel`,`could not stop the run`)},o.append(t)}o.childElementCount&&a.append(o);let s=zi.get(t);!s&&e.prompt!==null&&(s=Ni(e.prompt,!0),zi.set(t,s)),t.replaceChildren(a,...s??[]),Oi.scroll()}var z=null,Hi=null,Ui=null,Wi=!1;function Gi(){if(!Hi)return;Hi.text=Hi.text.slice(-4e3),Hi.pre.textContent=Hi.text;let e=Hi.text.split(`
74
74
  `).filter(Boolean).pop()??`thinking…`,t=Hi.summary.lastElementChild;t.textContent=e.length>90?`…`+e.slice(-90):e}function Ki(){if(Ui){Wi=!0;return}Wi=!1,Gi(),Ui=setTimeout(()=>{Ui=null,Wi&&Ki()},80)}function qi(){Ui&&clearTimeout(Ui),Ui=null,Wi&&Gi(),Wi=!1}var Ji=new WeakMap,Yi=e=>{let t=Ji.get(e)??[];return Ji.set(e,t),t};function Xi(){z&&!z.toolRows.size&&ca(`done`)}var Zi=null;function Qi(){z=null,Zi=null,Hi=null,qi(),Ri.clear()}function $i(){let e=Zi;return!e||z?.el===e||(Zi=null,e!==Oi.el.lastElementChild)?null:(e.remove(),e.dataset.adopted=`1`,ta(e,e.dataset.status),e)}var ea={running:`text-green-700 open:bg-green-50`,done:`text-neutral-400 hover:text-neutral-600 open:bg-black/[0.02] open:text-neutral-500 dark:open:bg-neutral-100`,failed:`text-red-600 open:bg-red-50`,interrupted:`text-amber-700 open:bg-amber-50`};function ta(e,t){e.dataset.status=t,e.className=`${e.dataset.adopted?`float-left min-w-[6.5rem] pr-3 tabular-nums mt-[3px] open:float-none open:mt-0 open:mb-1.5 open:min-w-0 open:pr-0`:`mx-5 my-1.5`} rounded-md text-[11.5px] leading-[1.35] open:border open:border-black/[0.06] open:px-2 open:py-1.5 dark:open:border-neutral-200 ${ea[t]}`}var na={failed:`✕`,interrupted:`⏸`};function ra(e){return e===`running`?R(`span`,`spinner`):e===`done`?R(`span`,`hidden`):R(`span`,`flex-none text-[12px] font-bold`,na[e])}function ia(e){if(z)return z;let t=ra(`running`),n=R(`span`,`min-w-0 truncate`,`working…`),{el:r}=ur(``,[t,n]);r.dataset.kind=`activity`,ta(r,`running`);let i=R(`div`,`mt-1.5 flex max-h-64 flex-col gap-1 overflow-y-auto overscroll-contain border-t border-black/5 pt-1.5 dark:border-neutral-200`);return r.append(i),aa(r,i),Oi.el.append(r),Zi=r,Oi.scroll(),z={el:r,statusIcon:t,headline:n,rowsEl:i,toolRows:new Map,thinking:null,steps:0,failedSteps:0,startTs:e,sawError:!1},z}function aa(e,t){t.dataset.follow=`1`,t.addEventListener(`scroll`,()=>{let e=t.scrollHeight-t.scrollTop-t.clientHeight<24;t.dataset.follow=e?`1`:``}),e.addEventListener(`toggle`,()=>{e.open&&(t.scrollTop=t.scrollHeight,t.dataset.follow=`1`)})}function oa(e){Oi.bulk()||!e.el.open||!e.rowsEl.dataset.follow||(e.rowsEl.scrollTop=e.rowsEl.scrollHeight)}function sa(e,t,n){let r=Math.max(1,Math.round((Date.now()-e.startTs)/1e3)),i=`${e.steps} step${e.steps===1?``:`s`} · ${r}s`;e.headline.textContent=t===`running`&&n?`${i} · ${n}`:t===`done`?i:`${i} · ${t}`,ta(e.el,t);let a=ra(t);e.statusIcon.replaceWith(a),e.statusIcon=a}function ca(e){if(!z)return;qi();for(let{statusEl:e}of z.toolRows.values())e.textContent===`running…`&&(e.textContent=`interrupted`);let t=z.steps>0&&z.failedSteps===z.steps;sa(z,(z.sawError||t)&&e===`done`?`failed`:e),z=null}function la(){z&&(z.sawError=!0)}function ua(e){let t=e.slice(0,400).replace(/\s+/g,` `);return t.length>100?t.slice(0,100)+`…`:t}function da(e,t,n,r){let i=ia(e);i.steps+=1,qi(),i.thinking=null;let a=JSON.stringify(r,null,2)??``,o=R(`span`,`ml-auto flex-none text-neutral-400`,`running…`),s=R(`span`,`min-w-0 truncate text-neutral-500`,ua(a)),{el:c}=ur(`rounded-md px-1 py-0.5 font-mono text-[12.5px] hover:bg-black/[0.03] dark:hover:bg-neutral-100`,[R(`span`,`flex-none font-semibold`,n),s,o]),l=R(`pre`,`max-h-40 overflow-y-auto whitespace-pre-wrap break-words rounded bg-black/[0.04] p-1.5 text-[12px] dark:bg-neutral-100`,a),u=R(`pre`,`hidden max-h-56 overflow-y-auto whitespace-pre-wrap break-words rounded bg-black/[0.04] p-1.5 text-[12px] dark:bg-neutral-100`);c.append(R(`div`,`mt-1 flex flex-col gap-1 pl-4`,l,u)),Yi(i.el).push({tool:n,call:t,preview:s,argsPre:l,outputPre:u}),i.toolRows.set(t,{el:c,statusEl:o,outputPre:u}),i.rowsEl.append(c),oa(i),sa(i,`running`,n),Oi.scroll()}function fa(e,t,n){let r=z;if(!r)return;let i=r.toolRows.get(e);r.toolRows.delete(e),i&&(i.statusEl.textContent=t?`failed`:`ok`,i.statusEl.className=`ml-auto flex-none ${t?`text-red-600`:`text-green-700`}`,i.el.classList.toggle(`bg-red-50`,t),i.el.classList.toggle(`text-red-700`,t),n&&(i.outputPre.textContent=n.length>8e3?n.slice(0,wi)+`…`:n,i.outputPre.classList.remove(`hidden`)),t&&(r.failedSteps+=1)),sa(r,`running`)}function pa(e,t){let n=ia(e);if(!n.thinking){qi();let{el:e,summary:t}=ur(`rounded-md px-1 py-0.5 text-[12.5px] italic text-neutral-500 hover:bg-black/[0.03] dark:hover:bg-neutral-100`,[R(`span`,`min-w-0 truncate`,`thinking…`)]),r=R(`div`,`mt-1 max-h-56 overflow-y-auto whitespace-pre-wrap break-words pl-4 not-italic text-neutral-500`,``);e.append(r),n.rowsEl.append(e),n.thinking={pre:r,summary:t,text:``},Hi=n.thinking,oa(n),sa(n,`running`,`thinking…`)}n.thinking.text+=t,Ki()}var ma=0;function ha(e,t=0,n=!1,r){let i=Date.now()-t,a=ia(i).el;for(let t of e){if(t.kind===`thinking`){pa(i,t.text??``);continue}let e=t.id??`replay-${++ma}`;da(i,e,t.toolName??``,t.args),t.done&&fa(e,t.isError??!1,t.output??``)}r!==void 0&&e.some(e=>e.kind===`tool`&&e.args===void 0)&&ga(a,r),!n&&ca(e.some(e=>e.kind===`tool`&&!e.done)?`interrupted`:`done`)}function ga(e,t){let n=()=>{e.open&&(e.removeEventListener(`toggle`,n),_a(e,t))};e.addEventListener(`toggle`,n)}async function _a(e,t){let n=Di.sessionId(),r=Yi(e),i=new Set(r.filter(e=>!e.argsPre.textContent)),a=e=>{for(let t of i)t.argsPre.textContent=e};if(a(`loading…`),!n)return a(`no session`);let o=await g(`/api/sessions/${n}/turns/${t}/steps`,`could not load these steps`);if(!o.ok)return a(o.error);let s=o.value.steps.filter(e=>e.kind===`tool`);for(let[e,t]of r.entries()){if(!i.has(t))continue;let n=s[e];if(!(n&&(n.id?n.id===t.call:n.toolName===t.tool))){t.argsPre.textContent=`detail no longer available — reload the session`;continue}let r=JSON.stringify(n.args,null,2)??``;t.argsPre.textContent=r,t.preview.textContent=ua(r),n.output&&(t.outputPre.textContent=n.output,t.outputPre.classList.remove(`hidden`))}}var va,B=L(`#turns`);function ya(e){va=e,ki(e,{el:B,append:V,scroll:Ea,bulk:()=>ba})}var ba=!1,xa=()=>B.scrollHeight-B.scrollTop-B.clientHeight<80,Sa=!0;B.addEventListener(`scroll`,()=>{ba||(Sa=xa())},{passive:!0});var Ca=0;function wa(){!Sa||ba||Ca||(Ca=requestAnimationFrame(()=>{Ca=0,Sa&&!ba&&(B.scrollTop=B.scrollHeight)}))}new ResizeObserver(wa).observe(B),B.addEventListener(`load`,wa,!0),new MutationObserver(wa).observe(B,{childList:!0,subtree:!0,characterData:!0});function Ta(){xa()&&(Sa=!0)}function Ea(e=!1){ba||(e&&(Sa=!0),Sa&&(B.scrollTop=B.scrollHeight))}var Da=500,Oa=0,ka=0,Aa=null;function ja(){for(;B.childElementCount>Da;){let e=B.firstElementChild;e.remove(),e!==Aa&&(e.dataset.kind===`user`&&Oa++,ka++)}ka&&(Aa||(Aa=R(`div`,`px-5 py-2 text-center text-[11.5px] italic text-neutral-400`),Aa.dataset.kind=`trim`),Aa.textContent=`${ka} earlier row${ka===1?``:`s`} not shown — still in the transcript, not on this screen`,B.firstElementChild!==Aa&&B.prepend(Aa))}var Ma={user:{row:`border-l-indigo-500 bg-indigo-50`,body:`text-neutral-900`},assistant:{row:`border-l-transparent`,body:`text-neutral-900`},error:{row:`border-l-red-400 bg-red-50`,body:`text-red-700`},system:{row:`border-l-cyan-500 bg-cyan-50`,body:`text-neutral-800`}};function V(e,t,n=!1,r){Xi();let i=e===`assistant`?$i():null,a=Ma[e],o=e===`user`&&r!==void 0&&Ha(r)?r:void 0,s=R(`div`,`group relative border-l-2 px-5 ${o===void 0&&B.lastElementChild?.dataset.kind===e?`pt-1 pb-2.5`:`mt-1.5 py-2.5`} ${a.row}`);s.dataset.kind=e;let c=e===`user`?ci(t):null,l=c?.text??t,u=e===`user`?te(l):null,d=u?.id||u?.when?u:null,ee=d?.id&&d.id!==`web`?d:null,f=R(`div`,`whitespace-pre-wrap break-words ${a.body}`,d?.text??l);(c?.paths.length||d)&&(f.dataset.raw=t),n&&Za(f,t),i&&(s.classList.add(`flow-root`),s.append(i)),(ee||o!==void 0)&&s.append(Na(ee,o)),s.append(f);let p=va.sessionId();if(c?.paths.length&&p){let e=Br(s);for(let t of c.paths)e.append($r(p,t))}if(e===`user`){let e=R(`button`,`absolute right-2 top-1 hidden h-6 w-6 items-center justify-center rounded text-neutral-400 hover:bg-neutral-200 hover:text-neutral-700 group-hover:flex pointer-coarse:flex`);e.title=`Edit — resends from here; this message and later turns leave the context`,e.setAttribute(`aria-label`,`Edit message`),e.innerHTML=`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="h-3.5 w-3.5"><path d="m10.7 2.3 3 3L6 13H3v-3l7.7-7.7zM9.3 3.7l3 3"/></svg>`,e.onclick=()=>La(s,f),s.append(e)}return B.append(s),ja(),Ea(),f}function Na(e,t){let n=R(`div`,`mb-1 flex items-baseline gap-2 text-[11.5px] leading-tight`),r=e?.name??e?.id;if(r){let t=R(`span`,`font-semibold text-indigo-700`,r);e?.id&&(t.title=e.id),n.append(t)}return t!==void 0&&n.append(Ua(t,`font-mono text-[11px] text-indigo-600`)),n}var Pa={"task-delegation":[`▶`,`delegated`,`text-cyan-700`],"task-callback":[`↩`,`callback`,`text-cyan-700`],decision:[`?`,`decision needed`,`text-amber-700`]};function Fa(e){let t=e.indexOf(`
75
75
 
76
76
  `);if(t<0)return[null,e];let n=e.slice(0,t);return n.length>600||n.split(`
@@ -80,4 +80,4 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
80
80
  `),o=U.sessionState()===`idle`&&e===`auto`;o?U.setState(`streaming`):ss(),(o||e===`steer`)&&(as(a),V(`user`,a,!1,Date.now()),Ea(!0));let s=await m(`/api/sessions/${i}/messages`,{text:a,mode:e});if(!s.ok){let e=await h(s,`send failed`);await U.reload(i),V(`error`,e)}}finally{t===void 0&&(bs=!1)}}}async function Ss(e){let t=U.sessionId();if(!t)return;us([],[]);let n=await m(`/api/sessions/${t}/queue/deliver`,{mode:e});if(!n.ok){let r=await h(n,`Queue ${e} failed`);await U.reload(t),U.sessionId()===t&&V(`error`,r)}}async function Cs(){let e=U.sessionId();if(!e||$o.has(e))return;$o.add(e);let t=Qo,n=gs,r=document.activeElement;try{_s();let i=await fetch(`/api/sessions/${e}/queue/recall`,{method:`POST`});if(!i.ok){let t=await h(i,`Could not recall queued messages`);U.sessionId()===e&&V(`error`,t);return}let{messages:a}=await i.json(),o=U.sessionId()===e;if(a.length)try{let t=o?W.value:localStorage.getItem(hs(e))??``,i=(t?[t,...a]:a).join(`
81
81
  `);o&&(W.value=i,ys(),n===gs&&U.chatVisible()&&document.activeElement===r&&W.focus()),_s(e,i)}catch(t){V(`error`,`Could not save recalled messages for session ${e}: ${String(t)}\nRecalled messages (not saved):\n${a.join(`
82
82
  `)}`)}o&&t===Qo&&us([],[])}finally{$o.delete(e)}}function ws(e){U=e,ns();let t=()=>{let e=U.sessionId();e&&fetch(`/api/sessions/${e}/abort`,{method:`POST`})};Wo.onclick=t,Io(Wo,`Stop the running turn`,t,()=>U.sessionState()===`streaming`&&U.chatVisible()),L(`#queue-steer`).onclick=()=>void Ss(`steer`),L(`#queue-restart`).onclick=()=>void Ss(`restart`),L(`#queue-recall`).onclick=()=>void Cs(),Bo.onsubmit=e=>{e.preventDefault(),xs(`auto`)},Ro(W,[`/`],`Write a message`,rs,U.chatVisible),W.onfocus=Ta,W.oninput=()=>{ys(),_s()};let n=!matchMedia(`(pointer: coarse)`).matches;W.onkeydown=e=>{e.isComposing||e.keyCode===229||n&&e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),xs(`auto`))},W.onpaste=e=>{for(let t of e.clipboardData?.items??[]){let e=t.kind===`file`?t.getAsFile():null;e&&ps(e)}let t=e.clipboardData?.getData(`text/plain`)??``,n=t.trim();!n||n===t||(e.preventDefault(),W.setRangeText(n,W.selectionStart??0,W.selectionEnd??0,`end`),ys(),_s())},B.ondragover=e=>e.preventDefault(),B.ondrop=e=>{e.preventDefault();for(let t of e.dataTransfer?.files??[])ps(t)},L(`#attach`).onclick=()=>Xo.click(),Xo.onchange=()=>{for(let e of Xo.files??[])ps(e);Xo.value=``},ss()}var Ts=`pier.push`,Es=`/sw.js`,Ds=()=>/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.maxTouchPoints>1&&/Macintosh/.test(navigator.userAgent),Os=()=>matchMedia(`(display-mode: standalone)`).matches||navigator.standalone===!0;function ks(){return window.isSecureContext?Ds()&&!Os()?`On iPhone and iPad, notifications work only from the installed app: Share → Add to Home Screen, then open Pier from that icon.`:!(`serviceWorker`in navigator)||!(`PushManager`in window)||!(`Notification`in window)?`This browser has no Web Push support.`:``:`Notifications need HTTPS. Reach this Pier through its public URL, not over plain http.`}var As=[[/iPhone/,`iPhone`],[/iPad/,`iPad`],[/Android/,`Android`],[/Macintosh/,`Mac`],[/Windows/,`Windows`]],js=[[/Edg\//,`Edge`],[/Chrome\//,`Chrome`],[/Firefox\//,`Firefox`],[/Safari\//,`Safari`]];function Ms(){let e=navigator.userAgent,t=(t,n)=>t.find(([t])=>t.test(e))?.[1]??n;return`${t(As,`Linux`)} · ${t(js,`browser`)}${Os()?` (installed)`:``}`}var Ns=e=>{let t=atob(e.replace(/-/g,`+`).replace(/_/g,`/`)),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n},Ps=null;async function Fs(){return!(`serviceWorker`in navigator)||!window.isSecureContext?null:(Ps??=await navigator.serviceWorker.register(Es,{scope:`/`}).catch(e=>(console.warn(`service worker registration failed`,e),null)),Ps)}var Is=(e,t)=>{let n=e?new Uint8Array(e):null;return n?.length===t.length&&n.every((e,n)=>e===t[n])};async function Ls(e){let{publicKey:t}=await ie(`/api/push`,`Could not read this instance's push key`),n=Ns(t),r=await e.pushManager.getSubscription();if(r){if(Is(r.options.applicationServerKey,n))return r;await r.unsubscribe()}return e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:n})}async function Rs(e){return m(`/api/push/subscribe`,{...e.toJSON(),label:Ms()})}async function zs(){Hs();let e=await Fs();if(!(!e||localStorage.getItem(Ts)!==`on`)&&!(!(`Notification`in window)||Notification.permission!==`granted`))try{await Rs(await Ls(e))}catch(e){console.warn(`re-registering this browser for notifications failed`,e)}}var Bs=null,Vs=null;function Hs(){window.addEventListener(`beforeinstallprompt`,e=>{e.preventDefault(),Bs=e,Vs?.()}),window.addEventListener(`appinstalled`,()=>{Bs=null,Vs?.()})}function Us(e){let t=navigator;(e>0?t.setAppBadge?.(e):t.clearAppBadge?.())?.catch(()=>{})}function Ws(){let e=R(`span`,`text-[11.5px]`,``),t=fr(`Send a test notification`),n=R(`div`,`flex items-center gap-3`,t,e),r=R(`div`,`flex flex-col gap-4`),i=()=>localStorage.getItem(Ts)===`on`;async function a(){Er(e,`saving`,`asking this browser…`);let t=await Notification.requestPermission();if(t!==`granted`)return localStorage.setItem(Ts,`off`),c(),Er(e,`failed`,t===`denied`?`Notifications are blocked for this site — allow them in the browser's site settings, then try again.`:`No answer to the permission prompt.`);let n=await Fs();if(!n)return Er(e,`failed`,`This browser refused to register a service worker.`);try{let t=await Rs(await Ls(n));if(!t.ok)return Er(e,`failed`,await h(t,`Could not register this browser`));localStorage.setItem(Ts,`on`),c(),Er(e,`saved`,`This browser will be notified when a turn finishes unseen.`)}catch(t){Er(e,`failed`,`Could not subscribe: ${String(t)}`)}}async function o(){localStorage.setItem(Ts,`off`),c();let t=await(await Fs())?.pushManager.getSubscription();t&&(await m(`/api/push/unsubscribe`,{endpoint:t.endpoint}),await t.unsubscribe()),Er(e,`idle`,`This browser will not be notified.`)}t.onclick=()=>{Er(e,`saving`,`sending…`),(async()=>{let t=await m(`/api/push/test`,{});if(!t.ok)return Er(e,`failed`,await h(t,`Could not send`));let{sent:n,failed:r}=await t.json();Er(e,r?`failed`:`saved`,`Handed ${String(n)} device(s) to their push service${r?`, ${String(r)} refused`:``}.`)})()};function s(){if(!Bs)return[];let e=fr(`Install Pier`,!0);return e.onclick=()=>{let e=Bs;e&&e.prompt().then(()=>e.userChoice).finally(()=>{Bs=null,c()})},[R(`div`,`flex items-center gap-3`,e,R(`span`,`text-[11.5px] leading-snug text-neutral-500`,`Its own window and icon — and where notifications look like an app's.`))]}function c(){let e=ks();if(e){r.replaceChildren(...s(),R(`p`,`text-[12.5px] leading-snug text-neutral-500`,e));return}let c=i()&&Notification.permission===`granted`;t.disabled=!c,r.replaceChildren(...s(),wr(`Notify this device`,`A turn that finishes while nobody is looking at it becomes a notification here. Per browser — each device is enabled on its own.`,c,e=>void(e?a():o())),n)}return Vs=c,c(),_r(`Notifications`,`Web Push, so a finished turn reaches you with the workbench closed. Installed — Chrome's address-bar icon, or Share → Add to Home Screen on iOS — Pier notifies you the way an app does.`,r)}var G=null;function Gs(e){G&&!G.contains(e.target)&&K()}function Ks(e){e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),K())}function qs(e){G&&!G.contains(e.target)&&K()}function K(){G&&=(document.removeEventListener(`pointerdown`,Gs,!0),document.removeEventListener(`keydown`,Ks,!0),window.removeEventListener(`scroll`,qs,!0),window.removeEventListener(`resize`,K),G.remove(),null)}var Js=null;function Ys(e){let t=e.getBoundingClientRect(),n={top:t.bottom+4,left:t.left};return t.width||t.height?n:Js?.anchor===e?{top:Js.top,left:Js.left}:n}var Xs=()=>window.innerWidth<640;function Zs(e,t){K();let n=Xs();if(G=R(`div`,`fixed z-50 rounded-lg border border-neutral-200 bg-white py-1 shadow-lg ${n?`inset-x-2 bottom-2 max-h-[70dvh] overflow-y-auto pb-[calc(0.25rem+env(safe-area-inset-bottom))] text-[16px]`:`min-w-52 max-w-[min(42rem,calc(100vw-1rem))] text-[13px]`}`),G.append(t),(e.closest(`dialog[open]`)??document.body).append(G),!n){let t=Ys(e);Js={anchor:e,...t},G.style.top=`${Math.max(8,Math.min(t.top,window.innerHeight-G.offsetHeight-8))}px`,G.style.left=`${Math.max(8,Math.min(t.left,window.innerWidth-G.offsetWidth-8))}px`}document.addEventListener(`pointerdown`,Gs,!0),document.addEventListener(`keydown`,Ks,!0),window.addEventListener(`scroll`,qs,!0),window.addEventListener(`resize`,K)}function Qs(e){let t=R(`button`,`flex w-full cursor-pointer items-center gap-2 px-3 text-left hover:bg-neutral-100 active:bg-neutral-100 ${Xs()?`py-3`:`py-1.5`}`,R(`span`,`flex-none w-3 text-indigo-600`,e.checked?`✓`:``),R(`span`,`truncate`,e.label));return e.hint&&t.append(R(`span`,`ml-auto flex-none text-[11.5px] text-neutral-400`,e.hint)),t.onclick=()=>e.onSelect(),t}function $s(e,t){Zs(e,R(`div`,``,...t.map(Qs)))}var q=e=>`${e.provider}/${e.id}`,ec=`pier.modelFavorites`,tc=e=>`${q(e)}@${e.thinking}`,nc=null;async function rc(){let{modelMenu:e}=await ie(`/api/settings`,`Could not read the pinned model menu`);return e}function ic(){try{let e=JSON.parse(localStorage.getItem(ec)??`[]`);return Array.isArray(e)?e.filter(e=>{let t=e;return!!t&&typeof t==`object`&&typeof t.provider==`string`&&typeof t.id==`string`&&typeof t.thinking==`string`}):[]}catch{return[]}}function ac(e){let t=R(`button`,`flex min-w-0 flex-1 cursor-pointer items-center gap-2 px-3 py-1.5 text-left`,R(`span`,`w-3 flex-none text-indigo-600`,e.checked?`✓`:``),R(`span`,`truncate`,e.label));e.hint&&t.append(R(`span`,`ml-auto flex-none text-[11.5px] text-neutral-400`,e.hint)),e.title&&(t.title=e.title),t.onclick=()=>e.onSelect();let n=R(`button`,`flex-none cursor-pointer px-2 py-1.5 leading-none ${e.starred?`text-amber-500`:`text-neutral-300 opacity-0 hover:text-amber-500 group-hover/row:opacity-100`}`,e.starred?`★`:`☆`);return n.title=e.starred?`Unstar`:`Star this model + reasoning`,n.onclick=t=>{t.stopPropagation(),e.onStar()},R(`div`,`group/row flex w-full items-center hover:bg-neutral-100`,t,n)}function oc({models:e,current:t,thinkingLevel:n,thinkingLevels:i,onPick:a,onThinkingPick:o}){let s=ic(),c=n,l=R(`div`,`flex w-72 flex-col`),u=R(`div`,`flex flex-col gap-2 border-b border-neutral-200 px-2 py-2`),d=document.createElement(`input`);if(d.type=`search`,d.placeholder=`Search models`,d.setAttribute(`aria-label`,`Search models`),d.className=`w-full rounded-md border border-neutral-300 px-2 py-1.5 text-[12.5px] focus:border-indigo-400 focus:outline-none`,u.append(d),i.length){let e=R(`label`,`flex items-center gap-2 px-1 text-[12px] text-neutral-500`),t=document.createElement(`select`);t.className=`select ml-auto rounded-md border border-neutral-300 px-2 py-1 text-[12px] text-neutral-700 focus:border-indigo-400 focus:outline-none`,t.setAttribute(`aria-label`,`Reasoning level`);for(let e of i){let n=document.createElement(`option`);n.value=e,n.textContent=r(e),t.append(n)}t.value=n,t.onchange=()=>{c=t.value,re(d.value),o(c)},e.append(R(`span`,`font-medium`,`Reasoning`),t),u.append(e)}let ee=e=>{let t=tc(e);s=s.some(e=>tc(e)===t)?s.filter(e=>tc(e)!==t):[...s,e],localStorage.setItem(ec,JSON.stringify(s)),re(d.value)},f=(e,t)=>s.some(n=>tc(n)===`${q(e)}@${t}`),p=R(`div`,`max-h-72 overflow-y-auto py-1`),te=new Map(e.map(e=>[q(e),e])),ne=(e,n,i)=>{let o=n.map(e=>({e,model:te.get(q(e))})).filter(e=>!!e.model&&(!i||q(e.model).toLowerCase().includes(i)));o.length&&p.append(R(`div`,`px-3 pb-0.5 pt-1 text-[10.5px] font-semibold uppercase tracking-wide text-neutral-400`,e),...o.map(({e,model:n})=>{let i=e.thinking??c;return ac({label:n.id,hint:e.thinking?r(e.thinking):void 0,title:e.note,checked:!!t&&q(t)===q(n)&&c===i,starred:f(n,i),onSelect:()=>a(n,e.thinking),onStar:()=>ee({provider:n.provider,id:n.id,thinking:i})})}),R(`div`,`my-1 border-t border-neutral-100`))},re=n=>{p.replaceChildren();let r=n.trim().toLowerCase();ne(`Pinned`,nc??[],r),ne(`Starred`,s,r);let i=new Map;for(let t of e){if(r&&!q(t).toLowerCase().includes(r))continue;let e=i.get(t.provider);e?e.push(t):i.set(t.provider,[t])}if(!i.size){p.append(R(`div`,`px-3 py-2 text-[12.5px] text-neutral-400`,e.length?`No matching models.`:`No models available.`));return}for(let[e,n]of i){let i=n.some(e=>!!t&&q(t)===q(e)),o=document.createElement(`details`);o.open=i||r.length>0;let s=R(`summary`,`flex cursor-pointer select-none items-center gap-1.5 px-3 py-1 text-[10.5px] font-semibold uppercase tracking-wide text-neutral-400 hover:bg-neutral-100`,R(`span`,`chev`,`▶`),R(`span`,`truncate`,e),R(`span`,`ml-auto flex-none normal-case text-neutral-300`,String(n.length)));o.append(s,...n.map(e=>ac({label:e.id,checked:!!t&&q(t)===q(e),starred:f(e,c),onSelect:()=>a(e),onStar:()=>ee({provider:e.provider,id:e.id,thinking:c})}))),p.append(o)}};return d.oninput=()=>re(d.value),re(``),rc().then(e=>{let t=JSON.stringify(e)!==JSON.stringify(nc);nc=e,t&&re(d.value)}).catch(e=>So(`model menu unavailable`,e)),l.append(u,p),queueMicrotask(()=>d.focus()),l}function sc(e,t,n,i){let a=pr(t.model?`${t.model.id}${t.thinking?` · ${r(t.thinking)}`:``}`:t.thinking?`Pi default · ${r(t.thinking)}`:`Pi default`,`${yr} flex cursor-pointer items-center gap-1.5 truncate text-left hover:bg-neutral-50 ${t.model?`text-neutral-700`:`text-neutral-400`}`);return a.title=t.model?`${t.model.provider}/${t.model.id}`:`Whatever the project and Pi pick`,a.onclick=()=>{let e=oc({models:n,current:t.model,thinkingLevel:t.thinking??`medium`,thinkingLevels:[...Ti],onPick:(e,n)=>{K(),i({model:e,thinking:n??t.thinking})},onThinkingPick:e=>i({...t,thinking:e})}),r=pr(`Pi default`,`w-full cursor-pointer px-3 py-1.5 text-left text-[12.5px] text-neutral-500 hover:bg-neutral-100`);r.onclick=()=>{K(),i({model:null,thinking:null})};let o=R(`div`,`flex flex-col`);o.append(e,R(`div`,`border-t border-neutral-200`),r),Zs(a,o)},vr(e,a)}var cc=async e=>{let t=await g(`/api/fs/ls${e?.startsWith(`/`)?`?path=${encodeURIComponent(e)}`:``}`,`Could not list directories`);return t.ok?t.value:null},lc=e=>e.entries.filter(e=>e.dir&&!e.name.startsWith(`.`)).map(e=>e.name),uc=(e,t,n)=>{let r=pr(e,`flex w-full cursor-pointer items-center gap-1.5 px-3 py-1 text-left ${t}`);return r.onclick=n,r};function dc(e,t){let n=R(`div`,`flex-none border-t border-neutral-200`),r=uc(`+ New folder`,`text-[12px] text-neutral-500 hover:bg-neutral-100`,()=>{let r=document.createElement(`input`);r.className=`w-full border-0 bg-transparent px-3 py-1 font-mono text-[12.5px] focus:outline-none`,r.placeholder=`folder-name`;let i=R(`p`,`hidden px-3 pb-1 text-[11.5px] text-red-600`);r.onkeydown=async n=>{if(n.key!==`Enter`)return;n.preventDefault();let a=await m(`/api/fs/mkdir`,{path:e,name:r.value});if(!a.ok){i.textContent=(await a.json()).error??`could not create`,i.classList.remove(`hidden`);return}t((await a.json()).path)},n.replaceChildren(r,i),r.focus()});return n.append(r),n}function fc(e,t,n){let r=e=>{n(e),K()};async function i(t){let n=await cc(t);if(!n)return;let a=R(`div`,`flex max-h-80 w-80 flex-col`),o=pr(`Use`,`ml-auto flex-none cursor-pointer rounded bg-indigo-600 px-2 py-0.5 text-[11.5px] text-white dark:text-neutral-50`);o.onclick=()=>r(n.path);let s=document.createElement(`input`);s.className=`min-w-0 flex-1 border-0 bg-transparent font-mono text-[11.5px] text-neutral-500 focus:outline-none`,s.value=n.path,s.spellcheck=!1,s.title=`Type or paste a path, then Enter`,s.onfocus=()=>s.select();let c=R(`p`,`hidden flex-none px-3 pb-1 text-[11.5px] text-red-600`);s.onkeydown=async e=>{if(e.key!==`Enter`)return;e.preventDefault(),e.stopPropagation();let t=s.value.trim();if(!t)return;let n=await cc(t);if(!n){c.textContent=`${t} is not a folder this can read`,c.classList.remove(`hidden`);return}r(n.path)};let l=R(`div`,`flex flex-none items-center gap-2 border-b border-neutral-200 px-3 py-1.5`,s,o),u=R(`div`,`min-h-0 flex-1 overflow-y-auto py-0.5 text-[12.5px]`);n.parent&&u.append(uc(`../`,`font-mono text-neutral-500 hover:bg-neutral-100`,()=>void i(n.parent)));let d=lc(n);for(let e of d)u.append(uc(e,`truncate hover:bg-neutral-100`,()=>void i(`${n.path}/${e}`.replace(`//`,`/`))));d.length||u.append(R(`p`,`px-3 py-1.5 text-[12px] text-neutral-400`,`No sub-folders.`)),a.append(l,c,u,dc(n.path,e=>void i(e))),Zs(e,a)}i(t)}function pc(e,t,n,r){$s(e,[...t.map(e=>({label:e.path,...e.hint?{hint:e.hint}:{},checked:e.path===n,onSelect:()=>{K(),r(e.path)}})),{label:`Browse…`,onSelect:()=>fc(e,n||void 0,r)}])}var mc=(e,t)=>n=>{e.value=n,e.dispatchEvent(new Event(`input`,{bubbles:!0})),t?.(n)};function hc(e,t){let n=pr(`Browse…`,`flex-none cursor-pointer rounded-md border border-neutral-300 px-2 py-1 text-[12px] text-neutral-600 hover:bg-neutral-100`);return n.onclick=()=>fc(n,e.value.trim()||void 0,mc(e,t)),n}function gc(e,t){let n=mc(e);e.classList.add(`select`),e.title=`Pick a project folder, or type a path`,e.onclick=()=>{let r=e.value.trim()||void 0,i=t();if(i.length)return pc(e,i,r,n);fc(e,r,n)},e.addEventListener(`input`,()=>K())}function _c(e,t,n){let r=document.createElement(`input`);return r.className=`min-w-0 flex-1 rounded-md border border-neutral-300 bg-white px-2 py-1 font-mono text-[12.5px] focus:border-indigo-400 focus:outline-none`,r.value=e,r.placeholder=t,r.oninput=()=>n(r.value),{el:R(`div`,`flex items-center gap-1.5`,r,hc(r,n)),input:r}}var vc=L(`#sidebar`),yc=L(`#drawer-scrim`),bc=L(`#mobile-title`),xc=L(`#mobile-menu`);function Sc(){delete vc.dataset.open,yc.classList.add(`hidden`)}function Cc(e,t){bc.textContent=e,bc.classList.toggle(`cursor-pointer`,t),xc.classList.toggle(`hidden`,!t)}var wc=`pier.railClosed`;localStorage.getItem(wc)===`1`&&(document.body.dataset.rail=`closed`);function Tc(e){document.body.dataset.rail=e?`closed`:``,localStorage.setItem(wc,e?`1`:`0`)}function Ec(){if(vc.dataset.open!==void 0)return Sc();vc.dataset.open=``,yc.classList.remove(`hidden`)}var Dc=()=>window.innerWidth<768,Oc=[L(`#rail-toggle`),L(`#drawer-toggle`)],kc=`attention absolute -right-0.5 -top-0.5 rounded-full bg-amber-500`,Ac=e=>e===1?R(`span`,`${kc} h-2 w-2`):R(`span`,`${kc} flex h-3.5 min-w-3.5 items-center justify-center px-0.5 text-[9px] font-semibold text-white`,e>9?`9+`:String(e));function jc(e){for(let t of Oc)t.querySelector(`.attention`)?.remove(),e&&t.append(Ac(e))}var Mc=20,Nc=.35,Pc=8;function Fc(){let e=-1,t=0,n=!1,r=!1,i=1,a=e=>{vc.style.transition=`none`,vc.style.transform=`translateX(${String(e-i)}px)`,yc.classList.remove(`hidden`),yc.style.opacity=String(e/i)},o=t=>{vc.style.transition=``,vc.style.transform=``,yc.style.opacity=``,t?(vc.dataset.open=``,yc.classList.remove(`hidden`)):Sc(),e=-1,r=!1};window.addEventListener(`touchstart`,a=>{if(r||(e=-1,!Dc()||a.touches.length!==1))return;let o=a.touches[0],s=vc.dataset.open!==void 0;if(i=vc.offsetWidth||1,s){if(o.clientX>i)return}else{if(o.clientX>Mc||a.target?.closest(`button, a, input, textarea, select`))return;a.preventDefault()}e=o.clientX,t=o.clientY,n=!s},{passive:!1}),window.addEventListener(`touchmove`,o=>{if(e<0)return;let s=o.touches[0],c=s.clientX-e;if(!r){if(Math.abs(s.clientY-t)>Math.abs(c))return void(e=-1);if(Math.abs(c)<Pc)return;r=!0}o.preventDefault(),a(Math.max(0,Math.min(i,n?c:i+c)))},{passive:!1});let s=()=>{if(e<0)return;if(!r)return void(e=-1);let t=vc.getBoundingClientRect().right;o(n?t>i*Nc:t>i*.65)};window.addEventListener(`touchend`,s),window.addEventListener(`touchcancel`,s)}function Ic(e){Fc(),L(`#drawer-toggle`).onclick=Ec,yc.onclick=Sc,xc.onclick=()=>e.sessionMenu(xc),bc.onclick=()=>{xc.classList.contains(`hidden`)||e.sessionInfo(bc)};let t=L(`#rail-toggle`);t.onclick=()=>Tc(document.body.dataset.rail!==`closed`),Fo(t,`meta+b`,`Toggle sidebar`,()=>Dc()?Ec():Tc(document.body.dataset.rail!==`closed`))}var J,Lc=L(`#project-tree`),Rc=L(`#archive-dialog`),zc=L(`#archive-list`),Bc=L(`#archive-search`),Vc=L(`#archive-count`),Hc=L(`#new-dialog`),Uc=`pier.collapsedProjects`,Wc=new Set(Gc());function Gc(){try{let e=JSON.parse(localStorage.getItem(Uc)??`[]`);return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}catch{return[]}}function Kc(e,t){t?Wc.add(e):Wc.delete(e),localStorage.setItem(Uc,JSON.stringify([...Wc]))}function qc(e,t){let n=new Map;for(let r of e){let e=t(r),i=n.get(e);i?i.push(r):n.set(e,[r])}return n}var Jc=e=>qc(e,e=>e.cwd),Yc=e=>e.repo??e.cwd,Xc=e=>e.endsWith(`/.git`)?e.slice(0,-5):void 0,Zc=(e,t)=>tr(Xc(e)??t[0]?.cwd??e);function Qc(e,t){let n=Xc(e),r=[...new Set(t.map(e=>e.cwd))];return n&&r.includes(n)?[n,...r.filter(e=>e!==n)]:r}function $c(e,t){return e===t?0:e===void 0?-1:t===void 0?1:e-t}function el(e){let t=[...qc(e,Yc)].map(([e,t])=>[e,[...t].sort((e,t)=>(e.branch??e.cwd).localeCompare(t.branch??t.cwd)||$c(e.sort,t.sort)||t.createdAt-e.createdAt)]),n=e=>{let t=e.map(e=>e.projectSort).filter(e=>e!==void 0);return t.length?Math.min(...t):void 0},r=e=>Math.min(...e.map(e=>e.createdAt));return t.sort(([,e],[,t])=>$c(n(e),n(t))||r(t)-r(e))}function tl(e,t,n,r){let i=e.filter(e=>e!==t);return i.splice(i.indexOf(n)+ +!!r,0,t),i}var nl=()=>el(J.sessions().filter(e=>e.listed)),rl=()=>nl().flatMap(([e,t])=>Qc(e,t).map(e=>{let n=t.find(t=>t.cwd===e)?.branch;return{path:e,...n?{hint:n}:{}}}));function il(e,t,n,r){let i=new Map(e.map((e,t)=>[e,t]));for(let e of J.sessions()){let r=i.get(t(e));r!==void 0&&n(e,r)}wl();let a=()=>void J.loadSessions();m(`/api/projects/order`,r).then(e=>{e.ok||a()},a)}function al(e,t,n,r){let i=nl().find(([t])=>t===e);if(!i)return;let a=tl(i[1].map(e=>e.id),t,n,r);il(a,e=>e.id,(e,t)=>e.sort=t,{sessions:a})}function ol(e,t,n){let r=nl(),i=tl(r.map(([e])=>e),e,t,n);il(i,Yc,(e,t)=>e.projectSort=t,{projects:i.flatMap(e=>{let t=r.find(([t])=>t===e);return t?Qc(e,t[1]):[]})})}var sl=null;function cl(e,t){e.style.boxShadow=t===null?``:`inset 0 ${t?-2:2}px 0 0 #818cf8`}function ll(e,t,n,r){e.draggable=!0,e.ondragstart=e=>{e.stopPropagation(),sl={list:t,key:n},e.dataTransfer?.setData(`text/plain`,n)},e.ondragend=()=>{sl=null,wl(!0)};let i=t=>{let n=e.getBoundingClientRect();return t.clientY>n.top+n.height/2},a=e=>!sl||sl.list!==t||sl.key===n?!1:(e.preventDefault(),e.stopPropagation(),!0);e.ondragover=t=>{a(t)&&cl(e,i(t))},e.ondragleave=()=>cl(e,null),e.ondrop=t=>{let n=sl?.key;cl(e,null),a(t)&&n&&r(n,i(t))}}var ul=`hidden flex-none rounded px-1 leading-none text-neutral-400 hover:bg-neutral-200 hover:text-neutral-700 group-hover:block pointer-coarse:block`,dl=e=>e.unread&&e.listed;function fl(e){let[t,n]=e.state===`streaming`?[`bg-green-500 animate-pulse`,`working…`]:dl(e)?[`bg-amber-500`,`turn finished — not viewed yet`]:e.activeRuns>0?[`bg-sky-500`,`${e.activeRuns} subagent${e.activeRuns>1?`s`:``} running`]:[`bg-neutral-300`,`idle`],r=R(`span`,`h-2 w-2 flex-none rounded-full ${t}`);return r.title=n,r}async function pl(e,t,n,r,i){let a=t=>{e(t),wl(),J.onPinsChanged()};a(t),(await m(r,i)).ok||a(n)}async function ml(e){let t=window.prompt(`Session name — empty resets it to the first message`,e.title??``);t!==null&&await pl(t=>e.title=t,t.trim()||void 0,e.title,`/api/sessions/${e.id}/rename`,{name:t})}var hl=(e,t)=>pl(t=>e.listed=t,t,!t,`/api/sessions/${e.id}/pin`,{pinned:t}),gl=(e,t)=>e.find(e=>e.cwd===t)?.branch??tr(t),_l=`flex-none truncate rounded bg-neutral-200/70 px-1 font-mono text-[10px] leading-[15px] text-neutral-500`,vl={telegram:`tg`};function yl(e){if(!e.channel||e.channel===`web`)return[];let t=R(`span`,_l,vl[e.channel]??e.channel);return t.title=`answering ${e.channel}`,[t]}function bl(e){let t=R(`li`,`group flex cursor-pointer items-center gap-1.5 py-1.5 pl-6 pr-3 hover:bg-neutral-100 ${e.id===J.currentId()?`bg-indigo-50 hover:bg-indigo-50`:``}`),n=R(`button`,ul,`⋯`);n.title=`Session actions`,n.onclick=t=>{t.stopPropagation(),J.sessionMenu(n,e)};let r=R(`button`,ul,`✓`);r.title=`Done — remove from Projects (the session and its transcript stay)`,r.onclick=t=>{t.stopPropagation(),hl(e,!1)},t.append(fl(e),R(`span`,`truncate`,e.title??`untitled`),R(`div`,`ml-auto flex flex-none items-center gap-1`,...yl(e),r,n)),t.onclick=()=>J.select(e.id),t.title=`Drag to reorder`;let i=Yc(e);return ll(t,i,e.id,(t,n)=>al(i,t,e.id,n)),t}function xl(e,t){let n=Qc(e,t),r=n[0]??e,i=R(`span`,`flex-none text-[11px] text-neutral-400 group-hover:hidden`,String(t.length)),a=R(`button`,ul,`⋯`);a.title=`Project actions`,a.onclick=e=>{e.preventDefault(),e.stopPropagation(),$s(a,[...n.map(e=>({label:n.length>1?`New session in ${gl(t,e)}`:`New session here`,hint:tr(e),onSelect:()=>{K(),J.createSession(e)}})),{label:`Browse files`,onSelect:()=>{K(),J.openFiles(r)}},{label:`Remove ${t.length} session${t.length>1?`s`:``} from Projects`,onSelect:()=>{K();for(let e of t)hl(e,!1)}}])};let{el:o,summary:s}=ur(`border-b border-neutral-200/70`,[R(`span`,`truncate font-mono text-[11px] font-semibold uppercase tracking-wide text-neutral-500`,Zc(e,t)),R(`div`,`ml-auto flex flex-none items-center gap-1.5`,i,a)]);s.className+=` group px-3 py-1.5 hover:bg-neutral-100`,s.title=`${n.join(`
83
- `)}\nDrag to reorder`,ll(s,``,e,(t,n)=>ol(t,e,n)),o.open=!Wc.has(e),o.ontoggle=()=>Kc(e,!o.open);let c=R(`ul`,`pb-1`);return c.append(...t.map(bl)),o.append(c),o}var Sl=()=>`${J.currentId()??``}\n${JSON.stringify(J.sessions())}`,Cl=``;function wl(e=!1){let t=Sl();if(t===Cl&&!e)return;Cl=t;let n=J.sessions().filter(dl);jc(n.length),Us(n.filter(e=>e.channel===`web`).length);let r=nl();Lc.replaceChildren(...r.length?r.map(([e,t])=>xl(e,t)):[R(`p`,`px-3 py-2 text-[12.5px] leading-snug text-neutral-400`,`No projects yet — create a session, or pin one from All sessions.`)]),Rc.open&&Pl()}var Tl=[{name:`tasks`,label:`Tasks`,detail:`Automation — task definitions and schedules`},{name:`runs`,label:`Runs`,detail:`Automation — executions, subagents, decisions and callbacks`},{name:`activity`,label:`Activity`,detail:`Automation — sessions and relationships`},{name:`boards`,label:`Boards`,detail:`Console — the static pages Pier publishes`},{name:`settings`,label:`Settings`,detail:`Console — models and providers, agent files and extensions, channels, password, sign out, security`}],El=[],Dl=0,Ol={ArrowDown:1,ArrowUp:-1},kl={n:1,j:1,p:-1,k:-1};function Al(e){if(El.length){Dl=(e+El.length)%El.length;for(let[e,{el:t}]of El.entries())t.classList.toggle(`bg-indigo-100`,e===Dl),t.classList.toggle(`border-indigo-500`,e===Dl);El[Dl]?.el.scrollIntoView({block:`nearest`})}}function jl(e){let t=R(`button`,`flex-none rounded px-1.5 py-0.5 text-[11.5px] ${e.listed?`bg-indigo-50 text-indigo-600`:`text-neutral-400 hover:bg-neutral-200 hover:text-neutral-700`}`,e.listed?`pinned`:`pin`);return t.title=e.listed?`Remove from Projects`:`Pin to Projects`,t.onclick=t=>{t.stopPropagation(),hl(e,!e.listed)},t}function Ml(e){let t=R(`li`,`flex cursor-pointer items-center gap-2 border-l-2 border-transparent px-3 py-1.5 hover:bg-neutral-100`);return t.append(e.session?fl(e.session):R(`span`,`h-2 w-2 flex-none`)),t.append(R(`span`,`min-w-0 flex-1 truncate`,e.label),R(`span`,`max-w-[45%] flex-none truncate text-[11.5px] text-neutral-400`,e.detail)),e.session&&t.append(R(`span`,`flex-none text-[11px] text-neutral-400`,$n(e.session.createdAt)),jl(e.session)),t.onclick=e.open,t}var Nl=e=>R(`li`,`px-3 pb-0.5 pt-2 text-[11px] font-semibold uppercase tracking-wide text-neutral-400`,e);function Pl(){let e=Bc.value.trim().toLowerCase(),t=t=>!e||t.toLowerCase().includes(e),n=e=>()=>{Rc.close(),e()},r=e=>e.channel&&e.channel!==`web`?e.channel:``,i=J.sessions().filter(e=>t(`${e.title??``} ${e.cwd} ${r(e)}`)),a=(e,t)=>t.createdAt-e.createdAt,o=e=>({label:e.title??nr(e.cwd),detail:[tr(e.cwd),r(e)].filter(Boolean).join(` · `),open:n(()=>J.select(e.id)),session:e}),s=i.filter(e=>e.state===`streaming`),c=i.filter(e=>e.state!==`streaming`),l=[`Console`,Tl.filter(e=>t(`${e.label} ${e.detail}`)).map(({name:e,label:t,detail:r})=>({label:t,detail:r,open:n(()=>J.openConsole(e))}))],u=[[`Running`,s.sort(a).map(o)],[`Projects`,c.filter(e=>e.listed).sort(a).map(o)],[`Other sessions`,c.filter(e=>!e.listed).sort(a).map(o)]];e?u.unshift(l):u.push(l),El=[];let d=[];for(let[e,t]of u)if(t.length){d.push(Nl(e));for(let e of t){let t=Ml(e);El.push({el:t,open:e.open}),d.push(t)}}zc.replaceChildren(...d.length?d:[R(`li`,`px-3 py-3 text-[13px] text-neutral-400`,`Nothing matches.`)]),Vc.textContent=String(El.length),Al(Dl)}function Fl(){if(Rc.open)return Rc.close();Bc.value=``,Dl=0,Pl(),Rc.showModal(),Bc.focus(),J.loadSessions().then(()=>{Rc.open&&Pl()})}function Il(e){J=e,gc(L(`#new-cwd`),rl);let t=L(`#new-session`),n=()=>{let e=J.sessions().find(e=>e.id===J.currentId())?.cwd??``,t=L(`#new-cwd`);t.value=e,Hc.showModal(),t.select()};t.onclick=n,Fo(t,`shift+o`,`New session`,n,()=>Hc.open),L(`#new-cancel`).onclick=()=>Hc.close(),L(`#new-form`).onsubmit=()=>void J.createSession(L(`#new-cwd`).value.trim());let r=L(`#open-archive`);r.onclick=Fl,Fo(r,`k`,`Search sessions and Console`,Fl,()=>Rc.open),L(`#archive-close`).onclick=()=>Rc.close(),Bc.oninput=()=>{Dl=0,Pl()},Bc.onkeydown=e=>{let t=e.altKey||e.metaKey||e.shiftKey||!e.key?void 0:e.ctrlKey?kl[e.key.toLowerCase()]:Ol[e.key];if(t!==void 0){e.preventDefault(),Al(Dl+t);return}e.key===`Enter`&&!e.ctrlKey&&(e.preventDefault(),El[Dl]?.open())}}var Y;function Ll(e){Y=e,zo(zl,()=>{let e=Y.currentSession();e&&(K(),hl(e,!e.listed))},Rl),zo(Bl,()=>{Y.currentSession()&&(K(),Y.toggleFiles())},Rl)}var Rl=()=>document.querySelector(`dialog[open]`)!==null,zl=`d`,Bl=`i`,Vl=L(`#chat-title`),Hl=L(`#chat-menu`),Ul=L(`#session-meta`),Wl=null,Gl=null,Kl=null,ql=null;function Jl(){Wl=null,Gl=null,Kl=null,ql=null,nu()}function Yl(e,t,n,r){Wl=e,Gl=t,Kl=n,ql=r,$l()}function Xl(e){ql=e.completedAt,Gl&&={...Gl,tokens:e.tokens},nu()}var Zl=null;function Ql(e){Zl=e===null?null:nr(e),$l()}function $l(){let e=Y.currentSession();e&&(Zl=null),Vl.textContent=e?e.title??nr(e.cwd):Zl??`no session`,Vl.classList.toggle(`cursor-pointer`,!!e),Vl.title=e?`Session info`:``,Vl.onclick=e?()=>ru(Vl,e):null,Hl.classList.toggle(`hidden`,!e),e&&(Hl.onclick=()=>lu(Hl,e)),nu(),Y.syncBar()}var eu=(e,t)=>Math.min(100,Math.round(e/t.contextWindow*100)),tu=e=>e.tokens===null?`?/${i(e.contextWindow)}`:`${i(e.tokens)}/${i(e.contextWindow)} · ${100-eu(e.tokens,e)}% left`;function nu(){let e=Gl,t=e?.tokens??null,n=Y.currentId(),r=[];if(!n&&Zl&&r.push(R(`span`,`flex flex-none items-center gap-1.5 text-neutral-500`,R(`span`,`spinner`),`starting…`)),n){let e=(e,t)=>{let r=R(`button`,`flex-none cursor-pointer font-mono ${t}`,e);return r.title=`Change model or reasoning`,r.onclick=()=>void iu(r,n),r};Wl&&r.push(e(Wl.id,`rounded bg-indigo-50 px-1.5 py-px font-medium text-indigo-700 hover:bg-indigo-100`)),Kl&&r.push(e(Kl,`text-neutral-500 hover:text-indigo-700`))}if(e&&t!==null){let n=eu(t,e),a=n>=90?`text-red-700`:n>=70?`text-amber-700`:`text-neutral-500`;r.push(R(`span`,`flex-none font-mono ${a}`,i(t).toLowerCase()))}let a=r.flatMap((e,t)=>t===0?[e]:[R(`span`,`text-neutral-300`,`·`),e]);Ul.replaceChildren(...a),Ul.classList.toggle(`hidden`,r.length===0),Ul.classList.toggle(`flex`,r.length>0)}function ru(e,t){let n=[[`Title`,t.title??`untitled`],[`Directory`,t.cwd],[`Session`,t.id]],r=t.id===Y.currentId();if(r&&(n.push([`Model`,Wl?.id??`—`]),n.push([`Reasoning`,Kl??`—`]),n.push([`Context`,Gl?tu(Gl):`—`])),n.push([`Created`,rr(t.createdAt),er(t.createdAt)]),r){let e=ql;n.push(e===null?[`Last reply`,`—`]:[`Last reply`,rr(e),er(e)])}let i=R(`div`,`flex max-w-80 flex-col gap-1.5 px-3 py-2`);for(let[e,t,r]of n){let n=R(`div`,`flex items-center gap-1.5`,R(`span`,`text-[10.5px] font-semibold uppercase tracking-wide text-neutral-400`,e),lr(`cursor-pointer text-[10.5px] uppercase tracking-wide text-neutral-400 opacity-0 hover:text-neutral-700 focus:opacity-100 group-hover:opacity-100 pointer-coarse:opacity-100`,()=>t)),a=R(`span`,`break-all font-mono text-[12px] text-neutral-700`,t);r&&a.append(R(`span`,`ml-1.5 font-sans text-[11px] text-neutral-400`,r)),i.append(R(`div`,`group flex flex-col`,n,a))}Zs(e,i)}async function iu(e,t){try{let[n,r]=await Promise.all([ie(`/api/sessions/${t}/models`,`Could not load models`),ie(`/api/sessions/${t}/thinking`,`Could not read the reasoning level`)]);Zs(e,oc({models:n,current:t===Y.currentId()?Wl:null,thinkingLevel:r.level,thinkingLevels:r.levels,onPick:(e,n)=>{K(),au(t,e,n)},onThinkingPick:e=>void su(t,e)}))}catch(e){V(`error`,`model options failed: ${String(e)}`)}}async function au(e,t,n){await ou(e,t)&&n&&await su(e,n)}async function ou(e,t){let n=Wl;e===Y.currentId()&&(Wl=t,$l());let r=await m(`/api/sessions/${e}/model`,t);if(!r.ok){let{error:t}=await r.json().catch(()=>({}));return e===Y.currentId()&&(Wl=n,$l()),V(`error`,`model change failed: ${t??r.status}`),!1}let{model:i}=await r.json();return e===Y.currentId()&&i&&(Wl=i,$l()),!0}async function su(e,t){let n=await m(`/api/sessions/${e}/thinking`,{level:t});if(!n.ok){V(`error`,`reasoning change failed: ${n.status}`);return}let{level:r}=await n.json();e===Y.currentId()&&(Kl=r,nu())}async function cu(e){let t=await m(`/api/sessions/${e}/compact`,{});t.ok||V(`error`,`compact failed: ${await h(t,`no reason given`)}`)}function lu(e,t){let n=t.id===Y.currentId();$s(e,[{label:`Session info`,onSelect:()=>ru(e,t)},{label:`Rename…`,onSelect:()=>{K(),ml(t)}},{label:t.listed?`Done — remove from Projects`:`Pin to Projects`,hint:n?Mo(zl):``,onSelect:()=>{K(),hl(t,!t.listed)}},{label:`Model`,hint:n?Wl?.id??`…`:``,onSelect:()=>void iu(e,t.id)},{label:`Compact context`,onSelect:()=>{K(),cu(t.id)}},{label:`New session here`,hint:tr(t.cwd),onSelect:()=>{K(),Y.createSession(t.cwd)}},{label:`Browse files`,hint:n?Mo(Bl):``,onSelect:()=>{K(),Y.openFiles(n?void 0:t.cwd)}}])}var uu=`pier.theme`,du=[`system`,`light`,`dark`],fu=window.matchMedia(`(prefers-color-scheme: dark)`),pu={system:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" class="h-3.5 w-3.5"><circle cx="8" cy="8" r="5.25"/><path d="M8 2.75a5.25 5.25 0 0 0 0 10.5z" fill="currentColor" stroke="none"/></svg>`,light:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" class="h-3.5 w-3.5"><circle cx="8" cy="8" r="3.1"/><path d="M8 1.5v1.4M8 13.1v1.4M1.5 8h1.4M13.1 8h1.4M3.4 3.4l1 1M11.6 11.6l1 1M12.6 3.4l-1 1M4.4 11.6l-1 1"/></svg>`,dark:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" class="h-3.5 w-3.5"><path d="M13 9.4A5.6 5.6 0 0 1 6.6 3a5.6 5.6 0 1 0 6.4 6.4z"/></svg>`},mu=()=>{let e=null;try{e=localStorage.getItem(uu)}catch{return`system`}return e===`light`||e===`dark`?e:`system`},hu=()=>{let e=mu();return e===`system`?fu.matches?`dark`:`light`:e};function gu(){let e=hu();document.documentElement.dataset.theme=e,L(`meta[name="theme-color"]`).setAttribute(`content`,e===`dark`?`#1c1c1c`:`#fafafa`),window.dispatchEvent(new Event(`pier:theme`))}function _u(){let e=L(`#theme-toggle`),t=()=>{let t=mu();e.title=`Theme: ${t}${t===`system`?` (${hu()})`:``}`,e.innerHTML=pu[t],gu()};e.onclick=()=>{let e=du[(du.indexOf(mu())+1)%du.length];try{e===`system`?localStorage.removeItem(uu):localStorage.setItem(uu,e)}catch{}t()},fu.addEventListener(`change`,t),t()}var vu=`https://github.com/timqi/pier`,yu=[`text-neutral-400`,`hover:text-neutral-700`],bu=[`rounded-full`,`bg-emerald-50`,`px-1.5`,`text-emerald-700`,`ring-1`,`ring-inset`,`ring-emerald-600/20`,`hover:bg-emerald-100`],xu=18e5,X=null,Su=L(`#version`);function Cu(e){let t=X?.available===!0&&X.latest!==null;Su.textContent=`v${e}`,Su.title=t?`Pier ${X?.latest} is out`:``,Su.classList.remove(...t?yu:bu),Su.classList.add(...t?bu:yu)}var wu=e=>R(`p`,`px-3 py-1 text-[12px] leading-snug text-neutral-500`,e);function Tu(){let e=R(`div`,`flex w-72 flex-col gap-1 py-1`);if(!X)return e.append(wu(`Checking the registry…`)),e;let{current:t,latest:n,available:r,canApply:i,problem:a}=X;e.append(R(`p`,`px-3 py-1 text-[12.5px] font-medium text-neutral-700`,r?`Pier ${n} is out`:`Pier ${t}`)),e.append(wu(r?`You are running ${t}.`:n===null?`The registry could not be reached, so this may not be the latest.`:`This is the latest release.`));let o=R(`span`,`px-3 text-[11.5px] text-neutral-400`,``),s=R(`div`,`flex items-center gap-2 px-3 py-1.5`);if(a&&e.append(R(`p`,`mx-3 my-1 rounded-md bg-red-50 px-2 py-1.5 text-[11.5px] leading-snug text-red-700`,a)),r&&i&&!a){let e=fr(`Update now`,!0);e.onclick=()=>{e.disabled=!0,o.className=`px-3 text-[11.5px] text-neutral-400`,o.textContent=`starting the updater…`,(async()=>{let t=await m(`/api/update`,{});if(!t.ok){e.disabled=!1,o.className=`px-3 text-[11.5px] text-red-600`,o.textContent=await h(t,`Could not update`);return}let{draining:n}=await t.json();o.textContent=n?`Waiting for running work to finish — Pier then installs and restarts.`:`Installing — Pier restarts once it is on disk, and this page reconnects on its own.`})()},s.append(e)}let c=R(`a`,`btn text-[12.5px] no-underline`,`Source`);c.href=r?`${vu}/releases`:vu,c.target=`_blank`,c.rel=`noreferrer`,c.title=`Pier is free software (AGPL-3.0)`,s.append(c),e.append(s,o),r&&!i&&!a&&e.append(wu(`No service manager owns this Pier, so it cannot restart itself — update it with: pier update`));let l=wr(`Update automatically`,i?`Installs a new release once nothing is running — no turn in flight, no task run.`:`Needs the systemd service (pier service install); nothing here can restart Pier.`,X.autoUpdate,e=>{X&&(X.autoUpdate=e),(async()=>{let t=await m(`/api/settings`,{autoUpdate:e},`PUT`);if(t.ok)return;X&&(X.autoUpdate=!e);let n=l.querySelector(`input`);n&&(n.checked=!e),o.className=`px-3 text-[11.5px] text-red-600`,o.textContent=await h(t,`Could not save`)})()});if(!i){let e=l.querySelector(`input`);e&&(e.disabled=!0)}return e.append(R(`div`,`mt-1 border-t border-neutral-200 px-3 pb-1 pt-2`,l)),e}async function Eu(e){let t=await g(`/api/update`,`Update check failed`);t.ok&&(X=t.value,Cu(X.current||e))}function Du(e){Cu(e),Su.onclick=e=>{e.preventDefault(),Zs(Su,Tu())};let t=()=>void Eu(e).catch(()=>{});t(),setInterval(t,xu)}var Z,Ou=L(`#chat-header`),ku=L(`#chat-title`),Au=[Ou,B,L(`#composer`)],ju=()=>Ru===null,Mu,Nu,Pu,Fu=new Map,Iu=new Map,Lu=new Map,Ru=null,zu=0,Bu=[`files`],Vu=new Map,Hu={tasks:`Tasks`,runs:`Runs`,activity:`Activity`,boards:`Boards`,settings:`Settings`,files:`Files`},Uu=[`tasks`,`runs`,`activity`],Wu=`Automation`,Gu=L(`#automation-view`),Ku=L(`#automation-tabs`),qu=e=>Uu.includes(e)?`tasks`:e;function Ju(e){let t=e!==null&&Uu.includes(e);Gu.classList.toggle(`hidden`,!t),Gu.classList.toggle(`flex`,t),t&&Ku.replaceChildren(...Uu.map(t=>gr(Hu[t],t===e,()=>$u(t))))}var Yu=e=>Mu?.refresh(e),Xu=()=>Nu?.refresh(),Zu=()=>Pu?.refresh();function Qu(){Ru?Cc(Uu.includes(Ru)?Wu:Hu[Ru],!1):Cc(ku.textContent??``,Z.currentSession()!==void 0)}function $u(e,t,n){if(Bu.includes(e)){let t=dd();t&&(t.kind!==`console`||t.name!==e)&&Vu.set(e,t)}pd({kind:`console`,name:e,arg:t,query:n}),Sc(),Ru=e;for(let e of Au)e.classList.add(`hidden`);cs();for(let[t,n]of Fu)t!==e&&n.hide();for(let[t,n]of Lu)n.classList.toggle(`bg-indigo-50`,t===qu(e));Ju(e),Qu(),ed(e,t,n,++zu)}async function ed(e,t,n,r){let i=Fu.get(e);if(!i){let t=Iu.get(e);if(!t){let n=L(`#${e}-view`);t=gd[e](n).catch(t=>(console.warn(`${e} view failed to load`,t),ar(n,()=>n.replaceChildren(R(`p`,`p-4 text-[13px] text-red-600`,`Could not load ${Hu[e]} — reload the page.`))))),Iu.set(e,t)}i=await t,Fu.set(e,i),Iu.delete(e)}Ru===e&&r===zu&&i.show(t,n)}var td=e=>$u(`tasks`,e),nd=(e={},t)=>$u(`runs`,t,new URLSearchParams(e).toString()),rd=e=>nd({},e),id=e=>$u(`files`,e),ad=(e,t)=>{Ru===e?sd(e):$u(e,t)},od=e=>ad(`files`,e);function sd(e){let t=Z.currentId(),n=Vu.get(e)??(t?{kind:`session`,id:t}:null);Vu.delete(e),n?pd(n):(history.replaceState(null,``,`#/`),cd())}function cd(){if(Ru){Ru=null;for(let e of Fu.values())e.hide();for(let e of Lu.values())e.classList.remove(`bg-indigo-50`);Ju(null);for(let e of Au)e.classList.remove(`hidden`);cs(),Qu(),Z.maybeAckRead()}}var ld=e=>e.kind===`session`?`#/session/${encodeURIComponent(e.id)}`:`#/${e.name}${e.arg?`/${encodeURIComponent(e.arg)}`:``}${e.query?`?${e.query}`:``}`,ud={config:`files`,channels:`channels`,providers:`models`};function dd(){let e=location.hash.replace(/^#\/?/,``),t=e.indexOf(`?`),[n=``,r]=(t<0?e:e.slice(0,t)).split(`/`),i=t<0?void 0:e.slice(t+1)||void 0,a;try{a=r?decodeURIComponent(r):void 0}catch{return null}return ud[n]?{kind:`console`,name:`settings`,arg:ud[n]}:Object.hasOwn(Hu,n)?{kind:`console`,name:n,arg:a,query:i}:n===`session`&&a?{kind:`session`,id:a}:null}var fd=!1;function pd(e,t=!1){if(fd)return;let n=ld(e);location.hash!==n&&(t?history.replaceState(null,``,n):location.hash=n)}var md=e=>pd({kind:`session`,id:e});function hd(){let e=dd(),t=Z.sessions(),n=Z.currentId(),r=(e?.kind===`session`?e.id:null)??n??(t.find(e=>e.listed)??t[0])?.id??null;fd=!0;try{r&&r!==n&&Z.select(r),e?.kind===`console`?$u(e.name,e.arg,e.query):cd(),r||$l()}finally{fd=!1}e?.kind!==`console`&&r&&pd({kind:`session`,id:r},!0)}var gd={tasks:async e=>Mu=(await fi(async()=>{let{createTasksView:e}=await import(`./tasks-DQnZGbBg.js`);return{createTasksView:e}},__vite__mapDeps([0,1]))).createTasksView(e,()=>Z.sessions().map(({id:e,cwd:t,title:n})=>({id:e,cwd:t,title:n})),Z.loadSessions,Z.select,()=>Z.currentId(),nd,td),runs:async e=>Nu=(await fi(async()=>{let{createRunsView:e}=await import(`./runs-C7BNc137.js`);return{createRunsView:e}},__vite__mapDeps([2,1]))).createRunsView(e,Z.select,nd,td),activity:async e=>Pu=(await fi(async()=>{let{createActivityView:e}=await import(`./activity-DRJDNEP9.js`);return{createActivityView:e}},[])).createActivityView(e,Z.select,rd),boards:async e=>(await fi(async()=>{let{createBoardsView:e}=await import(`./boards-ZmKTkCZ-.js`);return{createBoardsView:e}},[])).createBoardsView(e,Z.select),files:async e=>(await fi(async()=>{let{createExplorerView:e}=await import(`./explorer-De8NHWLj.js`);return{createExplorerView:e}},__vite__mapDeps([3,4]))).createExplorerView(e,()=>Z.currentSession(),e=>$u(`files`,e),()=>sd(`files`)),settings:async e=>(await fi(async()=>{let{createSettingsView:e}=await import(`./settings-BcWcHc7F.js`);return{createSettingsView:e}},__vite__mapDeps([5,4]))).createSettingsView(e,()=>[...Jc(Z.sessions()).keys()],e=>$u(`settings`,e))};function _d(e){Z=e;for(let e of[`tasks`,`boards`,`settings`]){let t=L(`#open-${e}`);Lu.set(e,t),t.onclick=()=>$u(e)}let t=L(`#console-section`);t.open=localStorage.getItem(`pier.consoleCollapsed`)!==`1`,t.ontoggle=()=>localStorage.setItem(`pier.consoleCollapsed`,t.open?`0`:`1`),window.onhashchange=hd}var Q=[],vd=0,yd=0,bd=!1,$=null,xd=`idle`,Sd=null,Cd=0,wd=!1,Td=!1;async function Ed(e){let t=++vd;++yd,bd=!1,cd(),Sc(),$=null,Sd?.close(),Sd=null,po(),ls([]),Jl(),Ql(e),mo(!0),Td=!0,ss();let n=await m(`/api/sessions`,{cwd:e});if(t!==vd)return;if(Td=!1,!n.ok){mo(!1),Ql(null),ss(),V(`error`,`session create failed: ${n.status}`);return}let{id:r}=await n.json();if(t!==vd)return;let{repo:i,branch:a}=Q.find(t=>t.cwd===e)??{};Q.unshift({id:r,cwd:e,createdAt:Date.now(),state:`idle`,listed:!0,unread:!1,channel:`web`,activeRuns:0,repo:i,branch:a}),await Ld(r),$===r&&rs()}function Dd(e,t){let n=e.map(e=>({...e,title:ne(e.title)}));if(t)Q=n;else{let e=new Map(n.map(e=>[e.id,e]));Q=Q.map(t=>e.get(t.id)??(t.listed?{...t,listed:!1}:t));let t=new Set(Q.map(e=>e.id));Q.push(...n.filter(e=>!t.has(e.id)))}Q.sort((e,t)=>t.createdAt-e.createdAt),wl(),Ad()}var Od=re(async()=>{Dd(await ie(`/api/projects`,`Could not load projects`),!1)}),kd=re(async()=>{Dd(await ie(`/api/sessions`,`Could not load sessions`),!0)});function Ad(){if(document.hidden||!document.hasFocus()||!ju())return;let e=Q.find(e=>e.id===$);e?.unread&&(e.unread=!1,wl(),fetch(`/api/sessions/${e.id}/read`,{method:`POST`}))}function jd(){return Q.find(e=>e.id===$)}function Md(e,t){let n=Q.find(t=>t.id===e);!n||n.title||!t.trim()||(n.title=t.trim().slice(0,80),wl(),$l())}function Nd(e){xd=e;let t=Q.find(e=>e.id===$);t&&(t.state=e),wl(),$l(),ss(),e===`idle`&&Od()}function Pd(e){if(!(e.sessionId!==$||e.seq<=Cd))switch(Cd=e.seq,e.type){case`turn-start`:wd=!0;break;case`system-input`:lo(),Ia(e.text,e.origin);break;case`task-status`:Vi(e.run);break;case`user-message`:{let t=te(e.text).text;if(Md(e.sessionId,t),is(t))break;lo(),V(`user`,e.text,!1,e.ts),Ea();break}case`text-delta`:co(e.text);break;case`thinking-delta`:pa(e.ts,e.text);break;case`tool-start`:lo(),da(e.ts,e.toolCallId,e.toolName,e.args);break;case`tool-end`:fa(e.toolCallId,e.isError,e.output);break;case`turn-end`:wd=!1,uo(e.text,e.meta),e.meta&&Xl(e.meta);break;case`queue-state`:us(e.steering,e.followUp);break;case`queue-recovery`:ls(e.batches,e.uncertain);break;case`context-compacted`:lo(),V(`system`,`Context compacted — ${i(e.before)} → ${i(e.after)}`,!1,e.ts),Ea();break;case`error`:la(),V(`error`,e.message);break;case`state`:e.state===`idle`&&wd&&(wd=!1,fo()),e.state===`idle`&&us([],[]),Nd(e.state)}}function Fd(){let e=new EventSource(`/api/events`);e.onopen=()=>void Od(),e.onerror=()=>Do(e,`Workspace`),e.onmessage=e=>{let t=JSON.parse(e.data);if(t.type===`sessions-changed`){Od();return}if(t.type===`tasks-changed`||t.type===`task-run-changed`||t.type===`task-message-changed`||t.type===`task-group-changed`){Yu(t.type===`task-run-changed`?t.taskId:void 0),Xu(),Zu(),t.type===`task-run-changed`&&Od();return}if(Zu(),t.sessionId===$)return;let n=Q.find(e=>e.id===t.sessionId);n&&(n.state=t.state,wl())}}function Id(e,t,n){Sd?.close();let r=new EventSource(`/api/sessions/${e}/events?after=${t}`),i=()=>Sd===r&&$===e&&n===yd;r.onmessage=e=>{i()&&Pd(JSON.parse(e.data))},r.addEventListener(`reset`,()=>{i()&&Rd(e)}),r.onerror=()=>{i()&&Do(r,`Session`)},Sd=r}async function Ld(e){cd(),Sc(),md(e);let t=Q.some(t=>t.id===e);if(e===$&&t&&(Sd||bd))return;let n=++vd;if(++yd,Td=!1,_s(),$=e,xd=Q.find(t=>t.id===e)?.state??`idle`,vs(e),wl(),$l(),Ad(),t)return await Rd(e);Sd?.close(),Sd=null,po(),mo(!0),await kd(),n===vd&&$===e&&await Rd(e,!Q.some(t=>t.id===e))}async function Rd(e,t=!1){if($!==e)return;let n=++yd;if(Sd?.close(),Sd=null,bd=!0,po(),us([],[]),ls([]),Jl(),wd=!1,os(),Cd=0,mo(!0),t){bd=!1,mo(!1),V(`error`,`session not found: ${e}`);return}let r=await g(`/api/sessions/${e}/history`,`failed to load session`);if($!==e||n!==yd)return;if(bd=!1,!r.ok){mo(!1),V(`error`,r.error);return}let i=r.value;ho(i.turns,i.state,i.backgroundRuns),Cd=i.lastSeq,wd=i.state===`streaming`,Nd(i.state),us(i.queue.steering,i.queue.followUp),ls(i.queueRecovery,i.queueUncertain);let a=i.turns.reduce((e,t)=>t.meta?.completedAt??e,null);Yl(i.model,i.context,i.thinkingLevel,a),Id(e,`${i.epoch}:${i.lastSeq}`,n)}Co(),Eo(),_u();var zd=async e=>{$===e&&await Rd(e)};ya({sessionId:()=>$,sessionState:()=>xd,select:e=>void Ld(e),showRun:rd,send:(e,t)=>void xs(e,t),ownTurn:e=>{as(e),Nd(`streaming`)},reload:zd}),ws({sessionId:()=>$,starting:()=>Td,sessionState:()=>xd,chatVisible:ju,setState:Nd,reload:zd}),Ic({sessionMenu:e=>{let t=jd();t&&lu(e,t)},sessionInfo:e=>{let t=jd();t&&ru(e,t)}}),Il({sessions:()=>Q,loadSessions:kd,currentId:()=>$,select:e=>void Ld(e),sessionMenu:lu,createSession:Ed,openFiles:id,openConsole:$u,onPinsChanged:$l}),Ll({currentId:()=>$,currentSession:jd,createSession:e=>void Ed(e),syncBar:Qu,openFiles:id,toggleFiles:od}),_d({sessions:()=>Q,loadSessions:kd,currentId:()=>$,currentSession:jd,select:e=>void Ld(e),maybeAckRead:Ad}),Du(`0.0.24`),zs(),document.addEventListener(`visibilitychange`,Ad),window.addEventListener(`focus`,Ad),Fd(),Od().then(hd);export{Ar as A,re as B,hr as C,Cr as D,br as E,ur as F,m as G,g as H,ir as I,ne as K,R as L,tr as M,ar as N,wr as O,lr as P,$n as R,gr as S,Er as T,ie as U,h as V,ae as W,_r as _,Zs as a,kr as b,Ti as c,yi as d,yr as f,fr as g,pr as h,K as i,er as j,mr as k,Ei as l,Dr as m,pc as n,Ws as o,Tr as p,r as q,sc as r,Ro as s,_c as t,vi as u,Or as v,Sr as w,xr as x,vr as y,nr as z};
83
+ `)}\nDrag to reorder`,ll(s,``,e,(t,n)=>ol(t,e,n)),o.open=!Wc.has(e),o.ontoggle=()=>Kc(e,!o.open);let c=R(`ul`,`pb-1`);return c.append(...t.map(bl)),o.append(c),o}var Sl=()=>`${J.currentId()??``}\n${JSON.stringify(J.sessions())}`,Cl=``;function wl(e=!1){let t=Sl();if(t===Cl&&!e)return;Cl=t;let n=J.sessions().filter(dl);jc(n.length),Us(n.filter(e=>e.channel===`web`).length);let r=nl();Lc.replaceChildren(...r.length?r.map(([e,t])=>xl(e,t)):[R(`p`,`px-3 py-2 text-[12.5px] leading-snug text-neutral-400`,`No projects yet — create a session, or pin one from All sessions.`)]),Rc.open&&Pl()}var Tl=[{name:`tasks`,label:`Tasks`,detail:`Automation — task definitions and schedules`},{name:`runs`,label:`Runs`,detail:`Automation — executions, subagents, decisions and callbacks`},{name:`activity`,label:`Activity`,detail:`Automation — sessions and relationships`},{name:`boards`,label:`Boards`,detail:`Console — the static pages Pier publishes`},{name:`settings`,label:`Settings`,detail:`Console — models and providers, agent files and extensions, channels, password, sign out, security`}],El=[],Dl=0,Ol={ArrowDown:1,ArrowUp:-1},kl={n:1,j:1,p:-1,k:-1};function Al(e){if(El.length){Dl=(e+El.length)%El.length;for(let[e,{el:t}]of El.entries())t.classList.toggle(`bg-indigo-100`,e===Dl),t.classList.toggle(`border-indigo-500`,e===Dl);El[Dl]?.el.scrollIntoView({block:`nearest`})}}function jl(e){let t=R(`button`,`flex-none rounded px-1.5 py-0.5 text-[11.5px] ${e.listed?`bg-indigo-50 text-indigo-600`:`text-neutral-400 hover:bg-neutral-200 hover:text-neutral-700`}`,e.listed?`pinned`:`pin`);return t.title=e.listed?`Remove from Projects`:`Pin to Projects`,t.onclick=t=>{t.stopPropagation(),hl(e,!e.listed)},t}function Ml(e){let t=R(`li`,`flex cursor-pointer items-center gap-2 border-l-2 border-transparent px-3 py-1.5 hover:bg-neutral-100`);return t.append(e.session?fl(e.session):R(`span`,`h-2 w-2 flex-none`)),t.append(R(`span`,`min-w-0 flex-1 truncate`,e.label),R(`span`,`max-w-[45%] flex-none truncate text-[11.5px] text-neutral-400`,e.detail)),e.session&&t.append(R(`span`,`flex-none text-[11px] text-neutral-400`,$n(e.session.createdAt)),jl(e.session)),t.onclick=e.open,t}var Nl=e=>R(`li`,`px-3 pb-0.5 pt-2 text-[11px] font-semibold uppercase tracking-wide text-neutral-400`,e);function Pl(){let e=Bc.value.trim().toLowerCase(),t=t=>!e||t.toLowerCase().includes(e),n=e=>()=>{Rc.close(),e()},r=e=>e.channel&&e.channel!==`web`?e.channel:``,i=J.sessions().filter(e=>t(`${e.title??``} ${e.cwd} ${r(e)}`)),a=(e,t)=>t.createdAt-e.createdAt,o=e=>({label:e.title??nr(e.cwd),detail:[tr(e.cwd),r(e)].filter(Boolean).join(` · `),open:n(()=>J.select(e.id)),session:e}),s=i.filter(e=>e.state===`streaming`),c=i.filter(e=>e.state!==`streaming`),l=[`Console`,Tl.filter(e=>t(`${e.label} ${e.detail}`)).map(({name:e,label:t,detail:r})=>({label:t,detail:r,open:n(()=>J.openConsole(e))}))],u=[[`Running`,s.sort(a).map(o)],[`Projects`,c.filter(e=>e.listed).sort(a).map(o)],[`Other sessions`,c.filter(e=>!e.listed).sort(a).map(o)]];e?u.unshift(l):u.push(l),El=[];let d=[];for(let[e,t]of u)if(t.length){d.push(Nl(e));for(let e of t){let t=Ml(e);El.push({el:t,open:e.open}),d.push(t)}}zc.replaceChildren(...d.length?d:[R(`li`,`px-3 py-3 text-[13px] text-neutral-400`,`Nothing matches.`)]),Vc.textContent=String(El.length),Al(Dl)}function Fl(){if(Rc.open)return Rc.close();Bc.value=``,Dl=0,Pl(),Rc.showModal(),Bc.focus(),J.loadSessions().then(()=>{Rc.open&&Pl()})}function Il(e){J=e,gc(L(`#new-cwd`),rl);let t=L(`#new-session`),n=()=>{let e=J.sessions().find(e=>e.id===J.currentId())?.cwd??``,t=L(`#new-cwd`);t.value=e,Hc.showModal(),t.select()};t.onclick=n,Fo(t,`shift+o`,`New session`,n,()=>Hc.open),L(`#new-cancel`).onclick=()=>Hc.close(),L(`#new-form`).onsubmit=()=>void J.createSession(L(`#new-cwd`).value.trim());let r=L(`#open-archive`);r.onclick=Fl,Fo(r,`k`,`Search sessions and Console`,Fl,()=>Rc.open),L(`#archive-close`).onclick=()=>Rc.close(),Bc.oninput=()=>{Dl=0,Pl()},Bc.onkeydown=e=>{let t=e.altKey||e.metaKey||e.shiftKey||!e.key?void 0:e.ctrlKey?kl[e.key.toLowerCase()]:Ol[e.key];if(t!==void 0){e.preventDefault(),Al(Dl+t);return}e.key===`Enter`&&!e.ctrlKey&&(e.preventDefault(),El[Dl]?.open())}}var Y;function Ll(e){Y=e,zo(zl,()=>{let e=Y.currentSession();e&&(K(),hl(e,!e.listed))},Rl),zo(Bl,()=>{Y.currentSession()&&(K(),Y.toggleFiles())},Rl)}var Rl=()=>document.querySelector(`dialog[open]`)!==null,zl=`d`,Bl=`i`,Vl=L(`#chat-title`),Hl=L(`#chat-menu`),Ul=L(`#session-meta`),Wl=null,Gl=null,Kl=null,ql=null;function Jl(){Wl=null,Gl=null,Kl=null,ql=null,nu()}function Yl(e,t,n,r){Wl=e,Gl=t,Kl=n,ql=r,$l()}function Xl(e){ql=e.completedAt,Gl&&={...Gl,tokens:e.tokens},nu()}var Zl=null;function Ql(e){Zl=e===null?null:nr(e),$l()}function $l(){let e=Y.currentSession();e&&(Zl=null),Vl.textContent=e?e.title??nr(e.cwd):Zl??`no session`,Vl.classList.toggle(`cursor-pointer`,!!e),Vl.title=e?`Session info`:``,Vl.onclick=e?()=>ru(Vl,e):null,Hl.classList.toggle(`hidden`,!e),e&&(Hl.onclick=()=>lu(Hl,e)),nu(),Y.syncBar()}var eu=(e,t)=>Math.min(100,Math.round(e/t.contextWindow*100)),tu=e=>e.tokens===null?`?/${i(e.contextWindow)}`:`${i(e.tokens)}/${i(e.contextWindow)} · ${100-eu(e.tokens,e)}% left`;function nu(){let e=Gl,t=e?.tokens??null,n=Y.currentId(),r=[];if(!n&&Zl&&r.push(R(`span`,`flex flex-none items-center gap-1.5 text-neutral-500`,R(`span`,`spinner`),`starting…`)),n){let e=(e,t)=>{let r=R(`button`,`flex-none cursor-pointer font-mono ${t}`,e);return r.title=`Change model or reasoning`,r.onclick=()=>void iu(r,n),r};Wl&&r.push(e(Wl.id,`rounded bg-indigo-50 px-1.5 py-px font-medium text-indigo-700 hover:bg-indigo-100`)),Kl&&r.push(e(Kl,`text-neutral-500 hover:text-indigo-700`))}if(e&&t!==null){let n=eu(t,e),a=n>=90?`text-red-700`:n>=70?`text-amber-700`:`text-neutral-500`;r.push(R(`span`,`flex-none font-mono ${a}`,i(t).toLowerCase()))}let a=r.flatMap((e,t)=>t===0?[e]:[R(`span`,`text-neutral-300`,`·`),e]);Ul.replaceChildren(...a),Ul.classList.toggle(`hidden`,r.length===0),Ul.classList.toggle(`flex`,r.length>0)}function ru(e,t){let n=[[`Title`,t.title??`untitled`],[`Directory`,t.cwd],[`Session`,t.id]],r=t.id===Y.currentId();if(r&&(n.push([`Model`,Wl?.id??`—`]),n.push([`Reasoning`,Kl??`—`]),n.push([`Context`,Gl?tu(Gl):`—`])),n.push([`Created`,rr(t.createdAt),er(t.createdAt)]),r){let e=ql;n.push(e===null?[`Last reply`,`—`]:[`Last reply`,rr(e),er(e)])}let i=R(`div`,`flex max-w-80 flex-col gap-1.5 px-3 py-2`);for(let[e,t,r]of n){let n=R(`div`,`flex items-center gap-1.5`,R(`span`,`text-[10.5px] font-semibold uppercase tracking-wide text-neutral-400`,e),lr(`cursor-pointer text-[10.5px] uppercase tracking-wide text-neutral-400 opacity-0 hover:text-neutral-700 focus:opacity-100 group-hover:opacity-100 pointer-coarse:opacity-100`,()=>t)),a=R(`span`,`break-all font-mono text-[12px] text-neutral-700`,t);r&&a.append(R(`span`,`ml-1.5 font-sans text-[11px] text-neutral-400`,r)),i.append(R(`div`,`group flex flex-col`,n,a))}Zs(e,i)}async function iu(e,t){try{let[n,r]=await Promise.all([ie(`/api/sessions/${t}/models`,`Could not load models`),ie(`/api/sessions/${t}/thinking`,`Could not read the reasoning level`)]);Zs(e,oc({models:n,current:t===Y.currentId()?Wl:null,thinkingLevel:r.level,thinkingLevels:r.levels,onPick:(e,n)=>{K(),au(t,e,n)},onThinkingPick:e=>void su(t,e)}))}catch(e){V(`error`,`model options failed: ${String(e)}`)}}async function au(e,t,n){await ou(e,t)&&n&&await su(e,n)}async function ou(e,t){let n=Wl;e===Y.currentId()&&(Wl=t,$l());let r=await m(`/api/sessions/${e}/model`,t);if(!r.ok){let{error:t}=await r.json().catch(()=>({}));return e===Y.currentId()&&(Wl=n,$l()),V(`error`,`model change failed: ${t??r.status}`),!1}let{model:i}=await r.json();return e===Y.currentId()&&i&&(Wl=i,$l()),!0}async function su(e,t){let n=await m(`/api/sessions/${e}/thinking`,{level:t});if(!n.ok){V(`error`,`reasoning change failed: ${n.status}`);return}let{level:r}=await n.json();e===Y.currentId()&&(Kl=r,nu())}async function cu(e){let t=await m(`/api/sessions/${e}/compact`,{});t.ok||V(`error`,`compact failed: ${await h(t,`no reason given`)}`)}function lu(e,t){let n=t.id===Y.currentId();$s(e,[{label:`Session info`,onSelect:()=>ru(e,t)},{label:`Rename…`,onSelect:()=>{K(),ml(t)}},{label:t.listed?`Done — remove from Projects`:`Pin to Projects`,hint:n?Mo(zl):``,onSelect:()=>{K(),hl(t,!t.listed)}},{label:`Model`,hint:n?Wl?.id??`…`:``,onSelect:()=>void iu(e,t.id)},{label:`Compact context`,onSelect:()=>{K(),cu(t.id)}},{label:`New session here`,hint:tr(t.cwd),onSelect:()=>{K(),Y.createSession(t.cwd)}},{label:`Browse files`,hint:n?Mo(Bl):``,onSelect:()=>{K(),Y.openFiles(n?void 0:t.cwd)}}])}var uu=`pier.theme`,du=[`system`,`light`,`dark`],fu=window.matchMedia(`(prefers-color-scheme: dark)`),pu={system:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" class="h-3.5 w-3.5"><circle cx="8" cy="8" r="5.25"/><path d="M8 2.75a5.25 5.25 0 0 0 0 10.5z" fill="currentColor" stroke="none"/></svg>`,light:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" class="h-3.5 w-3.5"><circle cx="8" cy="8" r="3.1"/><path d="M8 1.5v1.4M8 13.1v1.4M1.5 8h1.4M13.1 8h1.4M3.4 3.4l1 1M11.6 11.6l1 1M12.6 3.4l-1 1M4.4 11.6l-1 1"/></svg>`,dark:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" class="h-3.5 w-3.5"><path d="M13 9.4A5.6 5.6 0 0 1 6.6 3a5.6 5.6 0 1 0 6.4 6.4z"/></svg>`},mu=()=>{let e=null;try{e=localStorage.getItem(uu)}catch{return`system`}return e===`light`||e===`dark`?e:`system`},hu=()=>{let e=mu();return e===`system`?fu.matches?`dark`:`light`:e};function gu(){let e=hu();document.documentElement.dataset.theme=e,L(`meta[name="theme-color"]`).setAttribute(`content`,e===`dark`?`#1c1c1c`:`#fafafa`),window.dispatchEvent(new Event(`pier:theme`))}function _u(){let e=L(`#theme-toggle`),t=()=>{let t=mu();e.title=`Theme: ${t}${t===`system`?` (${hu()})`:``}`,e.innerHTML=pu[t],gu()};e.onclick=()=>{let e=du[(du.indexOf(mu())+1)%du.length];try{e===`system`?localStorage.removeItem(uu):localStorage.setItem(uu,e)}catch{}t()},fu.addEventListener(`change`,t),t()}var vu=`https://github.com/timqi/pier`,yu=[`text-neutral-400`,`hover:text-neutral-700`],bu=[`rounded-full`,`bg-emerald-50`,`px-1.5`,`text-emerald-700`,`ring-1`,`ring-inset`,`ring-emerald-600/20`,`hover:bg-emerald-100`],xu=18e5,X=null,Su=L(`#version`);function Cu(e){let t=X?.available===!0&&X.latest!==null;Su.textContent=`v${e}`,Su.title=t?`Pier ${X?.latest} is out`:``,Su.classList.remove(...t?yu:bu),Su.classList.add(...t?bu:yu)}var wu=e=>R(`p`,`px-3 py-1 text-[12px] leading-snug text-neutral-500`,e);function Tu(){let e=R(`div`,`flex w-72 flex-col gap-1 py-1`);if(!X)return e.append(wu(`Checking the registry…`)),e;let{current:t,latest:n,available:r,canApply:i,problem:a}=X;e.append(R(`p`,`px-3 py-1 text-[12.5px] font-medium text-neutral-700`,r?`Pier ${n} is out`:`Pier ${t}`)),e.append(wu(r?`You are running ${t}.`:n===null?`The registry could not be reached, so this may not be the latest.`:`This is the latest release.`));let o=R(`span`,`px-3 text-[11.5px] text-neutral-400`,``),s=R(`div`,`flex items-center gap-2 px-3 py-1.5`);if(a&&e.append(R(`p`,`mx-3 my-1 rounded-md bg-red-50 px-2 py-1.5 text-[11.5px] leading-snug text-red-700`,a)),r&&i&&!a){let e=fr(`Update now`,!0);e.onclick=()=>{e.disabled=!0,o.className=`px-3 text-[11.5px] text-neutral-400`,o.textContent=`starting the updater…`,(async()=>{let t=await m(`/api/update`,{});if(!t.ok){e.disabled=!1,o.className=`px-3 text-[11.5px] text-red-600`,o.textContent=await h(t,`Could not update`);return}let{draining:n}=await t.json();o.textContent=n?`Waiting for running work to finish — Pier then installs and restarts.`:`Installing — Pier restarts once it is on disk, and this page reconnects on its own.`})()},s.append(e)}let c=R(`a`,`btn text-[12.5px] no-underline`,`Source`);c.href=r?`${vu}/releases`:vu,c.target=`_blank`,c.rel=`noreferrer`,c.title=`Pier is free software (AGPL-3.0)`,s.append(c),e.append(s,o),r&&!i&&!a&&e.append(wu(`No service manager owns this Pier, so it cannot restart itself — update it with: pier update`));let l=wr(`Update automatically`,i?`Installs a new release once nothing is running — no turn in flight, no task run.`:`Needs the systemd service (pier service install); nothing here can restart Pier.`,X.autoUpdate,e=>{X&&(X.autoUpdate=e),(async()=>{let t=await m(`/api/settings`,{autoUpdate:e},`PUT`);if(t.ok)return;X&&(X.autoUpdate=!e);let n=l.querySelector(`input`);n&&(n.checked=!e),o.className=`px-3 text-[11.5px] text-red-600`,o.textContent=await h(t,`Could not save`)})()});if(!i){let e=l.querySelector(`input`);e&&(e.disabled=!0)}return e.append(R(`div`,`mt-1 border-t border-neutral-200 px-3 pb-1 pt-2`,l)),e}async function Eu(e){let t=await g(`/api/update`,`Update check failed`);t.ok&&(X=t.value,Cu(X.current||e))}function Du(e){Cu(e),Su.onclick=e=>{e.preventDefault(),Zs(Su,Tu())};let t=()=>void Eu(e).catch(()=>{});t(),setInterval(t,xu)}var Z,Ou=L(`#chat-header`),ku=L(`#chat-title`),Au=[Ou,B,L(`#composer`)],ju=()=>Ru===null,Mu,Nu,Pu,Fu=new Map,Iu=new Map,Lu=new Map,Ru=null,zu=0,Bu=[`files`],Vu=new Map,Hu={tasks:`Tasks`,runs:`Runs`,activity:`Activity`,boards:`Boards`,settings:`Settings`,files:`Files`},Uu=[`tasks`,`runs`,`activity`],Wu=`Automation`,Gu=L(`#automation-view`),Ku=L(`#automation-tabs`),qu=e=>Uu.includes(e)?`tasks`:e;function Ju(e){let t=e!==null&&Uu.includes(e);Gu.classList.toggle(`hidden`,!t),Gu.classList.toggle(`flex`,t),t&&Ku.replaceChildren(...Uu.map(t=>gr(Hu[t],t===e,()=>$u(t))))}var Yu=e=>Mu?.refresh(e),Xu=()=>Nu?.refresh(),Zu=()=>Pu?.refresh();function Qu(){Ru?Cc(Uu.includes(Ru)?Wu:Hu[Ru],!1):Cc(ku.textContent??``,Z.currentSession()!==void 0)}function $u(e,t,n){if(Bu.includes(e)){let t=dd();t&&(t.kind!==`console`||t.name!==e)&&Vu.set(e,t)}pd({kind:`console`,name:e,arg:t,query:n}),Sc(),Ru=e;for(let e of Au)e.classList.add(`hidden`);cs();for(let[t,n]of Fu)t!==e&&n.hide();for(let[t,n]of Lu)n.classList.toggle(`bg-indigo-50`,t===qu(e));Ju(e),Qu(),ed(e,t,n,++zu)}async function ed(e,t,n,r){let i=Fu.get(e);if(!i){let t=Iu.get(e);if(!t){let n=L(`#${e}-view`);t=gd[e](n).catch(t=>(console.warn(`${e} view failed to load`,t),ar(n,()=>n.replaceChildren(R(`p`,`p-4 text-[13px] text-red-600`,`Could not load ${Hu[e]} — reload the page.`))))),Iu.set(e,t)}i=await t,Fu.set(e,i),Iu.delete(e)}Ru===e&&r===zu&&i.show(t,n)}var td=e=>$u(`tasks`,e),nd=(e={},t)=>$u(`runs`,t,new URLSearchParams(e).toString()),rd=e=>nd({},e),id=e=>$u(`files`,e),ad=(e,t)=>{Ru===e?sd(e):$u(e,t)},od=e=>ad(`files`,e);function sd(e){let t=Z.currentId(),n=Vu.get(e)??(t?{kind:`session`,id:t}:null);Vu.delete(e),n?pd(n):(history.replaceState(null,``,`#/`),cd())}function cd(){if(Ru){Ru=null;for(let e of Fu.values())e.hide();for(let e of Lu.values())e.classList.remove(`bg-indigo-50`);Ju(null);for(let e of Au)e.classList.remove(`hidden`);cs(),Qu(),Z.maybeAckRead()}}var ld=e=>e.kind===`session`?`#/session/${encodeURIComponent(e.id)}`:`#/${e.name}${e.arg?`/${encodeURIComponent(e.arg)}`:``}${e.query?`?${e.query}`:``}`,ud={config:`files`,channels:`channels`,providers:`models`};function dd(){let e=location.hash.replace(/^#\/?/,``),t=e.indexOf(`?`),[n=``,r]=(t<0?e:e.slice(0,t)).split(`/`),i=t<0?void 0:e.slice(t+1)||void 0,a;try{a=r?decodeURIComponent(r):void 0}catch{return null}return ud[n]?{kind:`console`,name:`settings`,arg:ud[n]}:Object.hasOwn(Hu,n)?{kind:`console`,name:n,arg:a,query:i}:n===`session`&&a?{kind:`session`,id:a}:null}var fd=!1;function pd(e,t=!1){if(fd)return;let n=ld(e);location.hash!==n&&(t?history.replaceState(null,``,n):location.hash=n)}var md=e=>pd({kind:`session`,id:e});function hd(){let e=dd(),t=Z.sessions(),n=Z.currentId(),r=(e?.kind===`session`?e.id:null)??n??(t.find(e=>e.listed)??t[0])?.id??null;fd=!0;try{r&&r!==n&&Z.select(r),e?.kind===`console`?$u(e.name,e.arg,e.query):cd(),r||$l()}finally{fd=!1}e?.kind!==`console`&&r&&pd({kind:`session`,id:r},!0)}var gd={tasks:async e=>Mu=(await fi(async()=>{let{createTasksView:e}=await import(`./tasks-CcAxbMR8.js`);return{createTasksView:e}},__vite__mapDeps([0,1]))).createTasksView(e,()=>Z.sessions().map(({id:e,cwd:t,title:n})=>({id:e,cwd:t,title:n})),Z.loadSessions,Z.select,()=>Z.currentId(),nd,td),runs:async e=>Nu=(await fi(async()=>{let{createRunsView:e}=await import(`./runs-BuE-mags.js`);return{createRunsView:e}},__vite__mapDeps([2,1]))).createRunsView(e,Z.select,nd,td),activity:async e=>Pu=(await fi(async()=>{let{createActivityView:e}=await import(`./activity-xRauUtIM.js`);return{createActivityView:e}},[])).createActivityView(e,Z.select,rd),boards:async e=>(await fi(async()=>{let{createBoardsView:e}=await import(`./boards-CxXk1JfX.js`);return{createBoardsView:e}},[])).createBoardsView(e,Z.select),files:async e=>(await fi(async()=>{let{createExplorerView:e}=await import(`./explorer-C1KiLceA.js`);return{createExplorerView:e}},__vite__mapDeps([3,4]))).createExplorerView(e,()=>Z.currentSession(),e=>$u(`files`,e),()=>sd(`files`)),settings:async e=>(await fi(async()=>{let{createSettingsView:e}=await import(`./settings-5KvCAMBF.js`);return{createSettingsView:e}},__vite__mapDeps([5,4]))).createSettingsView(e,()=>[...Jc(Z.sessions()).keys()],e=>$u(`settings`,e))};function _d(e){Z=e;for(let e of[`tasks`,`boards`,`settings`]){let t=L(`#open-${e}`);Lu.set(e,t),t.onclick=()=>$u(e)}let t=L(`#console-section`);t.open=localStorage.getItem(`pier.consoleCollapsed`)!==`1`,t.ontoggle=()=>localStorage.setItem(`pier.consoleCollapsed`,t.open?`0`:`1`),window.onhashchange=hd}var Q=[],vd=0,yd=0,bd=!1,$=null,xd=`idle`,Sd=null,Cd=0,wd=!1,Td=!1;async function Ed(e){let t=++vd;++yd,bd=!1,cd(),Sc(),$=null,Sd?.close(),Sd=null,po(),ls([]),Jl(),Ql(e),mo(!0),Td=!0,ss();let n=await m(`/api/sessions`,{cwd:e});if(t!==vd)return;if(Td=!1,!n.ok){mo(!1),Ql(null),ss(),V(`error`,`session create failed: ${n.status}`);return}let{id:r}=await n.json();if(t!==vd)return;let{repo:i,branch:a}=Q.find(t=>t.cwd===e)??{};Q.unshift({id:r,cwd:e,createdAt:Date.now(),state:`idle`,listed:!0,unread:!1,channel:`web`,activeRuns:0,repo:i,branch:a}),await Ld(r),$===r&&rs()}function Dd(e,t){let n=e.map(e=>({...e,title:ne(e.title)}));if(t)Q=n;else{let e=new Map(n.map(e=>[e.id,e]));Q=Q.map(t=>e.get(t.id)??(t.listed?{...t,listed:!1}:t));let t=new Set(Q.map(e=>e.id));Q.push(...n.filter(e=>!t.has(e.id)))}Q.sort((e,t)=>t.createdAt-e.createdAt),wl(),Ad()}var Od=re(async()=>{Dd(await ie(`/api/projects`,`Could not load projects`),!1)}),kd=re(async()=>{Dd(await ie(`/api/sessions`,`Could not load sessions`),!0)});function Ad(){if(document.hidden||!document.hasFocus()||!ju())return;let e=Q.find(e=>e.id===$);e?.unread&&(e.unread=!1,wl(),fetch(`/api/sessions/${e.id}/read`,{method:`POST`}))}function jd(){return Q.find(e=>e.id===$)}function Md(e,t){let n=Q.find(t=>t.id===e);!n||n.title||!t.trim()||(n.title=t.trim().slice(0,80),wl(),$l())}function Nd(e){xd=e;let t=Q.find(e=>e.id===$);t&&(t.state=e),wl(),$l(),ss(),e===`idle`&&Od()}function Pd(e){if(!(e.sessionId!==$||e.seq<=Cd))switch(Cd=e.seq,e.type){case`turn-start`:wd=!0;break;case`system-input`:lo(),Ia(e.text,e.origin);break;case`task-status`:Vi(e.run);break;case`user-message`:{let t=te(e.text).text;if(Md(e.sessionId,t),is(t))break;lo(),V(`user`,e.text,!1,e.ts),Ea();break}case`text-delta`:co(e.text);break;case`thinking-delta`:pa(e.ts,e.text);break;case`tool-start`:lo(),da(e.ts,e.toolCallId,e.toolName,e.args);break;case`tool-end`:fa(e.toolCallId,e.isError,e.output);break;case`turn-end`:wd=!1,uo(e.text,e.meta),e.meta&&Xl(e.meta);break;case`queue-state`:us(e.steering,e.followUp);break;case`queue-recovery`:ls(e.batches,e.uncertain);break;case`context-compacted`:lo(),V(`system`,`Context compacted — ${i(e.before)} → ${i(e.after)}`,!1,e.ts),Ea();break;case`error`:la(),V(`error`,e.message);break;case`state`:e.state===`idle`&&wd&&(wd=!1,fo()),e.state===`idle`&&us([],[]),Nd(e.state)}}function Fd(){let e=new EventSource(`/api/events`);e.onopen=()=>void Od(),e.onerror=()=>Do(e,`Workspace`),e.onmessage=e=>{let t=JSON.parse(e.data);if(t.type===`sessions-changed`){Od();return}if(t.type===`tasks-changed`||t.type===`task-run-changed`||t.type===`task-message-changed`||t.type===`task-group-changed`){Yu(t.type===`task-run-changed`?t.taskId:void 0),Xu(),Zu(),t.type===`task-run-changed`&&Od();return}if(Zu(),t.sessionId===$)return;let n=Q.find(e=>e.id===t.sessionId);n&&(n.state=t.state,wl())}}function Id(e,t,n){Sd?.close();let r=new EventSource(`/api/sessions/${e}/events?after=${t}`),i=()=>Sd===r&&$===e&&n===yd;r.onmessage=e=>{i()&&Pd(JSON.parse(e.data))},r.addEventListener(`reset`,()=>{i()&&Rd(e)}),r.onerror=()=>{i()&&Do(r,`Session`)},Sd=r}async function Ld(e){cd(),Sc(),md(e);let t=Q.some(t=>t.id===e);if(e===$&&t&&(Sd||bd))return;let n=++vd;if(++yd,Td=!1,_s(),$=e,xd=Q.find(t=>t.id===e)?.state??`idle`,vs(e),wl(),$l(),Ad(),t)return await Rd(e);Sd?.close(),Sd=null,po(),mo(!0),await kd(),n===vd&&$===e&&await Rd(e,!Q.some(t=>t.id===e))}async function Rd(e,t=!1){if($!==e)return;let n=++yd;if(Sd?.close(),Sd=null,bd=!0,po(),us([],[]),ls([]),Jl(),wd=!1,os(),Cd=0,mo(!0),t){bd=!1,mo(!1),V(`error`,`session not found: ${e}`);return}let r=await g(`/api/sessions/${e}/history`,`failed to load session`);if($!==e||n!==yd)return;if(bd=!1,!r.ok){mo(!1),V(`error`,r.error);return}let i=r.value;ho(i.turns,i.state,i.backgroundRuns),Cd=i.lastSeq,wd=i.state===`streaming`,Nd(i.state),us(i.queue.steering,i.queue.followUp),ls(i.queueRecovery,i.queueUncertain);let a=i.turns.reduce((e,t)=>t.meta?.completedAt??e,null);Yl(i.model,i.context,i.thinkingLevel,a),Id(e,`${i.epoch}:${i.lastSeq}`,n)}Co(),Eo(),_u();var zd=async e=>{$===e&&await Rd(e)};ya({sessionId:()=>$,sessionState:()=>xd,select:e=>void Ld(e),showRun:rd,send:(e,t)=>void xs(e,t),ownTurn:e=>{as(e),Nd(`streaming`)},reload:zd}),ws({sessionId:()=>$,starting:()=>Td,sessionState:()=>xd,chatVisible:ju,setState:Nd,reload:zd}),Ic({sessionMenu:e=>{let t=jd();t&&lu(e,t)},sessionInfo:e=>{let t=jd();t&&ru(e,t)}}),Il({sessions:()=>Q,loadSessions:kd,currentId:()=>$,select:e=>void Ld(e),sessionMenu:lu,createSession:Ed,openFiles:id,openConsole:$u,onPinsChanged:$l}),Ll({currentId:()=>$,currentSession:jd,createSession:e=>void Ed(e),syncBar:Qu,openFiles:id,toggleFiles:od}),_d({sessions:()=>Q,loadSessions:kd,currentId:()=>$,currentSession:jd,select:e=>void Ld(e),maybeAckRead:Ad}),Du(`0.0.25`),zs(),document.addEventListener(`visibilitychange`,Ad),window.addEventListener(`focus`,Ad),Fd(),Od().then(hd);export{Ar as A,re as B,hr as C,Cr as D,br as E,ur as F,m as G,g as H,ir as I,ne as K,R as L,tr as M,ar as N,wr as O,lr as P,$n as R,gr as S,Er as T,ie as U,h as V,ae as W,_r as _,Zs as a,kr as b,Ti as c,yi as d,yr as f,fr as g,pr as h,K as i,er as j,mr as k,Ei as l,Dr as m,pc as n,Ws as o,Tr as p,r as q,sc as r,Ro as s,_c as t,vi as u,Or as v,Sr as w,xr as x,vr as y,nr as z};