pim-agent 0.11.0 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/packages/core/src/extensions/apply-patch/model.ts +1 -12
- package/packages/core/src/extensions/bash/MemoryCap.ts +128 -0
- package/packages/core/src/extensions/bash/format.ts +5 -0
- package/packages/core/src/extensions/bash/run.ts +15 -2
- package/packages/core/src/extensions/bash/schema.ts +2 -0
- package/packages/core/src/extensions/edit/index.ts +1 -1
- package/packages/core/src/extensions/subagent/index.ts +2 -1
- package/packages/core/src/extensions/subagent/subagent.ts +10 -1
- package/packages/core/src/extensions/system-prompt/index.ts +18 -24
- package/packages/core/src/extensions/system-prompt/prompt.ts +42 -65
- package/packages/core/src/shared/Supervisor.ts +1 -0
- package/packages/core/src/shared/Tools.ts +3 -3
- package/packages/web/dist/client/assets/{core-D3tyj0PP.js → core-C5fJJN75.js} +1 -1
- package/packages/web/dist/client/assets/{index-CTrlTM53.js → index-C5D7B_8d.js} +3 -3
- package/packages/web/dist/client/assets/{index-JnduS4Cd.css → index-OVLzpES-.css} +1 -1
- package/packages/web/dist/client/index.html +2 -2
|
@@ -35,11 +35,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
35
35
|
`?``:n,e.pending=``);continue;case`_`:case`*`:{if(e.token===19||e.token===30||e.token===31||e.token===14)break;let r=12,i=14,a=e.pending[0];if(a===`_`&&(r=13,i=15),e.pending.length===1){if(a===n){e.pending=t;continue}if(n!==` `&&n!==`
|
|
36
36
|
`){Q(e),$(e,r),e.pending=n;continue}}else{if(a===n){Q(e),$(e,i),$(e,r),e.pending=``;continue}if(n!==` `&&n!==`
|
|
37
37
|
`){Q(e),$(e,i),e.pending=n;continue}}break}case`~`:if(e.token!==19&&e.token!==16){if(e.pending===`~`){if(n===`~`){e.pending=t;continue}}else if(n!==` `&&n!==`
|
|
38
|
-
`){Q(e),$(e,16),e.pending=n;continue}}break;case`$`:if(e.token!==19&&e.token!==16&&e.pending===`$`){if(n===`$`){e.token=105,e.pending=t;continue}if(Au(n.charCodeAt(0)))break;Q(e),$(e,31),e.pending=n;continue}break;case`[`:if(e.token!==19&&e.token!==17&&e.token!==30&&e.token!==31&&n!==`]`){Q(e),$(e,17),e.pending=n;continue}break;case`!`:if(e.token!==19&&n===`[`){Q(e),$(e,19),e.pending=``;continue}break;case` `:if(e.pending.length===1&&n===` `)continue}if(e.token!==19&&e.token!==17&&e.token!==30&&e.token!==31&&n===`h`&&(e.pending===` `||e.pending===``)){e.text+=e.pending,e.pending=n,e.token=102;continue}e.text+=e.pending,e.pending=n}Q(e)}function Mu(e){return{add_token:Nu,end_token:Pu,add_text:Fu,set_attr:Iu,data:{nodes:[e,,,,,],index:0}}}function Nu(e,t){let n=e.nodes[e.index],r;switch(t){case 1:return;case 20:r=document.createElement(`blockquote`);break;case 2:r=document.createElement(`p`);break;case 21:r=document.createElement(`br`);break;case 22:r=document.createElement(`hr`);break;case 3:r=document.createElement(`h1`);break;case 4:r=document.createElement(`h2`);break;case 5:r=document.createElement(`h3`);break;case 6:r=document.createElement(`h4`);break;case 7:r=document.createElement(`h5`);break;case 8:r=document.createElement(`h6`);break;case 12:case 13:r=document.createElement(`em`);break;case 14:case 15:r=document.createElement(`strong`);break;case 16:r=document.createElement(`s`);break;case 11:r=document.createElement(`code`);break;case 18:case 17:r=document.createElement(`a`);break;case 19:r=document.createElement(`img`);break;case 23:r=document.createElement(`ul`);break;case 24:r=document.createElement(`ol`);break;case 25:r=document.createElement(`li`);break;case 26:let e=r=document.createElement(`input`);e.type=`checkbox`,e.disabled=!0;break;case 9:case 10:n=n.appendChild(document.createElement(`pre`)),r=document.createElement(`code`);break;case 27:r=document.createElement(`table`);break;case 28:switch(n.children.length){case 0:n=n.appendChild(document.createElement(`thead`));break;case 1:n=n.appendChild(document.createElement(`tbody`));break;default:n=n.children[1]}r=document.createElement(`tr`);break;case 29:r=document.createElement(n.parentElement?.tagName===`THEAD`?`th`:`td`);break;case 30:r=document.createElement(`equation-block`);break;case 31:r=document.createElement(`equation-inline`)}e.nodes[++e.index]=n.appendChild(r)}function Pu(e){--e.index}function Fu(e,t){e.nodes[e.index].appendChild(document.createTextNode(t))}function Iu(e,t,n){e.nodes[e.index].setAttribute(gu(t),n)}async function Lu(e){try{return await navigator.clipboard.writeText(e),!0}catch{return Ru(e)}}function Ru(e){let t=document.getSelection();if(t===null)return!1;let n=document.createElement(`span`);n.textContent=e,n.ariaHidden=`true`,n.style.cssText=`position:fixed;top:0;left:0;opacity:0;pointer-events:none;white-space:pre;user-select:text`,document.body.append(n);let r=t.rangeCount>0?t.getRangeAt(0):void 0,i=document.createRange();i.selectNodeContents(n),t.removeAllRanges(),t.addRange(i);let a=!1;try{a=document.execCommand(`copy`)}catch{a=!1}return t.removeAllRanges(),n.remove(),r!==void 0&&t.addRange(r),a}var zu=K(`<span class="i-griddy-icons:check size-4 text-emerald-400">`),Bu=K(`<button type=button>`),Vu=K(`<span class="i-griddy-icons:copy size-4"aria-hidden=true>`),Hu=1200;function Uu(e){let[t,n]=R(!1),r;bn(()=>{clearTimeout(r)});let i=async()=>{await Lu(e.text())&&(n(!0),r=setTimeout(()=>{n(!1)},Hu))};var a=Bu();return a.$$click=e=>{e.stopPropagation(),e.preventDefault(),i()},Z(a,B(H,{get when(){return t()},get fallback(){return Vu()},get children(){return zu()}})),W(()=>({e:e.label??`Copy`,t:e.label??`Copy`,a:`flex size-7 shrink-0 items-center justify-center rounded-lg bg-neutral-850 text-neutral-350 hover:bg-neutral-800 hover:text-neutral-50 ${e.class??``}`}),({e,t,a:n},r)=>{e!==r?.e&&J(a,`title`,e),t!==r?.t&&J(a,`aria-label`,t),Y(a,n,r?.a)}),a}q([`click`]);var Wu={keyword:`keyword`,name:`keyword`,built_in:`type`,class_:`type`,class:`type`,type:`type`,title:`function`,function_:`function`,function:`function`,literal:`number`,number:`number`,string:`string`,regexp:`string`,subst:`variable`,comment:`comment`,doctag:`comment`,meta:`meta`,attr:`variable`,attribute:`variable`,property:`variable`,variable:`variable`,params:`variable`,operator:`operator`,tag:`punctuation`,punctuation:`punctuation`,addition:`added`,deletion:`removed`},Gu={bash:()=>U(()=>import(`./bash-LmRjUKlR.js`),[]),c:()=>U(()=>import(`./c-DBVbJFpC.js`),[]),clojure:()=>U(()=>import(`./clojure-CR7dvLJ4.js`),[]),cmake:()=>U(()=>import(`./cmake-CgP6gB4W.js`),[]),cpp:()=>U(()=>import(`./cpp-N2d8M7Nc.js`),[]),csharp:()=>U(()=>import(`./csharp-yYt0Ikks.js`),[]),css:()=>U(()=>import(`./css-D8M8GYaw.js`),[]),diff:()=>U(()=>import(`./diff-BhdZizse.js`),[]),dockerfile:()=>U(()=>import(`./dockerfile-C0zufGsU.js`),[]),elixir:()=>U(()=>import(`./elixir-DXIHlGsR.js`),[]),erlang:()=>U(()=>import(`./erlang-BjYI8dhz.js`),[]),fish:()=>U(()=>import(`./bash-LmRjUKlR.js`),[]),go:()=>U(()=>import(`./go-CYstVVJV.js`),[]),graphql:()=>U(()=>import(`./graphql-BHHhacaR.js`),[]),haskell:()=>U(()=>import(`./haskell-DUkhXIda.js`),[]),html:()=>U(()=>import(`./xml-COl5yFSC.js`),[]),ini:()=>U(()=>import(`./ini-B1CroMsf.js`),[]),java:()=>U(()=>import(`./java-Dde-Wnb4.js`),[]),javascript:()=>U(()=>import(`./javascript-8AmHuH5O.js`),[]),json:()=>U(()=>import(`./json-PmyKWHmm.js`),[]),kotlin:()=>U(()=>import(`./kotlin-DgSK8bu-.js`),[]),less:()=>U(()=>import(`./less-Bp0mgmpG.js`),[]),lua:()=>U(()=>import(`./lua-1dXYaL-H.js`),[]),makefile:()=>U(()=>import(`./makefile-BX-o3EIz.js`),[]),markdown:()=>U(()=>import(`./markdown-D6FrnlqJ.js`),[]),md:()=>U(()=>import(`./markdown-D6FrnlqJ.js`),[]),ocaml:()=>U(()=>import(`./ocaml-B-P1Uyq8.js`),[]),perl:()=>U(()=>import(`./perl-CvqMZYuf.js`),[]),php:()=>U(()=>import(`./php-DuZl5e-L.js`),[]),powershell:()=>U(()=>import(`./powershell-BUe16zE4.js`),[]),protobuf:()=>U(()=>import(`./protobuf-DGOW1qT8.js`),[]),python:()=>U(()=>import(`./python-gHmu6VPG.js`),[]),r:()=>U(()=>import(`./r-DNWPCnjT.js`),[]),ruby:()=>U(()=>import(`./ruby-BGpZ3p4_.js`),[]),rust:()=>U(()=>import(`./rust-BIKPVoi6.js`),[]),scala:()=>U(()=>import(`./scala-C9lP4FWY.js`),[]),scss:()=>U(()=>import(`./scss-gOyOKiXd.js`),[]),sql:()=>U(()=>import(`./sql-DWRKyvJ-.js`),[]),swift:()=>U(()=>import(`./swift-BTn9__hL.js`),[]),toml:()=>U(()=>import(`./ini-B1CroMsf.js`),[]),typescript:()=>U(()=>import(`./typescript-CxkPLmSc.js`),[]),vim:()=>U(()=>import(`./vim-Dhhcn_CA.js`),[]),xml:()=>U(()=>import(`./xml-COl5yFSC.js`),[]),yaml:()=>U(()=>import(`./yaml-DjOhhVLG.js`),[])},[Ku,qu]=R(0),Ju=new Set,Yu=new Set,Xu,Zu=1e5,Qu=2e3;async function $u(e){let t=Gu[e];if(t===void 0)return;let[n,r]=await Promise.all([Xu??U(()=>import(`./core-
|
|
38
|
+
`){Q(e),$(e,16),e.pending=n;continue}}break;case`$`:if(e.token!==19&&e.token!==16&&e.pending===`$`){if(n===`$`){e.token=105,e.pending=t;continue}if(Au(n.charCodeAt(0)))break;Q(e),$(e,31),e.pending=n;continue}break;case`[`:if(e.token!==19&&e.token!==17&&e.token!==30&&e.token!==31&&n!==`]`){Q(e),$(e,17),e.pending=n;continue}break;case`!`:if(e.token!==19&&n===`[`){Q(e),$(e,19),e.pending=``;continue}break;case` `:if(e.pending.length===1&&n===` `)continue}if(e.token!==19&&e.token!==17&&e.token!==30&&e.token!==31&&n===`h`&&(e.pending===` `||e.pending===``)){e.text+=e.pending,e.pending=n,e.token=102;continue}e.text+=e.pending,e.pending=n}Q(e)}function Mu(e){return{add_token:Nu,end_token:Pu,add_text:Fu,set_attr:Iu,data:{nodes:[e,,,,,],index:0}}}function Nu(e,t){let n=e.nodes[e.index],r;switch(t){case 1:return;case 20:r=document.createElement(`blockquote`);break;case 2:r=document.createElement(`p`);break;case 21:r=document.createElement(`br`);break;case 22:r=document.createElement(`hr`);break;case 3:r=document.createElement(`h1`);break;case 4:r=document.createElement(`h2`);break;case 5:r=document.createElement(`h3`);break;case 6:r=document.createElement(`h4`);break;case 7:r=document.createElement(`h5`);break;case 8:r=document.createElement(`h6`);break;case 12:case 13:r=document.createElement(`em`);break;case 14:case 15:r=document.createElement(`strong`);break;case 16:r=document.createElement(`s`);break;case 11:r=document.createElement(`code`);break;case 18:case 17:r=document.createElement(`a`);break;case 19:r=document.createElement(`img`);break;case 23:r=document.createElement(`ul`);break;case 24:r=document.createElement(`ol`);break;case 25:r=document.createElement(`li`);break;case 26:let e=r=document.createElement(`input`);e.type=`checkbox`,e.disabled=!0;break;case 9:case 10:n=n.appendChild(document.createElement(`pre`)),r=document.createElement(`code`);break;case 27:r=document.createElement(`table`);break;case 28:switch(n.children.length){case 0:n=n.appendChild(document.createElement(`thead`));break;case 1:n=n.appendChild(document.createElement(`tbody`));break;default:n=n.children[1]}r=document.createElement(`tr`);break;case 29:r=document.createElement(n.parentElement?.tagName===`THEAD`?`th`:`td`);break;case 30:r=document.createElement(`equation-block`);break;case 31:r=document.createElement(`equation-inline`)}e.nodes[++e.index]=n.appendChild(r)}function Pu(e){--e.index}function Fu(e,t){e.nodes[e.index].appendChild(document.createTextNode(t))}function Iu(e,t,n){e.nodes[e.index].setAttribute(gu(t),n)}async function Lu(e){try{return await navigator.clipboard.writeText(e),!0}catch{return Ru(e)}}function Ru(e){let t=document.getSelection();if(t===null)return!1;let n=document.createElement(`span`);n.textContent=e,n.ariaHidden=`true`,n.style.cssText=`position:fixed;top:0;left:0;opacity:0;pointer-events:none;white-space:pre;user-select:text`,document.body.append(n);let r=t.rangeCount>0?t.getRangeAt(0):void 0,i=document.createRange();i.selectNodeContents(n),t.removeAllRanges(),t.addRange(i);let a=!1;try{a=document.execCommand(`copy`)}catch{a=!1}return t.removeAllRanges(),n.remove(),r!==void 0&&t.addRange(r),a}var zu=K(`<span class="i-griddy-icons:check size-4 text-emerald-400">`),Bu=K(`<button type=button>`),Vu=K(`<span class="i-griddy-icons:copy size-4"aria-hidden=true>`),Hu=1200;function Uu(e){let[t,n]=R(!1),r;bn(()=>{clearTimeout(r)});let i=async()=>{await Lu(e.text())&&(n(!0),r=setTimeout(()=>{n(!1)},Hu))};var a=Bu();return a.$$click=e=>{e.stopPropagation(),e.preventDefault(),i()},Z(a,B(H,{get when(){return t()},get fallback(){return Vu()},get children(){return zu()}})),W(()=>({e:e.label??`Copy`,t:e.label??`Copy`,a:`flex size-7 shrink-0 items-center justify-center rounded-lg bg-neutral-850 text-neutral-350 hover:bg-neutral-800 hover:text-neutral-50 ${e.class??``}`}),({e,t,a:n},r)=>{e!==r?.e&&J(a,`title`,e),t!==r?.t&&J(a,`aria-label`,t),Y(a,n,r?.a)}),a}q([`click`]);var Wu={keyword:`keyword`,name:`keyword`,built_in:`type`,class_:`type`,class:`type`,type:`type`,title:`function`,function_:`function`,function:`function`,literal:`number`,number:`number`,string:`string`,regexp:`string`,subst:`variable`,comment:`comment`,doctag:`comment`,meta:`meta`,attr:`variable`,attribute:`variable`,property:`variable`,variable:`variable`,params:`variable`,operator:`operator`,tag:`punctuation`,punctuation:`punctuation`,addition:`added`,deletion:`removed`},Gu={bash:()=>U(()=>import(`./bash-LmRjUKlR.js`),[]),c:()=>U(()=>import(`./c-DBVbJFpC.js`),[]),clojure:()=>U(()=>import(`./clojure-CR7dvLJ4.js`),[]),cmake:()=>U(()=>import(`./cmake-CgP6gB4W.js`),[]),cpp:()=>U(()=>import(`./cpp-N2d8M7Nc.js`),[]),csharp:()=>U(()=>import(`./csharp-yYt0Ikks.js`),[]),css:()=>U(()=>import(`./css-D8M8GYaw.js`),[]),diff:()=>U(()=>import(`./diff-BhdZizse.js`),[]),dockerfile:()=>U(()=>import(`./dockerfile-C0zufGsU.js`),[]),elixir:()=>U(()=>import(`./elixir-DXIHlGsR.js`),[]),erlang:()=>U(()=>import(`./erlang-BjYI8dhz.js`),[]),fish:()=>U(()=>import(`./bash-LmRjUKlR.js`),[]),go:()=>U(()=>import(`./go-CYstVVJV.js`),[]),graphql:()=>U(()=>import(`./graphql-BHHhacaR.js`),[]),haskell:()=>U(()=>import(`./haskell-DUkhXIda.js`),[]),html:()=>U(()=>import(`./xml-COl5yFSC.js`),[]),ini:()=>U(()=>import(`./ini-B1CroMsf.js`),[]),java:()=>U(()=>import(`./java-Dde-Wnb4.js`),[]),javascript:()=>U(()=>import(`./javascript-8AmHuH5O.js`),[]),json:()=>U(()=>import(`./json-PmyKWHmm.js`),[]),kotlin:()=>U(()=>import(`./kotlin-DgSK8bu-.js`),[]),less:()=>U(()=>import(`./less-Bp0mgmpG.js`),[]),lua:()=>U(()=>import(`./lua-1dXYaL-H.js`),[]),makefile:()=>U(()=>import(`./makefile-BX-o3EIz.js`),[]),markdown:()=>U(()=>import(`./markdown-D6FrnlqJ.js`),[]),md:()=>U(()=>import(`./markdown-D6FrnlqJ.js`),[]),ocaml:()=>U(()=>import(`./ocaml-B-P1Uyq8.js`),[]),perl:()=>U(()=>import(`./perl-CvqMZYuf.js`),[]),php:()=>U(()=>import(`./php-DuZl5e-L.js`),[]),powershell:()=>U(()=>import(`./powershell-BUe16zE4.js`),[]),protobuf:()=>U(()=>import(`./protobuf-DGOW1qT8.js`),[]),python:()=>U(()=>import(`./python-gHmu6VPG.js`),[]),r:()=>U(()=>import(`./r-DNWPCnjT.js`),[]),ruby:()=>U(()=>import(`./ruby-BGpZ3p4_.js`),[]),rust:()=>U(()=>import(`./rust-BIKPVoi6.js`),[]),scala:()=>U(()=>import(`./scala-C9lP4FWY.js`),[]),scss:()=>U(()=>import(`./scss-gOyOKiXd.js`),[]),sql:()=>U(()=>import(`./sql-DWRKyvJ-.js`),[]),swift:()=>U(()=>import(`./swift-BTn9__hL.js`),[]),toml:()=>U(()=>import(`./ini-B1CroMsf.js`),[]),typescript:()=>U(()=>import(`./typescript-CxkPLmSc.js`),[]),vim:()=>U(()=>import(`./vim-Dhhcn_CA.js`),[]),xml:()=>U(()=>import(`./xml-COl5yFSC.js`),[]),yaml:()=>U(()=>import(`./yaml-DjOhhVLG.js`),[])},[Ku,qu]=R(0),Ju=new Set,Yu=new Set,Xu,Zu=1e5,Qu=2e3;async function $u(e){let t=Gu[e];if(t===void 0)return;let[n,r]=await Promise.all([Xu??U(()=>import(`./core-C5fJJN75.js`).then(e=>e.default),[]),t()]);Xu=n,n.registerLanguage(e,r.default),Ju.add(e),qu(e=>e+1)}function ed(e){Yu.has(e)||(Yu.add(e),$u(e).catch(()=>{}))}function td(e,t){if(Ku(),t===void 0||nd(e))return rd(e);if(Xu===void 0||!Ju.has(t))return ed(t),rd(e);try{let n=Xu.highlight(e,{language:t,ignoreIllegals:!0}).value;return od(id(n))}catch{return rd(e)}}function nd(e){return e.length>Zu||e.split(`
|
|
39
39
|
`).length>Qu}function rd(e){return e.split(`
|
|
40
40
|
`).map(e=>e===``?[]:[{text:e}])}function id(e){let t=document.createElement(`template`);t.innerHTML=e;let n=[],r=(e,t)=>{for(let i of Array.from(e.childNodes)){if(i.nodeType===3){n.push({text:i.textContent??``,role:t});continue}r(i,ad(i)??t)}};return r(t.content,void 0),n}function ad(e){let t;for(let n of Array.from(e.classList))t=Wu[n.replace(/^hljs-/,``)]??t;return t}function od(e){let t=[[]];for(let n of e){let e=n.text.split(`
|
|
41
41
|
`);for(let[r,i]of e.entries())r>0&&t.push([]),i!==``&&t[t.length-1].push({text:i,role:n.role})}return t}var sd={tokenize:td,version:Ku},cd=lu.FRAMES,ld={flow:`flex flex-col`,embed:`overflow-x-auto`,heading:`mt-[--line] first:mt-0`},ud={default:``,muted:`text-neutral-400`,dim:`text-neutral-500`,error:`text-rose-400`,warning:`text-amber-400`,accent:`text-indigo-300`,added:`text-emerald-400`,removed:`text-rose-400`,title:`text-neutral-50 font-bold`},dd={info:`text-neutral-400`,warn:`text-amber-400`,error:`text-rose-400`},fd={keyword:`text-fuchsia-300`,variable:`text-fuchsia-300`,type:`text-cyan-300`,function:`text-emerald-300`,string:`text-amber-300`,number:`text-sky-300`,comment:`text-neutral-500`,meta:`text-neutral-400`,operator:``,punctuation:``,added:`text-emerald-400`,removed:`text-rose-400`};function pd(e){return e===void 0?``:fd[e]}var md={context:``,added:`bg-emerald-500/8`,removed:`bg-rose-500/8`},hd={context:``,added:`bg-emerald-500/16`,removed:`bg-rose-500/16`},gd={context:`text-neutral-600`,added:`text-emerald-400`,removed:`text-rose-400`},_d={idle:`hover:bg-indigo-500/12 hover:text-indigo-300`,held:`pim-diff-held text-indigo-200`};function vd(e,t,n){return t===`held`?_d.held:n?`${gd[e]} ${_d.idle}`:gd[e]}function yd(e,t,n){let r=vd(e,t,n);return t===`held`?r:`${md[e]} ${r}`}var bd=`pim-diff-filler`,xd=`bg-neutral-500/10`;function Sd(e){return ud[e??`default`]}function Cd(e,t){return e?`bg-amber-400`:t?`bg-rose-400`:`bg-neutral-300`}function wd(e,t){return e?`text-amber-400 group-hover:text-amber-300`:t?`text-rose-400 group-hover:text-rose-300`:`text-neutral-750 group-hover:text-neutral-500`}function Td(e){return lu.groupByFrame(e,cd,e=>e!==`heading`)}var Ed=K(`<div>`);function Dd(e){let t=e.lastElementChild;for(;t!==null;){if(t.tagName===`PRE`)return t;t=t.lastElementChild}}function Od(e){let t=Mu(e);return{...t,add_token:(e,n)=>{t.add_token(e,n);let r=e.nodes[e.index];r?.tagName===`A`&&(r.setAttribute(`target`,`_blank`),r.setAttribute(`rel`,`noopener`))}}}async function kd(e){await Lu(e.textContent??``)&&(e.removeAttribute(`data-copied`),e.getBoundingClientRect(),e.addEventListener(`animationend`,()=>{e.removeAttribute(`data-copied`)},{once:!0}),e.setAttribute(`data-copied`,``))}function Ad(e){let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`code`);n!==null&&n.closest(`pre, a`)===null&&window.getSelection()?.isCollapsed!==!1&&kd(n)}function jd(e,t,n){for(let r of e.querySelectorAll(`pre:not([data-copy])`)){if(r===t)continue;r.setAttribute(`data-copy`,``);let e=document.createElement(`div`);e.className=`relative`,r.replaceWith(e),e.append(r),n.push(la(()=>B(Uu,{text:()=>r.textContent??``,label:`Copy code`,class:`absolute right-0 top-0`}),e))}}function Md(e,t){for(let n of e.querySelectorAll(`pre > code:not([data-hl])`)){if(n.parentElement===t)continue;let e=Gl.resolve(n.className),r=P(()=>sd.tokenize(n.textContent??``,e));n.setAttribute(`data-hl`,``),n.replaceChildren(...r.flatMap((e,t)=>{let n=e.map(e=>{let t=document.createElement(`span`);return t.className=pd(e.role),t.textContent=e.text,t});return t===0?n:[document.createTextNode(`
|
|
42
42
|
`),...n]}))}}function Nd(e){let t,n=``,r,i=[],a=()=>{for(let e of i)e();i.length=0},o=P(sd.version);bn(a),z(()=>({text:e.text,complete:e.complete!==!1,grammars:sd.version()}),({text:e,complete:s,grammars:c})=>{if((r===void 0||!e.startsWith(n))&&(a(),t.replaceChildren(),r=yu(Od(t)),n=``),ju(r,e.slice(n.length)),n=e,s&&(bu(r),r=void 0),c!==o){o=c;for(let e of t.querySelectorAll(`code[data-hl]`))e.removeAttribute(`data-hl`)}let l=s?void 0:Dd(t);Md(t,l),jd(t,l,i)});var s=Ed();return s.$$click=Ad,X(()=>e=>{t=e},s),W(()=>`pim-markdown min-w-0 ${e.wrap??`break-words`}`,(e,t)=>{Y(s,e,t)}),s}q([`click`]);var Pd=Ni(()=>``),Fd=K(`<button type=button>`),Id={context:` `,added:`+`,removed:`−`};function Ld(e,t,n){let r=Bl(e,t);return` ${String(r??``).padStart(n)} ${Id[e?.kind??`context`]} `}function Rd(e){var t=Fd();return t.addEventListener(`pointerenter`,t=>{t.buttons===1&&e.anchors.onSweep(e.line,e.side)}),t.$$pointerdown=t=>{t.button===0&&(t.preventDefault(),t.currentTarget.releasePointerCapture(t.pointerId),e.anchors.onPress(e.line,e.side,t.shiftKey))},t.$$click=t=>{t.detail===0&&e.anchors.onPick(e.line,e.side,t.shiftKey)},Z(t,()=>Ld(e.line,e.side,e.width)),W(()=>({e:`Comment on ${e.side} line ${Bl(e.line,e.side)??``}`,t:`select-none [touch-action:pan-x] ${e.class}`}),({e,t:n},r)=>{e!==r?.e&&J(t,`aria-label`,e),Y(t,n,r?.t)}),t}q([`click`,`pointerdown`]);var zd=K(`<div>`),Bd=K(`<p>`),Vd=K(`<p class="whitespace-pre-wrap break-words">`),Hd=K(`<span>`),Ud=K(`<section><h4 class="font-bold text-neutral-50">`),Wd=K('<div class=relative><pre class="overflow-x-auto leading-[--line] text-neutral-200 [tab-size:3]"><span class="block text-neutral-500"aria-hidden=true></span><code></code><span class="block text-neutral-500"aria-hidden=true>```'),Gd=K(`<span class="mr-1ch select-none text-neutral-600">`),Kd=K(`<span class=block><!><!>`),qd=K(`<div class="w-max min-w-full leading-[--line] text-neutral-300 [tab-size:3]">`),Jd=K(`<div><!><!>`),Yd=K(`<div class=relative><div aria-hidden=true>`),Xd=K(`<span class="ml-1ch text-neutral-400">truncated`),Zd=K(`<span><!><!><!>`),Qd=K(`<span class=text-neutral-400>`),$d=K(`<li class="pl-[--marker] [text-indent:calc(var(--marker)*-1)]"><span class=text-neutral-400>`),ef=K(`<dl class="grid grid-cols-[auto_1fr] gap-x-1ch">`),tf=K(`<dt class=text-neutral-500>`),nf=K(`<dd class="min-w-0 truncate text-neutral-200">`),rf=K(`<a class="text-indigo-300 hover:text-indigo-400 underline underline-offset-2"target=_blank rel=noreferrer>`),af=K(`<p class=text-neutral-400>`);function of(e){return B(V,{get each(){return e.blocks},children:e=>B(sf,{block:e})})}function sf(e){return B(Ga,{get component(){return Af[e.block.kind]},get block(){return e.block}})}function cf(e){return B(V,{get each(){return Td(e.blocks)},children:e=>(()=>{var t=zd();return Z(t,B(of,{get blocks(){return e.blocks}})),W(()=>ld[e.frame],(e,n)=>{Y(t,e,n)}),t})()})}function lf(e){var t=Bd();return Z(t,()=>e.block.text),W(()=>`whitespace-pre-wrap ${Sd(e.block.tone)}`,(e,n)=>{Y(t,e,n)}),t}function uf(e){return B(Nd,{get text(){return e.block.text}})}function df(e){var t=Vd();return Z(t,B(V,{get each(){return e.block.spans},children:e=>B(ff,{span:e})})),t}function ff(e){var t=Hd();return Z(t,()=>e.span.text),W(()=>({[Sd(e.span.tone)]:!0,"line-through":e.span.strike===!0,"font-bold":e.span.strong===!0}),(e,n)=>{Y(t,e,n)}),t}function pf(e){var t=Ud(),n=t.firstChild;return Z(n,()=>e.block.label),Z(t,B(cf,{get blocks(){return e.block.content}}),null),t}function mf(e){let t=L(()=>sd.tokenize(e.block.text,Gl.resolve(e.block.lang)));var n=Wd(),r=n.firstChild.firstChild,i=r.nextSibling;return Z(r,()=>`\`\`\`${e.block.lang}`),Z(i,B(V,{get each(){return t()},children:(t,n)=>(()=>{var r=Kd(),i=r.firstChild,a=i.nextSibling;return Z(r,B(H,{get when(){return e.block.startLine!==void 0},get children(){var t=Gd();return Z(t,()=>(e.block.startLine??1)+n()),t}}),i),Z(r,B(V,{each:t,children:e=>(()=>{var t=Hd();return Z(t,()=>e.text),W(()=>pd(e.role),(e,n)=>{Y(t,e,n)}),t})()}),a),r})()})),Z(n,B(Uu,{text:()=>e.block.text,label:`Copy code`,class:`absolute right-0 top-0`}),null),W(()=>e.block.lang,e=>{J(i,`data-lang`,e)}),n}function hf(e){let t=L(()=>Gl.fromPath(e.block.path)),n=L(()=>Rl.gutterWidth(e.block.hunks));var r=qd();return Z(r,B(V,{get each(){return e.block.hunks},children:(e,r)=>[B(H,{get when(){return r()>0},get children(){var e=zd();return Z(e,()=>`${` `.repeat(n()+1)} ⋯`),W(()=>`whitespace-pre ${xd} ${gd.context}`,(t,n)=>{Y(e,t,n)}),e}}),B(gf,{get lines(){return e.lines},get lang(){return t()},get width(){return n()}})]})),r}function gf(e){let t=L(()=>Rl.mapSides(e.lines,t=>sd.tokenize(t,e.lang)));return B(V,{get each(){return e.lines},children:(n,r)=>B(_f,{line:n,get tokens(){return t()[r()]??[{text:n.text}]},get width(){return e.width},get anchors(){return e.anchors}})})}function _f(e){let t=()=>e.line.kind,n=()=>zl(e.line),r=()=>Rl.lineNumber(e.line),i=()=>e.anchors?.stateOf(n(),r())??`idle`;return[(()=>{var r=Jd(),a=r.firstChild,o=a.nextSibling;return Z(r,B(H,{get when(){return e.anchors},get fallback(){var r=Hd();return Z(r,()=>Ld(e.line,n(),e.width)),W(()=>`select-none ${gd[t()]}`,(e,t)=>{Y(r,e,t)}),r},children:r=>B(Rd,{get line(){return e.line},get side(){return n()},get width(){return e.width},get anchors(){return r()},get class(){return vd(t(),i(),!0)}})}),a),Z(r,B(V,{get each(){return vf(e.tokens,e.line.emphasis)},children:e=>(()=>{var n=Hd();return Z(n,()=>e.text),W(()=>`${pd(e.role)} ${e.emphasis?hd[t()]:``}`,(e,t)=>{Y(n,e,t)}),n})()}),o),W(()=>`whitespace-pre ${md[t()]}`,(e,t)=>{Y(r,e,t)}),r})(),B(H,{get when(){return e.anchors?.holdsCards(n(),r())===!0},get children(){var t=Yd(),i=t.firstChild;return Z(t,()=>e.anchors?.cardsAt(n(),r()),null),W(()=>`absolute inset-y-0 left-0 w-[var(--gutter,0px)] ${_d.held}`,(e,t)=>{Y(i,e,t)}),t}})]}function vf(e,t=[]){if(t.length===0)return e;let n=[],r=0;for(let i of e){let e=0;for(let a of yf(t,r,r+i.text.length)){let o=i.text.slice(e,a);o!==``&&n.push({text:o,role:i.role,emphasis:bf(t,r+e)}),e=a}r+=i.text.length}return n}function yf(e,t,n){let r=new Set([n-t]);for(let i of e)for(let e of[i.start,i.end])e>t&&e<n&&r.add(e-t);return Array.from(r).sort((e,t)=>e-t)}function bf(e,t){return e.some(e=>t>=e.start&&t<e.end)}function xf(e){var t=Zd(),n=t.firstChild,r=n.nextSibling,i=r.nextSibling;return Z(t,()=>e.block.path,n),Z(t,B(H,{get when(){return e.block.range},children:e=>(()=>{var t=Qd();return Z(t,()=>lu.formatRange(e())),t})()}),r),Z(t,B(H,{get when(){return e.block.truncated===!0},get children(){return Xd()}}),i),t}function Sf(e){return B(Ga,{get component(){return e.block.ordered===!0?`ol`:`ul`},get children(){return B(V,{get each(){return e.block.items},children:(t,n)=>B(Cf,{get marker(){return G(()=>e.block.ordered===!0)()?`${n()+1}.`:`-`},get children(){return B(sf,{block:t})}})})}})}function Cf(e){var t=$d(),n=t.firstChild;return Z(n,()=>`${e.marker} `),Z(t,()=>e.children,null),W(()=>`${e.marker.length+1}ch`,e=>{Sa(t,`--marker`,e)}),t}function wf(e){var t=ef();return Z(t,B(V,{get each(){return e.block.pairs},children:e=>[(()=>{var t=tf();return Z(t,()=>e[0]),t})(),(()=>{var t=nf();return Z(t,()=>e[1]),t})()]})),t}function Tf(e){var t=rf();return va(t),Z(t,(()=>{var t=G(()=>e.block.label===``);return()=>t()?e.block.href:e.block.label})()),W(()=>e.block.href,e=>{J(t,`href`,e)}),t}function Ef(e){var t=Bd();return Z(t,(()=>{var t=G(()=>e.tag===void 0);return()=>t()?e.text:[e.tag,e.text]})()),W(()=>({e:`whitespace-pre-wrap ${dd[e.severity]}`,t:e.severity===`error`?`alert`:void 0}),({e,t:n},r)=>{Y(t,e,r?.e),n!==r?.t&&J(t,`role`,n)}),t}function Df(e){return B(Ef,{get severity(){return e.block.severity},get text(){return e.block.text}})}function Of(e){return B(Us,{variant:`delivery`,get files(){return[{key:e.block.url,name:e.block.name,url:e.block.url,isImage:e.block.isImage}]}})}function kf(e){let t=Pi(Pd),[n,r]=R(!1),i=()=>`${t()}${hu.url(e.block.sha256,Zl.extensionOf(e.block.mimeType))}`;return B(H,{get when(){return!n()},get fallback(){var t=af();return Z(t,()=>lu.imageSummary(e.block)),t},get children(){return B(Ns,{get src(){return i()},get alt(){return e.block.alt},get width(){return e.block.width},get height(){return e.block.height},class:`h-auto max-h-64 w-auto max-w-full object-contain`,onError:()=>{r(!0)}})}})}var Af={text:lf,markdown:uf,spans:df,section:pf,code:mf,diff:hf,file:xf,list:Sf,kv:wf,link:Tf,attachment:Of,image:kf,notice:Df},jf=K(`<div class="relative ml-[var(--gutter,0px)] max-w-[calc(100vw-3rem)] bg-indigo-500/10 inset-ring inset-ring-indigo-400/40 focus-within:inset-ring-indigo-400/70 text-indigo-200"><textarea placeholder="What should change here?"class="block w-full resize-none bg-transparent px-3 py-[calc(var(--line)/2)] leading-[--line] outline-none [field-sizing:content] placeholder:text-indigo-200/50">`),Mf=K(`<span class="rounded bg-amber-500/15 px-1 text-xs text-amber-400">Stale`),Nf=K(`<div class="absolute top-[calc(var(--line)-0.75rem)] right-full mr-[calc(3.5ch-0.75rem)] flex flex-col items-end gap-0.5"><button type=button title="Delete this comment"class="flex size-6 items-center justify-center rounded text-indigo-200/70 hover:bg-indigo-500/15 hover:text-indigo-200"><span class="i-griddy-icons:close size-3.5"aria-hidden=true>`),Pf=K(`<div class="truncate font-bold leading-[--line]">`),Ff=K(`<div class="min-h-0 overflow-auto overscroll-contain border-b border-neutral-700 py-[calc(var(--line)/2)]"><div class="w-max min-w-full leading-[--line] text-neutral-300 [tab-size:3]">`),If=K(`<div class="mt-auto flex shrink-0 flex-col gap-2 p-3 pb-[max(0.75rem,env(safe-area-inset-bottom))]"><textarea autofocus rows=3 placeholder="What should change here?"class="max-h-60 w-full resize-none rounded-lg bg-indigo-500/10 px-3 py-[calc(var(--line)/2)] leading-[--line] text-indigo-200 outline-none inset-ring inset-ring-indigo-400/40 focus:inset-ring-indigo-400/70 placeholder:text-indigo-200/50 [field-sizing:content]"></textarea><div class="flex shrink-0 items-center justify-end gap-2"><button type=button>Cancel</button><button type=button>Comment`);function Lf(e){let t;En(()=>{P(()=>e.focus===!0)&&t?.focus()});var n=jf(),r=n.firstChild;return Z(n,B(Rf,{get path(){return e.path},get stale(){return e.stale},onRemove:()=>{e.onRemove()}}),r),r.$$keydown=n=>{n.key===`Escape`&&(t?.blur(),e.onClose?.())},r.addEventListener(`blur`,t=>{t.currentTarget.value.trim()===``&&e.onDiscard?.()}),r.$$click=()=>{e.editable||e.onOpen?.()},r.$$input=t=>{e.onWrite(t.currentTarget.value)},X(()=>e=>{t=e},r),W(()=>({e:`Comment on ${e.path}`,t:!e.editable,a:e.text}),({e,t,a:n},i)=>{e!==i?.e&&J(r,`aria-label`,e),t!==i?.t&&J(r,`readonly`,t),r.value=n??``}),n}function Rf(e){var t=Nf(),n=t.firstChild;return n.$$click=()=>{e.onRemove()},Z(t,B(H,{get when(){return e.stale},get children(){return Mf()}}),null),W(()=>`Delete the comment on ${e.path}`,e=>{J(n,`aria-label`,e)}),t}function zf(e){return B(Fc,{get open(){return e.open},get onClose(){return e.onCancel},label:`Comment`,size:`narrow`,get header(){var t=Pf();return Z(t,()=>Uc(e.path)),t},get children(){return B(H,{get when(){return e.open},get children(){return B(Bf,{get path(){return e.path},get quote(){return e.quote},get width(){return e.width},get text(){return e.text},get onCancel(){return e.onCancel},get onSave(){return e.onSave}})}})}})}function Bf(e){let[t,n]=R(P(()=>e.text)),r=L(()=>Gl.fromPath(e.path)),i;return En(()=>{i?.focus()}),[B(H,{get when(){return e.quote.length>0},get children(){var t=Ff(),n=t.firstChild;return Z(n,B(gf,{get lines(){return e.quote},get lang(){return r()},get width(){return e.width}})),t}}),(()=>{var r=If(),a=r.firstChild,o=a.nextSibling.firstChild,s=o.nextSibling;return a.$$input=e=>{n(e.currentTarget.value)},X(()=>e=>{i=e},a),ba(o,`click`,e.onCancel,!0),s.$$click=()=>{e.onSave(t())},W(()=>({e:`Comment on ${e.path}`,t:t(),a:Ho,o:Vo,i:t().trim()===``}),({e,t,a:n,o:r,i},c)=>{e!==c?.e&&J(a,`aria-label`,e),a.value=t??``,Y(o,n,c?.a),Y(s,r,c?.o),i!==c?.i&&J(s,`disabled`,i)}),r})()]}q([`input`,`click`,`keydown`]);var Vf=`file`,Hf=[];function Uf(e,t){return e===void 0||t===void 0?Vf:`${e}:${t}`}function Wf(e){if(e.from===void 0)return;let t=e.to??e.from;return{start:Math.min(e.from,t),end:Math.max(e.from,t)}}function Gf(e){let t=e.comments,[n,r]=R(),[i,a]=R(!1),[o,s]=R(),c=vs(_s),l=L(()=>e.file().path),u=L(()=>n()?.id),d=()=>{a(!1)},f=!1,p=()=>{a(!0),!f&&(f=!0,window.addEventListener(`pointerup`,d),window.addEventListener(`pointercancel`,d))};bn(()=>{window.removeEventListener(`pointerup`,d),window.removeEventListener(`pointercancel`,d)});let m=L(()=>{let e=n();if(e!==void 0&&!i()&&c())return Uf(e.side,Wf(e)?.end)}),h=L(()=>{let e=o();if(e!==void 0)return{id:e};let t=n();return t===void 0||i()||c()?void 0:{held:t}}),g=t=>P(()=>({path:e.file().path,fingerprint:e.file().fingerprint,side:t.side,quote:t.quote,...Wf(t)})),_=e=>{let i=P(n);if(i!==void 0){if(i.id!==void 0){t.write(i.id,e);return}e.trim()!==``&&r({...i,id:t.create(g(i),e)})}},v=()=>{let e=P(n);e?.id!==void 0&&(t.remove(e.id),r({...e,id:void 0}))},y=(e,n)=>{r({...e,to:n}),e.id!==void 0&&t.extend(e.id,n)},b=(e,t,i)=>{let a=Bl(e,t);if(a===void 0)return;let o=P(n);if(i&&o?.side===t&&o.from!==void 0){y(o,a);return}r({side:t,from:a,to:a,quote:e.text})},x=(e,t,n)=>{p(),b(e,t,n)},S=(e,t)=>{let r=P(n),i=Bl(e,t);r?.side===t&&r.from!==void 0&&i!==void 0&&i!==r.to&&y(r,i)},ee=(e,r)=>{if(r===void 0)return`idle`;let i=n(),a=i?.side===e?Wf(i):void 0;return a!==void 0&&r>=a.start&&r<=a.end||t.holds(l(),e,r)?`held`:`idle`},C=(e,n)=>n!==void 0&&(t.ids(l(),e,n).length>0||m()===Uf(e,n)),te=n=>{let r=()=>{t.remove(n)};return B(H,{get when(){return t.one(n)},children:i=>B(Lf,{get path(){return l()},get text(){return i().text},get stale(){return i().fingerprint!==e.file().fingerprint},get editable(){return c()},onWrite:e=>{t.write(n,e)},onOpen:()=>{s(n)},onDiscard:r,onRemove:r})})},w=e=>e===void 0?``:t.one(e)?.text??``,ne=()=>B(Lf,{get path(){return l()},get text(){return w(u())},stale:!1,focus:!0,editable:!0,onWrite:_,onClose:()=>{r(void 0)},onDiscard:v,onRemove:()=>{let e=P(u);e!==void 0&&t.remove(e),r(void 0)}}),re=(e,t)=>[B(V,{get each(){return t().filter(e=>e!==u())},children:e=>te(e)}),B(H,{get when(){return m()===e},get children(){return ne()}})],ie=(e,n)=>n===void 0?void 0:re(Uf(e,n),()=>t.ids(l(),e,n)),ae=(t,n,r)=>{let i=t===void 0||n===void 0?Hf:e.hunks().flatMap(e=>e.lines).filter(e=>{let r=Bl(e,t);return r!==void 0&&r>=n.start&&r<=n.end});return i.length>0?i:r===void 0?Hf:[{kind:`context`,text:r}]},oe=()=>{s(void 0),r(void 0)},T=()=>{let e=h();if(e?.id!==void 0){let n=t.one(e.id),r=n?.start===void 0?void 0:{start:n.start,end:n.end??n.start};return ae(n?.side,r,n?.quote)}let n=e?.held;return n===void 0?Hf:ae(n.side,Wf(n),n.quote)},se=e=>{let n=P(h);n?.id===void 0?_(e):t.write(n.id,e),oe()};return{onPress:x,onPick:b,onSweep:S,stateOf:ee,holdsCards:C,cardsAt:ie,fileCards:()=>re(Vf,()=>t.ids(l())),pickFile:()=>{r({})},sheet:()=>B(zf,{get open(){return h()!==void 0},get path(){return l()},get text(){return w(h()?.id)},get quote(){return T()},get width(){return Rl.gutterWidth(e.hunks())},onCancel:oe,onSave:se})}}function Kf(e){let t=[],n=[],r=[],i=()=>{let e=Math.max(n.length,r.length);for(let i=0;i<e;i+=1)t.push({left:n[i],right:r[i]});n=[],r=[]};for(let a of e.lines){if(a.kind===`context`){i(),t.push({left:a,right:a});continue}if(a.kind===`added`){r.push(a);continue}r.length>0&&i(),n.push(a)}return i(),t}var qf={pair:Kf},Jf=K(`<button type=button><span class="flex shrink-0 items-center"><span></span><span class="flex w-1ch justify-center"><span class="i-griddy-icons:unfold-more size-4 shrink-0"aria-hidden=true></span></span></span><span class="truncate pl-1ch">`);function Yf(e){return`${e.count.toLocaleString()} ${e.count===1?`line`:`lines`} unchanged`}function Xf(e){var t=Jf(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return t.$$click=()=>{e.onOpen(e.gap)},Z(i,()=>Yf(e.gap)),W(()=>({e:e.busy,t:`Show ${Ec.revealed(e.gap)} more lines`,a:`items-center text-left text-neutral-500 ${xd} ${e.busy?``:`hover:bg-neutral-500/15`} ${e.split?`col-span-full grid grid-cols-subgrid`:`flex w-full`}`,o:`${e.width+2}ch`}),({e,t:n,a:i,o:a},o)=>{e!==o?.e&&J(t,`disabled`,e),n!==o?.t&&J(t,`aria-label`,n),Y(t,i,o?.a),a!==o?.o&&Sa(r,`width`,a)}),t}q([`click`]);var Zf=K(`<div class="grid grid-cols-[auto_minmax(0,1fr)_auto_minmax(0,1fr)] leading-[--line] text-neutral-300 [tab-size:3]">`),Qf=K(`<div>`),$f=K(`<span>`),ep=`border-l border-neutral-850`;function tp(e,t){return t===`old`?e.left:e.right}function np(e,t){let n=e.map(e=>Bl(tp(e,t),t)),r=[],i=[],a;for(let[e,t]of n.entries())r[e]=a,a=t??a;a=void 0;for(let e=n.length-1;e>=0;--e)i[e]=a,a=n[e]??a;return n.map((e,t)=>({above:r[t],below:i[t]}))}function rp(e){let t=L(()=>Gl.fromPath(e.path)),n=L(()=>Rl.gutterWidth(e.hunks)),r=L(()=>Ec.parts(e.hunks,e.total)),i=t=>{e.onOpen?.(t)};var a=Zf();return Z(a,B(V,{get each(){return r()},children:r=>`gap`in r?B(Xf,{get gap(){return r.gap},get width(){return n()},split:!0,get busy(){return e.busy===!0},onOpen:i}):B(ip,{get hunk(){return r.hunk},get lang(){return t()},get width(){return n()},get anchors(){return e.anchors}})})),a}function ip(e){let t=L(()=>qf.pair(e.hunk)),n=L(()=>({old:np(t(),`old`),new:np(t(),`new`)})),r=L(()=>{let t=Rl.mapSides(e.hunk.lines,t=>sd.tokenize(t,e.lang));return new Map(e.hunk.lines.map((e,n)=>[e,t[n]]))});return B(V,{get each(){return t()},children:(t,i)=>[B(op,{get line(){return t.left},side:`old`,get tokens(){return r()},get width(){return e.width},get bridge(){return n().old[i()]},get anchors(){return e.anchors}}),B(op,{get line(){return t.right},side:`new`,get tokens(){return r()},get width(){return e.width},get bridge(){return n().new[i()]},get anchors(){return e.anchors}}),B(H,{get when(){return e.anchors},children:e=>B(ap,{pair:t,get anchors(){return e()}})})]})}function ap(e){let t=()=>Bl(e.pair.left,`old`),n=()=>Bl(e.pair.right,`new`),r=(t,n)=>e.anchors.stateOf(t,n)===`held`?_d.held:``;return B(H,{get when(){return e.anchors.holdsCards(`old`,t())||e.anchors.holdsCards(`new`,n())},get children(){return[(()=>{var e=Qf();return W(()=>r(`old`,t()),(t,n)=>{Y(e,t,n)}),e})(),(()=>{var n=Qf();return Z(n,()=>e.anchors.cardsAt(`old`,t())),n})(),(()=>{var e=Qf();return W(()=>`${ep} ${r(`new`,n())}`,(t,n)=>{Y(e,t,n)}),e})(),(()=>{var t=Qf();return Z(t,()=>e.anchors.cardsAt(`new`,n())),t})()]}})}function op(e){let t=()=>e.line?.kind??`context`,n=()=>Bl(e.line,e.side),r=t=>e.anchors?.stateOf(e.side,t)===`held`,i=()=>(e.line===void 0?r(e.bridge?.above)&&r(e.bridge?.below):r(n()))?`held`:`idle`,a=()=>e.line===void 0?bd:md[t()],o=n=>`${yd(t(),i(),n)} ${e.side===`new`?ep:``}`,s=()=>{let t=e.line,n=e.anchors;return t===void 0||n===void 0?void 0:{line:t,anchors:n}},c=()=>{let t=e.line;return t===void 0?[]:vf(e.tokens.get(t)??[{text:t.text}],t.emphasis)};return[B(H,{get when(){return s()},get fallback(){var t=$f();return Z(t,()=>Ld(e.line,e.side,e.width)),W(()=>`select-none whitespace-pre ${o(!1)}`,(e,n)=>{Y(t,e,n)}),t},children:t=>B(Rd,{get line(){return t().line},get side(){return e.side},get width(){return e.width},get anchors(){return t().anchors},get class(){return`flex items-start whitespace-pre text-left ${o(!0)}`}})}),(()=>{var n=$f();return Z(n,B(V,{get each(){return c()},children:e=>(()=>{var n=$f();return Z(n,()=>e.text),W(()=>`${pd(e.role)} ${e.emphasis?hd[t()]:``}`,(e,t)=>{Y(n,e,t)}),n})()})),W(()=>({e:e.side,t:`pr-1ch whitespace-pre-wrap wrap-anywhere ${a()}`}),({e,t},r)=>{e!==r?.e&&J(n,`data-side`,e),Y(n,t,r?.t)}),n})()]}var sp=K(`<div class="overflow-x-auto overscroll-x-contain"><div class="w-max min-w-full leading-[--line] text-neutral-300 [tab-size:3]">`);function cp(e){let t=L(()=>Gl.fromPath(e.path)),n=L(()=>Rl.gutterWidth(e.hunks)),r=L(()=>Ec.parts(e.hunks,e.total));var i=sp(),a=i.firstChild;return Z(a,B(V,{get each(){return r()},children:r=>`gap`in r?B(Xf,{get gap(){return r.gap},get width(){return n()},split:!1,get busy(){return e.busy},get onOpen(){return e.onOpen}}):B(gf,{get lines(){return r.hunk.lines},get lang(){return t()},get width(){return n()},get anchors(){return e.anchors}})})),W(()=>`${n()+4}ch`,e=>{Sa(a,`--gutter`,e)}),i}var lp=K(`<span class="i-griddy-icons:chat-bubble-dots size-4 shrink-0 text-indigo-300"role=img>`),up=K(`<span class="flex items-center gap-2 px-3 text-neutral-400">reading the diff`),dp=K(`<p class="px-3 text-amber-400">diff is very large — the rest is not shown`),fp=K(`<button type=button class="text-neutral-400 mx-2 rounded px-1 text-left hover:bg-indigo-500/10">`),pp=K(`<div class="pb-2 text-sm"><div class=px-3 style=--gutter:7ch></div><!><!><!><!>`),mp=K(`<div class="border-b border-neutral-850 last:border-b-0"><div><button type=button class="flex min-w-0 flex-1 items-center gap-2 py-1.5 text-left"><span aria-hidden=true></span><!><!><!>`),hp=K(`<span class="shrink-0 text-neutral-400">binary`),gp=K(`<p class="px-3 whitespace-pre-wrap text-rose-400">`),_p=K(`<p class="px-3 text-neutral-400">`),vp=[`B`,`kB`,`MB`,`GB`];function yp(e){let t=e,n=0;for(;t>=1e3&&n<vp.length-1;)t/=1e3,n+=1;return`${n===0?t:t.toFixed(1)} ${vp[n]}`}function bp(e){let t=Pi(po)(),n=L(()=>e.state?.kind===`ready`?e.state:void 0),r=L(()=>{let t=n();return t!==void 0&&!e.file.binary&&t.diff.hunks.length>0?Ec.expand(t.diff.hunks,t.lines):[]}),i=t===void 0?void 0:Gf({comments:t,file:()=>e.file,hunks:r}),a=L(()=>n()?.diff.truncated===!0),o=L(()=>{let t=n()?.diff;if(!e.file.binary&&t?.binary!==!0)return`no textual changes`;let r=[t?.oldBytes,t?.newBytes].filter(e=>e!==void 0).map(yp).join(` → `);return r===``?`binary file`:`binary file ${r}`}),s=L(()=>t?.count(e.file.path)??0);var c=mp(),l=c.firstChild,u=l.firstChild,d=u.firstChild,f=d.nextSibling,p=f.nextSibling,m=p.nextSibling;return ba(u,`click`,e.onToggle,!0),Z(u,B(hl,{get file(){return e.file}}),f),Z(u,B(H,{get when(){return s()>0},get children(){var e=lp();return W(()=>({e:mo(s()),t:mo(s())}),({e:t,t:n},r)=>{t!==r?.e&&J(e,`aria-label`,t),n!==r?.t&&J(e,`title`,n)}),e}}),p),Z(u,B(H,{get when(){return!e.file.binary},get fallback(){return hp()},get children(){return B(bl,{get added(){return e.file.added},get removed(){return e.file.removed}})}}),m),Z(c,B(H,{get when(){return e.open},get children(){var t=pp(),s=t.firstChild,c=s.nextSibling,l=c.nextSibling,u=l.nextSibling,d=u.nextSibling;return Z(s,()=>i?.fileCards()),Z(t,B(H,{get when(){return e.state?.kind===`loading`},get children(){var e=up(),t=e.firstChild;return Z(e,B(Fs,{}),t),e}}),c),Z(t,B(H,{get when(){return G(()=>e.state?.kind===`error`)()?e.state:void 0},children:e=>(()=>{var t=gp();return Z(t,()=>e().message),t})()}),l),Z(t,B(H,{get when(){return n()},get children(){return[B(H,{get when(){return r().length>0},get children(){return B(Ga,{get component(){return e.split?rp:cp},get path(){return e.file.path},get hunks(){return r()},get total(){return n()?.diff.total},get busy(){return n()?.opening===!0},get onOpen(){return e.onOpen},anchors:i})}}),B(H,{get when(){return n()?.failed},children:e=>(()=>{var t=gp();return Z(t,e),t})()}),B(H,{get when(){return a()},get children(){return dp()}}),B(H,{get when(){return G(()=>r().length===0)()&&!a()},get children(){return B(H,{when:i!==void 0,get fallback(){var e=_p();return Z(e,o),e},get children(){var t=fp();return t.$$click=()=>{i?.pickFile()},Z(t,o),W(()=>`Comment on ${e.file.path}`,e=>{J(t,`aria-label`,e)}),t}})}})]}}),u),Z(t,()=>i?.sheet(),d),t}}),null),W(()=>({e:`sticky top-0 z-1 flex w-full items-center gap-2 px-3 text-sm ${e.open?`bg-neutral-850`:`bg-neutral-925 hover:bg-neutral-900`}`,t:e.open?`true`:`false`,a:e.file.path,o:`i-griddy-icons:chevron-right-small-filled size-4 shrink-0 text-neutral-400 transition-transform ${e.open?`rotate-90`:``}`}),({e,t,a:n,o:r},i)=>{Y(l,e,i?.e),t!==i?.t&&J(u,`aria-expanded`,t),n!==i?.a&&J(u,`aria-label`,n),Y(d,r,i?.o)}),c}q([`click`]);var xp=56.25,Sp=[`auto`,`split`,`unified`];function Cp(e){return Sp.includes(e)?e:`auto`}function wp(){let e=Number.parseFloat(getComputedStyle(document.documentElement).fontSize);return Number.isFinite(e)&&e>0?e:16}function Tp(e,t){return e===`auto`?t>=xp*wp():e===`split`}var Ep={parse:Cp,split:Tp},Dp=K(`<button type=button title="Write a commit from these changes">Commit`),Op=K(`<p class="px-3 py-2 text-sm text-neutral-400">Nothing has changed.`),kp=K(`<div class="flex items-center gap-2 px-3 py-2 text-sm text-neutral-400"><span class=tabular-nums> of <!></span><button type=button>show more`),Ap=K(`<p class="px-3 py-2 text-sm text-amber-400">More files changed than this list holds.`),jp=K(`<section aria-label=Changes class="flex h-full min-h-0 flex-col"><header class="flex shrink-0 flex-col border-b border-neutral-700"><div class="flex h-12 min-w-0 shrink-0 items-center gap-2 px-3"><button type=button aria-label="Back to the conversation"><span class="i-griddy-icons:arrow-left size-5"aria-hidden=true></span></button><div class="hidden sm:block"></div><div class="ml-auto flex shrink-0 items-center gap-2"><!><!></div></div></header><div class="isolate min-h-0 flex-1 overflow-y-auto"><div><!><!><!><!><!>`),Mp=K(`<div class="px-3 pb-2 text-sm text-emerald-400">committed `),Np=K(`<p class="px-3 py-2 text-sm whitespace-pre-wrap text-rose-400">`),Pp=[{value:`worktree`,label:`Worktree`},{value:`unstaged`,label:`Unstaged`},{value:`staged`,label:`Staged`}],Fp=[{value:`auto`,label:`Auto`},{value:`split`,label:`Split`},{value:`unified`,label:`Unified`}];function Ip(e,t){return e.find(e=>e.value===t)?.label??t}var Lp=500;function Rp(e){let[t,n]=R(Lp),[r,i]=R(0),[a,o]=R(!1),s=ns(i),c=L(()=>Ep.split(e.settings.state.diffSplit,r()));e.diff.watch(!0),bn(()=>{e.diff.watch(!1)}),z(()=>e.diff.state.status,t=>{t===`idle`&&e.diff.refresh()}),z(()=>e.diff.files(),()=>{n(Lp)});let l=L(()=>e.diff.files().slice(0,t())),u=L(()=>e.diff.files().length),d=t=>{e.diff.commit(t).then(()=>{P(()=>e.diff.state.failure)===void 0&&o(!1)})};var f=jp(),p=f.firstChild,m=p.firstChild,h=m.firstChild,g=h.nextSibling,_=g.nextSibling,v=_.firstChild,y=v.nextSibling,b=p.nextSibling,x=b.firstChild,S=x.firstChild,ee=S.nextSibling,C=ee.nextSibling,te=C.nextSibling,w=te.nextSibling;return ba(h,`click`,e.onClose,!0),Z(m,B(ws,{get label(){return Ip(Pp,e.diff.state.base)},icon:`i-griddy-icons:code-compare`,options:Pp,get value(){return e.diff.state.base},title:`What the changes are measured against`,shape:`chip`,place:`below`,onSelect:t=>{e.diff.setBase(t)}}),g),Z(g,B(ws,{get label(){return Ip(Fp,e.settings.state.diffSplit)},icon:`i-griddy-icons:columns-two`,options:Fp,get value(){return e.settings.state.diffSplit},title:`How each file's hunks are laid out`,shape:`chip`,place:`below`,onSelect:t=>{e.settings.setDiffSplit(Ep.parse(t))}})),Z(_,B(bl,{get added(){return e.diff.state.added},get removed(){return e.diff.state.removed}}),v),Z(_,B(H,{get when(){return u()>0},get children(){var t=Dp();return t.$$click=()=>{e.diff.forgetCommit(),o(!0)},W(()=>Vo,(e,n)=>{Y(t,e,n)}),t}}),y),Z(p,B(H,{get when(){return e.diff.state.committed},children:e=>(()=>{var t=Mp();return t.firstChild,Z(t,e,null),t})()}),null),X(()=>s,b),Z(x,B(H,{get when(){return e.diff.state.error},children:e=>(()=>{var t=Np();return Z(t,e),t})()}),S),Z(x,B(H,{get when(){return G(()=>e.diff.state.error===void 0&&e.diff.state.status===`ready`)()?u()===0:e.diff.state.error===void 0&&e.diff.state.status===`ready`},get children(){return Op()}}),ee),Z(x,B(V,{get each(){return l()},keyed:e=>e.path,children:t=>B(bp,{get file(){return t()},get state(){return e.diff.fileState(t().path)},get open(){return e.diff.isOpen(t().path)},get split(){return c()},onToggle:()=>{e.diff.toggle(t().path)},onOpen:n=>{e.diff.open(t().path,n)}})}),C),Z(x,B(H,{get when(){return u()>l().length},get children(){var e=kp(),t=e.firstChild,r=t.firstChild,i=r.nextSibling,a=t.nextSibling;return Z(t,()=>l().length,r),Z(t,u,i),a.$$click=()=>{n(e=>e+Lp)},W(()=>`${Ho} ml-auto`,(e,t)=>{Y(a,e,t)}),e}}),te),Z(x,B(H,{get when(){return e.diff.state.truncated},get children(){return Ap()}}),w),Z(b,B(Ac,{get height(){return e.inset}}),null),Z(f,B(Ml,{get open(){return a()},get files(){return e.diff.files()},get message(){return e.diff.state.message},get committing(){return e.diff.state.committing},get failure(){return e.diff.state.failure},onClose:()=>{o(!1)},onMessage:t=>{e.diff.setMessage(t)},onCommit:d}),null),W(()=>({e:Fo,t:`${e.inset}px`}),({e,t},n)=>{Y(h,e,n?.e),t!==n?.t&&Sa(x,`padding-bottom`,t)}),f}q([`click`]);var zp=K(`<div class="flex flex-wrap gap-2">`),Bp=K(`<div class="flex gap-2"><button type=button>Yes</button><button type=button>No`),Vp=K(`<div class="flex items-center gap-2"><input type=text autofocus autocapitalize=off autocomplete=off><button type=button>Send`),Hp=K(`<div class="flex shrink-0 flex-col gap-2 border-t border-neutral-700 p-3 pb-[max(0.75rem,env(safe-area-inset-bottom))]"><div class="text-base leading-[--line]"><span class=font-bold>`),Up=K(`<p class="whitespace-pre-wrap text-neutral-400">`),Wp=K(`<button type=button>`),Gp=K(`<div class="min-h-0 overflow-y-auto">`),Kp=K(`<div class="font-bold leading-[--line]">`),qp=K(`<div class="flex items-start gap-2 border-b border-neutral-800 p-3 text-base leading-[--line] last:border-b-0"><div class="min-w-0 flex-1">`),Jp=`Command`;function Yp(e){let[t,n]=R(``),r;z(()=>e.request.requestId,()=>{n(``),P(()=>e.request.method)===`input`&&r?.focus()});let i=()=>{t().trim()!==``&&e.onAnswer({value:t()})};var a=Hp(),o=a.firstChild,s=o.firstChild;return Z(s,()=>e.request.title),Z(o,B(H,{get when(){return e.request.message},children:e=>(()=>{var t=Up();return Z(t,e),t})()}),null),Z(a,B(Vi,{get children(){return[B(Hi,{get when(){return e.request.method===`select`},get children(){var t=zp();return Z(t,B(V,{get each(){return e.request.options??[]},children:t=>(()=>{var n=Wp();return n.$$click=()=>{e.onAnswer({value:t})},Z(n,t),W(()=>Ho,(e,t)=>{Y(n,e,t)}),n})()})),t}}),B(Hi,{get when(){return e.request.method===`confirm`},get children(){var t=Bp(),n=t.firstChild,r=n.nextSibling;return n.$$click=()=>{e.onAnswer({confirmed:!0})},r.$$click=()=>{e.onAnswer({confirmed:!1})},W(()=>({e:Vo,t:Ho}),({e,t},i)=>{Y(n,e,i?.e),Y(r,t,i?.t)}),t}}),B(Hi,{get when(){return e.request.method===`input`},get children(){var a=Vp(),o=a.firstChild,s=o.nextSibling;return o.$$keydown=e=>{e.key===`Enter`&&(e.preventDefault(),i())},o.$$input=e=>{n(e.currentTarget.value)},X(()=>e=>{r=e},o),s.$$click=i,W(()=>({e:t(),t:e.request.title,a:e.request.placeholder??``,o:Ro,i:Vo,n:t().trim()===``}),({e,t,a:n,o:r,i,n:a},c)=>{o.value=e??``,t!==c?.t&&J(o,`aria-label`,t),n!==c?.a&&J(o,`placeholder`,n),Y(o,r,c?.o),Y(s,i,c?.i),a!==c?.n&&J(s,`disabled`,a)}),a}})]}}),null),a}function Xp(e){let t=()=>e.store.state.notices,n=()=>e.store.state.requests[0],r=L(()=>t().length>0||n()!==void 0),i=L(()=>t()[0]?.command??n()?.command??Jp);return B(Fc,{get open(){return r()},onClose:()=>{e.store.closeCommand()},get label(){return i()},size:`narrow`,get header(){var e=Kp();return Z(e,i),e},get children(){return B(H,{get when(){return r()},get children(){return[(()=>{var e=Gp();return Z(e,B(V,{get each(){return t()},children:e=>(()=>{var t=qp(),n=t.firstChild;return Z(n,B(Nd,{get text(){return e.text}})),Z(t,B(Uu,{text:()=>e.text,label:`Copy notice`}),null),t})()})),e})(),B(H,{get when(){return n()},children:t=>B(Yp,{get request(){return t()},onAnswer:n=>{e.store.answerRequest(t().requestId,n)}})})]}})}})}q([`click`,`input`,`keydown`]);var Zp=K(`<div role=status><button type=button class="float-right -mt-px ml-2 flex size-6 items-center justify-center rounded-md text-neutral-350 hover:bg-neutral-800 hover:text-neutral-50"><span class="i-griddy-icons:close size-4"aria-hidden=true>`);function Qp(e){return e?`right-3 max-w-sm`:`inset-x-3`}function $p(e){var t=Zp(),n=t.firstChild;return n.$$click=()=>{e.onDismiss()},Z(t,()=>e.children,null),W(()=>({e:`rounded-lg bg-neutral-850 px-3 py-[calc(var(--line)/2)] text-sm shadow-lg ring-1 ring-neutral-700 ${e.class??``}`,t:e.dismissLabel}),({e,t:r},i)=>{Y(t,e,i?.e),r!==i?.t&&J(n,`aria-label`,r)}),t}q([`click`]);var em=K(`<span class="line-clamp-3 break-words whitespace-pre-wrap">`),tm=K(`<div>`),nm=1e4;function rm(e){let t=()=>{e.onDismiss(e.notice.id)},n=setTimeout(t,P(()=>e.dismissMs));return bn(()=>{clearTimeout(n)}),B($p,{get class(){return`pointer-events-auto w-full ${dd[e.notice.severity]}`},dismissLabel:`Dismiss notice`,onDismiss:t,get children(){var t=em();return Z(t,()=>e.notice.text),t}})}function im(e){var t=tm();return Z(t,B(V,{get each(){return e.notices},children:t=>B(rm,{notice:t,get dismissMs(){return e.dismissMs??nm},get onDismiss(){return e.onDismiss}})})),W(()=>`pointer-events-none absolute top-3 z-40 flex flex-col gap-2 ${Qp(e.desktop)}`,(e,n)=>{Y(t,e,n)}),t}var am={216:`O`,223:`s`,248:`o`,273:`d`,295:`h`,305:`i`,320:`l`,322:`l`,359:`t`,383:`s`,384:`b`,385:`B`,387:`b`,390:`O`,392:`c`,393:`D`,394:`D`,396:`d`,398:`E`,400:`E`,402:`f`,403:`G`,407:`I`,409:`k`,410:`l`,412:`M`,413:`N`,414:`n`,415:`O`,421:`p`,427:`t`,429:`t`,430:`T`,434:`V`,436:`y`,438:`z`,477:`e`,485:`g`,544:`N`,545:`d`,549:`z`,564:`l`,565:`n`,566:`t`,567:`j`,570:`A`,571:`C`,572:`c`,573:`L`,574:`T`,575:`s`,576:`z`,579:`B`,580:`U`,581:`V`,582:`E`,583:`e`,584:`J`,585:`j`,586:`Q`,587:`q`,588:`R`,589:`r`,590:`Y`,591:`y`,592:`a`,593:`a`,595:`b`,596:`o`,597:`c`,598:`d`,599:`d`,600:`e`,603:`e`,604:`e`,605:`e`,606:`e`,607:`j`,608:`g`,609:`g`,610:`G`,613:`h`,614:`h`,616:`i`,618:`I`,619:`l`,620:`l`,621:`l`,623:`m`,624:`m`,625:`m`,626:`n`,627:`n`,628:`N`,629:`o`,633:`r`,634:`r`,635:`r`,636:`r`,637:`r`,638:`r`,639:`r`,640:`R`,641:`R`,642:`s`,647:`t`,648:`t`,649:`u`,651:`v`,652:`v`,653:`w`,654:`y`,655:`Y`,656:`z`,657:`z`,663:`c`,665:`B`,666:`e`,667:`G`,668:`H`,669:`j`,670:`k`,671:`L`,672:`q`,686:`h`,867:`a`,868:`e`,869:`i`,870:`o`,871:`u`,872:`c`,873:`d`,874:`h`,875:`m`,876:`r`,877:`t`,878:`v`,879:`x`,7424:`A`,7427:`B`,7428:`C`,7429:`D`,7431:`E`,7432:`e`,7433:`i`,7434:`J`,7435:`K`,7436:`L`,7437:`M`,7438:`N`,7439:`O`,7440:`O`,7441:`o`,7442:`o`,7443:`o`,7446:`o`,7447:`o`,7448:`P`,7449:`R`,7450:`R`,7451:`T`,7452:`U`,7453:`u`,7454:`u`,7455:`m`,7456:`V`,7457:`W`,7458:`Z`,7522:`i`,7523:`r`,7524:`u`,7525:`v`,7834:`a`,7835:`s`,8305:`i`,8341:`h`,8342:`k`,8343:`l`,8344:`m`,8345:`n`,8346:`p`,8347:`s`,8348:`t`,8580:`c`};for(let e=`̀`.codePointAt(0);e<=`ͯ`.codePointAt(0);++e){let t=String.fromCodePoint(e);for(let e of`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`){let n=(e+t).normalize().codePointAt(0);n>126&&(am[n]=e)}}var om={a:[7844,7863],e:[7870,7879],o:[7888,7907],u:[7912,7921]};for(let e of Object.keys(om)){let t=e.toUpperCase();for(let n=om[e][0];n<=om[e][1];++n)am[n]=n%2==0?t:e}function sm(e){if(e<192||e>8580)return e;let t=am[e];return t===void 0?e:t.codePointAt(0)}function cm(e){return e}function lm(e){return e}function um(e,t){return e>t?e:t}var dm=e=>e.split(``).map(e=>e.codePointAt(0)),fm=new Set(` \f
|
|
43
|
-
\r \v\xA0 \u2028\u2029 `.split(``).map(e=>e.codePointAt(0)));for(let e=` `.codePointAt(0);e<=` `.codePointAt(0);e++)fm.add(e);var pm=``.codePointAt(0),mm=`A`.codePointAt(0),hm=`Z`.codePointAt(0),gm=`a`.codePointAt(0),_m=`z`.codePointAt(0),vm=`0`.codePointAt(0),ym=`9`.codePointAt(0);function bm(e,t,n){return n?e:t-e-1}var xm=16,Sm=-3,Cm=-1,wm=xm/2,Tm=xm/2,Em=7,Dm=4,Om=2;function km(e){return e?new Set:null}function Am(e,t,n){if(t!==null&&t.i16.length>e+n){let r=t.i16.subarray(e,e+n);return[e+n,r]}return[e,new Int16Array(n)]}function jm(e,t,n){if(t!==null&&t.i32.length>e+n){let r=t.i32.subarray(e,e+n);return[e+n,r]}return[e,new Int32Array(n)]}function Mm(e){return e>=gm&&e<=_m?1:e>=mm&&e<=hm?2:e>=vm&&e<=ym?4:0}function Nm(e){let t=String.fromCodePoint(e);return t===t.toUpperCase()?t===t.toLowerCase()?t.match(/\p{Number}/gu)===null?t.match(/\p{Letter}/gu)===null?0:3:4:2:1}function Pm(e){return e<=pm?Mm(e):Nm(e)}function Fm(e,t){return e===0&&t!==0?wm:e===1&&t===2||e!==4&&t===4?Em:t===0?Tm:0}function Im(e,t){return t===0?wm:Fm(Pm(e[t-1]),Pm(e[t]))}function Lm(e,t,n,r){let i=e.slice(r),a=i.indexOf(n);if(a===0)return r;if(!t&&n>=gm&&n<=_m){a>0&&(i=i.slice(0,a));let e=i.indexOf(n-32);e>=0&&(a=e)}return a<0?-1:r+a}function Rm(e){for(let t of e)if(t>=128)return!1;return!0}function zm(e,t,n){if(!Rm(e))return 0;if(!Rm(t))return-1;let r=0,i=0;for(let a=0;a<t.length;a++){if(i=Lm(e,n,t[a],i),i<0)return-1;a===0&&i>0&&(r=i-1),i++}return r}var Bm=(e,t,n,r,i,a,o)=>{let s=i.length;if(s===0)return[{start:0,end:0,score:0},km(a)];let c=r.length;if(o!==null&&c*s>o.i16.length)return Hm(e,t,n,r,i,a);let l=zm(r,i,e);if(l<0)return[{start:-1,end:-1,score:0},null];let u=0,d=0,f=null,p=null,m=null,h=null;[u,f]=Am(u,o,c),[u,p]=Am(u,o,c),[u,m]=Am(u,o,c),[d,h]=jm(d,o,s);let[,g]=jm(d,o,c);for(let e=0;e<g.length;e++)g[e]=r[e];let _=cm(0),v=0,y=0,b=0,x=i[0],S=i[0],ee=cm(0),C=0,te=!1,w=g.subarray(l),ne=f.subarray(l).subarray(0,w.length),re=p.subarray(l).subarray(0,w.length),ie=m.subarray(l).subarray(0,w.length);for(let[r,a]of w.entries()){let o=null;a<=pm?(o=Mm(a),!e&&o===2&&(a+=32)):(o=Nm(a),!e&&o===2&&(a=String.fromCodePoint(a).toLowerCase().codePointAt(0)),t&&(a=sm(a))),w[r]=a;let c=Fm(C,o);if(ie[r]=c,C=o,a===S&&(y<s&&(h[y]=lm(l+r),y++,S=i[Math.min(y,s-1)]),b=l+r),a===x){let e=xm+c*Om;if(ne[r]=e,re[r]=1,s===1&&(n&&e>_||!n&&e>=_)&&(_=e,v=l+r,n&&c===wm))break;te=!1}else ne[r]=um(te?ee+Cm:ee+Sm,0),re[r]=0,te=!0;ee=ne[r]}if(y!==s)return[{start:-1,end:-1,score:0},null];if(s===1){let e={start:v,end:v+1,score:_};if(!a)return[e,null];let t=new Set;return t.add(v),[e,t]}let ae=h[0],oe=b-ae+1,T=null;[u,T]=Am(u,o,oe*s);{let e=f.subarray(ae,b+1);for(let[t,n]of e.entries())T[t]=n}let[,se]=Am(u,o,oe*s);{let e=p.subarray(ae,b+1);for(let[t,n]of e.entries())se[t]=n}let ce=h.subarray(1),le=i.slice(1).slice(0,ce.length);for(let[e,t]of ce.entries()){let r=!1,i=le[e],a=e+1,o=a*oe,c=g.subarray(t,b+1),l=m.subarray(t).subarray(0,c.length),u=se.subarray(o+t-ae).subarray(0,c.length),d=se.subarray(o+t-ae-1-oe).subarray(0,c.length),f=T.subarray(o+t-ae).subarray(0,c.length),p=T.subarray(o+t-ae-1-oe).subarray(0,c.length),h=T.subarray(o+t-ae-1).subarray(0,c.length);h[0]=0;for(let[e,o]of c.entries()){let c=e+t,g=0,y=0,b=0;if(y=r?h[e]+Cm:h[e]+Sm,i===o){g=p[e]+xm;let t=l[e];b=d[e]+1,t===wm?b=1:b>1&&(t=um(t,um(Dm,m[c-b+1]))),g+t<y?(g+=l[e],b=0):g+=t}u[e]=b,r=g<y;let x=um(um(g,y),0);a===s-1&&(n&&x>_||!n&&x>=_)&&(_=x,v=c),f[e]=x}}let E=km(a),ue=ae;if(a&&E!==null){let e=s-1;ue=v;let t=!0;for(;;){let n=e*oe,r=ue-ae,i=T[n+r],a=0,o=0;if(e>0&&ue>=h[e]&&(a=T[n-oe+r-1]),ue>h[e]&&(o=T[n+r-1]),i>a&&(i>o||i===o&&t)){if(E.add(ue),e===0)break;e--}t=se[n+r]>1||n+oe+r+1<se.length&&se[n+oe+r+1]>0,ue--}}return[{start:ue,end:v+1,score:_},E]};function Vm(e,t,n,r,i,a,o){let s=0,c=0,l=!1,u=0,d=cm(0),f=km(o),p=0;i>0&&(p=Pm(n[i-1]));for(let m=i;m<a;m++){let i=n[m],a=Pm(i);if(e||(i>=mm&&i<=hm?i+=32:i>pm&&(i=String.fromCodePoint(i).toLowerCase().codePointAt(0))),t&&(i=sm(i)),i===r[s]){o&&f!==null&&f.add(m),c+=xm;let e=Fm(p,a);u===0?d=e:(e===wm&&(d=e),e=um(um(e,d),Dm)),c+=s===0?e*Om:e,l=!1,u++,s++}else c+=l?Cm:Sm,l=!0,u=0,d=0;p=a}return[c,f]}var Hm=(e,t,n,r,i,a,o)=>{if(i.length===0)return[{start:0,end:0,score:0},null];if(zm(r,i,e)<0)return[{start:-1,end:-1,score:0},null];let s=0,c=-1,l=-1,u=r.length,d=i.length;for(let a=0;a<u;a++){let o=r[bm(a,u,n)];e||(o>=mm&&o<=hm?o+=32:o>pm&&(o=String.fromCodePoint(o).toLowerCase().codePointAt(0))),t&&(o=sm(o));let f=i[bm(s,d,n)];if(o===f&&(c<0&&(c=a),s++,s===d)){l=a+1;break}}if(c>=0&&l>=0){s--;for(let t=l-1;t>=c;t--){let a=r[bm(t,u,n)];e||(a>=mm&&a<=hm?a+=32:a>pm&&(a=String.fromCodePoint(a).toLowerCase().codePointAt(0)));let o=i[bm(s,d,n)];if(a===o&&(s--,s<0)){c=t;break}}if(!n){let e=c;c=u-l,l=u-e}let[o,f]=Vm(e,t,r,i,c,l,a);return[{start:c,end:l,score:o},f]}return[{start:-1,end:-1,score:0},null]},Um=(e,t,n,r,i,a,o)=>{if(i.length===0)return[{start:0,end:0,score:0},null];let s=r.length,c=i.length;if(s<c||zm(r,i,e)<0)return[{start:-1,end:-1,score:0},null];let l=0,u=-1,d=cm(0),f=cm(-1);for(let a=0;a<s;a++){let o=bm(a,s,n),p=r[o];e||(p>=mm&&p<=hm?p+=32:p>pm&&(p=String.fromCodePoint(p).toLowerCase().codePointAt(0))),t&&(p=sm(p));let m=bm(l,c,n);if(i[m]===p){if(m===0&&(d=Im(r,o)),l++,l===c){if(d>f&&(u=a,f=d),d===wm)break;a-=l-1,l=0,d=0}}else a-=l,l=0,d=0}if(u>=0){let a=0,o=0;n?(a=u-c+1,o=u+1):(a=s-(u+1),o=s-(u-c+1));let[l]=Vm(e,t,r,i,a,o,!1);return[{start:a,end:o,score:l},null]}return[{start:-1,end:-1,score:0},null]},Wm=102400,Gm=2048;function Km(e,t){return{i16:new Int16Array(e),i32:new Int32Array(t)}}var qm=Km(Wm,Gm),Jm=(e,t,n)=>{let r=!1;switch(t){case`smart-case`:e.toLowerCase()!==e&&(r=!0);break;case`case-sensitive`:r=!0;break;case`case-insensitive`:e=e.toLowerCase(),r=!1}let i=dm(e);return n&&(i=i.map(sm)),{queryRunes:i,caseSensitive:r}};function Ym(e,t){let n=Object.keys(e).map(e=>parseInt(e,10)).sort((e,t)=>t-e),r=[];for(let i of n)if(r=r.concat(e[i]),r.length>=t)break;return r}function Xm(e,t,n){return r=>{let i=this.runesList[r];if(t.length>i.length)return;let[a,o]=this.algoFn(n,this.opts.normalize,this.opts.forward,i,t,!0,qm);if(a.start===-1)return;if(this.opts.fuzzy===!1){o=new Set;for(let e=a.start;e<a.end;++e)o.add(e)}let s=this.opts.sort?a.score:0;e[s]===void 0&&(e[s]=[]),e[s].push({item:this.items[r],...a,positions:o??new Set})}}function Zm(e){let{queryRunes:t,caseSensitive:n}=Jm(e,this.opts.casing,this.opts.normalize),r={},i=Xm.bind(this)(r,t,n);for(let e=0,t=this.runesList.length;e<t;++e)i(e);return Ym(r,this.opts.limit)}var Qm={limit:1/0,selector:e=>e,casing:`smart-case`,normalize:!0,fuzzy:`v2`,tiebreakers:[],sort:!0,forward:!0},$m=class{constructor(e,...t){switch(this.opts={...Qm,...t[0]},this.items=e,this.runesList=e.map(e=>dm(this.opts.selector(e).normalize())),this.algoFn=Um,this.opts.fuzzy){case`v2`:this.algoFn=Bm;break;case`v1`:this.algoFn=Hm}}},eh={...Qm,match:Zm},th=class extends $m{constructor(e,...t){super(e,...t),this.opts={...eh,...t[0]}}find(e){return e.length===0||this.items.length===0?this.items.slice(0,this.opts.limit).map(nh):(e=e.normalize(),rh(this.opts.match.bind(this)(e),this.opts))}};({...Qm});var nh=e=>({item:e,start:-1,end:-1,score:0,positions:new Set});function rh(e,t){if(t.sort){let{selector:n}=t;e.sort((e,r)=>{if(e.score===r.score)for(let i of t.tiebreakers){let t=i(e,r,n);if(t!==0)return t}return 0})}return Number.isFinite(t.limit)&&e.splice(t.limit),e}function ih(e,t,n){return n(e.item).length-n(t.item).length}function ah(e,t){return e.start-t.start}var oh=class{constructor(e,...t){this.finder=new th(e,...t),this.find=this.finder.find.bind(this.finder)}},sh=` `;function ch(e,t,n={}){return lh(t).find(e,n)}function lh(e){let t=new oh(e,{selector:e=>e.haystacks.join(sh),tiebreakers:[ah,ih]}),n;return{find:(r,i={})=>{let a=r.trim(),o=i.limit??1/0;if(a.length===0)return n===void 0&&(n=[...e].sort((e,t)=>(e.haystacks[0]??``).localeCompare(t.haystacks[0]??``)).map(e=>({item:e.item,score:0,positions:new Set}))),o===1/0?n:n.slice(0,o);let s=t.find(a).map(e=>({item:e.item.item,score:e.score,positions:e.positions}));return o===1/0?s:s.slice(0,o)}}}var uh={rank:ch,prepare:lh};function dh(e,t,n={}){let r=t.map(e=>({item:e,haystacks:[e.label,e.description??``]}));return uh.rank(e,r,n).map(e=>e.item)}var fh=30,ph=100,mh=class{query;debounceMs;cache=new Map;generation=0;constructor(e,t=fh){this.query=e,this.debounceMs=t}refreshRelative(){return this.cache.clear(),Promise.resolve()}async rank(e,t){let n=`${t.limit??``}\u0000${e}`,r=this.cache.get(n);if(r)return r;let i=++this.generation;if(await new Promise(e=>setTimeout(e,this.debounceMs)),i!==this.generation||t.signal?.aborted===!0)return[];let a=await this.query(e,t.limit);if(this.cache.set(n,a),this.cache.size>ph){let e=this.cache.keys().next().value;e!==void 0&&this.cache.delete(e)}return i===this.generation?a:[]}};function hh(e){return`seq`in e}function gh(e){switch(e.type){case`attached`:case`replay`:case`message`:case`message_start`:case`message_retire`:case`text_delta`:case`thinking_delta`:case`tool_call`:case`tool_update`:case`tool_end`:case`tool_result`:case`notice`:case`subagent_events`:case`turn_end`:case`session_state`:case`ui_notice`:case`ui_request`:case`ui_request_done`:case`picker_invalidate`:return!0;case`session_activity`:case`session_read`:case`session_meta`:case`project_meta`:case`pins_changed`:case`sessions_changed`:case`extensions_changed`:case`update_state`:case`error`:case`response`:return!1;default:return!1}}function _h(){let e=globalThis.document;return e===void 0||e.visibilityState===`visible`&&e.hasFocus()}function vh(e){e(_h());let t=globalThis.document;if(t===void 0)return()=>void 0;let n=()=>{e(_h())};return t.addEventListener(`visibilitychange`,n),globalThis.addEventListener(`focus`,n),globalThis.addEventListener(`blur`,n),()=>{t.removeEventListener(`visibilitychange`,n),globalThis.removeEventListener(`focus`,n),globalThis.removeEventListener(`blur`,n)}}var yh=1e4;function bh(e){return Math.min(yh,250*2**(e-1))}var xh=class{options;pending=new Map;socket;target;cursor=0;nextId=0;attempt=0;retry;disposed=!1;attention=!0;settled=!1;state=`closed`;constructor(e){this.options=e,this.target={...e.sessionId===void 0?{}:{sessionId:e.sessionId},...e.cwd===void 0?{}:{cwd:e.cwd}}}get status(){return this.state}get sessionId(){return this.target.sessionId}get attentive(){return this.attention}get seq(){return this.cursor}get httpUrl(){return this.options.url.replace(/^ws/,`http`)}async connect(){return await this.openSocket(),await this.sendAttach()}async attachTo(e){let t=this.target,n=this.cursor;this.target=e,this.cursor=0;let r=this.socket?.readyState===WebSocket.OPEN;r||this.cancelRetry();let i=r?await this.sendAttach():await this.connect();return i.success||(this.target=t,this.cursor=n,this.settled=r),i}send(e){let t=this.socket;if(!t||t.readyState!==WebSocket.OPEN)return Promise.reject(Error(`not connected`));let n=`web-${++this.nextId}`;return new Promise((r,i)=>{this.pending.set(n,{resolve:r,reject:i}),t.send(JSON.stringify({...e,id:n}))})}setAttention(e){this.attention!==e&&(this.attention=e,this.socket?.readyState===WebSocket.OPEN&&this.send({type:`attention`,value:e}).catch(()=>void 0))}close(){this.disposed=!0,this.cancelRetry();let e=this.socket;this.socket=void 0,e?.close(),this.rejectPending(Error(`client closed`)),this.setStatus(`closed`)}openSocket(){this.setStatus(this.attempt===0?`connecting`:`reconnecting`);let e=new WebSocket(this.options.url);return this.socket=e,this.settled=!1,e.addEventListener(`message`,e=>{this.receive(String(e.data))}),e.addEventListener(`close`,()=>{this.onClose(e)}),new Promise((t,n)=>{e.addEventListener(`open`,()=>{this.attempt=0,this.setStatus(`open`),t()}),e.addEventListener(`error`,()=>{n(Error(`could not connect to ${this.options.url}`))})})}sendAttach(){return this.settled=!1,this.send({type:`attach`,...this.target.sessionId===void 0?{}:{sessionId:this.target.sessionId},...this.target.cwd===void 0?{}:{cwd:this.target.cwd},...this.target.like===void 0?{}:{like:this.target.like},fromSeq:this.cursor,attentive:this.attention})}onClose(e){if(this.socket===e){if(this.socket=void 0,this.rejectPending(Error(`socket closed`)),this.disposed){this.setStatus(`closed`);return}this.setStatus(`reconnecting`),this.scheduleRetry()}}cancelRetry(){this.retry!==void 0&&(clearTimeout(this.retry),this.retry=void 0)}scheduleRetry(){if(this.retry!==void 0)return;let e=++this.attempt,t=(this.options.backoffMs??bh)(e);this.retry=setTimeout(()=>{this.retry=void 0,this.reconnect()},t),this.retry.unref?.()}async reconnect(){if(!this.disposed)try{await this.openSocket(),await this.sendAttach()}catch{this.disposed||this.scheduleRetry()}}receive(e){let t;try{t=JSON.parse(e)}catch{return}if(t.type===`replay`){for(let e of t.events)this.dispatch(e);return}this.dispatch(t)}dispatch(e){if(e.type===`response`){let t=this.pending.get(e.id);this.pending.delete(e.id),t?.resolve(e);return}if(e.type===`attached`)this.settled=!0,this.target={sessionId:e.sessionId,cwd:e.cwd};else if(!this.settled&&gh(e))return;if(hh(e)){if(e.seq<=this.cursor)return;this.cursor=e.seq}this.options.onEvent(e)}rejectPending(e){let t=[...this.pending.values()];this.pending.clear();for(let n of t)n.reject(e)}setStatus(e){this.state!==e&&(this.state=e,this.options.onStatus?.(e))}};function Sh(e,t){let n=e.find(e=>e.messageId===t);if(n)return n;let r={messageId:t,text:``,thinking:``,tools:[],retired:!1};return e.push(r),r}function Ch(e,t){switch(t.type){case`message_start`:Sh(e.live,t.messageId);return;case`text_delta`:Sh(e.live,t.messageId).text+=t.delta;return;case`thinking_delta`:Sh(e.live,t.messageId).thinking+=t.delta;return;case`tool_call`:{let n=Sh(e.live,t.messageId);n.tools.every(e=>e.callId!==t.callId)&&n.tools.push({callId:t.callId,name:t.name,view:t.view,isError:!1,isPartial:!0});return}case`tool_update`:wh(e.live,t.callId,{view:t.view});return;case`tool_end`:wh(e.live,t.callId,{view:t.view,isError:t.isError,isPartial:!1});return;case`message_retire`:e.live=e.live.flatMap(e=>e.messageId===t.messageId?e.tools.length===0?[]:[{...e,text:``,thinking:``,retired:!0}]:[e]);return;default:return}}function wh(e,t,n){for(let r of e){let e=r.tools.findIndex(e=>e.callId===t),i=r.tools[e];if(i){r.tools[e]={...i,...n};return}}}function Th(e,t){e.live=e.live.map(e=>({...e,tools:e.tools.filter(e=>e.callId!==t)})).filter(e=>!e.retired||e.tools.length>0)}function Eh(e,t){if(!hh(t)){Ch(e,t);return}t.seq<=(e.durable.at(-1)?.seq??0)||Dh(e,t)}function Dh(e,t){e.durable.push(t),t.type===`tool_result`&&Th(e,t.callId)}function Oh(e,t){if(Dh(e,t),t.type===`message`&&t.role===`user`){let n=e.optimistic.findIndex(e=>t.text.startsWith(e.text));e.optimistic=e.optimistic.filter((e,t)=>t!==(n===-1?0:n))}}function kh(e,t){for(let t of e)if(t.type===`message`&&t.role===`user`)return t.text||Ah(t.attachments);let n=t[0];return n&&(n.text||Ah(n.attachments))}function Ah(e){return(e??[]).map(e=>e.name).join(`, `)}function jh(e,t){switch(e.type){case`message`:return e.attachments===void 0&&e.toolCalls===void 0?e:{...e,...e.attachments===void 0?{}:{attachments:e.attachments.map(e=>({...e,url:t(e.url)}))},...e.toolCalls===void 0?{}:{toolCalls:e.toolCalls.map(e=>({...e,view:Mh(e.view,t)}))}};case`tool_call`:case`tool_update`:case`tool_end`:case`tool_result`:return{...e,view:Mh(e.view,t)};default:return e}}function Mh(e,t){let n=e=>e.map(e=>{switch(e.kind){case`attachment`:return{...e,url:t(e.url)};case`section`:return{...e,content:n(e.content)};case`list`:return{...e,items:n(e.items)};default:return e}});return{...e,title:n(e.title),...e.summary===void 0?{}:{summary:n(e.summary)},...e.body===void 0?{}:{body:n(e.body)}}}var Nh=`pim.drafts`,Ph=`pim.unwritten`,Fh=class{state;setState;drafts;writes=new Map;claimed;constructor(e,t,n){this.state=e,this.setState=t,this.drafts=n}unwrittenSummary(){let e=this.state.unwritten;if(e&&(e.sent||this.localTitle(e.sessionId)!==void 0))return{sessionId:e.sessionId,cwd:e.cwd}}localTitle(e){let t=(e===this.state.sessionId?this.firstUserText():this.state.openings[e])?.trim()||this.draftText(e).trim();return t===``?void 0:t}draftText(e){return this.state.drafts[e]??``}setDraftText(e){this.putDraft(P(()=>this.state.sessionId),e)}putDraft(e,t){e!==``&&(this.drafts[e]??``)!==t&&(t===``?delete this.drafts[e]:this.drafts[e]=t,this.setState(n=>{t===``?delete n.drafts[e]:n.drafts[e]=t}),this.persist(Nh,()=>JSON.stringify(this.drafts)))}spendDraft(){this.putDraft(this.state.sessionId,``);let e=this.state.sessionId;this.setState(t=>{delete t.attachments[e]});let t=this.state.unwritten;t&&t.sessionId===this.state.sessionId&&this.setUnwritten({...t,sent:!0})}openingText(e){return e.sessionId===this.state.sessionId?this.firstUserText():void 0}setUnwritten(e){this.setState(t=>{t.unwritten=e});let t=e===void 0?void 0:JSON.stringify(e);this.persist(Ph,()=>t)}claim(e,t){this.claimed!==void 0&&(this.setUnwritten({sessionId:e,cwd:t,sent:!1}),this.putDraft(e,this.claimed),this.claimed=void 0)}takeDraft(e){let t=this.drafts[e]??``;return this.putDraft(e,``),t}firstUserText(){return kh(this.state.durable,this.state.optimistic)}persist(e,t){let n=this.writes.size>0;this.writes.set(e,t),!n&&queueMicrotask(()=>{let e=[...this.writes];this.writes.clear();for(let[t,n]of e){let e=n();try{e===void 0?localStorage.removeItem(t):localStorage.setItem(t,e)}catch{}}})}};function Ih(){return Lh(Nh)}function Lh(e){try{let t=localStorage.getItem(e);return t===null?{}:JSON.parse(t)}catch{return{}}}function Rh(){try{let e=localStorage.getItem(Ph),t=e===null?void 0:JSON.parse(e);return typeof t?.sessionId==`string`?t:void 0}catch{return}}var zh=`0.11.0`,Bh=18e4,Vh=1e4,Hh={tone:`warning`,text:`Restart timed out. The server may still be updating; check it before trying again.`};function Uh(e){return{tone:`warning`,text:`This page was built from pim ${zh} but the server runs ${e}. Reload the page; if that does not settle it, restart the server.`}}var Wh=class{state;target;setState;key;reloadPage;intent;timer;dismissTimer;disconnected;navigating;constructor(e,t=()=>location.reload()){this.key=`pim.reload:${e}`,this.reloadPage=t;let n=Gh(this.key),r=n!==void 0&&n.deadline<=Date.now();this.intent=r?void 0:n,this.target=this.intent?.target,this.disconnected=this.intent?.phase===`restarting`,this.navigating=!1,this.timer=void 0;let[i,a]=Ri({pending:this.intent!==void 0,label:this.intent?`Waiting for server…`:``,notice:r?Hh:void 0,dismissed:!1,stale:!1});this.state=i,this.setState=a,r&&this.persist(),this.intent&&this.arm(this.intent.deadline)}begin(e){return this.timer!==void 0||this.navigating?!1:(this.intent={deadline:Date.now()+Bh,phase:`updating`,target:e,skipped:``,blocking:!1},this.disconnected=!1,this.persist(),this.progress(`Updating…`),this.arm(this.intent.deadline),!0)}rejected(e){this.intent?.phase===`updating`&&this.finish({tone:`error`,text:e})}connection(e){this.navigating||(e===`reconnecting`&&(this.disconnected=!0),e===`open`&&this.disconnected&&(this.intent?.phase===`restarting`?this.refresh():!this.intent&&this.timer!==void 0&&this.finish()))}ingest(e){if(!this.navigating){if(e.type===`attached`){let t=e.pimVersion!==zh,n=t!==this.state.stale;if(this.setState(e=>{e.stale=t}),t){this.intent&&this.intent.phase!==`loaded`?this.refresh():n&&this.finish(Uh(e.pimVersion));return}if(this.intent?.phase===`loaded`){let{skipped:t,blocking:n}=this.intent;this.finish({tone:n?`warning`:`success`,text:`Restarted with pim ${e.pimVersion}.${t}`})}return}if(e.type===`update_state`)switch(e.phase){case`step`:this.progress(e.label),this.timer===void 0&&this.arm(Date.now()+Bh);return;case`restarting`:this.intent&&(this.intent={...this.intent,phase:`restarting`,skipped:Kh(e),blocking:e.skipped.some(e=>e.blocking)},this.persist()),this.progress(`Restarting…`),this.timer===void 0&&this.arm(Date.now()+Bh);return;case`stranded`:this.finish({tone:`warning`,text:`Updated on disk to pim ${e.to}, but this server is not supervised. Restart it manually, then reload this page.${Kh(e)}`});return;case`failed`:this.finish({tone:`error`,text:`Update failed: ${e.error}`})}}}refresh(){this.navigating||(this.navigating=!0,this.intent&&(this.intent={...this.intent,phase:`loaded`},this.persist()),this.dispose(),this.reloadPage())}dismiss(){clearTimeout(this.dismissTimer),this.dismissTimer=void 0,this.setState(e=>{e.notice=void 0,e.dismissed=!0})}dispose(){clearTimeout(this.timer),clearTimeout(this.dismissTimer),this.timer=void 0,this.dismissTimer=void 0}progress(e){this.setState(t=>{t.pending=!0,t.label=e,t.notice=void 0,t.dismissed=!1})}arm(e){this.timer=setTimeout(()=>this.finish(Hh),Math.max(0,e-Date.now()))}finish(e){this.dispose(),this.intent=void 0,this.persist(),this.setState(t=>{t.pending=!1,t.label=``,t.notice=e,t.dismissed=!1}),e?.tone===`success`&&(this.dismissTimer=setTimeout(()=>this.dismiss(),Vh))}persist(){try{this.intent?sessionStorage.setItem(this.key,JSON.stringify(this.intent)):sessionStorage.removeItem(this.key)}catch{}}};function Gh(e){try{let t=JSON.parse(sessionStorage.getItem(e)??`null`);if(t&&Number.isFinite(t.deadline)&&[`updating`,`restarting`,`loaded`].includes(t.phase)&&typeof t.skipped==`string`&&t.target&&(t.target.sessionId===void 0||typeof t.target.sessionId==`string`)&&(t.target.cwd===void 0||typeof t.target.cwd==`string`))return{...t,blocking:t.blocking===!0}}catch{}}function Kh(e){return e.skipped.map(({label:e,reason:t})=>` Skipped ${e}: ${t}.`).join(``)}var qh=50,Jh=20;function Yh(e,t){if(e===t)return``;if(e.startsWith(`${t}\n\n`))return e.slice(t.length+2);if(e.endsWith(`\n\n${t}`))return e.slice(0,-t.length-2);let n=e.indexOf(`\n\n${t}\n\n`);return n===-1?e:e.slice(0,n)+e.slice(n+t.length+2)}var Xh=[{value:`/clear`,label:`/clear`,description:`Start a new session with this one's model and directory`,run:e=>e.newSession()}],Zh=class{client;update;files;state;setState;optimisticId=0;catalogue;roster;drafts;detachAttention;guessed=new Set;constructor(e){this.update=new Wh(e.url,e.reloadPage);let t=Ih(),n=Rh(),r=e.sessionId??this.update.target?.sessionId??n?.sessionId,i=e.cwd??this.update.target?.cwd??n?.cwd,[a,o]=Ri({connection:`closed`,sessionId:``,pimVersion:void 0,piVersion:void 0,cwd:i??``,model:``,modelLabel:``,thinking:``,cost:0,agent:`idle`,writable:!0,repoBusy:!1,heldBy:void 0,turnElapsedMs:void 0,contextPercent:void 0,contextWindow:void 0,branch:void 0,dirtyCount:0,ahead:0,behind:0,repoRevision:``,durable:[],live:[],optimistic:[],activity:{},catalogue:0,extensions:0,loading:!1,error:void 0,unread:{},archived:{},names:{},pinned:{},pinRank:{},expanded:{},labels:{},drafts:{...t},attachments:{},openings:{},unwritten:n,subagent:void 0,notices:[],toasts:[],requests:[]});this.state=a,this.setState=o,this.drafts=new Fh(a,o,t),this.drafts.claimed=r===void 0?``:void 0,this.client=new xh({url:e.url,...r===void 0?{}:{sessionId:r},...i===void 0?{}:{cwd:i},...e.backoffMs===void 0?{}:{backoffMs:e.backoffMs},onEvent:e=>{this.ingest(e)},onStatus:e=>{this.update.connection(e),this.setState(t=>{t.connection=e})}}),this.files=new mh((e,t)=>this.pickFiles(e,t??qh),e.pickerDebounceMs),this.detachAttention=vh(e=>{this.client.setAttention(e)})}async connect(){let e=await this.client.connect();if(e.success)return;let t=this.state.unwritten;if(!t||this.client.sessionId!==t.sessionId)throw Error(e.error??`attach was refused`);await this.restart(t)}dispose(){this.detachAttention(),this.client.close(),this.update.dispose()}async reload(e=!1){if(this.update.begin({sessionId:this.state.sessionId,cwd:this.state.cwd}))try{let t=await this.client.send({type:`reload`,...e?{force:e}:{}});t.success||this.update.rejected(t.error??`The server refused the restart.`)}catch(e){this.update.rejected(e.message)}}trailing(){return this.state.optimistic}liveSize(){let e=0;for(let t of this.state.live)e+=t.text.length+t.thinking.length,e+=t.tools.length;return e}isBusy(){return this.state.agent!==`idle`}isHeld(){return!this.state.writable}heldNotice(){if(this.isHeld())return`Running ${this.state.heldBy?.frontend===`tui`?`in the terminal`:`in another window`} — you can continue when this turn ends.`}isRunning(e){return(this.state.activity[e]??`idle`)!==`idle`}runningIds(){return Object.keys(this.state.activity).filter(e=>this.isRunning(e)).sort()}async prompt(e){let t=e.trim(),n=this.state.sessionId,r=this.attachmentsOf(n);if(t===``&&r.length===0)return!1;let i=Xh.find(e=>e.value===t);if(i)return this.drafts.putDraft(n,``),this.setState(e=>{delete e.attachments[n]}),await i.run(this).catch(()=>void 0),!0;if(this.isHeld())return!1;let a=r.map(({name:e,url:t,isImage:n})=>({name:e,url:t,isImage:n})),o=this.isBusy(),s=``,c;this.setState(e=>{let n=kh(e.durable,e.optimistic)===void 0,r=o?e.optimistic.find(e=>e.queued):void 0;r?(s=r.id,r.text=`${r.text}\n\n${t}`,r.attachments=[...r.attachments??[],...a]):(s=`optimistic:${++this.optimisticId}`,e.optimistic.push({id:s,text:t,...a.length===0?{}:{attachments:a},timestamp:Date.now(),...o?{queued:!0}:{}})),n&&(e.openings[e.sessionId]=t,c=e.sessionId),e.error=void 0});let l={id:s,text:t,attachments:a,opened:c};this.drafts.spendDraft();let u=r.map(({id:e})=>({id:e})),d;try{if(d=await this.client.send({type:`user_message`,sessionId:n,text:t,...u.length===0?{}:{attachments:u}}),!d.success)throw Error(d.error??`the server refused the message`)}catch(e){return this.rollback(l),this.setState(t=>{t.error=e.message}),!1}return d.dispatched===!0&&this.rollback(l),!0}cancel(){return this.reclaim({type:`cancel`,sessionId:this.state.sessionId})}dequeue(){return this.reclaim({type:`dequeue`,sessionId:this.state.sessionId})}async reclaim(e){if(this.isHeld())return``;let t=(await this.client.send(e).catch(()=>void 0))?.restored??[];return t.length>0&&this.dropQueued(),t.join(`
|
|
43
|
+
\r \v\xA0 \u2028\u2029 `.split(``).map(e=>e.codePointAt(0)));for(let e=` `.codePointAt(0);e<=` `.codePointAt(0);e++)fm.add(e);var pm=``.codePointAt(0),mm=`A`.codePointAt(0),hm=`Z`.codePointAt(0),gm=`a`.codePointAt(0),_m=`z`.codePointAt(0),vm=`0`.codePointAt(0),ym=`9`.codePointAt(0);function bm(e,t,n){return n?e:t-e-1}var xm=16,Sm=-3,Cm=-1,wm=xm/2,Tm=xm/2,Em=7,Dm=4,Om=2;function km(e){return e?new Set:null}function Am(e,t,n){if(t!==null&&t.i16.length>e+n){let r=t.i16.subarray(e,e+n);return[e+n,r]}return[e,new Int16Array(n)]}function jm(e,t,n){if(t!==null&&t.i32.length>e+n){let r=t.i32.subarray(e,e+n);return[e+n,r]}return[e,new Int32Array(n)]}function Mm(e){return e>=gm&&e<=_m?1:e>=mm&&e<=hm?2:e>=vm&&e<=ym?4:0}function Nm(e){let t=String.fromCodePoint(e);return t===t.toUpperCase()?t===t.toLowerCase()?t.match(/\p{Number}/gu)===null?t.match(/\p{Letter}/gu)===null?0:3:4:2:1}function Pm(e){return e<=pm?Mm(e):Nm(e)}function Fm(e,t){return e===0&&t!==0?wm:e===1&&t===2||e!==4&&t===4?Em:t===0?Tm:0}function Im(e,t){return t===0?wm:Fm(Pm(e[t-1]),Pm(e[t]))}function Lm(e,t,n,r){let i=e.slice(r),a=i.indexOf(n);if(a===0)return r;if(!t&&n>=gm&&n<=_m){a>0&&(i=i.slice(0,a));let e=i.indexOf(n-32);e>=0&&(a=e)}return a<0?-1:r+a}function Rm(e){for(let t of e)if(t>=128)return!1;return!0}function zm(e,t,n){if(!Rm(e))return 0;if(!Rm(t))return-1;let r=0,i=0;for(let a=0;a<t.length;a++){if(i=Lm(e,n,t[a],i),i<0)return-1;a===0&&i>0&&(r=i-1),i++}return r}var Bm=(e,t,n,r,i,a,o)=>{let s=i.length;if(s===0)return[{start:0,end:0,score:0},km(a)];let c=r.length;if(o!==null&&c*s>o.i16.length)return Hm(e,t,n,r,i,a);let l=zm(r,i,e);if(l<0)return[{start:-1,end:-1,score:0},null];let u=0,d=0,f=null,p=null,m=null,h=null;[u,f]=Am(u,o,c),[u,p]=Am(u,o,c),[u,m]=Am(u,o,c),[d,h]=jm(d,o,s);let[,g]=jm(d,o,c);for(let e=0;e<g.length;e++)g[e]=r[e];let _=cm(0),v=0,y=0,b=0,x=i[0],S=i[0],ee=cm(0),C=0,te=!1,w=g.subarray(l),ne=f.subarray(l).subarray(0,w.length),re=p.subarray(l).subarray(0,w.length),ie=m.subarray(l).subarray(0,w.length);for(let[r,a]of w.entries()){let o=null;a<=pm?(o=Mm(a),!e&&o===2&&(a+=32)):(o=Nm(a),!e&&o===2&&(a=String.fromCodePoint(a).toLowerCase().codePointAt(0)),t&&(a=sm(a))),w[r]=a;let c=Fm(C,o);if(ie[r]=c,C=o,a===S&&(y<s&&(h[y]=lm(l+r),y++,S=i[Math.min(y,s-1)]),b=l+r),a===x){let e=xm+c*Om;if(ne[r]=e,re[r]=1,s===1&&(n&&e>_||!n&&e>=_)&&(_=e,v=l+r,n&&c===wm))break;te=!1}else ne[r]=um(te?ee+Cm:ee+Sm,0),re[r]=0,te=!0;ee=ne[r]}if(y!==s)return[{start:-1,end:-1,score:0},null];if(s===1){let e={start:v,end:v+1,score:_};if(!a)return[e,null];let t=new Set;return t.add(v),[e,t]}let ae=h[0],oe=b-ae+1,T=null;[u,T]=Am(u,o,oe*s);{let e=f.subarray(ae,b+1);for(let[t,n]of e.entries())T[t]=n}let[,se]=Am(u,o,oe*s);{let e=p.subarray(ae,b+1);for(let[t,n]of e.entries())se[t]=n}let ce=h.subarray(1),le=i.slice(1).slice(0,ce.length);for(let[e,t]of ce.entries()){let r=!1,i=le[e],a=e+1,o=a*oe,c=g.subarray(t,b+1),l=m.subarray(t).subarray(0,c.length),u=se.subarray(o+t-ae).subarray(0,c.length),d=se.subarray(o+t-ae-1-oe).subarray(0,c.length),f=T.subarray(o+t-ae).subarray(0,c.length),p=T.subarray(o+t-ae-1-oe).subarray(0,c.length),h=T.subarray(o+t-ae-1).subarray(0,c.length);h[0]=0;for(let[e,o]of c.entries()){let c=e+t,g=0,y=0,b=0;if(y=r?h[e]+Cm:h[e]+Sm,i===o){g=p[e]+xm;let t=l[e];b=d[e]+1,t===wm?b=1:b>1&&(t=um(t,um(Dm,m[c-b+1]))),g+t<y?(g+=l[e],b=0):g+=t}u[e]=b,r=g<y;let x=um(um(g,y),0);a===s-1&&(n&&x>_||!n&&x>=_)&&(_=x,v=c),f[e]=x}}let E=km(a),ue=ae;if(a&&E!==null){let e=s-1;ue=v;let t=!0;for(;;){let n=e*oe,r=ue-ae,i=T[n+r],a=0,o=0;if(e>0&&ue>=h[e]&&(a=T[n-oe+r-1]),ue>h[e]&&(o=T[n+r-1]),i>a&&(i>o||i===o&&t)){if(E.add(ue),e===0)break;e--}t=se[n+r]>1||n+oe+r+1<se.length&&se[n+oe+r+1]>0,ue--}}return[{start:ue,end:v+1,score:_},E]};function Vm(e,t,n,r,i,a,o){let s=0,c=0,l=!1,u=0,d=cm(0),f=km(o),p=0;i>0&&(p=Pm(n[i-1]));for(let m=i;m<a;m++){let i=n[m],a=Pm(i);if(e||(i>=mm&&i<=hm?i+=32:i>pm&&(i=String.fromCodePoint(i).toLowerCase().codePointAt(0))),t&&(i=sm(i)),i===r[s]){o&&f!==null&&f.add(m),c+=xm;let e=Fm(p,a);u===0?d=e:(e===wm&&(d=e),e=um(um(e,d),Dm)),c+=s===0?e*Om:e,l=!1,u++,s++}else c+=l?Cm:Sm,l=!0,u=0,d=0;p=a}return[c,f]}var Hm=(e,t,n,r,i,a,o)=>{if(i.length===0)return[{start:0,end:0,score:0},null];if(zm(r,i,e)<0)return[{start:-1,end:-1,score:0},null];let s=0,c=-1,l=-1,u=r.length,d=i.length;for(let a=0;a<u;a++){let o=r[bm(a,u,n)];e||(o>=mm&&o<=hm?o+=32:o>pm&&(o=String.fromCodePoint(o).toLowerCase().codePointAt(0))),t&&(o=sm(o));let f=i[bm(s,d,n)];if(o===f&&(c<0&&(c=a),s++,s===d)){l=a+1;break}}if(c>=0&&l>=0){s--;for(let t=l-1;t>=c;t--){let a=r[bm(t,u,n)];e||(a>=mm&&a<=hm?a+=32:a>pm&&(a=String.fromCodePoint(a).toLowerCase().codePointAt(0)));let o=i[bm(s,d,n)];if(a===o&&(s--,s<0)){c=t;break}}if(!n){let e=c;c=u-l,l=u-e}let[o,f]=Vm(e,t,r,i,c,l,a);return[{start:c,end:l,score:o},f]}return[{start:-1,end:-1,score:0},null]},Um=(e,t,n,r,i,a,o)=>{if(i.length===0)return[{start:0,end:0,score:0},null];let s=r.length,c=i.length;if(s<c||zm(r,i,e)<0)return[{start:-1,end:-1,score:0},null];let l=0,u=-1,d=cm(0),f=cm(-1);for(let a=0;a<s;a++){let o=bm(a,s,n),p=r[o];e||(p>=mm&&p<=hm?p+=32:p>pm&&(p=String.fromCodePoint(p).toLowerCase().codePointAt(0))),t&&(p=sm(p));let m=bm(l,c,n);if(i[m]===p){if(m===0&&(d=Im(r,o)),l++,l===c){if(d>f&&(u=a,f=d),d===wm)break;a-=l-1,l=0,d=0}}else a-=l,l=0,d=0}if(u>=0){let a=0,o=0;n?(a=u-c+1,o=u+1):(a=s-(u+1),o=s-(u-c+1));let[l]=Vm(e,t,r,i,a,o,!1);return[{start:a,end:o,score:l},null]}return[{start:-1,end:-1,score:0},null]},Wm=102400,Gm=2048;function Km(e,t){return{i16:new Int16Array(e),i32:new Int32Array(t)}}var qm=Km(Wm,Gm),Jm=(e,t,n)=>{let r=!1;switch(t){case`smart-case`:e.toLowerCase()!==e&&(r=!0);break;case`case-sensitive`:r=!0;break;case`case-insensitive`:e=e.toLowerCase(),r=!1}let i=dm(e);return n&&(i=i.map(sm)),{queryRunes:i,caseSensitive:r}};function Ym(e,t){let n=Object.keys(e).map(e=>parseInt(e,10)).sort((e,t)=>t-e),r=[];for(let i of n)if(r=r.concat(e[i]),r.length>=t)break;return r}function Xm(e,t,n){return r=>{let i=this.runesList[r];if(t.length>i.length)return;let[a,o]=this.algoFn(n,this.opts.normalize,this.opts.forward,i,t,!0,qm);if(a.start===-1)return;if(this.opts.fuzzy===!1){o=new Set;for(let e=a.start;e<a.end;++e)o.add(e)}let s=this.opts.sort?a.score:0;e[s]===void 0&&(e[s]=[]),e[s].push({item:this.items[r],...a,positions:o??new Set})}}function Zm(e){let{queryRunes:t,caseSensitive:n}=Jm(e,this.opts.casing,this.opts.normalize),r={},i=Xm.bind(this)(r,t,n);for(let e=0,t=this.runesList.length;e<t;++e)i(e);return Ym(r,this.opts.limit)}var Qm={limit:1/0,selector:e=>e,casing:`smart-case`,normalize:!0,fuzzy:`v2`,tiebreakers:[],sort:!0,forward:!0},$m=class{constructor(e,...t){switch(this.opts={...Qm,...t[0]},this.items=e,this.runesList=e.map(e=>dm(this.opts.selector(e).normalize())),this.algoFn=Um,this.opts.fuzzy){case`v2`:this.algoFn=Bm;break;case`v1`:this.algoFn=Hm}}},eh={...Qm,match:Zm},th=class extends $m{constructor(e,...t){super(e,...t),this.opts={...eh,...t[0]}}find(e){return e.length===0||this.items.length===0?this.items.slice(0,this.opts.limit).map(nh):(e=e.normalize(),rh(this.opts.match.bind(this)(e),this.opts))}};({...Qm});var nh=e=>({item:e,start:-1,end:-1,score:0,positions:new Set});function rh(e,t){if(t.sort){let{selector:n}=t;e.sort((e,r)=>{if(e.score===r.score)for(let i of t.tiebreakers){let t=i(e,r,n);if(t!==0)return t}return 0})}return Number.isFinite(t.limit)&&e.splice(t.limit),e}function ih(e,t,n){return n(e.item).length-n(t.item).length}function ah(e,t){return e.start-t.start}var oh=class{constructor(e,...t){this.finder=new th(e,...t),this.find=this.finder.find.bind(this.finder)}},sh=` `;function ch(e,t,n={}){return lh(t).find(e,n)}function lh(e){let t=new oh(e,{selector:e=>e.haystacks.join(sh),tiebreakers:[ah,ih]}),n;return{find:(r,i={})=>{let a=r.trim(),o=i.limit??1/0;if(a.length===0)return n===void 0&&(n=[...e].sort((e,t)=>(e.haystacks[0]??``).localeCompare(t.haystacks[0]??``)).map(e=>({item:e.item,score:0,positions:new Set}))),o===1/0?n:n.slice(0,o);let s=t.find(a).map(e=>({item:e.item.item,score:e.score,positions:e.positions}));return o===1/0?s:s.slice(0,o)}}}var uh={rank:ch,prepare:lh};function dh(e,t,n={}){let r=t.map(e=>({item:e,haystacks:[e.label,e.description??``]}));return uh.rank(e,r,n).map(e=>e.item)}var fh=30,ph=100,mh=class{query;debounceMs;cache=new Map;generation=0;constructor(e,t=fh){this.query=e,this.debounceMs=t}refreshRelative(){return this.cache.clear(),Promise.resolve()}async rank(e,t){let n=`${t.limit??``}\u0000${e}`,r=this.cache.get(n);if(r)return r;let i=++this.generation;if(await new Promise(e=>setTimeout(e,this.debounceMs)),i!==this.generation||t.signal?.aborted===!0)return[];let a=await this.query(e,t.limit);if(this.cache.set(n,a),this.cache.size>ph){let e=this.cache.keys().next().value;e!==void 0&&this.cache.delete(e)}return i===this.generation?a:[]}};function hh(e){return`seq`in e}function gh(e){switch(e.type){case`attached`:case`replay`:case`message`:case`message_start`:case`message_retire`:case`text_delta`:case`thinking_delta`:case`tool_call`:case`tool_update`:case`tool_end`:case`tool_result`:case`notice`:case`subagent_events`:case`turn_end`:case`session_state`:case`ui_notice`:case`ui_request`:case`ui_request_done`:case`picker_invalidate`:return!0;case`session_activity`:case`session_read`:case`session_meta`:case`project_meta`:case`pins_changed`:case`sessions_changed`:case`extensions_changed`:case`update_state`:case`error`:case`response`:return!1;default:return!1}}function _h(){let e=globalThis.document;return e===void 0||e.visibilityState===`visible`&&e.hasFocus()}function vh(e){e(_h());let t=globalThis.document;if(t===void 0)return()=>void 0;let n=()=>{e(_h())};return t.addEventListener(`visibilitychange`,n),globalThis.addEventListener(`focus`,n),globalThis.addEventListener(`blur`,n),()=>{t.removeEventListener(`visibilitychange`,n),globalThis.removeEventListener(`focus`,n),globalThis.removeEventListener(`blur`,n)}}function yh(e){let t=globalThis.document;if(t===void 0)return()=>void 0;let n=()=>{t.visibilityState===`visible`&&e()};return t.addEventListener(`visibilitychange`,n),globalThis.addEventListener(`pageshow`,e),globalThis.addEventListener(`online`,e),()=>{t.removeEventListener(`visibilitychange`,n),globalThis.removeEventListener(`pageshow`,e),globalThis.removeEventListener(`online`,e)}}var bh=1e3,xh=5e3,Sh=class{options;pending=new Map;socket;target;cursor=0;nextId=0;retrying=!1;retry;disposed=!1;attention=!0;settled=!1;state=`closed`;constructor(e){this.options=e,this.target={...e.sessionId===void 0?{}:{sessionId:e.sessionId},...e.cwd===void 0?{}:{cwd:e.cwd}}}get status(){return this.state}get sessionId(){return this.target.sessionId}get attentive(){return this.attention}get seq(){return this.cursor}get httpUrl(){return this.options.url.replace(/^ws/,`http`)}async connect(){return await this.openSocket(),await this.sendAttach()}async attachTo(e){let t=this.target,n=this.cursor;this.target=e,this.cursor=0;let r=this.socket?.readyState===WebSocket.OPEN;r||this.cancelRetry();let i=r?await this.sendAttach():await this.connect();return i.success||(this.target=t,this.cursor=n,this.settled=r),i}send(e){let t=this.socket;if(!t||t.readyState!==WebSocket.OPEN)return Promise.reject(Error(`not connected`));let n=`web-${++this.nextId}`;return new Promise((r,i)=>{this.pending.set(n,{resolve:r,reject:i}),t.send(JSON.stringify({...e,id:n}))})}setAttention(e){this.attention!==e&&(this.attention=e,this.socket?.readyState===WebSocket.OPEN&&this.send({type:`attention`,value:e}).catch(()=>void 0))}wake(){this.state===`reconnecting`&&this.socket===void 0&&(this.cancelRetry(),this.reconnect())}close(){this.disposed=!0,this.cancelRetry();let e=this.socket;this.socket=void 0,e?.close(),this.rejectPending(Error(`client closed`)),this.setStatus(`closed`)}openSocket(){this.setStatus(this.retrying?`reconnecting`:`connecting`);let e=new WebSocket(this.options.url);return this.socket=e,this.settled=!1,e.addEventListener(`message`,e=>{this.receive(String(e.data))}),e.addEventListener(`close`,()=>{this.onClose(e)}),new Promise((t,n)=>{let r=()=>{clearTimeout(i),n(Error(`could not connect to ${this.options.url}`))},i=setTimeout(()=>{r(),this.onClose(e),e.close()},this.options.connectTimeoutMs??xh);i.unref?.(),e.addEventListener(`open`,()=>{clearTimeout(i),this.retrying=!1,this.setStatus(`open`),t()}),e.addEventListener(`error`,r)})}sendAttach(){return this.settled=!1,this.send({type:`attach`,...this.target.sessionId===void 0?{}:{sessionId:this.target.sessionId},...this.target.cwd===void 0?{}:{cwd:this.target.cwd},...this.target.like===void 0?{}:{like:this.target.like},fromSeq:this.cursor,attentive:this.attention})}onClose(e){if(this.socket===e){if(this.socket=void 0,this.rejectPending(Error(`socket closed`)),this.disposed){this.setStatus(`closed`);return}this.setStatus(`reconnecting`),this.scheduleRetry()}}cancelRetry(){this.retry!==void 0&&(clearTimeout(this.retry),this.retry=void 0)}scheduleRetry(){this.retry===void 0&&(this.retrying=!0,this.retry=setTimeout(()=>{this.retry=void 0,this.reconnect()},this.options.retryMs??bh),this.retry.unref?.())}async reconnect(){if(!this.disposed)try{await this.openSocket(),await this.sendAttach()}catch{this.disposed||this.scheduleRetry()}}receive(e){let t;try{t=JSON.parse(e)}catch{return}if(t.type===`replay`){for(let e of t.events)this.dispatch(e);return}this.dispatch(t)}dispatch(e){if(e.type===`response`){let t=this.pending.get(e.id);this.pending.delete(e.id),t?.resolve(e);return}if(e.type===`attached`)this.settled=!0,this.target={sessionId:e.sessionId,cwd:e.cwd};else if(!this.settled&&gh(e))return;if(hh(e)){if(e.seq<=this.cursor)return;this.cursor=e.seq}this.options.onEvent(e)}rejectPending(e){let t=[...this.pending.values()];this.pending.clear();for(let n of t)n.reject(e)}setStatus(e){this.state!==e&&(this.state=e,this.options.onStatus?.(e))}};function Ch(e,t){let n=e.find(e=>e.messageId===t);if(n)return n;let r={messageId:t,text:``,thinking:``,tools:[],retired:!1};return e.push(r),r}function wh(e,t){switch(t.type){case`message_start`:Ch(e.live,t.messageId);return;case`text_delta`:Ch(e.live,t.messageId).text+=t.delta;return;case`thinking_delta`:Ch(e.live,t.messageId).thinking+=t.delta;return;case`tool_call`:{let n=Ch(e.live,t.messageId);n.tools.every(e=>e.callId!==t.callId)&&n.tools.push({callId:t.callId,name:t.name,view:t.view,isError:!1,isPartial:!0});return}case`tool_update`:Th(e.live,t.callId,{view:t.view});return;case`tool_end`:Th(e.live,t.callId,{view:t.view,isError:t.isError,isPartial:!1});return;case`message_retire`:e.live=e.live.flatMap(e=>e.messageId===t.messageId?e.tools.length===0?[]:[{...e,text:``,thinking:``,retired:!0}]:[e]);return;default:return}}function Th(e,t,n){for(let r of e){let e=r.tools.findIndex(e=>e.callId===t),i=r.tools[e];if(i){r.tools[e]={...i,...n};return}}}function Eh(e,t){e.live=e.live.map(e=>({...e,tools:e.tools.filter(e=>e.callId!==t)})).filter(e=>!e.retired||e.tools.length>0)}function Dh(e,t){if(!hh(t)){wh(e,t);return}t.seq<=(e.durable.at(-1)?.seq??0)||Oh(e,t)}function Oh(e,t){e.durable.push(t),t.type===`tool_result`&&Eh(e,t.callId)}function kh(e,t){if(Oh(e,t),t.type===`message`&&t.role===`user`){let n=e.optimistic.findIndex(e=>t.text.startsWith(e.text));e.optimistic=e.optimistic.filter((e,t)=>t!==(n===-1?0:n))}}function Ah(e,t){for(let t of e)if(t.type===`message`&&t.role===`user`)return t.text||jh(t.attachments);let n=t[0];return n&&(n.text||jh(n.attachments))}function jh(e){return(e??[]).map(e=>e.name).join(`, `)}function Mh(e,t){switch(e.type){case`message`:return e.attachments===void 0&&e.toolCalls===void 0?e:{...e,...e.attachments===void 0?{}:{attachments:e.attachments.map(e=>({...e,url:t(e.url)}))},...e.toolCalls===void 0?{}:{toolCalls:e.toolCalls.map(e=>({...e,view:Nh(e.view,t)}))}};case`tool_call`:case`tool_update`:case`tool_end`:case`tool_result`:return{...e,view:Nh(e.view,t)};default:return e}}function Nh(e,t){let n=e=>e.map(e=>{switch(e.kind){case`attachment`:return{...e,url:t(e.url)};case`section`:return{...e,content:n(e.content)};case`list`:return{...e,items:n(e.items)};default:return e}});return{...e,title:n(e.title),...e.summary===void 0?{}:{summary:n(e.summary)},...e.body===void 0?{}:{body:n(e.body)}}}var Ph=`pim.drafts`,Fh=`pim.unwritten`,Ih=class{state;setState;drafts;writes=new Map;claimed;constructor(e,t,n){this.state=e,this.setState=t,this.drafts=n}unwrittenSummary(){let e=this.state.unwritten;if(e&&(e.sent||this.localTitle(e.sessionId)!==void 0))return{sessionId:e.sessionId,cwd:e.cwd}}localTitle(e){let t=(e===this.state.sessionId?this.firstUserText():this.state.openings[e])?.trim()||this.draftText(e).trim();return t===``?void 0:t}draftText(e){return this.state.drafts[e]??``}setDraftText(e){this.putDraft(P(()=>this.state.sessionId),e)}putDraft(e,t){e!==``&&(this.drafts[e]??``)!==t&&(t===``?delete this.drafts[e]:this.drafts[e]=t,this.setState(n=>{t===``?delete n.drafts[e]:n.drafts[e]=t}),this.persist(Ph,()=>JSON.stringify(this.drafts)))}spendDraft(){this.putDraft(this.state.sessionId,``);let e=this.state.sessionId;this.setState(t=>{delete t.attachments[e]});let t=this.state.unwritten;t&&t.sessionId===this.state.sessionId&&this.setUnwritten({...t,sent:!0})}openingText(e){return e.sessionId===this.state.sessionId?this.firstUserText():void 0}setUnwritten(e){this.setState(t=>{t.unwritten=e});let t=e===void 0?void 0:JSON.stringify(e);this.persist(Fh,()=>t)}claim(e,t){this.claimed!==void 0&&(this.setUnwritten({sessionId:e,cwd:t,sent:!1}),this.putDraft(e,this.claimed),this.claimed=void 0)}takeDraft(e){let t=this.drafts[e]??``;return this.putDraft(e,``),t}firstUserText(){return Ah(this.state.durable,this.state.optimistic)}persist(e,t){let n=this.writes.size>0;this.writes.set(e,t),!n&&queueMicrotask(()=>{let e=[...this.writes];this.writes.clear();for(let[t,n]of e){let e=n();try{e===void 0?localStorage.removeItem(t):localStorage.setItem(t,e)}catch{}}})}};function Lh(){return Rh(Ph)}function Rh(e){try{let t=localStorage.getItem(e);return t===null?{}:JSON.parse(t)}catch{return{}}}function zh(){try{let e=localStorage.getItem(Fh),t=e===null?void 0:JSON.parse(e);return typeof t?.sessionId==`string`?t:void 0}catch{return}}var Bh=`0.12.1`,Vh=18e4,Hh=1e4,Uh={tone:`warning`,text:`Restart timed out. The server may still be updating; check it before trying again.`};function Wh(e){return{tone:`warning`,text:`This page was built from pim ${Bh} but the server runs ${e}. Reload the page; if that does not settle it, restart the server.`}}var Gh=class{state;target;setState;key;reloadPage;intent;timer;dismissTimer;disconnected;navigating;constructor(e,t=()=>location.reload()){this.key=`pim.reload:${e}`,this.reloadPage=t;let n=Kh(this.key),r=n!==void 0&&n.deadline<=Date.now();this.intent=r?void 0:n,this.target=this.intent?.target,this.disconnected=this.intent?.phase===`restarting`,this.navigating=!1,this.timer=void 0;let[i,a]=Ri({pending:this.intent!==void 0,label:this.intent?`Waiting for server…`:``,notice:r?Uh:void 0,dismissed:!1,stale:!1});this.state=i,this.setState=a,r&&this.persist(),this.intent&&this.arm(this.intent.deadline)}begin(e){return this.timer!==void 0||this.navigating?!1:(this.intent={deadline:Date.now()+Vh,phase:`updating`,target:e,skipped:``,blocking:!1},this.disconnected=!1,this.persist(),this.progress(`Updating…`),this.arm(this.intent.deadline),!0)}rejected(e){this.intent?.phase===`updating`&&this.finish({tone:`error`,text:e})}connection(e){this.navigating||(e===`reconnecting`&&(this.disconnected=!0),e===`open`&&this.disconnected&&(this.intent?.phase===`restarting`?this.refresh():!this.intent&&this.timer!==void 0&&this.finish()))}ingest(e){if(!this.navigating){if(e.type===`attached`){let t=e.pimVersion!==Bh,n=t!==this.state.stale;if(this.setState(e=>{e.stale=t}),t){this.intent&&this.intent.phase!==`loaded`?this.refresh():n&&this.finish(Wh(e.pimVersion));return}if(this.intent?.phase===`loaded`){let{skipped:t,blocking:n}=this.intent;this.finish({tone:n?`warning`:`success`,text:`Restarted with pim ${e.pimVersion}.${t}`})}return}if(e.type===`update_state`)switch(e.phase){case`step`:this.progress(e.label),this.timer===void 0&&this.arm(Date.now()+Vh);return;case`restarting`:this.intent&&(this.intent={...this.intent,phase:`restarting`,skipped:qh(e),blocking:e.skipped.some(e=>e.blocking)},this.persist()),this.progress(`Restarting…`),this.timer===void 0&&this.arm(Date.now()+Vh);return;case`stranded`:this.finish({tone:`warning`,text:`Updated on disk to pim ${e.to}, but this server is not supervised. Restart it manually, then reload this page.${qh(e)}`});return;case`failed`:this.finish({tone:`error`,text:`Update failed: ${e.error}`})}}}refresh(){this.navigating||(this.navigating=!0,this.intent&&(this.intent={...this.intent,phase:`loaded`},this.persist()),this.dispose(),this.reloadPage())}dismiss(){clearTimeout(this.dismissTimer),this.dismissTimer=void 0,this.setState(e=>{e.notice=void 0,e.dismissed=!0})}dispose(){clearTimeout(this.timer),clearTimeout(this.dismissTimer),this.timer=void 0,this.dismissTimer=void 0}progress(e){this.setState(t=>{t.pending=!0,t.label=e,t.notice=void 0,t.dismissed=!1})}arm(e){this.timer=setTimeout(()=>this.finish(Uh),Math.max(0,e-Date.now()))}finish(e){this.dispose(),this.intent=void 0,this.persist(),this.setState(t=>{t.pending=!1,t.label=``,t.notice=e,t.dismissed=!1}),e?.tone===`success`&&(this.dismissTimer=setTimeout(()=>this.dismiss(),Hh))}persist(){try{this.intent?sessionStorage.setItem(this.key,JSON.stringify(this.intent)):sessionStorage.removeItem(this.key)}catch{}}};function Kh(e){try{let t=JSON.parse(sessionStorage.getItem(e)??`null`);if(t&&Number.isFinite(t.deadline)&&[`updating`,`restarting`,`loaded`].includes(t.phase)&&typeof t.skipped==`string`&&t.target&&(t.target.sessionId===void 0||typeof t.target.sessionId==`string`)&&(t.target.cwd===void 0||typeof t.target.cwd==`string`))return{...t,blocking:t.blocking===!0}}catch{}}function qh(e){return e.skipped.map(({label:e,reason:t})=>` Skipped ${e}: ${t}.`).join(``)}var Jh=50,Yh=20;function Xh(e,t){if(e===t)return``;if(e.startsWith(`${t}\n\n`))return e.slice(t.length+2);if(e.endsWith(`\n\n${t}`))return e.slice(0,-t.length-2);let n=e.indexOf(`\n\n${t}\n\n`);return n===-1?e:e.slice(0,n)+e.slice(n+t.length+2)}var Zh=[{value:`/clear`,label:`/clear`,description:`Start a new session with this one's model and directory`,run:e=>e.newSession()}],Qh=class{client;update;files;state;setState;optimisticId=0;catalogue;roster;drafts;detachAttention;detachWake;guessed=new Set;constructor(e){this.update=new Gh(e.url,e.reloadPage);let t=Lh(),n=zh(),r=e.sessionId??this.update.target?.sessionId??n?.sessionId,i=e.cwd??this.update.target?.cwd??n?.cwd,[a,o]=Ri({connection:`closed`,sessionId:``,pimVersion:void 0,piVersion:void 0,cwd:i??``,model:``,modelLabel:``,thinking:``,cost:0,agent:`idle`,writable:!0,repoBusy:!1,heldBy:void 0,turnElapsedMs:void 0,contextPercent:void 0,contextWindow:void 0,branch:void 0,dirtyCount:0,ahead:0,behind:0,repoRevision:``,durable:[],live:[],optimistic:[],activity:{},catalogue:0,extensions:0,loading:!1,error:void 0,unread:{},archived:{},names:{},pinned:{},pinRank:{},expanded:{},labels:{},drafts:{...t},attachments:{},openings:{},unwritten:n,subagent:void 0,notices:[],toasts:[],requests:[]});this.state=a,this.setState=o,this.drafts=new Ih(a,o,t),this.drafts.claimed=r===void 0?``:void 0,this.client=new Sh({url:e.url,...r===void 0?{}:{sessionId:r},...i===void 0?{}:{cwd:i},...e.retryMs===void 0?{}:{retryMs:e.retryMs},onEvent:e=>{this.ingest(e)},onStatus:e=>{this.update.connection(e),this.setState(t=>{t.connection=e})}}),this.files=new mh((e,t)=>this.pickFiles(e,t??Jh),e.pickerDebounceMs),this.detachAttention=vh(e=>{this.client.setAttention(e)}),this.detachWake=yh(()=>{this.client.wake()})}async connect(){let e=await this.client.connect();if(e.success)return;let t=this.state.unwritten;if(!t||this.client.sessionId!==t.sessionId)throw Error(e.error??`attach was refused`);await this.restart(t)}dispose(){this.detachAttention(),this.detachWake(),this.client.close(),this.update.dispose()}async reload(e=!1){if(this.update.begin({sessionId:this.state.sessionId,cwd:this.state.cwd}))try{let t=await this.client.send({type:`reload`,...e?{force:e}:{}});t.success||this.update.rejected(t.error??`The server refused the restart.`)}catch(e){this.update.rejected(e.message)}}trailing(){return this.state.optimistic}liveSize(){let e=0;for(let t of this.state.live)e+=t.text.length+t.thinking.length,e+=t.tools.length;return e}isBusy(){return this.state.agent!==`idle`}isHeld(){return!this.state.writable}heldNotice(){if(this.isHeld())return`Running ${this.state.heldBy?.frontend===`tui`?`in the terminal`:`in another window`} — you can continue when this turn ends.`}isRunning(e){return(this.state.activity[e]??`idle`)!==`idle`}runningIds(){return Object.keys(this.state.activity).filter(e=>this.isRunning(e)).sort()}async prompt(e){let t=e.trim(),n=this.state.sessionId,r=this.attachmentsOf(n);if(t===``&&r.length===0)return!1;let i=Zh.find(e=>e.value===t);if(i)return this.drafts.putDraft(n,``),this.setState(e=>{delete e.attachments[n]}),await i.run(this).catch(()=>void 0),!0;if(this.isHeld())return!1;let a=r.map(({name:e,url:t,isImage:n})=>({name:e,url:t,isImage:n})),o=this.isBusy(),s=``,c;this.setState(e=>{let n=Ah(e.durable,e.optimistic)===void 0,r=o?e.optimistic.find(e=>e.queued):void 0;r?(s=r.id,r.text=`${r.text}\n\n${t}`,r.attachments=[...r.attachments??[],...a]):(s=`optimistic:${++this.optimisticId}`,e.optimistic.push({id:s,text:t,...a.length===0?{}:{attachments:a},timestamp:Date.now(),...o?{queued:!0}:{}})),n&&(e.openings[e.sessionId]=t,c=e.sessionId),e.error=void 0});let l={id:s,text:t,attachments:a,opened:c};this.drafts.spendDraft();let u=r.map(({id:e})=>({id:e})),d;try{if(d=await this.client.send({type:`user_message`,sessionId:n,text:t,...u.length===0?{}:{attachments:u}}),!d.success)throw Error(d.error??`the server refused the message`)}catch(e){return this.rollback(l),this.setState(t=>{t.error=e.message}),!1}return d.dispatched===!0&&this.rollback(l),!0}cancel(){return this.reclaim({type:`cancel`,sessionId:this.state.sessionId})}dequeue(){return this.reclaim({type:`dequeue`,sessionId:this.state.sessionId})}async reclaim(e){if(this.isHeld())return``;let t=(await this.client.send(e).catch(()=>void 0))?.restored??[];return t.length>0&&this.dropQueued(),t.join(`
|
|
44
44
|
|
|
45
|
-
`)}answerRequest(e,t){let n=!1;this.setState(t=>{n=t.requests.some(t=>t.requestId===e),t.requests=t.requests.filter(t=>t.requestId!==e)}),n&&this.sendAnswer(e,t)}closeCommand(){let e=[];this.setState(t=>{e=t.requests.map(e=>e.requestId),t.requests=[],t.notices=[]});for(let t of e)this.sendAnswer(t,{cancelled:!0})}sendAnswer(e,t){this.client.send({type:`ui_response`,sessionId:this.attached(),requestId:e,...t}).catch(()=>void 0)}dismissToast(e){this.setState(t=>{t.toasts=t.toasts.filter(t=>t.id!==e)})}async watch(e){this.setState(t=>{t.subagent={callId:e,durable:[],live:[]}}),await this.sendWatch(e,0)}unwatch(){let e=P(()=>this.state.subagent?.callId);e!==void 0&&(this.setState(e=>{e.subagent=void 0}),this.client.send({type:`unwatch_subagent`,callId:e}).catch(()=>void 0))}async sendWatch(e,t){try{let n=await this.client.send({type:`watch_subagent`,sessionId:this.state.sessionId,callId:e,fromSeq:t});if(!n.success)throw Error(n.error??`the server refused the watch`)}catch(t){this.setState(n=>{n.subagent?.callId===e&&(n.subagent=void 0),n.error=t.message})}}async pickFiles(e,t=qh){return(await this.client.send({type:`pick_files`,sessionId:this.state.sessionId,query:e,limit:t}).catch(()=>void 0))?.items??[]}async pickCommands(e,t=Jh){let n=await this.client.send({type:`pick_commands`,sessionId:this.state.sessionId,query:e,limit:t}).catch(()=>void 0);return dh(e,[...Xh,...n?.items??[]],{limit:t})}async listDirectory(e){let t=await this.client.send({type:`list_dirs`,path:e});if(!t.success||!t.directory)throw Error(t.error??`could not read ${e}`);return t.directory}async createDirectory(e){let t=await this.client.send({type:`create_dir`,path:e});if(!t.success)throw Error(t.error??`could not create ${e}`)}async listBranches(){let e=await this.client.send({type:`list_branches`,sessionId:this.attached()});if(!e.success||!e.branches)throw Error(e.error??`could not read the branches`);return e.branches}async listChanges(e){let t=await this.client.send({type:`list_changes`,sessionId:this.attached(),base:e});if(!t.success||!t.changes)throw Error(t.error??`could not read the changes`);return t.changes}async fileDiff(e,t){let n=await this.client.send({type:`file_diff`,sessionId:this.attached(),base:t,path:e});if(!n.success||!n.fileDiff)throw Error(n.error??`could not diff ${e}`);return n.fileDiff}async readLines(e,t,n){let r=await this.client.send({type:`read_lines`,sessionId:this.attached(),base:t,path:e,spans:n});if(!r.success||!r.fileLines)throw Error(r.error??`could not read ${e}`);return r.fileLines}async commit(e,t){let n=await this.client.send({type:`commit`,sessionId:this.attached(),message:e,paths:t});if(!n.success||!n.commit)throw Error(n.error??`git refused the commit`);return n.commit.sha}async refreshGit(e=!1){let t=this.attached();t!==``&&await this.client.send({type:`refresh_git`,sessionId:t,fetch:e}).catch(()=>void 0)}checkout(e){return this.runGit({type:`checkout`,sessionId:this.attached(),branch:e})}pull(){return this.runGit({type:`pull`,sessionId:this.attached()})}push(){return this.runGit({type:`push`,sessionId:this.attached()})}attached(){return P(()=>this.state.sessionId)}runGit(e){return this.demand(e,`git refused the operation`)}async demand(e,t){let n=await this.client.send(e);if(!n.success)throw Error(n.error??t)}async listSessions(e={}){let t=await this.client.send({type:`list_sessions`,...e.cwd===void 0?{}:{cwd:e.cwd},...e.perProject===void 0?{}:{perProject:e.perProject},...e.limit===void 0?{}:{limit:e.limit},...e.archived===!0?{archived:!0}:{}}).catch(()=>void 0),n=t?.sessions??[];this.setState(e=>{for(let t of n)e.activity[t.sessionId]=t.status??`idle`,this.seed(e,`unread`,t.sessionId,t.unread??!1),this.seed(e,`archived`,t.sessionId,t.archived===!0),this.guessed.has(`names:${t.sessionId}`)||(e.names[t.sessionId]=t.named===!0?t.title??null:null),t.title!==void 0&&delete e.openings[t.sessionId];for(let n of t?.projects??[])this.seed(e,`pinned`,n.cwd,n.pinned===!0),this.seed(e,`expanded`,n.cwd,n.expanded===!0),this.guessed.has(`labels:${n.cwd}`)||(e.labels[n.cwd]=n.label??null),this.guessed.has(`pinned:${n.cwd}`)||(n.pinRank===void 0?delete e.pinRank[n.cwd]:e.pinRank[n.cwd]=n.pinRank)});let r=this.state.unwritten;return r&&n.some(({sessionId:e})=>e===r.sessionId)&&this.drafts.setUnwritten(void 0),{sessions:n,projects:t?.projects??[]}}seed(e,t,n,r){this.guessed.has(`${t}:${n}`)||(e[t][n]=r)}async searchSessions(e,t={}){let n=await this.client.send({type:`search_sessions`,query:e,...t.cwd===void 0?{}:{cwd:t.cwd},...t.archived===void 0?{}:{archived:t.archived},...t.limit===void 0?{}:{limit:t.limit}});if(!n.success)throw Error(n.error??`the search was refused`);return{hits:n.hits??[],dropped:n.dropped??[],scanned:n.scanned??0}}unwrittenSummary(){return this.drafts.unwrittenSummary()}localTitle(e){return this.drafts.localTitle(e)}draftText(e){return this.drafts.draftText(e)}attachmentsOf(e){return this.state.attachments[e]??[]}async attachFile(e){let t=this.state.sessionId,n=new FormData;n.append(`file`,e,e.name);let r=await fetch(`${this.client.httpUrl}/upload?session=${encodeURIComponent(t)}`,{method:`POST`,body:n}),i=await r.json();if(!r.ok)throw Error(i.error??`upload failed: ${r.status}`);let a={id:i.id,url:this.absolute(i.url),isImage:i.isImage,name:e.name};return this.setState(e=>{e.attachments[t]=[...e.attachments[t]??[],a]}),a}detachFile(e,t){this.setState(n=>{let r=(n.attachments[e]??[]).filter(e=>e.id!==t);r.length===0?delete n.attachments[e]:n.attachments[e]=r})}setDraftText(e){this.drafts.setDraftText(e)}listModels(){return this.catalogue??=this.client.send({type:`list_models`}).then(e=>({models:e.models??[],thinkingLevels:e.thinkingLevels??[]})).catch(()=>(this.catalogue=void 0,{models:[],thinkingLevels:[]})),this.catalogue}async setModel(e){await this.set(`set_model`,e)}async setThinking(e){await this.set(`set_thinking`,e)}async cycleThinking(){let{thinkingLevels:e}=await this.listModels(),t=e[(e.indexOf(this.state.thinking)+1)%e.length];t!==void 0&&await this.setThinking(t)}listExtensions(){return this.roster??=this.client.send({type:`list_extensions`}).then(e=>{if(!e.success)throw Error(e.error??`could not read the extensions`);return e.extensions??[]}).catch(e=>{throw this.roster=void 0,e}),this.roster}setExtension(e,t){return this.demand({type:`set_extension`,extensionId:e,value:t},`the server refused the change`)}isUnread(e){return this.state.unread[e]??!1}isArchived(e){return this.state.archived[e]??!1}isPinned(e){return this.state.pinned[e]??!1}pinOrder(){return Object.keys(this.state.pinned).filter(e=>this.isPinned(e)).sort((e,t)=>this.pinRankOf(e)-this.pinRankOf(t))}pinRankOf(e){return this.state.pinRank[e]??2**53-1}isExpanded(e){return this.state.expanded[e]??!1}projectLabel(e){return this.state.labels[e]??void 0}async renameProject(e,t){let n=P(()=>this.state.labels[e]);await this.guess(`labels:${e}`,n=>{n.labels[e]=t},t=>{n===void 0?delete t.labels[e]:t.labels[e]=n},{type:`set_project_label`,cwd:e,value:t},`the server refused the name`)}setExpanded(e,t){return this.flag({type:`set_project_expanded`,cwd:e,value:t},`expanded`,e,t,`the server refused the fold`)}sessionName(e){return this.state.names[e]??void 0}async rename(e,t){let n=P(()=>this.state.names[e]);await this.guess(`names:${e}`,n=>{n.names[e]=t},t=>{n===void 0?delete t.names[e]:t.names[e]=n},{type:`set_session_name`,sessionId:e,value:t},`the server refused the name`)}setArchived(e,t){return this.flag({type:`set_session_archived`,sessionId:e,value:t},`archived`,e,t,`the server refused the change`)}markUnread(e,t){return this.flag({type:`set_session_unread`,sessionId:e,value:t},`unread`,e,t,`the server refused the mark`)}setPinned(e,t){return this.flag({type:`set_project_pinned`,cwd:e,value:t},`pinned`,e,t,`the server refused the pin`)}async movePin(e,t){let n=[...this.pinOrder()],r=n.indexOf(e),i=r+t,a=n[r],o=n[i];if(a===void 0||o===void 0)return;n[r]=o,n[i]=a;let s={...this.state.pinRank};this.setState(e=>{e.pinRank[a]=i,e.pinRank[o]=r});try{await this.demand({type:`set_pin_order`,order:n},`the server refused the order`)}catch(e){throw this.setState(e=>{e.pinRank=s}),e}}async flag(e,t,n,r,i){let a=P(()=>this.state[t][n]);await this.guess(`${t}:${n}`,e=>{e[t][n]=r},e=>{e[t][n]=a??!1},e,i)}async guess(e,t,n,r,i){this.guessed.add(e),this.setState(t);try{await this.demand(r,i)}catch(e){throw this.setState(n),e}finally{this.guessed.delete(e)}}async set(e,t){this.isHeld()||await this.client.send({type:e,sessionId:this.state.sessionId,value:t}).catch(()=>void 0)}async switchTo(e){e!==this.state.sessionId&&await this.attach({sessionId:e})}async newSession(){let e=this.state.unwritten;if(e&&!e.sent&&this.drafts.openingText(e)===void 0){await this.switchTo(e.sessionId).catch(async()=>{await this.restart(e)});return}await this.startDraft(``)}async openDirectory(e){let t=this.state.unwritten;if(t&&!t.sent&&t.sessionId===this.state.sessionId){await this.restart(t,e);return}await this.startDraft(``,e)}async restart(e,t=e.cwd){let n=this.drafts.takeDraft(e.sessionId);try{await this.startDraft(n,t)}catch(t){throw this.drafts.putDraft(e.sessionId,n),t}}async startDraft(e,t){let n=this.state.sessionId,r=t??this.state.cwd;this.drafts.claimed=e;try{await this.attach({...r===``?{}:{cwd:r},...n===``?{}:{like:n}})}catch(e){throw this.drafts.claimed=void 0,e}}async attach(e){this.setState(e=>{e.loading=!0});try{let t=await this.client.attachTo(e);if(!t.success)throw Error(t.error??`attach was refused`)}catch(e){throw this.setState(t=>{t.loading=!1,t.error=e.message}),e}}get httpUrl(){return this.client.httpUrl}absolute(e){return e.startsWith(`/`)?`${this.httpUrl}${e}`:e}toAbsolute=e=>this.absolute(e);ingest(e){let t=jh(e,this.toAbsolute);if(this.update.ingest(t),hh(t)){this.setState(e=>{Oh(e,t)});return}switch(t.type){case`attached`:{let e=this.state.sessionId;this.setState(e=>{e.sessionId!==t.sessionId&&(e.durable=[],e.optimistic=[],e.agent=e.activity[t.sessionId]??`idle`,e.writable=!0,e.heldBy=void 0,e.turnElapsedMs=void 0,e.loading=t.head>0),e.notices=[],e.toasts=[],e.requests=[],e.sessionId=t.sessionId,e.cwd=t.cwd,e.pimVersion=t.pimVersion,e.piVersion=t.piVersion,e.live=[],e.error=void 0}),this.drafts.claim(t.sessionId,t.cwd),this.rewatch(e,t.sessionId);return}case`message_start`:case`message_retire`:case`text_delta`:case`thinking_delta`:case`tool_call`:case`tool_update`:case`tool_end`:this.setState(e=>{Ch(e,t)});return;case`subagent_events`:this.setState(e=>{let n=e.subagent;if(n?.callId===t.callId)for(let e of t.events)Eh(n,jh(e,this.toAbsolute))});return;case`picker_invalidate`:this.files.refreshRelative();return;case`ui_notice`:this.setState(e=>{let n={id:t.id,severity:t.severity,text:t.text,...t.command===void 0?{}:{command:t.command}};n.command===void 0?e.toasts.push(n):e.notices.push(n)});return;case`ui_request`:this.setState(e=>{e.requests.push(t)});return;case`ui_request_done`:this.setState(e=>{e.requests=e.requests.filter(e=>e.requestId!==t.requestId)});return;case`session_activity`:this.setState(e=>{e.activity[t.sessionId]=t.status});return;case`session_read`:this.setState(e=>{e.unread[t.sessionId]=!1});return;case`session_meta`:this.setState(e=>{t.name!==void 0&&(e.names[t.sessionId]=t.name),t.archived!==void 0&&(e.archived[t.sessionId]=t.archived),t.unread!==void 0&&(e.unread[t.sessionId]=t.unread)});return;case`project_meta`:this.setState(e=>{t.pinned!==void 0&&(e.pinned[t.cwd]=t.pinned),t.expanded!==void 0&&(e.expanded[t.cwd]=t.expanded),t.label!==void 0&&(e.labels[t.cwd]=t.label)});return;case`pins_changed`:this.setState(e=>{e.pinRank=Object.fromEntries(t.order.map((e,t)=>[e,t]))});return;case`sessions_changed`:this.setState(e=>{e.catalogue+=1});return;case`extensions_changed`:this.roster=void 0,this.setState(e=>{e.extensions+=1});return;case`session_state`:this.setState(e=>{e.loading=!1,e.cwd=t.cwd,e.model=t.model,e.modelLabel=t.modelLabel??t.model,e.thinking=t.thinking,e.cost=t.cost,e.agent=t.status,e.writable=t.writable,e.repoBusy=t.repoBusy===!0,e.heldBy=t.heldBy,e.turnElapsedMs=t.turnElapsedMs,e.activity[e.sessionId]=t.status,e.contextPercent=t.contextPercent,e.contextWindow=t.contextWindow,e.branch=t.branch,e.dirtyCount=t.dirtyCount??0,e.ahead=t.ahead??0,e.behind=t.behind??0,e.repoRevision=t.repoRevision??``,t.status===`idle`&&(e.live=[])});return;case`error`:this.setState(e=>{e.error=t.message});return;default:return}}rewatch(e,t){let n=this.state.subagent;if(n){if(e!==t){this.setState(e=>{e.subagent=void 0});return}this.sendWatch(n.callId,0)}}rollback(e){this.setState(t=>{e.opened!==void 0&&delete t.openings[e.opened];let n=t.optimistic.find(t=>t.id===e.id);if(n===void 0)return;let r=Yh(n.text,e.text);if(r===``){t.optimistic=t.optimistic.filter(t=>t.id!==e.id);return}n.text=r;let i=new Set(e.attachments.map(e=>e.url)),a=(n.attachments??[]).filter(e=>!i.has(e.url));a.length===0?delete n.attachments:n.attachments=a})}dropQueued(){this.setState(e=>{e.optimistic=e.optimistic.filter(e=>!e.queued)})}},Qh=K(`<span class=whitespace-pre-wrap>`),$h={success:``,warning:`text-amber-400`,error:`text-rose-400`};function eg(e){let t=()=>e.update.state,n=()=>{let e=t().notice;return e===void 0?``:$h[e.tone]};return B(H,{get when(){return G(()=>!t().dismissed)()&&(t().pending||t().notice!==void 0)},get children(){return B($p,{get class(){return`absolute top-3 z-50 ${Qp(e.desktop)} ${n()}`},dismissLabel:`Dismiss notification`,onDismiss:()=>e.update.dismiss(),get children(){var e=Qh();return Z(e,(()=>{var e=G(()=>!!t().pending);return()=>e()?t().label:t().notice?.text})()),e}})}})}var tg=K(`<div class="flex items-center gap-2 border-b border-neutral-700 p-3"><button type=button aria-label="Parent directory"title="Parent directory (Alt+↑)"><span class="i-griddy-icons:arrow-up size-4"aria-hidden=true></span></button><input type=text autocapitalize=off autocomplete=off aria-label="Directory path">`),ng=K(`<ul role=listbox class="min-h-0 flex-1 overflow-y-auto p-1 pr-[calc(0.25rem-var(--scrollbar))] text-sm"><!><!>`),rg=K(`<div class="flex shrink-0 items-center justify-end border-t border-neutral-700 p-3 pb-[max(0.75rem,env(safe-area-inset-bottom))]"><button type=button aria-label="Start a new session in this directory"title="Start a new session in this directory (Ctrl+Enter)">New Session`),ig=K(`<div class="font-bold leading-[--line]">Choose Directory`),ag=K(`<li class="px-2 py-1 text-neutral-500">`),og=K(`<li role=option><span aria-hidden=true></span><span class="min-w-0 truncate">`);function sg(e){let t=vs(_s),[n,r]=R(``),[i,a]=R(),[o,s]=R(``),[c,l]=R(``),u,d,f=0,p=()=>e.store.state.cwd,m=()=>/^[/~]/.test(n())?n().lastIndexOf(`/`):-1,h=L(()=>{let e=m();return e<0?p():n().slice(0,e)||`/`}),g=()=>n().slice(m()+1),_=()=>{let e=i();return e?.asked===h()?e.listing:void 0};z(()=>e.open,e=>{e&&(r(`${P(p)}/`),s(``),l(``),P(t)&&u&&u.setSelectionRange(0,u.value.length))}),z(()=>({open:e.open,path:h(),store:e.store}),({open:e,path:t,store:n})=>{let r=++f;e&&n.listDirectory(t).then(e=>{r===f&&(a({asked:t,listing:e}),s(``))},e=>{r===f&&(a(void 0),s(e.message))})});let v=e=>`${h().replace(/\/$/,``)}/${e}`,y=L(()=>{let e=g();return e===``?void 0:_()?.entries.find(t=>t.name===e)?.path}),b=L(()=>{let e=g().toLowerCase(),t=e.startsWith(`.`);return[...(_()?.entries??[]).filter(n=>(t||!n.name.startsWith(`.`))&&n.name.toLowerCase().includes(e)).map(e=>({path:e.path,label:e.name,create:!1})),...g()!==``&&y()===void 0?[{path:v(g()),label:`New folder “${g()}”`,create:!0}]:[]]}),x=ds({count:()=>b().length,open:()=>e.open,onSelect:e=>{let t=b()[e];t&&w(t)},onDismiss:e.onClose});rs(()=>d,x.activeIndex,()=>e.open),z(()=>({text:n(),open:e.open}),()=>{x.setActiveIndex(0)});let S=L(()=>g()===``?_()?.path:y()),ee=t=>{e.onClose(),e.store.openDirectory(t).catch(()=>void 0)},C=e=>{l(``),r(`${e}/`)},te=()=>{let e=_()?.parent;return e!==void 0&&(C(e),!0)},w=t=>{if(!t.create){C(t.path);return}e.store.createDirectory(t.path).then(()=>{C(t.path)},e=>{l(e.message)})},ne=()=>c()||o()||(b().length===0?`Nothing to open in here.`:``);return B(Fc,{get open(){return e.open},get onClose(){return e.onClose},label:`Choose Directory`,size:`column`,onKeyDown:e=>{if(e.key===`Enter`&&(e.ctrlKey||e.metaKey)){e.preventDefault();let t=S();t!==void 0&&ee(t);return}if((e.altKey||e.metaKey)&&e.key===`ArrowUp`){te()&&e.preventDefault();return}x.onKeyDown(e)},get header(){return ig()},get children(){return B(H,{get when(){return e.open},get children(){return[(()=>{var e=tg(),i=e.firstChild,a=i.nextSibling;return i.$$click=()=>{te()},a.$$input=e=>{l(``),r(e.currentTarget.value)},X(()=>e=>{u=e},a),W(()=>({e:_()?.parent===void 0,t:`${Fo} disabled:opacity-40`,a:n(),o:t(),i:Ro}),({e,t,a:n,o:r,i:o},s)=>{e!==s?.e&&J(i,`disabled`,e),Y(i,t,s?.t),a.value=n??``,r!==s?.o&&J(a,`autofocus`,r),Y(a,o,s?.i)}),e})(),(()=>{var e=ng(),t=e.firstChild,n=t.nextSibling;return X(()=>e=>{d=e},e),Z(e,B(H,{get when(){return ne()},children:e=>(()=>{var t=ag();return Z(t,e),t})()}),t),Z(e,B(V,{get each(){return b()},children:(e,t)=>{let n=()=>t()===x.activeIndex();var r=og(),i=r.firstChild,a=i.nextSibling;return r.$$click=()=>{w(e)},r.$$mousemove=()=>{x.setActiveIndex(t())},Z(a,()=>e.label),W(()=>({e:t(),t:n()?`true`:`false`,a:`flex cursor-pointer items-center gap-2 rounded-lg px-2 py-1 ${n()?`${qo} text-neutral-50`:``}`,o:`size-4 shrink-0 ${e.create?`i-griddy-icons:plus`:`i-griddy-icons:folder`}`}),({e,t,a:n,o:a},o)=>{e!==o?.e&&J(r,`data-index`,e),t!==o?.t&&J(r,`aria-selected`,t),Y(r,n,o?.a),Y(i,a,o?.o)}),r}}),n),e})(),(()=>{var e=rg(),t=e.firstChild;return t.$$click=()=>{let e=S();e!==void 0&&ee(e)},W(()=>({e:S()===void 0,t:Vo}),({e,t:n},r)=>{e!==r?.e&&J(t,`disabled`,e),Y(t,n,r?.t)}),e})()]}})}})}q([`click`,`input`,`mousemove`]);var cg=K(`<div class="relative flex shrink-0 items-center"><button type=button aria-haspopup=listbox><span class="i-griddy-icons:more-horizontal size-5"aria-hidden=true>`),lg=120;function ug(e){let[t,n]=R(void 0),r=L(()=>e.items.map(e=>({label:e.label,...e.disabled===!0?{disabled:!0}:{}}))),i=t=>{let n=e.items[t];n?.disabled!==!0&&(a.close(),n?.onSelect())},a=bs({onOpen:()=>{o.setActiveIndex(-1)}}),o=ds({count:()=>e.items.length,open:a.open,onSelect:i,onDismiss:a.close,enabled:t=>e.items[t]?.disabled!==!0});e.control?.({open:e=>{P(a.open)||(n(e),a.toggle())}});var s=cg(),c=s.firstChild,l=a.root;typeof l==`function`||Array.isArray(l)?X(()=>l,s):a.root=s,c.$$keydown=e=>{o.onKeyDown(e)},c.$$click=()=>{n(void 0),a.toggle()};var u=a.trigger;return typeof u==`function`||Array.isArray(u)?X(()=>u,c):a.trigger=c,Z(s,B(H,{get when(){return a.open()},get children(){return B(hs,{get open(){return a.open()},get anchor(){return a.anchor},at:t,place:`below`,min:lg,get items(){return r()},get activeIndex(){return o.activeIndex()},get onActivate(){return o.setActiveIndex},onLeave:()=>{o.setActiveIndex(-1)},onSelect:i})}}),null),W(()=>({e:a.open()?`true`:`false`,t:e.label,a:e.label,o:`${Fo} sr-only focus:not-sr-only focus-visible:not-sr-only`}),({e,t,a:n,o:r},i)=>{e!==i?.e&&J(c,`aria-expanded`,e),t!==i?.t&&J(c,`aria-label`,t),n!==i?.a&&J(c,`title`,n),Y(c,r,i?.o)}),s}q([`click`,`keydown`]);var dg=450,fg=10;function pg(e){let t,n,r=!1,i=()=>{t!==void 0&&(clearTimeout(t),t=void 0),n=void 0};return bn(i),{swallowed:()=>{let e=r;return r=!1,e},handlers:{onContextMenu:t=>{t.preventDefault(),e({x:t.clientX,y:t.clientY})},onPointerDown:i=>{if(r=!1,i.pointerType===`mouse`)return;let a={x:i.clientX,y:i.clientY};n=a,t=setTimeout(()=>{t=void 0,r=!0,e({x:a.x,y:a.y+fg})},dg)},onPointerMove:e=>{n!==void 0&&(Math.abs(e.clientX-n.x)>fg||Math.abs(e.clientY-n.y)>fg)&&i()},onPointerUp:i,onPointerCancel:i}}}var mg=K(`<div class="flex h-full flex-col bg-neutral-950"><div class="flex h-12 shrink-0 items-center justify-between gap-2 border-b border-neutral-700 px-3"><div class="flex items-center gap-2"><h1 class=shrink-0><img src=/wordmark.svg alt=PIM class="block h-5"></h1><span class="rounded-full bg-neutral-850 px-2 py-0.5 text-xs text-neutral-350"></span></div><div class="flex shrink-0 items-center"><button type=button aria-label="Search sessions"title="Search sessions"><span class="i-griddy-icons:search size-5"></span></button><button type=button aria-label=Settings title=Settings><span class="i-griddy-icons:settings size-5"></span></button></div></div><nav aria-label=Sessions class="min-h-0 flex-1 space-y-1 overflow-y-auto py-2"></nav><div class="shrink-0 border-t border-neutral-750 p-2"><button type=button class="flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-sm text-neutral-350 hover:bg-neutral-900 hover:text-neutral-100"><span aria-hidden=true></span></button></div><!>`),hg=K(`<p role=alert class="shrink-0 border-b border-neutral-750 px-3 py-2 text-xs text-rose-400">`),gg=K(`<button type=button>New session`),_g=K(`<div class="space-y-3 px-3 py-2"><p class="text-sm text-neutral-500">`),vg=K(`<li><button type=button class="w-full rounded-lg px-3 py-1 text-left text-sm text-neutral-500 hover:text-neutral-300">Load more…`),yg=K(`<div class="group min-w-0"><!><!>`),bg=K(`<span class="flex min-w-0 flex-1 items-center gap-2"><!><!>`),xg=K(`<div class="group/head ml-3 mr-3 mt-2 flex items-center gap-2.4 py-0.5 text-sm text-neutral-350"><span class="flex shrink-0 items-center"><button type=button class="flex shrink-0 items-center px-2 text-neutral-500 hover:text-neutral-100"><span class="i-griddy-icons:plus size-4"aria-hidden=true>`),Sg=K(`<span class="i-griddy-icons:pin size-3.5 shrink-0 rotate-45 text-neutral-400"aria-label="Pinned project">`),Cg=K(`<h3 class="min-w-0 flex-1"><button><span></span><!>`),wg=K(`<span aria-hidden=true>`),Tg=K(`<ul><!><!>`),Eg=K(`<li><!><!>`),Dg=K(`<span class="i-griddy-icons:edit size-3.5 shrink-0 text-amber-300"aria-hidden=true title="Unsent draft">`),Og=K(`<span class="size-1.5 shrink-0 rounded-full bg-indigo-400"aria-hidden=true>`),kg=K(`<button type=button><span class="min-w-0 flex-1 truncate"></span><!><!>`),Ag=K(`<span class="shrink-0 font-light text-neutral-400">`),jg=K(`<input type=text autocapitalize=off autocomplete=off>`),Mg=2**53-1,Ng=10,Pg=`min-w-0 flex-1 rounded-lg px-3 py-2 text-sm`,Fg=`-ml-2 min-w-0 flex-1 rounded-lg px-2 py-0 text-sm font-bold text-neutral-50`;function Ig(e){return e.listed?.settledAt??Mg}function Lg(e,t){return e.pinned===t.pinned?e.pinned?e.rank-t.rank:t.settledAt-e.settledAt:e.pinned?-1:1}function Rg(e){let[t,n]=R({}),[r,i]=R(`live`),[a,o]=R({}),[s,c]=R(),[l,u]=R(),[d,f]=R(!1),[p,m]=R(``),[h,g]=R(Date.now()),_=setInterval(()=>{g(Date.now())},1e3);bn(()=>{clearInterval(_)});let v=0,y=(e,t,r)=>{let i=++v,a=t===`archived`?{archived:!0}:{},o=Object.entries(r);Promise.all([e.listSessions({...a,perProject:Ng}),Promise.all(o.map(([t,n])=>e.listSessions({...a,cwd:t,perProject:n,limit:n})))]).then(([e,a])=>{if(i!==v)return;let s={};for(let[e,[t,n]]of o.entries())(a[e]?.sessions.length??0)<n&&(s[t]=!0);n(n=>({...n,[t]:{sessions:[...e.sessions.filter(e=>r[e.cwd]===void 0),...a.flatMap(e=>e.sessions)].sort((e,t)=>t.settledAt-e.settledAt),projects:e.projects,ended:s}}))})};z(()=>({store:e.store,view:r(),pages:a(),sessionId:e.store.state.sessionId,connection:e.store.state.connection,catalogue:e.store.state.catalogue,running:e.store.runningIds()}),(e,t)=>{(t===void 0||t.view!==e.view||t.pages!==e.pages||t.sessionId!==e.sessionId||t.catalogue!==e.catalogue||e.connection===`open`&&t.connection!==`open`||t.running.some(t=>!e.running.includes(t)))&&y(e.store,e.view,e.pages)});let b=L(()=>e.store.unwrittenSummary(),{equals:(e,t)=>e?.sessionId===t?.sessionId&&e?.cwd===t?.cwd}),x=L(()=>t()[r()]),S=L(()=>{let t=r()===`archived`,n=(x()?.sessions??[]).filter(n=>e.store.isArchived(n.sessionId)===t).map(e=>({sessionId:e.sessionId,cwd:e.cwd,listed:e})),i=b();return t||!i||n.some(e=>e.sessionId===i.sessionId)?n:[{...i,listed:void 0},...n]}),ee=L(()=>{let t=new Map((x()?.projects??[]).map(e=>[e.cwd,e.count])),n=new Map;for(let e of S()){let t=n.get(e.cwd);t===void 0?n.set(e.cwd,[e]):t.push(e)}return[...n].map(([n,r])=>({cwd:n,rows:r,count:Math.max(t.get(n)??0,r.length),settledAt:Math.max(...r.map(Ig)),pinned:e.store.isPinned(n),rank:e.store.pinRankOf(n)})).sort(Lg)}),C=t=>e.store.isExpanded(t),te=t=>{T(()=>e.store.setExpanded(t,!C(t)))},w=e=>x()?.ended[e.cwd]===void 0&&e.count>e.rows.length,ne=t=>e.store.sessionName(t.sessionId)??t.listed?.title??e.store.localTitle(t.sessionId)??t.sessionId.slice(0,8),re=t=>e.store.projectLabel(t)??Uc(t),ie=t=>{e.onNavigate?.(),t().catch(()=>void 0)},ae=t=>{ie(()=>e.store.switchTo(t.sessionId))},oe=()=>{c(void 0)},T=e=>{m(``),e().catch(e=>{m(e.message)})},se=(t,n)=>{c(void 0);let i=n.trim();i!==ne(t).trim()&&T(async()=>{await e.store.rename(t.sessionId,i===``?null:i),y(e.store,P(r),P(a))})},ce=(t,n)=>{u(void 0);let r=n.trim();r!==re(t).trim()&&T(()=>e.store.renameProject(t,r===``?null:r))},le=t=>{let n=t.sessionId,r=e.store.isUnread(n),i=e.store.isArchived(n);return[{label:`Rename`,onSelect:()=>{m(``),c(n)}},{label:r?`Mark read`:`Mark unread`,onSelect:()=>{T(()=>e.store.markUnread(n,!r))}},{label:i?`Unarchive`:`Archive`,onSelect:()=>{T(()=>e.store.setArchived(n,!i))}}]},E=t=>{let n=e.store.isPinned(t),r=e.store.pinOrder(),i=r.indexOf(t);return[{label:`Rename project`,onSelect:()=>{m(``),u(t)}},{label:n?`Unpin project`:`Pin project`,onSelect:()=>{T(()=>e.store.setPinned(t,!n))}},...n?[{label:`Move up`,disabled:i<=0,onSelect:()=>{T(()=>e.store.movePin(t,-1))}},{label:`Move down`,disabled:i===-1||i===r.length-1,onSelect:()=>{T(()=>e.store.movePin(t,1))}}]:[]]};var ue=mg(),de=ue.firstChild,D=de.firstChild,O=D.firstChild.nextSibling,fe=D.nextSibling.firstChild,pe=fe.nextSibling,me=de.nextSibling,he=me.nextSibling,k=he.firstChild,ge=k.firstChild,_e=he.nextSibling;return Z(O,()=>`v${e.store.state.pimVersion??`0.11.0`}`),fe.$$click=()=>e.onOpenSearch?.(),pe.$$click=()=>e.onOpenSettings?.(),Z(ue,B(H,{get when(){return p()},children:e=>(()=>{var t=hg();return Z(t,e),t})()}),me),Z(me,B(H,{get when(){return S().length>0},get fallback(){return B(H,{get when(){return x()!==void 0},get children(){var e=_g(),t=e.firstChild;return Z(t,()=>r()===`archived`?`Nothing archived.`:`No sessions yet.`),Z(e,B(H,{get when(){return r()===`live`},get children(){var e=gg();return e.$$click=()=>{f(!0)},W(()=>Vo,(t,n)=>{Y(e,t,n)}),e}}),null),e}})},get children(){return B(V,{get each(){return ee()},keyed:e=>e.cwd,children:t=>(()=>{var n=yg(),r=n.firstChild,i=r.nextSibling;return Z(n,B(zg,{get cwd(){return t().cwd},get title(){return re(t().cwd)},get pinned(){return t().pinned},get open(){return C(t().cwd)},get editing(){return l()===t().cwd},get items(){return E(t().cwd)},onToggle:()=>{te(t().cwd)},onRename:e=>{ce(t().cwd,e)},onCancelRename:()=>{u(void 0)},onNew:()=>{T(()=>e.store.setExpanded(t().cwd,!0)),ie(()=>e.store.openDirectory(t().cwd))}}),r),Z(n,B(Vg,{get store(){return e.store},get rows(){return t().rows},get folded(){return!C(t().cwd)},get now(){return h()},get editing(){return s()},title:ne,items:le,onOpen:ae,onRename:se,onCancelRename:oe,get children(){return B(H,{get when(){return G(()=>!!C(t().cwd))()?w(t()):C(t().cwd)},get children(){var e=vg(),n=e.firstChild;return n.$$click=()=>{let e=t().cwd;o(t=>({...t,[e]:(t[e]??Ng)+Ng}))},e}})}}),i),n})()})}})),k.$$click=()=>{m(``),c(void 0),u(void 0),o({}),i(e=>e===`archived`?`live`:`archived`)},Z(k,()=>r()===`archived`?`Back to sessions`:`Archived`,null),Z(ue,B(sg,{get open(){return d()},get store(){return e.store},onClose:()=>{f(!1)}}),_e),W(()=>({e:e.store.state.piVersion?`pi ${e.store.state.piVersion}`:void 0,t:Fo,a:Fo,o:r()===`archived`?`true`:`false`,i:`size-4 ${r()===`archived`?`i-griddy-icons:arrow-left`:`i-griddy-icons:archive`}`}),({e,t,a:n,o:r,i},a)=>{e!==a?.e&&J(O,`title`,e),Y(fe,t,a?.t),Y(pe,n,a?.a),r!==a?.o&&J(k,`aria-pressed`,r),Y(ge,i,a?.i)}),ue}function zg(e){let t,n=pg(e=>t?.open(e)),r=()=>Hc(e.cwd);var i=xg(),a=i.firstChild,o=a.firstChild;return Z(i,B(H,{get when(){return e.editing},get fallback(){var t=Cg(),i=t.firstChild,a=i.firstChild,o=a.nextSibling;return Ca(i,Ai({type:`button`,get"aria-expanded"(){return e.open?`true`:`false`},class:`flex w-full min-w-0 select-none items-center gap-2 text-left [-webkit-touch-callout:none]`,onClick:()=>{n.swallowed()||e.onToggle()}},()=>n.handlers),!0),Z(i,B(Bg,{get open(){return e.open}}),a),Z(a,()=>e.title),Z(i,B(H,{get when(){return e.pinned},get children(){return Sg()}}),o),W(()=>({e:{"truncate font-bold":!0,"text-neutral-50":e.open,"text-neutral-400 group-hover/head:text-neutral-200":!e.open},t:r()}),({e,t},n)=>{Y(a,e,n?.e),t!==n?.t&&J(a,`title`,t)}),t},get children(){var t=bg(),n=t.firstChild,i=n.nextSibling;return Z(t,B(Bg,{get open(){return e.open}}),n),Z(t,B(Ug,{get value(){return e.title},get label(){return`Rename ${r()}`},box:Fg,get onCommit(){return e.onRename},get onCancel(){return e.onCancelRename}}),i),t}}),a),ba(o,`click`,e.onNew,!0),Z(a,B(ug,{get label(){return`Project options for ${r()}`},get items(){return e.items},control:e=>{t=e}}),null),W(()=>({e:`New session in ${e.title}`,t:`New session in ${r()}`}),({e,t},n)=>{e!==n?.e&&J(o,`aria-label`,e),t!==n?.t&&J(o,`title`,t)}),i}function Bg(e){var t=wg();return W(()=>({"i-griddy-icons:chevron-right-filled size-3 shrink-0 transition-transform":!0,"rotate-90 bg-neutral-200":e.open,"bg-neutral-500 group-hover/head:bg-neutral-200":!e.open}),(e,n)=>{Y(t,e,n)}),t}function Vg(e){let t=t=>t.sessionId===e.store.state.sessionId,n=()=>e.folded&&!e.rows.some(t);var r=Tg(),i=r.firstChild,a=i.nextSibling;return Z(r,B(V,{get each(){return e.rows},keyed:e=>e.sessionId,children:n=>B(Hg,{get store(){return e.store},get row(){return n()},get title(){return e.title(n())},get hidden(){return G(()=>!!e.folded)()?!t(n()):e.folded},get editing(){return e.editing===n().sessionId},get items(){return e.items(n())},get now(){return e.now},onOpen:()=>{e.onOpen(n())},onRename:t=>{e.onRename(n(),t)},get onCancelRename(){return e.onCancelRename}})}),i),Z(r,()=>e.children,a),W(()=>`ml-4.4 border-l border-neutral-700 pl-1 pr-3 pt-2 group-hover:border-neutral-500 ${n()?`hidden`:`flex flex-col gap-1`}`,(e,t)=>{Y(r,e,t)}),r}function Hg(e){let t,n=pg(e=>t?.open(e)),r=()=>e.row.sessionId===e.store.state.sessionId,i=()=>e.row.listed===void 0?void 0:Bc(e.row.listed.settledAt,e.now),a=()=>e.store.draftText(e.row.sessionId)!==``,o=()=>{let t=[e.title];if(a()&&t.push(`unsent draft`),e.store.isRunning(e.row.sessionId))t.push(`working`);else if(e.store.isUnread(e.row.sessionId))t.push(`unread`);else{let e=i();e!==void 0&&t.push(e)}return t.join(`, `)};var s=Eg(),c=s.firstChild,l=c.nextSibling;return Ca(s,Ai({get class(){return`group select-none [-webkit-touch-callout:none] ${e.hidden?`hidden`:`flex items-center`}`}},()=>n.handlers),!0),Z(s,B(H,{get when(){return e.editing},get fallback(){var t=kg(),s=t.firstChild,c=s.nextSibling,l=c.nextSibling;return t.$$click=()=>{n.swallowed()||e.onOpen()},Z(s,()=>e.title),Z(t,B(H,{get when(){return a()},get children(){return Dg()}}),c),Z(t,B(Vi,{get children(){return[B(Hi,{get when(){return e.store.isRunning(e.row.sessionId)},get children(){return B(Fs,{})}}),B(Hi,{get when(){return e.store.isUnread(e.row.sessionId)},get children(){return Og()}}),B(Hi,{get when(){return i()},children:e=>(()=>{var t=Ag();return Z(t,e),t})()})]}}),l),W(()=>({e:o(),t:{[`${Pg} flex items-center gap-2 text-left`]:!0,"bg-neutral-850 font-bold text-neutral-100":r(),"text-neutral-300 hover:bg-neutral-900":!r()}}),({e,t:n},r)=>{e!==r?.e&&J(t,`aria-label`,e),Y(t,n,r?.t)}),t},get children(){return B(Ug,{get value(){return e.title},get label(){return`Rename ${e.title}`},box:Pg,get onCommit(){return e.onRename},get onCancel(){return e.onCancelRename}})}}),c),Z(s,B(H,{get when(){return e.row.listed!==void 0},get children(){return B(ug,{get label(){return`Options for ${e.title}`},get items(){return e.items},control:e=>{t=e}})}}),l),s}function Ug(e){let t,n=!1;En(()=>{t?.focus(),t?.setSelectionRange(0,t.value.length)});let r=()=>{!n&&t&&(n=!0,e.onCommit(t.value))};var i=jg();return i.addEventListener(`blur`,r),i.$$keydown=t=>{if(t.key===`Enter`){t.preventDefault(),r();return}t.key===`Escape`&&(t.preventDefault(),n=!0,e.onCancel())},X(()=>n=>{t=n,n.value=P(()=>e.value)},i),W(()=>({e:e.label,t:`${e.box} ${Lo}`}),({e,t},n)=>{e!==n?.e&&J(i,`aria-label`,e),Y(i,t,n?.t)}),i}q([`click`,`keydown`]);var Wg=K(`<mark class="rounded-[2px] bg-indigo-500/25 text-indigo-300">`);function Gg(e){return B(V,{get each(){return Kg(e.text,e.ranges)},children:e=>e.marked?(()=>{var t=Wg();return Z(t,()=>e.text),t})():e.text})}function Kg(e,t){let n=[],r=0;for(let[i,a]of t){let t=Math.min(Math.max(i,r),e.length),o=Math.min(Math.max(a,t),e.length);o!==t&&(t>r&&n.push({text:e.slice(r,t),marked:!1}),n.push({text:e.slice(t,o),marked:!0}),r=o)}return r<e.length&&n.push({text:e.slice(r),marked:!1}),n}var qg=K(`<p class="flex justify-center">`),Jg=K(`<p>`),Yg=K(`<li class="space-y-1 px-2 py-6 text-center text-neutral-400"><p>Search session titles and content`),Xg=K(`<span class="shrink-0 text-neutral-600"aria-hidden=true>·`),Zg=K(`<p class="shrink-0 border-b border-neutral-750 px-3 py-2 text-xs text-neutral-400">searched for <span class=text-neutral-100></span> — no results for <span class=italic>`),Qg=K(`<li class="px-2 py-1 text-neutral-500">`),$g=K(`<li class="px-2 py-6">`),e_=K(`<ul role=listbox class="min-h-0 flex-1 space-y-0.5 overflow-y-auto p-2 pr-[calc(0.5rem-var(--scrollbar))] text-sm">`),t_=K(`<span class="flex items-center gap-1.5"><kbd class="rounded bg-neutral-850 px-1">Esc</kbd>Close`),n_=K(`<div class="flex shrink-0 items-center gap-4 border-t border-neutral-700 px-3 py-2 pb-[max(0.5rem,env(safe-area-inset-bottom))] text-xs text-neutral-500"><span class="ml-auto truncate">`),r_=K(`<div><span class="i-griddy-icons:search size-4 shrink-0 text-neutral-500"aria-hidden=true></span><input type=text autocapitalize=off autocomplete=off aria-label="Search query"placeholder="Enter search term">`),i_=K(`<span class="i-griddy-icons:archive size-3.5 shrink-0 text-neutral-500"role=img aria-label=Archived>`),a_=K(`<span class=shrink-0>`),o_=K(`<li role=option><button type=button class="flex w-full min-w-0 items-center gap-3 rounded-lg px-3 py-2 text-left"><span class="flex min-w-0 flex-1 flex-col"><span class="flex h-[--line] min-w-0 items-center gap-[1ch] text-sm text-neutral-400"><span class="truncate text-neutral-350"></span><!><span class=shrink-0></span><!></span><span class="h-[--line] truncate font-semibold leading-[--line] text-neutral-100"></span><span class="flex h-[--line] min-w-0 items-center gap-2 text-neutral-400"></span></span><span aria-hidden=true>`),s_=K(`<span class="i-griddy-icons:arrow-elbow-down-right size-3.5 shrink-0 text-neutral-600"aria-hidden=true>`),c_=K(`<span class=truncate>`),l_=K(`<span class="flex items-center gap-1.5"><span class="flex items-center gap-1">`),u_=K(`<kbd class="flex size-4 items-center justify-center rounded bg-neutral-850"><span aria-hidden=true>`),d_=2,f_=100;function p_(e){return`${so.count(e,`session`)}, including archived`}function m_(){var e=qg();return Z(e,B(Fs,{})),e}function h_(e){var t=Yg();return t.firstChild,Z(t,B(H,{get when(){return e.ready},get fallback(){return B(m_,{})},get children(){var t=Jg();return Z(t,()=>p_(e.scanned)),t}}),null),t}function g_(e){return[B(H,{get when(){return e.marks.cutHead},children:`…`}),B(Gg,{get text(){return e.marks.text},get ranges(){return e.marks.ranges}})]}function __(e){return{text:e.text,ranges:e.ranges,...e.cutHead===!0?{cutHead:!0}:{}}}function v_(){return Xg()}function y_(e){let t=e.title===void 0?e.snippets[0]:void 0,n=e.title===void 0?t===void 0?{text:e.sessionId.slice(0,8),ranges:[]}:__(t):{text:e.title,ranges:e.titleRanges},r=e.snippets.find(e=>!n.text.includes(e.text)),i=r===void 0?e.opening===void 0?void 0:{text:e.opening,ranges:[]}:__(r);return{hit:e,heading:n,...i===void 0?{}:{said:i}}}function b_(e){let t=vs(_s),[n,r]=R(``),[i,a]=R(),[o,s]=R(0),[c,l]=R(!1),[u,d]=R(``),f,p,m=0;bn(()=>{clearTimeout(p)});let h=L(()=>n().trim()),g=e=>{s(e.scanned),l(!0),d(``)},_=e=>{d(e.message)};z(()=>({open:e.open,store:e.store}),({open:e,store:t})=>{e&&(r(``),d(``),t.searchSessions(``).then(g,_))}),z(()=>({open:e.open,query:h(),store:e.store,wait:e.debounceMs??f_}),({open:e,query:t,store:n,wait:r})=>{let i=++m;if(clearTimeout(p),!e||t.length<d_){a(void 0);return}p=setTimeout(()=>{n.searchSessions(t).then(e=>{i===m&&(a({asked:t,found:e}),g(e))},e=>{i===m&&(a(void 0),_(e))})},r)});let v=()=>{let e=i();return e?.asked===h()?e.found:void 0},y=L(()=>(v()?.hits??[]).map(y_)),b=L(()=>u()===``?h().length<d_?`prompt`:v()===void 0?`waiting`:y().length>0?`hits`:`empty`:`failed`),x=()=>v()?.dropped??[],S=()=>h().split(/\s+/).filter(e=>!x().includes(e.toLowerCase())).join(` `),ee=t=>{e.onClose(),e.onNavigate?.(),e.store.switchTo(t.sessionId).catch(()=>void 0)},C=ds({count:()=>y().length,open:()=>e.open,onSelect:e=>{let t=y()[e];t&&ee(t.hit)},onDismiss:e.onClose});return rs(()=>f,C.activeIndex,()=>e.open),B(Fc,{get open(){return e.open},get onClose(){return e.onClose},label:`Search Sessions`,size:`column`,get header(){var e=r_(),i=e.firstChild.nextSibling;return ba(i,`keydown`,C.onKeyDown,!0),i.$$input=e=>{r(e.currentTarget.value)},W(()=>({e:zo,t:n(),a:t(),o:Bo}),({e:t,t:n,a:r,o:a},o)=>{Y(e,t,o?.e),i.value=n??``,r!==o?.a&&J(i,`autofocus`,r),Y(i,a,o?.o)}),e},get children(){return B(H,{get when(){return e.open},get children(){return[B(H,{get when(){return x().length>0},get children(){var e=Zg(),t=e.firstChild.nextSibling,n=t.nextSibling.nextSibling;return Z(t,S),Z(n,()=>x().join(`, `)),e}}),(()=>{var t=e_();return X(()=>e=>{f=e},t),Z(t,B(Vi,{get children(){return[B(Hi,{get when(){return b()===`failed`},get children(){var e=Qg();return Z(e,()=>`The search failed — ${u()}`),e}}),B(Hi,{get when(){return b()===`prompt`},get children(){return B(h_,{get ready(){return c()},get scanned(){return o()}})}}),B(Hi,{get when(){return b()===`waiting`},get children(){var e=$g();return Z(e,B(m_,{})),e}}),B(Hi,{get when(){return b()===`empty`},get children(){var e=Qg();return Z(e,()=>`No matches in ${p_(o())}.`),e}}),B(Hi,{get when(){return b()===`hits`},get children(){return B(V,{get each(){return y()},children:(t,n)=>(()=>{var r=o_(),i=r.firstChild,a=i.firstChild,o=a.firstChild,s=o.firstChild,c=s.nextSibling,l=c.nextSibling,u=l.nextSibling,d=o.nextSibling,f=d.nextSibling,p=a.nextSibling;return r.$$mousemove=()=>{C.setActiveIndex(n())},i.$$click=()=>{ee(t.hit)},Z(s,()=>e.store.projectLabel(t.hit.cwd)??Uc(t.hit.cwd)),Z(o,B(H,{get when(){return t.hit.archived},get children(){return i_()}}),c),Z(o,B(v_,{}),l),Z(l,()=>Bc(t.hit.settledAt)),Z(o,B(H,{get when(){return t.hit.total>1},get children(){return[B(v_,{}),(()=>{var e=a_();return Z(e,()=>`${t.hit.total} matches`),e})()]}}),u),Z(d,B(g_,{get marks(){return t.heading}})),Z(f,B(H,{get when(){return t.said},children:e=>[s_(),(()=>{var t=c_();return Z(t,B(g_,{get marks(){return e()}})),t})()]})),W(()=>({e:n(),t:n()===C.activeIndex()?`true`:`false`,a:{"rounded-lg":!0,[qo]:n()===C.activeIndex()},o:{"i-griddy-icons:chevron-right size-4 shrink-0":!0,"text-neutral-300":n()===C.activeIndex(),"text-neutral-500":n()!==C.activeIndex()}}),({e,t,a:n,o:i},a)=>{e!==a?.e&&J(r,`data-index`,e),t!==a?.t&&J(r,`aria-selected`,t),Y(r,n,a?.a),Y(p,i,a?.o)}),r})()})}})]}})),t})(),B(H,{get when(){return b()===`hits`},get children(){var e=n_(),n=e.firstChild;return Z(e,B(H,{get when(){return t()},get children(){return[B(x_,{icons:[`i-griddy-icons:arrow-elbow-down-left`],verb:`Open`}),B(x_,{icons:[`i-griddy-icons:arrow-up`,`i-griddy-icons:arrow-down`],verb:`Move`}),t_()]}}),n),Z(n,()=>`${y().length} of ${o()} sessions`),e}})]}})}})}function x_(e){var t=l_(),n=t.firstChild;return Z(n,B(V,{get each(){return e.icons},children:e=>(()=>{var t=u_(),n=t.firstChild;return W(()=>`${e} size-3`,(e,t)=>{Y(n,e,t)}),t})()})),Z(t,()=>e.verb,null),t}q([`input`,`keydown`,`mousemove`,`click`]);var S_=`pim.settings`,C_=Ni(()=>!1),w_=class{state;setState;current;constructor(){this.current=T_();let[e,t]=Ri({...this.current});this.state=e,this.setState=t}gateway(){let e=this.current.serverUrl;return(e===``?void 0:O_(e))??E_()}insecure(){return location.protocol===`https:`&&this.gateway().startsWith(`ws:`)}setServerUrl(e){this.apply({...this.current,serverUrl:e.trim()})}setHideThinking(e){this.apply({...this.current,hideThinking:e})}setDiffSplit(e){this.apply({...this.current,diffSplit:e})}apply(e){this.current=e,this.setState(t=>{t.serverUrl=e.serverUrl,t.hideThinking=e.hideThinking,t.diffSplit=e.diffSplit});try{localStorage.setItem(S_,JSON.stringify(e))}catch{}}};function T_(){try{let e=JSON.parse(localStorage.getItem(S_)??`null`);return{serverUrl:typeof e?.serverUrl==`string`?e.serverUrl.trim():``,hideThinking:e?.hideThinking===!0,diffSplit:Ep.parse(e?.diffSplit)}}catch{return{serverUrl:``,hideThinking:!1,diffSplit:`auto`}}}function E_(){return`${location.protocol===`https:`?`wss:`:`ws:`}//${location.host}`}var D_={"http:":`ws:`,"https:":`wss:`,"ws:":`ws:`,"wss:":`wss:`};function O_(e){let t=location.protocol===`https:`,n=URL.parse(/^[a-z][a-z0-9+.-]*:\/\//i.test(e)?e:`${t?`wss`:`ws`}://${e}`),r=n&&D_[n.protocol];if(!n||r===void 0)return;let i=n.pathname===`/`?``:n.pathname.replace(/\/$/,``);return`${r}//${n.host}${i}`}var k_=K(`<span class="relative flex size-4 shrink-0 items-center justify-center"><input type=checkbox class="peer size-4 appearance-none rounded bg-neutral-850 ring-1 ring-neutral-700 outline-none hover:ring-neutral-600 checked:bg-indigo-400 checked:ring-0 checked:hover:bg-indigo-500 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-400 disabled:opacity-40 disabled:hover:ring-neutral-700"><span class="i-griddy-icons:check pointer-events-none absolute size-3 text-neutral-950 opacity-0 peer-checked:opacity-100"aria-hidden=true>`);function A_(e){var t=k_(),n=t.firstChild;return n.addEventListener(`change`,t=>{e.onChange(t.currentTarget.checked)}),W(()=>({e:e.checked,t:e.disabled===!0,a:e.label}),({e,t,a:r},i)=>{n.checked=e,t!==i?.t&&J(n,`disabled`,t),r!==i?.a&&J(n,`aria-label`,r)}),t}var j_=K(`<p class="flex items-center gap-2 text-sm text-neutral-500">Reading the extensions…`),M_=K(`<p class="text-sm text-neutral-500">No extensions are installed.`),N_=K(`<div class="flex items-start gap-2"><p class="min-w-0 flex-1 text-sm text-rose-400"></p><button type=button>Try again`),P_=K(`<div class=space-y-2><!><!>`),F_=K(`<h3 class="text-sm text-neutral-350">`),I_=K(`<span class="shrink-0 rounded-full bg-neutral-850 px-1.5 text-xs text-neutral-350">Project — read-only here`),L_=K(`<label><span class="flex h-[--line] shrink-0 items-center"></span><span class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 text-sm"><span class="min-w-0 truncate">`),R_={user:`Installed`,project:`Project`};function z_(e){let[t,n]=R([]),[r,i]=R(!1),[a,o]=R(``),[s,c]=R([]),l=()=>{i(!0),o(``),e.store.listExtensions().then(e=>{n(e)},e=>{o(e.message)}).finally(()=>{i(!1)})};z(()=>e.store.state.extensions,()=>{l()});let u=(e,t)=>{n(n=>n.map(n=>n.id===e?{...n,enabled:t}:n))},d=L(()=>{let e=new Map;for(let n of t()){let t=e.get(n.group);t===void 0?e.set(n.group,[n]):t.push(n)}return[...e].map(([e,t])=>({title:R_[e],entries:t}))}),f=(t,n)=>{o(``),u(t.id,n),c(e=>[...e,t.id]),e.store.setExtension(t.id,n).catch(e=>{u(t.id,t.enabled),o(e.message)}).finally(()=>{c(e=>e.filter(e=>e!==t.id))})};return[B(H,{get when(){return G(()=>!!r())()?t().length===0:r()},get children(){var e=j_(),t=e.firstChild;return Z(e,B(Fs,{}),t),e}}),B(H,{get when(){return a()},children:e=>(()=>{var t=N_(),n=t.firstChild,r=n.nextSibling;return Z(n,e),r.$$click=l,W(()=>Ho,(e,t)=>{Y(r,e,t)}),t})()}),B(V,{get each(){return d()},children:e=>(()=>{var t=P_(),n=t.firstChild,r=n.nextSibling;return Z(t,B(H,{get when(){return e.title},children:e=>(()=>{var t=F_();return Z(t,e),t})()}),n),Z(t,B(V,{get each(){return e.entries},children:e=>B(B_,{entry:e,get busy(){return s().includes(e.id)},onChange:t=>{f(e,t)}})}),r),t})()}),B(H,{get when(){return G(()=>!(r()||a()!==``))()?t().length===0:!r()&&a()===``},get children(){return M_()}})]}function B_(e){let t=()=>!e.entry.writable;var n=L_(),r=n.firstChild,i=r.nextSibling,a=i.firstChild;return Z(r,B(A_,{get checked(){return e.entry.enabled},get disabled(){return e.busy||t()},get label(){return e.entry.label},get onChange(){return e.onChange}})),Z(a,()=>e.entry.label),Z(i,B(H,{get when(){return t()},get children(){return I_()}}),null),W(()=>`flex items-start gap-2 ${t()?``:`cursor-pointer`}`,(e,t)=>{Y(n,e,t)}),n}q([`click`]);var V_=K(`<form class="flex items-center gap-2"><input type=text autocapitalize=off autocomplete=off aria-label="Server address"placeholder="Enter URL"><button type=submit>Connect`),H_=K(`<button type=button>Use this device`),U_=K(`<p class="text-sm text-amber-400">This page is served over HTTPS, so the browser will block a plain <code>ws://</code> connection. Use an address this page can reach securely.`),W_=K(`<p class="text-sm text-neutral-500">Changing this reloads the page.`),G_=K(`<label class="flex w-fit cursor-pointer items-center gap-2 text-sm">Hide thinking blocks`),K_=K(`<button type=button><!><!>`),q_=K(`<p class="text-sm text-neutral-500">`),J_=K(`<div class="min-h-0 space-y-[calc(var(--line)*1.5)] overflow-y-auto p-3"><!><!><!><!>`),Y_=K(`<div class="font-bold leading-[--line]">Settings`),X_=K(`<p class="flex items-center gap-1.5 text-sm text-neutral-350"><span aria-hidden=true></span><span class="min-w-0 truncate">`),Z_=K(`<section class=space-y-2><h2 class="text-xs font-bold uppercase tracking-widest text-neutral-500">`);function Q_(e){let t=()=>e.settings.state.serverUrl,[n,r]=R(P(t));z(()=>e.open,e=>{e&&r(P(t))});let i=()=>e.store.update.state.stale,a=()=>e.store.runningIds().length,o=()=>e.store.update.state.pending,s=t=>{e.settings.setServerUrl(t),e.store.update.refresh()},c=()=>{if(i()){e.store.update.refresh();return}a()>0&&!window.confirm(`Restarting will stop ${so.count(a(),`running session`)}. Update and restart anyway?`)||e.store.reload(a()>0)};return B(Fc,{get open(){return e.open},get onClose(){return e.onClose},label:`Settings`,size:`narrow`,get header(){return Y_()},get children(){return B(H,{get when(){return e.open},get children(){var t=J_(),l=t.firstChild,u=l.nextSibling,d=u.nextSibling,f=d.nextSibling;return Z(t,B(ev,{title:`Server`,get children(){return[B($_,{get store(){return e.store},get settings(){return e.settings}}),(()=>{var t=V_(),i=t.firstChild,a=i.nextSibling;return t.addEventListener(`submit`,e=>{e.preventDefault(),s(n())}),i.$$input=e=>{r(e.currentTarget.value)},W(()=>({e:n(),t:Ro,a:Vo,o:n().trim()===e.settings.state.serverUrl}),({e,t,a:n,o:r},o)=>{i.value=e??``,Y(i,t,o?.t),Y(a,n,o?.a),r!==o?.o&&J(a,`disabled`,r)}),t})(),B(H,{get when(){return e.settings.state.serverUrl!==``},get children(){var e=H_();return e.$$click=()=>{s(``)},W(()=>Ho,(t,n)=>{Y(e,t,n)}),e}}),B(H,{get when(){return e.settings.insecure()},get children(){return U_()}}),W_()]}}),l),Z(t,B(ev,{title:`App`,get children(){var t=G_(),n=t.firstChild;return Z(t,B(A_,{get checked(){return e.settings.state.hideThinking},onChange:t=>{e.settings.setHideThinking(t)}}),n),t}}),u),Z(t,B(ev,{title:`Extensions`,get children(){return B(z_,{get store(){return e.store}})}}),d),Z(t,B(ev,{title:`Updates`,get children(){return[(()=>{var t=K_(),n=t.firstChild,r=n.nextSibling;return t.$$click=c,Z(t,B(H,{get when(){return o()},get children(){return B(Fs,{})}}),n),Z(t,(()=>{var t=G(()=>!!o());return()=>t()?e.store.update.state.label:i()?`Reload page`:`Update & Restart`})(),r),W(()=>({e:i()?`Reload page`:`Update & Restart`,t:`${Vo} flex items-center gap-2`,a:o()||!i()&&e.store.state.connection!==`open`}),({e,t:n,a:r},i)=>{e!==i?.e&&J(t,`aria-label`,e),Y(t,n,i?.t),r!==i?.a&&J(t,`disabled`,r)}),t})(),(()=>{var e=q_();return Z(e,(()=>{var e=G(()=>a()>0);return()=>e()?`Installs all updates and refreshes your browser, stopping ${so.count(a(),`running session`)}.`:`Installs all updates and refreshes your browser.`})()),e})()]}}),f),t}})}})}function $_(e){let t=()=>URL.parse(e.settings.gateway())?.host??e.settings.gateway(),n=()=>{if(e.store.update.state.stale)return{tone:`text-amber-400`,text:`Connected to ${t()}, running pim ${e.store.state.pimVersion??`?`}`};switch(e.store.state.connection){case`open`:return{tone:`text-emerald-400`,text:`Connected to ${t()}`};case`closed`:return{tone:`text-neutral-500`,text:`Not connected`};default:return{tone:`text-amber-400`,text:`Connecting to ${t()}…`}}};var r=X_(),i=r.firstChild,a=i.nextSibling;return Z(a,()=>n().text),W(()=>`i-griddy-icons:server size-4 shrink-0 ${n().tone}`,(e,t)=>{Y(i,e,t)}),r}function ev(e){var t=Z_(),n=t.firstChild;return Z(n,()=>e.title),Z(t,()=>e.children,null),t}q([`input`,`click`]);var tv=K(`<div class="animate-pulse space-y-[--line]"aria-hidden=true><div class="flex justify-end"><div class="h-[calc(var(--line)*2)] w-2/5 rounded-lg bg-neutral-850"></div></div><div class=space-y-2></div><div></div><div class="flex justify-end"><div class="h-[--line] w-1/4 rounded-lg bg-neutral-850">`),nv=K(`<div class="h-[--line] rounded bg-neutral-850">`),rv=K(`<div class="flex h-[--line] items-center gap-2"><div class="size-3 rounded bg-neutral-850"></div><div class="h-3 w-1/3 rounded bg-neutral-850">`);function iv(){let e=[`60%`,`95%`,`85%`,`70%`];var t=tv(),n=t.firstChild.nextSibling,r=n.nextSibling;return Z(n,B(V,{each:e,children:e=>(()=>{var t=nv();return Sa(t,`width`,e),t})()})),Z(r,B(V,{each:[0,1,2],children:()=>rv()})),t}var av=K(`<section aria-label="Pim controls"class="max-w-md space-y-[--line] text-base"><h2 class="font-bold text-indigo-300">PIM - Pi IMproved <span class="font-normal italic text-neutral-500"></span></h2><dl class=space-y-1>`),ov=K(`<div class="grid grid-cols-[max-content_1fr] gap-x-1ch"><dt class=text-pink-400></dt><dd class=text-neutral-500>`),sv=[[`Escape`,`Cancel autocomplete / abort turn`],[`/<command>`,`Slash commands`],[`@<path>`,`Reference a file`],[`Shift + Tab`,`Cycle thinking level`],[`Ctrl/⌘ + Enter`,`Send message`]];function cv(){var e=av(),t=e.firstChild,n=t.firstChild.nextSibling,r=t.nextSibling;return Z(n,`v${zh}`),Z(r,B(V,{each:sv,children:([e,t])=>(()=>{var n=ov(),r=n.firstChild,i=r.nextSibling;return Z(r,e),Z(i,t),n})()})),e}function lv(e,t,n){switch(n.type){case`message`:{let r=n.thinking?.trim()??``,i=n.attachments??[];(n.text!==``||r!==``||i.length>0)&&e.push({kind:`message`,id:n.messageId,role:n.role,text:n.text,timestamp:n.timestamp,...i.length===0?{}:{attachments:i},...r===``?{}:{thinking:r}}),n.error!==void 0&&e.push({kind:`notice`,id:`${n.messageId}-error`,severity:`error`,text:n.error});for(let r of n.toolCalls??[])uv(e,t,{kind:`tool`,id:r.callId,name:r.name,view:r.view,isError:!1,isPartial:!0});break}case`tool_result`:uv(e,t,{kind:`tool`,id:n.callId,name:n.name,view:n.view,isError:n.isError,isPartial:!1});break;case`notice`:e.push({kind:`notice`,id:`notice-${n.seq}`,severity:n.severity,text:n.text})}}function uv(e,t,n){let r=t.get(n.id);if(r===void 0){t.set(n.id,e.length),e.push(n);return}(e[r].isPartial||!n.isPartial)&&(e[r]=n)}function dv(e,t,n){for(let r of n){let n=r.thinking.trim();(r.text!==``||n!==``)&&e.push({kind:`message`,id:r.messageId,role:`assistant`,text:r.text,timestamp:0,...n===``?{}:{thinking:n},streaming:!0});for(let n of r.tools)uv(e,t,{kind:`tool`,id:n.callId,name:n.name,view:n.view,isError:n.isError,isPartial:n.isPartial})}}function fv(e){let t=[],n=new Map;for(let r of e)lv(t,n,r);return{rows:t,toolIndex:n}}function pv(e,t){e.push({kind:`message`,id:t.id,role:`user`,text:t.text,timestamp:t.timestamp,...t.attachments===void 0?{}:{attachments:t.attachments},...t.queued?{queued:!0}:{}})}function mv(e,t,n=[]){if(t.length===0&&n.length===0)return e.rows;let r=[...e.rows],i=new Map(e.toolIndex);for(let e of t)e.queued||pv(r,e);dv(r,i,n);for(let e of t)e.queued&&pv(r,e);return r}var hv=K(`<span aria-hidden=true>`),gv=K(`<span aria-hidden=true><span class="absolute inset-y-0 left-[calc(0.5ch-0.75px)] w-1.5px bg-current">`),_v=K(`<details class="group relative min-w-0 pl-2ch"><summary class="min-w-0 flow-root cursor-pointer list-none"><!><!><!></summary><div class=min-w-0>`),vv=`i-griddy-icons:chevron-right-small-filled`,yv=`transition-transform group-open:rotate-90`;function bv(e){return B(Sv,{icon:vv,get class(){return`scale-175 ${e.class??`bg-neutral-300`}`}})}function xv(e){return B(Sv,{icon:`i-griddy-icons:square-rounded-filled`,get class(){return`scale-75 ${e.class??`bg-neutral-300`}`}})}function Sv(e){var t=hv();return W(()=>`${e.icon} absolute left-0 top-0 my-[calc((var(--line)-1ch)/2)] size-1ch ${e.class}`,(e,n)=>{Y(t,e,n)}),t}function Cv(e){var t=gv();return W(()=>`absolute bottom-0 left-0 top-[--line] w-2ch ${e.grip===!0?`cursor-pointer`:``} ${e.class??`text-neutral-750 group-hover:text-neutral-500`}`,(e,n)=>{Y(t,e,n)}),t}function wv(e){var t=_v(),n=t.firstChild,r=n.firstChild,i=r.nextSibling,a=i.nextSibling,o=n.nextSibling;return Z(n,B(bv,{get class(){return`${yv} ${e.caret??`bg-neutral-300`}`}}),r),Z(n,B(Cv,{get class(){return e.spine},grip:!0}),i),Z(n,()=>e.summary,a),Z(o,()=>e.children),t}var Tv=K(`<div class=text-neutral-400>`),Ev=K(`<div>`),Dv=K(`<div class="mt-1 pl-2ch">`),Ov=K(`<article><!><!><!>`),kv=K(`<div class="relative min-w-0 flow-root pl-2ch"><!><!>`),Av=K(`<span class=float-left><span></span><span class="pr-1ch text-neutral-400">:`),jv=K(`<span class="break-words [&_p]:inline"><!><!>`),Mv=K(`<span class=text-neutral-400> <!><!><!>`);function Nv(e){let t=L(()=>(e.view.body??[]).filter(Lv)),n=()=>e.isError===!0,r=()=>e.isPartial===!0,i=()=>Cd(r(),n()),a=()=>wd(r(),n()),o=()=>!t().some(e=>lu.WEIGHT[e.kind]===`payload`),s=()=>e.view.labelTone??(n()?`error`:r()?`warning`:void 0),c=L(()=>{let t=e.view.summary??[];return{status:t.filter(e=>e.kind!==`attachment`),delivered:t.filter(e=>e.kind===`attachment`)}}),l=()=>[B(Rv,{get view(){return e.view},get name(){return e.name},get tone(){return s()}}),B(H,{get when(){return c().status.length>0},get children(){var e=Tv();return Z(e,B(cf,{get blocks(){return c().status}})),e}})];var u=Ov(),d=u.firstChild,f=d.nextSibling,p=f.nextSibling;return Z(u,B(H,{get when(){return t().length===0},get children(){return B(Cv,{get class(){return a()}})}}),d),Z(u,B(H,{get when(){return t().length>0},get fallback(){var e=kv(),t=e.firstChild,n=t.nextSibling;return Z(e,B(xv,{get class(){return i()}}),t),Z(e,l,n),e},get children(){return B(wv,{get summary(){return l()},get caret(){return i()},get spine(){return a()},get children(){var e=Ev();return Z(e,B(cf,{get blocks(){return t()}})),W(()=>o()?`opacity-60`:``,(t,n)=>{Y(e,t,n)}),e}})}}),f),Z(u,B(H,{get when(){return c().delivered.length>0},get children(){var e=Dv();return Z(e,B(cf,{get blocks(){return c().delivered}})),e}}),p),W(()=>`relative min-w-0 ${c().delivered.length>0?``:`opacity-80`} ${t().length>0?`hover:opacity-100 focus-within:opacity-100 has-[>details[open]]:opacity-100`:``}`,(e,t)=>{Y(u,e,t)}),u}function Pv(e){return B(V,{get each(){return Iv(e.name,e.view)},keyed:!1,children:t=>B(Nv,Ai(e,{get view(){return t()}}))})}function Fv(e){return B(H,{get when(){return e.label},get children(){var t=Av(),n=t.firstChild;return Z(n,()=>e.label),W(()=>`font-bold ${Sd(e.tone)}`,(e,t)=>{Y(n,e,t)}),t}})}function Iv(e,t){if(e!==`apply_patch`)return[t];let n=t.body??[],r=n.findIndex(e=>e.kind===`section`);if(r===-1)return[t];let i=[{...t,body:n.slice(0,r)}],a=[];for(let e of n.slice(r)){if(e.kind!==`section`){a.push(e);continue}a=[],i.push({label:e.label,icon:e.icon,title:e.content,body:a})}return i}function Lv(e){return e.kind===`text`||e.kind===`notice`?e.text.trim()!==``:!0}function Rv(e){let t=()=>e.view.label??e.name??``,n=()=>e.view.title.slice(0,1),r=()=>e.view.title.slice(1),i=()=>{let t=e.view.title.length===1?e.view.title[0]:void 0;return t?.kind===`markdown`?t.text:void 0};return[B(Fv,{get label(){return t()},get tone(){return e.tone}}),B(H,{get when(){return i()},get fallback(){var e=jv(),t=e.firstChild,i=t.nextSibling;return Z(e,B(of,{get blocks(){return n()}}),t),Z(e,B(V,{get each(){return r()},children:e=>B(zv,{block:e})}),i),e},children:e=>B(Nd,{get text(){return e()}})})]}function zv(e){let t=()=>e.block.kind!==`spans`;var n=Mv(),r=n.firstChild.nextSibling,i=r.nextSibling,a=i.nextSibling;return Z(n,B(H,{get when(){return t()},children:`(`}),r),Z(n,B(of,{get blocks(){return[e.block]}}),i),Z(n,B(H,{get when(){return t()},children:`)`}),a),n}var Bv=K(`<span class="block truncate text-rose-400">failed`),Vv=K(`<button type=button aria-haspopup=dialog class="relative w-full min-w-0 flow-root pl-2ch text-left opacity-80 focus-visible:opacity-100 hover:opacity-100"><!><!><!>`),Hv=K(`<span class=break-words>`),Uv=K(`<span class="ml-1ch inline-flex align-middle">`);function Wv(e){let t=L(()=>e.row.isError?``:Gv(e.row.view)),n=L(()=>e.row.isError?Kv(e.row.view):void 0);var r=Vv(),i=r.firstChild,a=i.nextSibling,o=a.nextSibling;return r.$$click=()=>{e.onOpen(e.row.id)},Z(r,B(bv,{get class(){return Cd(e.row.isPartial,e.row.isError)}}),i),Z(r,B(Fv,{label:`Subagent`,get tone(){return e.row.view.labelTone}}),a),Z(r,B(H,{get when(){return e.row.isError},get fallback(){return[B(H,{get when(){return t()!==``},get children(){var e=Hv();return Z(e,t),e}}),B(H,{get when(){return e.row.isPartial},get children(){var e=Uv();return Z(e,B(Fs,{})),e}})]},get children(){var e=Bv();return e.firstChild,Z(e,B(H,{get when(){return n()},children:e=>[` · `,G(e)]}),null),e}}),o),r}function Gv(e){return(e.summary??[]).map(qv).join(``).trim()}function Kv(e){for(let t of e.body??[]){let e=qv(t).trim().split(/\r?\n/u)[0]?.trim();if(e!==void 0&&e!==``)return e}}function qv(e){switch(e.kind){case`text`:case`markdown`:case`notice`:return e.text;case`spans`:return e.spans.map(e=>e.text).join(``);case`file`:return e.path;default:return``}}q([`click`]);var Jv=K(`<div class=space-y-[--line]>`),Yv=K(`<div class=min-w-0>`),Xv=K(`<button type=button aria-label="Edit queued message"class="group flex max-w-[85%] min-w-0 flex-col items-end text-left">`),Zv=K(`<article class="flex flex-col items-end"><!><!>`),Qv=K(`<article class="min-w-0 space-y-[--line]"><!><!>`),$v=K(`<div class="font-300 italic opacity-60">`),ey=K(`<div class=mb-1.5>`),ty=K(`<div class="flex max-w-[85%] min-w-0 flex-col items-end">`),ny=K(`<div>`),ry=K(`<span class="mr-1ch rounded bg-current/10 px-1.5 py-0.5 text-sm font-semibold">`),iy=`subagent`;function ay(e){let t=L(()=>fv(e.events)),n=L(()=>mv(t(),e.trailing??[],e.live??[])),r=Pi(C_),i=L(()=>sy(n().filter(e=>oy(e,r())))),a={message:t=>B(cy,{get row(){return t.row},get hidden(){return r()},get onEdit(){return e.onEdit}}),tool:t=>B(uy,{get row(){return t.row},get onOpenSubagent(){return e.onOpenSubagent}}),notice:fy};var o=Jv();return Z(o,B(V,{get each(){return i()},keyed:e=>e.id,children:e=>(()=>{var t=Yv();return Z(t,B(V,{get each(){return e().rows},keyed:e=>e.id,children:e=>B(Ga,{get component(){return a[e().kind]},get row(){return e()}})})),t})()})),o}function oy(e,t){return!(t&&e.kind===`message`&&e.thinking!==void 0&&e.text===``&&e.attachments===void 0)}function sy(e){let t=[],n;for(let r of e){if(r.kind===`tool`&&n){n.push(r);continue}n=r.kind===`tool`?[r]:void 0,t.push({id:r.id,rows:n??[r]})}return t}function cy(e){return B(H,{get when(){return e.row.role===`user`},get fallback(){var t=Qv(),n=t.firstChild,r=n.nextSibling;return Z(t,B(H,{get when(){return G(()=>!e.hidden)()&&e.row.thinking},children:t=>(()=>{var n=$v();return Z(n,B(Nd,{get text(){return t()},get complete(){return e.row.streaming!==!0||e.row.text!==``}})),n})()}),n),Z(t,B(Nd,{get text(){return e.row.text},get complete(){return e.row.streaming!==!0}}),r),t},get children(){var t=Zv(),n=t.firstChild,r=n.nextSibling;return Z(t,B(H,{get when(){return e.row.attachments},children:e=>(()=>{var t=ey();return Z(t,B(Us,{get files(){return e().map(e=>({...e,key:e.url}))}})),t})()}),n),Z(t,B(H,{get when(){return e.row.queued},get fallback(){var t=ty();return Z(t,B(ly,{get row(){return e.row}})),t},get children(){var t=Xv();return t.$$click=()=>e.onEdit?.(),Z(t,B(ly,{get row(){return e.row}})),t}}),r),t}})}function ly(e){return[B(H,{get when(){return e.row.text!==``},get children(){var t=ny();return Z(t,B(Nd,{get text(){return e.row.text},complete:!0,wrap:`wrap-anywhere`})),W(()=>`max-w-full rounded-lg px-4 py-3 ${e.row.queued?`bg-neutral-900 text-neutral-400 group-hover:bg-neutral-850 group-hover:text-neutral-200`:`bg-neutral-850`}`,(e,n)=>{Y(t,e,n)}),t}}),(()=>{var t=ny();return Z(t,(()=>{var t=G(()=>!!e.row.queued);return()=>t()?`Queued. Click to edit.`:qc(e.row.timestamp)})()),W(()=>`text-sm ${e.row.queued?`text-neutral-400`:`text-neutral-500`}`,(e,n)=>{Y(t,e,n)}),t})()]}function uy(e){return B(H,{get when(){return G(()=>e.row.name===iy)()&&e.onOpenSubagent!==void 0},get fallback(){return B(Pv,{get view(){return e.row.view},get name(){return e.row.name},get isError(){return e.row.isError},get isPartial(){return e.row.isPartial}})},get children(){return B(Wv,{get row(){return e.row},onOpen:t=>e.onOpenSubagent?.(t)})}})}var dy={info:`INFO`,warn:`WARNING`,error:`ERROR`};function fy(e){return B(Ef,{get severity(){return e.row.severity},get text(){return e.row.text},get tag(){var t=ry();return Z(t,()=>dy[e.row.severity]),t}})}q([`click`]);var py=K(`<div><div class="mx-auto min-h-full w-full max-w-3xl flex-none space-y-[--line] p-3 leading-[--line]">`),my=K(`<span class="text-sm text-amber-400">Running`),hy=K(`<div class="min-w-0 leading-[--line]"><div class="flex items-center gap-2"><span class=font-bold>Subagent`),gy=K(`<div class="text-sm text-neutral-400">`);function _y(e){let t=()=>e.store.state.subagent,n=L(()=>fv(e.store.state.durable)),r=is(),i=L(()=>{let r=t()?.callId;if(r===void 0)return;let i=mv(n(),[],e.store.state.live).find(e=>e.id===r);return i?.kind===`tool`?i:void 0});return B(Fc,{get open(){return t()!==void 0},label:`Subagent`,onClose:()=>{e.store.unwatch()},get header(){var e=hy(),t=e.firstChild;return t.firstChild,Z(t,B(H,{get when(){return i()?.isPartial},get children(){return[B(Fs,{}),my()]}}),null),Z(e,B(H,{get when(){return i()?.view.summary},children:e=>(()=>{var t=gy();return Z(t,B(cf,{get blocks(){return e()}})),t})()}),null),e},get children(){var e=py(),n=e.firstChild,i=r.ref;return typeof i==`function`||Array.isArray(i)?X(()=>i,e):r.ref=e,Z(n,B(H,{get when(){return t()},children:e=>B(ay,{get events(){return e().durable},get live(){return e().live}})})),W(()=>({"flex min-h-0 flex-1 flex-col-reverse overflow-y-auto":!0,"[overflow-anchor:none]":r.pinned()}),(t,n)=>{Y(e,t,n)}),e}})}var vy=K(`<button type=button><!><!>`),yy=K(`<span>`),by=K(`<span title="Commits to push">↑`),xy=K(`<span class=text-rose-400 title="Commits to pull">↓`),Sy=K(`<span class="flex shrink-0 items-center"><!><!>`),Cy=K(`<div class="flex min-w-0 flex-1"><button type=button aria-haspopup=listbox><span class="i-griddy-icons:code-branch size-4 shrink-0"></span><!><!>`),wy=K(`<p class="px-2 text-xs text-amber-400">Git operations are disabled as an agent is still working.`),Ty=K(`<div class="mb-1 flex flex-col gap-1"><div class="flex items-center gap-1"><!><!></div><!><!>`),Ey=K(`<p class="max-h-20 overflow-y-auto px-2 text-xs whitespace-pre-wrap text-rose-400">`),Dy=`${Ko} h-7 flex-1 px-3 text-sm disabled:text-neutral-600 disabled:hover:text-neutral-600 disabled:hover:ring-0`,Oy=2592e6,ky=300,Ay=`Git operations are disabled as an agent is still working.`;function jy(e){return e.worktree?`in another worktree`:e.gone?`upstream gone`:e.merged&&!e.isDefault?`merged`:void 0}function My(e,t){let n=[Bc(e.updatedAt*1e3,t)];return e.ahead>0&&n.push(`↑${e.ahead}`),e.behind>0&&n.push(`↓${e.behind}`),n.join(` `)}function Ny(e,t){let n=jy(e);return{branch:e,label:e.name,tag:My(e,t),selected:e.current,...n===void 0?{}:{description:n}}}function Py(e,t){return e.current||e.isDefault||t-e.updatedAt*1e3<=Oy&&!(e.merged||e.gone||e.worktree)}function Fy(e){let t=Date.now();return e.filter(e=>Py(e,t)).map(e=>Ny(e,t))}function Iy(e){let[t,n]=R([]),[r,i]=R(),[a,o]=R(``),s=()=>e.store.state,c=()=>s().repoBusy||r()!==void 0,l=()=>{document.visibilityState===`visible`&&e.store.refreshGit()};document.addEventListener(`visibilitychange`,l),window.addEventListener(`focus`,l),bn(()=>{document.removeEventListener(`visibilitychange`,l),window.removeEventListener(`focus`,l)});let u=()=>e.store.listBranches().then(e=>{n(e),P(h.activeIndex)<0&&h.setActiveIndex(Fy(e).findIndex(e=>e.branch.current))},e=>{o(e.message)}),d=L(()=>Fy(t())),f=(e,t)=>{o(``),i(e),t().then(()=>{if(e===`checkout`){m.close();return}u()},e=>{o(e.message)}).finally(()=>{i(void 0)})},p=t=>{let n=d()[t];if(n){if(n.branch.current){m.close();return}if(c()){o(s().repoBusy?Ay:`Another git operation is still running.`);return}f(`checkout`,()=>e.store.checkout(n.branch.name))}},m=bs({onOpen:()=>{o(``),h.setActiveIndex(-1),u(),e.store.refreshGit(!0).then(u)}}),h=ds({count:()=>d().length,open:m.open,onSelect:p,onDismiss:m.close}),g=t=>(()=>{var n=vy(),i=n.firstChild,a=i.nextSibling;return n.$$click=()=>{f(t.operation,()=>t.operation===`pull`?e.store.pull():e.store.push())},Z(n,B(H,{get when(){return r()===t.operation},get fallback(){var e=yy();return W(()=>`${t.icon} size-4 shrink-0`,(t,n)=>{Y(e,t,n)}),e},get children(){return B(Fs,{})}}),i),Z(n,()=>t.label,a),W(()=>({e:Dy,t:t.disabled,a:t.title}),({e,t,a:r},i)=>{Y(n,e,i?.e),t!==i?.t&&J(n,`disabled`,t),r!==i?.a&&J(n,`title`,r)}),n})();var _=Cy(),v=_.firstChild,y=v.firstChild.nextSibling,b=y.nextSibling,x=m.root;typeof x==`function`||Array.isArray(x)?X(()=>x,_):m.root=_,v.$$keydown=e=>{h.onKeyDown(e)},ba(v,`click`,m.toggle,!0);var S=m.trigger;return typeof S==`function`||Array.isArray(S)?X(()=>S,v):m.trigger=v,Z(v,B(Xc,{get texts(){return[e.branch]}}),y),Z(v,B(H,{get when(){return G(()=>!e.compact)()&&(s().ahead>0||s().behind>0)},get children(){var e=Sy(),t=e.firstChild,n=t.nextSibling;return Z(e,B(H,{get when(){return s().ahead>0},get children(){var e=by();return e.firstChild,Z(e,()=>s().ahead,null),e}}),t),Z(e,B(H,{get when(){return s().behind>0},get children(){var e=xy();return e.firstChild,Z(e,()=>s().behind,null),e}}),n),e}}),b),Z(_,B(hs,{get open(){return m.open()},get anchor(){return m.anchor},place:`below`,min:ky,get items(){return d()},get activeIndex(){return h.activeIndex()},get onActivate(){return h.setActiveIndex},onSelect:p,emptyLabel:`no branches touched in the last 30 days`,get header(){var e=Ty(),t=e.firstChild,n=t.firstChild,i=n.nextSibling,o=t.nextSibling,l=o.nextSibling;return Z(t,B(g,{operation:`pull`,icon:`i-griddy-icons:arrow-down`,label:`Pull`,title:`Fast-forward from the remote`,get disabled(){return c()}}),n),Z(t,B(g,{operation:`push`,icon:`i-griddy-icons:arrow-up`,label:`Push`,title:`Publish this branch`,get disabled(){return r()!==void 0}}),i),Z(e,B(H,{get when(){return s().repoBusy},get children(){return wy()}}),o),Z(e,B(H,{get when(){return a()},children:e=>(()=>{var t=Ey();return Z(t,e),t})()}),l),e}}),null),W(()=>({e:m.open()?`true`:`false`,t:`Branch ${e.branch}, switch or sync`,a:e.branch,o:`${Go} flex-1 rounded-l-lg`}),({e,t,a:n,o:r},i)=>{e!==i?.e&&J(v,`aria-expanded`,e),t!==i?.t&&J(v,`aria-label`,t),n!==i?.a&&J(v,`title`,n),Y(v,r,i?.o)}),_}q([`click`,`keydown`]);var Ly=K(`<button type=button aria-label="Not connected"title="Not connected — reconnecting"class="flex h-8 shrink-0 items-center gap-1.5 rounded-lg bg-rose-500/10 px-2 text-sm text-rose-400 hover:bg-rose-500/20"><span class="i-griddy-icons:link-off size-4 shrink-0">`),Ry=K(`<div class="flex h-12 shrink-0 items-center gap-2 border-b border-neutral-700 px-3"><button type=button aria-label="Toggle sessions"class="flex size-8 shrink-0 items-center justify-center rounded-lg text-neutral-350 hover:bg-neutral-800 hover:text-neutral-50"><span class="i-griddy-icons:sidebar size-5"></span></button><div class=ml-auto></div><!><!><!>`),zy=K(`<button type=button><span class="i-griddy-icons:folder size-4 shrink-0">`),By=K(`<span class="shrink-0 text-amber-400">`),Vy=K(`<div><button type=button><span>`),Hy=1500;function Uy(e,t){return t?`Back to the conversation`:e===0?`Review changes, working tree clean`:`Review changes, ${so.count(e,`changed file`)}`}function Wy(e){let[t,n]=R(!1),r=Gy(()=>e.store.state.connection,()=>e.graceMs??Hy),i=t=>e.compact?[Uc(t)]:[Hc(t),Uc(t)],a=()=>Uy(e.store.state.dirtyCount,e.reviewing);var o=Ry(),s=o.firstChild,c=s.nextSibling,l=c.nextSibling,u=l.nextSibling,d=u.nextSibling;return ba(s,`click`,e.onToggleSidebar,!0),Z(o,B(H,{get when(){return e.store.state.cwd},children:e=>(()=>{var t=zy();return t.firstChild,t.$$click=()=>{n(!0)},Z(t,B(Xc,{get texts(){return i(e())}}),null),W(()=>({e:Uo,t:`Working directory ${Hc(e())}, open another`,a:e()}),({e,t:n,a:r},i)=>{Y(t,e,i?.e),n!==i?.t&&J(t,`aria-label`,n),r!==i?.a&&J(t,`title`,r)}),t})()}),c),Z(o,B(H,{get when(){return r()},get children(){var t=Ly();return t.firstChild,t.$$click=()=>e.onOpenSettings?.(),Z(t,B(H,{get when(){return!e.compact},children:`Not connected`}),null),t}}),l),Z(o,B(H,{get when(){return e.store.state.branch},children:t=>(()=>{var n=Vy(),r=n.firstChild,i=r.firstChild;return Z(n,B(Iy,{get store(){return e.store},get branch(){return t()},get compact(){return e.compact}}),r),ba(r,`click`,e.onToggleDiff,!0),Z(r,B(H,{get when(){return e.store.state.dirtyCount>0},get children(){var t=By();return Z(t,()=>e.store.state.dirtyCount),t}}),null),W(()=>({e:Wo,t:e.reviewing?`true`:`false`,a:`${Go} shrink-0 rounded-r-lg border-l border-neutral-750`,o:a(),i:a(),n:`i-griddy-icons:file-edit size-4 shrink-0 ${e.store.state.dirtyCount>0?`text-amber-400`:``}`}),({e,t,a,o,i:s,n:c},l)=>{Y(n,e,l?.e),t!==l?.t&&J(r,`aria-pressed`,t),Y(r,a,l?.a),o!==l?.o&&J(r,`aria-label`,o),s!==l?.i&&J(r,`title`,s),Y(i,c,l?.n)}),n})()}),u),Z(o,B(sg,{get open(){return t()},get store(){return e.store},onClose:()=>{n(!1)}}),d),o}function Gy(e,t){let[n,r]=R(!1),i;return z(()=>e(),e=>{if(clearTimeout(i),i=void 0,e!==`connecting`&&e!==`reconnecting`){r(!1);return}i=setTimeout(()=>{r(!0)},t())}),bn(()=>{clearTimeout(i)}),n}q([`click`]);var Ky=K(`<dialog class="m-0 h-full max-h-none w-[85vw] max-w-xs border-r border-neutral-700 bg-neutral-950 p-0 text-neutral-100 backdrop:bg-black/60">`);function qy(e){let t=ks({open:()=>e.open,onClose:()=>{e.onClose()}});var n=Ky();n.$$click=e=>{t.isHost(e.target)&&t.close()},ba(n,`close`,t.onNativeClose);var r=t.ref;return typeof r==`function`||Array.isArray(r)?X(()=>r,n):t.ref=n,Z(n,()=>e.children),W(()=>e.label,e=>{J(n,`aria-label`,e)}),n}q([`click`]);var Jy=K(`<div><div class="mx-auto min-h-full w-full max-w-3xl flex-none space-y-[--line] p-3 leading-[--line]">`),Yy=K(`<div class="w-xs shrink-0 border-r border-neutral-700">`),Xy=K(`<div class="min-h-0 overflow-hidden">`),Zy=K(`<main class="flex overflow-hidden bg-neutral-925 text-neutral-100"><!><div class="flex w-full min-w-0 flex-col"><div class="relative min-h-0 flex-1"><div><div><div></div></div></div><!><!></div></div><!><!><!><!>`);function Qy(){let e=new w_,t=new Zh({url:e.gateway()});return En(()=>(t.connect().catch(()=>void 0),()=>{t.dispose()})),B($y,{store:t,settings:e})}function $y(e){let t=vs(gs),[n,r]=R(P(t)),[i,a]=R(!1),[o,s]=R(!1),[c,l]=R(!1),u=new Oc(e.store),d=new fo,f=Os(()=>{l(!1)});z(()=>t(),e=>{r(e)}),z(()=>u.cwd(),e=>{d.load(e)}),En(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`&&(e.preventDefault(),s(!0))};return globalThis.addEventListener(`keydown`,e),()=>{globalThis.removeEventListener(`keydown`,e)}});let p=is(),[m,h]=R(0),[g,_]=R(),v=()=>{P(c)||(l(!0),f.arm())},y=()=>{l(!1),f.release()},b=()=>{if(P(c)){y();return}v()},x=()=>{e.store.dequeue().then(e=>{e!==``&&_({text:e})})},S=()=>{y(),p.jump()},ee=()=>{d.clear()},C=L(()=>({count:d.all().length,text:()=>P(()=>Po.compose(u.state.base,d.all(),u.files())),sent:ee,discard:ee,open:v})),te=L(()=>e.store.state.durable.length>0||e.store.trailing().length>0||e.store.liveSize()>0),w=L(()=>!c()&&!e.store.state.loading&&!te()),ne=L(()=>w()?0:m()),re=jc(),ie=()=>(()=>{var t=Jy(),n=t.firstChild,r=p.ref;return typeof r==`function`||Array.isArray(r)?X(()=>r,t):p.ref=t,Z(t,B(Ac,{get height(){return ne()}}),n),Z(n,B(H,{get when(){return!e.store.state.loading},get fallback(){return B(iv,{})},get children(){return B(H,{get when(){return te()},get children(){return B(ay,{get events(){return e.store.state.durable},get trailing(){return e.store.trailing()},get live(){return e.store.state.live},onEdit:x,onOpenSubagent:t=>{e.store.watch(t)}})}})}})),W(()=>({e:{"isolate flex h-full flex-col-reverse overflow-y-auto":!0,"[overflow-anchor:none]":p.pinned()},t:`calc(${ne()}px + var(--line))`}),({e,t:r},i)=>{Y(t,e,i?.e),r!==i?.t&&Sa(n,`padding-bottom`,r)}),t})();return B(Pd,{value:()=>e.store.httpUrl,get children(){return B(C_,{value:()=>e.settings.state.hideThinking,get children(){var l=Zy(),f=l.firstChild,p=f.nextSibling,m=p.firstChild,_=m.firstChild,v=_.firstChild,x=v.firstChild,ee=_.nextSibling,te=ee.nextSibling,ae=p.nextSibling,oe=ae.nextSibling,T=oe.nextSibling,se=T.nextSibling;Z(l,B(H,{get when(){return G(()=>!!t())()?n():t()},get children(){var t=Yy();return Z(t,B(Rg,{get store(){return e.store},onNavigate:S,onOpenSearch:()=>{s(!0)},onOpenSettings:()=>{a(!0)}})),t}}),f),Z(l,B(qy,{get open(){return G(()=>!t())()&&n()},label:`Sessions`,onClose:()=>{r(!1)},get children(){return B(H,{get when(){return!t()},get children(){return B(Rg,{get store(){return e.store},onNavigate:()=>{r(!1),S()},onOpenSearch:()=>{r(!1),s(!0)},onOpenSettings:()=>{r(!1),a(!0)}})}})}}),p),Z(p,B(Wy,{get store(){return e.store},get compact(){return!t()},get reviewing(){return c()},onToggleSidebar:()=>{r(e=>!e)},onToggleDiff:b,onOpenSettings:()=>{a(!0)}}),m),Z(m,B(H,{get when(){return c()},get fallback(){return B(ie,{})},get children(){return B(po,{value:()=>d,get children(){return B(Rp,{diff:u,get settings(){return e.settings},get inset(){return ne()},onClose:y})}})}}),_);var ce=ts(h);return(typeof ce==`function`||Array.isArray(ce))&&X(()=>ce,_),Z(v,B(H,{get when(){return w()},get children(){var e=Xy();return Z(e,B(cv,{})),e}}),x),Z(x,B(fc,{get store(){return e.store},onSend:S,get recalled(){return g()},get review(){return C()}})),Z(m,B(eg,{get update(){return e.store.update},get desktop(){return t()}}),ee),Z(m,B(im,{get notices(){return e.store.state.toasts},get desktop(){return t()},onDismiss:t=>{e.store.dismissToast(t)}}),te),Z(l,B(_y,{get store(){return e.store}}),ae),Z(l,B(Xp,{get store(){return e.store}}),oe),Z(l,B(b_,{get open(){return o()},get store(){return e.store},onNavigate:S,onClose:()=>{s(!1)}}),T),Z(l,B(Q_,{get open(){return i()},get store(){return e.store},get settings(){return e.settings},onClose:()=>{a(!1)}}),se),W(()=>({e:re(),t:{"pointer-events-none flex":!0,"absolute right-[--scrollbar] bottom-0 left-0 justify-center px-3 pt-10 pb-[max(0.75rem,env(safe-area-inset-bottom))]":!w(),"absolute inset-0 items-center justify-center overflow-hidden px-3 pt-3 pb-[max(0.75rem,env(safe-area-inset-bottom))]":w()},a:{"w-full max-w-3xl":!0,"flex max-h-full flex-col":w()},o:{"mt-[calc(var(--line)*2)] shrink-0":w()}}),({e,t,a:n,o:r},i)=>{e!==i?.e&&Sa(l,`height`,e),Y(_,t,i?.t),Y(v,n,i?.a),Y(x,r,i?.o)}),l}})}})}var eb=document.getElementById(`root`);if(eb===null)throw Error(`missing #root`);la(()=>B(Qy,{}),eb);export{c as n,o as t};
|
|
45
|
+
`)}answerRequest(e,t){let n=!1;this.setState(t=>{n=t.requests.some(t=>t.requestId===e),t.requests=t.requests.filter(t=>t.requestId!==e)}),n&&this.sendAnswer(e,t)}closeCommand(){let e=[];this.setState(t=>{e=t.requests.map(e=>e.requestId),t.requests=[],t.notices=[]});for(let t of e)this.sendAnswer(t,{cancelled:!0})}sendAnswer(e,t){this.client.send({type:`ui_response`,sessionId:this.attached(),requestId:e,...t}).catch(()=>void 0)}dismissToast(e){this.setState(t=>{t.toasts=t.toasts.filter(t=>t.id!==e)})}async watch(e){this.setState(t=>{t.subagent={callId:e,durable:[],live:[]}}),await this.sendWatch(e,0)}unwatch(){let e=P(()=>this.state.subagent?.callId);e!==void 0&&(this.setState(e=>{e.subagent=void 0}),this.client.send({type:`unwatch_subagent`,callId:e}).catch(()=>void 0))}async sendWatch(e,t){try{let n=await this.client.send({type:`watch_subagent`,sessionId:this.state.sessionId,callId:e,fromSeq:t});if(!n.success)throw Error(n.error??`the server refused the watch`)}catch(t){this.setState(n=>{n.subagent?.callId===e&&(n.subagent=void 0),n.error=t.message})}}async pickFiles(e,t=Jh){return(await this.client.send({type:`pick_files`,sessionId:this.state.sessionId,query:e,limit:t}).catch(()=>void 0))?.items??[]}async pickCommands(e,t=Yh){let n=await this.client.send({type:`pick_commands`,sessionId:this.state.sessionId,query:e,limit:t}).catch(()=>void 0);return dh(e,[...Zh,...n?.items??[]],{limit:t})}async listDirectory(e){let t=await this.client.send({type:`list_dirs`,path:e});if(!t.success||!t.directory)throw Error(t.error??`could not read ${e}`);return t.directory}async createDirectory(e){let t=await this.client.send({type:`create_dir`,path:e});if(!t.success)throw Error(t.error??`could not create ${e}`)}async listBranches(){let e=await this.client.send({type:`list_branches`,sessionId:this.attached()});if(!e.success||!e.branches)throw Error(e.error??`could not read the branches`);return e.branches}async listChanges(e){let t=await this.client.send({type:`list_changes`,sessionId:this.attached(),base:e});if(!t.success||!t.changes)throw Error(t.error??`could not read the changes`);return t.changes}async fileDiff(e,t){let n=await this.client.send({type:`file_diff`,sessionId:this.attached(),base:t,path:e});if(!n.success||!n.fileDiff)throw Error(n.error??`could not diff ${e}`);return n.fileDiff}async readLines(e,t,n){let r=await this.client.send({type:`read_lines`,sessionId:this.attached(),base:t,path:e,spans:n});if(!r.success||!r.fileLines)throw Error(r.error??`could not read ${e}`);return r.fileLines}async commit(e,t){let n=await this.client.send({type:`commit`,sessionId:this.attached(),message:e,paths:t});if(!n.success||!n.commit)throw Error(n.error??`git refused the commit`);return n.commit.sha}async refreshGit(e=!1){let t=this.attached();t!==``&&await this.client.send({type:`refresh_git`,sessionId:t,fetch:e}).catch(()=>void 0)}checkout(e){return this.runGit({type:`checkout`,sessionId:this.attached(),branch:e})}pull(){return this.runGit({type:`pull`,sessionId:this.attached()})}push(){return this.runGit({type:`push`,sessionId:this.attached()})}attached(){return P(()=>this.state.sessionId)}runGit(e){return this.demand(e,`git refused the operation`)}async demand(e,t){let n=await this.client.send(e);if(!n.success)throw Error(n.error??t)}async listSessions(e={}){let t=await this.client.send({type:`list_sessions`,...e.cwd===void 0?{}:{cwd:e.cwd},...e.perProject===void 0?{}:{perProject:e.perProject},...e.limit===void 0?{}:{limit:e.limit},...e.archived===!0?{archived:!0}:{}}).catch(()=>void 0),n=t?.sessions??[];this.setState(e=>{for(let t of n)e.activity[t.sessionId]=t.status??`idle`,this.seed(e,`unread`,t.sessionId,t.unread??!1),this.seed(e,`archived`,t.sessionId,t.archived===!0),this.guessed.has(`names:${t.sessionId}`)||(e.names[t.sessionId]=t.named===!0?t.title??null:null),t.title!==void 0&&delete e.openings[t.sessionId];for(let n of t?.projects??[])this.seed(e,`pinned`,n.cwd,n.pinned===!0),this.seed(e,`expanded`,n.cwd,n.expanded===!0),this.guessed.has(`labels:${n.cwd}`)||(e.labels[n.cwd]=n.label??null),this.guessed.has(`pinned:${n.cwd}`)||(n.pinRank===void 0?delete e.pinRank[n.cwd]:e.pinRank[n.cwd]=n.pinRank)});let r=this.state.unwritten;return r&&n.some(({sessionId:e})=>e===r.sessionId)&&this.drafts.setUnwritten(void 0),{sessions:n,projects:t?.projects??[]}}seed(e,t,n,r){this.guessed.has(`${t}:${n}`)||(e[t][n]=r)}async searchSessions(e,t={}){let n=await this.client.send({type:`search_sessions`,query:e,...t.cwd===void 0?{}:{cwd:t.cwd},...t.archived===void 0?{}:{archived:t.archived},...t.limit===void 0?{}:{limit:t.limit}});if(!n.success)throw Error(n.error??`the search was refused`);return{hits:n.hits??[],dropped:n.dropped??[],scanned:n.scanned??0}}unwrittenSummary(){return this.drafts.unwrittenSummary()}localTitle(e){return this.drafts.localTitle(e)}draftText(e){return this.drafts.draftText(e)}attachmentsOf(e){return this.state.attachments[e]??[]}async attachFile(e){let t=this.state.sessionId,n=new FormData;n.append(`file`,e,e.name);let r=await fetch(`${this.client.httpUrl}/upload?session=${encodeURIComponent(t)}`,{method:`POST`,body:n}),i=await r.json();if(!r.ok)throw Error(i.error??`upload failed: ${r.status}`);let a={id:i.id,url:this.absolute(i.url),isImage:i.isImage,name:e.name};return this.setState(e=>{e.attachments[t]=[...e.attachments[t]??[],a]}),a}detachFile(e,t){this.setState(n=>{let r=(n.attachments[e]??[]).filter(e=>e.id!==t);r.length===0?delete n.attachments[e]:n.attachments[e]=r})}setDraftText(e){this.drafts.setDraftText(e)}listModels(){return this.catalogue??=this.client.send({type:`list_models`}).then(e=>({models:e.models??[],thinkingLevels:e.thinkingLevels??[]})).catch(()=>(this.catalogue=void 0,{models:[],thinkingLevels:[]})),this.catalogue}async setModel(e){await this.set(`set_model`,e)}async setThinking(e){await this.set(`set_thinking`,e)}async cycleThinking(){let{thinkingLevels:e}=await this.listModels(),t=e[(e.indexOf(this.state.thinking)+1)%e.length];t!==void 0&&await this.setThinking(t)}listExtensions(){return this.roster??=this.client.send({type:`list_extensions`}).then(e=>{if(!e.success)throw Error(e.error??`could not read the extensions`);return e.extensions??[]}).catch(e=>{throw this.roster=void 0,e}),this.roster}setExtension(e,t){return this.demand({type:`set_extension`,extensionId:e,value:t},`the server refused the change`)}isUnread(e){return this.state.unread[e]??!1}isArchived(e){return this.state.archived[e]??!1}isPinned(e){return this.state.pinned[e]??!1}pinOrder(){return Object.keys(this.state.pinned).filter(e=>this.isPinned(e)).sort((e,t)=>this.pinRankOf(e)-this.pinRankOf(t))}pinRankOf(e){return this.state.pinRank[e]??2**53-1}isExpanded(e){return this.state.expanded[e]??!1}projectLabel(e){return this.state.labels[e]??void 0}async renameProject(e,t){let n=P(()=>this.state.labels[e]);await this.guess(`labels:${e}`,n=>{n.labels[e]=t},t=>{n===void 0?delete t.labels[e]:t.labels[e]=n},{type:`set_project_label`,cwd:e,value:t},`the server refused the name`)}setExpanded(e,t){return this.flag({type:`set_project_expanded`,cwd:e,value:t},`expanded`,e,t,`the server refused the fold`)}sessionName(e){return this.state.names[e]??void 0}async rename(e,t){let n=P(()=>this.state.names[e]);await this.guess(`names:${e}`,n=>{n.names[e]=t},t=>{n===void 0?delete t.names[e]:t.names[e]=n},{type:`set_session_name`,sessionId:e,value:t},`the server refused the name`)}setArchived(e,t){return this.flag({type:`set_session_archived`,sessionId:e,value:t},`archived`,e,t,`the server refused the change`)}markUnread(e,t){return this.flag({type:`set_session_unread`,sessionId:e,value:t},`unread`,e,t,`the server refused the mark`)}setPinned(e,t){return this.flag({type:`set_project_pinned`,cwd:e,value:t},`pinned`,e,t,`the server refused the pin`)}async movePin(e,t){let n=[...this.pinOrder()],r=n.indexOf(e),i=r+t,a=n[r],o=n[i];if(a===void 0||o===void 0)return;n[r]=o,n[i]=a;let s={...this.state.pinRank};this.setState(e=>{e.pinRank[a]=i,e.pinRank[o]=r});try{await this.demand({type:`set_pin_order`,order:n},`the server refused the order`)}catch(e){throw this.setState(e=>{e.pinRank=s}),e}}async flag(e,t,n,r,i){let a=P(()=>this.state[t][n]);await this.guess(`${t}:${n}`,e=>{e[t][n]=r},e=>{e[t][n]=a??!1},e,i)}async guess(e,t,n,r,i){this.guessed.add(e),this.setState(t);try{await this.demand(r,i)}catch(e){throw this.setState(n),e}finally{this.guessed.delete(e)}}async set(e,t){this.isHeld()||await this.client.send({type:e,sessionId:this.state.sessionId,value:t}).catch(()=>void 0)}async switchTo(e){e!==this.state.sessionId&&await this.attach({sessionId:e})}async newSession(){let e=this.state.unwritten;if(e&&!e.sent&&this.drafts.openingText(e)===void 0){await this.switchTo(e.sessionId).catch(async()=>{await this.restart(e)});return}await this.startDraft(``)}async openDirectory(e){let t=this.state.unwritten;if(t&&!t.sent&&t.sessionId===this.state.sessionId){await this.restart(t,e);return}await this.startDraft(``,e)}async restart(e,t=e.cwd){let n=this.drafts.takeDraft(e.sessionId);try{await this.startDraft(n,t)}catch(t){throw this.drafts.putDraft(e.sessionId,n),t}}async startDraft(e,t){let n=this.state.sessionId,r=t??this.state.cwd;this.drafts.claimed=e;try{await this.attach({...r===``?{}:{cwd:r},...n===``?{}:{like:n}})}catch(e){throw this.drafts.claimed=void 0,e}}async attach(e){this.setState(e=>{e.loading=!0});try{let t=await this.client.attachTo(e);if(!t.success)throw Error(t.error??`attach was refused`)}catch(e){throw this.setState(t=>{t.loading=!1,t.error=e.message}),e}}get httpUrl(){return this.client.httpUrl}absolute(e){return e.startsWith(`/`)?`${this.httpUrl}${e}`:e}toAbsolute=e=>this.absolute(e);ingest(e){let t=Mh(e,this.toAbsolute);if(this.update.ingest(t),hh(t)){this.setState(e=>{kh(e,t)});return}switch(t.type){case`attached`:{let e=this.state.sessionId;this.setState(e=>{e.sessionId!==t.sessionId&&(e.durable=[],e.optimistic=[],e.agent=e.activity[t.sessionId]??`idle`,e.writable=!0,e.heldBy=void 0,e.turnElapsedMs=void 0,e.loading=t.head>0),e.notices=[],e.toasts=[],e.requests=[],e.sessionId=t.sessionId,e.cwd=t.cwd,e.pimVersion=t.pimVersion,e.piVersion=t.piVersion,e.live=[],e.error=void 0}),this.drafts.claim(t.sessionId,t.cwd),this.rewatch(e,t.sessionId);return}case`message_start`:case`message_retire`:case`text_delta`:case`thinking_delta`:case`tool_call`:case`tool_update`:case`tool_end`:this.setState(e=>{wh(e,t)});return;case`subagent_events`:this.setState(e=>{let n=e.subagent;if(n?.callId===t.callId)for(let e of t.events)Dh(n,Mh(e,this.toAbsolute))});return;case`picker_invalidate`:this.files.refreshRelative();return;case`ui_notice`:this.setState(e=>{let n={id:t.id,severity:t.severity,text:t.text,...t.command===void 0?{}:{command:t.command}};n.command===void 0?e.toasts.push(n):e.notices.push(n)});return;case`ui_request`:this.setState(e=>{e.requests.push(t)});return;case`ui_request_done`:this.setState(e=>{e.requests=e.requests.filter(e=>e.requestId!==t.requestId)});return;case`session_activity`:this.setState(e=>{e.activity[t.sessionId]=t.status});return;case`session_read`:this.setState(e=>{e.unread[t.sessionId]=!1});return;case`session_meta`:this.setState(e=>{t.name!==void 0&&(e.names[t.sessionId]=t.name),t.archived!==void 0&&(e.archived[t.sessionId]=t.archived),t.unread!==void 0&&(e.unread[t.sessionId]=t.unread)});return;case`project_meta`:this.setState(e=>{t.pinned!==void 0&&(e.pinned[t.cwd]=t.pinned),t.expanded!==void 0&&(e.expanded[t.cwd]=t.expanded),t.label!==void 0&&(e.labels[t.cwd]=t.label)});return;case`pins_changed`:this.setState(e=>{e.pinRank=Object.fromEntries(t.order.map((e,t)=>[e,t]))});return;case`sessions_changed`:this.setState(e=>{e.catalogue+=1});return;case`extensions_changed`:this.roster=void 0,this.setState(e=>{e.extensions+=1});return;case`session_state`:this.setState(e=>{e.loading=!1,e.cwd=t.cwd,e.model=t.model,e.modelLabel=t.modelLabel??t.model,e.thinking=t.thinking,e.cost=t.cost,e.agent=t.status,e.writable=t.writable,e.repoBusy=t.repoBusy===!0,e.heldBy=t.heldBy,e.turnElapsedMs=t.turnElapsedMs,e.activity[e.sessionId]=t.status,e.contextPercent=t.contextPercent,e.contextWindow=t.contextWindow,e.branch=t.branch,e.dirtyCount=t.dirtyCount??0,e.ahead=t.ahead??0,e.behind=t.behind??0,e.repoRevision=t.repoRevision??``,t.status===`idle`&&(e.live=[])});return;case`error`:this.setState(e=>{e.error=t.message});return;default:return}}rewatch(e,t){let n=this.state.subagent;if(n){if(e!==t){this.setState(e=>{e.subagent=void 0});return}this.sendWatch(n.callId,0)}}rollback(e){this.setState(t=>{e.opened!==void 0&&delete t.openings[e.opened];let n=t.optimistic.find(t=>t.id===e.id);if(n===void 0)return;let r=Xh(n.text,e.text);if(r===``){t.optimistic=t.optimistic.filter(t=>t.id!==e.id);return}n.text=r;let i=new Set(e.attachments.map(e=>e.url)),a=(n.attachments??[]).filter(e=>!i.has(e.url));a.length===0?delete n.attachments:n.attachments=a})}dropQueued(){this.setState(e=>{e.optimistic=e.optimistic.filter(e=>!e.queued)})}},$h=K(`<span class=whitespace-pre-wrap>`),eg={success:``,warning:`text-amber-400`,error:`text-rose-400`};function tg(e){let t=()=>e.update.state,n=()=>{let e=t().notice;return e===void 0?``:eg[e.tone]};return B(H,{get when(){return G(()=>!t().dismissed)()&&(t().pending||t().notice!==void 0)},get children(){return B($p,{get class(){return`absolute top-3 z-50 ${Qp(e.desktop)} ${n()}`},dismissLabel:`Dismiss notification`,onDismiss:()=>e.update.dismiss(),get children(){var e=$h();return Z(e,(()=>{var e=G(()=>!!t().pending);return()=>e()?t().label:t().notice?.text})()),e}})}})}var ng=K(`<div class="flex items-center gap-2 border-b border-neutral-700 p-3"><button type=button aria-label="Parent directory"title="Parent directory (Alt+↑)"><span class="i-griddy-icons:arrow-up size-4"aria-hidden=true></span></button><input type=text autocapitalize=off autocomplete=off aria-label="Directory path">`),rg=K(`<ul role=listbox class="min-h-0 flex-1 overflow-y-auto p-1 pr-[calc(0.25rem-var(--scrollbar))] text-sm"><!><!>`),ig=K(`<div class="flex shrink-0 items-center justify-end border-t border-neutral-700 p-3 pb-[max(0.75rem,env(safe-area-inset-bottom))]"><button type=button aria-label="Start a new session in this directory"title="Start a new session in this directory (Ctrl+Enter)">New Session`),ag=K(`<div class="font-bold leading-[--line]">Choose Directory`),og=K(`<li class="px-2 py-1 text-neutral-500">`),sg=K(`<li role=option><span aria-hidden=true></span><span class="min-w-0 truncate">`);function cg(e){let t=vs(_s),[n,r]=R(``),[i,a]=R(),[o,s]=R(``),[c,l]=R(``),u,d,f=0,p=()=>e.store.state.cwd,m=()=>/^[/~]/.test(n())?n().lastIndexOf(`/`):-1,h=L(()=>{let e=m();return e<0?p():n().slice(0,e)||`/`}),g=()=>n().slice(m()+1),_=()=>{let e=i();return e?.asked===h()?e.listing:void 0};z(()=>e.open,e=>{e&&(r(`${P(p)}/`),s(``),l(``),P(t)&&u&&u.setSelectionRange(0,u.value.length))}),z(()=>({open:e.open,path:h(),store:e.store}),({open:e,path:t,store:n})=>{let r=++f;e&&n.listDirectory(t).then(e=>{r===f&&(a({asked:t,listing:e}),s(``))},e=>{r===f&&(a(void 0),s(e.message))})});let v=e=>`${h().replace(/\/$/,``)}/${e}`,y=L(()=>{let e=g();return e===``?void 0:_()?.entries.find(t=>t.name===e)?.path}),b=L(()=>{let e=g().toLowerCase(),t=e.startsWith(`.`);return[...(_()?.entries??[]).filter(n=>(t||!n.name.startsWith(`.`))&&n.name.toLowerCase().includes(e)).map(e=>({path:e.path,label:e.name,create:!1})),...g()!==``&&y()===void 0?[{path:v(g()),label:`New folder “${g()}”`,create:!0}]:[]]}),x=ds({count:()=>b().length,open:()=>e.open,onSelect:e=>{let t=b()[e];t&&w(t)},onDismiss:e.onClose});rs(()=>d,x.activeIndex,()=>e.open),z(()=>({text:n(),open:e.open}),()=>{x.setActiveIndex(0)});let S=L(()=>g()===``?_()?.path:y()),ee=t=>{e.onClose(),e.store.openDirectory(t).catch(()=>void 0)},C=e=>{l(``),r(`${e}/`)},te=()=>{let e=_()?.parent;return e!==void 0&&(C(e),!0)},w=t=>{if(!t.create){C(t.path);return}e.store.createDirectory(t.path).then(()=>{C(t.path)},e=>{l(e.message)})},ne=()=>c()||o()||(b().length===0?`Nothing to open in here.`:``);return B(Fc,{get open(){return e.open},get onClose(){return e.onClose},label:`Choose Directory`,size:`column`,onKeyDown:e=>{if(e.key===`Enter`&&(e.ctrlKey||e.metaKey)){e.preventDefault();let t=S();t!==void 0&&ee(t);return}if((e.altKey||e.metaKey)&&e.key===`ArrowUp`){te()&&e.preventDefault();return}x.onKeyDown(e)},get header(){return ag()},get children(){return B(H,{get when(){return e.open},get children(){return[(()=>{var e=ng(),i=e.firstChild,a=i.nextSibling;return i.$$click=()=>{te()},a.$$input=e=>{l(``),r(e.currentTarget.value)},X(()=>e=>{u=e},a),W(()=>({e:_()?.parent===void 0,t:`${Fo} disabled:opacity-40`,a:n(),o:t(),i:Ro}),({e,t,a:n,o:r,i:o},s)=>{e!==s?.e&&J(i,`disabled`,e),Y(i,t,s?.t),a.value=n??``,r!==s?.o&&J(a,`autofocus`,r),Y(a,o,s?.i)}),e})(),(()=>{var e=rg(),t=e.firstChild,n=t.nextSibling;return X(()=>e=>{d=e},e),Z(e,B(H,{get when(){return ne()},children:e=>(()=>{var t=og();return Z(t,e),t})()}),t),Z(e,B(V,{get each(){return b()},children:(e,t)=>{let n=()=>t()===x.activeIndex();var r=sg(),i=r.firstChild,a=i.nextSibling;return r.$$click=()=>{w(e)},r.$$mousemove=()=>{x.setActiveIndex(t())},Z(a,()=>e.label),W(()=>({e:t(),t:n()?`true`:`false`,a:`flex cursor-pointer items-center gap-2 rounded-lg px-2 py-1 ${n()?`${qo} text-neutral-50`:``}`,o:`size-4 shrink-0 ${e.create?`i-griddy-icons:plus`:`i-griddy-icons:folder`}`}),({e,t,a:n,o:a},o)=>{e!==o?.e&&J(r,`data-index`,e),t!==o?.t&&J(r,`aria-selected`,t),Y(r,n,o?.a),Y(i,a,o?.o)}),r}}),n),e})(),(()=>{var e=ig(),t=e.firstChild;return t.$$click=()=>{let e=S();e!==void 0&&ee(e)},W(()=>({e:S()===void 0,t:Vo}),({e,t:n},r)=>{e!==r?.e&&J(t,`disabled`,e),Y(t,n,r?.t)}),e})()]}})}})}q([`click`,`input`,`mousemove`]);var lg=K(`<div class="relative flex shrink-0 items-center"><button type=button aria-haspopup=listbox><span class="i-griddy-icons:more-horizontal size-5"aria-hidden=true>`),ug=120;function dg(e){let[t,n]=R(void 0),r=L(()=>e.items.map(e=>({label:e.label,...e.disabled===!0?{disabled:!0}:{}}))),i=t=>{let n=e.items[t];n?.disabled!==!0&&(a.close(),n?.onSelect())},a=bs({onOpen:()=>{o.setActiveIndex(-1)}}),o=ds({count:()=>e.items.length,open:a.open,onSelect:i,onDismiss:a.close,enabled:t=>e.items[t]?.disabled!==!0});e.control?.({open:e=>{P(a.open)||(n(e),a.toggle())}});var s=lg(),c=s.firstChild,l=a.root;typeof l==`function`||Array.isArray(l)?X(()=>l,s):a.root=s,c.$$keydown=e=>{o.onKeyDown(e)},c.$$click=()=>{n(void 0),a.toggle()};var u=a.trigger;return typeof u==`function`||Array.isArray(u)?X(()=>u,c):a.trigger=c,Z(s,B(H,{get when(){return a.open()},get children(){return B(hs,{get open(){return a.open()},get anchor(){return a.anchor},at:t,place:`below`,min:ug,get items(){return r()},get activeIndex(){return o.activeIndex()},get onActivate(){return o.setActiveIndex},onLeave:()=>{o.setActiveIndex(-1)},onSelect:i})}}),null),W(()=>({e:a.open()?`true`:`false`,t:e.label,a:e.label,o:`${Fo} sr-only focus:not-sr-only focus-visible:not-sr-only`}),({e,t,a:n,o:r},i)=>{e!==i?.e&&J(c,`aria-expanded`,e),t!==i?.t&&J(c,`aria-label`,t),n!==i?.a&&J(c,`title`,n),Y(c,r,i?.o)}),s}q([`click`,`keydown`]);var fg=450,pg=10;function mg(e){let t,n,r=!1,i=()=>{t!==void 0&&(clearTimeout(t),t=void 0),n=void 0};return bn(i),{swallowed:()=>{let e=r;return r=!1,e},handlers:{onContextMenu:t=>{t.preventDefault(),e({x:t.clientX,y:t.clientY})},onPointerDown:i=>{if(r=!1,i.pointerType===`mouse`)return;let a={x:i.clientX,y:i.clientY};n=a,t=setTimeout(()=>{t=void 0,r=!0,e({x:a.x,y:a.y+pg})},fg)},onPointerMove:e=>{n!==void 0&&(Math.abs(e.clientX-n.x)>pg||Math.abs(e.clientY-n.y)>pg)&&i()},onPointerUp:i,onPointerCancel:i}}}var hg=K(`<div class="flex h-full flex-col bg-neutral-950"><div class="flex h-12 shrink-0 items-center justify-between gap-2 border-b border-neutral-700 px-3"><div class="flex items-center gap-2"><h1 class=shrink-0><img src=/wordmark.svg alt=PIM class="block h-5"></h1><span class="rounded-full bg-neutral-850 px-2 py-0.5 text-xs text-neutral-350"></span></div><div class="flex shrink-0 items-center"><button type=button aria-label="Search sessions"title="Search sessions"><span class="i-griddy-icons:search size-5"></span></button><button type=button aria-label=Settings title=Settings><span class="i-griddy-icons:settings size-5"></span></button></div></div><nav aria-label=Sessions class="min-h-0 flex-1 space-y-1 overflow-y-auto py-2"></nav><div class="shrink-0 border-t border-neutral-750 p-2"><button type=button class="flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-sm text-neutral-350 hover:bg-neutral-900 hover:text-neutral-100"><span aria-hidden=true></span></button></div><!>`),gg=K(`<p role=alert class="shrink-0 border-b border-neutral-750 px-3 py-2 text-xs text-rose-400">`),_g=K(`<button type=button>New session`),vg=K(`<div class="space-y-3 px-3 py-2"><p class="text-sm text-neutral-500">`),yg=K(`<li><button type=button class="w-full rounded-lg px-3 py-1 text-left text-sm text-neutral-500 hover:text-neutral-300">Load more…`),bg=K(`<div class="group min-w-0"><!><!>`),xg=K(`<span class="flex min-w-0 flex-1 items-center gap-2"><!><!>`),Sg=K(`<div class="group/head ml-3 mr-3 mt-2 flex items-center gap-2.4 py-0.5 text-sm text-neutral-350"><span class="flex shrink-0 items-center"><button type=button class="flex shrink-0 items-center px-2 text-neutral-500 hover:text-neutral-100"><span class="i-griddy-icons:plus size-4"aria-hidden=true>`),Cg=K(`<span class="i-griddy-icons:pin size-3.5 shrink-0 rotate-45 text-neutral-400"aria-label="Pinned project">`),wg=K(`<h3 class="min-w-0 flex-1"><button><span></span><!>`),Tg=K(`<span aria-hidden=true>`),Eg=K(`<ul><!><!>`),Dg=K(`<li><!><!>`),Og=K(`<span class="i-griddy-icons:edit size-3.5 shrink-0 text-amber-300"aria-hidden=true title="Unsent draft">`),kg=K(`<span class="size-1.5 shrink-0 rounded-full bg-indigo-400"aria-hidden=true>`),Ag=K(`<button type=button><span class="min-w-0 flex-1 truncate"></span><!><!>`),jg=K(`<span class="shrink-0 font-light text-neutral-400">`),Mg=K(`<input type=text autocapitalize=off autocomplete=off>`),Ng=2**53-1,Pg=10,Fg=`min-w-0 flex-1 rounded-lg px-3 py-2 text-sm`,Ig=`-ml-2 min-w-0 flex-1 rounded-lg px-2 py-0 text-sm font-bold text-neutral-50`;function Lg(e){return e.listed?.settledAt??Ng}function Rg(e,t){return e.pinned===t.pinned?e.pinned?e.rank-t.rank:t.settledAt-e.settledAt:e.pinned?-1:1}function zg(e){let[t,n]=R({}),[r,i]=R(`live`),[a,o]=R({}),[s,c]=R(),[l,u]=R(),[d,f]=R(!1),[p,m]=R(``),[h,g]=R(Date.now()),_=setInterval(()=>{g(Date.now())},1e3);bn(()=>{clearInterval(_)});let v=0,y=(e,t,r)=>{let i=++v,a=t===`archived`?{archived:!0}:{},o=Object.entries(r);Promise.all([e.listSessions({...a,perProject:Pg}),Promise.all(o.map(([t,n])=>e.listSessions({...a,cwd:t,perProject:n,limit:n})))]).then(([e,a])=>{if(i!==v)return;let s={};for(let[e,[t,n]]of o.entries())(a[e]?.sessions.length??0)<n&&(s[t]=!0);n(n=>({...n,[t]:{sessions:[...e.sessions.filter(e=>r[e.cwd]===void 0),...a.flatMap(e=>e.sessions)].sort((e,t)=>t.settledAt-e.settledAt),projects:e.projects,ended:s}}))})};z(()=>({store:e.store,view:r(),pages:a(),sessionId:e.store.state.sessionId,connection:e.store.state.connection,catalogue:e.store.state.catalogue,running:e.store.runningIds()}),(e,t)=>{(t===void 0||t.view!==e.view||t.pages!==e.pages||t.sessionId!==e.sessionId||t.catalogue!==e.catalogue||e.connection===`open`&&t.connection!==`open`||t.running.some(t=>!e.running.includes(t)))&&y(e.store,e.view,e.pages)});let b=L(()=>e.store.unwrittenSummary(),{equals:(e,t)=>e?.sessionId===t?.sessionId&&e?.cwd===t?.cwd}),x=L(()=>t()[r()]),S=L(()=>{let t=r()===`archived`,n=(x()?.sessions??[]).filter(n=>e.store.isArchived(n.sessionId)===t).map(e=>({sessionId:e.sessionId,cwd:e.cwd,listed:e})),i=b();return t||!i||n.some(e=>e.sessionId===i.sessionId)?n:[{...i,listed:void 0},...n]}),ee=L(()=>{let t=new Map((x()?.projects??[]).map(e=>[e.cwd,e.count])),n=new Map;for(let e of S()){let t=n.get(e.cwd);t===void 0?n.set(e.cwd,[e]):t.push(e)}return[...n].map(([n,r])=>({cwd:n,rows:r,count:Math.max(t.get(n)??0,r.length),settledAt:Math.max(...r.map(Lg)),pinned:e.store.isPinned(n),rank:e.store.pinRankOf(n)})).sort(Rg)}),C=t=>e.store.isExpanded(t),te=t=>{T(()=>e.store.setExpanded(t,!C(t)))},w=e=>x()?.ended[e.cwd]===void 0&&e.count>e.rows.length,ne=t=>e.store.sessionName(t.sessionId)??t.listed?.title??e.store.localTitle(t.sessionId)??t.sessionId.slice(0,8),re=t=>e.store.projectLabel(t)??Uc(t),ie=t=>{e.onNavigate?.(),t().catch(()=>void 0)},ae=t=>{ie(()=>e.store.switchTo(t.sessionId))},oe=()=>{c(void 0)},T=e=>{m(``),e().catch(e=>{m(e.message)})},se=(t,n)=>{c(void 0);let i=n.trim();i!==ne(t).trim()&&T(async()=>{await e.store.rename(t.sessionId,i===``?null:i),y(e.store,P(r),P(a))})},ce=(t,n)=>{u(void 0);let r=n.trim();r!==re(t).trim()&&T(()=>e.store.renameProject(t,r===``?null:r))},le=t=>{let n=t.sessionId,r=e.store.isUnread(n),i=e.store.isArchived(n);return[{label:`Rename`,onSelect:()=>{m(``),c(n)}},{label:r?`Mark read`:`Mark unread`,onSelect:()=>{T(()=>e.store.markUnread(n,!r))}},{label:i?`Unarchive`:`Archive`,onSelect:()=>{T(()=>e.store.setArchived(n,!i))}}]},E=t=>{let n=e.store.isPinned(t),r=e.store.pinOrder(),i=r.indexOf(t);return[{label:`Rename project`,onSelect:()=>{m(``),u(t)}},{label:n?`Unpin project`:`Pin project`,onSelect:()=>{T(()=>e.store.setPinned(t,!n))}},...n?[{label:`Move up`,disabled:i<=0,onSelect:()=>{T(()=>e.store.movePin(t,-1))}},{label:`Move down`,disabled:i===-1||i===r.length-1,onSelect:()=>{T(()=>e.store.movePin(t,1))}}]:[]]};var ue=hg(),de=ue.firstChild,D=de.firstChild,O=D.firstChild.nextSibling,fe=D.nextSibling.firstChild,pe=fe.nextSibling,me=de.nextSibling,he=me.nextSibling,k=he.firstChild,ge=k.firstChild,_e=he.nextSibling;return Z(O,()=>`v${e.store.state.pimVersion??`0.12.1`}`),fe.$$click=()=>e.onOpenSearch?.(),pe.$$click=()=>e.onOpenSettings?.(),Z(ue,B(H,{get when(){return p()},children:e=>(()=>{var t=gg();return Z(t,e),t})()}),me),Z(me,B(H,{get when(){return S().length>0},get fallback(){return B(H,{get when(){return x()!==void 0},get children(){var e=vg(),t=e.firstChild;return Z(t,()=>r()===`archived`?`Nothing archived.`:`No sessions yet.`),Z(e,B(H,{get when(){return r()===`live`},get children(){var e=_g();return e.$$click=()=>{f(!0)},W(()=>Vo,(t,n)=>{Y(e,t,n)}),e}}),null),e}})},get children(){return B(V,{get each(){return ee()},keyed:e=>e.cwd,children:t=>(()=>{var n=bg(),r=n.firstChild,i=r.nextSibling;return Z(n,B(Bg,{get cwd(){return t().cwd},get title(){return re(t().cwd)},get pinned(){return t().pinned},get open(){return C(t().cwd)},get editing(){return l()===t().cwd},get items(){return E(t().cwd)},onToggle:()=>{te(t().cwd)},onRename:e=>{ce(t().cwd,e)},onCancelRename:()=>{u(void 0)},onNew:()=>{T(()=>e.store.setExpanded(t().cwd,!0)),ie(()=>e.store.openDirectory(t().cwd))}}),r),Z(n,B(Hg,{get store(){return e.store},get rows(){return t().rows},get folded(){return!C(t().cwd)},get now(){return h()},get editing(){return s()},title:ne,items:le,onOpen:ae,onRename:se,onCancelRename:oe,get children(){return B(H,{get when(){return G(()=>!!C(t().cwd))()?w(t()):C(t().cwd)},get children(){var e=yg(),n=e.firstChild;return n.$$click=()=>{let e=t().cwd;o(t=>({...t,[e]:(t[e]??Pg)+Pg}))},e}})}}),i),n})()})}})),k.$$click=()=>{m(``),c(void 0),u(void 0),o({}),i(e=>e===`archived`?`live`:`archived`)},Z(k,()=>r()===`archived`?`Back to sessions`:`Archived`,null),Z(ue,B(cg,{get open(){return d()},get store(){return e.store},onClose:()=>{f(!1)}}),_e),W(()=>({e:e.store.state.piVersion?`pi ${e.store.state.piVersion}`:void 0,t:Fo,a:Fo,o:r()===`archived`?`true`:`false`,i:`size-4 ${r()===`archived`?`i-griddy-icons:arrow-left`:`i-griddy-icons:archive`}`}),({e,t,a:n,o:r,i},a)=>{e!==a?.e&&J(O,`title`,e),Y(fe,t,a?.t),Y(pe,n,a?.a),r!==a?.o&&J(k,`aria-pressed`,r),Y(ge,i,a?.i)}),ue}function Bg(e){let t,n=mg(e=>t?.open(e)),r=()=>Hc(e.cwd);var i=Sg(),a=i.firstChild,o=a.firstChild;return Z(i,B(H,{get when(){return e.editing},get fallback(){var t=wg(),i=t.firstChild,a=i.firstChild,o=a.nextSibling;return Ca(i,Ai({type:`button`,get"aria-expanded"(){return e.open?`true`:`false`},class:`flex w-full min-w-0 select-none items-center gap-2 text-left [-webkit-touch-callout:none]`,onClick:()=>{n.swallowed()||e.onToggle()}},()=>n.handlers),!0),Z(i,B(Vg,{get open(){return e.open}}),a),Z(a,()=>e.title),Z(i,B(H,{get when(){return e.pinned},get children(){return Cg()}}),o),W(()=>({e:{"truncate font-bold":!0,"text-neutral-50":e.open,"text-neutral-400 group-hover/head:text-neutral-200":!e.open},t:r()}),({e,t},n)=>{Y(a,e,n?.e),t!==n?.t&&J(a,`title`,t)}),t},get children(){var t=xg(),n=t.firstChild,i=n.nextSibling;return Z(t,B(Vg,{get open(){return e.open}}),n),Z(t,B(Wg,{get value(){return e.title},get label(){return`Rename ${r()}`},box:Ig,get onCommit(){return e.onRename},get onCancel(){return e.onCancelRename}}),i),t}}),a),ba(o,`click`,e.onNew,!0),Z(a,B(dg,{get label(){return`Project options for ${r()}`},get items(){return e.items},control:e=>{t=e}}),null),W(()=>({e:`New session in ${e.title}`,t:`New session in ${r()}`}),({e,t},n)=>{e!==n?.e&&J(o,`aria-label`,e),t!==n?.t&&J(o,`title`,t)}),i}function Vg(e){var t=Tg();return W(()=>({"i-griddy-icons:chevron-right-filled size-3 shrink-0 transition-transform":!0,"rotate-90 bg-neutral-200":e.open,"bg-neutral-500 group-hover/head:bg-neutral-200":!e.open}),(e,n)=>{Y(t,e,n)}),t}function Hg(e){let t=t=>t.sessionId===e.store.state.sessionId,n=()=>e.folded&&!e.rows.some(t);var r=Eg(),i=r.firstChild,a=i.nextSibling;return Z(r,B(V,{get each(){return e.rows},keyed:e=>e.sessionId,children:n=>B(Ug,{get store(){return e.store},get row(){return n()},get title(){return e.title(n())},get hidden(){return G(()=>!!e.folded)()?!t(n()):e.folded},get editing(){return e.editing===n().sessionId},get items(){return e.items(n())},get now(){return e.now},onOpen:()=>{e.onOpen(n())},onRename:t=>{e.onRename(n(),t)},get onCancelRename(){return e.onCancelRename}})}),i),Z(r,()=>e.children,a),W(()=>`ml-4.4 border-l border-neutral-700 pl-1 pr-3 pt-2 group-hover:border-neutral-500 ${n()?`hidden`:`flex flex-col gap-1`}`,(e,t)=>{Y(r,e,t)}),r}function Ug(e){let t,n=mg(e=>t?.open(e)),r=()=>e.row.sessionId===e.store.state.sessionId,i=()=>e.row.listed===void 0?void 0:Bc(e.row.listed.settledAt,e.now),a=()=>e.store.draftText(e.row.sessionId)!==``,o=()=>{let t=[e.title];if(a()&&t.push(`unsent draft`),e.store.isRunning(e.row.sessionId))t.push(`working`);else if(e.store.isUnread(e.row.sessionId))t.push(`unread`);else{let e=i();e!==void 0&&t.push(e)}return t.join(`, `)};var s=Dg(),c=s.firstChild,l=c.nextSibling;return Ca(s,Ai({get class(){return`group select-none [-webkit-touch-callout:none] ${e.hidden?`hidden`:`flex items-center`}`}},()=>n.handlers),!0),Z(s,B(H,{get when(){return e.editing},get fallback(){var t=Ag(),s=t.firstChild,c=s.nextSibling,l=c.nextSibling;return t.$$click=()=>{n.swallowed()||e.onOpen()},Z(s,()=>e.title),Z(t,B(H,{get when(){return a()},get children(){return Og()}}),c),Z(t,B(Vi,{get children(){return[B(Hi,{get when(){return e.store.isRunning(e.row.sessionId)},get children(){return B(Fs,{})}}),B(Hi,{get when(){return e.store.isUnread(e.row.sessionId)},get children(){return kg()}}),B(Hi,{get when(){return i()},children:e=>(()=>{var t=jg();return Z(t,e),t})()})]}}),l),W(()=>({e:o(),t:{[`${Fg} flex items-center gap-2 text-left`]:!0,"bg-neutral-850 font-bold text-neutral-100":r(),"text-neutral-300 hover:bg-neutral-900":!r()}}),({e,t:n},r)=>{e!==r?.e&&J(t,`aria-label`,e),Y(t,n,r?.t)}),t},get children(){return B(Wg,{get value(){return e.title},get label(){return`Rename ${e.title}`},box:Fg,get onCommit(){return e.onRename},get onCancel(){return e.onCancelRename}})}}),c),Z(s,B(H,{get when(){return e.row.listed!==void 0},get children(){return B(dg,{get label(){return`Options for ${e.title}`},get items(){return e.items},control:e=>{t=e}})}}),l),s}function Wg(e){let t,n=!1;En(()=>{t?.focus(),t?.setSelectionRange(0,t.value.length)});let r=()=>{!n&&t&&(n=!0,e.onCommit(t.value))};var i=Mg();return i.addEventListener(`blur`,r),i.$$keydown=t=>{if(t.key===`Enter`){t.preventDefault(),r();return}t.key===`Escape`&&(t.preventDefault(),n=!0,e.onCancel())},X(()=>n=>{t=n,n.value=P(()=>e.value)},i),W(()=>({e:e.label,t:`${e.box} ${Lo}`}),({e,t},n)=>{e!==n?.e&&J(i,`aria-label`,e),Y(i,t,n?.t)}),i}q([`click`,`keydown`]);var Gg=K(`<mark class="rounded-[2px] bg-indigo-500/25 text-indigo-300">`);function Kg(e){return B(V,{get each(){return qg(e.text,e.ranges)},children:e=>e.marked?(()=>{var t=Gg();return Z(t,()=>e.text),t})():e.text})}function qg(e,t){let n=[],r=0;for(let[i,a]of t){let t=Math.min(Math.max(i,r),e.length),o=Math.min(Math.max(a,t),e.length);o!==t&&(t>r&&n.push({text:e.slice(r,t),marked:!1}),n.push({text:e.slice(t,o),marked:!0}),r=o)}return r<e.length&&n.push({text:e.slice(r),marked:!1}),n}var Jg=K(`<p class="flex justify-center">`),Yg=K(`<p>`),Xg=K(`<li class="space-y-1 px-2 py-6 text-center text-neutral-400"><p>Search session titles and content`),Zg=K(`<span class="shrink-0 text-neutral-600"aria-hidden=true>·`),Qg=K(`<p class="shrink-0 border-b border-neutral-750 px-3 py-2 text-xs text-neutral-400">searched for <span class=text-neutral-100></span> — no results for <span class=italic>`),$g=K(`<li class="px-2 py-1 text-neutral-500">`),e_=K(`<li class="px-2 py-6">`),t_=K(`<ul role=listbox class="min-h-0 flex-1 space-y-0.5 overflow-y-auto p-2 pr-[calc(0.5rem-var(--scrollbar))] text-sm">`),n_=K(`<span class="flex items-center gap-1.5"><kbd class="rounded bg-neutral-850 px-1">Esc</kbd>Close`),r_=K(`<div class="flex shrink-0 items-center gap-4 border-t border-neutral-700 px-3 py-2 pb-[max(0.5rem,env(safe-area-inset-bottom))] text-xs text-neutral-500"><span class="ml-auto truncate">`),i_=K(`<div><span class="i-griddy-icons:search size-4 shrink-0 text-neutral-500"aria-hidden=true></span><input type=text autocapitalize=off autocomplete=off aria-label="Search query"placeholder="Enter search term">`),a_=K(`<span class="i-griddy-icons:archive size-3.5 shrink-0 text-neutral-500"role=img aria-label=Archived>`),o_=K(`<span class=shrink-0>`),s_=K(`<li role=option><button type=button class="flex w-full min-w-0 items-center gap-3 rounded-lg px-3 py-2 text-left"><span class="flex min-w-0 flex-1 flex-col"><span class="flex h-[--line] min-w-0 items-center gap-[1ch] text-sm text-neutral-400"><span class="truncate text-neutral-350"></span><!><span class=shrink-0></span><!></span><span class="h-[--line] truncate font-semibold leading-[--line] text-neutral-100"></span><span class="flex h-[--line] min-w-0 items-center gap-2 text-neutral-400"></span></span><span aria-hidden=true>`),c_=K(`<span class="i-griddy-icons:arrow-elbow-down-right size-3.5 shrink-0 text-neutral-600"aria-hidden=true>`),l_=K(`<span class=truncate>`),u_=K(`<span class="flex items-center gap-1.5"><span class="flex items-center gap-1">`),d_=K(`<kbd class="flex size-4 items-center justify-center rounded bg-neutral-850"><span aria-hidden=true>`),f_=2,p_=100;function m_(e){return`${so.count(e,`session`)}, including archived`}function h_(){var e=Jg();return Z(e,B(Fs,{})),e}function g_(e){var t=Xg();return t.firstChild,Z(t,B(H,{get when(){return e.ready},get fallback(){return B(h_,{})},get children(){var t=Yg();return Z(t,()=>m_(e.scanned)),t}}),null),t}function __(e){return[B(H,{get when(){return e.marks.cutHead},children:`…`}),B(Kg,{get text(){return e.marks.text},get ranges(){return e.marks.ranges}})]}function v_(e){return{text:e.text,ranges:e.ranges,...e.cutHead===!0?{cutHead:!0}:{}}}function y_(){return Zg()}function b_(e){let t=e.title===void 0?e.snippets[0]:void 0,n=e.title===void 0?t===void 0?{text:e.sessionId.slice(0,8),ranges:[]}:v_(t):{text:e.title,ranges:e.titleRanges},r=e.snippets.find(e=>!n.text.includes(e.text)),i=r===void 0?e.opening===void 0?void 0:{text:e.opening,ranges:[]}:v_(r);return{hit:e,heading:n,...i===void 0?{}:{said:i}}}function x_(e){let t=vs(_s),[n,r]=R(``),[i,a]=R(),[o,s]=R(0),[c,l]=R(!1),[u,d]=R(``),f,p,m=0;bn(()=>{clearTimeout(p)});let h=L(()=>n().trim()),g=e=>{s(e.scanned),l(!0),d(``)},_=e=>{d(e.message)};z(()=>({open:e.open,store:e.store}),({open:e,store:t})=>{e&&(r(``),d(``),t.searchSessions(``).then(g,_))}),z(()=>({open:e.open,query:h(),store:e.store,wait:e.debounceMs??p_}),({open:e,query:t,store:n,wait:r})=>{let i=++m;if(clearTimeout(p),!e||t.length<f_){a(void 0);return}p=setTimeout(()=>{n.searchSessions(t).then(e=>{i===m&&(a({asked:t,found:e}),g(e))},e=>{i===m&&(a(void 0),_(e))})},r)});let v=()=>{let e=i();return e?.asked===h()?e.found:void 0},y=L(()=>(v()?.hits??[]).map(b_)),b=L(()=>u()===``?h().length<f_?`prompt`:v()===void 0?`waiting`:y().length>0?`hits`:`empty`:`failed`),x=()=>v()?.dropped??[],S=()=>h().split(/\s+/).filter(e=>!x().includes(e.toLowerCase())).join(` `),ee=t=>{e.onClose(),e.onNavigate?.(),e.store.switchTo(t.sessionId).catch(()=>void 0)},C=ds({count:()=>y().length,open:()=>e.open,onSelect:e=>{let t=y()[e];t&&ee(t.hit)},onDismiss:e.onClose});return rs(()=>f,C.activeIndex,()=>e.open),B(Fc,{get open(){return e.open},get onClose(){return e.onClose},label:`Search Sessions`,size:`column`,get header(){var e=i_(),i=e.firstChild.nextSibling;return ba(i,`keydown`,C.onKeyDown,!0),i.$$input=e=>{r(e.currentTarget.value)},W(()=>({e:zo,t:n(),a:t(),o:Bo}),({e:t,t:n,a:r,o:a},o)=>{Y(e,t,o?.e),i.value=n??``,r!==o?.a&&J(i,`autofocus`,r),Y(i,a,o?.o)}),e},get children(){return B(H,{get when(){return e.open},get children(){return[B(H,{get when(){return x().length>0},get children(){var e=Qg(),t=e.firstChild.nextSibling,n=t.nextSibling.nextSibling;return Z(t,S),Z(n,()=>x().join(`, `)),e}}),(()=>{var t=t_();return X(()=>e=>{f=e},t),Z(t,B(Vi,{get children(){return[B(Hi,{get when(){return b()===`failed`},get children(){var e=$g();return Z(e,()=>`The search failed — ${u()}`),e}}),B(Hi,{get when(){return b()===`prompt`},get children(){return B(g_,{get ready(){return c()},get scanned(){return o()}})}}),B(Hi,{get when(){return b()===`waiting`},get children(){var e=e_();return Z(e,B(h_,{})),e}}),B(Hi,{get when(){return b()===`empty`},get children(){var e=$g();return Z(e,()=>`No matches in ${m_(o())}.`),e}}),B(Hi,{get when(){return b()===`hits`},get children(){return B(V,{get each(){return y()},children:(t,n)=>(()=>{var r=s_(),i=r.firstChild,a=i.firstChild,o=a.firstChild,s=o.firstChild,c=s.nextSibling,l=c.nextSibling,u=l.nextSibling,d=o.nextSibling,f=d.nextSibling,p=a.nextSibling;return r.$$mousemove=()=>{C.setActiveIndex(n())},i.$$click=()=>{ee(t.hit)},Z(s,()=>e.store.projectLabel(t.hit.cwd)??Uc(t.hit.cwd)),Z(o,B(H,{get when(){return t.hit.archived},get children(){return a_()}}),c),Z(o,B(y_,{}),l),Z(l,()=>Bc(t.hit.settledAt)),Z(o,B(H,{get when(){return t.hit.total>1},get children(){return[B(y_,{}),(()=>{var e=o_();return Z(e,()=>`${t.hit.total} matches`),e})()]}}),u),Z(d,B(__,{get marks(){return t.heading}})),Z(f,B(H,{get when(){return t.said},children:e=>[c_(),(()=>{var t=l_();return Z(t,B(__,{get marks(){return e()}})),t})()]})),W(()=>({e:n(),t:n()===C.activeIndex()?`true`:`false`,a:{"rounded-lg":!0,[qo]:n()===C.activeIndex()},o:{"i-griddy-icons:chevron-right size-4 shrink-0":!0,"text-neutral-300":n()===C.activeIndex(),"text-neutral-500":n()!==C.activeIndex()}}),({e,t,a:n,o:i},a)=>{e!==a?.e&&J(r,`data-index`,e),t!==a?.t&&J(r,`aria-selected`,t),Y(r,n,a?.a),Y(p,i,a?.o)}),r})()})}})]}})),t})(),B(H,{get when(){return b()===`hits`},get children(){var e=r_(),n=e.firstChild;return Z(e,B(H,{get when(){return t()},get children(){return[B(S_,{icons:[`i-griddy-icons:arrow-elbow-down-left`],verb:`Open`}),B(S_,{icons:[`i-griddy-icons:arrow-up`,`i-griddy-icons:arrow-down`],verb:`Move`}),n_()]}}),n),Z(n,()=>`${y().length} of ${o()} sessions`),e}})]}})}})}function S_(e){var t=u_(),n=t.firstChild;return Z(n,B(V,{get each(){return e.icons},children:e=>(()=>{var t=d_(),n=t.firstChild;return W(()=>`${e} size-3`,(e,t)=>{Y(n,e,t)}),t})()})),Z(t,()=>e.verb,null),t}q([`input`,`keydown`,`mousemove`,`click`]);var C_=`pim.settings`,w_=Ni(()=>!1),T_=class{state;setState;current;constructor(){this.current=E_();let[e,t]=Ri({...this.current});this.state=e,this.setState=t}gateway(){let e=this.current.serverUrl;return(e===``?void 0:k_(e))??D_()}insecure(){return location.protocol===`https:`&&this.gateway().startsWith(`ws:`)}setServerUrl(e){this.apply({...this.current,serverUrl:e.trim()})}setHideThinking(e){this.apply({...this.current,hideThinking:e})}setDiffSplit(e){this.apply({...this.current,diffSplit:e})}apply(e){this.current=e,this.setState(t=>{t.serverUrl=e.serverUrl,t.hideThinking=e.hideThinking,t.diffSplit=e.diffSplit});try{localStorage.setItem(C_,JSON.stringify(e))}catch{}}};function E_(){try{let e=JSON.parse(localStorage.getItem(C_)??`null`);return{serverUrl:typeof e?.serverUrl==`string`?e.serverUrl.trim():``,hideThinking:e?.hideThinking===!0,diffSplit:Ep.parse(e?.diffSplit)}}catch{return{serverUrl:``,hideThinking:!1,diffSplit:`auto`}}}function D_(){return`${location.protocol===`https:`?`wss:`:`ws:`}//${location.host}`}var O_={"http:":`ws:`,"https:":`wss:`,"ws:":`ws:`,"wss:":`wss:`};function k_(e){let t=location.protocol===`https:`,n=URL.parse(/^[a-z][a-z0-9+.-]*:\/\//i.test(e)?e:`${t?`wss`:`ws`}://${e}`),r=n&&O_[n.protocol];if(!n||r===void 0)return;let i=n.pathname===`/`?``:n.pathname.replace(/\/$/,``);return`${r}//${n.host}${i}`}var A_=K(`<span class="relative flex size-4 shrink-0 items-center justify-center"><input type=checkbox class="peer size-4 appearance-none rounded bg-neutral-850 ring-1 ring-neutral-700 outline-none hover:ring-neutral-600 checked:bg-indigo-400 checked:ring-0 checked:hover:bg-indigo-500 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-400 disabled:opacity-40 disabled:hover:ring-neutral-700"><span class="i-griddy-icons:check pointer-events-none absolute size-3 text-neutral-950 opacity-0 peer-checked:opacity-100"aria-hidden=true>`);function j_(e){var t=A_(),n=t.firstChild;return n.addEventListener(`change`,t=>{e.onChange(t.currentTarget.checked)}),W(()=>({e:e.checked,t:e.disabled===!0,a:e.label}),({e,t,a:r},i)=>{n.checked=e,t!==i?.t&&J(n,`disabled`,t),r!==i?.a&&J(n,`aria-label`,r)}),t}var M_=K(`<p class="flex items-center gap-2 text-sm text-neutral-500">Reading the extensions…`),N_=K(`<p class="text-sm text-neutral-500">No extensions are installed.`),P_=K(`<div class="flex items-start gap-2"><p class="min-w-0 flex-1 text-sm text-rose-400"></p><button type=button>Try again`),F_=K(`<div class=space-y-2><!><!>`),I_=K(`<h3 class="text-sm text-neutral-350">`),L_=K(`<span class="shrink-0 rounded-full bg-neutral-850 px-1.5 text-xs text-neutral-350">Project — read-only here`),R_=K(`<label><span class="flex h-[--line] shrink-0 items-center"></span><span class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5 text-sm"><span class="min-w-0 truncate">`),z_={user:`Installed`,project:`Project`};function B_(e){let[t,n]=R([]),[r,i]=R(!1),[a,o]=R(``),[s,c]=R([]),l=()=>{i(!0),o(``),e.store.listExtensions().then(e=>{n(e)},e=>{o(e.message)}).finally(()=>{i(!1)})};z(()=>e.store.state.extensions,()=>{l()});let u=(e,t)=>{n(n=>n.map(n=>n.id===e?{...n,enabled:t}:n))},d=L(()=>{let e=new Map;for(let n of t()){let t=e.get(n.group);t===void 0?e.set(n.group,[n]):t.push(n)}return[...e].map(([e,t])=>({title:z_[e],entries:t}))}),f=(t,n)=>{o(``),u(t.id,n),c(e=>[...e,t.id]),e.store.setExtension(t.id,n).catch(e=>{u(t.id,t.enabled),o(e.message)}).finally(()=>{c(e=>e.filter(e=>e!==t.id))})};return[B(H,{get when(){return G(()=>!!r())()?t().length===0:r()},get children(){var e=M_(),t=e.firstChild;return Z(e,B(Fs,{}),t),e}}),B(H,{get when(){return a()},children:e=>(()=>{var t=P_(),n=t.firstChild,r=n.nextSibling;return Z(n,e),r.$$click=l,W(()=>Ho,(e,t)=>{Y(r,e,t)}),t})()}),B(V,{get each(){return d()},children:e=>(()=>{var t=F_(),n=t.firstChild,r=n.nextSibling;return Z(t,B(H,{get when(){return e.title},children:e=>(()=>{var t=I_();return Z(t,e),t})()}),n),Z(t,B(V,{get each(){return e.entries},children:e=>B(V_,{entry:e,get busy(){return s().includes(e.id)},onChange:t=>{f(e,t)}})}),r),t})()}),B(H,{get when(){return G(()=>!(r()||a()!==``))()?t().length===0:!r()&&a()===``},get children(){return N_()}})]}function V_(e){let t=()=>!e.entry.writable;var n=R_(),r=n.firstChild,i=r.nextSibling,a=i.firstChild;return Z(r,B(j_,{get checked(){return e.entry.enabled},get disabled(){return e.busy||t()},get label(){return e.entry.label},get onChange(){return e.onChange}})),Z(a,()=>e.entry.label),Z(i,B(H,{get when(){return t()},get children(){return L_()}}),null),W(()=>`flex items-start gap-2 ${t()?``:`cursor-pointer`}`,(e,t)=>{Y(n,e,t)}),n}q([`click`]);var H_=K(`<form class="flex items-center gap-2"><input type=text autocapitalize=off autocomplete=off aria-label="Server address"placeholder="Enter URL"><button type=submit>Connect`),U_=K(`<button type=button>Use this device`),W_=K(`<p class="text-sm text-amber-400">This page is served over HTTPS, so the browser will block a plain <code>ws://</code> connection. Use an address this page can reach securely.`),G_=K(`<p class="text-sm text-neutral-500">Changing this reloads the page.`),K_=K(`<label class="flex w-fit cursor-pointer items-center gap-2 text-sm">Hide thinking blocks`),q_=K(`<button type=button><!><!>`),J_=K(`<p class="text-sm text-neutral-500">`),Y_=K(`<div class="min-h-0 space-y-[calc(var(--line)*1.5)] overflow-y-auto p-3"><!><!><!><!>`),X_=K(`<div class="font-bold leading-[--line]">Settings`),Z_=K(`<p class="flex items-center gap-1.5 text-sm text-neutral-350"><span aria-hidden=true></span><span class="min-w-0 truncate">`),Q_=K(`<section class=space-y-2><h2 class="text-xs font-bold uppercase tracking-widest text-neutral-500">`);function $_(e){let t=()=>e.settings.state.serverUrl,[n,r]=R(P(t));z(()=>e.open,e=>{e&&r(P(t))});let i=()=>e.store.update.state.stale,a=()=>e.store.runningIds().length,o=()=>e.store.update.state.pending,s=t=>{e.settings.setServerUrl(t),e.store.update.refresh()},c=()=>{if(i()){e.store.update.refresh();return}a()>0&&!window.confirm(`Restarting will stop ${so.count(a(),`running session`)}. Update and restart anyway?`)||e.store.reload(a()>0)};return B(Fc,{get open(){return e.open},get onClose(){return e.onClose},label:`Settings`,size:`narrow`,get header(){return X_()},get children(){return B(H,{get when(){return e.open},get children(){var t=Y_(),l=t.firstChild,u=l.nextSibling,d=u.nextSibling,f=d.nextSibling;return Z(t,B(tv,{title:`Server`,get children(){return[B(ev,{get store(){return e.store},get settings(){return e.settings}}),(()=>{var t=H_(),i=t.firstChild,a=i.nextSibling;return t.addEventListener(`submit`,e=>{e.preventDefault(),s(n())}),i.$$input=e=>{r(e.currentTarget.value)},W(()=>({e:n(),t:Ro,a:Vo,o:n().trim()===e.settings.state.serverUrl}),({e,t,a:n,o:r},o)=>{i.value=e??``,Y(i,t,o?.t),Y(a,n,o?.a),r!==o?.o&&J(a,`disabled`,r)}),t})(),B(H,{get when(){return e.settings.state.serverUrl!==``},get children(){var e=U_();return e.$$click=()=>{s(``)},W(()=>Ho,(t,n)=>{Y(e,t,n)}),e}}),B(H,{get when(){return e.settings.insecure()},get children(){return W_()}}),G_()]}}),l),Z(t,B(tv,{title:`App`,get children(){var t=K_(),n=t.firstChild;return Z(t,B(j_,{get checked(){return e.settings.state.hideThinking},onChange:t=>{e.settings.setHideThinking(t)}}),n),t}}),u),Z(t,B(tv,{title:`Extensions`,get children(){return B(B_,{get store(){return e.store}})}}),d),Z(t,B(tv,{title:`Updates`,get children(){return[(()=>{var t=q_(),n=t.firstChild,r=n.nextSibling;return t.$$click=c,Z(t,B(H,{get when(){return o()},get children(){return B(Fs,{})}}),n),Z(t,(()=>{var t=G(()=>!!o());return()=>t()?e.store.update.state.label:i()?`Reload page`:`Update & Restart`})(),r),W(()=>({e:i()?`Reload page`:`Update & Restart`,t:`${Vo} flex items-center gap-2`,a:o()||!i()&&e.store.state.connection!==`open`}),({e,t:n,a:r},i)=>{e!==i?.e&&J(t,`aria-label`,e),Y(t,n,i?.t),r!==i?.a&&J(t,`disabled`,r)}),t})(),(()=>{var e=J_();return Z(e,(()=>{var e=G(()=>a()>0);return()=>e()?`Installs all updates and refreshes your browser, stopping ${so.count(a(),`running session`)}.`:`Installs all updates and refreshes your browser.`})()),e})()]}}),f),t}})}})}function ev(e){let t=()=>URL.parse(e.settings.gateway())?.host??e.settings.gateway(),n=()=>{if(e.store.update.state.stale)return{tone:`text-amber-400`,text:`Connected to ${t()}, running pim ${e.store.state.pimVersion??`?`}`};switch(e.store.state.connection){case`open`:return{tone:`text-emerald-400`,text:`Connected to ${t()}`};case`closed`:return{tone:`text-neutral-500`,text:`Not connected`};default:return{tone:`text-amber-400`,text:`Connecting to ${t()}…`}}};var r=Z_(),i=r.firstChild,a=i.nextSibling;return Z(a,()=>n().text),W(()=>`i-griddy-icons:server size-4 shrink-0 ${n().tone}`,(e,t)=>{Y(i,e,t)}),r}function tv(e){var t=Q_(),n=t.firstChild;return Z(n,()=>e.title),Z(t,()=>e.children,null),t}q([`input`,`click`]);var nv=K(`<div class="animate-pulse space-y-[--line]"aria-hidden=true><div class="flex justify-end"><div class="h-[calc(var(--line)*2)] w-2/5 rounded-lg bg-neutral-850"></div></div><div class=space-y-2></div><div></div><div class="flex justify-end"><div class="h-[--line] w-1/4 rounded-lg bg-neutral-850">`),rv=K(`<div class="h-[--line] rounded bg-neutral-850">`),iv=K(`<div class="flex h-[--line] items-center gap-2"><div class="size-3 rounded bg-neutral-850"></div><div class="h-3 w-1/3 rounded bg-neutral-850">`);function av(){let e=[`60%`,`95%`,`85%`,`70%`];var t=nv(),n=t.firstChild.nextSibling,r=n.nextSibling;return Z(n,B(V,{each:e,children:e=>(()=>{var t=rv();return Sa(t,`width`,e),t})()})),Z(r,B(V,{each:[0,1,2],children:()=>iv()})),t}var ov=K(`<section aria-label="Pim controls"class="max-w-md space-y-[--line] text-base"><h2 class="font-bold text-indigo-300">PIM - Pi IMproved <span class="font-normal italic text-neutral-500"></span></h2><dl class=space-y-1>`),sv=K(`<div class="grid grid-cols-[max-content_1fr] gap-x-1ch"><dt class=text-pink-400></dt><dd class=text-neutral-500>`),cv=[[`Escape`,`Cancel autocomplete / abort turn`],[`/<command>`,`Slash commands`],[`@<path>`,`Reference a file`],[`Shift + Tab`,`Cycle thinking level`],[`Ctrl/⌘ + Enter`,`Send message`]];function lv(){var e=ov(),t=e.firstChild,n=t.firstChild.nextSibling,r=t.nextSibling;return Z(n,`v${Bh}`),Z(r,B(V,{each:cv,children:([e,t])=>(()=>{var n=sv(),r=n.firstChild,i=r.nextSibling;return Z(r,e),Z(i,t),n})()})),e}function uv(e,t,n){switch(n.type){case`message`:{let r=n.thinking?.trim()??``,i=n.attachments??[];(n.text!==``||r!==``||i.length>0)&&e.push({kind:`message`,id:n.messageId,role:n.role,text:n.text,timestamp:n.timestamp,...i.length===0?{}:{attachments:i},...r===``?{}:{thinking:r}}),n.error!==void 0&&e.push({kind:`notice`,id:`${n.messageId}-error`,severity:`error`,text:n.error});for(let r of n.toolCalls??[])dv(e,t,{kind:`tool`,id:r.callId,name:r.name,view:r.view,isError:!1,isPartial:!0});break}case`tool_result`:dv(e,t,{kind:`tool`,id:n.callId,name:n.name,view:n.view,isError:n.isError,isPartial:!1});break;case`notice`:e.push({kind:`notice`,id:`notice-${n.seq}`,severity:n.severity,text:n.text})}}function dv(e,t,n){let r=t.get(n.id);if(r===void 0){t.set(n.id,e.length),e.push(n);return}(e[r].isPartial||!n.isPartial)&&(e[r]=n)}function fv(e,t,n){for(let r of n){let n=r.thinking.trim();(r.text!==``||n!==``)&&e.push({kind:`message`,id:r.messageId,role:`assistant`,text:r.text,timestamp:0,...n===``?{}:{thinking:n},streaming:!0});for(let n of r.tools)dv(e,t,{kind:`tool`,id:n.callId,name:n.name,view:n.view,isError:n.isError,isPartial:n.isPartial})}}function pv(e){let t=[],n=new Map;for(let r of e)uv(t,n,r);return{rows:t,toolIndex:n}}function mv(e,t){e.push({kind:`message`,id:t.id,role:`user`,text:t.text,timestamp:t.timestamp,...t.attachments===void 0?{}:{attachments:t.attachments},...t.queued?{queued:!0}:{}})}function hv(e,t,n=[]){if(t.length===0&&n.length===0)return e.rows;let r=[...e.rows],i=new Map(e.toolIndex);for(let e of t)e.queued||mv(r,e);fv(r,i,n);for(let e of t)e.queued&&mv(r,e);return r}var gv=K(`<span aria-hidden=true>`),_v=K(`<span aria-hidden=true><span class="absolute inset-y-0 left-[calc(0.5ch-0.75px)] w-1.5px bg-current">`),vv=K(`<details class="group relative min-w-0 pl-2ch"><summary class="min-w-0 flow-root cursor-pointer list-none"><!><!><!></summary><div class=min-w-0>`),yv=`i-griddy-icons:chevron-right-small-filled`,bv=`transition-transform group-open:rotate-90`;function xv(e){return B(Cv,{icon:yv,get class(){return`scale-175 ${e.class??`bg-neutral-300`}`}})}function Sv(e){return B(Cv,{icon:`i-griddy-icons:square-rounded-filled`,get class(){return`scale-75 ${e.class??`bg-neutral-300`}`}})}function Cv(e){var t=gv();return W(()=>`${e.icon} absolute left-0 top-0 my-[calc((var(--line)-1ch)/2)] size-1ch ${e.class}`,(e,n)=>{Y(t,e,n)}),t}function wv(e){var t=_v();return W(()=>`absolute bottom-0 left-0 top-[--line] w-2ch ${e.grip===!0?`cursor-pointer`:``} ${e.class??`text-neutral-750 group-hover:text-neutral-500`}`,(e,n)=>{Y(t,e,n)}),t}function Tv(e){var t=vv(),n=t.firstChild,r=n.firstChild,i=r.nextSibling,a=i.nextSibling,o=n.nextSibling;return Z(n,B(xv,{get class(){return`${bv} ${e.caret??`bg-neutral-300`}`}}),r),Z(n,B(wv,{get class(){return e.spine},grip:!0}),i),Z(n,()=>e.summary,a),Z(o,()=>e.children),t}var Ev=K(`<div class=text-neutral-400>`),Dv=K(`<div>`),Ov=K(`<div class="mt-1 pl-2ch">`),kv=K(`<article><!><!><!>`),Av=K(`<div class="relative min-w-0 flow-root pl-2ch"><!><!>`),jv=K(`<span class=float-left><span></span><span class="pr-1ch text-neutral-400">:`),Mv=K(`<span class="break-words [&_p]:inline"><!><!>`),Nv=K(`<span class=text-neutral-400> <!><!><!>`);function Pv(e){let t=L(()=>(e.view.body??[]).filter(Rv)),n=()=>e.isError===!0,r=()=>e.isPartial===!0,i=()=>Cd(r(),n()),a=()=>wd(r(),n()),o=()=>!t().some(e=>lu.WEIGHT[e.kind]===`payload`),s=()=>e.view.labelTone??(n()?`error`:r()?`warning`:void 0),c=L(()=>{let t=e.view.summary??[];return{status:t.filter(e=>e.kind!==`attachment`),delivered:t.filter(e=>e.kind===`attachment`)}}),l=()=>[B(zv,{get view(){return e.view},get name(){return e.name},get tone(){return s()}}),B(H,{get when(){return c().status.length>0},get children(){var e=Ev();return Z(e,B(cf,{get blocks(){return c().status}})),e}})];var u=kv(),d=u.firstChild,f=d.nextSibling,p=f.nextSibling;return Z(u,B(H,{get when(){return t().length===0},get children(){return B(wv,{get class(){return a()}})}}),d),Z(u,B(H,{get when(){return t().length>0},get fallback(){var e=Av(),t=e.firstChild,n=t.nextSibling;return Z(e,B(Sv,{get class(){return i()}}),t),Z(e,l,n),e},get children(){return B(Tv,{get summary(){return l()},get caret(){return i()},get spine(){return a()},get children(){var e=Dv();return Z(e,B(cf,{get blocks(){return t()}})),W(()=>o()?`opacity-60`:``,(t,n)=>{Y(e,t,n)}),e}})}}),f),Z(u,B(H,{get when(){return c().delivered.length>0},get children(){var e=Ov();return Z(e,B(cf,{get blocks(){return c().delivered}})),e}}),p),W(()=>`relative min-w-0 ${c().delivered.length>0?``:`opacity-80`} ${t().length>0?`hover:opacity-100 focus-within:opacity-100 has-[>details[open]]:opacity-100`:``}`,(e,t)=>{Y(u,e,t)}),u}function Fv(e){return B(V,{get each(){return Lv(e.name,e.view)},keyed:!1,children:t=>B(Pv,Ai(e,{get view(){return t()}}))})}function Iv(e){return B(H,{get when(){return e.label},get children(){var t=jv(),n=t.firstChild;return Z(n,()=>e.label),W(()=>`font-bold ${Sd(e.tone)}`,(e,t)=>{Y(n,e,t)}),t}})}function Lv(e,t){if(e!==`apply_patch`)return[t];let n=t.body??[],r=n.findIndex(e=>e.kind===`section`);if(r===-1)return[t];let i=[{...t,body:n.slice(0,r)}],a=[];for(let e of n.slice(r)){if(e.kind!==`section`){a.push(e);continue}a=[],i.push({label:e.label,icon:e.icon,title:e.content,body:a})}return i}function Rv(e){return e.kind===`text`||e.kind===`notice`?e.text.trim()!==``:!0}function zv(e){let t=()=>e.view.label??e.name??``,n=()=>e.view.title.slice(0,1),r=()=>e.view.title.slice(1),i=()=>{let t=e.view.title.length===1?e.view.title[0]:void 0;return t?.kind===`markdown`?t.text:void 0};return[B(Iv,{get label(){return t()},get tone(){return e.tone}}),B(H,{get when(){return i()},get fallback(){var e=Mv(),t=e.firstChild,i=t.nextSibling;return Z(e,B(of,{get blocks(){return n()}}),t),Z(e,B(V,{get each(){return r()},children:e=>B(Bv,{block:e})}),i),e},children:e=>B(Nd,{get text(){return e()}})})]}function Bv(e){let t=()=>e.block.kind!==`spans`;var n=Nv(),r=n.firstChild.nextSibling,i=r.nextSibling,a=i.nextSibling;return Z(n,B(H,{get when(){return t()},children:`(`}),r),Z(n,B(of,{get blocks(){return[e.block]}}),i),Z(n,B(H,{get when(){return t()},children:`)`}),a),n}var Vv=K(`<span class="block truncate text-rose-400">failed`),Hv=K(`<button type=button aria-haspopup=dialog class="relative w-full min-w-0 flow-root pl-2ch text-left opacity-80 focus-visible:opacity-100 hover:opacity-100"><!><!><!>`),Uv=K(`<span class=break-words>`),Wv=K(`<span class="ml-1ch inline-flex align-middle">`);function Gv(e){let t=L(()=>e.row.isError?``:Kv(e.row.view)),n=L(()=>e.row.isError?qv(e.row.view):void 0);var r=Hv(),i=r.firstChild,a=i.nextSibling,o=a.nextSibling;return r.$$click=()=>{e.onOpen(e.row.id)},Z(r,B(xv,{get class(){return Cd(e.row.isPartial,e.row.isError)}}),i),Z(r,B(Iv,{label:`Subagent`,get tone(){return e.row.view.labelTone}}),a),Z(r,B(H,{get when(){return e.row.isError},get fallback(){return[B(H,{get when(){return t()!==``},get children(){var e=Uv();return Z(e,t),e}}),B(H,{get when(){return e.row.isPartial},get children(){var e=Wv();return Z(e,B(Fs,{})),e}})]},get children(){var e=Vv();return e.firstChild,Z(e,B(H,{get when(){return n()},children:e=>[` · `,G(e)]}),null),e}}),o),r}function Kv(e){return(e.summary??[]).map(Jv).join(``).trim()}function qv(e){for(let t of e.body??[]){let e=Jv(t).trim().split(/\r?\n/u)[0]?.trim();if(e!==void 0&&e!==``)return e}}function Jv(e){switch(e.kind){case`text`:case`markdown`:case`notice`:return e.text;case`spans`:return e.spans.map(e=>e.text).join(``);case`file`:return e.path;default:return``}}q([`click`]);var Yv=K(`<div class=space-y-[--line]>`),Xv=K(`<div class=min-w-0>`),Zv=K(`<button type=button aria-label="Edit queued message"class="group flex max-w-[85%] min-w-0 flex-col items-end text-left">`),Qv=K(`<article class="flex flex-col items-end"><!><!>`),$v=K(`<article class="min-w-0 space-y-[--line]"><!><!>`),ey=K(`<div class="font-300 italic opacity-60">`),ty=K(`<div class=mb-1.5>`),ny=K(`<div class="flex max-w-[85%] min-w-0 flex-col items-end">`),ry=K(`<div>`),iy=K(`<span class="mr-1ch rounded bg-current/10 px-1.5 py-0.5 text-sm font-semibold">`),ay=`subagent`;function oy(e){let t=L(()=>pv(e.events)),n=L(()=>hv(t(),e.trailing??[],e.live??[])),r=Pi(w_),i=L(()=>cy(n().filter(e=>sy(e,r())))),a={message:t=>B(ly,{get row(){return t.row},get hidden(){return r()},get onEdit(){return e.onEdit}}),tool:t=>B(dy,{get row(){return t.row},get onOpenSubagent(){return e.onOpenSubagent}}),notice:py};var o=Yv();return Z(o,B(V,{get each(){return i()},keyed:e=>e.id,children:e=>(()=>{var t=Xv();return Z(t,B(V,{get each(){return e().rows},keyed:e=>e.id,children:e=>B(Ga,{get component(){return a[e().kind]},get row(){return e()}})})),t})()})),o}function sy(e,t){return!(t&&e.kind===`message`&&e.thinking!==void 0&&e.text===``&&e.attachments===void 0)}function cy(e){let t=[],n;for(let r of e){if(r.kind===`tool`&&n){n.push(r);continue}n=r.kind===`tool`?[r]:void 0,t.push({id:r.id,rows:n??[r]})}return t}function ly(e){return B(H,{get when(){return e.row.role===`user`},get fallback(){var t=$v(),n=t.firstChild,r=n.nextSibling;return Z(t,B(H,{get when(){return G(()=>!e.hidden)()&&e.row.thinking},children:t=>(()=>{var n=ey();return Z(n,B(Nd,{get text(){return t()},get complete(){return e.row.streaming!==!0||e.row.text!==``}})),n})()}),n),Z(t,B(Nd,{get text(){return e.row.text},get complete(){return e.row.streaming!==!0}}),r),t},get children(){var t=Qv(),n=t.firstChild,r=n.nextSibling;return Z(t,B(H,{get when(){return e.row.attachments},children:e=>(()=>{var t=ty();return Z(t,B(Us,{get files(){return e().map(e=>({...e,key:e.url}))}})),t})()}),n),Z(t,B(H,{get when(){return e.row.queued},get fallback(){var t=ny();return Z(t,B(uy,{get row(){return e.row}})),t},get children(){var t=Zv();return t.$$click=()=>e.onEdit?.(),Z(t,B(uy,{get row(){return e.row}})),t}}),r),t}})}function uy(e){return[B(H,{get when(){return e.row.text!==``},get children(){var t=ry();return Z(t,B(Nd,{get text(){return e.row.text},complete:!0,wrap:`wrap-anywhere`})),W(()=>`max-w-full rounded-lg px-4 py-3 ${e.row.queued?`bg-neutral-900 text-neutral-400 group-hover:bg-neutral-850 group-hover:text-neutral-200`:`bg-neutral-850`}`,(e,n)=>{Y(t,e,n)}),t}}),(()=>{var t=ry();return Z(t,(()=>{var t=G(()=>!!e.row.queued);return()=>t()?`Queued. Click to edit.`:qc(e.row.timestamp)})()),W(()=>`text-sm ${e.row.queued?`text-neutral-400`:`text-neutral-500`}`,(e,n)=>{Y(t,e,n)}),t})()]}function dy(e){return B(H,{get when(){return G(()=>e.row.name===ay)()&&e.onOpenSubagent!==void 0},get fallback(){return B(Fv,{get view(){return e.row.view},get name(){return e.row.name},get isError(){return e.row.isError},get isPartial(){return e.row.isPartial}})},get children(){return B(Gv,{get row(){return e.row},onOpen:t=>e.onOpenSubagent?.(t)})}})}var fy={info:`INFO`,warn:`WARNING`,error:`ERROR`};function py(e){return B(Ef,{get severity(){return e.row.severity},get text(){return e.row.text},get tag(){var t=iy();return Z(t,()=>fy[e.row.severity]),t}})}q([`click`]);var my=K(`<div><div class="mx-auto min-h-full w-full max-w-3xl flex-none space-y-[--line] p-3 leading-[--line]">`),hy=K(`<span class="text-sm text-amber-400">Running`),gy=K(`<div class="min-w-0 leading-[--line]"><div class="flex items-center gap-2"><span class=font-bold>Subagent`),_y=K(`<div class="text-sm text-neutral-400">`);function vy(e){let t=()=>e.store.state.subagent,n=L(()=>pv(e.store.state.durable)),r=is(),i=L(()=>{let r=t()?.callId;if(r===void 0)return;let i=hv(n(),[],e.store.state.live).find(e=>e.id===r);return i?.kind===`tool`?i:void 0});return B(Fc,{get open(){return t()!==void 0},label:`Subagent`,onClose:()=>{e.store.unwatch()},get header(){var e=gy(),t=e.firstChild;return t.firstChild,Z(t,B(H,{get when(){return i()?.isPartial},get children(){return[B(Fs,{}),hy()]}}),null),Z(e,B(H,{get when(){return i()?.view.summary},children:e=>(()=>{var t=_y();return Z(t,B(cf,{get blocks(){return e()}})),t})()}),null),e},get children(){var e=my(),n=e.firstChild,i=r.ref;return typeof i==`function`||Array.isArray(i)?X(()=>i,e):r.ref=e,Z(n,B(H,{get when(){return t()},children:e=>B(oy,{get events(){return e().durable},get live(){return e().live}})})),W(()=>({"flex min-h-0 flex-1 flex-col-reverse overflow-y-auto":!0,"[overflow-anchor:none]":r.pinned()}),(t,n)=>{Y(e,t,n)}),e}})}var yy=K(`<button type=button><!><!>`),by=K(`<span>`),xy=K(`<span title="Commits to push">↑`),Sy=K(`<span class=text-rose-400 title="Commits to pull">↓`),Cy=K(`<span class="flex shrink-0 items-center"><!><!>`),wy=K(`<div class="flex min-w-0 flex-1"><button type=button aria-haspopup=listbox><span class="i-griddy-icons:code-branch size-4 shrink-0"></span><!><!>`),Ty=K(`<p class="px-2 text-xs text-amber-400">Git operations are disabled as an agent is still working.`),Ey=K(`<div class="mb-1 flex flex-col gap-1"><div class="flex items-center gap-1"><!><!></div><!><!>`),Dy=K(`<p class="max-h-20 overflow-y-auto px-2 text-xs whitespace-pre-wrap text-rose-400">`),Oy=`${Ko} h-7 flex-1 px-3 text-sm disabled:text-neutral-600 disabled:hover:text-neutral-600 disabled:hover:ring-0`,ky=2592e6,Ay=300,jy=`Git operations are disabled as an agent is still working.`;function My(e){return e.worktree?`in another worktree`:e.gone?`upstream gone`:e.merged&&!e.isDefault?`merged`:void 0}function Ny(e,t){let n=[Bc(e.updatedAt*1e3,t)];return e.ahead>0&&n.push(`↑${e.ahead}`),e.behind>0&&n.push(`↓${e.behind}`),n.join(` `)}function Py(e,t){let n=My(e);return{branch:e,label:e.name,tag:Ny(e,t),selected:e.current,...n===void 0?{}:{description:n}}}function Fy(e,t){return e.current||e.isDefault||t-e.updatedAt*1e3<=ky&&!(e.merged||e.gone||e.worktree)}function Iy(e){let t=Date.now();return e.filter(e=>Fy(e,t)).map(e=>Py(e,t))}function Ly(e){let[t,n]=R([]),[r,i]=R(),[a,o]=R(``),s=()=>e.store.state,c=()=>s().repoBusy||r()!==void 0,l=()=>{document.visibilityState===`visible`&&e.store.refreshGit()};document.addEventListener(`visibilitychange`,l),window.addEventListener(`focus`,l),bn(()=>{document.removeEventListener(`visibilitychange`,l),window.removeEventListener(`focus`,l)});let u=()=>e.store.listBranches().then(e=>{n(e),P(h.activeIndex)<0&&h.setActiveIndex(Iy(e).findIndex(e=>e.branch.current))},e=>{o(e.message)}),d=L(()=>Iy(t())),f=(e,t)=>{o(``),i(e),t().then(()=>{if(e===`checkout`){m.close();return}u()},e=>{o(e.message)}).finally(()=>{i(void 0)})},p=t=>{let n=d()[t];if(n){if(n.branch.current){m.close();return}if(c()){o(s().repoBusy?jy:`Another git operation is still running.`);return}f(`checkout`,()=>e.store.checkout(n.branch.name))}},m=bs({onOpen:()=>{o(``),h.setActiveIndex(-1),u(),e.store.refreshGit(!0).then(u)}}),h=ds({count:()=>d().length,open:m.open,onSelect:p,onDismiss:m.close}),g=t=>(()=>{var n=yy(),i=n.firstChild,a=i.nextSibling;return n.$$click=()=>{f(t.operation,()=>t.operation===`pull`?e.store.pull():e.store.push())},Z(n,B(H,{get when(){return r()===t.operation},get fallback(){var e=by();return W(()=>`${t.icon} size-4 shrink-0`,(t,n)=>{Y(e,t,n)}),e},get children(){return B(Fs,{})}}),i),Z(n,()=>t.label,a),W(()=>({e:Oy,t:t.disabled,a:t.title}),({e,t,a:r},i)=>{Y(n,e,i?.e),t!==i?.t&&J(n,`disabled`,t),r!==i?.a&&J(n,`title`,r)}),n})();var _=wy(),v=_.firstChild,y=v.firstChild.nextSibling,b=y.nextSibling,x=m.root;typeof x==`function`||Array.isArray(x)?X(()=>x,_):m.root=_,v.$$keydown=e=>{h.onKeyDown(e)},ba(v,`click`,m.toggle,!0);var S=m.trigger;return typeof S==`function`||Array.isArray(S)?X(()=>S,v):m.trigger=v,Z(v,B(Xc,{get texts(){return[e.branch]}}),y),Z(v,B(H,{get when(){return G(()=>!e.compact)()&&(s().ahead>0||s().behind>0)},get children(){var e=Cy(),t=e.firstChild,n=t.nextSibling;return Z(e,B(H,{get when(){return s().ahead>0},get children(){var e=xy();return e.firstChild,Z(e,()=>s().ahead,null),e}}),t),Z(e,B(H,{get when(){return s().behind>0},get children(){var e=Sy();return e.firstChild,Z(e,()=>s().behind,null),e}}),n),e}}),b),Z(_,B(hs,{get open(){return m.open()},get anchor(){return m.anchor},place:`below`,min:Ay,get items(){return d()},get activeIndex(){return h.activeIndex()},get onActivate(){return h.setActiveIndex},onSelect:p,emptyLabel:`no branches touched in the last 30 days`,get header(){var e=Ey(),t=e.firstChild,n=t.firstChild,i=n.nextSibling,o=t.nextSibling,l=o.nextSibling;return Z(t,B(g,{operation:`pull`,icon:`i-griddy-icons:arrow-down`,label:`Pull`,title:`Fast-forward from the remote`,get disabled(){return c()}}),n),Z(t,B(g,{operation:`push`,icon:`i-griddy-icons:arrow-up`,label:`Push`,title:`Publish this branch`,get disabled(){return r()!==void 0}}),i),Z(e,B(H,{get when(){return s().repoBusy},get children(){return Ty()}}),o),Z(e,B(H,{get when(){return a()},children:e=>(()=>{var t=Dy();return Z(t,e),t})()}),l),e}}),null),W(()=>({e:m.open()?`true`:`false`,t:`Branch ${e.branch}, switch or sync`,a:e.branch,o:`${Go} flex-1 rounded-l-lg`}),({e,t,a:n,o:r},i)=>{e!==i?.e&&J(v,`aria-expanded`,e),t!==i?.t&&J(v,`aria-label`,t),n!==i?.a&&J(v,`title`,n),Y(v,r,i?.o)}),_}q([`click`,`keydown`]);var Ry=K(`<button type=button aria-label="Not connected"title="Not connected — reconnecting"class="flex h-8 shrink-0 items-center gap-1.5 rounded-lg bg-rose-500/10 px-2 text-sm text-rose-400 hover:bg-rose-500/20"><span class="i-griddy-icons:link-off size-4 shrink-0">`),zy=K(`<div class="flex h-12 shrink-0 items-center gap-2 border-b border-neutral-700 px-3"><button type=button aria-label="Toggle sessions"class="flex size-8 shrink-0 items-center justify-center rounded-lg text-neutral-350 hover:bg-neutral-800 hover:text-neutral-50"><span class="i-griddy-icons:sidebar size-5"></span></button><div class=ml-auto></div><!><!><!>`),By=K(`<button type=button><span class="i-griddy-icons:folder size-4 shrink-0">`),Vy=K(`<span class="shrink-0 text-amber-400">`),Hy=K(`<div><button type=button><span>`),Uy=1500;function Wy(e,t){return t?`Back to the conversation`:e===0?`Review changes, working tree clean`:`Review changes, ${so.count(e,`changed file`)}`}function Gy(e){let[t,n]=R(!1),r=Ky(()=>e.store.state.connection,()=>e.graceMs??Uy),i=t=>e.compact?[Uc(t)]:[Hc(t),Uc(t)],a=()=>Wy(e.store.state.dirtyCount,e.reviewing);var o=zy(),s=o.firstChild,c=s.nextSibling,l=c.nextSibling,u=l.nextSibling,d=u.nextSibling;return ba(s,`click`,e.onToggleSidebar,!0),Z(o,B(H,{get when(){return e.store.state.cwd},children:e=>(()=>{var t=By();return t.firstChild,t.$$click=()=>{n(!0)},Z(t,B(Xc,{get texts(){return i(e())}}),null),W(()=>({e:Uo,t:`Working directory ${Hc(e())}, open another`,a:e()}),({e,t:n,a:r},i)=>{Y(t,e,i?.e),n!==i?.t&&J(t,`aria-label`,n),r!==i?.a&&J(t,`title`,r)}),t})()}),c),Z(o,B(H,{get when(){return r()},get children(){var t=Ry();return t.firstChild,t.$$click=()=>e.onOpenSettings?.(),Z(t,B(H,{get when(){return!e.compact},children:`Not connected`}),null),t}}),l),Z(o,B(H,{get when(){return e.store.state.branch},children:t=>(()=>{var n=Hy(),r=n.firstChild,i=r.firstChild;return Z(n,B(Ly,{get store(){return e.store},get branch(){return t()},get compact(){return e.compact}}),r),ba(r,`click`,e.onToggleDiff,!0),Z(r,B(H,{get when(){return e.store.state.dirtyCount>0},get children(){var t=Vy();return Z(t,()=>e.store.state.dirtyCount),t}}),null),W(()=>({e:Wo,t:e.reviewing?`true`:`false`,a:`${Go} shrink-0 rounded-r-lg border-l border-neutral-750`,o:a(),i:a(),n:`i-griddy-icons:file-edit size-4 shrink-0 ${e.store.state.dirtyCount>0?`text-amber-400`:``}`}),({e,t,a,o,i:s,n:c},l)=>{Y(n,e,l?.e),t!==l?.t&&J(r,`aria-pressed`,t),Y(r,a,l?.a),o!==l?.o&&J(r,`aria-label`,o),s!==l?.i&&J(r,`title`,s),Y(i,c,l?.n)}),n})()}),u),Z(o,B(cg,{get open(){return t()},get store(){return e.store},onClose:()=>{n(!1)}}),d),o}function Ky(e,t){let[n,r]=R(!1),i;return z(()=>e(),e=>{if(clearTimeout(i),i=void 0,e!==`connecting`&&e!==`reconnecting`){r(!1);return}i=setTimeout(()=>{r(!0)},t())}),bn(()=>{clearTimeout(i)}),n}q([`click`]);var qy=K(`<dialog class="m-0 h-full max-h-none w-[85vw] max-w-xs border-r border-neutral-700 bg-neutral-950 p-0 text-neutral-100 backdrop:bg-black/60">`);function Jy(e){let t=ks({open:()=>e.open,onClose:()=>{e.onClose()}});var n=qy();n.$$click=e=>{t.isHost(e.target)&&t.close()},ba(n,`close`,t.onNativeClose);var r=t.ref;return typeof r==`function`||Array.isArray(r)?X(()=>r,n):t.ref=n,Z(n,()=>e.children),W(()=>e.label,e=>{J(n,`aria-label`,e)}),n}q([`click`]);var Yy=K(`<div><div class="mx-auto min-h-full w-full max-w-3xl flex-none space-y-[--line] p-3 leading-[--line]">`),Xy=K(`<div class="w-xs shrink-0 border-r border-neutral-700">`),Zy=K(`<div class="min-h-0 overflow-hidden">`),Qy=K(`<main class="flex overflow-hidden bg-neutral-925 text-neutral-100"><!><div class="flex w-full min-w-0 flex-col"><div class="relative min-h-0 flex-1"><div><div><div></div></div></div><!><!></div></div><!><!><!><!>`);function $y(){let e=new T_,t=new Qh({url:e.gateway()});return En(()=>(t.connect().catch(()=>void 0),()=>{t.dispose()})),B(eb,{store:t,settings:e})}function eb(e){let t=vs(gs),[n,r]=R(P(t)),[i,a]=R(!1),[o,s]=R(!1),[c,l]=R(!1),u=new Oc(e.store),d=new fo,f=Os(()=>{l(!1)});z(()=>t(),e=>{r(e)}),z(()=>u.cwd(),e=>{d.load(e)}),En(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`&&(e.preventDefault(),s(!0))};return globalThis.addEventListener(`keydown`,e),()=>{globalThis.removeEventListener(`keydown`,e)}});let p=is(),[m,h]=R(0),[g,_]=R(),v=()=>{P(c)||(l(!0),f.arm())},y=()=>{l(!1),f.release()},b=()=>{if(P(c)){y();return}v()},x=()=>{e.store.dequeue().then(e=>{e!==``&&_({text:e})})},S=()=>{y(),p.jump()},ee=()=>{d.clear()},C=L(()=>({count:d.all().length,text:()=>P(()=>Po.compose(u.state.base,d.all(),u.files())),sent:ee,discard:ee,open:v})),te=L(()=>e.store.state.durable.length>0||e.store.trailing().length>0||e.store.liveSize()>0),w=L(()=>!c()&&!e.store.state.loading&&!te()),ne=L(()=>w()?0:m()),re=jc(),ie=()=>(()=>{var t=Yy(),n=t.firstChild,r=p.ref;return typeof r==`function`||Array.isArray(r)?X(()=>r,t):p.ref=t,Z(t,B(Ac,{get height(){return ne()}}),n),Z(n,B(H,{get when(){return!e.store.state.loading},get fallback(){return B(av,{})},get children(){return B(H,{get when(){return te()},get children(){return B(oy,{get events(){return e.store.state.durable},get trailing(){return e.store.trailing()},get live(){return e.store.state.live},onEdit:x,onOpenSubagent:t=>{e.store.watch(t)}})}})}})),W(()=>({e:{"isolate flex h-full flex-col-reverse overflow-y-auto":!0,"[overflow-anchor:none]":p.pinned()},t:`calc(${ne()}px + var(--line))`}),({e,t:r},i)=>{Y(t,e,i?.e),r!==i?.t&&Sa(n,`padding-bottom`,r)}),t})();return B(Pd,{value:()=>e.store.httpUrl,get children(){return B(w_,{value:()=>e.settings.state.hideThinking,get children(){var l=Qy(),f=l.firstChild,p=f.nextSibling,m=p.firstChild,_=m.firstChild,v=_.firstChild,x=v.firstChild,ee=_.nextSibling,te=ee.nextSibling,ae=p.nextSibling,oe=ae.nextSibling,T=oe.nextSibling,se=T.nextSibling;Z(l,B(H,{get when(){return G(()=>!!t())()?n():t()},get children(){var t=Xy();return Z(t,B(zg,{get store(){return e.store},onNavigate:S,onOpenSearch:()=>{s(!0)},onOpenSettings:()=>{a(!0)}})),t}}),f),Z(l,B(Jy,{get open(){return G(()=>!t())()&&n()},label:`Sessions`,onClose:()=>{r(!1)},get children(){return B(H,{get when(){return!t()},get children(){return B(zg,{get store(){return e.store},onNavigate:()=>{r(!1),S()},onOpenSearch:()=>{r(!1),s(!0)},onOpenSettings:()=>{r(!1),a(!0)}})}})}}),p),Z(p,B(Gy,{get store(){return e.store},get compact(){return!t()},get reviewing(){return c()},onToggleSidebar:()=>{r(e=>!e)},onToggleDiff:b,onOpenSettings:()=>{a(!0)}}),m),Z(m,B(H,{get when(){return c()},get fallback(){return B(ie,{})},get children(){return B(po,{value:()=>d,get children(){return B(Rp,{diff:u,get settings(){return e.settings},get inset(){return ne()},onClose:y})}})}}),_);var ce=ts(h);return(typeof ce==`function`||Array.isArray(ce))&&X(()=>ce,_),Z(v,B(H,{get when(){return w()},get children(){var e=Zy();return Z(e,B(lv,{})),e}}),x),Z(x,B(fc,{get store(){return e.store},onSend:S,get recalled(){return g()},get review(){return C()}})),Z(m,B(tg,{get update(){return e.store.update},get desktop(){return t()}}),ee),Z(m,B(im,{get notices(){return e.store.state.toasts},get desktop(){return t()},onDismiss:t=>{e.store.dismissToast(t)}}),te),Z(l,B(vy,{get store(){return e.store}}),ae),Z(l,B(Xp,{get store(){return e.store}}),oe),Z(l,B(x_,{get open(){return o()},get store(){return e.store},onNavigate:S,onClose:()=>{s(!1)}}),T),Z(l,B($_,{get open(){return i()},get store(){return e.store},get settings(){return e.settings},onClose:()=>{a(!1)}}),se),W(()=>({e:re(),t:{"pointer-events-none flex":!0,"absolute right-[--scrollbar] bottom-0 left-0 justify-center px-3 pt-10 pb-[max(0.75rem,env(safe-area-inset-bottom))]":!w(),"absolute inset-0 items-center justify-center overflow-hidden px-3 pt-3 pb-[max(0.75rem,env(safe-area-inset-bottom))]":w()},a:{"w-full max-w-3xl":!0,"flex max-h-full flex-col":w()},o:{"mt-[calc(var(--line)*2)] shrink-0":w()}}),({e,t,a:n,o:r},i)=>{e!==i?.e&&Sa(l,`height`,e),Y(_,t,i?.t),Y(v,n,i?.a),Y(x,r,i?.o)}),l}})}})}var tb=document.getElementById(`root`);if(tb===null)throw Error(`missing #root`);la(()=>B($y,{}),tb);export{c as n,o as t};
|