pi-straw-boss 0.20.1 → 0.20.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- import{M as e,b as t}from"./index-BInsCHu4.js";import{t as n}from"./dom-BaTXH9WU.js";var r=((t={},n={})=>(n.locale??e())===`zh-TW`?`另一個答案正在送出;請查看終端機。`:`Another answer is on its way; check the terminal.`),i=((t={},n={})=>(n.locale??e())===`zh-TW`?`請在終端機中回答。`:`Answer it in the terminal.`),a=((t={},n={})=>(n.locale??e())===`zh-TW`?`請在終端機中回答。`:`Answer them in the terminal.`),o=((t={},n={})=>(n.locale??e())===`zh-TW`?`已回答。`:`Answered.`),s=((t={},n={})=>(n.locale??e())===`zh-TW`?`也可以自己輸入答案。`:`It also takes your own words.`),c=((t={},n={})=>(n.locale??e())===`zh-TW`?`可以複選。`:`It takes several choices.`),l=((t={},n={})=>(n.locale??e())===`zh-TW`?`再次確認`:`Check again`),u=((t={},n={})=>(n.locale??e())===`zh-TW`?`選擇`:`Choices`),d=((t={},n={})=>(n.locale??e())===`zh-TW`?`瀏覽器拒絕存取剪貼簿。`:`The browser refused the clipboard.`),f=((t={},n={})=>(n.locale??e())===`zh-TW`?`已複製到這台裝置的剪貼簿。`:`Copied to this device's clipboard.`),p=((t={},n={})=>(n.locale??e())===`zh-TW`?`複製指令`:`Copy command`);function m(e,t,n,r){if(typeof t!=`string`||n!==void 0&&!r)return new e(t,n);let i=m;if(n!==void 0){let r=i.prototypeKeys??=new Set([`constructor`,`__defineGetter__`,`__defineSetter__`,`hasOwnProperty`,`__lookupGetter__`,`__lookupSetter__`,`isPrototypeOf`,`propertyIsEnumerable`,`toString`,`valueOf`,`__proto__`,`toLocaleString`]);if(Object.getOwnPropertyNames(Object.prototype).some(e=>!r.has(e)))return new e(t,n)}let a=[];for(let r of Object.keys(n??{}).sort()){let i=n[r];if(i!==void 0){if(i!==null&&![`string`,`number`,`boolean`].includes(typeof i)||typeof i==`number`&&!Number.isFinite(i))return new e(t,n);a.push([r,i])}}let o=JSON.stringify([t,a]),s=i.caches??=new WeakMap,c=s.get(e);if(c||(c=new Map,s.set(e,c)),c.has(o))return c.get(o);let l=new e(t,n);if(c.size>=256){let e=c.keys().next().value;e!==void 0&&c.delete(e)}return c.set(o,l),l}function h(e,t,n,r=!1){return m(Intl.PluralRules,e,n,r).select(Number(t)-Number(n?.offset??0))}var g=((t={},n={})=>(n.locale??e())===`zh-TW`?`這個選項有預覽;請在終端機中查看。`:`It has a preview; see it in the terminal.`),_=((t={},n={})=>(n.locale??e())===`zh-TW`?`未確認。請查看終端機。`:`Not confirmed. Check the terminal.`),v=((t={},n={})=>(n.locale??e())===`zh-TW`?`備註`:`Note`),y=((t={},n={})=>(n.locale??e())===`zh-TW`?`備註(選填)`:`Note (optional)`),b=((t={},n={})=>(n.locale??e())===`zh-TW`?`選項`:`Options`),x=((t={},n={})=>(n.locale??e())===`zh-TW`?`另一個答案沒有被採用;這個可以送出。`:`The other answer was not taken; this one can go.`),S=((t={},n={})=>(n.locale??e())===`zh-TW`?`你的答案`:`Your own answer`),C=((t={},n={})=>(n.locale??e())===`zh-TW`?`或自己輸入答案`:`Or type your own answer`),w=((t={},n={})=>(n.locale??e())===`zh-TW`?`問題已變更,請重新閱讀。`:`The question changed; read it again.`),T=((t={},n={})=>(n.locale??e())===`zh-TW`?`session 讀不懂這個答案。`:`The session could not read that answer.`),E=((t={},n={})=>(n.locale??e())===`zh-TW`?`這個答案不符合問題。`:`That answer does not fit the question.`),D=((t={},n={})=>(n.locale??e())===`zh-TW`?`session 拒絕了這個答案。`:`The session refused that answer.`),O=((t={},n={})=>(n.locale??e())===`zh-TW`?`送出答案`:`Send answer`),k=((t={},n={})=>(n.locale??e())===`zh-TW`?`送出中…`:`Sending…`),A=((t={},n={})=>(n.locale??e())===`zh-TW`?`顯示終端機`:`Show terminal`),j=((t={},n={})=>(n.locale??e())===`zh-TW`?`已在終端機中關閉。`:`It was dismissed in the terminal.`),M=((t={},n={})=>(n.locale??e())===`zh-TW`?`它已不再開啟。`:`It is no longer open.`),N=((t={},n={})=>(n.locale??e())===`zh-TW`?`已在終端機中回答。`:`It was already answered in the terminal.`),P=((t={},n={})=>(n.locale??e())===`zh-TW`?`連不上伺服器。`:`The server could not be reached.`),F=((t={},n={})=>(n.locale??e())===`zh-TW`?`它在等待對話框。`:`It waits on a dialog.`),I=e=>e.multiple?c():e.freeform&&e.options.length?s():``,L=(e,t)=>n(`div`,{class:`ask-one`},e.header&&n(`b`,{class:`ask-head`},e.header),n(`p`,{class:`ask-q`},e.question),e.context&&n(`div`,{class:`ask-ctx`},e.context),e.options.length>0&&n(`ol`,{class:`ask-opts`,"aria-label":b()},...e.options.map(e=>n(`li`,{class:`ask-opt`},n(`b`,null,e.title),e.description&&n(`small`,null,e.description)))),t&&I(e)&&n(`small`,{class:`ask-how`},I(e))),R=e=>e.replace(/[\u0000-\u0008\u000b-\u001f\u007f-\u009f]/g,`�`),z=(e,t)=>(e.select?.choices??[]).map((e,t)=>({...e,i:t})).filter(e=>!(t&&e.localOnly)),B=(e,t,n)=>({...e.size?{choices:[...e].sort((e,t)=>e-t)}:{},...t.trim()?{text:t}:{},...n.trim()?{note:n}:{}}),V=(e,t,n)=>({dialog:e.dialog,digest:e.digest,answerId:n,...t}),H={digest:w,"not-allowed":E,malformed:T};function U(e){let{outcome:n,reason:i,by:a}=e.body;return n===`accepted`?[`ok`,o()]:n===`stale`?[`error`,a===`local`?N():a===`cancel`?j():M()]:n===`rejected`?[`error`,(Object.hasOwn(H,String(i))?H[String(i)]:D)()]:n===`busy`?[`error`,r()]:n===`unknown`||e.status===504?[`error`,_(),!0]:[`error`,i??t({status:e.status})]}var W=e=>[`accepted`,`stale`,`busy`,`unknown`].includes(String(e.body.outcome))||e.status===504,G=e=>e.answer?`d\n${e.answer.dialog}\n${e.answer.digest}`:`c\n${e.callId}\n${e.why??``}`;function K(e,t,r=location.hostname!==`127.0.0.1`,o){let s,c,m,h=!1,w=!1,T;for(let e of[`focusin`,`pointerdown`])document.addEventListener(e,e=>c&&!c.el.contains(e.target)&&(c.lost=void 0));let E=(e,t,n,...r)=>(e.dataset.tone=t,e.replaceChildren(n,...r)),D=()=>{if(!c)return;let e=document.activeElement;e&&e!==document.body&&e!==c.lost&&(c.lost=void 0),c.controls.forEach(e=>e.disabled=!h||w||c.done),c.send&&(c.send.disabled=!h||w||c.done||!c.pick()),e&&c.el.contains(e)&&e.disabled&&(c.lost=e);let t=c.lost;t&&!t.disabled&&c.el.contains(t)&&(!document.activeElement||document.activeElement===document.body)&&(t.focus(),c.lost=void 0)};async function j(e,r){[e.sending,w,e.spell]=[!0,!0,!1],D(),E(e.note,``,k());let i=await t(`answer`,r).catch(()=>void 0),a=n(`button`,{type:`button`,class:`cmp-link`},l());a.onclick=()=>void j(e,r);let[o,s,c]=i?U(i):[`error`,_(),!0];[e.done,e.sending,w,e.busy]=[!i||W(i),!1,!1,i?.body.outcome===`busy`],E(e.note,o,s,...c?[a]:[]),D(),e.note.scrollIntoView?.({block:`nearest`})}let M=(e,t,r,i,a)=>{let o=n(`button`,{type:`button`,class:`ask-opt`,role:e,"aria-checked":`false`},n(`b`,a?{"data-n":String(a)}:null,t),...r.filter(Boolean).map(e=>n(`small`,null,e)));return o.onclick=i,o};function N(e,t){let i,a=z(t,r).map(e=>M(`radio`,e.label,[e.note],()=>(i=e.i,a.forEach((n,i)=>n.setAttribute(`aria-checked`,String(z(t,r)[i].i===e.i))),D()),e.i+1)),o=t.select?.copy!==void 0&&n(`button`,{type:`button`,class:`cmp-link`},p());return o&&(o.disabled=!navigator.clipboard,o.onclick=()=>void navigator.clipboard.writeText(t.select.copy).then(()=>E(e.note,`ok`,f()),()=>E(e.note,`error`,d()))),e.pick=()=>i===void 0?void 0:{choice:i},e.controls=a,[n(`pre`,{class:`ask-title`},R(t.select.title)),n(`div`,{class:`ask-opts`,role:`radiogroup`,"aria-label":u()},...a),n(`div`,{class:`ask-acts`},e.send,o)]}function P(e,t){let r=t.questions.map(()=>({picks:new Set,text:n(`input`,{type:`text`,maxlength:`8192`,class:`ask-own`,placeholder:C(),"aria-label":S()}),note:n(`input`,{type:`text`,maxlength:`2048`,class:`ask-own ask-memo`,placeholder:y(),"aria-label":v()})})),i=t.questions.map((t,i)=>{let a=r[i],o=t.multiple?`checkbox`:`radio`,s=t.options.map((e,n)=>M(o,e.title,[e.description,e.preview&&g()],()=>{t.multiple||(a.picks.clear(),a.text.value=``),a.picks.has(n)?a.picks.delete(n):a.picks.add(n),s.forEach((e,t)=>e.setAttribute(`aria-checked`,String(a.picks.has(t)))),D()}));return a.text.oninput=()=>(t.multiple||(a.picks.clear(),s.forEach(e=>e.setAttribute(`aria-checked`,`false`))),D()),e.controls.push(...s,a.text,a.note),n(`div`,{class:`ask-one`},t.header&&n(`b`,{class:`ask-head`},t.header),n(`p`,{class:`ask-q`},t.question),n(`div`,{class:`ask-opts`,role:t.multiple?`group`:`radiogroup`,"aria-label":b()},...s),a.text,a.note)});return e.pick=()=>r.every(e=>e.picks.size||e.text.value.trim())?{answers:r.map(e=>B(e.picks,e.text.value,e.note.value))}:void 0,[...i,n(`div`,{class:`ask-acts`},e.send)]}function H(e){let t=e.asks??(e.ask?[e.ask]:[]),r=t.length>1,s=e.answer,c={key:G(e),el:n(`section`,{class:`ask`}),note:n(`p`,{class:`ask-note`,role:`status`,"aria-live":`polite`}),controls:[],pick:()=>void 0,done:!1,sending:!1};s&&((c.send=n(`button`,{type:`button`,class:`ask-send`},O())).onclick=()=>void(c.pick()&&j(c,V(s,c.pick(),crypto.randomUUID()))));let l=n(`p`,{class:`ask-term`},e.why&&t.length?e.why:`${r?a():i()} ${r||!t[0]?``:I(t[0])}`.trim()),u=o&&e.tool!==`secret_drop`&&n(`button`,{type:`button`,class:`cmp-link`},A());return u&&(u.onclick=o),c.el.append(...s?s.select?N(c,s):P(c,s):[...t.length?t.map(e=>L(e,r)):[n(`p`,{class:`ask-why`},e.why??F())],n(`div`,{class:`ask-acts`},l,u)],c.note),c}let K=(t,n)=>{let r=document.activeElement;c&&c!==n&&(c.focus=c.el.contains(r)?r:void 0),[s,c,m]=[t,n,n?.send?n:m],e.replaceChildren(...n?[n.el]:[]),D(),n?.focus&&(!document.activeElement||document.activeElement===document.body)&&n.focus.focus()};return{update(e,t){h=t,e&&(T=void clearTimeout(T)),!e&&(c?.done||c?.sending)?T??=setTimeout(()=>(T=void 0,K()),6e3):e?c&&(G(e)===c.key||!e.answer&&(c.done||c.sending)&&e.callId===s?.callId)?((c.busy||c.sending)&&!e.answer?c.spell=!0:c.busy&&c.spell&&e.answer&&([c.done,c.busy]=[!1,!1],E(c.note,``,x())),s=e):K(e,m?.key===G(e)&&!m.done?m:H(e)):K(),D()}}}export{h as i,P as n,k as r,K as t};
1
+ import{M as e,b as t}from"./index-CZq2ySys.js";import{t as n}from"./dom-BaTXH9WU.js";var r=((t={},n={})=>(n.locale??e())===`zh-TW`?`另一個答案正在送出;請查看終端機。`:`Another answer is on its way; check the terminal.`),i=((t={},n={})=>(n.locale??e())===`zh-TW`?`請在終端機中回答。`:`Answer it in the terminal.`),a=((t={},n={})=>(n.locale??e())===`zh-TW`?`請在終端機中回答。`:`Answer them in the terminal.`),o=((t={},n={})=>(n.locale??e())===`zh-TW`?`已回答。`:`Answered.`),s=((t={},n={})=>(n.locale??e())===`zh-TW`?`也可以自己輸入答案。`:`It also takes your own words.`),c=((t={},n={})=>(n.locale??e())===`zh-TW`?`可以複選。`:`It takes several choices.`),l=((t={},n={})=>(n.locale??e())===`zh-TW`?`再次確認`:`Check again`),u=((t={},n={})=>(n.locale??e())===`zh-TW`?`選擇`:`Choices`),d=((t={},n={})=>(n.locale??e())===`zh-TW`?`瀏覽器拒絕存取剪貼簿。`:`The browser refused the clipboard.`),f=((t={},n={})=>(n.locale??e())===`zh-TW`?`已複製到這台裝置的剪貼簿。`:`Copied to this device's clipboard.`),p=((t={},n={})=>(n.locale??e())===`zh-TW`?`複製指令`:`Copy command`);function m(e,t,n,r){if(typeof t!=`string`||n!==void 0&&!r)return new e(t,n);let i=m;if(n!==void 0){let r=i.prototypeKeys??=new Set([`constructor`,`__defineGetter__`,`__defineSetter__`,`hasOwnProperty`,`__lookupGetter__`,`__lookupSetter__`,`isPrototypeOf`,`propertyIsEnumerable`,`toString`,`valueOf`,`__proto__`,`toLocaleString`]);if(Object.getOwnPropertyNames(Object.prototype).some(e=>!r.has(e)))return new e(t,n)}let a=[];for(let r of Object.keys(n??{}).sort()){let i=n[r];if(i!==void 0){if(i!==null&&![`string`,`number`,`boolean`].includes(typeof i)||typeof i==`number`&&!Number.isFinite(i))return new e(t,n);a.push([r,i])}}let o=JSON.stringify([t,a]),s=i.caches??=new WeakMap,c=s.get(e);if(c||(c=new Map,s.set(e,c)),c.has(o))return c.get(o);let l=new e(t,n);if(c.size>=256){let e=c.keys().next().value;e!==void 0&&c.delete(e)}return c.set(o,l),l}function h(e,t,n,r=!1){return m(Intl.PluralRules,e,n,r).select(Number(t)-Number(n?.offset??0))}var g=((t={},n={})=>(n.locale??e())===`zh-TW`?`這個選項有預覽;請在終端機中查看。`:`It has a preview; see it in the terminal.`),_=((t={},n={})=>(n.locale??e())===`zh-TW`?`未確認。請查看終端機。`:`Not confirmed. Check the terminal.`),v=((t={},n={})=>(n.locale??e())===`zh-TW`?`備註`:`Note`),y=((t={},n={})=>(n.locale??e())===`zh-TW`?`備註(選填)`:`Note (optional)`),b=((t={},n={})=>(n.locale??e())===`zh-TW`?`選項`:`Options`),x=((t={},n={})=>(n.locale??e())===`zh-TW`?`另一個答案沒有被採用;這個可以送出。`:`The other answer was not taken; this one can go.`),S=((t={},n={})=>(n.locale??e())===`zh-TW`?`你的答案`:`Your own answer`),C=((t={},n={})=>(n.locale??e())===`zh-TW`?`或自己輸入答案`:`Or type your own answer`),w=((t={},n={})=>(n.locale??e())===`zh-TW`?`問題已變更,請重新閱讀。`:`The question changed; read it again.`),T=((t={},n={})=>(n.locale??e())===`zh-TW`?`session 讀不懂這個答案。`:`The session could not read that answer.`),E=((t={},n={})=>(n.locale??e())===`zh-TW`?`這個答案不符合問題。`:`That answer does not fit the question.`),D=((t={},n={})=>(n.locale??e())===`zh-TW`?`session 拒絕了這個答案。`:`The session refused that answer.`),O=((t={},n={})=>(n.locale??e())===`zh-TW`?`送出答案`:`Send answer`),k=((t={},n={})=>(n.locale??e())===`zh-TW`?`送出中…`:`Sending…`),A=((t={},n={})=>(n.locale??e())===`zh-TW`?`顯示終端機`:`Show terminal`),j=((t={},n={})=>(n.locale??e())===`zh-TW`?`已在終端機中關閉。`:`It was dismissed in the terminal.`),M=((t={},n={})=>(n.locale??e())===`zh-TW`?`它已不再開啟。`:`It is no longer open.`),N=((t={},n={})=>(n.locale??e())===`zh-TW`?`已在終端機中回答。`:`It was already answered in the terminal.`),P=((t={},n={})=>(n.locale??e())===`zh-TW`?`連不上伺服器。`:`The server could not be reached.`),F=((t={},n={})=>(n.locale??e())===`zh-TW`?`它在等待對話框。`:`It waits on a dialog.`),I=e=>e.multiple?c():e.freeform&&e.options.length?s():``,L=(e,t)=>n(`div`,{class:`ask-one`},e.header&&n(`b`,{class:`ask-head`},e.header),n(`p`,{class:`ask-q`},e.question),e.context&&n(`div`,{class:`ask-ctx`},e.context),e.options.length>0&&n(`ol`,{class:`ask-opts`,"aria-label":b()},...e.options.map(e=>n(`li`,{class:`ask-opt`},n(`b`,null,e.title),e.description&&n(`small`,null,e.description)))),t&&I(e)&&n(`small`,{class:`ask-how`},I(e))),R=e=>e.replace(/[\u0000-\u0008\u000b-\u001f\u007f-\u009f]/g,`�`),z=(e,t)=>(e.select?.choices??[]).map((e,t)=>({...e,i:t})).filter(e=>!(t&&e.localOnly)),B=(e,t,n)=>({...e.size?{choices:[...e].sort((e,t)=>e-t)}:{},...t.trim()?{text:t}:{},...n.trim()?{note:n}:{}}),V=(e,t,n)=>({dialog:e.dialog,digest:e.digest,answerId:n,...t}),H={digest:w,"not-allowed":E,malformed:T};function U(e){let{outcome:n,reason:i,by:a}=e.body;return n===`accepted`?[`ok`,o()]:n===`stale`?[`error`,a===`local`?N():a===`cancel`?j():M()]:n===`rejected`?[`error`,(Object.hasOwn(H,String(i))?H[String(i)]:D)()]:n===`busy`?[`error`,r()]:n===`unknown`||e.status===504?[`error`,_(),!0]:[`error`,i??t({status:e.status})]}var W=e=>[`accepted`,`stale`,`busy`,`unknown`].includes(String(e.body.outcome))||e.status===504,G=e=>e.answer?`d\n${e.answer.dialog}\n${e.answer.digest}`:`c\n${e.callId}\n${e.why??``}`;function K(e,t,r=location.hostname!==`127.0.0.1`,o){let s,c,m,h=!1,w=!1,T;for(let e of[`focusin`,`pointerdown`])document.addEventListener(e,e=>c&&!c.el.contains(e.target)&&(c.lost=void 0));let E=(e,t,n,...r)=>(e.dataset.tone=t,e.replaceChildren(n,...r)),D=()=>{if(!c)return;let e=document.activeElement;e&&e!==document.body&&e!==c.lost&&(c.lost=void 0),c.controls.forEach(e=>e.disabled=!h||w||c.done),c.send&&(c.send.disabled=!h||w||c.done||!c.pick()),e&&c.el.contains(e)&&e.disabled&&(c.lost=e);let t=c.lost;t&&!t.disabled&&c.el.contains(t)&&(!document.activeElement||document.activeElement===document.body)&&(t.focus(),c.lost=void 0)};async function j(e,r){[e.sending,w,e.spell]=[!0,!0,!1],D(),E(e.note,``,k());let i=await t(`answer`,r).catch(()=>void 0),a=n(`button`,{type:`button`,class:`cmp-link`},l());a.onclick=()=>void j(e,r);let[o,s,c]=i?U(i):[`error`,_(),!0];[e.done,e.sending,w,e.busy]=[!i||W(i),!1,!1,i?.body.outcome===`busy`],E(e.note,o,s,...c?[a]:[]),D(),e.note.scrollIntoView?.({block:`nearest`})}let M=(e,t,r,i,a)=>{let o=n(`button`,{type:`button`,class:`ask-opt`,role:e,"aria-checked":`false`},n(`b`,a?{"data-n":String(a)}:null,t),...r.filter(Boolean).map(e=>n(`small`,null,e)));return o.onclick=i,o};function N(e,t){let i,a=z(t,r).map(e=>M(`radio`,e.label,[e.note],()=>(i=e.i,a.forEach((n,i)=>n.setAttribute(`aria-checked`,String(z(t,r)[i].i===e.i))),D()),e.i+1)),o=t.select?.copy!==void 0&&n(`button`,{type:`button`,class:`cmp-link`},p());return o&&(o.disabled=!navigator.clipboard,o.onclick=()=>void navigator.clipboard.writeText(t.select.copy).then(()=>E(e.note,`ok`,f()),()=>E(e.note,`error`,d()))),e.pick=()=>i===void 0?void 0:{choice:i},e.controls=a,[n(`pre`,{class:`ask-title`},R(t.select.title)),n(`div`,{class:`ask-opts`,role:`radiogroup`,"aria-label":u()},...a),n(`div`,{class:`ask-acts`},e.send,o)]}function P(e,t){let r=t.questions.map(()=>({picks:new Set,text:n(`input`,{type:`text`,maxlength:`8192`,class:`ask-own`,placeholder:C(),"aria-label":S()}),note:n(`input`,{type:`text`,maxlength:`2048`,class:`ask-own ask-memo`,placeholder:y(),"aria-label":v()})})),i=t.questions.map((t,i)=>{let a=r[i],o=t.multiple?`checkbox`:`radio`,s=t.options.map((e,n)=>M(o,e.title,[e.description,e.preview&&g()],()=>{t.multiple||(a.picks.clear(),a.text.value=``),a.picks.has(n)?a.picks.delete(n):a.picks.add(n),s.forEach((e,t)=>e.setAttribute(`aria-checked`,String(a.picks.has(t)))),D()}));return a.text.oninput=()=>(t.multiple||(a.picks.clear(),s.forEach(e=>e.setAttribute(`aria-checked`,`false`))),D()),e.controls.push(...s,a.text,a.note),n(`div`,{class:`ask-one`},t.header&&n(`b`,{class:`ask-head`},t.header),n(`p`,{class:`ask-q`},t.question),n(`div`,{class:`ask-opts`,role:t.multiple?`group`:`radiogroup`,"aria-label":b()},...s),a.text,a.note)});return e.pick=()=>r.every(e=>e.picks.size||e.text.value.trim())?{answers:r.map(e=>B(e.picks,e.text.value,e.note.value))}:void 0,[...i,n(`div`,{class:`ask-acts`},e.send)]}function H(e){let t=e.asks??(e.ask?[e.ask]:[]),r=t.length>1,s=e.answer,c={key:G(e),el:n(`section`,{class:`ask`}),note:n(`p`,{class:`ask-note`,role:`status`,"aria-live":`polite`}),controls:[],pick:()=>void 0,done:!1,sending:!1};s&&((c.send=n(`button`,{type:`button`,class:`ask-send`},O())).onclick=()=>void(c.pick()&&j(c,V(s,c.pick(),crypto.randomUUID()))));let l=n(`p`,{class:`ask-term`},e.why&&t.length?e.why:`${r?a():i()} ${r||!t[0]?``:I(t[0])}`.trim()),u=o&&e.tool!==`secret_drop`&&n(`button`,{type:`button`,class:`cmp-link`},A());return u&&(u.onclick=o),c.el.append(...s?s.select?N(c,s):P(c,s):[...t.length?t.map(e=>L(e,r)):[n(`p`,{class:`ask-why`},e.why??F())],n(`div`,{class:`ask-acts`},l,u)],c.note),c}let K=(t,n)=>{let r=document.activeElement;c&&c!==n&&(c.focus=c.el.contains(r)?r:void 0),[s,c,m]=[t,n,n?.send?n:m],e.replaceChildren(...n?[n.el]:[]),D(),n?.focus&&(!document.activeElement||document.activeElement===document.body)&&n.focus.focus()};return{update(e,t){h=t,e&&(T=void clearTimeout(T)),!e&&(c?.done||c?.sending)?T??=setTimeout(()=>(T=void 0,K()),6e3):e?c&&(G(e)===c.key||!e.answer&&(c.done||c.sending)&&e.callId===s?.callId)?((c.busy||c.sending)&&!e.answer?c.spell=!0:c.busy&&c.spell&&e.answer&&([c.done,c.busy]=[!1,!1],E(c.note,``,x())),s=e):K(e,m?.key===G(e)&&!m.done?m:H(e)):K(),D()}}}export{h as i,P as n,k as r,K as t};
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-D-3yz3dW.css"])))=>i.map(i=>d[i]);
2
- import{M as e,d as t,n,t as r}from"./index-BInsCHu4.js";import{t as i}from"./dom-BaTXH9WU.js";import{n as a,t as o}from"./views-DnWoV-MO.js";var s=((t={},n={})=>(n.locale??e())===`zh-TW`?`分支摘要`:`branch summary`),c=((t={},n={})=>(n.locale??e())===`zh-TW`?`通訊紀錄`:`Comms log`),l=e=>`context compacted · ${e?.tokens} tokens summarized`,u=e=>`上下文已壓縮 · 摘要了 ${e?.tokens} tokens`,d=((t,n={})=>(n.locale??e())===`zh-TW`?u(t):l(t)),f=((t={},n={})=>(n.locale??e())===`zh-TW`?`…(於 1 MB 截斷)`:`… (cut at 1 MB)`),p=e=>`exit ${e?.code}`,m=e=>`結束碼 ${e?.code}`,h=((t,n={})=>(n.locale??e())===`zh-TW`?m(t):p(t)),g=e=>`Image ${e?.n}`,_=e=>`圖片 ${e?.n}`,v=((t,n={})=>(n.locale??e())===`zh-TW`?_(t):g(t)),y=((t={},n={})=>(n.locale??e())===`zh-TW`?`圖片無法讀取`:`Image unavailable`),b=e=>`${e?.count} image(s)`,x=e=>`${e?.count} 張圖片`,S=((t,n={})=>(n.locale??e())===`zh-TW`?x(t):b(t)),C=((t={},n={})=>(n.locale??e())===`zh-TW`?`收到`:`incoming`),w=((t={},n={})=>(n.locale??e())===`zh-TW`?`跳到最新`:`jump to latest`),T=e=>`${e?.count} new`,E=e=>`${e?.count} 則新訊息`,D=((t,n={})=>(n.locale??e())===`zh-TW`?E(t):T(t)),ee=((t={},n={})=>(n.locale??e())===`zh-TW`?`還沒有通訊。`:`No transmissions yet.`),O=((t={},n={})=>(n.locale??e())===`zh-TW`?`通知`:`notice`),k=((t={},n={})=>(n.locale??e())===`zh-TW`?`表單回覆`:`form answers`),A=((t={},n={})=>(n.locale??e())===`zh-TW`?`訊息,來自`:`message from`),j=((t={},n={})=>(n.locale??e())===`zh-TW`?`記憶`:`memory`),M=((t={},n={})=>(n.locale??e())===`zh-TW`?`監看`:`monitor`),N=((t={},n={})=>(n.locale??e())===`zh-TW`?`提問,來自`:`question from`),P=((t={},n={})=>(n.locale??e())===`zh-TW`?`回報,來自`:`report from`),F=((t={},n={})=>(n.locale??e())===`zh-TW`?`狀態:`:`status of`),te=((t={},n={})=>(n.locale??e())===`zh-TW`?`在旁開啟`:`open beside`),I=e=>`Open image ${e?.n}`,L=e=>`打開圖片 ${e?.n}`,R=((t,n={})=>(n.locale??e())===`zh-TW`?L(t):I(t)),z=e=>`show all (${e?.size})`,B=e=>`顯示全部(${e?.size})`,V=((t,n={})=>(n.locale??e())===`zh-TW`?B(t):z(t)),H=((t={},n={})=>(n.locale??e())===`zh-TW`?`顯示全部參數`:`show all arguments`),U=e=>`◇ thought · ${e?.count} chars`,W=e=>`◇ 思考 · ${e?.count} 字元`,G=((t,n={})=>(n.locale??e())===`zh-TW`?W(t):U(t)),ne=((t={},n={})=>(n.locale??e())===`zh-TW`?`◇ 思考 · 已遮蔽`:`◇ thought · redacted`),K=((t={},n={})=>(n.locale??e())===`zh-TW`?`無法取得`:`unavailable`),re=((t={},n={})=>(n.locale??e())===`zh-TW`?`你`:`you`);function ie(){let e=!0,t=0;return{get pinned(){return e},scrolled(n){e=n,n&&(t=0)},hold:()=>void(e=!1),arrived(n){return e||(t+=n),e},jump:()=>void(e=!0,t=0),button:n=>e&&!n?void 0:t&&!n?D({count:t}):w()}}async function ae(e,t,n,r){let i=()=>e.items.some(e=>e.id===n);for(;!i()&&e.before;)r(e.prepend(await t.older(e.before)));return i()?!0:(r(e.reset(await t.latest())),!1)}function oe(e=600){let t=[],n,r=!1,i=new Set,a=new Map,o=new Map,s=e=>e.forEach(e=>(i.delete(e.id),e.tools?.forEach(e=>(o.delete(e.id),a.delete(e.id)))));function c(e,t){let n=[];for(let r of e)i.has(r.id)||(i.add(r.id),r.kind===`result`&&r.callId?(a.set(r.callId,r),o.has(r.callId)&&t.add(o.get(r.callId))):(r.tools?.forEach(e=>o.set(e.id,r.id)),n.push(r)));return n}let l=e=>({rebuild:!1,added:[],touched:[],dropped:[],front:!1,...e});return{get items(){return t},get before(){return n},get detached(){return r},result:e=>a.get(e),reset(e){return[t,n,r]=[[],e.before,!1],i.clear(),a.clear(),o.clear(),t=c(e.items,new Set),l({rebuild:!0,added:t})},append(i){if(r)return l({});let a=new Set,o=c(i,a);t.push(...o);let u=t.length>e?t.splice(0,t.length-e):[];return s(u),u.length&&(n=t[0].id),l({added:o,touched:[...a],dropped:u.map(e=>e.id)})},prepend(i){let a=new Set,o=c(i.items,a);t.unshift(...o),n=i.before;let u=t.length>e?t.splice(e):[];return s(u),u.length&&(r=!0),l({added:o,touched:[...a],dropped:u.map(e=>e.id),front:!0})}}}var se=e=>e?new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,hour12:!1}):``,ce=e=>e>=1024?`${(e/1024).toFixed(e>=10240?0:1)} KB`:`${e} B`,le={intercom_message:A,subagent_result:P,subagent_ping:N,subagent_status:F,"pi-loop-monitor":M,"memory-context":j,"doc-review":k},q=e=>{let r=t(`<span class="ava"><svg><use/></svg></span>`);return r.querySelector(`use`).setAttribute(`href`,`#i-${n[e]??e}`),r};function ue(e){let t=[],n=0;for(let r of e.matchAll(/https?:\/\/[^\s<>)\]]+/g))t.push(e.slice(n,r.index),i(`a`,{href:r[0],rel:`noopener noreferrer`,target:`_blank`},r[0])),n=r.index+r[0].length;return[...t,e.slice(n)]}function J(e,t,{who:n,link:l,docFor:u}){let p=oe(),m=new Map,g=new Set,_=()=>g.forEach(e=>e.button.isConnected?(e.shown=!0,e.button.hidden=!e.paths.some(e=>u?.(e))):e.shown&&g.delete(e)),b=i(`div`,{class:`chat-list`}),x=i(`div`,{class:`chat-top`}),w=i(`div`,{class:`chat-live`}),T=i(`button`,{class:`chat-pill`,type:`button`,hidden:``}),E=i(`p`,{class:`chat-empty`},ee()),D=i(`div`,{class:`chat-scroll`,tabindex:`-1`,"aria-label":c()},x,b,w);e.replaceChildren(D,T);let k=ie(),A=!1,j=!1,M,N,P=0,F=()=>D.scrollHeight-D.scrollTop-D.clientHeight<80,I=(e=k.button(p.detached))=>(T.hidden=!e,T.textContent=e??``),L=()=>(k.jump(),N=void 0,D.scrollTop=D.scrollHeight,I());async function z(e){A=!0;let n=await ae(p,t,e,e=>(X(e),Z(e))).finally(()=>A=!1),r=m.get(e);if(M===e){if(!n||!r)return L();k.hold(),N=r,r.scrollIntoView({block:`center`}),r.classList.remove(`lit`),r.offsetWidth,r.classList.add(`lit`),clearTimeout(P),P=window.setTimeout(()=>(N=void 0,r.classList.remove(`lit`)),2e3),I()}}let B=()=>M?void z(M):L(),U=(e,n,r,i)=>{e.disabled=!0,t.entry(r).then(t=>{let r=t&&i(t);if(r===void 0)return void(e.textContent=K());n.textContent=r,e.remove()},()=>e.textContent=K())};function W(e,n=0){if(!n||!t.pic)return null;let a=Array.from({length:n},(n,r)=>t.pic(e,r));return i(`div`,{class:`pics`},...a.map((e,t)=>{let n=i(`img`,{src:e,alt:v({n:t+1}),loading:`lazy`,decoding:`async`}),o=i(`button`,{type:`button`,class:`pic`,"aria-label":R({n:t+1})},n);return n.addEventListener(`error`,()=>o.replaceWith(i(`em`,{class:`pic-gone`},y()))),o.addEventListener(`click`,()=>void r(async()=>{let{lightbox:e}=await import(`./lightbox-B-5xklrt.js`);return{lightbox:e}},__vite__mapDeps([0]),import.meta.url).then(({lightbox:e})=>e(a,t))),o}))}function J(e,t){let n=p.result(e.id),r=i(`pre`,{class:`out`},n?.text??``),a=i(`pre`,{class:`args`},e.args??``),o=e.cut?i(`button`,{class:`more`,type:`button`},H()):null;o?.addEventListener(`click`,()=>U(o,a,t,t=>(e=>e&&`${e.args??``}${e.cut?`\n${f()}`:``}`)(t.tools?.find(t=>t.id===e.id))));let s=n?.more?i(`button`,{class:`more`,type:`button`},V({size:ce(n.bytes??0)})):null;s?.addEventListener(`click`,()=>U(s,r,n.id,e=>e.text));let c=e.name===`show_doc`&&u?i(`button`,{class:`more open`,type:`button`,hidden:``},te()):null;c?.addEventListener(`click`,t=>(t.preventDefault(),e.summary.split(`, `).forEach(e=>u?.(e)?.()))),c&&g.add({paths:e.summary.split(`, `),button:c}),c&&queueMicrotask(_);let l=i(`details`,{class:`act`},i(`summary`,{"data-mark":n?n.isError?`error`:`done`:`working`},i(`b`,{class:`badge`}),i(`code`,null,e.name),i(`span`,{class:`sum`},e.summary),c),a,o,n&&i(`div`,{class:`result`},n.images?i(`em`,null,S({count:n.images})):null,r,s)),d=n&&W(n.id,n.images);return d?[l,d]:[l]}function Y(e){let t=i(`time`,null,se(e.at));switch(e.kind){case`user`:return i(`article`,{class:`tx you`},i(`header`,null,t,i(`b`,null,re()),q(`user`)),i(`div`,{class:`bubble`},...ue(e.text??``),W(e.id,e.images)));case`assistant`:{let r=n(),s=i(`pre`,{class:`thought-text`}),c=e.thought?i(`button`,{class:`thought`,type:`button`},e.thought<0?ne():G({count:e.thought.toLocaleString()})):null;return e.thought&&e.thought>0&&c?.addEventListener(`click`,()=>U(c,s,e.id,e=>e.thoughtText)),i(`article`,{class:`tx in`},q(r.role),i(`div`,{class:`tx-body`},i(`header`,null,i(`b`,null,r.name),e.model?i(`span`,null,e.model):null,t,e.stop?i(`span`,{class:`stop`,"data-mark":`error`},e.stop):null),c,s,e.text?i(`div`,{class:`md`},o(a(e.text))):null,e.error?i(`p`,{class:`fault`},e.error):null,...(e.tools??[]).flatMap(t=>J(t,e.id))))}case`bash`:return i(`article`,{class:`tx sys`},i(`details`,{class:`act`},i(`summary`,{"data-mark":e.exit?`error`:`done`},i(`b`,{class:`badge`}),i(`code`,null,`shell`),i(`span`,{class:`sum`},`! ${e.command}`),e.exit?i(`span`,{class:`stop`,"data-mark":`error`},h({code:e.exit})):null),e.text?i(`pre`,{class:`out`},e.text):null));case`notice`:return i(`article`,{class:`tx sys`},i(`details`,{class:`notice`},i(`summary`,null,q(`comms`),i(`em`,null,C()),le[e.type??``]?.()??e.type??O(),` `,e.from&&l(e.from)||(e.from??``),t),i(`pre`,null,e.text??``)));case`divider`:return i(`article`,{class:`tx rule`},i(`details`,null,i(`summary`,null,e.type===`compaction`?d({tokens:(e.tokens??0).toLocaleString()}):s()),i(`pre`,null,e.text??``)));default:return i(`article`,{class:`tx note`},e.text??``,` `,t)}}function X(e){e.rebuild&&(m.clear(),b.replaceChildren());for(let t of e.dropped)m.get(t)?.remove(),m.delete(t);let t=e.added.map(e=>(m.set(e.id,Y(e)),m.get(e.id)));e.front?b.prepend(...t):b.append(...t),j&&!e.front&&!e.rebuild&&t.forEach(e=>(e.classList.add(`fresh`),e.dataset.born=String(Date.now()))),E.remove(),p.items.length||b.append(E),x.hidden=!p.before}let Z=e=>e.touched.forEach(e=>{let t=m.get(e),n=p.items.find(t=>t.id===e);if(t&&n){let r=Y(n);t.classList.contains(`fresh`)&&Date.now()-Number(t.dataset.born??0)<400&&r.classList.add(`fresh`),t.replaceWith(r),m.set(e,r)}}),Q=async()=>{if(!A&&p.before&&j){A=!0;try{let e=D.scrollHeight,n=p.prepend(await t.older(p.before));X(n),Z(n),D.scrollTop+=D.scrollHeight-e}finally{A=!1}p.before&&D.clientHeight&&x.getBoundingClientRect().bottom>=D.getBoundingClientRect().top&&Q()}};new IntersectionObserver(e=>e.some(e=>e.isIntersecting)&&void Q(),{root:D}).observe(x),T.addEventListener(`click`,()=>{M=void 0,p.detached?t.latest().then(e=>(X(p.reset(e)),L())):L()}),D.addEventListener(`scroll`,()=>(k.scrolled(F()),I()),{passive:!0});for(let e of[`wheel`,`touchstart`,`pointerdown`,`keydown`])D.addEventListener(e,()=>N=M=void 0,{passive:!0});let $=new ResizeObserver(()=>k.pinned&&!p.detached?D.scrollTop=D.scrollHeight:N?.scrollIntoView({block:`center`}));return $.observe(b),$.observe(D),{log:D,docs:_,apply(e){if(e.reset)X(p.reset({items:e.items??[],before:e.before})),j=!0,B();else if(e.items?.length){let t=p.append(e.items);X(t),Z(t),k.arrived(t.added.length)&&!p.detached?L():I()}},reveal(e){M=e,j&&B()},setLive(e,t){w.dataset.mark=t,w.lastChild?.textContent!==e&&w.replaceChildren(...e?[i(`b`,{class:`badge`}),i(`span`,null,e)]:[])}}}export{J as mountChat,v as t};
2
+ import{M as e,d as t,n,t as r}from"./index-CZq2ySys.js";import{t as i}from"./dom-BaTXH9WU.js";import{n as a,t as o}from"./views-CZLZBkEo.js";var s=((t={},n={})=>(n.locale??e())===`zh-TW`?`分支摘要`:`branch summary`),c=((t={},n={})=>(n.locale??e())===`zh-TW`?`通訊紀錄`:`Comms log`),l=e=>`context compacted · ${e?.tokens} tokens summarized`,u=e=>`上下文已壓縮 · 摘要了 ${e?.tokens} tokens`,d=((t,n={})=>(n.locale??e())===`zh-TW`?u(t):l(t)),f=((t={},n={})=>(n.locale??e())===`zh-TW`?`…(於 1 MB 截斷)`:`… (cut at 1 MB)`),p=e=>`exit ${e?.code}`,m=e=>`結束碼 ${e?.code}`,h=((t,n={})=>(n.locale??e())===`zh-TW`?m(t):p(t)),g=e=>`Image ${e?.n}`,_=e=>`圖片 ${e?.n}`,v=((t,n={})=>(n.locale??e())===`zh-TW`?_(t):g(t)),y=((t={},n={})=>(n.locale??e())===`zh-TW`?`圖片無法讀取`:`Image unavailable`),b=e=>`${e?.count} image(s)`,x=e=>`${e?.count} 張圖片`,S=((t,n={})=>(n.locale??e())===`zh-TW`?x(t):b(t)),C=((t={},n={})=>(n.locale??e())===`zh-TW`?`收到`:`incoming`),w=((t={},n={})=>(n.locale??e())===`zh-TW`?`跳到最新`:`jump to latest`),T=e=>`${e?.count} new`,E=e=>`${e?.count} 則新訊息`,D=((t,n={})=>(n.locale??e())===`zh-TW`?E(t):T(t)),ee=((t={},n={})=>(n.locale??e())===`zh-TW`?`還沒有通訊。`:`No transmissions yet.`),O=((t={},n={})=>(n.locale??e())===`zh-TW`?`通知`:`notice`),k=((t={},n={})=>(n.locale??e())===`zh-TW`?`表單回覆`:`form answers`),A=((t={},n={})=>(n.locale??e())===`zh-TW`?`訊息,來自`:`message from`),j=((t={},n={})=>(n.locale??e())===`zh-TW`?`記憶`:`memory`),M=((t={},n={})=>(n.locale??e())===`zh-TW`?`監看`:`monitor`),N=((t={},n={})=>(n.locale??e())===`zh-TW`?`提問,來自`:`question from`),P=((t={},n={})=>(n.locale??e())===`zh-TW`?`回報,來自`:`report from`),F=((t={},n={})=>(n.locale??e())===`zh-TW`?`狀態:`:`status of`),te=((t={},n={})=>(n.locale??e())===`zh-TW`?`在旁開啟`:`open beside`),I=e=>`Open image ${e?.n}`,L=e=>`打開圖片 ${e?.n}`,R=((t,n={})=>(n.locale??e())===`zh-TW`?L(t):I(t)),z=e=>`show all (${e?.size})`,B=e=>`顯示全部(${e?.size})`,V=((t,n={})=>(n.locale??e())===`zh-TW`?B(t):z(t)),H=((t={},n={})=>(n.locale??e())===`zh-TW`?`顯示全部參數`:`show all arguments`),U=e=>`◇ thought · ${e?.count} chars`,W=e=>`◇ 思考 · ${e?.count} 字元`,G=((t,n={})=>(n.locale??e())===`zh-TW`?W(t):U(t)),ne=((t={},n={})=>(n.locale??e())===`zh-TW`?`◇ 思考 · 已遮蔽`:`◇ thought · redacted`),K=((t={},n={})=>(n.locale??e())===`zh-TW`?`無法取得`:`unavailable`),re=((t={},n={})=>(n.locale??e())===`zh-TW`?`你`:`you`);function ie(){let e=!0,t=0;return{get pinned(){return e},scrolled(n){e=n,n&&(t=0)},hold:()=>void(e=!1),arrived(n){return e||(t+=n),e},jump:()=>void(e=!0,t=0),button:n=>e&&!n?void 0:t&&!n?D({count:t}):w()}}async function ae(e,t,n,r){let i=()=>e.items.some(e=>e.id===n);for(;!i()&&e.before;)r(e.prepend(await t.older(e.before)));return i()?!0:(r(e.reset(await t.latest())),!1)}function oe(e=600){let t=[],n,r=!1,i=new Set,a=new Map,o=new Map,s=e=>e.forEach(e=>(i.delete(e.id),e.tools?.forEach(e=>(o.delete(e.id),a.delete(e.id)))));function c(e,t){let n=[];for(let r of e)i.has(r.id)||(i.add(r.id),r.kind===`result`&&r.callId?(a.set(r.callId,r),o.has(r.callId)&&t.add(o.get(r.callId))):(r.tools?.forEach(e=>o.set(e.id,r.id)),n.push(r)));return n}let l=e=>({rebuild:!1,added:[],touched:[],dropped:[],front:!1,...e});return{get items(){return t},get before(){return n},get detached(){return r},result:e=>a.get(e),reset(e){return[t,n,r]=[[],e.before,!1],i.clear(),a.clear(),o.clear(),t=c(e.items,new Set),l({rebuild:!0,added:t})},append(i){if(r)return l({});let a=new Set,o=c(i,a);t.push(...o);let u=t.length>e?t.splice(0,t.length-e):[];return s(u),u.length&&(n=t[0].id),l({added:o,touched:[...a],dropped:u.map(e=>e.id)})},prepend(i){let a=new Set,o=c(i.items,a);t.unshift(...o),n=i.before;let u=t.length>e?t.splice(e):[];return s(u),u.length&&(r=!0),l({added:o,touched:[...a],dropped:u.map(e=>e.id),front:!0})}}}var se=e=>e?new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,hour12:!1}):``,ce=e=>e>=1024?`${(e/1024).toFixed(e>=10240?0:1)} KB`:`${e} B`,le={intercom_message:A,subagent_result:P,subagent_ping:N,subagent_status:F,"pi-loop-monitor":M,"memory-context":j,"doc-review":k},q=e=>{let r=t(`<span class="ava"><svg><use/></svg></span>`);return r.querySelector(`use`).setAttribute(`href`,`#i-${n[e]??e}`),r};function ue(e){let t=[],n=0;for(let r of e.matchAll(/https?:\/\/[^\s<>)\]]+/g))t.push(e.slice(n,r.index),i(`a`,{href:r[0],rel:`noopener noreferrer`,target:`_blank`},r[0])),n=r.index+r[0].length;return[...t,e.slice(n)]}function J(e,t,{who:n,link:l,docFor:u}){let p=oe(),m=new Map,g=new Set,_=()=>g.forEach(e=>e.button.isConnected?(e.shown=!0,e.button.hidden=!e.paths.some(e=>u?.(e))):e.shown&&g.delete(e)),b=i(`div`,{class:`chat-list`}),x=i(`div`,{class:`chat-top`}),w=i(`div`,{class:`chat-live`}),T=i(`button`,{class:`chat-pill`,type:`button`,hidden:``}),E=i(`p`,{class:`chat-empty`},ee()),D=i(`div`,{class:`chat-scroll`,tabindex:`-1`,"aria-label":c()},x,b,w);e.replaceChildren(D,T);let k=ie(),A=!1,j=!1,M,N,P=0,F=()=>D.scrollHeight-D.scrollTop-D.clientHeight<80,I=(e=k.button(p.detached))=>(T.hidden=!e,T.textContent=e??``),L=()=>(k.jump(),N=void 0,D.scrollTop=D.scrollHeight,I());async function z(e){A=!0;let n=await ae(p,t,e,e=>(X(e),Z(e))).finally(()=>A=!1),r=m.get(e);if(M===e){if(!n||!r)return L();k.hold(),N=r,r.scrollIntoView({block:`center`}),r.classList.remove(`lit`),r.offsetWidth,r.classList.add(`lit`),clearTimeout(P),P=window.setTimeout(()=>(N=void 0,r.classList.remove(`lit`)),2e3),I()}}let B=()=>M?void z(M):L(),U=(e,n,r,i)=>{e.disabled=!0,t.entry(r).then(t=>{let r=t&&i(t);if(r===void 0)return void(e.textContent=K());n.textContent=r,e.remove()},()=>e.textContent=K())};function W(e,n=0){if(!n||!t.pic)return null;let a=Array.from({length:n},(n,r)=>t.pic(e,r));return i(`div`,{class:`pics`},...a.map((e,t)=>{let n=i(`img`,{src:e,alt:v({n:t+1}),loading:`lazy`,decoding:`async`}),o=i(`button`,{type:`button`,class:`pic`,"aria-label":R({n:t+1})},n);return n.addEventListener(`error`,()=>o.replaceWith(i(`em`,{class:`pic-gone`},y()))),o.addEventListener(`click`,()=>void r(async()=>{let{lightbox:e}=await import(`./lightbox-Dvr26vhq.js`);return{lightbox:e}},__vite__mapDeps([0]),import.meta.url).then(({lightbox:e})=>e(a,t))),o}))}function J(e,t){let n=p.result(e.id),r=i(`pre`,{class:`out`},n?.text??``),a=i(`pre`,{class:`args`},e.args??``),o=e.cut?i(`button`,{class:`more`,type:`button`},H()):null;o?.addEventListener(`click`,()=>U(o,a,t,t=>(e=>e&&`${e.args??``}${e.cut?`\n${f()}`:``}`)(t.tools?.find(t=>t.id===e.id))));let s=n?.more?i(`button`,{class:`more`,type:`button`},V({size:ce(n.bytes??0)})):null;s?.addEventListener(`click`,()=>U(s,r,n.id,e=>e.text));let c=e.name===`show_doc`&&u?i(`button`,{class:`more open`,type:`button`,hidden:``},te()):null;c?.addEventListener(`click`,t=>(t.preventDefault(),e.summary.split(`, `).forEach(e=>u?.(e)?.()))),c&&g.add({paths:e.summary.split(`, `),button:c}),c&&queueMicrotask(_);let l=i(`details`,{class:`act`},i(`summary`,{"data-mark":n?n.isError?`error`:`done`:`working`},i(`b`,{class:`badge`}),i(`code`,null,e.name),i(`span`,{class:`sum`},e.summary),c),a,o,n&&i(`div`,{class:`result`},n.images?i(`em`,null,S({count:n.images})):null,r,s)),d=n&&W(n.id,n.images);return d?[l,d]:[l]}function Y(e){let t=i(`time`,null,se(e.at));switch(e.kind){case`user`:return i(`article`,{class:`tx you`},i(`header`,null,t,i(`b`,null,re()),q(`user`)),i(`div`,{class:`bubble`},...ue(e.text??``),W(e.id,e.images)));case`assistant`:{let r=n(),s=i(`pre`,{class:`thought-text`}),c=e.thought?i(`button`,{class:`thought`,type:`button`},e.thought<0?ne():G({count:e.thought.toLocaleString()})):null;return e.thought&&e.thought>0&&c?.addEventListener(`click`,()=>U(c,s,e.id,e=>e.thoughtText)),i(`article`,{class:`tx in`},q(r.role),i(`div`,{class:`tx-body`},i(`header`,null,i(`b`,null,r.name),e.model?i(`span`,null,e.model):null,t,e.stop?i(`span`,{class:`stop`,"data-mark":`error`},e.stop):null),c,s,e.text?i(`div`,{class:`md`},o(a(e.text))):null,e.error?i(`p`,{class:`fault`},e.error):null,...(e.tools??[]).flatMap(t=>J(t,e.id))))}case`bash`:return i(`article`,{class:`tx sys`},i(`details`,{class:`act`},i(`summary`,{"data-mark":e.exit?`error`:`done`},i(`b`,{class:`badge`}),i(`code`,null,`shell`),i(`span`,{class:`sum`},`! ${e.command}`),e.exit?i(`span`,{class:`stop`,"data-mark":`error`},h({code:e.exit})):null),e.text?i(`pre`,{class:`out`},e.text):null));case`notice`:return i(`article`,{class:`tx sys`},i(`details`,{class:`notice`},i(`summary`,null,q(`comms`),i(`em`,null,C()),le[e.type??``]?.()??e.type??O(),` `,e.from&&l(e.from)||(e.from??``),t),i(`pre`,null,e.text??``)));case`divider`:return i(`article`,{class:`tx rule`},i(`details`,null,i(`summary`,null,e.type===`compaction`?d({tokens:(e.tokens??0).toLocaleString()}):s()),i(`pre`,null,e.text??``)));default:return i(`article`,{class:`tx note`},e.text??``,` `,t)}}function X(e){e.rebuild&&(m.clear(),b.replaceChildren());for(let t of e.dropped)m.get(t)?.remove(),m.delete(t);let t=e.added.map(e=>(m.set(e.id,Y(e)),m.get(e.id)));e.front?b.prepend(...t):b.append(...t),j&&!e.front&&!e.rebuild&&t.forEach(e=>(e.classList.add(`fresh`),e.dataset.born=String(Date.now()))),E.remove(),p.items.length||b.append(E),x.hidden=!p.before}let Z=e=>e.touched.forEach(e=>{let t=m.get(e),n=p.items.find(t=>t.id===e);if(t&&n){let r=Y(n);t.classList.contains(`fresh`)&&Date.now()-Number(t.dataset.born??0)<400&&r.classList.add(`fresh`),t.replaceWith(r),m.set(e,r)}}),Q=async()=>{if(!A&&p.before&&j){A=!0;try{let e=D.scrollHeight,n=p.prepend(await t.older(p.before));X(n),Z(n),D.scrollTop+=D.scrollHeight-e}finally{A=!1}p.before&&D.clientHeight&&x.getBoundingClientRect().bottom>=D.getBoundingClientRect().top&&Q()}};new IntersectionObserver(e=>e.some(e=>e.isIntersecting)&&void Q(),{root:D}).observe(x),T.addEventListener(`click`,()=>{M=void 0,p.detached?t.latest().then(e=>(X(p.reset(e)),L())):L()}),D.addEventListener(`scroll`,()=>(k.scrolled(F()),I()),{passive:!0});for(let e of[`wheel`,`touchstart`,`pointerdown`,`keydown`])D.addEventListener(e,()=>N=M=void 0,{passive:!0});let $=new ResizeObserver(()=>k.pinned&&!p.detached?D.scrollTop=D.scrollHeight:N?.scrollIntoView({block:`center`}));return $.observe(b),$.observe(D),{log:D,docs:_,apply(e){if(e.reset)X(p.reset({items:e.items??[],before:e.before})),j=!0,B();else if(e.items?.length){let t=p.append(e.items);X(t),Z(t),k.arrived(t.added.length)&&!p.detached?L():I()}},reveal(e){M=e,j&&B()},setLive(e,t){w.dataset.mark=t,w.lastChild?.textContent!==e&&w.replaceChildren(...e?[i(`b`,{class:`badge`}),i(`span`,null,e)]:[])}}}export{J as mountChat,v as t};
@@ -1 +1 @@
1
- var e={},t=[`en`,`zh-TW`],n=`PARAGLIDE_LOCALE`,r=[`baseLocale`],i=[],a=typeof window>`u`;globalThis.__paraglide=globalThis.__paraglide??{},globalThis.__paraglide.ssr=globalThis.__paraglide.ssr??{};var o=!1,s=()=>{let e=r;!a&&typeof window<`u`&&window.location?.href&&(e=pe(window.location.href));let t=c(e,typeof window<`u`?window.location?.href:void 0);if(t)return o||(o=!0,d(t,{reload:!1})),t;throw Error(`No locale found. Read the docs https://paraglidejs.com/errors#no-locale-found`)};function c(e,t){let n;for(let t of e){if(t===`baseLocale`)n=`en`;else if(me(t)&&m.has(t)){let e=m.get(t);if(e){let t=e.getLocale();if(t instanceof Promise)continue;if(t!==void 0)return te(t)}}let e=f(n);if(e)return e}}var l=e=>{s=e},u=e=>{e?window.location.href=e:window.location.reload()},d=(e,t)=>{let n={reload:!0,...t},i;try{i=s()}catch{}let o=[],c=r;!a&&typeof window<`u`&&window.location?.href&&(c=pe(window.location.href));for(let t of c)if(t===`baseLocale`)continue;else if(me(t)&&m.has(t)){let n=m.get(t);if(n){let r=n.setLocale(e);r instanceof Promise&&(r=r.catch(e=>{throw Error(`Custom strategy "${t}" setLocale failed.`,{cause:e})}),o.push(r))}}let l=()=>{!a&&n.reload&&window.location&&e!==i&&u(void 0)};if(o.length)return Promise.all(o).then(()=>{l()});l()},ee=()=>typeof window<`u`?window.location.origin:`http://fallback.com`;function f(e){if(typeof e!=`string`)return;let n=e.toLowerCase();for(let e of t)if(e.toLowerCase()===n)return e}function te(e){let n=f(e);if(n)return n;throw Error(`Invalid locale: ${e}. Expected one of: ${t.join(`, `)}`)}function p(e){return e}function ne(t,n){return new e(t,n.href)}function re(){return 0}function ie(e){return i}function ae(e,t){return e.exec(t.href)}var oe=n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);RegExp(`(?:^|;\\s*)${oe}=([^;]*)`);function se(e){return ce(e)}function ce(e){let t=p(typeof e==`string`?new URL(e,ee()):new URL(e.href)),n=t.pathname.replace(/^\/+/,``).split(`/`);return n.length>0&&f(n[0])&&(t.pathname=`/`+n.slice(1).join(`/`)),p(t)}var le=-1,ue,de;function fe(e){if(i.length===0)return;let t=typeof e==`string`?e:e.href,n=re();if(ue===t&&le===n)return de;let r=p(new URL(t,`http://example.com`)),a=se(r),o=a.href===r.href?[r]:[r,a],s;for(let e of o){for(let t of ie(e))if(ae(ne(t.match,e),e)){s=t;break}if(s)break}return le=n,ue=t,de=s,s}function pe(e){let t=fe(e);return t&&t.exclude!==!0&&Array.isArray(t.strategy)?t.strategy:r}var m=new Map;function me(e){return typeof e==`string`&&/^custom-[A-Za-z0-9_-]+$/.test(e)}var he=((e={},t={})=>(t.locale??s())===`zh-TW`?`警示`:`Alerts`),ge=((e={},t={})=>(t.locale??s())===`zh-TW`?`所有基地`:`all bases`),_e=((e={},t={})=>(t.locale??s())===`zh-TW`?``:`.`),ve=((e={},t={})=>(t.locale??s())===`zh-TW`?`最後更新:`:`Last update`),ye=e=>`Disconnected. Gave up after ${e?.tries} tries; it reconnects when you return to this tab.`,be=e=>`連線中斷。重試 ${e?.tries} 次後放棄;回到此分頁時會重新連線。`,xe=((e,t={})=>(t.locale??s())===`zh-TW`?be(e):ye(e)),Se=e=>`The server is up but cannot read the net: ${e?.problem}`,Ce=e=>`伺服器正常,但讀不到網:${e?.problem}`,we=((e,t={})=>(t.locale??s())===`zh-TW`?Ce(e):Se(e)),Te=((e={},t={})=>(t.locale??s())===`zh-TW`?`與稻草網的連線中斷,正在重新連線…畫面顯示的是最後已知狀態。`:`Disconnected from the straw net. Reconnecting… The view shows the last known state.`),Ee=e=>`Disconnected from the straw net. Reconnecting (try ${e?.attempt})… The view shows the last known state.`,De=e=>`與稻草網的連線中斷,正在重新連線(第 ${e?.attempt} 次)…畫面顯示的是最後已知狀態。`,Oe=((e,t={})=>(t.locale??s())===`zh-TW`?De(e):Ee(e)),ke=((e={},t={})=>(t.locale??s())===`zh-TW`?`Straw Net:所有基地`:`Straw Net: all bases`),Ae=((e={},t={})=>(t.locale??s())===`zh-TW`?`取消`:`Cancel`),h=((e={},t={})=>(t.locale??s())===`zh-TW`?`關閉`:`Close`),je=e=>`Close base ${e?.name}`,Me=e=>`關閉基地 ${e?.name}`,Ne=((e,t={})=>(t.locale??s())===`zh-TW`?Me(e):je(e)),Pe=e=>`Close base ${e?.name}? Every agent in it and its tower quit.`,Fe=e=>`要關閉基地 ${e?.name} 嗎?裡面所有 agent 和塔台都會退出。`,Ie=((e,t={})=>(t.locale??s())===`zh-TW`?Fe(e):Pe(e)),Le=e=>`Close squad ${e?.name}`,Re=e=>`關閉小隊 ${e?.name}`,ze=((e,t={})=>(t.locale??s())===`zh-TW`?Re(e):Le(e)),Be=e=>`Close squad ${e?.name}? Every agent in it quits.`,Ve=e=>`要關閉小隊 ${e?.name} 嗎?裡面所有 agent 都會退出。`,He=((e,t={})=>(t.locale??s())===`zh-TW`?Ve(e):Be(e)),Ue=e=>`Close the tower ${e?.name}? The base's mains become members again.`,We=e=>`要關閉塔台 ${e?.name} 嗎?這個基地的主智慧體都會降格成成員。`,Ge=((e,t={})=>(t.locale??s())===`zh-TW`?We(e):Ue(e)),Ke=e=>`Close ${e?.name}? It quits pi and its pane closes.`,qe=e=>`要關閉 ${e?.name} 嗎?它會退出 pi,窗格也會關掉。`,Je=((e,t={})=>(t.locale??s())===`zh-TW`?qe(e):Ke(e)),Ye=e=>`control tower · ${e?.state}`,Xe=e=>`塔台 · ${e?.state}`,Ze=((e,t={})=>(t.locale??s())===`zh-TW`?Xe(e):Ye(e)),Qe=((e={},t={})=>(t.locale??s())===`zh-TW`?`圖示來自 game-icons.net(Lorc、Delapouite),CC BY 3.0。`:`Icons from game-icons.net by Lorc and Delapouite, CC BY 3.0.`),$e=((e={},t={})=>(t.locale??s())===`zh-TW`?`文件`:`Documents`),et=((e={},t={})=>(t.locale??s())===`zh-TW`?`總塔台`:`head tower`),tt=((e={},t={})=>(t.locale??s())===`zh-TW`?`語言`:`Language`),nt=((e={},t={})=>(t.locale??s())===`zh-TW`?`連線中`:`connecting`),rt=((e={},t={})=>(t.locale??s())===`zh-TW`?`即時`:`live`),it=((e={},t={})=>(t.locale??s())===`zh-TW`?`離線`:`offline`),at=((e={},t={})=>(t.locale??s())===`zh-TW`?`重新連線中`:`reconnecting`),ot=((e={},t={})=>(t.locale??s())===`zh-TW`?`正體中文`:`English`),st=((e={},t={})=>(t.locale??s())===`zh-TW`?`位置`:`Location`),ct=e=>`${e?.name} finished`,lt=e=>`${e?.name} 已完成`,ut=((e,t={})=>(t.locale??s())===`zh-TW`?lt(e):ct(e)),dt=e=>`${e?.name} hit an error`,ft=e=>`${e?.name} 發生錯誤`,pt=((e,t={})=>(t.locale??s())===`zh-TW`?ft(e):dt(e)),mt=e=>`${e?.name} went idle`,ht=e=>`${e?.name} 轉為閒置`,gt=((e,t={})=>(t.locale??s())===`zh-TW`?ht(e):mt(e)),_t=e=>`${e?.name} joined`,vt=e=>`${e?.name} 加入`,yt=((e,t={})=>(t.locale??s())===`zh-TW`?vt(e):_t(e)),bt=e=>`${e?.name} left`,xt=e=>`${e?.name} 離開`,St=((e,t={})=>(t.locale??s())===`zh-TW`?xt(e):bt(e)),Ct=e=>`${e?.name} lost its status`,wt=e=>`${e?.name} 失去狀態`,Tt=((e,t={})=>(t.locale??s())===`zh-TW`?wt(e):Ct(e)),Et=e=>`${e?.name} is waiting on a question`,Dt=e=>`${e?.name} 正在等待回答`,Ot=((e,t={})=>(t.locale??s())===`zh-TW`?Dt(e):Et(e)),kt=e=>`${e?.name} started working`,At=e=>`${e?.name} 開始工作`,jt=((e,t={})=>(t.locale??s())===`zh-TW`?At(e):kt(e)),g=((e={},t={})=>(t.locale??s())===`zh-TW`?`已完成`:`finished`),Mt=((e={},t={})=>(t.locale??s())===`zh-TW`?`錯誤`:`error`),_=((e={},t={})=>(t.locale??s())===`zh-TW`?`閒置`:`idle`),Nt=((e={},t={})=>(t.locale??s())===`zh-TW`?`無狀態`:`no status`),v=((e={},t={})=>(t.locale??s())===`zh-TW`?`等待回答`:`waiting on a question`),Pt=((e={},t={})=>(t.locale??s())===`zh-TW`?`工作中`:`working`),Ft=((e={},t={})=>(t.locale??s(),`Logs`)),It=((e={},t={})=>(t.locale??s())===`zh-TW`?`從未`:`never`),Lt=((e={},t={})=>(t.locale??s())===`zh-TW`?`+新基地`:`+ New base`),Rt=((e={},t={})=>(t.locale??s())===`zh-TW`?`沒有執行中的智慧體`:`no agent running`),zt=((e={},t={})=>(t.locale??s())===`zh-TW`?`無警示`:`no alerts`),Bt=((e={},t={})=>(t.locale??s())===`zh-TW`?`伺服器沒有回應。`:`The server did not answer.`),Vt=((e={},t={})=>(t.locale??s())===`zh-TW`?`尚無塔台`:`no tower yet`),Ht=((e={},t={})=>(t.locale??s())===`zh-TW`?`思考中`:`thinking`),Ut=((e={},t={})=>(t.locale??s())===`zh-TW`?`+主智慧體`:`+ Main`),Wt=((e={},t={})=>(t.locale??s())===`zh-TW`?`+成員`:`+ Member`),Gt=((e={},t={})=>(t.locale??s())===`zh-TW`?`前哨`:`Outposts`),Kt=((e={},t={})=>(t.locale??s())===`zh-TW`?`手機`:`Phone`),qt=((e={},t={})=>(t.locale??s())===`zh-TW`?`透過 Tailscale 配對手機`:`Pair a phone over Tailscale`),Jt=((e={},t={})=>(t.locale??s())===`zh-TW`?`伺服器送來的快照,頁面無法讀取`:`the server sent a snapshot the page cannot read`),Yt=((e={},t={})=>(t.locale??s())===`zh-TW`?`伺服器回報了頁面無法讀取的問題`:`the server reported a problem the page cannot read`),Xt=e=>`Refused (${e?.status}).`,Zt=e=>`已拒絕(${e?.status})。`,Qt=((e,t={})=>(t.locale??s())===`zh-TW`?Zt(e):Xt(e)),$t=((e={},t={})=>(t.locale??s())===`zh-TW`?`主智慧體`:`main`),en=((e={},t={})=>(t.locale??s())===`zh-TW`?`成員`:`member`),tn=((e={},t={})=>(t.locale??s())===`zh-TW`?`前哨`:`outpost`),nn=((e={},t={})=>(t.locale??s())===`zh-TW`?`未編入`:`unaligned`),rn=((e={},t={})=>(t.locale??s(),`session`)),an=((e={},t={})=>(t.locale??s())===`zh-TW`?`子智慧體`:`subagent`),on=((e={},t={})=>(t.locale??s())===`zh-TW`?`塔台`:`tower`),sn=((e={},t={})=>(t.locale??s())===`zh-TW`?`智慧體`:`Agents`),cn=((e={},t={})=>(t.locale??s())===`zh-TW`?`基地`:`Bases`),ln=((e={},t={})=>(t.locale??s())===`zh-TW`?`等待中`:`Waiting`),un=((e={},t={})=>(t.locale??s())===`zh-TW`?`工作中`:`Working`),dn=((e={},t={})=>(t.locale??s())===`zh-TW`?`狀態`:`States`),fn=e=>`tab ${e?.label}`,pn=e=>`分頁 ${e?.label}`,mn=((e,t={})=>(t.locale??s())===`zh-TW`?pn(e):fn(e)),hn=((e={},t={})=>(t.locale??s())===`zh-TW`?`即時網況 · 通訊`:`live net · comms`),gn=((e={},t={})=>(t.locale??s())===`zh-TW`?`網的總計`:`Net totals`),_n=e=>`${e?.label} tower`,vn=e=>`${e?.label} 塔台`,yn=((e,t={})=>(t.locale??s())===`zh-TW`?vn(e):_n(e)),bn=e=>`using ${e?.tool}`,xn=e=>`使用 ${e?.tool}`,Sn=((e,t={})=>(t.locale??s())===`zh-TW`?xn(e):bn(e)),Cn=((e={},t={})=>(t.locale??s())===`zh-TW`?`等待變化…`:`Waiting for changes…`),wn=`sb-locale`;function Tn(e){let t=/^zh\b/i.test(e)&&(/-(hant|tw|hk|mo)\b/i.test(e)?`zh-TW`:/-(hans|cn|sg|my)\b/i.test(e)?`zh-CN`:void 0);return f(e)??(t?f(t):void 0)??f(e.split(`-`)[0])}function En(e,t){return f(e)??t.map(Tn).find(Boolean)??`en`}var Dn={brand_label:ke,tagline:hn,totals_label:gn,stat_bases:cn,stat_agents:sn,stat_working:un,stat_waiting:ln,alerts:he,no_alerts:zt,pair_button:Kt,pair_title:qt,link_connecting:nt,location:st,all_bases:ge,documents:$e,net_log:Ft,states:dn,mark_working:Pt,mark_waiting:v,mark_idle:_,mark_done:g,mark_error:Mt,credit:Qe,language:tt,waiting_changes:Cn,new_base:Lt};Object.keys(Dn);function On(){let e=null;try{e=localStorage.getItem(wn)}catch{}let n=En(e,navigator.languages??[navigator.language]);l(()=>n),document.documentElement.lang=n;let r={m:(e,t)=>e.textContent=t,mLabel:(e,t)=>e.setAttribute(`aria-label`,t),mTitle:(e,t)=>e.title=t,mEmpty:(e,t)=>e.dataset.empty=t};for(let e of document.querySelectorAll(`[data-m], [data-m-label], [data-m-title], [data-m-empty]`))for(let[t,n]of Object.entries(r))e.dataset[t]&&n(e,Dn[e.dataset[t]]?.()??e.dataset[t]);let i=document.getElementById(`lang`);i.replaceChildren(...t.map(e=>new Option(ot({},{locale:e}),e,!1,e===n))),i.onchange=()=>{try{localStorage.setItem(wn,i.value),location.reload()}catch{i.value=n}}}var kn={working:jt,waiting:Ot,idle:gt,done:ut,error:pt,unknown:Tt};function An(e){let t=new Map;for(let n of e.bases){n.tower&&t.set(`tower:${n.id}`,{name:yn({label:n.label}),mark:n.tower.mark});for(let e of n.tabs.flatMap(e=>e.units))for(let n of[e,...e.subs])t.set(n.id,{name:n.name,mark:n.mark});for(let e of n.outposts)t.set(e.id,{name:e.label,mark:e.mark})}return t}function jn(e,t){if(!e)return[];let[n,r]=[An(e),An(t)],i=[];for(let[e,t]of r){let r=n.get(e);r?r.mark!==t.mark&&i.push({text:kn[t.mark]({name:t.name}),mark:t.mark}):i.push({text:yt({name:t.name}),mark:t.mark})}for(let[e,t]of n)r.has(e)||i.push({text:St({name:t.name}),mark:`idle`});return i}var Mn=e=>e===`waiting`||e===`error`?0:1;function Nn(e,t){let n=new Map;for(let r of e.bases)for(let e of[...r.tower?[{...r.tower,role:`tower`}]:[],...[...r.tabs.flatMap(e=>e.units),...r.outside].flatMap(e=>[e,...e.subs])])n.set(e.key,{key:e.key,ws:r.id,name:e.name,role:e.role,mark:e.mark,note:e.note,at:t,pending:e.pending});return n}function Pn(e,t){return[...t.values()].filter(t=>e?.get(t.key)?.mark!==t.mark&&(Mn(t.mark)===0||e!==void 0&&t.mark===`done`))}var Fn=e=>{try{return decodeURIComponent(e)}catch{return e}},In=e=>/^\.+$/.test(e)?e.replaceAll(`.`,`%2E`):encodeURIComponent(e);function y(e){let[t,n]=e.split(`#`)[0].split(`?`),[r,i,a,o]=t.replace(/^\/+|\/+$/g,``).split(`/`).map(Fn);if(r!==`w`||!i)return{view:`map`};if(a!==`s`||!o)return{view:`workspace`,ws:i};let s=new URLSearchParams(n).get(`at`);return s?{view:`session`,ws:i,key:o,at:s}:{view:`session`,ws:i,key:o}}var b=e=>e.view===`map`?``:e.view===`workspace`?`w/${In(e.ws)}`:`w/${In(e.ws)}/s/${In(e.key)}${e.at?`?at=${encodeURIComponent(e.at)}`:``}`,Ln=e=>e.view===`session`?{view:`workspace`,ws:e.ws}:{view:`map`},x=e=>e.view===`session`?e.key:e.view===`workspace`?`w:${e.ws}`:null;function Rn(e,t=new URL(document.baseURI).pathname){let n=()=>y(location.pathname.slice(t.length)+location.search),r={route:n,href:e=>b(e)||`./`,go(n){let r=t+b(n);location.pathname+location.search!==r&&history.pushState(null,``,r),e(n)}};return addEventListener(`popstate`,()=>e(n())),document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`a[data-route]`);!t||e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.preventDefault(),r.go(y(t.getAttribute(`data-route`))))}),r}var zn={main:`main`,member:`member`,subagent:`subagent`,outpost:`outpost`,outside:`outside`,tower:`tower`},S={working:Pt,waiting:v,idle:_,done:g,error:Mt,unknown:Nt},Bn={main:$t,member:en,subagent:an,tower:on,outpost:tn,outside:nn,session:rn},Vn={thinking:Ht,idle:_,"waiting on a question":v,finished:g},Hn=e=>Object.hasOwn(Bn,e)?Bn[e]():e,Un=e=>e===`waiting`||e===`error`,C=e=>{let t=new DOMParser().parseFromString(e.trim(),`text/html`).body.firstElementChild;if(!(t instanceof HTMLElement))throw Error(`bad template`);return document.importNode(t,!0)},w=(e,t)=>{let n=document.getElementById(e);if(!(n instanceof t))throw Error(`#${e} is missing from the page`);return n},T=(e,t,n)=>{let r=e.querySelector(t);r.textContent!==n&&(r.textContent=n)},E=(e,t)=>{if(e.dataset.mark===t)return;let n=e.dataset.mark!==void 0;e.dataset.mark=t,n&&(e.classList.remove(`flash`),e.offsetWidth,e.classList.add(`flash`))},Wn=(e,t)=>e?e.startsWith(`tool:`)?Sn({tool:e.slice(5)}):Object.hasOwn(Vn,e)?Vn[e]():e:S[t](),D=(e,t)=>{e.toggleAttribute(`hidden`,!t),t&&(e.setAttribute(`href`,b(t)||`./`),e.setAttribute(`data-route`,b(t)))},Gn=`<div class="plate"><i class="ring"></i><svg><use href="#i-main"/></svg><b class="badge"></b></div>`;function Kn(e,t,n,r){E(e,n);let i=e.querySelector(`use`),a=`#i-${zn[t]??`member`}`,o=r?.filter(e=>e.onScreen).length;i.getAttribute(`href`)!==a&&i.setAttribute(`href`,a),o?e.dataset.docs=String(o):delete e.dataset.docs}function O(e,t,n,r){let i=new Map;for(let t of e.children)!t.classList.contains(`leaving`)&&t.dataset.key&&i.set(t.dataset.key,t);let a=e.firstElementChild;for(let o of t){let t=i.get(o.id);for(t||(t=n(o),t.dataset.key=o.id,t.classList.add(`enter`),setTimeout(()=>t.classList.remove(`enter`),600)),i.delete(o.id);a?.classList.contains(`leaving`);)a=a.nextElementSibling;t===a?a=a.nextElementSibling:e.insertBefore(t,a),r(t,o)}for(let e of i.values())e.classList.add(`leaving`),setTimeout(()=>e.remove(),400)}var k=()=>C(`<div class="unit"><div class="card"><a class="hit"></a>${Gn}<div class="meta"><span class="name"></span><span class="line"><em class="role"></em><span class="note"></span></span></div></div><div class="subs"></div></div>`);function A(e,t){let n=e.closest(`.base`)?.dataset.key,r=e.querySelector(`.hit`);D(r,t.key&&n?{view:`session`,ws:n,key:t.key}:void 0),r.setAttribute(`aria-label`,`${t.name}: ${Wn(t.note,t.mark)}`),r.toggleAttribute(`data-alert`,Un(t.mark)),E(e,t.mark),Kn(e.querySelector(`.plate`),t.role,t.mark,t.docs),T(e,`.name`,t.name),T(e,`.role`,Hn(t.role)),T(e,`.note`,Wn(t.note,t.mark)),O(e.querySelector(`.subs`),t.subs??[],k,A)}function j(e,t,n){let r=t.tower?`main`:`member`;e.hidden=!!(n&&t.tower),e.dataset.open=r,e.dataset.ws=t.id,n&&(e.dataset.tab=n),e.textContent!==(r===`main`?Ut():Wt())&&(e.textContent=r===`main`?Ut():Wt())}function M(e,t,n){e.dataset.ws=t.id,e.dataset.name=n?n.label:t.label,n&&(e.dataset.tab=n.id),e.setAttribute(`aria-label`,n?ze({name:n.label}):Ne({name:t.label}))}var qn=()=>C(`<section class="base"><header><div class="tower"><i class="sweep"></i><i class="pulse"></i><svg><use href="#i-tower"/></svg><b class="badge"></b></div><div class="title"><span class="crown"><svg><use href="#i-crown"/></svg>${et()}</span><h2><a class="enter-base"></a></h2><p></p></div><button type="button" class="close-x" data-close="base">×</button></header><div class="spawn-btns"><button type="button" class="pair-btn"></button></div><div class="tabs"></div><div class="outposts" data-label="${Gt()}"></div></section>`);function Jn(e,t){E(e,t.mark),e.classList.toggle(`head`,t.head);let n=e.querySelector(`.tower`);n.classList.toggle(`ghost`,!t.tower),E(n,t.tower?.mark??`unknown`),T(e,`h2 a`,t.label),D(e.querySelector(`h2 a`),{view:`workspace`,ws:t.id}),T(e,`.title p`,t.tower?Ze({state:S[t.tower.mark]()}):Vt()),j(e.querySelector(`.spawn-btns button`),t),M(e.querySelector(`header .close-x`),t),O(e.querySelector(`.tabs`),t.tabs,()=>C(`<div class="tab"><h3><span></span><button type="button" class="tab-add"></button><button type="button" class="close-x" data-close="tab">×</button></h3><div class="units"></div></div>`),(e,n)=>{T(e,`h3 span`,mn({label:n.label})),M(e.querySelector(`.close-x`),t,n),j(e.querySelector(`.tab-add`),t,n.id),O(e.querySelector(`.units`),n.units,k,A)}),O(e.querySelector(`.outposts`),t.outposts.map(e=>({id:e.id,name:e.label,role:`outpost`,mark:e.mark,note:e.mark===`unknown`?Rt():void 0})),k,A)}function Yn(e,t,n){let r=[...e.querySelectorAll(`.base:not(.leaving) .tower`)],i=e.querySelector(`.base.head:not(.leaving) .tower`),a=e.getBoundingClientRect(),o=e=>{let t=e.getBoundingClientRect();return[Math.round(t.x+t.width/2-a.x),Math.round(t.y+t.height/2-a.y)]},s=i?r.filter(e=>e!==i).map(e=>{let[[t,n],[r,a]]=[o(i),o(e)],s=Math.round((t+r)/2);return`M${t} ${n}C${s} ${n} ${s} ${a} ${r} ${a}`}):[],c=s.join(`|`);if(t.dataset.sig===c)return;t.dataset.sig=c;let l=(e,t,...n)=>{let r=document.createElementNS(`http://www.w3.org/2000/svg`,e);for(let[e,n]of Object.entries(t))r.setAttribute(e,n);return r.append(...n),r};t.replaceChildren(...s.flatMap(e=>[l(`path`,{class:`wire`,d:e}),...n?[]:[l(`circle`,{class:`packet`,r:`3`},l(`animateMotion`,{dur:`5s`,repeatCount:`indefinite`,path:e}))]]))}function Xn(){let[e,t,n,r]=[w(`map`,HTMLElement),w(`bases`,HTMLElement),w(`links`,SVGSVGElement),w(`log`,HTMLElement)],i=matchMedia(`(prefers-reduced-motion: reduce)`).matches,a=()=>!e.hidden&&Yn(e,n,i);return new ResizeObserver(a).observe(e),{layout:a,stats(e){let t=e.bases.flatMap(e=>e.tabs.flatMap(e=>e.units.flatMap(e=>[e,...e.subs]))),n=e=>String(t.filter(t=>!e||t.mark===e).length);for(let[t,r]of[[`s-bases`,String(e.bases.length)],[`s-agents`,n()],[`s-working`,n(`working`)],[`s-waiting`,n(`waiting`)]])w(t,HTMLElement).textContent=r},show(e){O(t,e.bases,qn,Jn),requestAnimationFrame(a)},log(e){let t=new Date().toLocaleTimeString([],{hour12:!1});for(let n of e){let e=C(`<li><span></span><time></time></li>`);e.dataset.mark=n.mark,T(e,`span`,n.text),T(e,`time`,t),r.prepend(e)}for(;r.children.length>12;)r.lastElementChild.remove()},pause(e){document.documentElement.classList.toggle(`paused`,e)},still(e){e?n.pauseAnimations():n.unpauseAnimations()}}}var Zn=45e3,Qn=1e3,$n=3e4,er=(e,t)=>Math.min($n,Qn*2**(e-1))*(.8+.4*t);function tr(e){try{return JSON.parse(e)}catch{return}}function nr(e){let t,n,r,i=0,a={state:`connecting`,attempt:0},o=t=>e.onStatus(a={...a,...t}),s=()=>(e.clearTimeout(n),e.clearTimeout(r),n=r=void 0),c=()=>{let e=t;t=void 0,e?.close()},l=()=>{e.clearTimeout(r),r=e.setTimeout(()=>u(),Zn),o({state:`live`,attempt:0,lastContact:e.now()})},u=()=>{c(),s();let t=a.attempt+1;if(t>8)return o({state:`offline`,attempt:t});o({state:`reconnecting`,attempt:t}),e.hidden()||(n=e.setTimeout(d,er(t,e.random())))},d=()=>{c(),s(),i=e.now();let n=t=e.open();n.onError(()=>t===n&&u()),n.listen(`message`,r=>{if(t!==n)return;let i=tr(r);i&&e.onNet(i),o({problem:i?void 0:Jt()}),l()}),n.listen(`ping`,()=>t===n&&l()),n.listen(`problem`,e=>{t===n&&(o({problem:tr(e)??Yt()}),l())}),r=e.setTimeout(()=>u(),Zn)};return{start(){o({state:`connecting`,attempt:0}),d()},resume(){let n=e.now()-i<2e3||a.lastContact!==void 0&&e.now()-a.lastContact<=2e4;t&&n||(o({attempt:0,state:a.state===`live`?`reconnecting`:a.state}),d())},restart:d,hide(){e.clearTimeout(n),n=void 0},stop(){c(),s()}}}var rr=(function(){let e=typeof document<`u`&&document.createElement(`link`).relList;return e&&e.supports&&e.supports(`modulepreload`)?`modulepreload`:`preload`})(),ir=function(e,t){return new URL(e,t).href},ar={},or=function(e){return e.pathname.endsWith(`.css`)},sr=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},N=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e,i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)}r=o(t.map(t=>{t=ir(t,n);let r=s(t),i=or(r);return sr(ar,r.href,()=>{if(e===void 0){e={all:new Set,styles:new Set};let t=document.getElementsByTagName(`link`);for(let n=t.length-1;n>=0;n--){let r=t[n];e.all.add(r.href),r.rel===`stylesheet`&&e.styles.add(r.href)}}if((i?e.styles:e.all).has(r.href))return;let t=document.createElement(`link`);if(t.rel=i?`stylesheet`:rr,i||(t.as=`script`),t.crossOrigin=``,t.href=r.href,a&&t.setAttribute(`nonce`,a),document.head.appendChild(t),i)return new Promise((e,n)=>{t.addEventListener(`load`,e),t.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${r}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};On();var P=Xn(),F=e=>document.getElementById(e),cr=e=>e?new Date(e).toLocaleTimeString([],{hour12:!1}):It(),lr,ur,I,L,R={state:`connecting`,attempt:0},z={view:`map`},dr=!1,B,fr=``,V,pr,H=e=>V?e(V):void pr?.then(e);function mr(){pr??=N(async()=>{let{mountFocus:e}=await import(`./views-DnWoV-MO.js`);return{mountFocus:e}},[],import.meta.url).then(({mountFocus:e})=>(V=e({data:Tr,restart:()=>Q.restart(),openTile:G,embedTerminal:(e,t,n)=>new Promise(r=>W(i=>r(i.terminal.embed(e,t,n)))),online:()=>R.state===`live`}),V.show(z,z),I&&V.net(I),V))}var U,hr,W=e=>{if(U)return e(U);hr??=N(async()=>{let{mountPanels:e}=await import(`./layer-BzyH4bof.js`);return{mountPanels:e}},[],import.meta.url).then(({mountPanels:e})=>U=e({label:e=>I?.bases.find(t=>t.id===e)?.label??e,recent:async e=>(await(X?X.data(e).latest():Y(e,`?limit=12`))).items,post:e=>X&&((t,n)=>X.data(e).post(t,n)),stream:()=>fr,showTerminal:(e,t)=>(U?.stack.close(),V?.terminal(t),Z.go({view:`session`,ws:e,key:t}))})),hr.then(e)},G=(e,t)=>W(n=>n.tiles.open(e,t)),K=document.querySelector(`link[rel="icon"]`),q=K&&decodeURIComponent(K.href.slice(K.href.indexOf(`,`)+1)),gr=0;function _r(e){let t=e.bases.flatMap(e=>[...e.tower?[e.tower]:[],...[...e.tabs.flatMap(e=>e.units),...e.outside].flatMap(e=>[e,...e.subs])]).filter(e=>e.mark===`waiting`||e.pending).length;if(!K||!q||t===gr)return;gr=t;let n=`<circle cx='23' cy='9' r='9' fill='#ffd166' stroke='#0b1220' stroke-width='2'/><text x='23' y='13' text-anchor='middle' font-family='sans-serif' font-size='${t>9?9:12}' font-weight='700' fill='#06101e'>${t>9?`9+`:t}</text>`;K.href=`data:image/svg+xml,${encodeURIComponent(t?q.replace(`</svg>`,`${n}</svg>`):q)}`}function J(e){if(I=L=e,_r(e),document.hidden)return;P.stats(e);let t=Nn(e,Date.now()),n=Pn(B,t);(n.length||U)&&W(e=>e.alerts(n,t)),B=t,P.log(jn(ur,e)),ur=e,H(t=>t.net(e)),z.view===`map`&&(P.show(e),lr=e,L=void 0)}function vr(e){let t=z,n=e.view===`workspace`&&t.view===`map`?document.querySelector(`#bases [data-key="${CSS.escape(e.ws)}"]`)?.getBoundingClientRect():void 0;z=e,e.view!==`map`&&mr(),F(`map`).hidden=e.view!==`map`,F(`legend`).hidden=e.view===`session`,P.still(e.view!==`map`),H(r=>r.show(e,t,n)),e.view===`map`&&I&&I!==lr&&(J(I),requestAnimationFrame(P.layout)),dr&&x(e)!==x(t)&&Q.restart()}function yr(e){R=e;let t=e.state===`reconnecting`||e.state===`offline`;document.body.dataset.stale=F(`stage`).dataset.stale=String(t),F(`link`).dataset.state=e.state,F(`link-text`).textContent={connecting:nt,live:rt,reconnecting:at,offline:it}[e.state](),V&&I&&V.net(I),U?.stack.redraw();let n=F(`banner`);n.hidden=!t&&!e.problem;let r=e.state===`offline`?xe({tries:e.attempt-1}):e.state===`reconnecting`?e.attempt?Oe({attempt:e.attempt}):Te():we({problem:e.problem??``}),i=document.createElement(`b`);i.textContent=cr(e.lastContact),n.replaceChildren(`${r} ${ve()} `,i,_e())}function br(e,t){try{let n=JSON.parse(t);H(t=>e===`history`?t.history(n):t.cards(n))}catch{}}var xr=document.querySelector(`meta[name="sb-build"]`)?.content,Sr=e=>!!(xr&&xr!==JSON.parse(e).build);function Cr(e){let t=new EventSource(e?`events?watch=${encodeURIComponent(e)}`:`events`);return{onError:e=>t.onerror=e,listen:(e,n)=>t.addEventListener(e,e=>n(e.data)),close:()=>t.close()}}var wr=e=>fetch(`api/${e}`,{cache:`no-store`}).then(e=>e.ok?e.json():Promise.reject(Error(String(e.status)))),Y=(e,t=``)=>wr(`history/${encodeURIComponent(e)}${t}`),X=void 0,Tr=e=>({older:t=>Y(e,`?before=${encodeURIComponent(t)}`),latest:()=>Y(e),entry:t=>wr(`entry/${encodeURIComponent(e)}/${encodeURIComponent(t)}`).catch(()=>void 0),pic:(t,n)=>`api/image/${encodeURIComponent(e)}/${encodeURIComponent(t)}/${n}`}),Er=()=>{let e=Cr(x(z));return e.listen(`history`,e=>br(`history`,e)),e.listen(`cards`,e=>br(`cards`,e)),e.listen(`hello`,e=>Sr(e)?location.reload():(fr=e,U?.terminal.hello())),e.listen(`mirror`,e=>U?.terminal.frame(e)),e};document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`a[data-alert]`),n=t&&y(t.getAttribute(`data-route`)??``);if(!n||n.view!==`session`||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;let r=B?.get(n.key);r&&(e.preventDefault(),W(e=>e.stack.show(r)))},!0);var Z=Rn(e=>vr(e)),Q=nr({open:Er,now:Date.now,setTimeout:(e,t)=>window.setTimeout(e,t),clearTimeout:e=>window.clearTimeout(e),random:Math.random,hidden:()=>document.hidden,onNet:J,onStatus:yr}),Dr=()=>Q.resume();document.addEventListener(`visibilitychange`,()=>{if(P.pause(document.hidden),document.hidden)return Q.hide();L&&J(L),H(e=>e.wake()),Dr()}),addEventListener(`keydown`,e=>{e.key!==`Escape`||e.defaultPrevented||document.querySelector(`dialog.sheet[open], dialog.lightbox[open]`)||(e.preventDefault(),!U?.stack.close()&&z.view!==`map`&&Z.go(Ln(z)))}),F(`pair`).addEventListener(`click`,()=>void N(async()=>{let{pairTile:e}=await import(`./pair-_bZi6CwQ.js`);return{pairTile:e}},[],import.meta.url).then(({pairTile:e})=>G(e(),!0)));var $=(e,t)=>new Promise(n=>{let r=document.createElement(`dialog`),i=document.createElement(`p`),a=document.createElement(`div`),o=(e,t,i)=>Object.assign(document.createElement(`button`),{type:`button`,className:t,textContent:e,onclick:()=>(r.close(),n(i))});[r.className,i.textContent,a.className]=[`sheet`,e,`sheet-row`],a.append(...t?[o(Ae(),`later`,!1),o(t,`sheet-yes`,!0)]:[o(h(),`later`,!1)]),r.append(i,a),r.addEventListener(`close`,()=>(r.remove(),n(!1))),document.body.append(r),r.showModal()}),Or=e=>{if(z.view===`map`)return;if(e.close===`base`)return void(z.ws===e.ws&&Z.go({view:`map`}));let t=e=>e.flatMap(e=>[e.key,...t(e.subs)]),n=e.close===`tab`&&z.ws===e.ws?I?.bases.find(t=>t.id===e.ws)?.tabs.find(t=>t.id===e.tab):void 0;z.view===`session`&&(e.close===`unit`?z.key===e.key:n&&t(n.units).includes(z.key))&&Z.go({view:`workspace`,ws:z.ws})};document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`button[data-close]`),n=t?.dataset;t&&n&&(e.preventDefault(),$((n.close===`base`?Ie:n.close===`tab`?He:n.role===`tower`?Ge:Je)({name:n.name??``}),h()).then(e=>{e&&(t.toggleAttribute(`disabled`,!0),N(async()=>{let{post:e}=await import(`./post-UHMNmNgA.js`).then(e=>e.n);return{post:e}},[],import.meta.url).then(({post:e})=>e(`close/${n.close}`,n.close===`unit`?{key:n.key}:{workspace:n.ws,...n.tab&&{tab:n.tab}})).then(e=>e.ok?Or(n):$(e.body.reason??Qt({status:e.status})),()=>$(Bt())).finally(()=>t.toggleAttribute(`disabled`,!1)))}))}),document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`button[data-open]`);t&&N(async()=>{let{openingOf:e,spawnTile:t}=await import(`./spawn-BgEg5Cw4.js`);return{openingOf:e,spawnTile:t}},[],import.meta.url).then(({openingOf:e,spawnTile:n})=>{let r=e(t,I?.bases??[]);r&&G(n(r),!0)})});for(let e of[`focus`,`pageshow`,`online`])window.addEventListener(e,()=>!document.hidden&&Dr());yr(R),vr(Z.route()),Q.start(),dr=!0;export{Ae as A,Bt as C,$e as D,et as E,s as M,Ze as O,Vt as S,Rt as T,Mn as _,D as a,Qt as b,w as c,C as d,E as f,Un as g,T as h,Gn as i,ge as j,h as k,Wn as l,O as m,zn as n,M as o,Hn as p,S as r,j as s,N as t,Kn as u,un as v,zt as w,Gt as x,ln as y};
1
+ var e={},t=[`en`,`zh-TW`],n=`PARAGLIDE_LOCALE`,r=[`baseLocale`],i=[],a=typeof window>`u`;globalThis.__paraglide=globalThis.__paraglide??{},globalThis.__paraglide.ssr=globalThis.__paraglide.ssr??{};var o=!1,s=()=>{let e=r;!a&&typeof window<`u`&&window.location?.href&&(e=pe(window.location.href));let t=c(e,typeof window<`u`?window.location?.href:void 0);if(t)return o||(o=!0,d(t,{reload:!1})),t;throw Error(`No locale found. Read the docs https://paraglidejs.com/errors#no-locale-found`)};function c(e,t){let n;for(let t of e){if(t===`baseLocale`)n=`en`;else if(me(t)&&m.has(t)){let e=m.get(t);if(e){let t=e.getLocale();if(t instanceof Promise)continue;if(t!==void 0)return te(t)}}let e=f(n);if(e)return e}}var l=e=>{s=e},u=e=>{e?window.location.href=e:window.location.reload()},d=(e,t)=>{let n={reload:!0,...t},i;try{i=s()}catch{}let o=[],c=r;!a&&typeof window<`u`&&window.location?.href&&(c=pe(window.location.href));for(let t of c)if(t===`baseLocale`)continue;else if(me(t)&&m.has(t)){let n=m.get(t);if(n){let r=n.setLocale(e);r instanceof Promise&&(r=r.catch(e=>{throw Error(`Custom strategy "${t}" setLocale failed.`,{cause:e})}),o.push(r))}}let l=()=>{!a&&n.reload&&window.location&&e!==i&&u(void 0)};if(o.length)return Promise.all(o).then(()=>{l()});l()},ee=()=>typeof window<`u`?window.location.origin:`http://fallback.com`;function f(e){if(typeof e!=`string`)return;let n=e.toLowerCase();for(let e of t)if(e.toLowerCase()===n)return e}function te(e){let n=f(e);if(n)return n;throw Error(`Invalid locale: ${e}. Expected one of: ${t.join(`, `)}`)}function p(e){return e}function ne(t,n){return new e(t,n.href)}function re(){return 0}function ie(e){return i}function ae(e,t){return e.exec(t.href)}var oe=n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);RegExp(`(?:^|;\\s*)${oe}=([^;]*)`);function se(e){return ce(e)}function ce(e){let t=p(typeof e==`string`?new URL(e,ee()):new URL(e.href)),n=t.pathname.replace(/^\/+/,``).split(`/`);return n.length>0&&f(n[0])&&(t.pathname=`/`+n.slice(1).join(`/`)),p(t)}var le=-1,ue,de;function fe(e){if(i.length===0)return;let t=typeof e==`string`?e:e.href,n=re();if(ue===t&&le===n)return de;let r=p(new URL(t,`http://example.com`)),a=se(r),o=a.href===r.href?[r]:[r,a],s;for(let e of o){for(let t of ie(e))if(ae(ne(t.match,e),e)){s=t;break}if(s)break}return le=n,ue=t,de=s,s}function pe(e){let t=fe(e);return t&&t.exclude!==!0&&Array.isArray(t.strategy)?t.strategy:r}var m=new Map;function me(e){return typeof e==`string`&&/^custom-[A-Za-z0-9_-]+$/.test(e)}var he=((e={},t={})=>(t.locale??s())===`zh-TW`?`警示`:`Alerts`),ge=((e={},t={})=>(t.locale??s())===`zh-TW`?`所有基地`:`all bases`),_e=((e={},t={})=>(t.locale??s())===`zh-TW`?``:`.`),ve=((e={},t={})=>(t.locale??s())===`zh-TW`?`最後更新:`:`Last update`),ye=e=>`Disconnected. Gave up after ${e?.tries} tries; it reconnects when you return to this tab.`,be=e=>`連線中斷。重試 ${e?.tries} 次後放棄;回到此分頁時會重新連線。`,xe=((e,t={})=>(t.locale??s())===`zh-TW`?be(e):ye(e)),Se=e=>`The server is up but cannot read the net: ${e?.problem}`,Ce=e=>`伺服器正常,但讀不到網:${e?.problem}`,we=((e,t={})=>(t.locale??s())===`zh-TW`?Ce(e):Se(e)),Te=((e={},t={})=>(t.locale??s())===`zh-TW`?`與稻草網的連線中斷,正在重新連線…畫面顯示的是最後已知狀態。`:`Disconnected from the straw net. Reconnecting… The view shows the last known state.`),Ee=e=>`Disconnected from the straw net. Reconnecting (try ${e?.attempt})… The view shows the last known state.`,De=e=>`與稻草網的連線中斷,正在重新連線(第 ${e?.attempt} 次)…畫面顯示的是最後已知狀態。`,Oe=((e,t={})=>(t.locale??s())===`zh-TW`?De(e):Ee(e)),ke=((e={},t={})=>(t.locale??s())===`zh-TW`?`Straw Net:所有基地`:`Straw Net: all bases`),Ae=((e={},t={})=>(t.locale??s())===`zh-TW`?`取消`:`Cancel`),h=((e={},t={})=>(t.locale??s())===`zh-TW`?`關閉`:`Close`),je=e=>`Close base ${e?.name}`,Me=e=>`關閉基地 ${e?.name}`,Ne=((e,t={})=>(t.locale??s())===`zh-TW`?Me(e):je(e)),Pe=e=>`Close base ${e?.name}? Every agent in it and its tower quit.`,Fe=e=>`要關閉基地 ${e?.name} 嗎?裡面所有 agent 和塔台都會退出。`,Ie=((e,t={})=>(t.locale??s())===`zh-TW`?Fe(e):Pe(e)),Le=e=>`Close squad ${e?.name}`,Re=e=>`關閉小隊 ${e?.name}`,ze=((e,t={})=>(t.locale??s())===`zh-TW`?Re(e):Le(e)),Be=e=>`Close squad ${e?.name}? Every agent in it quits.`,Ve=e=>`要關閉小隊 ${e?.name} 嗎?裡面所有 agent 都會退出。`,He=((e,t={})=>(t.locale??s())===`zh-TW`?Ve(e):Be(e)),Ue=e=>`Close the tower ${e?.name}? The base's mains become members again.`,We=e=>`要關閉塔台 ${e?.name} 嗎?這個基地的主智慧體都會降格成成員。`,Ge=((e,t={})=>(t.locale??s())===`zh-TW`?We(e):Ue(e)),Ke=e=>`Close ${e?.name}? It quits pi and its pane closes.`,qe=e=>`要關閉 ${e?.name} 嗎?它會退出 pi,窗格也會關掉。`,Je=((e,t={})=>(t.locale??s())===`zh-TW`?qe(e):Ke(e)),Ye=e=>`control tower · ${e?.state}`,Xe=e=>`塔台 · ${e?.state}`,Ze=((e,t={})=>(t.locale??s())===`zh-TW`?Xe(e):Ye(e)),Qe=((e={},t={})=>(t.locale??s())===`zh-TW`?`圖示來自 game-icons.net(Lorc、Delapouite),CC BY 3.0。`:`Icons from game-icons.net by Lorc and Delapouite, CC BY 3.0.`),$e=((e={},t={})=>(t.locale??s())===`zh-TW`?`文件`:`Documents`),et=((e={},t={})=>(t.locale??s())===`zh-TW`?`總塔台`:`head tower`),tt=((e={},t={})=>(t.locale??s())===`zh-TW`?`語言`:`Language`),nt=((e={},t={})=>(t.locale??s())===`zh-TW`?`連線中`:`connecting`),rt=((e={},t={})=>(t.locale??s())===`zh-TW`?`即時`:`live`),it=((e={},t={})=>(t.locale??s())===`zh-TW`?`離線`:`offline`),at=((e={},t={})=>(t.locale??s())===`zh-TW`?`重新連線中`:`reconnecting`),ot=((e={},t={})=>(t.locale??s())===`zh-TW`?`正體中文`:`English`),st=((e={},t={})=>(t.locale??s())===`zh-TW`?`位置`:`Location`),ct=e=>`${e?.name} finished`,lt=e=>`${e?.name} 已完成`,ut=((e,t={})=>(t.locale??s())===`zh-TW`?lt(e):ct(e)),dt=e=>`${e?.name} hit an error`,ft=e=>`${e?.name} 發生錯誤`,pt=((e,t={})=>(t.locale??s())===`zh-TW`?ft(e):dt(e)),mt=e=>`${e?.name} went idle`,ht=e=>`${e?.name} 轉為閒置`,gt=((e,t={})=>(t.locale??s())===`zh-TW`?ht(e):mt(e)),_t=e=>`${e?.name} joined`,vt=e=>`${e?.name} 加入`,yt=((e,t={})=>(t.locale??s())===`zh-TW`?vt(e):_t(e)),bt=e=>`${e?.name} left`,xt=e=>`${e?.name} 離開`,St=((e,t={})=>(t.locale??s())===`zh-TW`?xt(e):bt(e)),Ct=e=>`${e?.name} lost its status`,wt=e=>`${e?.name} 失去狀態`,Tt=((e,t={})=>(t.locale??s())===`zh-TW`?wt(e):Ct(e)),Et=e=>`${e?.name} is waiting on a question`,Dt=e=>`${e?.name} 正在等待回答`,Ot=((e,t={})=>(t.locale??s())===`zh-TW`?Dt(e):Et(e)),kt=e=>`${e?.name} started working`,At=e=>`${e?.name} 開始工作`,jt=((e,t={})=>(t.locale??s())===`zh-TW`?At(e):kt(e)),g=((e={},t={})=>(t.locale??s())===`zh-TW`?`已完成`:`finished`),Mt=((e={},t={})=>(t.locale??s())===`zh-TW`?`錯誤`:`error`),_=((e={},t={})=>(t.locale??s())===`zh-TW`?`閒置`:`idle`),Nt=((e={},t={})=>(t.locale??s())===`zh-TW`?`無狀態`:`no status`),v=((e={},t={})=>(t.locale??s())===`zh-TW`?`等待回答`:`waiting on a question`),Pt=((e={},t={})=>(t.locale??s())===`zh-TW`?`工作中`:`working`),Ft=((e={},t={})=>(t.locale??s(),`Logs`)),It=((e={},t={})=>(t.locale??s())===`zh-TW`?`從未`:`never`),Lt=((e={},t={})=>(t.locale??s())===`zh-TW`?`+新基地`:`+ New base`),Rt=((e={},t={})=>(t.locale??s())===`zh-TW`?`沒有執行中的智慧體`:`no agent running`),zt=((e={},t={})=>(t.locale??s())===`zh-TW`?`無警示`:`no alerts`),Bt=((e={},t={})=>(t.locale??s())===`zh-TW`?`伺服器沒有回應。`:`The server did not answer.`),Vt=((e={},t={})=>(t.locale??s())===`zh-TW`?`尚無塔台`:`no tower yet`),Ht=((e={},t={})=>(t.locale??s())===`zh-TW`?`思考中`:`thinking`),Ut=((e={},t={})=>(t.locale??s())===`zh-TW`?`+主智慧體`:`+ Main`),Wt=((e={},t={})=>(t.locale??s())===`zh-TW`?`+成員`:`+ Member`),Gt=((e={},t={})=>(t.locale??s())===`zh-TW`?`前哨`:`Outposts`),Kt=((e={},t={})=>(t.locale??s())===`zh-TW`?`手機`:`Phone`),qt=((e={},t={})=>(t.locale??s())===`zh-TW`?`透過 Tailscale 配對手機`:`Pair a phone over Tailscale`),Jt=((e={},t={})=>(t.locale??s())===`zh-TW`?`伺服器送來的快照,頁面無法讀取`:`the server sent a snapshot the page cannot read`),Yt=((e={},t={})=>(t.locale??s())===`zh-TW`?`伺服器回報了頁面無法讀取的問題`:`the server reported a problem the page cannot read`),Xt=e=>`Refused (${e?.status}).`,Zt=e=>`已拒絕(${e?.status})。`,Qt=((e,t={})=>(t.locale??s())===`zh-TW`?Zt(e):Xt(e)),$t=((e={},t={})=>(t.locale??s())===`zh-TW`?`主智慧體`:`main`),en=((e={},t={})=>(t.locale??s())===`zh-TW`?`成員`:`member`),tn=((e={},t={})=>(t.locale??s())===`zh-TW`?`前哨`:`outpost`),nn=((e={},t={})=>(t.locale??s())===`zh-TW`?`未編入`:`unaligned`),rn=((e={},t={})=>(t.locale??s(),`session`)),an=((e={},t={})=>(t.locale??s())===`zh-TW`?`子智慧體`:`subagent`),on=((e={},t={})=>(t.locale??s())===`zh-TW`?`塔台`:`tower`),sn=((e={},t={})=>(t.locale??s())===`zh-TW`?`智慧體`:`Agents`),cn=((e={},t={})=>(t.locale??s())===`zh-TW`?`基地`:`Bases`),ln=((e={},t={})=>(t.locale??s())===`zh-TW`?`等待中`:`Waiting`),un=((e={},t={})=>(t.locale??s())===`zh-TW`?`工作中`:`Working`),dn=((e={},t={})=>(t.locale??s())===`zh-TW`?`狀態`:`States`),fn=e=>`tab ${e?.label}`,pn=e=>`分頁 ${e?.label}`,mn=((e,t={})=>(t.locale??s())===`zh-TW`?pn(e):fn(e)),hn=((e={},t={})=>(t.locale??s())===`zh-TW`?`即時網況 · 通訊`:`live net · comms`),gn=((e={},t={})=>(t.locale??s())===`zh-TW`?`網的總計`:`Net totals`),_n=e=>`${e?.label} tower`,vn=e=>`${e?.label} 塔台`,yn=((e,t={})=>(t.locale??s())===`zh-TW`?vn(e):_n(e)),bn=e=>`using ${e?.tool}`,xn=e=>`使用 ${e?.tool}`,Sn=((e,t={})=>(t.locale??s())===`zh-TW`?xn(e):bn(e)),Cn=((e={},t={})=>(t.locale??s())===`zh-TW`?`等待變化…`:`Waiting for changes…`),wn=`sb-locale`;function Tn(e){let t=/^zh\b/i.test(e)&&(/-(hant|tw|hk|mo)\b/i.test(e)?`zh-TW`:/-(hans|cn|sg|my)\b/i.test(e)?`zh-CN`:void 0);return f(e)??(t?f(t):void 0)??f(e.split(`-`)[0])}function En(e,t){return f(e)??t.map(Tn).find(Boolean)??`en`}var Dn={brand_label:ke,tagline:hn,totals_label:gn,stat_bases:cn,stat_agents:sn,stat_working:un,stat_waiting:ln,alerts:he,no_alerts:zt,pair_button:Kt,pair_title:qt,link_connecting:nt,location:st,all_bases:ge,documents:$e,net_log:Ft,states:dn,mark_working:Pt,mark_waiting:v,mark_idle:_,mark_done:g,mark_error:Mt,credit:Qe,language:tt,waiting_changes:Cn,new_base:Lt};Object.keys(Dn);function On(){let e=null;try{e=localStorage.getItem(wn)}catch{}let n=En(e,navigator.languages??[navigator.language]);l(()=>n),document.documentElement.lang=n;let r={m:(e,t)=>e.textContent=t,mLabel:(e,t)=>e.setAttribute(`aria-label`,t),mTitle:(e,t)=>e.title=t,mEmpty:(e,t)=>e.dataset.empty=t};for(let e of document.querySelectorAll(`[data-m], [data-m-label], [data-m-title], [data-m-empty]`))for(let[t,n]of Object.entries(r))e.dataset[t]&&n(e,Dn[e.dataset[t]]?.()??e.dataset[t]);let i=document.getElementById(`lang`);i.replaceChildren(...t.map(e=>new Option(ot({},{locale:e}),e,!1,e===n))),i.onchange=()=>{try{localStorage.setItem(wn,i.value),location.reload()}catch{i.value=n}}}var kn={working:jt,waiting:Ot,idle:gt,done:ut,error:pt,unknown:Tt};function An(e){let t=new Map;for(let n of e.bases){n.tower&&t.set(`tower:${n.id}`,{name:yn({label:n.label}),mark:n.tower.mark});for(let e of n.tabs.flatMap(e=>e.units))for(let n of[e,...e.subs])t.set(n.id,{name:n.name,mark:n.mark});for(let e of n.outposts)t.set(e.id,{name:e.label,mark:e.mark})}return t}function jn(e,t){if(!e)return[];let[n,r]=[An(e),An(t)],i=[];for(let[e,t]of r){let r=n.get(e);r?r.mark!==t.mark&&i.push({text:kn[t.mark]({name:t.name}),mark:t.mark}):i.push({text:yt({name:t.name}),mark:t.mark})}for(let[e,t]of n)r.has(e)||i.push({text:St({name:t.name}),mark:`idle`});return i}var Mn=e=>e===`waiting`||e===`error`?0:1;function Nn(e,t){let n=new Map;for(let r of e.bases)for(let e of[...r.tower?[{...r.tower,role:`tower`}]:[],...[...r.tabs.flatMap(e=>e.units),...r.outside].flatMap(e=>[e,...e.subs])])n.set(e.key,{key:e.key,ws:r.id,name:e.name,role:e.role,mark:e.mark,note:e.note,at:t,pending:e.pending});return n}function Pn(e,t){return[...t.values()].filter(t=>e?.get(t.key)?.mark!==t.mark&&(Mn(t.mark)===0||e!==void 0&&t.mark===`done`))}var Fn=e=>{try{return decodeURIComponent(e)}catch{return e}},In=e=>/^\.+$/.test(e)?e.replaceAll(`.`,`%2E`):encodeURIComponent(e);function y(e){let[t,n]=e.split(`#`)[0].split(`?`),[r,i,a,o]=t.replace(/^\/+|\/+$/g,``).split(`/`).map(Fn);if(r!==`w`||!i)return{view:`map`};if(a!==`s`||!o)return{view:`workspace`,ws:i};let s=new URLSearchParams(n).get(`at`);return s?{view:`session`,ws:i,key:o,at:s}:{view:`session`,ws:i,key:o}}var b=e=>e.view===`map`?``:e.view===`workspace`?`w/${In(e.ws)}`:`w/${In(e.ws)}/s/${In(e.key)}${e.at?`?at=${encodeURIComponent(e.at)}`:``}`,Ln=e=>e.view===`session`?{view:`workspace`,ws:e.ws}:{view:`map`},x=e=>e.view===`session`?e.key:e.view===`workspace`?`w:${e.ws}`:null;function Rn(e,t=new URL(document.baseURI).pathname){let n=()=>y(location.pathname.slice(t.length)+location.search),r={route:n,href:e=>b(e)||`./`,go(n){let r=t+b(n);location.pathname+location.search!==r&&history.pushState(null,``,r),e(n)}};return addEventListener(`popstate`,()=>e(n())),document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`a[data-route]`);!t||e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.preventDefault(),r.go(y(t.getAttribute(`data-route`))))}),r}var zn={main:`main`,member:`member`,subagent:`subagent`,outpost:`outpost`,outside:`outside`,tower:`tower`},S={working:Pt,waiting:v,idle:_,done:g,error:Mt,unknown:Nt},Bn={main:$t,member:en,subagent:an,tower:on,outpost:tn,outside:nn,session:rn},Vn={thinking:Ht,idle:_,"waiting on a question":v,finished:g},Hn=e=>Object.hasOwn(Bn,e)?Bn[e]():e,Un=e=>e===`waiting`||e===`error`,C=e=>{let t=new DOMParser().parseFromString(e.trim(),`text/html`).body.firstElementChild;if(!(t instanceof HTMLElement))throw Error(`bad template`);return document.importNode(t,!0)},w=(e,t)=>{let n=document.getElementById(e);if(!(n instanceof t))throw Error(`#${e} is missing from the page`);return n},T=(e,t,n)=>{let r=e.querySelector(t);r.textContent!==n&&(r.textContent=n)},E=(e,t)=>{if(e.dataset.mark===t)return;let n=e.dataset.mark!==void 0;e.dataset.mark=t,n&&(e.classList.remove(`flash`),e.offsetWidth,e.classList.add(`flash`))},Wn=(e,t)=>e?e.startsWith(`tool:`)?Sn({tool:e.slice(5)}):Object.hasOwn(Vn,e)?Vn[e]():e:S[t](),D=(e,t)=>{e.toggleAttribute(`hidden`,!t),t&&(e.setAttribute(`href`,b(t)||`./`),e.setAttribute(`data-route`,b(t)))},Gn=`<div class="plate"><i class="ring"></i><svg><use href="#i-main"/></svg><b class="badge"></b></div>`;function Kn(e,t,n,r){E(e,n);let i=e.querySelector(`use`),a=`#i-${zn[t]??`member`}`,o=r?.filter(e=>e.onScreen).length;i.getAttribute(`href`)!==a&&i.setAttribute(`href`,a),o?e.dataset.docs=String(o):delete e.dataset.docs}function O(e,t,n,r){let i=new Map;for(let t of e.children)!t.classList.contains(`leaving`)&&t.dataset.key&&i.set(t.dataset.key,t);let a=e.firstElementChild;for(let o of t){let t=i.get(o.id);for(t||(t=n(o),t.dataset.key=o.id,t.classList.add(`enter`),setTimeout(()=>t.classList.remove(`enter`),600)),i.delete(o.id);a?.classList.contains(`leaving`);)a=a.nextElementSibling;t===a?a=a.nextElementSibling:e.insertBefore(t,a),r(t,o)}for(let e of i.values())e.classList.add(`leaving`),setTimeout(()=>e.remove(),400)}var k=()=>C(`<div class="unit"><div class="card"><a class="hit"></a>${Gn}<div class="meta"><span class="name"></span><span class="line"><em class="role"></em><span class="note"></span></span></div></div><div class="subs"></div></div>`);function A(e,t){let n=e.closest(`.base`)?.dataset.key,r=e.querySelector(`.hit`);D(r,t.key&&n?{view:`session`,ws:n,key:t.key}:void 0),r.setAttribute(`aria-label`,`${t.name}: ${Wn(t.note,t.mark)}`),r.toggleAttribute(`data-alert`,Un(t.mark)),E(e,t.mark),Kn(e.querySelector(`.plate`),t.role,t.mark,t.docs),T(e,`.name`,t.name),T(e,`.role`,Hn(t.role)),T(e,`.note`,Wn(t.note,t.mark)),O(e.querySelector(`.subs`),t.subs??[],k,A)}function j(e,t,n){let r=t.tower?`main`:`member`;e.hidden=!!(n&&t.tower),e.dataset.open=r,e.dataset.ws=t.id,n&&(e.dataset.tab=n),e.textContent!==(r===`main`?Ut():Wt())&&(e.textContent=r===`main`?Ut():Wt())}function M(e,t,n){e.dataset.ws=t.id,e.dataset.name=n?n.label:t.label,n&&(e.dataset.tab=n.id),e.setAttribute(`aria-label`,n?ze({name:n.label}):Ne({name:t.label}))}var qn=()=>C(`<section class="base"><header><div class="tower"><i class="sweep"></i><i class="pulse"></i><svg><use href="#i-tower"/></svg><b class="badge"></b></div><div class="title"><span class="crown"><svg><use href="#i-crown"/></svg>${et()}</span><h2><a class="enter-base"></a></h2><p></p></div><button type="button" class="close-x" data-close="base">×</button></header><div class="spawn-btns"><button type="button" class="pair-btn"></button></div><div class="tabs"></div><div class="outposts" data-label="${Gt()}"></div></section>`);function Jn(e,t){E(e,t.mark),e.classList.toggle(`head`,t.head);let n=e.querySelector(`.tower`);n.classList.toggle(`ghost`,!t.tower),E(n,t.tower?.mark??`unknown`),T(e,`h2 a`,t.label),D(e.querySelector(`h2 a`),{view:`workspace`,ws:t.id}),T(e,`.title p`,t.tower?Ze({state:S[t.tower.mark]()}):Vt()),j(e.querySelector(`.spawn-btns button`),t),M(e.querySelector(`header .close-x`),t),O(e.querySelector(`.tabs`),t.tabs,()=>C(`<div class="tab"><h3><span></span><button type="button" class="tab-add"></button><button type="button" class="close-x" data-close="tab">×</button></h3><div class="units"></div></div>`),(e,n)=>{T(e,`h3 span`,mn({label:n.label})),M(e.querySelector(`.close-x`),t,n),j(e.querySelector(`.tab-add`),t,n.id),O(e.querySelector(`.units`),n.units,k,A)}),O(e.querySelector(`.outposts`),t.outposts.map(e=>({id:e.id,name:e.label,role:`outpost`,mark:e.mark,note:e.mark===`unknown`?Rt():void 0})),k,A)}function Yn(e,t,n){let r=[...e.querySelectorAll(`.base:not(.leaving) .tower`)],i=e.querySelector(`.base.head:not(.leaving) .tower`),a=e.getBoundingClientRect(),o=e=>{let t=e.getBoundingClientRect();return[Math.round(t.x+t.width/2-a.x),Math.round(t.y+t.height/2-a.y)]},s=i?r.filter(e=>e!==i).map(e=>{let[[t,n],[r,a]]=[o(i),o(e)],s=Math.round((t+r)/2);return`M${t} ${n}C${s} ${n} ${s} ${a} ${r} ${a}`}):[],c=s.join(`|`);if(t.dataset.sig===c)return;t.dataset.sig=c;let l=(e,t,...n)=>{let r=document.createElementNS(`http://www.w3.org/2000/svg`,e);for(let[e,n]of Object.entries(t))r.setAttribute(e,n);return r.append(...n),r};t.replaceChildren(...s.flatMap(e=>[l(`path`,{class:`wire`,d:e}),...n?[]:[l(`circle`,{class:`packet`,r:`3`},l(`animateMotion`,{dur:`5s`,repeatCount:`indefinite`,path:e}))]]))}function Xn(){let[e,t,n,r]=[w(`map`,HTMLElement),w(`bases`,HTMLElement),w(`links`,SVGSVGElement),w(`log`,HTMLElement)],i=matchMedia(`(prefers-reduced-motion: reduce)`).matches,a=()=>!e.hidden&&Yn(e,n,i);return new ResizeObserver(a).observe(e),{layout:a,stats(e){let t=e.bases.flatMap(e=>e.tabs.flatMap(e=>e.units.flatMap(e=>[e,...e.subs]))),n=e=>String(t.filter(t=>!e||t.mark===e).length);for(let[t,r]of[[`s-bases`,String(e.bases.length)],[`s-agents`,n()],[`s-working`,n(`working`)],[`s-waiting`,n(`waiting`)]])w(t,HTMLElement).textContent=r},show(e){O(t,e.bases,qn,Jn),requestAnimationFrame(a)},log(e){let t=new Date().toLocaleTimeString([],{hour12:!1});for(let n of e){let e=C(`<li><span></span><time></time></li>`);e.dataset.mark=n.mark,T(e,`span`,n.text),T(e,`time`,t),r.prepend(e)}for(;r.children.length>12;)r.lastElementChild.remove()},pause(e){document.documentElement.classList.toggle(`paused`,e)},still(e){e?n.pauseAnimations():n.unpauseAnimations()}}}var Zn=45e3,Qn=1e3,$n=3e4,er=(e,t)=>Math.min($n,Qn*2**(e-1))*(.8+.4*t);function tr(e){try{return JSON.parse(e)}catch{return}}function nr(e){let t,n,r,i=0,a={state:`connecting`,attempt:0},o=t=>e.onStatus(a={...a,...t}),s=()=>(e.clearTimeout(n),e.clearTimeout(r),n=r=void 0),c=()=>{let e=t;t=void 0,e?.close()},l=()=>{e.clearTimeout(r),r=e.setTimeout(()=>u(),Zn),o({state:`live`,attempt:0,lastContact:e.now()})},u=()=>{c(),s();let t=a.attempt+1;if(t>8)return o({state:`offline`,attempt:t});o({state:`reconnecting`,attempt:t}),e.hidden()||(n=e.setTimeout(d,er(t,e.random())))},d=()=>{c(),s(),i=e.now();let n=t=e.open();n.onError(()=>t===n&&u()),n.listen(`message`,r=>{if(t!==n)return;let i=tr(r);i&&e.onNet(i),o({problem:i?void 0:Jt()}),l()}),n.listen(`ping`,()=>t===n&&l()),n.listen(`problem`,e=>{t===n&&(o({problem:tr(e)??Yt()}),l())}),r=e.setTimeout(()=>u(),Zn)};return{start(){o({state:`connecting`,attempt:0}),d()},resume(){let n=e.now()-i<2e3||a.lastContact!==void 0&&e.now()-a.lastContact<=2e4;t&&n||(o({attempt:0,state:a.state===`live`?`reconnecting`:a.state}),d())},restart:d,hide(){e.clearTimeout(n),n=void 0},stop(){c(),s()}}}var rr=(function(){let e=typeof document<`u`&&document.createElement(`link`).relList;return e&&e.supports&&e.supports(`modulepreload`)?`modulepreload`:`preload`})(),ir=function(e,t){return new URL(e,t).href},ar={},or=function(e){return e.pathname.endsWith(`.css`)},sr=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},N=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e,i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)}r=o(t.map(t=>{t=ir(t,n);let r=s(t),i=or(r);return sr(ar,r.href,()=>{if(e===void 0){e={all:new Set,styles:new Set};let t=document.getElementsByTagName(`link`);for(let n=t.length-1;n>=0;n--){let r=t[n];e.all.add(r.href),r.rel===`stylesheet`&&e.styles.add(r.href)}}if((i?e.styles:e.all).has(r.href))return;let t=document.createElement(`link`);if(t.rel=i?`stylesheet`:rr,i||(t.as=`script`),t.crossOrigin=``,t.href=r.href,a&&t.setAttribute(`nonce`,a),document.head.appendChild(t),i)return new Promise((e,n)=>{t.addEventListener(`load`,e),t.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${r}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};On();var P=Xn(),F=e=>document.getElementById(e),cr=e=>e?new Date(e).toLocaleTimeString([],{hour12:!1}):It(),lr,ur,I,L,R={state:`connecting`,attempt:0},z={view:`map`},dr=!1,B,fr=``,V,pr,H=e=>V?e(V):void pr?.then(e);function mr(){pr??=N(async()=>{let{mountFocus:e}=await import(`./views-CZLZBkEo.js`);return{mountFocus:e}},[],import.meta.url).then(({mountFocus:e})=>(V=e({data:Tr,restart:()=>Q.restart(),openTile:G,embedTerminal:(e,t,n)=>new Promise(r=>W(i=>r(i.terminal.embed(e,t,n)))),online:()=>R.state===`live`}),V.show(z,z),I&&V.net(I),V))}var U,hr,W=e=>{if(U)return e(U);hr??=N(async()=>{let{mountPanels:e}=await import(`./layer-BNbiWPRd.js`);return{mountPanels:e}},[],import.meta.url).then(({mountPanels:e})=>U=e({label:e=>I?.bases.find(t=>t.id===e)?.label??e,recent:async e=>(await(X?X.data(e).latest():Y(e,`?limit=12`))).items,post:e=>X&&((t,n)=>X.data(e).post(t,n)),stream:()=>fr,showTerminal:(e,t)=>(U?.stack.close(),V?.terminal(t),Z.go({view:`session`,ws:e,key:t}))})),hr.then(e)},G=(e,t)=>W(n=>n.tiles.open(e,t)),K=document.querySelector(`link[rel="icon"]`),q=K&&decodeURIComponent(K.href.slice(K.href.indexOf(`,`)+1)),gr=0;function _r(e){let t=e.bases.flatMap(e=>[...e.tower?[e.tower]:[],...[...e.tabs.flatMap(e=>e.units),...e.outside].flatMap(e=>[e,...e.subs])]).filter(e=>e.mark===`waiting`||e.pending).length;if(!K||!q||t===gr)return;gr=t;let n=`<circle cx='23' cy='9' r='9' fill='#ffd166' stroke='#0b1220' stroke-width='2'/><text x='23' y='13' text-anchor='middle' font-family='sans-serif' font-size='${t>9?9:12}' font-weight='700' fill='#06101e'>${t>9?`9+`:t}</text>`;K.href=`data:image/svg+xml,${encodeURIComponent(t?q.replace(`</svg>`,`${n}</svg>`):q)}`}function J(e){if(I=L=e,_r(e),document.hidden)return;P.stats(e);let t=Nn(e,Date.now()),n=Pn(B,t);(n.length||U)&&W(e=>e.alerts(n,t)),B=t,P.log(jn(ur,e)),ur=e,H(t=>t.net(e)),z.view===`map`&&(P.show(e),lr=e,L=void 0)}function vr(e){let t=z,n=e.view===`workspace`&&t.view===`map`?document.querySelector(`#bases [data-key="${CSS.escape(e.ws)}"]`)?.getBoundingClientRect():void 0;z=e,e.view!==`map`&&mr(),F(`map`).hidden=e.view!==`map`,F(`legend`).hidden=e.view===`session`,P.still(e.view!==`map`),H(r=>r.show(e,t,n)),e.view===`map`&&I&&I!==lr&&(J(I),requestAnimationFrame(P.layout)),dr&&x(e)!==x(t)&&Q.restart()}function yr(e){R=e;let t=e.state===`reconnecting`||e.state===`offline`;document.body.dataset.stale=F(`stage`).dataset.stale=String(t),F(`link`).dataset.state=e.state,F(`link-text`).textContent={connecting:nt,live:rt,reconnecting:at,offline:it}[e.state](),V&&I&&V.net(I),U?.stack.redraw();let n=F(`banner`);n.hidden=!t&&!e.problem;let r=e.state===`offline`?xe({tries:e.attempt-1}):e.state===`reconnecting`?e.attempt?Oe({attempt:e.attempt}):Te():we({problem:e.problem??``}),i=document.createElement(`b`);i.textContent=cr(e.lastContact),n.replaceChildren(`${r} ${ve()} `,i,_e())}function br(e,t){try{let n=JSON.parse(t);H(t=>e===`history`?t.history(n):t.cards(n))}catch{}}var xr=document.querySelector(`meta[name="sb-build"]`)?.content,Sr=e=>!!(xr&&xr!==JSON.parse(e).build);function Cr(e){let t=new EventSource(e?`events?watch=${encodeURIComponent(e)}`:`events`);return{onError:e=>t.onerror=e,listen:(e,n)=>t.addEventListener(e,e=>n(e.data)),close:()=>t.close()}}var wr=e=>fetch(`api/${e}`,{cache:`no-store`}).then(e=>e.ok?e.json():Promise.reject(Error(String(e.status)))),Y=(e,t=``)=>wr(`history/${encodeURIComponent(e)}${t}`),X=void 0,Tr=e=>({older:t=>Y(e,`?before=${encodeURIComponent(t)}`),latest:()=>Y(e),entry:t=>wr(`entry/${encodeURIComponent(e)}/${encodeURIComponent(t)}`).catch(()=>void 0),pic:(t,n)=>`api/image/${encodeURIComponent(e)}/${encodeURIComponent(t)}/${n}`}),Er=()=>{let e=Cr(x(z));return e.listen(`history`,e=>br(`history`,e)),e.listen(`cards`,e=>br(`cards`,e)),e.listen(`hello`,e=>Sr(e)?location.reload():(fr=e,U?.terminal.hello())),e.listen(`mirror`,e=>U?.terminal.frame(e)),e};document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`a[data-alert]`),n=t&&y(t.getAttribute(`data-route`)??``);if(!n||n.view!==`session`||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;let r=B?.get(n.key);r&&(e.preventDefault(),W(e=>e.stack.show(r)))},!0);var Z=Rn(e=>vr(e)),Q=nr({open:Er,now:Date.now,setTimeout:(e,t)=>window.setTimeout(e,t),clearTimeout:e=>window.clearTimeout(e),random:Math.random,hidden:()=>document.hidden,onNet:J,onStatus:yr}),Dr=()=>Q.resume();document.addEventListener(`visibilitychange`,()=>{if(P.pause(document.hidden),document.hidden)return Q.hide();L&&J(L),H(e=>e.wake()),Dr()}),addEventListener(`keydown`,e=>{e.key!==`Escape`||e.defaultPrevented||document.querySelector(`dialog.sheet[open], dialog.lightbox[open]`)||(e.preventDefault(),!U?.stack.close()&&z.view!==`map`&&Z.go(Ln(z)))}),F(`pair`).addEventListener(`click`,()=>void N(async()=>{let{pairTile:e}=await import(`./pair-BH6gsBf3.js`);return{pairTile:e}},[],import.meta.url).then(({pairTile:e})=>G(e(),!0)));var $=(e,t)=>new Promise(n=>{let r=document.createElement(`dialog`),i=document.createElement(`p`),a=document.createElement(`div`),o=(e,t,i)=>Object.assign(document.createElement(`button`),{type:`button`,className:t,textContent:e,onclick:()=>(r.close(),n(i))});[r.className,i.textContent,a.className]=[`sheet`,e,`sheet-row`],a.append(...t?[o(Ae(),`later`,!1),o(t,`sheet-yes`,!0)]:[o(h(),`later`,!1)]),r.append(i,a),r.addEventListener(`close`,()=>(r.remove(),n(!1))),document.body.append(r),r.showModal()}),Or=e=>{if(z.view===`map`)return;if(e.close===`base`)return void(z.ws===e.ws&&Z.go({view:`map`}));let t=e=>e.flatMap(e=>[e.key,...t(e.subs)]),n=e.close===`tab`&&z.ws===e.ws?I?.bases.find(t=>t.id===e.ws)?.tabs.find(t=>t.id===e.tab):void 0;z.view===`session`&&(e.close===`unit`?z.key===e.key:n&&t(n.units).includes(z.key))&&Z.go({view:`workspace`,ws:z.ws})};document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`button[data-close]`),n=t?.dataset;t&&n&&(e.preventDefault(),$((n.close===`base`?Ie:n.close===`tab`?He:n.role===`tower`?Ge:Je)({name:n.name??``}),h()).then(e=>{e&&(t.toggleAttribute(`disabled`,!0),N(async()=>{let{post:e}=await import(`./post-UHMNmNgA.js`).then(e=>e.n);return{post:e}},[],import.meta.url).then(({post:e})=>e(`close/${n.close}`,n.close===`unit`?{key:n.key}:{workspace:n.ws,...n.tab&&{tab:n.tab}})).then(e=>e.ok?Or(n):$(e.body.reason??Qt({status:e.status})),()=>$(Bt())).finally(()=>t.toggleAttribute(`disabled`,!1)))}))}),document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`button[data-open]`);t&&N(async()=>{let{openingOf:e,spawnTile:t}=await import(`./spawn-CDkaGY6G.js`);return{openingOf:e,spawnTile:t}},[],import.meta.url).then(({openingOf:e,spawnTile:n})=>{let r=e(t,I?.bases??[]);r&&G(n(r),!0)})});for(let e of[`focus`,`pageshow`,`online`])window.addEventListener(e,()=>!document.hidden&&Dr());yr(R),vr(Z.route()),Q.start(),dr=!0;export{Ae as A,Bt as C,$e as D,et as E,s as M,Ze as O,Vt as S,Rt as T,Mn as _,D as a,Qt as b,w as c,C as d,E as f,Un as g,T as h,Gn as i,ge as j,h as k,Wn as l,O as m,zn as n,M as o,Hn as p,S as r,j as s,N as t,Kn as u,un as v,zt as w,Gt as x,ln as y};
@@ -1,2 +1,2 @@
1
- import{t as e}from"./post-UHMNmNgA.js";import{i as t,n,t as r}from"./ask-K6BXtdBN.js";import{A as i,M as a,_ as o,a as s,b as c,c as l,d as u,f as d,h as f,i as p,k as m,l as h,m as g,p as ee,u as _,w as te}from"./index-BInsCHu4.js";import{t as v}from"./dom-BaTXH9WU.js";var y=e=>`Alerts: ${e?.tally}`,b=e=>`警示:${e?.tally}`,ne=((e,t={})=>(t.locale??a())===`zh-TW`?b(e):y(e)),x=e=>`Also queued: ${e?.tally}`,S=e=>`佇列中還有:${e?.tally}`,re=((e,t={})=>(t.locale??a())===`zh-TW`?S(e):x(e)),C=((e={},t={})=>(t.locale??a())===`zh-TW`?`關閉文件`:`Close document`),w=e=>`Close ${e?.title}`,T=e=>`關閉 ${e?.title}`,ie=((e,t={})=>(t.locale??a())===`zh-TW`?T(e):w(e)),E=((e={},t={})=>(t.locale??a())===`zh-TW`?`連線中…`:`Connecting…`),D=((e={},t={})=>(t.locale??a())===`zh-TW`?`警示`:`alert`),ae=((e={},t={})=>(t.locale??a())===`zh-TW`?`符合寬度`:`Fit width`),oe=((e={},t={})=>(t.locale??a())===`zh-TW`?`無法取得紀錄。`:`History unavailable.`),O=((e={},t={})=>(t.locale??a())===`zh-TW`?`退格鍵`:`Backspace`),k=((e={},t={})=>(t.locale??a())===`zh-TW`?`下`:`Down`),A=((e={},t={})=>(t.locale??a(),`End`)),j=((e={},t={})=>(t.locale??a(),`Enter`)),M=((e={},t={})=>(t.locale??a(),`Escape`)),N=((e={},t={})=>(t.locale??a(),`Home`)),P=((e={},t={})=>(t.locale??a())===`zh-TW`?`左`:`Left`),F=((e={},t={})=>(t.locale??a())===`zh-TW`?`下一頁`:`Page down`),I=((e={},t={})=>(t.locale??a())===`zh-TW`?`上一頁`:`Page up`),L=((e={},t={})=>(t.locale??a())===`zh-TW`?`右`:`Right`),R=((e={},t={})=>(t.locale??a(),`Shift+Tab`)),z=((e={},t={})=>(t.locale??a())===`zh-TW`?`空白鍵`:`Space`),B=((e={},t={})=>(t.locale??a(),`Tab`)),V=((e={},t={})=>(t.locale??a())===`zh-TW`?`上`:`Up`),H=e=>`Keys for ${e?.name}`,U=e=>`${e?.name} 的按鍵`,W=((e,t={})=>(t.locale??a())===`zh-TW`?U(e):H(e)),G=((e={},t={})=>(t.locale??a())===`zh-TW`?`最後一則通訊`:`Last transmission`),K=((e={},t={})=>(t.locale??a())===`zh-TW`?`稍後`:`Later`),q=((e={},t={})=>(t.locale??a())===`zh-TW`?`已離開網`:`left the net`),se=e=>`The mirror ended: ${e?.why}`,ce=e=>`鏡像已結束:${e?.why}`,le=((e,t={})=>(t.locale??a())===`zh-TW`?ce(e):se(e)),ue=((e={},t={})=>(t.locale??a())===`zh-TW`?`等待輸入密碼時隱藏;請在終端機中輸入。`:`Hidden while it waits for a secret; type it in the terminal.`),de=e=>`Live · ${e?.cols}×${e?.rows}`,fe=e=>`即時 · ${e?.cols}×${e?.rows}`,pe=((e,t={})=>(t.locale??a())===`zh-TW`?fe(e):de(e)),me=((e={},t={})=>(t.locale??a())===`zh-TW`?`還沒有訊息。`:`No messages yet.`),he=((e={},t={})=>(t.locale??a())===`zh-TW`?`開啟通訊`:`Open comms`),ge=((e={},t={})=>(t.locale??a())===`zh-TW`?`此分頁隱藏時暫停。`:`Paused while this tab is hidden.`),_e=e=>`${e?.why} Open the terminal again to retry.`,ve=e=>`${e?.why} 重新開啟終端機即可重試。`,ye=((e,t={})=>(t.locale??a())===`zh-TW`?ve(e):_e(e)),be=((e={},t={})=>(t.locale??a())===`zh-TW`?`送出 Enter`:`Send Enter`),xe=((e={},t={})=>(t.locale??a())===`zh-TW`?`送出 Escape`:`Send Escape`),Se=((e={},t={})=>(t.locale??a())===`zh-TW`?`錯誤`:`error`),Ce=((e={},t={})=>(t.locale??a())===`zh-TW`?`已完成`:`finished`),J=((e={},t={})=>(t.locale??a())===`zh-TW`?`已離開`:`gone`),we=((e={},t={})=>(t.locale??a())===`zh-TW`?`提問`:`question`),Te=((e={},t={})=>(t.locale??a())===`zh-TW`?`更新`:`update`),Ee=e=>`${e?.count} finished`,De=e=>`${e?.count} 個已完成`,Oe=((e,t={})=>(t.locale??a())===`zh-TW`?De(e):Ee(e)),ke=e=>{let n=t(`en`,e?.count,{},!0);return n===`one`?`${e?.count} needs you`:n===`other`?`${e?.count} need you`:`tally_need`},Ae=e=>`${e?.count} 個需要你`,je=((e,t={})=>(t.locale??a())===`zh-TW`?Ae(e):ke(e)),Me=e=>`Terminal of ${e?.name}, read only`,Ne=e=>`${e?.name} 的終端機,唯讀`,Pe=((e,t={})=>(t.locale??a())===`zh-TW`?Ne(e):Me(e)),Fe=e=>`Terminal · ${e?.name}`,Ie=e=>`終端機 · ${e?.name}`,Le=((e,t={})=>(t.locale??a())===`zh-TW`?Ie(e):Fe(e)),Re=((e={},t={})=>(t.locale??a())===`zh-TW`?`等待`:`waiting on`),ze=[[[`esc`,`esc`,M],[`tab`,`tab`,B],[`up`,`↑`,V],[`enter`,`enter`,j]],[[`shift+tab`,`⇧tab`,R],[`left`,`←`,P],[`down`,`↓`,k],[`right`,`→`,L]],[[`space`,`space`,z],[`backspace`,`⌫`,O],[`home`,`home`,N],[`end`,`end`,A],[`pageup`,`pgup`,I],[`pagedown`,`pgdn`,F]]],Be=`123456789`.split(``);function Ve({name:e,state:t,post:r,stream:a}){let o=[],s=v(`p`,{class:`pad-note`,role:`status`}),l=!1,u=([e,t,n])=>{let r=v(`button`,{type:`button`,class:`pad-key`,"data-key":e,"aria-label":n()},t);return r.onclick=t=>t.isTrusted&&!l&&void h(e),o.push(r),r},d=v(`details`,{class:`pad-digits`},v(`summary`,null,`1–9`),v(`div`,{class:`pad-row`},...Be.map(e=>u([e,e,()=>e])))),f=v(`div`,{class:`pad`,role:`group`,"aria-label":W({name:e})},...ze.map(e=>v(`div`,{class:`pad-row`},...e.map(u))),d,s),p=(e,t=``)=>(s.dataset.tone=t,s.replaceChildren(e)),m=(e,t,n)=>{let r=v(`button`,{type:`button`,class:`pad-yes`},e===`enter`?be():xe()),a=v(`button`,{type:`button`,class:`cmp-link`},i());r.onclick=t=>t.isTrusted&&!l&&void h(e,n),a.onclick=()=>p(``),s.dataset.tone=`ask`,s.replaceChildren(v(`span`,null,t),r,a),a.focus()};async function h(e,t){l=!0,g(),p(``);try{let n=await r(`keys`,{key:e,stream:a(),...t?{confirmed:t}:{}});n.status===409&&n.body.error===`confirm`&&typeof n.body.confirm==`string`?m(e,String(n.body.reason??``),n.body.confirm):n.ok||p(n.body.reason??c({status:n.status}),`error`)}catch{p(n(),`error`)}finally{l=!1,g()}}function g(){let e=t();for(let t of o)t.disabled=l||e===`off`||e===`hidden`&&t.dataset.key!==`esc`}return g(),{el:f,update:g}}var Y=[0,95,135,175,215,255],He=120,Ue=5e3,We=3e3,X=e=>Number.isInteger(e)&&e>=0&&e<=255,Ge=e=>X(e)?e<16?e:e<232?`rgb(${Y[Math.floor((e-16)/36)]},${Y[Math.floor((e-16)/6)%6]},${Y[(e-16)%6]})`:`rgb(${8+10*(e-232)},${8+10*(e-232)},${8+10*(e-232)})`:void 0,Ke=([e,t,n])=>[e,t,n].every(e=>X(e))?`rgb(${e},${t},${n})`:void 0;function qe(e,t){let n={...e},r=t.split(`;`);for(let e=0;e<r.length;e++){let t=r[e].split(`:`).map(e=>e===``?0:Number(e)),i=t[0];if(i===38||i===48||i===58){let a=t.length>1?t[1]:Number(r[e+1]),o=t.length>1?t.slice(2):r.slice(e+2,e+(a===5?3:5)).map(Number);t.length===1&&(e+=a===5?2:a===2?4:1);let s=a===5?Ge(o[0]):a===2?Ke(o.slice(-3)):void 0;s!==void 0&&i!==58&&(n[i===38?`fg`:`bg`]=s)}else if(i===0)for(let e of Object.keys(n))delete n[e];else i===1||i===2?n[i===1?`b`:`d`]=!0:i===22?n.b=n.d=!1:i===3||i===23?n.i=i===3:i===4||i===21||i===24?n.u=i!==24&&t[1]!==0:i===7||i===27?n.v=i===7:i===9||i===29?n.s=i===9:i>=30&&i<=37||i>=90&&i<=97?n.fg=i-(i<90?30:82):i>=40&&i<=47||i>=100&&i<=107?n.bg=i-(i<100?40:92):(i===39||i===49)&&delete n[i===39?`fg`:`bg`]}return n}function Je(e){let t=[],n={},r=0,i=e=>{let r=e.replace(/\x1b(\[[0-?]*[ -/]*[@-~]?)?|[\u0000-\u001f\u007f-\u009f]/g,``);if(!r)return;let[i,a]=n.v?[n.bg??`z`,n.fg??`z`]:[n.fg,n.bg],o=[typeof i==`number`||i===`z`?`c${i}`:``,typeof a==`number`||a===`z`?`k${a}`:``,...[`b`,`d`,`i`,`u`,`s`].filter(e=>n[e]).map(e=>`t${e}`)].filter(Boolean).join(` `);t.push({text:r,cls:o,...typeof i==`string`&&i!==`z`&&{fg:i},...typeof a==`string`&&a!==`z`&&{bg:a}})};for(let t of e.matchAll(/\x1b\[([0-9;:]{0,64})m/g))i(e.slice(r,t.index)),n=qe(n,t[1]),r=t.index+t[0].length;return i(e.slice(r)),t}function Z(e,t){let n=Math.min(Math.max(0,Number(t.rows)||0),He);for(;e.children.length<n;)e.append(v(`div`,{class:`tr`}));for(;e.children.length>n;)e.lastElementChild.remove();for(let[r,i]of Array.isArray(t.set)?t.set:[])!Number.isInteger(r)||r<0||r>=n||typeof i!=`string`||e.children[r].replaceChildren(...Je(i).map(e=>{if(!e.cls&&!e.fg&&!e.bg)return e.text;let t=v(`span`,e.cls?{class:e.cls}:null,e.text);return e.fg&&(t.style.color=e.fg),e.bg&&(t.style.backgroundColor=e.bg),t}))}function Ye({tiles:e,post:t,stream:r,pad:i}){let a=new Map,o,s=()=>{try{return String(JSON.parse(r()).stream??``)}catch{return``}},l=(e,t,n=``)=>(e.pad?.update(),(e.state.textContent!==t||e.state.dataset.tone!==n)&&(e.state.dataset.tone=n,e.state.textContent=t)),u=(e,t)=>(e.ended=!0,l(e,ye({why:t}),`error`)),d=(e,t,r=s())=>r&&void(e.queue=e.queue.then(()=>e.post(`mirror`,{stream:r,on:t}).then(n=>t&&!n.ok&&u(e,n.body.reason??c({status:n.status})),()=>t&&u(e,n())))),f=(e,t=Math.max(e.cols,...[...e.box.children].map(e=>e.textContent?.length??0)))=>e.box.style.fontSize=e.fit.getAttribute(`aria-pressed`)===`true`&&t?`${Math.max(6,Math.floor((e.scroll.clientWidth-20)/(t*.6)))}px`:``,p=e=>Date.now()-e.seen>We,m=()=>(clearInterval(o),o=a.size&&!document.hidden?setInterval(()=>a.forEach(e=>(e.box.classList.toggle(`stale`,p(e)),e.pad?.update())),1e3):void 0);document.addEventListener(`visibilitychange`,()=>(m(),a.forEach(e=>{clearTimeout(e.away),document.hidden?e.away=setTimeout(()=>(e.parked=!0,d(e,!1),l(e,ge())),Ue):e.parked&&(e.parked=!1,d(e,!0))})));let h=(e,n)=>{let r={key:e,box:v(`div`,{class:`term`,role:`group`,"aria-label":Pe({name:n})}),scroll:v(`div`,{class:`term-scroll`,tabindex:`0`}),state:v(`p`,{class:`term-state`,role:`status`},E()),fit:v(`button`,{type:`button`,class:`cmp-link`,"aria-pressed":`false`},ae()),post:t(e),cols:0,seen:0,parked:!1,first:!0,ended:!1,queue:Promise.resolve()};return r.fit.onclick=()=>(r.fit.setAttribute(`aria-pressed`,String(r.fit.getAttribute(`aria-pressed`)!==`true`)),f(r)),r.scroll.append(r.box),new ResizeObserver(()=>f(r)).observe(r.scroll),a.set(e,r),d(r,!0),m(),r.pad=i?.({name:n,state:()=>r.parked||r.ended||p(r)?`off`:r.box.classList.contains(`hidden`)?`hidden`:`live`,post:r.post,stream:s}),r.tile={id:`term:${e}`,title:Le({name:n}),icon:`i-comms`,body:()=>v(`div`,{class:`term-tile`},v(`div`,{class:`term-bar`},r.state,r.fit),r.scroll,r.pad?.el),closed:()=>(clearTimeout(r.away),d(r,!1),a.delete(e),m())}};return{open(t,n){let r=a.get(t);r?.ended&&(r.ended=!1,l(r,E()),d(r,!0)),e.open(r?.tile??h(t,n),!0)},embed(e,t,n){let r=a.get(e);r?.ended&&(r.ended=!1,l(r,E()),d(r,!0));let i=r?.tile??h(e,t);return n.replaceChildren(i.body()),()=>(i.closed?.(),n.replaceChildren())},hello:()=>a.forEach(e=>!e.parked&&!e.ended&&d(e,!0)),frame(e){let t;try{t=JSON.parse(e)}catch{return}let n=a.get(t.key);if(n){if(n.box.classList.toggle(`hidden`,!!(t.hidden||t.ended)),t.ended)return u(n,le({why:t.ended}));if([n.seen,n.ended]=[Date.now(),!1],n.box.classList.remove(`stale`),t.hidden)return Z(n.box,{key:n.key,rows:0}),l(n,ue());Z(n.box,t),(t.whole||t.cols&&t.cols!==n.cols)&&(n.cols=t.cols||n.cols,f(n)),l(n,pe({cols:n.cols,rows:n.box.children.length}),`ok`),n.first&&t.whole&&(n.first=!1,requestAnimationFrame(()=>n.scroll.scrollTop=n.scroll.scrollHeight))}}}}var Q=(e,t)=>o(e.mark)-o(t.mark)||e.at-t.at,$=e=>{let t=e.filter(e=>o(e.mark)===0).length,n=e.length-t;return[t&&je({count:t}),n&&Oe({count:n})].filter(Boolean).join(` · `)};function Xe(e){let t=[],n=[],r=()=>e.render(t.map(e=>e.alert),n),i=(i,a,o=!0)=>{let s=t.findIndex(e=>e.alert.key===i.key);if(s>=0&&!o)return;let c=s>=0?t.splice(s,1)[0]:{alert:i,back:a,raised:i.mark};!o&&t.length?t.splice(t.length-1,0,c):t.push(c),n=n.filter(e=>e.key!==i.key),r(),o&&e.enter(c.alert)};return{get open(){return t.map(e=>e.alert)},get queue(){return n},arrive(e){let i=t.find(t=>t.alert.key===e.key);if(i)[i.alert,i.raised]=[{...e,at:i.alert.at},e.mark];else{let t=n.find(t=>t.key===e.key);n=[...n.filter(t=>t.key!==e.key),t&&t.mark===e.mark?t:e].sort(Q)}r()},prune(e){n=n.filter(t=>e(t.key)?.mark===t.mark);for(let n of t){let t=e(n.alert.key);n.alert=t?{...n.alert,...t,gone:void 0,at:n.alert.at}:{...n.alert,mark:`unknown`,note:void 0,pending:void 0,gone:!0}}r()},redraw:r,show:(t,n=!0)=>i(t,e.focused(),n),raise(n){let r=t.find(e=>e.alert.key===n);r&&r!==t.at(-1)&&i(r.alert,e.focused())},next(){n[0]&&i(n[0],e.focused())},close(a=`close`){let s=t.pop();if(!s)return!1;let c=t.at(-1),l=a===`close`?n.find(e=>o(e.mark)===0):void 0;return a===`later`&&s.alert.mark===s.raised&&o(s.raised)===0&&(n=[...n,s.alert].sort(Q)),!c&&l?(i(l,s.back),!0):(r(),!e.restore(s.back)&&c&&e.enter(c.alert),!0)}}}var Ze=`a, button, input, textarea, select, summary, label, [role=button]`;function Qe(e){let t=[],n,r=()=>e.render(t,n);return{get tiles(){return t},get active(){return n},open(i,a=!0){if(!a&&t.length>=4&&!t.some(e=>e.id===i.id))return void i.closed?.();t.some(e=>e.id===i.id)||(t=[...t,i]).slice(0,-4).forEach(e=>e.closed?.()),t=t.slice(-4),(a||!t.some(e=>e.id===n))&&(n=i.id),r(),a&&e.enter(t.find(e=>e.id===i.id))},close(e){let i=t.findIndex(t=>t.id===e);i<0||(t[i].closed?.(),t=t.filter(t=>t.id!==e),n===e&&(n=(t[i]??t[i-1])?.id),r())},activate(e){n=e,r()}}}function $e(e){let t=new Set(e.flatMap(e=>e.kind===`result`&&e.callId?[e.callId]:[])),n=e.filter(e=>e.kind===`assistant`),r=n.at(-1),i=r?.tools?.find(e=>!t.has(e.id));return{said:(n.findLast(e=>e.text?.trim())?.text?.trim().split(`
1
+ import{t as e}from"./post-UHMNmNgA.js";import{i as t,n,t as r}from"./ask-BzyjXf83.js";import{A as i,M as a,_ as o,a as s,b as c,c as l,d as u,f as d,h as f,i as p,k as m,l as h,m as g,p as ee,u as _,w as te}from"./index-CZq2ySys.js";import{t as v}from"./dom-BaTXH9WU.js";var y=e=>`Alerts: ${e?.tally}`,b=e=>`警示:${e?.tally}`,ne=((e,t={})=>(t.locale??a())===`zh-TW`?b(e):y(e)),x=e=>`Also queued: ${e?.tally}`,S=e=>`佇列中還有:${e?.tally}`,re=((e,t={})=>(t.locale??a())===`zh-TW`?S(e):x(e)),C=((e={},t={})=>(t.locale??a())===`zh-TW`?`關閉文件`:`Close document`),w=e=>`Close ${e?.title}`,T=e=>`關閉 ${e?.title}`,ie=((e,t={})=>(t.locale??a())===`zh-TW`?T(e):w(e)),E=((e={},t={})=>(t.locale??a())===`zh-TW`?`連線中…`:`Connecting…`),D=((e={},t={})=>(t.locale??a())===`zh-TW`?`警示`:`alert`),ae=((e={},t={})=>(t.locale??a())===`zh-TW`?`符合寬度`:`Fit width`),oe=((e={},t={})=>(t.locale??a())===`zh-TW`?`無法取得紀錄。`:`History unavailable.`),O=((e={},t={})=>(t.locale??a())===`zh-TW`?`退格鍵`:`Backspace`),k=((e={},t={})=>(t.locale??a())===`zh-TW`?`下`:`Down`),A=((e={},t={})=>(t.locale??a(),`End`)),j=((e={},t={})=>(t.locale??a(),`Enter`)),M=((e={},t={})=>(t.locale??a(),`Escape`)),N=((e={},t={})=>(t.locale??a(),`Home`)),P=((e={},t={})=>(t.locale??a())===`zh-TW`?`左`:`Left`),F=((e={},t={})=>(t.locale??a())===`zh-TW`?`下一頁`:`Page down`),I=((e={},t={})=>(t.locale??a())===`zh-TW`?`上一頁`:`Page up`),L=((e={},t={})=>(t.locale??a())===`zh-TW`?`右`:`Right`),R=((e={},t={})=>(t.locale??a(),`Shift+Tab`)),z=((e={},t={})=>(t.locale??a())===`zh-TW`?`空白鍵`:`Space`),B=((e={},t={})=>(t.locale??a(),`Tab`)),V=((e={},t={})=>(t.locale??a())===`zh-TW`?`上`:`Up`),H=e=>`Keys for ${e?.name}`,U=e=>`${e?.name} 的按鍵`,W=((e,t={})=>(t.locale??a())===`zh-TW`?U(e):H(e)),G=((e={},t={})=>(t.locale??a())===`zh-TW`?`最後一則通訊`:`Last transmission`),K=((e={},t={})=>(t.locale??a())===`zh-TW`?`稍後`:`Later`),q=((e={},t={})=>(t.locale??a())===`zh-TW`?`已離開網`:`left the net`),se=e=>`The mirror ended: ${e?.why}`,ce=e=>`鏡像已結束:${e?.why}`,le=((e,t={})=>(t.locale??a())===`zh-TW`?ce(e):se(e)),ue=((e={},t={})=>(t.locale??a())===`zh-TW`?`等待輸入密碼時隱藏;請在終端機中輸入。`:`Hidden while it waits for a secret; type it in the terminal.`),de=e=>`Live · ${e?.cols}×${e?.rows}`,fe=e=>`即時 · ${e?.cols}×${e?.rows}`,pe=((e,t={})=>(t.locale??a())===`zh-TW`?fe(e):de(e)),me=((e={},t={})=>(t.locale??a())===`zh-TW`?`還沒有訊息。`:`No messages yet.`),he=((e={},t={})=>(t.locale??a())===`zh-TW`?`開啟通訊`:`Open comms`),ge=((e={},t={})=>(t.locale??a())===`zh-TW`?`此分頁隱藏時暫停。`:`Paused while this tab is hidden.`),_e=e=>`${e?.why} Open the terminal again to retry.`,ve=e=>`${e?.why} 重新開啟終端機即可重試。`,ye=((e,t={})=>(t.locale??a())===`zh-TW`?ve(e):_e(e)),be=((e={},t={})=>(t.locale??a())===`zh-TW`?`送出 Enter`:`Send Enter`),xe=((e={},t={})=>(t.locale??a())===`zh-TW`?`送出 Escape`:`Send Escape`),Se=((e={},t={})=>(t.locale??a())===`zh-TW`?`錯誤`:`error`),Ce=((e={},t={})=>(t.locale??a())===`zh-TW`?`已完成`:`finished`),J=((e={},t={})=>(t.locale??a())===`zh-TW`?`已離開`:`gone`),we=((e={},t={})=>(t.locale??a())===`zh-TW`?`提問`:`question`),Te=((e={},t={})=>(t.locale??a())===`zh-TW`?`更新`:`update`),Ee=e=>`${e?.count} finished`,De=e=>`${e?.count} 個已完成`,Oe=((e,t={})=>(t.locale??a())===`zh-TW`?De(e):Ee(e)),ke=e=>{let n=t(`en`,e?.count,{},!0);return n===`one`?`${e?.count} needs you`:n===`other`?`${e?.count} need you`:`tally_need`},Ae=e=>`${e?.count} 個需要你`,je=((e,t={})=>(t.locale??a())===`zh-TW`?Ae(e):ke(e)),Me=e=>`Terminal of ${e?.name}, read only`,Ne=e=>`${e?.name} 的終端機,唯讀`,Pe=((e,t={})=>(t.locale??a())===`zh-TW`?Ne(e):Me(e)),Fe=e=>`Terminal · ${e?.name}`,Ie=e=>`終端機 · ${e?.name}`,Le=((e,t={})=>(t.locale??a())===`zh-TW`?Ie(e):Fe(e)),Re=((e={},t={})=>(t.locale??a())===`zh-TW`?`等待`:`waiting on`),ze=[[[`esc`,`esc`,M],[`tab`,`tab`,B],[`up`,`↑`,V],[`enter`,`enter`,j]],[[`shift+tab`,`⇧tab`,R],[`left`,`←`,P],[`down`,`↓`,k],[`right`,`→`,L]],[[`space`,`space`,z],[`backspace`,`⌫`,O],[`home`,`home`,N],[`end`,`end`,A],[`pageup`,`pgup`,I],[`pagedown`,`pgdn`,F]]],Be=`123456789`.split(``);function Ve({name:e,state:t,post:r,stream:a}){let o=[],s=v(`p`,{class:`pad-note`,role:`status`}),l=!1,u=([e,t,n])=>{let r=v(`button`,{type:`button`,class:`pad-key`,"data-key":e,"aria-label":n()},t);return r.onclick=t=>t.isTrusted&&!l&&void h(e),o.push(r),r},d=v(`details`,{class:`pad-digits`},v(`summary`,null,`1–9`),v(`div`,{class:`pad-row`},...Be.map(e=>u([e,e,()=>e])))),f=v(`div`,{class:`pad`,role:`group`,"aria-label":W({name:e})},...ze.map(e=>v(`div`,{class:`pad-row`},...e.map(u))),d,s),p=(e,t=``)=>(s.dataset.tone=t,s.replaceChildren(e)),m=(e,t,n)=>{let r=v(`button`,{type:`button`,class:`pad-yes`},e===`enter`?be():xe()),a=v(`button`,{type:`button`,class:`cmp-link`},i());r.onclick=t=>t.isTrusted&&!l&&void h(e,n),a.onclick=()=>p(``),s.dataset.tone=`ask`,s.replaceChildren(v(`span`,null,t),r,a),a.focus()};async function h(e,t){l=!0,g(),p(``);try{let n=await r(`keys`,{key:e,stream:a(),...t?{confirmed:t}:{}});n.status===409&&n.body.error===`confirm`&&typeof n.body.confirm==`string`?m(e,String(n.body.reason??``),n.body.confirm):n.ok||p(n.body.reason??c({status:n.status}),`error`)}catch{p(n(),`error`)}finally{l=!1,g()}}function g(){let e=t();for(let t of o)t.disabled=l||e===`off`||e===`hidden`&&t.dataset.key!==`esc`}return g(),{el:f,update:g}}var Y=[0,95,135,175,215,255],He=120,Ue=5e3,We=3e3,X=e=>Number.isInteger(e)&&e>=0&&e<=255,Ge=e=>X(e)?e<16?e:e<232?`rgb(${Y[Math.floor((e-16)/36)]},${Y[Math.floor((e-16)/6)%6]},${Y[(e-16)%6]})`:`rgb(${8+10*(e-232)},${8+10*(e-232)},${8+10*(e-232)})`:void 0,Ke=([e,t,n])=>[e,t,n].every(e=>X(e))?`rgb(${e},${t},${n})`:void 0;function qe(e,t){let n={...e},r=t.split(`;`);for(let e=0;e<r.length;e++){let t=r[e].split(`:`).map(e=>e===``?0:Number(e)),i=t[0];if(i===38||i===48||i===58){let a=t.length>1?t[1]:Number(r[e+1]),o=t.length>1?t.slice(2):r.slice(e+2,e+(a===5?3:5)).map(Number);t.length===1&&(e+=a===5?2:a===2?4:1);let s=a===5?Ge(o[0]):a===2?Ke(o.slice(-3)):void 0;s!==void 0&&i!==58&&(n[i===38?`fg`:`bg`]=s)}else if(i===0)for(let e of Object.keys(n))delete n[e];else i===1||i===2?n[i===1?`b`:`d`]=!0:i===22?n.b=n.d=!1:i===3||i===23?n.i=i===3:i===4||i===21||i===24?n.u=i!==24&&t[1]!==0:i===7||i===27?n.v=i===7:i===9||i===29?n.s=i===9:i>=30&&i<=37||i>=90&&i<=97?n.fg=i-(i<90?30:82):i>=40&&i<=47||i>=100&&i<=107?n.bg=i-(i<100?40:92):(i===39||i===49)&&delete n[i===39?`fg`:`bg`]}return n}function Je(e){let t=[],n={},r=0,i=e=>{let r=e.replace(/\x1b(\[[0-?]*[ -/]*[@-~]?)?|[\u0000-\u001f\u007f-\u009f]/g,``);if(!r)return;let[i,a]=n.v?[n.bg??`z`,n.fg??`z`]:[n.fg,n.bg],o=[typeof i==`number`||i===`z`?`c${i}`:``,typeof a==`number`||a===`z`?`k${a}`:``,...[`b`,`d`,`i`,`u`,`s`].filter(e=>n[e]).map(e=>`t${e}`)].filter(Boolean).join(` `);t.push({text:r,cls:o,...typeof i==`string`&&i!==`z`&&{fg:i},...typeof a==`string`&&a!==`z`&&{bg:a}})};for(let t of e.matchAll(/\x1b\[([0-9;:]{0,64})m/g))i(e.slice(r,t.index)),n=qe(n,t[1]),r=t.index+t[0].length;return i(e.slice(r)),t}function Z(e,t){let n=Math.min(Math.max(0,Number(t.rows)||0),He);for(;e.children.length<n;)e.append(v(`div`,{class:`tr`}));for(;e.children.length>n;)e.lastElementChild.remove();for(let[r,i]of Array.isArray(t.set)?t.set:[])!Number.isInteger(r)||r<0||r>=n||typeof i!=`string`||e.children[r].replaceChildren(...Je(i).map(e=>{if(!e.cls&&!e.fg&&!e.bg)return e.text;let t=v(`span`,e.cls?{class:e.cls}:null,e.text);return e.fg&&(t.style.color=e.fg),e.bg&&(t.style.backgroundColor=e.bg),t}))}function Ye({tiles:e,post:t,stream:r,pad:i}){let a=new Map,o,s=()=>{try{return String(JSON.parse(r()).stream??``)}catch{return``}},l=(e,t,n=``)=>(e.pad?.update(),(e.state.textContent!==t||e.state.dataset.tone!==n)&&(e.state.dataset.tone=n,e.state.textContent=t)),u=(e,t)=>(e.ended=!0,l(e,ye({why:t}),`error`)),d=(e,t,r=s())=>r&&void(e.queue=e.queue.then(()=>e.post(`mirror`,{stream:r,on:t}).then(n=>t&&!n.ok&&u(e,n.body.reason??c({status:n.status})),()=>t&&u(e,n())))),f=(e,t=Math.max(e.cols,...[...e.box.children].map(e=>e.textContent?.length??0)))=>e.box.style.fontSize=e.fit.getAttribute(`aria-pressed`)===`true`&&t?`${Math.max(6,Math.floor((e.scroll.clientWidth-20)/(t*.6)))}px`:``,p=e=>Date.now()-e.seen>We,m=()=>(clearInterval(o),o=a.size&&!document.hidden?setInterval(()=>a.forEach(e=>(e.box.classList.toggle(`stale`,p(e)),e.pad?.update())),1e3):void 0);document.addEventListener(`visibilitychange`,()=>(m(),a.forEach(e=>{clearTimeout(e.away),document.hidden?e.away=setTimeout(()=>(e.parked=!0,d(e,!1),l(e,ge())),Ue):e.parked&&(e.parked=!1,d(e,!0))})));let h=(e,n)=>{let r={key:e,box:v(`div`,{class:`term`,role:`group`,"aria-label":Pe({name:n})}),scroll:v(`div`,{class:`term-scroll`,tabindex:`0`}),state:v(`p`,{class:`term-state`,role:`status`},E()),fit:v(`button`,{type:`button`,class:`cmp-link`,"aria-pressed":`false`},ae()),post:t(e),cols:0,seen:0,parked:!1,first:!0,ended:!1,queue:Promise.resolve()};return r.fit.onclick=()=>(r.fit.setAttribute(`aria-pressed`,String(r.fit.getAttribute(`aria-pressed`)!==`true`)),f(r)),r.scroll.append(r.box),new ResizeObserver(()=>f(r)).observe(r.scroll),a.set(e,r),d(r,!0),m(),r.pad=i?.({name:n,state:()=>r.parked||r.ended||p(r)?`off`:r.box.classList.contains(`hidden`)?`hidden`:`live`,post:r.post,stream:s}),r.tile={id:`term:${e}`,title:Le({name:n}),icon:`i-comms`,body:()=>v(`div`,{class:`term-tile`},v(`div`,{class:`term-bar`},r.state,r.fit),r.scroll,r.pad?.el),closed:()=>(clearTimeout(r.away),d(r,!1),a.delete(e),m())}};return{open(t,n){let r=a.get(t);r?.ended&&(r.ended=!1,l(r,E()),d(r,!0)),e.open(r?.tile??h(t,n),!0)},embed(e,t,n){let r=a.get(e);r?.ended&&(r.ended=!1,l(r,E()),d(r,!0));let i=r?.tile??h(e,t);return n.replaceChildren(i.body()),()=>(i.closed?.(),n.replaceChildren())},hello:()=>a.forEach(e=>!e.parked&&!e.ended&&d(e,!0)),frame(e){let t;try{t=JSON.parse(e)}catch{return}let n=a.get(t.key);if(n){if(n.box.classList.toggle(`hidden`,!!(t.hidden||t.ended)),t.ended)return u(n,le({why:t.ended}));if([n.seen,n.ended]=[Date.now(),!1],n.box.classList.remove(`stale`),t.hidden)return Z(n.box,{key:n.key,rows:0}),l(n,ue());Z(n.box,t),(t.whole||t.cols&&t.cols!==n.cols)&&(n.cols=t.cols||n.cols,f(n)),l(n,pe({cols:n.cols,rows:n.box.children.length}),`ok`),n.first&&t.whole&&(n.first=!1,requestAnimationFrame(()=>n.scroll.scrollTop=n.scroll.scrollHeight))}}}}var Q=(e,t)=>o(e.mark)-o(t.mark)||e.at-t.at,$=e=>{let t=e.filter(e=>o(e.mark)===0).length,n=e.length-t;return[t&&je({count:t}),n&&Oe({count:n})].filter(Boolean).join(` · `)};function Xe(e){let t=[],n=[],r=()=>e.render(t.map(e=>e.alert),n),i=(i,a,o=!0)=>{let s=t.findIndex(e=>e.alert.key===i.key);if(s>=0&&!o)return;let c=s>=0?t.splice(s,1)[0]:{alert:i,back:a,raised:i.mark};!o&&t.length?t.splice(t.length-1,0,c):t.push(c),n=n.filter(e=>e.key!==i.key),r(),o&&e.enter(c.alert)};return{get open(){return t.map(e=>e.alert)},get queue(){return n},arrive(e){let i=t.find(t=>t.alert.key===e.key);if(i)[i.alert,i.raised]=[{...e,at:i.alert.at},e.mark];else{let t=n.find(t=>t.key===e.key);n=[...n.filter(t=>t.key!==e.key),t&&t.mark===e.mark?t:e].sort(Q)}r()},prune(e){n=n.filter(t=>e(t.key)?.mark===t.mark);for(let n of t){let t=e(n.alert.key);n.alert=t?{...n.alert,...t,gone:void 0,at:n.alert.at}:{...n.alert,mark:`unknown`,note:void 0,pending:void 0,gone:!0}}r()},redraw:r,show:(t,n=!0)=>i(t,e.focused(),n),raise(n){let r=t.find(e=>e.alert.key===n);r&&r!==t.at(-1)&&i(r.alert,e.focused())},next(){n[0]&&i(n[0],e.focused())},close(a=`close`){let s=t.pop();if(!s)return!1;let c=t.at(-1),l=a===`close`?n.find(e=>o(e.mark)===0):void 0;return a===`later`&&s.alert.mark===s.raised&&o(s.raised)===0&&(n=[...n,s.alert].sort(Q)),!c&&l?(i(l,s.back),!0):(r(),!e.restore(s.back)&&c&&e.enter(c.alert),!0)}}}var Ze=`a, button, input, textarea, select, summary, label, [role=button]`;function Qe(e){let t=[],n,r=()=>e.render(t,n);return{get tiles(){return t},get active(){return n},open(i,a=!0){if(!a&&t.length>=4&&!t.some(e=>e.id===i.id))return void i.closed?.();t.some(e=>e.id===i.id)||(t=[...t,i]).slice(0,-4).forEach(e=>e.closed?.()),t=t.slice(-4),(a||!t.some(e=>e.id===n))&&(n=i.id),r(),a&&e.enter(t.find(e=>e.id===i.id))},close(e){let i=t.findIndex(t=>t.id===e);i<0||(t[i].closed?.(),t=t.filter(t=>t.id!==e),n===e&&(n=(t[i]??t[i-1])?.id),r())},activate(e){n=e,r()}}}function $e(e){let t=new Set(e.flatMap(e=>e.kind===`result`&&e.callId?[e.callId]:[])),n=e.filter(e=>e.kind===`assistant`),r=n.at(-1),i=r?.tools?.find(e=>!t.has(e.id));return{said:(n.findLast(e=>e.text?.trim())?.text?.trim().split(`
2
2
  `).filter(Boolean).at(-1))?.slice(0,280),pending:i&&`${i.name} · ${i.summary}`.slice(0,200),at:(r??e.findLast(e=>e.kind!==`result`))?.id}}var et=()=>u(`<section class="dialog" role="dialog" aria-modal="false" tabindex="-1"><header><b class="tag">${D()}</b><span class="where"></span><button class="x" type="button" aria-label="${m()}">×</button></header><div class="who">${p}<div><h3></h3><p><em class="role"></em> <span class="state"></span></p></div></div><div class="intel"><h4>${G()}</h4><p class="said">…</p><p class="pending" hidden><b>${Re()}</b> <span></span></p></div><div class="ask-root"></div><footer><a class="go">${he()}</a><button class="later" type="button">${K()}</button><span class="queued"></span></footer></section>`),tt=()=>u(`<section class="tile" tabindex="-1"><header><svg><use href="#i-doc"/></svg><b></b><button class="x" type="button" aria-label="${C()}">×</button></header><div class="tile-body"></div></section>`);function nt(t){let[n,i,a,c,m]=[l(`dock`,HTMLElement),l(`work`,HTMLElement),l(`tiles`,HTMLElement),l(`tile-tabs`,HTMLElement),l(`alerts`,HTMLButtonElement)],v=new Map,y=(e,t,n=v.get(t.key))=>{let r=e.dataset.gone===`true`;f(e,`.said`,n?.failed?oe():n?.said??me()),e.querySelector(`.pending`).hidden=!n?.pending||r,f(e,`.pending span`,n?.pending??``),s(e.querySelector(`.go`),r?void 0:{view:`session`,ws:t.ws,key:t.key,...n?.at&&{at:n.at}})},b=(e,r={said:`…`})=>{v.set(e.key,r),t.recent(e.key).then($e,()=>({failed:!0})).then(t=>{let i=v.get(e.key)===r&&(v.set(e.key,t),n.querySelector(`.dialog[data-key="${CSS.escape(e.key)}"]`));i&&y(i,e)})},x=(e,n,i,a)=>{d(e,n.mark),e.dataset.gone=String(!!n.gone),e.style.transform=i?`translateY(${-12*i}px) scale(${1-.06*i})`:``,e.style.opacity=String(Math.max(0,1-.3*i)),e.toggleAttribute(`inert`,i>0),e.setAttribute(`aria-label`,`${n.name}: ${h(n.note,n.mark)}`),_(e.querySelector(`.plate`),n.role,n.mark),f(e,`h3`,n.name),f(e,`.role`,ee(n.role)),f(e,`.state`,n.gone?q():h(n.note,n.mark)),f(e,`.where`,t.label(n.ws)),f(e,`.tag`,n.gone?J():({waiting:we,error:Se,done:Ce}[n.mark]??Te)()),f(e,`.queued`,a.length?re({tally:$(a)}):``),e.querySelector(`.later`).hidden=o(n.mark)!==0,v.has(n.key)||b(n),y(e,n);let s=S.get(e);s||S.set(e,s=r(e.querySelector(`.ask-root`),C(n.key),void 0,()=>t.showTerminal(n.ws,n.key))),s.update(n.pending,n.mark===`waiting`&&document.body.dataset.stale!==`true`)},S=new WeakMap,C=n=>t.post?.(n)??((t,r)=>e(`sessions/${encodeURIComponent(n)}/${t}`,r)),w=Xe({render(e,t){g(n,e.map(e=>({...e,id:e.key})),et,(n,r)=>x(n,r,e.length-1-e.findIndex(e=>e.key===r.key),t));let r=t[0];m.disabled=!r,m.dataset.mark=r?.mark??`unknown`,f(m,`#alert-count`,String(t.length)),m.title=t.length?ne({tally:$(t)}):``,f(m,`#alert-text`,r?`${r.name} · ${h(r.note,r.mark)}`:te()),g(m.querySelector(`.faces`),t.slice(0,3).map(e=>({...e,id:e.key})),()=>u(p),(e,t)=>_(e,t.role,t.mark))},enter:e=>n.querySelector(`[data-key="${CSS.escape(e.key)}"] .go`)?.focus(),focused:()=>document.activeElement instanceof HTMLElement&&document.activeElement!==document.body?document.activeElement:void 0,restore:e=>!!(e?.isConnected&&!e.closest(`[inert]`)&&(e.focus(),document.activeElement===e))});m.addEventListener(`click`,()=>w.next()),document.addEventListener(`click`,e=>{let t=t=>{let n=t.getBoundingClientRect();return e.clientX>=n.left&&e.clientX<=n.right&&e.clientY>=n.top&&e.clientY<=n.bottom},r=[...n.querySelectorAll(`.dialog:not(.leaving)`)],i=r.slice(0,-1).reverse().find(t);e.defaultPrevented||!i||!r.length||t(r.at(-1))||e.target?.closest?.(Ze)||(e.preventDefault(),e.stopPropagation(),w.raise(i.dataset.key))},!0),n.addEventListener(`click`,e=>{let t=e.target;t.closest(`.x`)?w.close():t.closest(`.later`)?w.close(`later`):t.closest(`.go`)&&queueMicrotask(()=>void w.close(`go`))});let T=0,E=()=>a.classList.toggle(`tabbed`,D.tiles.length>1&&i.clientWidth<460+D.tiles.length*400),D=Qe({render(e,t){a.hidden=!e.length,g(a,e,e=>{let t=tt();return t.querySelector(`use`).setAttribute(`href`,`#${e.icon??`i-doc`}`),t.querySelector(`.x`).setAttribute(`aria-label`,ie({title:e.title})),t.querySelector(`.tile-body`).append(e.body()),t.querySelector(`.x`).addEventListener(`click`,()=>D.close(e.id)),t},(e,n)=>{f(e,`header b`,n.title),e.classList.toggle(`active`,n.id===t)}),g(c,e,()=>u(`<button type="button" class="tab-btn"></button>`),(e,n)=>{e.textContent=n.title,e.classList.toggle(`active`,n.id===t),e.onclick=()=>D.activate(n.id)}),a.prepend(c),e.length!==T&&(T=e.length,E())},enter:e=>requestAnimationFrame(()=>a.querySelector(`.tile[data-key="${CSS.escape(e.id)}"]`)?.focus())});return new ResizeObserver(E).observe(i),{tiles:D,stack:w,terminal:Ye({tiles:D,post:C,stream:t.stream,pad:Ve}),alerts(e,t){for(let t of e)b(t),w.arrive(t);w.prune(e=>t.get(e))}}}export{nt as mountPanels};
@@ -1 +1 @@
1
- import{M as e,k as t}from"./index-BInsCHu4.js";import{t as n}from"./dom-BaTXH9WU.js";import{t as r}from"./chat-BNOjO2Ms.js";var i=((t={},n={})=>(n.locale??e())===`zh-TW`?`下一張`:`Next image`),a=((t={},n={})=>(n.locale??e())===`zh-TW`?`上一張`:`Previous image`),o=((t={},n={})=>(n.locale??e())===`zh-TW`?`圖片檢視`:`Image viewer`);function s(e,s){let c=s,l=n(`img`,{alt:``}),u=n(`span`,{class:`lb-count`}),d=(e,t,r,i)=>{let a=n(`button`,{type:`button`,class:e,"aria-label":t},r);return a.addEventListener(`click`,e=>(e.stopPropagation(),i())),a},f=t=>(c=(c+t+e.length)%e.length,g()),p=d(`lb-prev`,a(),`‹`,()=>f(-1)),m=d(`lb-next`,i(),`›`,()=>f(1)),h=n(`dialog`,{class:`lightbox`,"aria-label":o()},l,p,m,d(`lb-close`,t(),`×`,()=>h.close()),u);function g(){h.classList.remove(`zoom`),l.src=e[c],l.alt=r({n:c+1}),u.textContent=e.length>1?`${c+1} / ${e.length}`:``,p.hidden=m.hidden=e.length<2}l.addEventListener(`click`,e=>(e.stopPropagation(),h.classList.toggle(`zoom`))),h.addEventListener(`click`,()=>h.close()),h.addEventListener(`keydown`,t=>{e.length>1&&(t.key===`ArrowLeft`||t.key===`ArrowRight`)&&(t.preventDefault(),f(t.key===`ArrowLeft`?-1:1))}),h.addEventListener(`close`,()=>h.remove()),document.body.append(h),g(),h.showModal()}export{s as lightbox};
1
+ import{M as e,k as t}from"./index-CZq2ySys.js";import{t as n}from"./dom-BaTXH9WU.js";import{t as r}from"./chat-DVKjeMFP.js";var i=((t={},n={})=>(n.locale??e())===`zh-TW`?`下一張`:`Next image`),a=((t={},n={})=>(n.locale??e())===`zh-TW`?`上一張`:`Previous image`),o=((t={},n={})=>(n.locale??e())===`zh-TW`?`圖片檢視`:`Image viewer`);function s(e,s){let c=s,l=n(`img`,{alt:``}),u=n(`span`,{class:`lb-count`}),d=(e,t,r,i)=>{let a=n(`button`,{type:`button`,class:e,"aria-label":t},r);return a.addEventListener(`click`,e=>(e.stopPropagation(),i())),a},f=t=>(c=(c+t+e.length)%e.length,g()),p=d(`lb-prev`,a(),`‹`,()=>f(-1)),m=d(`lb-next`,i(),`›`,()=>f(1)),h=n(`dialog`,{class:`lightbox`,"aria-label":o()},l,p,m,d(`lb-close`,t(),`×`,()=>h.close()),u);function g(){h.classList.remove(`zoom`),l.src=e[c],l.alt=r({n:c+1}),u.textContent=e.length>1?`${c+1} / ${e.length}`:``,p.hidden=m.hidden=e.length<2}l.addEventListener(`click`,e=>(e.stopPropagation(),h.classList.toggle(`zoom`))),h.addEventListener(`click`,()=>h.close()),h.addEventListener(`keydown`,t=>{e.length>1&&(t.key===`ArrowLeft`||t.key===`ArrowRight`)&&(t.preventDefault(),f(t.key===`ArrowLeft`?-1:1))}),h.addEventListener(`close`,()=>h.remove()),document.body.append(h),g(),h.showModal()}export{s as lightbox};
@@ -1 +1 @@
1
- import{t as e}from"./post-UHMNmNgA.js";import{C as t,M as n,b as r}from"./index-BInsCHu4.js";import{t as i}from"./dom-BaTXH9WU.js";var a=((e={},t={})=>(t.locale??n())===`zh-TW`?`正在取得配對碼…`:`Asking for a pairing code…`),o=((e={},t={})=>(t.locale??n())===`zh-TW`?`新的配對碼`:`New code`),s=((e={},t={})=>(t.locale??n())===`zh-TW`?`配對 QR code`:`Pairing QR code`),c=((e={},t={})=>(t.locale??n())===`zh-TW`?`用以本機使用者身分登入 Tailscale 的手機掃描。只能用一次,十分鐘內有效。`:`Scan it with a phone signed in to Tailscale as this machine's user. It works once, within ten minutes.`),l=((e={},t={})=>(t.locale??n())===`zh-TW`?`配對手機`:`Pair a phone`),u=((e={},t={})=>(t.locale??n())===`zh-TW`?`遠端存取還沒開啟。要開啟,讓你 tailnet 上的手機可以開這個頁面嗎?只有用這台電腦的 Tailscale 帳號登入的裝置能配對,絕不使用 Funnel。`:`Remote access is off. Turn it on so a phone on your tailnet can open this page? Only devices signed in to Tailscale as this machine's user can pair; Funnel is never used.`),d=((e={},t={})=>(t.locale??n())===`zh-TW`?`開啟遠端存取`:`Turn on remote access`),f=((e={},t={})=>(t.locale??n())===`zh-TW`?`正在開啟遠端存取…`:`Turning remote access on…`),p=`http://www.w3.org/2000/svg`;function m(e){let t=e.length,n=document.createElementNS(p,`svg`),r=document.createElementNS(p,`rect`),i=document.createElementNS(p,`path`);n.setAttribute(`viewBox`,`-4 -4 ${t+8} ${t+8}`),n.setAttribute(`class`,`qr`),n.setAttribute(`role`,`img`),n.setAttribute(`aria-label`,s());for(let[e,n]of Object.entries({x:`-4`,y:`-4`,width:String(t+8),height:String(t+8),fill:`#fff`}))r.setAttribute(e,n);return i.setAttribute(`d`,e.flatMap((e,t)=>[...e].flatMap((e,n)=>e===`1`?[`M${n} ${t}h1v1h-1z`]:[])).join(``)),i.setAttribute(`fill`,`#06101e`),n.append(r,i),n}function h(){return{id:`pair`,title:l(),body:()=>{let n=i(`div`,{class:`pair`}),s=i(`button`,{type:`button`,class:`later`},o()),l=i(`button`,{type:`button`,class:`pair-btn`},d()),p=(o=`remote/pair`,d=a())=>{n.replaceChildren(i(`p`,{class:`chat-empty`},d)),e(o,{}).then(e=>{let t=e.body.rows,a=String(e.body.url??``);if(e.body.error===`remote_off`)return n.replaceChildren(i(`p`,null,u()),l);if(!e.ok||!Array.isArray(t))return n.replaceChildren(i(`p`,null,e.body.reason??r({status:e.status})),o===`remote/on`?l:s);n.replaceChildren(m(t.map(String)),i(`p`,null,c()),i(`p`,null,i(`code`,null,new URL(a).host)),s)},()=>n.replaceChildren(i(`p`,null,t()),s))};return l.onclick=()=>p(`remote/on`,f()),s.onclick=()=>p(),p(),n}}}export{h as pairTile};
1
+ import{t as e}from"./post-UHMNmNgA.js";import{C as t,M as n,b as r}from"./index-CZq2ySys.js";import{t as i}from"./dom-BaTXH9WU.js";var a=((e={},t={})=>(t.locale??n())===`zh-TW`?`正在取得配對碼…`:`Asking for a pairing code…`),o=((e={},t={})=>(t.locale??n())===`zh-TW`?`新的配對碼`:`New code`),s=((e={},t={})=>(t.locale??n())===`zh-TW`?`配對 QR code`:`Pairing QR code`),c=((e={},t={})=>(t.locale??n())===`zh-TW`?`用以本機使用者身分登入 Tailscale 的手機掃描。只能用一次,十分鐘內有效。`:`Scan it with a phone signed in to Tailscale as this machine's user. It works once, within ten minutes.`),l=((e={},t={})=>(t.locale??n())===`zh-TW`?`配對手機`:`Pair a phone`),u=((e={},t={})=>(t.locale??n())===`zh-TW`?`遠端存取還沒開啟。要開啟,讓你 tailnet 上的手機可以開這個頁面嗎?只有用這台電腦的 Tailscale 帳號登入的裝置能配對,絕不使用 Funnel。`:`Remote access is off. Turn it on so a phone on your tailnet can open this page? Only devices signed in to Tailscale as this machine's user can pair; Funnel is never used.`),d=((e={},t={})=>(t.locale??n())===`zh-TW`?`開啟遠端存取`:`Turn on remote access`),f=((e={},t={})=>(t.locale??n())===`zh-TW`?`正在開啟遠端存取…`:`Turning remote access on…`),p=`http://www.w3.org/2000/svg`;function m(e){let t=e.length,n=document.createElementNS(p,`svg`),r=document.createElementNS(p,`rect`),i=document.createElementNS(p,`path`);n.setAttribute(`viewBox`,`-4 -4 ${t+8} ${t+8}`),n.setAttribute(`class`,`qr`),n.setAttribute(`role`,`img`),n.setAttribute(`aria-label`,s());for(let[e,n]of Object.entries({x:`-4`,y:`-4`,width:String(t+8),height:String(t+8),fill:`#fff`}))r.setAttribute(e,n);return i.setAttribute(`d`,e.flatMap((e,t)=>[...e].flatMap((e,n)=>e===`1`?[`M${n} ${t}h1v1h-1z`]:[])).join(``)),i.setAttribute(`fill`,`#06101e`),n.append(r,i),n}function h(){return{id:`pair`,title:l(),body:()=>{let n=i(`div`,{class:`pair`}),s=i(`button`,{type:`button`,class:`later`},o()),l=i(`button`,{type:`button`,class:`pair-btn`},d()),p=(o=`remote/pair`,d=a())=>{n.replaceChildren(i(`p`,{class:`chat-empty`},d)),e(o,{}).then(e=>{let t=e.body.rows,a=String(e.body.url??``);if(e.body.error===`remote_off`)return n.replaceChildren(i(`p`,null,u()),l);if(!e.ok||!Array.isArray(t))return n.replaceChildren(i(`p`,null,e.body.reason??r({status:e.status})),o===`remote/on`?l:s);n.replaceChildren(m(t.map(String)),i(`p`,null,c()),i(`p`,null,i(`code`,null,new URL(a).host)),s)},()=>n.replaceChildren(i(`p`,null,t()),s))};return l.onclick=()=>p(`remote/on`,f()),s.onclick=()=>p(),p(),n}}}export{h as pairTile};
@@ -1 +1 @@
1
- import{t as e}from"./post-UHMNmNgA.js";import{C as t,M as n,b as r}from"./index-BInsCHu4.js";import{t as i}from"./dom-BaTXH9WU.js";var a=((e={},t={})=>(t.locale??n())===`zh-TW`?`正在讀取資料夾…`:`Reading folders…`),o=((e={},t={})=>(t.locale??n())===`zh-TW`?`基地名稱`:`Base name`),s=((e={},t={})=>(t.locale??n())===`zh-TW`?`第一句指令(選填)`:`First message (optional)`),c=((e={},t={})=>(t.locale??n())===`zh-TW`?`只顯示前 500 個資料夾。`:`Showing the first 500 folders.`),l=((e={},t={})=>(t.locale??n())===`zh-TW`?`這裡沒有資料夾。`:`No folders here.`),u=((e={},t={})=>(t.locale??n())===`zh-TW`?`資料夾:`:`Folder:`),d=((e={},t={})=>(t.locale??n())===`zh-TW`?`上一層`:`Up`),f=((e={},t={})=>(t.locale??n())===`zh-TW`?`在這裡開基地`:`Open the base here`),p=((e={},t={})=>(t.locale??n())===`zh-TW`?`開新基地`:`New base`),m=((e={},t={})=>(t.locale??n())===`zh-TW`?`在這裡開主智慧體`:`Open the main here`),h=e=>`New main agent in ${e?.base}`,g=e=>`在 ${e?.base} 開新的主智慧體`,_=((e,t={})=>(t.locale??n())===`zh-TW`?g(e):h(e)),v=((e={},t={})=>(t.locale??n())===`zh-TW`?`加入成員`:`Add the member`),y=e=>`New member in squad ${e?.tab}`,b=e=>`在小隊 ${e?.tab} 加一位成員`,x=((e,t={})=>(t.locale??n())===`zh-TW`?b(e):y(e)),S=e=>`New member in ${e?.base}`,C=e=>`在 ${e?.base} 加一位成員`,w=((e,t={})=>(t.locale??n())===`zh-TW`?C(e):S(e)),T=((e={},t={})=>(t.locale??n())===`zh-TW`?`基地已經開好,第一位成員已就位。`:`The base is open with its first member.`),E=e=>`The main is open in a new squad of ${e?.base}.`,D=e=>`已在 ${e?.base} 的新小隊開好主智慧體。`,O=((e,t={})=>(t.locale??n())===`zh-TW`?D(e):E(e)),k=e=>`The member is open in ${e?.base}.`,A=e=>`已在 ${e?.base} 加好成員。`,j=((e,t={})=>(t.locale??n())===`zh-TW`?A(e):k(e)),M=((e={},t={})=>(t.locale??n())===`zh-TW`?`開啟中…最多可能要一分鐘。`:`Opening… this can take up to a minute.`);function N(n){let h=n.kind===`base`?void 0:n.base,g=n.kind===`base`?void 0:n.tab,y=n.kind===`base`?p():n.kind===`main`?_({base:h.label}):g?x({tab:g.label}):w({base:h.label});return{id:`open-${n.kind}-${h?.id??``}-${g?.id??``}`,title:y,body:()=>{let p=i(`code`,{class:`spawn-path`}),_=i(`button`,{type:`button`,class:`later`},d()),y=i(`div`,{class:`spawn-dirs`}),b=i(`p`,{class:`chat-empty`}),x=i(`button`,{type:`button`,class:`go`},n.kind===`base`?f():n.kind===`main`?m():v()),S=i(`textarea`,{rows:`3`,placeholder:s()}),C=i(`input`,{type:`text`,maxlength:`64`,placeholder:o()}),w,E=!1;C.addEventListener(`input`,()=>E=!0);let D=e=>b.textContent=e,k=n=>{D(a()),e(`dirs`,n?{path:n}:h?{workspace:h.id,...g&&{tab:g.id}}:{}).then(e=>{if(!e.ok)return D(e.body.reason??r({status:e.status}));w=e.body;let t=w.path===w.home?`~`:w.path.startsWith(`${w.home}/`)?`~/${w.path.slice(w.home.length+1)}`:w.path;p.textContent=t,_.disabled=!w.parent,y.replaceChildren(...w.dirs.map(e=>{let t=i(`button`,{type:`button`,class:`spawn-dir`},`${e}/`);return t.onclick=()=>k(`${w.path}/${e}`),t})),E||(C.value=w.path===w.home?``:w.path.slice(w.path.lastIndexOf(`/`)+1)),D(w.dirs.length?w.truncated?c():``:l())},()=>D(t()))};return _.onclick=()=>w?.parent&&k(w.parent),x.onclick=()=>{if(!w)return;let i=w.path,a=S.value,o=n.kind===`base`?{dir:i,label:C.value,prompt:a}:{workspace:h.id,...g&&{tab:g.id},dir:i,prompt:a};x.disabled=!0,D(M()),e(`open/${n.kind}`,o).then(e=>{if(!e.ok)return D(e.body.reason??r({status:e.status}));S.value=C.value=``,E=!1,D(n.kind===`base`?T():n.kind===`main`?O({base:h.label}):j({base:h.label}))},()=>D(t())).finally(()=>x.disabled=!1)},k(),i(`div`,{class:`spawn`},i(`p`,{class:`spawn-at`},u(),` `,p,` `,_),y,b,...n.kind===`base`?[C]:[],S,x)}}}function P(e,t){let n=e.dataset.open;if(n===`base`)return{kind:n};let r=t.find(t=>t.id===e.dataset.ws),i=e.dataset.tab?r?.tabs.find(t=>t.id===e.dataset.tab):void 0;if(!(n!==`main`&&n!==`member`||!r||e.dataset.tab&&!i))return{kind:n,base:{id:r.id,label:r.label},...i&&{tab:{id:i.id,label:i.label}}}}export{P as openingOf,N as spawnTile};
1
+ import{t as e}from"./post-UHMNmNgA.js";import{C as t,M as n,b as r}from"./index-CZq2ySys.js";import{t as i}from"./dom-BaTXH9WU.js";var a=((e={},t={})=>(t.locale??n())===`zh-TW`?`正在讀取資料夾…`:`Reading folders…`),o=((e={},t={})=>(t.locale??n())===`zh-TW`?`基地名稱`:`Base name`),s=((e={},t={})=>(t.locale??n())===`zh-TW`?`第一句指令(選填)`:`First message (optional)`),c=((e={},t={})=>(t.locale??n())===`zh-TW`?`只顯示前 500 個資料夾。`:`Showing the first 500 folders.`),l=((e={},t={})=>(t.locale??n())===`zh-TW`?`這裡沒有資料夾。`:`No folders here.`),u=((e={},t={})=>(t.locale??n())===`zh-TW`?`資料夾:`:`Folder:`),d=((e={},t={})=>(t.locale??n())===`zh-TW`?`上一層`:`Up`),f=((e={},t={})=>(t.locale??n())===`zh-TW`?`在這裡開基地`:`Open the base here`),p=((e={},t={})=>(t.locale??n())===`zh-TW`?`開新基地`:`New base`),m=((e={},t={})=>(t.locale??n())===`zh-TW`?`在這裡開主智慧體`:`Open the main here`),h=e=>`New main agent in ${e?.base}`,g=e=>`在 ${e?.base} 開新的主智慧體`,_=((e,t={})=>(t.locale??n())===`zh-TW`?g(e):h(e)),v=((e={},t={})=>(t.locale??n())===`zh-TW`?`加入成員`:`Add the member`),y=e=>`New member in squad ${e?.tab}`,b=e=>`在小隊 ${e?.tab} 加一位成員`,x=((e,t={})=>(t.locale??n())===`zh-TW`?b(e):y(e)),S=e=>`New member in ${e?.base}`,C=e=>`在 ${e?.base} 加一位成員`,w=((e,t={})=>(t.locale??n())===`zh-TW`?C(e):S(e)),T=((e={},t={})=>(t.locale??n())===`zh-TW`?`基地已經開好,第一位成員已就位。`:`The base is open with its first member.`),E=e=>`The main is open in a new squad of ${e?.base}.`,D=e=>`已在 ${e?.base} 的新小隊開好主智慧體。`,O=((e,t={})=>(t.locale??n())===`zh-TW`?D(e):E(e)),k=e=>`The member is open in ${e?.base}.`,A=e=>`已在 ${e?.base} 加好成員。`,j=((e,t={})=>(t.locale??n())===`zh-TW`?A(e):k(e)),M=((e={},t={})=>(t.locale??n())===`zh-TW`?`開啟中…最多可能要一分鐘。`:`Opening… this can take up to a minute.`);function N(n){let h=n.kind===`base`?void 0:n.base,g=n.kind===`base`?void 0:n.tab,y=n.kind===`base`?p():n.kind===`main`?_({base:h.label}):g?x({tab:g.label}):w({base:h.label});return{id:`open-${n.kind}-${h?.id??``}-${g?.id??``}`,title:y,body:()=>{let p=i(`code`,{class:`spawn-path`}),_=i(`button`,{type:`button`,class:`later`},d()),y=i(`div`,{class:`spawn-dirs`}),b=i(`p`,{class:`chat-empty`}),x=i(`button`,{type:`button`,class:`go`},n.kind===`base`?f():n.kind===`main`?m():v()),S=i(`textarea`,{rows:`3`,placeholder:s()}),C=i(`input`,{type:`text`,maxlength:`64`,placeholder:o()}),w,E=!1;C.addEventListener(`input`,()=>E=!0);let D=e=>b.textContent=e,k=n=>{D(a()),e(`dirs`,n?{path:n}:h?{workspace:h.id,...g&&{tab:g.id}}:{}).then(e=>{if(!e.ok)return D(e.body.reason??r({status:e.status}));w=e.body;let t=w.path===w.home?`~`:w.path.startsWith(`${w.home}/`)?`~/${w.path.slice(w.home.length+1)}`:w.path;p.textContent=t,_.disabled=!w.parent,y.replaceChildren(...w.dirs.map(e=>{let t=i(`button`,{type:`button`,class:`spawn-dir`},`${e}/`);return t.onclick=()=>k(`${w.path}/${e}`),t})),E||(C.value=w.path===w.home?``:w.path.slice(w.path.lastIndexOf(`/`)+1)),D(w.dirs.length?w.truncated?c():``:l())},()=>D(t()))};return _.onclick=()=>w?.parent&&k(w.parent),x.onclick=()=>{if(!w)return;let i=w.path,a=S.value,o=n.kind===`base`?{dir:i,label:C.value,prompt:a}:{workspace:h.id,...g&&{tab:g.id},dir:i,prompt:a};x.disabled=!0,D(M()),e(`open/${n.kind}`,o).then(e=>{if(!e.ok)return D(e.body.reason??r({status:e.status}));S.value=C.value=``,E=!1,D(n.kind===`base`?T():n.kind===`main`?O({base:h.label}):j({base:h.label}))},()=>D(t())).finally(()=>x.disabled=!1)},k(),i(`div`,{class:`spawn`},i(`p`,{class:`spawn-at`},u(),` `,p,` `,_),y,b,...n.kind===`base`?[C]:[],S,x)}}}function P(e,t){let n=e.dataset.open;if(n===`base`)return{kind:n};let r=t.find(t=>t.id===e.dataset.ws),i=e.dataset.tab?r?.tabs.find(t=>t.id===e.dataset.tab):void 0;if(!(n!==`main`&&n!==`member`||!r||e.dataset.tab&&!i))return{kind:n,base:{id:r.id,label:r.label},...i&&{tab:{id:i.id,label:i.label}}}}export{P as openingOf,N as spawnTile};
@@ -0,0 +1,8 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-D-3yz3dW.css"])))=>i.map(i=>d[i]);
2
+ import{r as e,t}from"./post-UHMNmNgA.js";import{i as n,n as r,r as i,t as a}from"./ask-BzyjXf83.js";import{A as o,C as s,D as c,E as l,M as u,O as d,S as f,T as p,a as m,b as h,d as g,f as _,g as v,h as y,i as b,j as x,k as S,l as C,m as w,o as T,p as E,r as ee,s as D,t as te,u as O,v as k,x as A,y as j}from"./index-CZq2ySys.js";import{t as M}from"./dom-BaTXH9WU.js";var N=((e={},t={})=>(t.locale??u())===`zh-TW`?`附加檔案`:`Attach files`),P=((e={},t={})=>(t.locale??u())===`zh-TW`?`它在等待對話框:請在上方或它的終端機中回答。`:`It waits on a dialog: answer it above, or in its terminal.`),F=((e={},t={})=>(t.locale??u())===`zh-TW`?`它在等待對話框;請在它的終端機中回答。`:`It waits on a dialog; answer it in its terminal.`),I=((e={},t={})=>(t.locale??u())===`zh-TW`?`這個 session 已不再即時;紀錄仍可閱讀。`:`This session is no longer live; its history stays readable.`),L=((e={},t={})=>(t.locale??u())===`zh-TW`?`這個單位沒有即時的 pi 窗格,無處可輸入。`:`No live pi pane backs this unit, so there is nothing to type into.`),R=((e={},t={})=>(t.locale??u())===`zh-TW`?`串流中斷;要等它恢復才能送出。`:`The stream is down; sending waits for it to come back.`),ne=((e={},t={})=>(t.locale??u())===`zh-TW`?`頻道關閉`:`channel closed`),re=((e={},t={})=>(t.locale??u())===`zh-TW`?`頻道開啟`:`channel open`),z=e=>`Close ${e?.name}`,ie=e=>`關閉 ${e?.name}`,ae=((e,t={})=>(t.locale??u())===`zh-TW`?ie(e):z(e)),oe=((e={},t={})=>(t.locale??u())===`zh-TW`?`指令`:`Commands`),B=((e={},t={})=>(t.locale??u())===`zh-TW`?`通訊`:`comms`),V=((e={},t={})=>(t.locale??u())===`zh-TW`?`已派出`:`Dispatched`),H=((e={},t={})=>(t.locale??u())===`zh-TW`?`無法取得:已不在它的 session 中開啟。`:`Unavailable: no longer open in its session.`),se=((e={},t={})=>(t.locale??u())===`zh-TW`?`已不在清單中:已在它的 session 中關閉,或 session 已結束。`:`No longer listed: closed in its session, or the session ended.`),U=((e={},t={})=>(t.locale??u())===`zh-TW`?`已更新:此區塊顯示時會載入新版本。`:`Updated: the new version loads when this tile shows.`),ce=((e={},t={})=>(t.locale??u())===`zh-TW`?`超過轉送上限:請在終端機中閱讀。`:`More than the relay carries: read them in the terminal.`),le=e=>`${e?.command} ends this session or switches its pane to another one.`,W=e=>`${e?.command} 會結束這個 session,或把它的窗格切換到別的 session。`,G=((e,t={})=>(t.locale??u())===`zh-TW`?W(e):le(e)),K=e=>{let t=n(`en`,e?.count,{},!0);return t===`one`?`${e?.count} entry`:t===`other`?`${e?.count} entries`:`entry_count`},q=e=>`${e?.count} 筆`,ue=((e,t={})=>(t.locale??u())===`zh-TW`?q(e):K(e)),de=e=>`${e?.name} is larger than 20 MB.`,J=e=>`${e?.name} 超過 20 MB。`,fe=((e,t={})=>(t.locale??u())===`zh-TW`?J(e):de(e)),pe=((e={},t={})=>(t.locale??u())===`zh-TW`?`做完再送`:`After this`),me=((e={},t={})=>(t.locale??u())===`zh-TW`?`載入中…`:`Loading…`),he=((e={},t={})=>(t.locale??u())===`zh-TW`?`這個工作區不在網中。`:`This workspace is not part of the net.`),ge=((e={},t={})=>(t.locale??u())===`zh-TW`?`訊息`:`Message`),_e=((e={},t={})=>(t.locale??u())===`zh-TW`?`新的 session`:`the new session`),ve=((e={},t={})=>(t.locale??u())===`zh-TW`?`無頻道`:`no channel`),ye=((e={},t={})=>(t.locale??u())===`zh-TW`?`不在網中`:`not in the net`),be=((e={},t={})=>(t.locale??u())===`zh-TW`?`已不再即時;紀錄在十分鐘內仍可閱讀。`:`No longer live; its history stays readable for ten minutes.`),xe=((e={},t={})=>(t.locale??u())===`zh-TW`?`不在網中(可能已在十分鐘前結束)。`:`Not in the net (it may have ended more than ten minutes ago).`),Se=((e={},t={})=>(t.locale??u())===`zh-TW`?`不在終端機畫面上`:`off screen in the terminal`),Ce=e=>`${e?.reason} · off screen`,we=e=>`${e?.reason} · 不在畫面上`,Te=((e,t={})=>(t.locale??u())===`zh-TW`?we(e):Ce(e)),Ee=((e={},t={})=>(t.locale??u())===`zh-TW`?`在新分頁開啟`:`Open in a new tab`),De=((e={},t={})=>(t.locale??u())===`zh-TW`?`正在開啟頻道…`:`Opening the channel…`),Oe=((e={},t={})=>(t.locale??u())===`zh-TW`?`網外`:`Outside the net`),ke=((e={},t={})=>(t.locale??u())===`zh-TW`?`未編入的 pi 窗格`:`unaligned pi panes`),Ae=e=>`Message ${e?.name}`,je=e=>`傳訊息給 ${e?.name}`,Me=((e,t={})=>(t.locale??u())===`zh-TW`?je(e):Ae(e)),Ne=((e={},t={})=>(t.locale??u())===`zh-TW`?`排隊中・做完再送`:`Queued · follow-up`),Pe=((e={},t={})=>(t.locale??u())===`zh-TW`?`排隊中・插話`:`Queued · steer`),Fe=((e={},t={})=>(t.locale??u())===`zh-TW`?`重新載入`:`Reload`),Ie=((e={},t={})=>(t.locale??u())===`zh-TW`?`送出`:`Send`),Le=e=>`Send ${e?.command}`,Re=e=>`送出 ${e?.command}`,ze=((e,t={})=>(t.locale??u())===`zh-TW`?Re(e):Le(e)),Be=((e={},t={})=>(t.locale??u())===`zh-TW`?`已照原文送出;你的修改留在這裡,尚未送出。`:`Sent as it was; your edits stayed here, unsent.`),Ve=e=>`${e?.display}, shown by ${e?.unit}`,He=e=>`${e?.display},由 ${e?.unit} 顯示`,Ue=((e,t={})=>(t.locale??u())===`zh-TW`?He(e):Ve(e)),We=((e={},t={})=>(t.locale??u())===`zh-TW`?`基地`:`base`),Ge=((e={},t={})=>(t.locale??u())===`zh-TW`?`上下文`:`context`),Ke=((e={},t={})=>(t.locale??u())===`zh-TW`?`目錄`:`directory`),qe=((e={},t={})=>(t.locale??u())===`zh-TW`?`啟動者`:`launcher`),Je=((e={},t={})=>(t.locale??u())===`zh-TW`?`模型`:`model`),Ye=((e={},t={})=>(t.locale??u())===`zh-TW`?`小隊`:`squad`),Xe=((e={},t={})=>(t.locale??u())===`zh-TW`?`無法讀取`:`unreadable`),Ze=e=>`squad ${e?.label}`,Qe=e=>`小隊 ${e?.label}`,$e=((e,t={})=>(t.locale??u())===`zh-TW`?Qe(e):Ze(e)),et=((e={},t={})=>(t.locale??u())===`zh-TW`?`小隊`:`Squads`),tt=((e={},t={})=>(t.locale??u())===`zh-TW`?`停止`:`Stop`),nt=((e={},t={})=>(t.locale??u())===`zh-TW`?`要停止目前的任務嗎?佇列中的訊息會退回它的終端機編輯器。`:`Stop the current task? Queued messages go back to its terminal editor.`),rt=((e={},t={})=>(t.locale??u())===`zh-TW`?`現在:`:`Now:`),it=((e={},t={})=>(t.locale??u())===`zh-TW`?`已完成`:`done`),at=((e={},t={})=>(t.locale??u())===`zh-TW`?`未完成`:`not done`),ot=((e={},t={})=>(t.locale??u())===`zh-TW`?`終端機`:`Terminal`),st=e=>`Todos ${e?.done}/${e?.total}`,ct=e=>`待辦 ${e?.done}/${e?.total}`,lt=((e,t={})=>(t.locale??u())===`zh-TW`?ct(e):st(e)),ut=((e={},t={})=>(t.locale??u())===`zh-TW`?`全部完成`:`All done`),dt=e=>`${e?.count} tokens`,ft=e=>`${e?.count} tokens`,pt=((e,t={})=>(t.locale??u())===`zh-TW`?ft(e):dt(e)),mt=((e={},t={})=>(t.locale??u())===`zh-TW`?`文字超過 16 KB,請縮短。`:`The text is longer than 16 KB; shorten it.`),ht=e=>{let t=n(`en`,e?.count,{},!0);return t===`one`?`${e?.count} unit`:t===`other`?`${e?.count} units`:`unit_count`},gt=e=>`${e?.count} 個單位`,_t=((e,t={})=>(t.locale??u())===`zh-TW`?gt(e):ht(e)),vt=((e={},t={})=>(t.locale??u())===`zh-TW`?`單位檔案`:`unit dossier`),yt=((e={},t={})=>(t.locale??u())===`zh-TW`?`單位`:`Units`),bt=((e={},t={})=>(t.locale??u())===`zh-TW`?`未確認。再次送出前請先查看終端機。`:`Not confirmed. Check the terminal before sending again.`),xt=((e={},t={})=>(t.locale??u())===`zh-TW`?`上傳中…`:`Uploading…`),St=((e={},t={})=>(t.locale??u())===`zh-TW`?`等待網的資料…`:`Waiting for the net…`),Ct=((e={},t={})=>(t.locale??u())===`zh-TW`?`原文已送到 session;這裡是你編輯過、尚未送出的副本。`:`The original already went to the session; what is here is your edited copy, unsent.`),Y=(e,t,n)=>({tag:e,kids:t,attrs:n}),wt=/^(?:https?:\/\/|mailto:)[^\s\u0000-\u001f]+$/i,Tt=(e,t)=>Y(`a`,t,{href:e,rel:`noopener noreferrer`,target:`_blank`}),Et=/(`+)([^`]|[^`][^]{0,1000}?[^`])\1(?!`)|\*\*([^*][^]{0,1000}?)\*\*|~~([^~][^]{0,1000}?)~~|\*([^\s*][^*]{0,500}?)\*|(?<![\w])_([^\s_][^_]{0,500}?)_(?![\w])|\[([^\]]{1,500})\]\(([^)\s]{1,2000})(?:\s+"[^"]*")?\)|(https?:\/\/[^\s<>)\]]+)/g;function X(e){let t=[],n=0;for(let r of e.matchAll(Et))r.index>n&&t.push(e.slice(n,r.index)),n=r.index+r[0].length,r[2]===void 0?r[3]===void 0?r[4]===void 0?r[5]!==void 0||r[6]!==void 0?t.push(Y(`em`,X(r[5]??r[6]))):r[7]===void 0?t.push(Tt(r[9],[r[9]])):t.push(wt.test(r[8])?Tt(r[8],X(r[7])):r[0]):t.push(Y(`del`,X(r[4]))):t.push(Y(`strong`,X(r[3]))):t.push(Y(`code`,[r[2]]));return n<e.length&&t.push(e.slice(n)),t}var Dt=/^(\s*)([-*+]|\d+[.)])\s+(.*)$/,Ot=/^\s*([-*_])(\s*\1){2,}\s*$/,kt=/^\s*\|?\s*:?-+:?\s*(\|\s*:?-+:?\s*)*\|?\s*$/,At=e=>e.trim().replace(/^\|/,``).replace(/\|$/,``).split(`|`).map(e=>e.trim()),jt=(e,t)=>/^\s*(`{3,}|~{3,}|#{1,6}\s|>)/.test(e)||Ot.test(e)||Dt.test(e)||e.includes(`|`)&&t!==void 0&&kt.test(t)&&t.includes(`-`);function Mt(e,t=0){if(t>=16)return[Y(`p`,[e])];let n=e.replace(/\r\n?/g,`
3
+ `).split(`
4
+ `),r=[];for(let e=0;e<n.length;){let i=n[e],a=n[e+1],o=i.match(/^\s*(`{3,}|~{3,})\s*([\w+-]*)/),s=i.match(/^\s*(#{1,6})\s+(.*?)\s*#*\s*$/),c=i.match(Dt);if(!i.trim())e++;else if(o){let t=[];for(e++;e<n.length&&!n[e].trim().startsWith(o[1]);e++)t.push(n[e]);e++,r.push(Y(`pre`,[Y(`code`,[t.join(`
5
+ `)],o[2]?{"data-lang":o[2]}:void 0)]))}else if(s)r.push(Y(`h${s[1].length}`,X(s[2]))),e++;else if(Ot.test(i))r.push(Y(`hr`,[])),e++;else if(/^\s*>/.test(i)){let i=[];for(;e<n.length&&/^\s*>/.test(n[e]);e++)i.push(n[e].replace(/^\s*> ?/,``));r.push(Y(`blockquote`,Mt(i.join(`
6
+ `),t+1)))}else if(i.includes(`|`)&&a!==void 0&&kt.test(a)&&a.includes(`-`)){let t=[];for(e+=2;e<n.length&&n[e].trim()&&n[e].includes(`|`);e++)t.push(At(n[e]));r.push(Y(`table`,[Y(`thead`,[Y(`tr`,At(i).map(e=>Y(`th`,X(e))))]),Y(`tbody`,t.map(e=>Y(`tr`,e.map(e=>Y(`td`,X(e))))))]))}else if(c){let i=c[1].length,a=[];for(;e<n.length;){let r=n[e].match(Dt);if(!r||r[1].length!==i||/\d/.test(r[2])!==/\d/.test(c[2]))break;let o=[r[3]],s=r[3].match(/^\[([ xX])\]\s+(.*)$/);for(s&&(o[0]=s[2]),e++;e<n.length&&n[e].trim()&&n[e].search(/\S/)>i;e++)o.push(n[e].replace(RegExp(`^ {0,${i+2}}`),``));let l=Mt(o.join(`
7
+ `),t+1),u=l[0],d=s?.[1]!==` `;s&&(typeof u==`object`&&u.tag===`p`?u.kids:l).unshift(Y(`i`,d?[`✓`]:[],{class:`check`,"data-done":String(d),"aria-label":d?it():at()})),a.push(Y(`li`,l,s?{class:`task`}:void 0)),!n[e]?.trim()&&n[e+1]?.match(Dt)?.[1]?.length===i&&e++}r.push(Y(/\d/.test(c[2])?`ol`:`ul`,a))}else{let t=[i];for(e++;e<n.length&&n[e].trim()&&!jt(n[e],n[e+1]);e++)t.push(n[e]);r.push(Y(`p`,X(t.join(`
8
+ `))))}}return r}function Nt(e){let t=e=>{if(typeof e==`string`)return document.createTextNode(e);let n=document.createElement(e.tag);for(let[t,r]of Object.entries(e.attrs??{}))n.setAttribute(t,r);return n.append(...e.kids.map(t)),n},n=document.createDocumentFragment();return n.append(...e.map(t)),n}var Pt=e=>/^\/(\S{0,64})$/.exec(e)?.[1],Ft=(e,t,n)=>(e+n+t)%t;function It(e,t){let n=M(`ul`,{class:`slash`,id:`slash`,role:`listbox`,"aria-label":oe()}),r=[],i=0,a;e.setAttribute(`aria-controls`,`slash`);let o=()=>!n.hidden&&r.length>0,s=()=>(r=[],n.hidden=!0,e.removeAttribute(`aria-activedescendant`)),c=()=>{n.replaceChildren(...r.map((e,t)=>{let n=M(`li`,{id:`slash-${t}`,role:`option`,"aria-selected":String(t===i)},M(`b`,null,`/${e.name}`),e.description&&M(`span`,null,e.description));return n.onmousedown=e=>e.preventDefault(),n.onclick=()=>l(e),n})),n.hidden=!r.length,r.length&&(e.setAttribute(`aria-activedescendant`,`slash-${i}`),n.children[i]?.scrollIntoView({block:`nearest`}))},l=t=>{e.value=`/${t.name} `,s(),e.focus(),e.dispatchEvent(new Event(`input`))};return s(),e.addEventListener(`input`,()=>{let n=Pt(e.value),o=e.value;if(clearTimeout(a),n===void 0)return s();a=setTimeout(async()=>{let a=await t(n).catch(()=>void 0);if(e.value!==o)return;let s=a?.ok&&Array.isArray(a.body.commands)?a.body.commands:[];[r,i]=[s,0],c()},120)}),e.addEventListener(`blur`,s),e.addEventListener(`keydown`,e=>{if(!o()||e.isComposing||e.keyCode===229)return;let t=e.key;if(t===`ArrowDown`||t===`ArrowUp`)i=Ft(i,r.length,t===`ArrowDown`?1:-1),c();else if(t===`Enter`&&!e.shiftKey||t===`Tab`)l(r[i]);else if(t===`Escape`)s();else return;e.preventDefault(),e.stopImmediatePropagation()}),n}var Lt=16384,Rt=/^\s*\/(quit|exit|new|resume|fork|clone|import|reload)(?=\s|$)/,Z=new Map,zt=e=>(n,r)=>t(`sessions/${encodeURIComponent(e)}/${n}`,r);function Bt(e,t,n){if(!e.ok)return[`error`,e.status===504?bt():e.body.reason??h({status:e.status})];if(t&&!t.startsWith(n))return[`ok`,Ct()]}var Vt=e=>{try{return e?.startsWith(`[`)?JSON.parse(e):e?[`error`,e]:void 0}catch{return[`error`,e]}},Ht=(e,t)=>e!==``&&!e.startsWith(t)?Be():``,Ut=(e,t)=>e.startsWith(t)?e.slice(t.length).replace(/^\n/,``):e;function Wt(e){if(!e.online)return R();if(!e.live)return I();if(!e.control)return L();if(e.mark===`waiting`)return e.answerable?P():F()}function Gt(t,n,r,a=t=>e(`sessions/${encodeURIComponent(n)}/upload`,t)){let c=`sb-draft:${n}`,l=matchMedia(`(pointer: coarse)`).matches,u=M(`textarea`,{rows:`1`,maxlength:String(Lt),"aria-label":ge(),enterkeyhint:l?`enter`:`send`}),d=M(`button`,{type:`submit`,class:`cmp-send`},Ie()),f=M(`button`,{type:`button`,class:`cmp-alt`},pe()),p=M(`button`,{type:`button`,class:`cmp-alt cmp-stop`},tt()),m=M(`input`,{type:`file`,multiple:``,hidden:``}),g=M(`button`,{type:`button`,class:`cmp-alt`,"aria-label":N()},`+`),_=M(`p`,{class:`cmp-note`,role:`status`,"aria-live":`polite`}),v=It(u,e=>r(`commands`,{prefix:e})),y=M(`form`,{class:`composer`},v,M(`div`,{class:`cmp-row`},g,m,u,M(`div`,{class:`cmp-acts`},d,f,p)),M(`div`,{class:`cmp-foot`},_));t.replaceChildren(y);let b={name:``,control:!1,live:!1,mark:`unknown`,online:!1},x=!1,S=!1,C=e=>{try{e()}catch{}};C(()=>u.value=sessionStorage.getItem(c)??``);let w=()=>C(()=>u.value?sessionStorage.setItem(c,u.value):sessionStorage.removeItem(c)),T=()=>(u.style.height=`auto`,u.style.height=`${Math.min(u.scrollHeight,220)}px`),E=(e,t=``,...n)=>(_.dataset.tone=t,_.replaceChildren(e,...n)),ee=(e,t,n)=>{let r=M(`button`,{type:`button`,class:`cmp-yes`},t),i=M(`button`,{type:`button`,class:`cmp-link`},o());S=!0,r.onclick=()=>(S=!1,n()),i.onclick=()=>(S=!1,E(``),u.focus()),E(e,`ask`,r,i),r.focus()},[D,te]=[`${c}:note`,()=>{try{return sessionStorage.getItem(c)??``}catch{return}}],O=e=>C(()=>e?sessionStorage.setItem(D,JSON.stringify(e)):sessionStorage.removeItem(D));function k(e,t,i){let a={sent:i,answer:r(e,t)};return i!==void 0&&(O([`error`,bt()]),Z.set(n,a),a.answer.then(e=>{let t=te();e.ok&&t!==void 0&&C(()=>sessionStorage.setItem(c,Ut(t,i))),O(Bt(e,t,i))},()=>O([`error`,bt()]))),A(a)}async function A(e,{sent:t}=e){x=!0,S=!1,P(),E(t===void 0?``:i());try{let n=await e.answer;if(!y.isConnected)return;if(!n.ok)return n.status===504||O(),E(n.body.reason??h({status:n.status}),`error`);if(t===void 0)return E(``);O();let r=Ht(u.value,t);u.value=Ut(u.value,t),w(),T(),E(r,`ok`)}catch{E(bt(),`error`)}finally{Z.get(n)===e&&Z.delete(n),x=!1,P()}}function j(e,t){let n=u.value,r=Wt(b),i=t===n;if(x||S||!n.trim())return;if(r)return E(r,`error`);if(new TextEncoder().encode(n).length>16384)return E(mt(),`error`);let a=!i&&n.match(Rt)?.[0].trim();if(a)return ee(G({command:a}),ze({command:a}),()=>j(e,n));k(`input`,{text:n,as:e,confirmed:i},n)}function P(){let e=Wt(b),t=b.mark===`working`;u.placeholder=e??Me({name:b.name}),d.disabled=x||!!e||!u.value.trim(),f.hidden=p.hidden=!t||!!e,[f.disabled,p.disabled]=[d.disabled,x]}async function F(e){if(!e.length||x)return;let t=Wt(b);if(t)return E(t,`error`);E(xt(),``);for(let t of e){if(t.size>20971520)return E(fe({name:t.name}),`error`);let e=await a(t).catch(()=>void 0);if(!e?.ok||typeof e.body.path!=`string`)return E(e?.body.reason??s(),`error`);let n=u.selectionStart??u.value.length,r=u.value.slice(0,n),i=u.value.slice(u.selectionEnd??n),o=`${r&&!/\s$/.test(r)?` `:``}${e.body.path}${/^\s/.test(i)?``:` `}`;u.value=r+o+i,u.selectionStart=u.selectionEnd=n+o.length}E(``),w(),T(),P(),u.focus()}g.onclick=()=>m.click(),m.onchange=()=>void F([...m.files??[]]).finally(()=>m.value=``),u.addEventListener(`paste`,e=>{let t=[...e.clipboardData?.files??[]];t.length&&(e.preventDefault(),F(t))}),y.addEventListener(`dragover`,e=>e.dataTransfer?.types.includes(`Files`)&&e.preventDefault()),y.addEventListener(`drop`,e=>{let t=[...e.dataTransfer?.files??[]];t.length&&(e.preventDefault(),F(t))}),y.addEventListener(`submit`,e=>(e.preventDefault(),j(`send`))),f.onclick=()=>j(`followUp`),p.onclick=()=>ee(nt(),tt(),()=>void(x||k(`keys`,{keys:[`esc`]}))),u.addEventListener(`input`,()=>(w(),T(),P())),y.addEventListener(`keydown`,e=>{e.key===`Escape`&&!e.isComposing&&(S||e.target===u&&u.value)&&(e.preventDefault(),S&&(S=!1,E(``),u.focus()))}),u.addEventListener(`keydown`,e=>{e.isComposing||e.keyCode===229||e.key!==`Enter`||e.shiftKey||l&&!e.altKey||(e.preventDefault(),j(e.altKey?`followUp`:`send`))});let I=window.visualViewport,L=()=>document.documentElement.style.setProperty(`--vvh`,`${I.height}px`);return I&&(I.addEventListener(`resize`,L),L()),T(),Z.has(n)?A(Z.get(n)):C(()=>{let e=Vt(sessionStorage.getItem(D));sessionStorage.removeItem(D),e&&E(e[1],e[0])}),{box:u,update:e=>(b=e,P()),ready:()=>!Wt(b)}}var Kt=`allow-forms allow-popups allow-popups-to-escape-sandbox`,qt={},Jt=new Map;function Yt(e,t=``){let n=[];for(let r of(e.startsWith(`/`)?e:`${t}/${e}`).split(`/`))r===`..`?n.pop():r&&r!==`.`&&n.push(r);return`/${n.join(`/`)}`}var Xt=(e,t,n)=>e?.find(e=>Yt(e.display,t)===Yt(n,t));function Zt(e,t,n=[]){let r=e.get(t);return e.set(t,new Set(n.map(e=>e.display))),r?n.filter(e=>!r.has(e.display)):[]}var Q=(e,t,n=``)=>(e.state.dataset.tone=n,e.state.textContent=t),Qt=(e,t)=>(e.failed=!0,Q(e,t,`error`)),$t=e=>qt.src?.(e)??`doc/${encodeURIComponent(e)}/`;function en(e){if([e.loaded,e.failed]=[e.card.revision,!1],Q(e,``),e.frame)return void(e.frame.src=$t(e.card.cap));let t=e.card.cap,n=/\.(md|markdown)$/i.test(e.card.display),i=++e.seq;(qt.load?.(t)??fetch(`api/doc/${encodeURIComponent(t)}`,{cache:`no-store`}).then(e=>e.ok?e.json():void 0)).then(t=>e.seq!==i||(t?e.body.replaceChildren(n?M(`div`,{class:`md`},Nt(Mt(t.text))):M(`pre`,{class:`doc-pre`},t.text)):Qt(e,H())),()=>e.seq!==i||Qt(e,r()))}function tn(e,t){let n=Jt.get(t.cap);if(n)return n.tile;let r=t.display.split(`/`).pop()||t.display,i=t.kind===`html`?M(`iframe`,{class:`doc-frame`,sandbox:Kt,referrerpolicy:`no-referrer`,title:Ue({display:t.display,unit:e})}):void 0,a=M(`button`,{type:`button`,class:`cmp-link`},Fe()),o=i&&M(`a`,{class:`cmp-link`,href:$t(t.cap),target:`_blank`,rel:`noopener noreferrer`},Ee()),s=i??M(`div`,{class:`doc-text`},M(`p`,{class:`chat-empty`},me())),c=M(`span`,{class:`term-state`,role:`status`}),l=M(`em`,{class:`doc-off`},Se()),u=M(`div`,{class:`doc-tile`},M(`div`,{class:`term-bar doc-bar`},M(`span`,{class:`doc-why`},t.reason),l,c,M(`span`,{class:`doc-acts`},a,o)),s),d=new IntersectionObserver(([e])=>(p.shown=!!e?.isIntersecting,p.shown&&!p.gone&&(p.failed||p.loaded!==p.card.revision)&&en(p))),f={id:`doc:${t.cap}`,title:`${r} · ${e}`,icon:`i-doc`,body:()=>u,closed:()=>(Jt.delete(t.cap),d.disconnect())},p={card:t,tile:f,loaded:0,seq:0,shown:!1,gone:!1,body:s,state:c,off:l,...i&&{frame:i}};return a.onclick=()=>!p.gone&&en(p),l.hidden=t.onScreen,d.observe(u),en(p),Jt.set(t.cap,p),f}function nn(e,t,n,r){let i=new Map,a=new Set;for(let o of e.bases)for(let e of[...o.tower?[o.tower]:[],...[...o.tabs.flatMap(e=>e.units),...o.outside].flatMap(e=>[e,...e.subs])]){for(let t of e.docs??[])i.set(t.cap,t);for(let i of Zt(t,e.key,e.docs))e.key===n&&r(e.name,i);a.add(e.key)}for(let e of t.keys())a.has(e)||t.delete(e);rn(i)}function rn(e){for(let t of Jt.values()){let n=e.get(t.card.cap);if(!n){t.gone||Q(t,se(),`error`),t.gone=!0;continue}let r=t.gone&&(Q(t,``),t.failed);[t.card,t.gone,t.off.hidden]=[n,!1,n.onScreen],(n.revision!==t.loaded||r)&&(t.shown?en(t):n.revision!==t.loaded&&Q(t,U()))}}function an(e,t,n,r){e.hidden=!t?.length&&!n,e.querySelector(`.d-doc-list`).replaceChildren(...(t??[]).map(e=>{let t=M(`button`,{type:`button`,class:`d-doc`,title:e.reason},M(`b`,null,e.display),M(`small`,null,e.onScreen?e.reason:Te({reason:e.reason})));return t.onclick=()=>r(e),t})),e.querySelector(`.d-docs-cut`).hidden=!n}var on=200;function $(e,t){for(let n of e?.bases??[]){if(n.tower?.key===t)return{u:{key:t,name:n.tower.name,role:`tower`,mark:n.tower.mark,control:n.tower.control,pending:n.tower.pending,docs:n.tower.docs,docsCut:n.tower.docsCut,subs:[]},base:n};for(let[e,r]of[...n.tabs.map(e=>[e.label,e.units]),[void 0,n.outside]])for(let i of r){if(i.key===t)return{u:i,base:n,squad:e};let r=i.subs.find(e=>e.key===t);if(r)return{u:r,base:n,squad:e,launcher:i}}}}var sn=()=>g(`<a class="token">${b}<span class="name"></span><span class="line"><em class="role"></em><span class="note"></span></span></a>`);function cn(e,t,n){m(e,t.key?{view:`session`,ws:n,key:t.key}:void 0),e.toggleAttribute(`hidden`,!1),e.toggleAttribute(`data-alert`,!!t.key&&v(t.mark)),_(e,t.mark),O(e.querySelector(`.plate`),t.role,t.mark,t.docs),y(e,`.name`,t.name),y(e,`.role`,E(t.role)),y(e,`.note`,C(t.note,t.mark))}var ln=()=>g(`<div class="col"><a class="token">${b}<span class="name"></span><span class="line"><em class="role"></em><span class="note"></span></span></a><div class="say"><p></p></div><div class="drones"></div></div>`),un=()=>`<div class="zoom-in"><header class="base keep"><a class="tower big"><i class="sweep"></i><i class="pulse"></i><svg><use href="#i-tower"/></svg><b class="badge"></b></a><div class="title"><span class="crown"><svg><use href="#i-crown"/></svg>${l()}</span><h2></h2><p></p></div><button type="button" class="close-x" data-close="base">×</button><dl class="tally"><div><dt>${et()}</dt><dd></dd></div><div><dt>${yt()}</dt><dd></dd></div><div data-mark="working"><dt>${k()}</dt><dd></dd></div><div data-mark="waiting"><dt>${j()}</dt><dd></dd></div></dl></header><div class="spawn-btns"><button type="button" class="pair-btn"></button></div><div class="squads"></div><div class="camps"><section class="tab squad camp" data-group="outposts"><h3><svg><use href="#i-outpost"/></svg><b>${A()}</b><small></small></h3><div class="formation"></div></section><section class="tab squad camp" data-group="outside"><h3><svg><use href="#i-outside"/></svg><b>${Oe()}</b><small>${ke()}</small></h3><div class="formation"></div></section></div><p class="lost" hidden></p></div>`,dn=()=>`<div class="dossier-in"><span class="tag">${vt()}</span><div class="portrait">${b}</div><h3></h3><p class="d-line"><em class="role"></em> <span class="state"></span></p><p class="d-note" hidden></p><dl class="specs"></dl><button class="cmp-link d-close" type="button" data-close="unit" hidden>${S()}</button><div class="d-docs" hidden><h4>${c()}</h4><div class="d-doc-list"></div><p class="d-docs-cut" hidden>${ce()}</p></div><div class="d-drones" hidden><h4>${V()}</h4><div class="formation"></div></div></div>`,fn=()=>`<div class="comms-in"><header class="comms-head"><span class="logo"><svg><use href="#i-comms"/></svg></span><div class="head-id"><h2><small>${B()}</small> <span></span></h2><p></p></div><div class="modes" role="group"><button type="button" data-mode="chat" aria-pressed="true">${B()}</button><button type="button" data-mode="term" aria-pressed="false">${ot()}</button></div><span class="chan link" data-state="live"><i></i><b>${re()}</b></span><button type="button" class="close-x head-close" data-close="unit" hidden>×</button></header><div class="chat-root"></div><div class="queue-list" hidden></div><details class="todos" hidden><summary><b></b><span></span></summary><ol></ol></details><div class="ask-root"></div><div class="composer-root"></div><div class="term-root" hidden></div></div>`;function pn({data:e,restart:t,openTile:n,embedTerminal:r,online:i}){let o=e=>document.getElementById(e),[s,c,l]=[`ws-view`,`session-view`,`dossier`].map(o),u={view:`map`},h,b={},S,k=[],A=!1,j=new Map,M,N,P,F=0,I,L,R=()=>u.view===`map`?``:u.ws,z=(e,t)=>{let n=document.createElement(`a`);return m(n,e),n.textContent=t,n};function ie(){let e=(e,t,n)=>{let r=document.createElement(e);return r.textContent=t,n&&m(r,n),r},t=o(`crumbs`),n=u;if(n.view===`map`)return t.replaceChildren(e(`b`,`Straw Net`),e(`span`,x()));let r=h?.bases.find(e=>e.id===n.ws)?.label??n.ws,i=n.view===`session`?$(h,n.key)?.u.name??M?.name??n.key:``,a=[];for(let e=n.view===`session`?$(h,n.key):void 0,t=0;e?.launcher&&t<8;e=$(h,e.launcher.key),t++)a.unshift(e.launcher);let s=[e(`a`,`Straw Net`,{view:`map`}),n.view===`workspace`?e(`b`,r):e(`a`,r,{view:`workspace`,ws:n.ws}),...a.map(t=>e(`a`,t.name,{view:`session`,ws:n.ws,key:t.key})),...i?[e(`b`,i)]:[]];s.slice(1,-2).forEach(e=>e.classList.add(`mid`));let c=s.length>3?[Object.assign(e(`span`,`…`),{className:`crumb-more`,role:`button`,tabIndex:0,onclick:()=>t.classList.toggle(`open`)})]:[];t.classList.remove(`open`),t.replaceChildren(s[0],...c,...s.slice(1))}function oe(e,t,n){let r=e=>[`map`,`workspace`,`session`].indexOf(e.view),i=r(e)<r(t)?`enter-back`:e.view===`workspace`&&n?`enter-zoom`:e.view===`session`&&t.view!==`session`?`enter-slide`:``,a=o({map:`map`,workspace:`ws-view`,session:`session-view`}[e.view]);if(i){if(n){let e=a.getBoundingClientRect();a.style.setProperty(`--ox`,`${Math.round(n.x+n.width/2-e.x)}px`),a.style.setProperty(`--oy`,`${Math.round(n.y+n.height/2-e.y)}px`)}a.classList.remove(`enter-zoom`,`enter-slide`,`enter-back`),a.offsetWidth,a.classList.add(i),setTimeout(()=>a.classList.remove(i),700)}}function B(){s.firstElementChild||s.append(g(un()));let e=s.firstElementChild,t=h?.bases.find(e=>e.id===R()),n=e.querySelector(`.lost`);if(n.hidden=!!t,n.textContent=h?he():St(),e.classList.toggle(`void`,!t),!t)return;let r=e.querySelector(`.keep`);_(r,t.mark),r.classList.toggle(`head`,t.head);let i=e.querySelector(`.tower`);i.classList.toggle(`ghost`,!t.tower),_(i,t.tower?.mark??`unknown`),m(i,t.tower?{view:`session`,ws:t.id,key:t.tower.key}:void 0),i.toggleAttribute(`hidden`,!1),i.toggleAttribute(`data-alert`,!!(t.tower&&v(t.tower.mark))),y(e,`h2`,t.label),D(e.querySelector(`.spawn-btns button`),t),T(e.querySelector(`header .close-x`),t),y(e,`.title p`,t.tower?d({state:ee[t.tower.mark]()}):f());let a=t.tabs.flatMap(e=>e.units.flatMap(e=>[e,...e.subs]));[t.tabs.length,a.length,a.filter(e=>e.mark===`working`).length,a.filter(e=>e.mark===`waiting`).length].forEach((t,n)=>e.querySelectorAll(`dd`)[n].textContent=String(t));let o=(e,n)=>{_(e,n.mark),cn(e.querySelector(`.token`),n,t.id);let r=e.querySelector(`.say`),i=b[n.key]??``;r.hidden=!i,y(r,`p`,i),w(e.querySelector(`.drones`),n.subs,sn,(e,n)=>(e.classList.add(`drone`),cn(e,n,t.id)))};w(e.querySelector(`.squads`),t.tabs,()=>g(`<section class="tab squad"><h3><i class="flag"></i><b></b><small></small><button type="button" class="tab-add"></button><button type="button" class="close-x" data-close="tab">×</button></h3><div class="formation"></div></section>`),(e,n)=>{T(e.querySelector(`h3 .close-x`),t,n),y(e,`h3 b`,$e({label:n.label})),D(e.querySelector(`.tab-add`),t,n.id);let r=n.units.flatMap(e=>[e,...e.subs]);y(e,`h3 small`,_t({count:r.length})),_(e,[`waiting`,`error`,`working`].find(e=>r.some(t=>t.mark===e))??`idle`),w(e.querySelector(`.formation`),n.units,ln,o)});let c=(n,r)=>{let i=e.querySelector(`[data-group="${n}"]`);i.hidden=!r.length,w(i.querySelector(`.formation`),r,sn,(e,n)=>cn(e,n,t.id))};c(`outposts`,t.outposts.map(e=>({id:e.id,name:e.label,role:`outpost`,mark:e.mark,note:e.mark===`unknown`?p():void 0}))),c(`outside`,t.outside)}function V(){if(u.view!==`session`)return;l.firstElementChild||l.append(g(dn()));let e=l.firstElementChild,t=$(h,u.key),r=t?.u,a=r?.mark??`unknown`;_(e,a),O(e.querySelector(`.plate`),r?.role??M?.role??`member`,a),y(e,`h3`,r?.name??M?.name??u.key),y(e,`.role`,E(r?.role??M?.role??`session`)),y(e,`.state`,r?C(r.note,a):ye());let o=e.querySelector(`.d-note`),s=M?.state;o.hidden=s!==`recent`&&s!==`unknown`,o.replaceChildren(s===`unknown`?xe():be()),M?.successor&&o.append(` ${rt()} `,z({view:`session`,ws:R(),key:M.successor},$(h,M.successor)?.u.name??_e()));let d=[[Je(),N],[Ge(),P?pt({count:P.toLocaleString()}):void 0],[Ke(),M?.header?.cwd],[We(),t&&z({view:`workspace`,ws:t.base.id},t.base.label)],[Ye(),t?.squad],[qe(),t?.launcher&&z({view:`session`,ws:t.base.id,key:t.launcher.key},t.launcher.name)],[Xe(),M?.unreadable?ue({count:M.unreadable}):void 0]];e.querySelector(`.specs`).replaceChildren(...d.filter(([,e])=>e).map(([e,t])=>{let n=g(`<div><dt></dt><dd></dd></div>`);return n.firstElementChild.textContent=e,n.lastElementChild.append(t),n}));let f=u.key,p=r?.name??M?.name??f;c.querySelector(`.modes`)?.toggleAttribute(`hidden`,!r?.control);let m=e.querySelector(`.d-close`);Object.assign(m.dataset,{key:f,name:p,role:r?.role??``}),m.hidden=!r?.control||r.role===`subagent`,an(e.querySelector(`.d-docs`),r?.docs,r?.docsCut,e=>n(tn(p,e))),S?.docs();let b=e.querySelector(`.d-drones`);b.hidden=!r?.subs.length,w(b.querySelector(`.formation`),(r?.subs??[]).map(e=>({...e,id:e.key})),sn,(e,t)=>(e.classList.add(`drone`),cn(e,t,R())));let x=c.querySelector(`.comms-head`);if(x){y(x,`h2 span`,r?.name??M?.name??``),y(x,`p`,[t?.base.label,t?.squad&&$e({label:t.squad})].filter(Boolean).join(` · `));let e=x.querySelector(`.chan`),n=s===`live`||!s&&r;e.dataset.state=n?`live`:`closed`,y(e,`b`,n?re():s===`recent`?ne():ve()),e.title=e.querySelector(`b`).textContent??``;let i=x.querySelector(`.head-close`),a=r?.name??M?.name??u.key;Object.assign(i.dataset,{key:u.key,name:a,role:r?.role??``}),i.setAttribute(`aria-label`,ae({name:a})),i.hidden=!r?.control||r.role===`subagent`}le(M?.todos),ce(r?.queued),S?.setLive(a===`working`?`${C(r.note,a)}`:v(a)?ee[a]():``,a),I?.update({name:r?.name??M?.name??u.key,control:!!r?.control,live:s?s===`live`:!!r,mark:a,online:i(),answerable:!!r?.pending?.answer}),L?.update(r?.pending,a===`waiting`&&!!r?.control&&i())}let H=()=>setTimeout(()=>u.view===`session`&&(document.activeElement??document.body)===document.body&&(matchMedia(`(pointer: fine)`).matches&&I?.ready()?I.box:S?.log)?.focus({preventScroll:!0}));async function se(t){let r=++F,{mountChat:i}=await te(async()=>{let{mountChat:e}=await import(`./chat-DVKjeMFP.js`);return{mountChat:e}},__vite__mapDeps([0]),import.meta.url);if(r!==F||u.view!==`session`)return;c.replaceChildren(g(fn()));let o=()=>$(h,t)?.u??{key:t,name:M?.name??t,role:M?.role??`member`,mark:`unknown`};S=i(c.querySelector(`.chat-root`),e(t),{who:o,link:e=>{let n=$(h,t)?.u.subs.find(t=>t.name===e)??h?.bases.flatMap(e=>[...e.tabs.flatMap(e=>e.units),...e.outside]).find(t=>t.name===e);return n&&z({view:`session`,ws:$(h,n.key)?.base.id??R(),key:n.key},e)},docFor:(e,r=Xt($(h,t)?.u.docs,M?.header?.cwd,e))=>r&&(()=>n(tn(o().name,r)))});let s=e(t).post??zt(t);[I,L]=[Gt(c.querySelector(`.composer-root`),t,s),a(c.querySelector(`.ask-root`),s,void 0,()=>q(`term`))],c.querySelectorAll(`.modes button`).forEach(e=>e.onclick=()=>q(e.dataset.mode)),G===`term`&&q(`term`),G=void 0,S.reveal(u.at),k.splice(0).forEach(U),V(),H()}function U(e){S?.apply(e);for(let t of e.items??[])t.kind===`assistant`&&([N,P]=[t.model??N,t.ctx??P])}function ce(e){let t=c.querySelector(`.queue-list`);if(!t)return;t.hidden=!e?.length;let n=e=>Object.assign(document.createElement(`b`),{textContent:e.as===`steer`?Pe():Ne()});t.replaceChildren(...(e??[]).map(e=>{let t=document.createElement(`p`);return t.append(n(e),document.createTextNode(e.text)),t}))}function le(e){let t=c.querySelector(`.todos`);if(!t||(t.hidden=!e?.length,!e?.length))return;let n=e.filter(e=>e.status===`completed`).length,r=e.find(e=>e.status===`in_progress`);y(t,`summary b`,lt({done:n,total:e.length})),y(t,`summary span`,r?r.activeForm??r.subject:n===e.length?ut():``),t.querySelector(`ol`).replaceChildren(...e.map(e=>Object.assign(document.createElement(`li`),{textContent:e.subject,className:e.status})))}let W,G,K=0;function q(e){if(u.view!==`session`)return;let t=u.key,n=c.querySelector(`.comms-in`);if(!n)return void(G=e===`term`?`term`:void 0);n.querySelectorAll(`.modes button`).forEach(t=>t.setAttribute(`aria-pressed`,String(t.dataset.mode===e)));for(let t of[`.chat-root`,`.ask-root`,`.composer-root`])n.querySelector(t).hidden=e===`term`;let i=n.querySelector(`.term-root`);if(i.hidden=e!==`term`,n.classList.toggle(`in-term`,e===`term`),W?.(),W=void 0,e!==`term`)return H();let a=++K;r(t,$(h,t)?.u.name??M?.name??t,i).then(e=>a===K&&u.view===`session`&&u.key===t?W=e:e())}let de=()=>(K++,W?.(),W=void 0),J=()=>(ie(),u.view===`workspace`?B():V());return{terminal(e){u.view===`session`&&u.key===e?q(`term`):G=`term`},locate:e=>$(h,e),show(e,t,n){let[r,i]=u.view===`session`?[u.key,u.at]:[];(e.view!==`workspace`||u.view!==`workspace`||e.ws!==u.ws)&&(b={}),u=e,s.hidden=e.view!==`workspace`,c.hidden=l.hidden=e.view!==`session`,(e.view!==`session`||e.key!==r)&&de(),e.view===`session`&&e.key!==r?([S,I,L,M,N,P,k,A]=[void 0,void 0,void 0,void 0,void 0,void 0,[],!1],c.replaceChildren(g(`<p class="lost">${De()}</p>`)),se(e.key)):e.view===`session`&&e.at!==i?(S?.reveal(e.at),H()):e.view!==`session`&&(F++,S=I=L=void 0),J(),e!==t&&oe(e,t,n)},net(e){h=e,nn(e,j,u.view===`session`?u.key:void 0,(e,t)=>n(tn(e,t),!1)),u.view!==`map`&&J()},cards(e){b={...b,...e},u.view===`workspace`&&B()},history(e){if(u.view===`session`&&e.key===u.key){if(M={...M,...e,items:void 0},e.reset&&([N,P]=[void 0,void 0]),document.hidden)return k.length<on?void k.push(e):void(A=!0);S?U(e):k.push(e),V()}},wake(){if(A)return A=!1,k=[],t();k.splice(0).forEach(e=>S&&U(e)),J()}}}export{pn as mountFocus,Mt as n,Nt as t};
@@ -6,7 +6,7 @@
6
6
  <meta name="referrer" content="no-referrer">
7
7
  <title>Straw Net</title>
8
8
  <link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='8' fill='%230b1220'/%3E%3Cpath d='M16 5l9 7h-4v13h-10V12H7z' fill='%2338e0ff'/%3E%3C/svg%3E">
9
- <script type="module" crossorigin src="./assets/index-BInsCHu4.js"></script>
9
+ <script type="module" crossorigin src="./assets/index-CZq2ySys.js"></script>
10
10
  <link rel="stylesheet" crossorigin href="./assets/index-D-3yz3dW.css">
11
11
  </head>
12
12
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-straw-boss",
3
- "version": "0.20.1",
3
+ "version": "0.20.2",
4
4
  "description": "Straw Boss coordination for pi in Herdr: sessions join a tab's net by choice, the first joiner is its main agent, a workspace tower opens on demand with a live monitoring dashboard, and boss_broadcast reaches the rest",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -1,8 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-D-3yz3dW.css"])))=>i.map(i=>d[i]);
2
- import{r as e,t}from"./post-UHMNmNgA.js";import{i as n,n as r,r as i,t as a}from"./ask-K6BXtdBN.js";import{A as o,C as s,D as c,E as l,M as u,O as d,S as f,T as p,a as m,b as h,d as g,f as _,g as v,h as y,i as b,j as x,k as S,l as C,m as w,o as T,p as E,r as ee,s as D,t as te,u as O,v as k,x as A,y as j}from"./index-BInsCHu4.js";import{t as M}from"./dom-BaTXH9WU.js";var N=((e={},t={})=>(t.locale??u())===`zh-TW`?`附加檔案`:`Attach files`),P=((e={},t={})=>(t.locale??u())===`zh-TW`?`它在等待對話框:請在上方或它的終端機中回答。`:`It waits on a dialog: answer it above, or in its terminal.`),F=((e={},t={})=>(t.locale??u())===`zh-TW`?`它在等待對話框;請在它的終端機中回答。`:`It waits on a dialog; answer it in its terminal.`),I=((e={},t={})=>(t.locale??u())===`zh-TW`?`這個 session 已不再即時;紀錄仍可閱讀。`:`This session is no longer live; its history stays readable.`),L=((e={},t={})=>(t.locale??u())===`zh-TW`?`這個單位沒有即時的 pi 窗格,無處可輸入。`:`No live pi pane backs this unit, so there is nothing to type into.`),R=((e={},t={})=>(t.locale??u())===`zh-TW`?`串流中斷;要等它恢復才能送出。`:`The stream is down; sending waits for it to come back.`),ne=((e={},t={})=>(t.locale??u())===`zh-TW`?`頻道關閉`:`channel closed`),re=((e={},t={})=>(t.locale??u())===`zh-TW`?`頻道開啟`:`channel open`),z=e=>`Close ${e?.name}`,ie=e=>`關閉 ${e?.name}`,ae=((e,t={})=>(t.locale??u())===`zh-TW`?ie(e):z(e)),oe=((e={},t={})=>(t.locale??u())===`zh-TW`?`指令`:`Commands`),B=((e={},t={})=>(t.locale??u())===`zh-TW`?`通訊`:`comms`),V=((e={},t={})=>(t.locale??u())===`zh-TW`?`已派出`:`Dispatched`),H=((e={},t={})=>(t.locale??u())===`zh-TW`?`無法取得:已不在它的 session 中開啟。`:`Unavailable: no longer open in its session.`),se=((e={},t={})=>(t.locale??u())===`zh-TW`?`已不在清單中:已在它的 session 中關閉,或 session 已結束。`:`No longer listed: closed in its session, or the session ended.`),U=((e={},t={})=>(t.locale??u())===`zh-TW`?`已更新:此區塊顯示時會載入新版本。`:`Updated: the new version loads when this tile shows.`),ce=((e={},t={})=>(t.locale??u())===`zh-TW`?`超過轉送上限:請在終端機中閱讀。`:`More than the relay carries: read them in the terminal.`),le=e=>`${e?.command} ends this session or switches its pane to another one.`,W=e=>`${e?.command} 會結束這個 session,或把它的窗格切換到別的 session。`,G=((e,t={})=>(t.locale??u())===`zh-TW`?W(e):le(e)),K=e=>{let t=n(`en`,e?.count,{},!0);return t===`one`?`${e?.count} entry`:t===`other`?`${e?.count} entries`:`entry_count`},q=e=>`${e?.count} 筆`,ue=((e,t={})=>(t.locale??u())===`zh-TW`?q(e):K(e)),de=e=>`${e?.name} is larger than 20 MB.`,J=e=>`${e?.name} 超過 20 MB。`,fe=((e,t={})=>(t.locale??u())===`zh-TW`?J(e):de(e)),pe=((e={},t={})=>(t.locale??u())===`zh-TW`?`做完再送`:`After this`),me=((e={},t={})=>(t.locale??u())===`zh-TW`?`載入中…`:`Loading…`),he=((e={},t={})=>(t.locale??u())===`zh-TW`?`這個工作區不在網中。`:`This workspace is not part of the net.`),ge=((e={},t={})=>(t.locale??u())===`zh-TW`?`訊息`:`Message`),_e=((e={},t={})=>(t.locale??u())===`zh-TW`?`新的 session`:`the new session`),ve=((e={},t={})=>(t.locale??u())===`zh-TW`?`無頻道`:`no channel`),ye=((e={},t={})=>(t.locale??u())===`zh-TW`?`不在網中`:`not in the net`),be=((e={},t={})=>(t.locale??u())===`zh-TW`?`已不再即時;紀錄在十分鐘內仍可閱讀。`:`No longer live; its history stays readable for ten minutes.`),xe=((e={},t={})=>(t.locale??u())===`zh-TW`?`不在網中(可能已在十分鐘前結束)。`:`Not in the net (it may have ended more than ten minutes ago).`),Se=((e={},t={})=>(t.locale??u())===`zh-TW`?`不在終端機畫面上`:`off screen in the terminal`),Ce=e=>`${e?.reason} · off screen`,we=e=>`${e?.reason} · 不在畫面上`,Te=((e,t={})=>(t.locale??u())===`zh-TW`?we(e):Ce(e)),Ee=((e={},t={})=>(t.locale??u())===`zh-TW`?`在新分頁開啟`:`Open in a new tab`),De=((e={},t={})=>(t.locale??u())===`zh-TW`?`正在開啟頻道…`:`Opening the channel…`),Oe=((e={},t={})=>(t.locale??u())===`zh-TW`?`網外`:`Outside the net`),ke=((e={},t={})=>(t.locale??u())===`zh-TW`?`未編入的 pi 窗格`:`unaligned pi panes`),Ae=e=>`Message ${e?.name}`,je=e=>`傳訊息給 ${e?.name}`,Me=((e,t={})=>(t.locale??u())===`zh-TW`?je(e):Ae(e)),Ne=((e={},t={})=>(t.locale??u())===`zh-TW`?`排隊中・做完再送`:`Queued · follow-up`),Pe=((e={},t={})=>(t.locale??u())===`zh-TW`?`排隊中・插話`:`Queued · steer`),Fe=((e={},t={})=>(t.locale??u())===`zh-TW`?`重新載入`:`Reload`),Ie=((e={},t={})=>(t.locale??u())===`zh-TW`?`送出`:`Send`),Le=e=>`Send ${e?.command}`,Re=e=>`送出 ${e?.command}`,ze=((e,t={})=>(t.locale??u())===`zh-TW`?Re(e):Le(e)),Be=((e={},t={})=>(t.locale??u())===`zh-TW`?`已照原文送出;你的修改留在這裡,尚未送出。`:`Sent as it was; your edits stayed here, unsent.`),Ve=e=>`${e?.display}, shown by ${e?.unit}`,He=e=>`${e?.display},由 ${e?.unit} 顯示`,Ue=((e,t={})=>(t.locale??u())===`zh-TW`?He(e):Ve(e)),We=((e={},t={})=>(t.locale??u())===`zh-TW`?`基地`:`base`),Ge=((e={},t={})=>(t.locale??u())===`zh-TW`?`上下文`:`context`),Ke=((e={},t={})=>(t.locale??u())===`zh-TW`?`目錄`:`directory`),qe=((e={},t={})=>(t.locale??u())===`zh-TW`?`啟動者`:`launcher`),Je=((e={},t={})=>(t.locale??u())===`zh-TW`?`模型`:`model`),Ye=((e={},t={})=>(t.locale??u())===`zh-TW`?`小隊`:`squad`),Xe=((e={},t={})=>(t.locale??u())===`zh-TW`?`無法讀取`:`unreadable`),Ze=e=>`squad ${e?.label}`,Qe=e=>`小隊 ${e?.label}`,$e=((e,t={})=>(t.locale??u())===`zh-TW`?Qe(e):Ze(e)),et=((e={},t={})=>(t.locale??u())===`zh-TW`?`小隊`:`Squads`),tt=((e={},t={})=>(t.locale??u())===`zh-TW`?`停止`:`Stop`),nt=((e={},t={})=>(t.locale??u())===`zh-TW`?`要停止目前的任務嗎?佇列中的訊息會退回它的終端機編輯器。`:`Stop the current task? Queued messages go back to its terminal editor.`),rt=((e={},t={})=>(t.locale??u())===`zh-TW`?`現在:`:`Now:`),it=((e={},t={})=>(t.locale??u())===`zh-TW`?`已完成`:`done`),at=((e={},t={})=>(t.locale??u())===`zh-TW`?`未完成`:`not done`),ot=((e={},t={})=>(t.locale??u())===`zh-TW`?`終端機`:`Terminal`),st=e=>`Todos ${e?.done}/${e?.total}`,ct=e=>`待辦 ${e?.done}/${e?.total}`,lt=((e,t={})=>(t.locale??u())===`zh-TW`?ct(e):st(e)),ut=((e={},t={})=>(t.locale??u())===`zh-TW`?`全部完成`:`All done`),dt=e=>`${e?.count} tokens`,ft=e=>`${e?.count} tokens`,pt=((e,t={})=>(t.locale??u())===`zh-TW`?ft(e):dt(e)),mt=((e={},t={})=>(t.locale??u())===`zh-TW`?`文字超過 16 KB,請縮短。`:`The text is longer than 16 KB; shorten it.`),ht=e=>{let t=n(`en`,e?.count,{},!0);return t===`one`?`${e?.count} unit`:t===`other`?`${e?.count} units`:`unit_count`},gt=e=>`${e?.count} 個單位`,_t=((e,t={})=>(t.locale??u())===`zh-TW`?gt(e):ht(e)),vt=((e={},t={})=>(t.locale??u())===`zh-TW`?`單位檔案`:`unit dossier`),yt=((e={},t={})=>(t.locale??u())===`zh-TW`?`單位`:`Units`),bt=((e={},t={})=>(t.locale??u())===`zh-TW`?`未確認。再次送出前請先查看終端機。`:`Not confirmed. Check the terminal before sending again.`),xt=((e={},t={})=>(t.locale??u())===`zh-TW`?`上傳中…`:`Uploading…`),St=((e={},t={})=>(t.locale??u())===`zh-TW`?`等待網的資料…`:`Waiting for the net…`),Ct=((e={},t={})=>(t.locale??u())===`zh-TW`?`原文已送到 session;這裡是你編輯過、尚未送出的副本。`:`The original already went to the session; what is here is your edited copy, unsent.`),Y=(e,t,n)=>({tag:e,kids:t,attrs:n}),wt=/^(?:https?:\/\/|mailto:)[^\s\u0000-\u001f]+$/i,Tt=(e,t)=>Y(`a`,t,{href:e,rel:`noopener noreferrer`,target:`_blank`}),Et=/(`+)([^`]|[^`][^]{0,1000}?[^`])\1(?!`)|\*\*([^*][^]{0,1000}?)\*\*|~~([^~][^]{0,1000}?)~~|\*([^\s*][^*]{0,500}?)\*|(?<![\w])_([^\s_][^_]{0,500}?)_(?![\w])|\[([^\]]{1,500})\]\(([^)\s]{1,2000})(?:\s+"[^"]*")?\)|(https?:\/\/[^\s<>)\]]+)/g;function X(e){let t=[],n=0;for(let r of e.matchAll(Et))r.index>n&&t.push(e.slice(n,r.index)),n=r.index+r[0].length,r[2]===void 0?r[3]===void 0?r[4]===void 0?r[5]!==void 0||r[6]!==void 0?t.push(Y(`em`,X(r[5]??r[6]))):r[7]===void 0?t.push(Tt(r[9],[r[9]])):t.push(wt.test(r[8])?Tt(r[8],X(r[7])):r[0]):t.push(Y(`del`,X(r[4]))):t.push(Y(`strong`,X(r[3]))):t.push(Y(`code`,[r[2]]));return n<e.length&&t.push(e.slice(n)),t}var Dt=/^(\s*)([-*+]|\d+[.)])\s+(.*)$/,Ot=/^\s*([-*_])(\s*\1){2,}\s*$/,kt=/^\s*\|?\s*:?-+:?\s*(\|\s*:?-+:?\s*)*\|?\s*$/,At=e=>e.trim().replace(/^\|/,``).replace(/\|$/,``).split(`|`).map(e=>e.trim()),jt=(e,t)=>/^\s*(`{3,}|~{3,}|#{1,6}\s|>)/.test(e)||Ot.test(e)||Dt.test(e)||e.includes(`|`)&&t!==void 0&&kt.test(t)&&t.includes(`-`);function Mt(e,t=0){if(t>=16)return[Y(`p`,[e])];let n=e.replace(/\r\n?/g,`
3
- `).split(`
4
- `),r=[];for(let e=0;e<n.length;){let i=n[e],a=n[e+1],o=i.match(/^\s*(`{3,}|~{3,})\s*([\w+-]*)/),s=i.match(/^\s*(#{1,6})\s+(.*?)\s*#*\s*$/),c=i.match(Dt);if(!i.trim())e++;else if(o){let t=[];for(e++;e<n.length&&!n[e].trim().startsWith(o[1]);e++)t.push(n[e]);e++,r.push(Y(`pre`,[Y(`code`,[t.join(`
5
- `)],o[2]?{"data-lang":o[2]}:void 0)]))}else if(s)r.push(Y(`h${s[1].length}`,X(s[2]))),e++;else if(Ot.test(i))r.push(Y(`hr`,[])),e++;else if(/^\s*>/.test(i)){let i=[];for(;e<n.length&&/^\s*>/.test(n[e]);e++)i.push(n[e].replace(/^\s*> ?/,``));r.push(Y(`blockquote`,Mt(i.join(`
6
- `),t+1)))}else if(i.includes(`|`)&&a!==void 0&&kt.test(a)&&a.includes(`-`)){let t=[];for(e+=2;e<n.length&&n[e].trim()&&n[e].includes(`|`);e++)t.push(At(n[e]));r.push(Y(`table`,[Y(`thead`,[Y(`tr`,At(i).map(e=>Y(`th`,X(e))))]),Y(`tbody`,t.map(e=>Y(`tr`,e.map(e=>Y(`td`,X(e))))))]))}else if(c){let i=c[1].length,a=[];for(;e<n.length;){let r=n[e].match(Dt);if(!r||r[1].length!==i||/\d/.test(r[2])!==/\d/.test(c[2]))break;let o=[r[3]],s=r[3].match(/^\[([ xX])\]\s+(.*)$/);for(s&&(o[0]=s[2]),e++;e<n.length&&n[e].trim()&&n[e].search(/\S/)>i;e++)o.push(n[e].replace(RegExp(`^ {0,${i+2}}`),``));let l=Mt(o.join(`
7
- `),t+1),u=l[0],d=s?.[1]!==` `;s&&(typeof u==`object`&&u.tag===`p`?u.kids:l).unshift(Y(`i`,d?[`✓`]:[],{class:`check`,"data-done":String(d),"aria-label":d?it():at()})),a.push(Y(`li`,l,s?{class:`task`}:void 0)),!n[e]?.trim()&&n[e+1]?.match(Dt)?.[1]?.length===i&&e++}r.push(Y(/\d/.test(c[2])?`ol`:`ul`,a))}else{let t=[i];for(e++;e<n.length&&n[e].trim()&&!jt(n[e],n[e+1]);e++)t.push(n[e]);r.push(Y(`p`,X(t.join(`
8
- `))))}}return r}function Nt(e){let t=e=>{if(typeof e==`string`)return document.createTextNode(e);let n=document.createElement(e.tag);for(let[t,r]of Object.entries(e.attrs??{}))n.setAttribute(t,r);return n.append(...e.kids.map(t)),n},n=document.createDocumentFragment();return n.append(...e.map(t)),n}var Pt=e=>/^\/(\S{0,64})$/.exec(e)?.[1],Ft=(e,t,n)=>(e+n+t)%t;function It(e,t){let n=M(`ul`,{class:`slash`,id:`slash`,role:`listbox`,"aria-label":oe()}),r=[],i=0,a;e.setAttribute(`aria-controls`,`slash`);let o=()=>!n.hidden&&r.length>0,s=()=>(r=[],n.hidden=!0,e.removeAttribute(`aria-activedescendant`)),c=()=>{n.replaceChildren(...r.map((e,t)=>{let n=M(`li`,{id:`slash-${t}`,role:`option`,"aria-selected":String(t===i)},M(`b`,null,`/${e.name}`),e.description&&M(`span`,null,e.description));return n.onmousedown=e=>e.preventDefault(),n.onclick=()=>l(e),n})),n.hidden=!r.length,r.length&&(e.setAttribute(`aria-activedescendant`,`slash-${i}`),n.children[i]?.scrollIntoView({block:`nearest`}))},l=t=>{e.value=`/${t.name} `,s(),e.focus(),e.dispatchEvent(new Event(`input`))};return s(),e.addEventListener(`input`,()=>{let n=Pt(e.value),o=e.value;if(clearTimeout(a),n===void 0)return s();a=setTimeout(async()=>{let a=await t(n).catch(()=>void 0);if(e.value!==o)return;let s=a?.ok&&Array.isArray(a.body.commands)?a.body.commands:[];[r,i]=[s,0],c()},120)}),e.addEventListener(`blur`,s),e.addEventListener(`keydown`,e=>{if(!o()||e.isComposing||e.keyCode===229)return;let t=e.key;if(t===`ArrowDown`||t===`ArrowUp`)i=Ft(i,r.length,t===`ArrowDown`?1:-1),c();else if(t===`Enter`&&!e.shiftKey||t===`Tab`)l(r[i]);else if(t===`Escape`)s();else return;e.preventDefault(),e.stopImmediatePropagation()}),n}var Lt=16384,Rt=/^\s*\/(quit|exit|new|resume|fork|clone|import|reload)(?=\s|$)/,Z=new Map,zt=e=>(n,r)=>t(`sessions/${encodeURIComponent(e)}/${n}`,r);function Bt(e,t,n){if(!e.ok)return[`error`,e.status===504?bt():e.body.reason??h({status:e.status})];if(t&&!t.startsWith(n))return[`ok`,Ct()]}var Vt=e=>{try{return e?.startsWith(`[`)?JSON.parse(e):e?[`error`,e]:void 0}catch{return[`error`,e]}},Ht=(e,t)=>e!==``&&!e.startsWith(t)?Be():``,Ut=(e,t)=>e.startsWith(t)?e.slice(t.length).replace(/^\n/,``):e;function Wt(e){if(!e.online)return R();if(!e.live)return I();if(!e.control)return L();if(e.mark===`waiting`)return e.answerable?P():F()}function Gt(t,n,r,a=t=>e(`sessions/${encodeURIComponent(n)}/upload`,t)){let c=`sb-draft:${n}`,l=matchMedia(`(pointer: coarse)`).matches,u=M(`textarea`,{rows:`1`,maxlength:String(Lt),"aria-label":ge(),enterkeyhint:l?`enter`:`send`}),d=M(`button`,{type:`submit`,class:`cmp-send`},Ie()),f=M(`button`,{type:`button`,class:`cmp-alt`},pe()),p=M(`button`,{type:`button`,class:`cmp-alt cmp-stop`},tt()),m=M(`input`,{type:`file`,multiple:``,hidden:``}),g=M(`button`,{type:`button`,class:`cmp-alt`,"aria-label":N()},`+`),_=M(`p`,{class:`cmp-note`,role:`status`,"aria-live":`polite`}),v=It(u,e=>r(`commands`,{prefix:e})),y=M(`form`,{class:`composer`},v,M(`div`,{class:`cmp-row`},g,m,u,M(`div`,{class:`cmp-acts`},d,f,p)),M(`div`,{class:`cmp-foot`},_));t.replaceChildren(y);let b={name:``,control:!1,live:!1,mark:`unknown`,online:!1},x=!1,S=!1,C=e=>{try{e()}catch{}};C(()=>u.value=sessionStorage.getItem(c)??``);let w=()=>C(()=>u.value?sessionStorage.setItem(c,u.value):sessionStorage.removeItem(c)),T=()=>(u.style.height=`auto`,u.style.height=`${Math.min(u.scrollHeight,220)}px`),E=(e,t=``,...n)=>(_.dataset.tone=t,_.replaceChildren(e,...n)),ee=(e,t,n)=>{let r=M(`button`,{type:`button`,class:`cmp-yes`},t),i=M(`button`,{type:`button`,class:`cmp-link`},o());S=!0,r.onclick=()=>(S=!1,n()),i.onclick=()=>(S=!1,E(``),u.focus()),E(e,`ask`,r,i),r.focus()},[D,te]=[`${c}:note`,()=>{try{return sessionStorage.getItem(c)??``}catch{return}}],O=e=>C(()=>e?sessionStorage.setItem(D,JSON.stringify(e)):sessionStorage.removeItem(D));function k(e,t,i){let a={sent:i,answer:r(e,t)};return i!==void 0&&(O([`error`,bt()]),Z.set(n,a),a.answer.then(e=>{let t=te();e.ok&&t!==void 0&&C(()=>sessionStorage.setItem(c,Ut(t,i))),O(Bt(e,t,i))},()=>O([`error`,bt()]))),A(a)}async function A(e,{sent:t}=e){x=!0,S=!1,P(),E(t===void 0?``:i());try{let n=await e.answer;if(!y.isConnected)return;if(!n.ok)return n.status===504||O(),E(n.body.reason??h({status:n.status}),`error`);if(t===void 0)return E(``);O();let r=Ht(u.value,t);u.value=Ut(u.value,t),w(),T(),E(r,`ok`)}catch{E(bt(),`error`)}finally{Z.get(n)===e&&Z.delete(n),x=!1,P()}}function j(e,t){let n=u.value,r=Wt(b),i=t===n;if(x||S||!n.trim())return;if(r)return E(r,`error`);if(new TextEncoder().encode(n).length>16384)return E(mt(),`error`);let a=!i&&n.match(Rt)?.[0].trim();if(a)return ee(G({command:a}),ze({command:a}),()=>j(e,n));k(`input`,{text:n,as:e,confirmed:i},n)}function P(){let e=Wt(b),t=b.mark===`working`;u.placeholder=e??Me({name:b.name}),d.disabled=x||!!e||!u.value.trim(),f.hidden=p.hidden=!t||!!e,f.disabled=p.disabled=x}async function F(e){if(!e.length||x)return;let t=Wt(b);if(t)return E(t,`error`);E(xt(),``);for(let t of e){if(t.size>20971520)return E(fe({name:t.name}),`error`);let e=await a(t).catch(()=>void 0);if(!e?.ok||typeof e.body.path!=`string`)return E(e?.body.reason??s(),`error`);let n=u.selectionStart??u.value.length,r=u.value.slice(0,n),i=u.value.slice(u.selectionEnd??n),o=`${r&&!/\s$/.test(r)?` `:``}${e.body.path}${/^\s/.test(i)?``:` `}`;u.value=r+o+i,u.selectionStart=u.selectionEnd=n+o.length}E(``),w(),T(),P(),u.focus()}g.onclick=()=>m.click(),m.onchange=()=>void F([...m.files??[]]).finally(()=>m.value=``),u.addEventListener(`paste`,e=>{let t=[...e.clipboardData?.files??[]];t.length&&(e.preventDefault(),F(t))}),y.addEventListener(`dragover`,e=>e.dataTransfer?.types.includes(`Files`)&&e.preventDefault()),y.addEventListener(`drop`,e=>{let t=[...e.dataTransfer?.files??[]];t.length&&(e.preventDefault(),F(t))}),y.addEventListener(`submit`,e=>(e.preventDefault(),j(`send`))),f.onclick=()=>j(`followUp`),p.onclick=()=>ee(nt(),tt(),()=>void(x||k(`keys`,{keys:[`esc`]}))),u.addEventListener(`input`,()=>(w(),T(),P())),y.addEventListener(`keydown`,e=>{e.key===`Escape`&&!e.isComposing&&(S||e.target===u&&u.value)&&(e.preventDefault(),S&&(S=!1,E(``),u.focus()))}),u.addEventListener(`keydown`,e=>{e.isComposing||e.keyCode===229||e.key!==`Enter`||e.shiftKey||l&&!e.altKey||(e.preventDefault(),j(e.altKey?`followUp`:`send`))});let I=window.visualViewport,L=()=>document.documentElement.style.setProperty(`--vvh`,`${I.height}px`);return I&&(I.addEventListener(`resize`,L),L()),T(),Z.has(n)?A(Z.get(n)):C(()=>{let e=Vt(sessionStorage.getItem(D));sessionStorage.removeItem(D),e&&E(e[1],e[0])}),{box:u,update:e=>(b=e,P()),ready:()=>!Wt(b)}}var Kt=`allow-forms allow-popups allow-popups-to-escape-sandbox`,qt={},Jt=new Map;function Yt(e,t=``){let n=[];for(let r of(e.startsWith(`/`)?e:`${t}/${e}`).split(`/`))r===`..`?n.pop():r&&r!==`.`&&n.push(r);return`/${n.join(`/`)}`}var Xt=(e,t,n)=>e?.find(e=>Yt(e.display,t)===Yt(n,t));function Zt(e,t,n=[]){let r=e.get(t);return e.set(t,new Set(n.map(e=>e.display))),r?n.filter(e=>!r.has(e.display)):[]}var Q=(e,t,n=``)=>(e.state.dataset.tone=n,e.state.textContent=t),Qt=(e,t)=>(e.failed=!0,Q(e,t,`error`)),$t=e=>qt.src?.(e)??`doc/${encodeURIComponent(e)}/`;function en(e){if([e.loaded,e.failed]=[e.card.revision,!1],Q(e,``),e.frame)return void(e.frame.src=$t(e.card.cap));let t=e.card.cap,n=/\.(md|markdown)$/i.test(e.card.display),i=++e.seq;(qt.load?.(t)??fetch(`api/doc/${encodeURIComponent(t)}`,{cache:`no-store`}).then(e=>e.ok?e.json():void 0)).then(t=>e.seq!==i||(t?e.body.replaceChildren(n?M(`div`,{class:`md`},Nt(Mt(t.text))):M(`pre`,{class:`doc-pre`},t.text)):Qt(e,H())),()=>e.seq!==i||Qt(e,r()))}function tn(e,t){let n=Jt.get(t.cap);if(n)return n.tile;let r=t.display.split(`/`).pop()||t.display,i=t.kind===`html`?M(`iframe`,{class:`doc-frame`,sandbox:Kt,referrerpolicy:`no-referrer`,title:Ue({display:t.display,unit:e})}):void 0,a=M(`button`,{type:`button`,class:`cmp-link`},Fe()),o=i&&M(`a`,{class:`cmp-link`,href:$t(t.cap),target:`_blank`,rel:`noopener noreferrer`},Ee()),s=i??M(`div`,{class:`doc-text`},M(`p`,{class:`chat-empty`},me())),c=M(`span`,{class:`term-state`,role:`status`}),l=M(`em`,{class:`doc-off`},Se()),u=M(`div`,{class:`doc-tile`},M(`div`,{class:`term-bar doc-bar`},M(`span`,{class:`doc-why`},t.reason),l,c,M(`span`,{class:`doc-acts`},a,o)),s),d=new IntersectionObserver(([e])=>(p.shown=!!e?.isIntersecting,p.shown&&!p.gone&&(p.failed||p.loaded!==p.card.revision)&&en(p))),f={id:`doc:${t.cap}`,title:`${r} · ${e}`,icon:`i-doc`,body:()=>u,closed:()=>(Jt.delete(t.cap),d.disconnect())},p={card:t,tile:f,loaded:0,seq:0,shown:!1,gone:!1,body:s,state:c,off:l,...i&&{frame:i}};return a.onclick=()=>!p.gone&&en(p),l.hidden=t.onScreen,d.observe(u),en(p),Jt.set(t.cap,p),f}function nn(e,t,n,r){let i=new Map,a=new Set;for(let o of e.bases)for(let e of[...o.tower?[o.tower]:[],...[...o.tabs.flatMap(e=>e.units),...o.outside].flatMap(e=>[e,...e.subs])]){for(let t of e.docs??[])i.set(t.cap,t);for(let i of Zt(t,e.key,e.docs))e.key===n&&r(e.name,i);a.add(e.key)}for(let e of t.keys())a.has(e)||t.delete(e);rn(i)}function rn(e){for(let t of Jt.values()){let n=e.get(t.card.cap);if(!n){t.gone||Q(t,se(),`error`),t.gone=!0;continue}let r=t.gone&&(Q(t,``),t.failed);[t.card,t.gone,t.off.hidden]=[n,!1,n.onScreen],(n.revision!==t.loaded||r)&&(t.shown?en(t):n.revision!==t.loaded&&Q(t,U()))}}function an(e,t,n,r){e.hidden=!t?.length&&!n,e.querySelector(`.d-doc-list`).replaceChildren(...(t??[]).map(e=>{let t=M(`button`,{type:`button`,class:`d-doc`,title:e.reason},M(`b`,null,e.display),M(`small`,null,e.onScreen?e.reason:Te({reason:e.reason})));return t.onclick=()=>r(e),t})),e.querySelector(`.d-docs-cut`).hidden=!n}var on=200;function $(e,t){for(let n of e?.bases??[]){if(n.tower?.key===t)return{u:{key:t,name:n.tower.name,role:`tower`,mark:n.tower.mark,control:n.tower.control,pending:n.tower.pending,docs:n.tower.docs,docsCut:n.tower.docsCut,subs:[]},base:n};for(let[e,r]of[...n.tabs.map(e=>[e.label,e.units]),[void 0,n.outside]])for(let i of r){if(i.key===t)return{u:i,base:n,squad:e};let r=i.subs.find(e=>e.key===t);if(r)return{u:r,base:n,squad:e,launcher:i}}}}var sn=()=>g(`<a class="token">${b}<span class="name"></span><span class="line"><em class="role"></em><span class="note"></span></span></a>`);function cn(e,t,n){m(e,t.key?{view:`session`,ws:n,key:t.key}:void 0),e.toggleAttribute(`hidden`,!1),e.toggleAttribute(`data-alert`,!!t.key&&v(t.mark)),_(e,t.mark),O(e.querySelector(`.plate`),t.role,t.mark,t.docs),y(e,`.name`,t.name),y(e,`.role`,E(t.role)),y(e,`.note`,C(t.note,t.mark))}var ln=()=>g(`<div class="col"><a class="token">${b}<span class="name"></span><span class="line"><em class="role"></em><span class="note"></span></span></a><div class="say"><p></p></div><div class="drones"></div></div>`),un=()=>`<div class="zoom-in"><header class="base keep"><a class="tower big"><i class="sweep"></i><i class="pulse"></i><svg><use href="#i-tower"/></svg><b class="badge"></b></a><div class="title"><span class="crown"><svg><use href="#i-crown"/></svg>${l()}</span><h2></h2><p></p></div><button type="button" class="close-x" data-close="base">×</button><dl class="tally"><div><dt>${et()}</dt><dd></dd></div><div><dt>${yt()}</dt><dd></dd></div><div data-mark="working"><dt>${k()}</dt><dd></dd></div><div data-mark="waiting"><dt>${j()}</dt><dd></dd></div></dl></header><div class="spawn-btns"><button type="button" class="pair-btn"></button></div><div class="squads"></div><div class="camps"><section class="tab squad camp" data-group="outposts"><h3><svg><use href="#i-outpost"/></svg><b>${A()}</b><small></small></h3><div class="formation"></div></section><section class="tab squad camp" data-group="outside"><h3><svg><use href="#i-outside"/></svg><b>${Oe()}</b><small>${ke()}</small></h3><div class="formation"></div></section></div><p class="lost" hidden></p></div>`,dn=()=>`<div class="dossier-in"><span class="tag">${vt()}</span><div class="portrait">${b}</div><h3></h3><p class="d-line"><em class="role"></em> <span class="state"></span></p><p class="d-note" hidden></p><dl class="specs"></dl><button class="cmp-link d-close" type="button" data-close="unit" hidden>${S()}</button><div class="d-docs" hidden><h4>${c()}</h4><div class="d-doc-list"></div><p class="d-docs-cut" hidden>${ce()}</p></div><div class="d-drones" hidden><h4>${V()}</h4><div class="formation"></div></div></div>`,fn=()=>`<div class="comms-in"><header class="comms-head"><span class="logo"><svg><use href="#i-comms"/></svg></span><div class="head-id"><h2><small>${B()}</small> <span></span></h2><p></p></div><div class="modes" role="group"><button type="button" data-mode="chat" aria-pressed="true">${B()}</button><button type="button" data-mode="term" aria-pressed="false">${ot()}</button></div><span class="chan link" data-state="live"><i></i><b>${re()}</b></span><button type="button" class="close-x head-close" data-close="unit" hidden>×</button></header><div class="chat-root"></div><div class="queue-list" hidden></div><details class="todos" hidden><summary><b></b><span></span></summary><ol></ol></details><div class="ask-root"></div><div class="composer-root"></div><div class="term-root" hidden></div></div>`;function pn({data:e,restart:t,openTile:n,embedTerminal:r,online:i}){let o=e=>document.getElementById(e),[s,c,l]=[`ws-view`,`session-view`,`dossier`].map(o),u={view:`map`},h,b={},S,k=[],A=!1,j=new Map,M,N,P,F=0,I,L,R=()=>u.view===`map`?``:u.ws,z=(e,t)=>{let n=document.createElement(`a`);return m(n,e),n.textContent=t,n};function ie(){let e=(e,t,n)=>{let r=document.createElement(e);return r.textContent=t,n&&m(r,n),r},t=o(`crumbs`),n=u;if(n.view===`map`)return t.replaceChildren(e(`b`,`Straw Net`),e(`span`,x()));let r=h?.bases.find(e=>e.id===n.ws)?.label??n.ws,i=n.view===`session`?$(h,n.key)?.u.name??M?.name??n.key:``,a=[];for(let e=n.view===`session`?$(h,n.key):void 0,t=0;e?.launcher&&t<8;e=$(h,e.launcher.key),t++)a.unshift(e.launcher);let s=[e(`a`,`Straw Net`,{view:`map`}),n.view===`workspace`?e(`b`,r):e(`a`,r,{view:`workspace`,ws:n.ws}),...a.map(t=>e(`a`,t.name,{view:`session`,ws:n.ws,key:t.key})),...i?[e(`b`,i)]:[]];s.slice(1,-2).forEach(e=>e.classList.add(`mid`));let c=s.length>3?[Object.assign(e(`span`,`…`),{className:`crumb-more`,role:`button`,tabIndex:0,onclick:()=>t.classList.toggle(`open`)})]:[];t.classList.remove(`open`),t.replaceChildren(s[0],...c,...s.slice(1))}function oe(e,t,n){let r=e=>[`map`,`workspace`,`session`].indexOf(e.view),i=r(e)<r(t)?`enter-back`:e.view===`workspace`&&n?`enter-zoom`:e.view===`session`&&t.view!==`session`?`enter-slide`:``,a=o({map:`map`,workspace:`ws-view`,session:`session-view`}[e.view]);if(i){if(n){let e=a.getBoundingClientRect();a.style.setProperty(`--ox`,`${Math.round(n.x+n.width/2-e.x)}px`),a.style.setProperty(`--oy`,`${Math.round(n.y+n.height/2-e.y)}px`)}a.classList.remove(`enter-zoom`,`enter-slide`,`enter-back`),a.offsetWidth,a.classList.add(i),setTimeout(()=>a.classList.remove(i),700)}}function B(){s.firstElementChild||s.append(g(un()));let e=s.firstElementChild,t=h?.bases.find(e=>e.id===R()),n=e.querySelector(`.lost`);if(n.hidden=!!t,n.textContent=h?he():St(),e.classList.toggle(`void`,!t),!t)return;let r=e.querySelector(`.keep`);_(r,t.mark),r.classList.toggle(`head`,t.head);let i=e.querySelector(`.tower`);i.classList.toggle(`ghost`,!t.tower),_(i,t.tower?.mark??`unknown`),m(i,t.tower?{view:`session`,ws:t.id,key:t.tower.key}:void 0),i.toggleAttribute(`hidden`,!1),i.toggleAttribute(`data-alert`,!!(t.tower&&v(t.tower.mark))),y(e,`h2`,t.label),D(e.querySelector(`.spawn-btns button`),t),T(e.querySelector(`header .close-x`),t),y(e,`.title p`,t.tower?d({state:ee[t.tower.mark]()}):f());let a=t.tabs.flatMap(e=>e.units.flatMap(e=>[e,...e.subs]));[t.tabs.length,a.length,a.filter(e=>e.mark===`working`).length,a.filter(e=>e.mark===`waiting`).length].forEach((t,n)=>e.querySelectorAll(`dd`)[n].textContent=String(t));let o=(e,n)=>{_(e,n.mark),cn(e.querySelector(`.token`),n,t.id);let r=e.querySelector(`.say`),i=b[n.key]??``;r.hidden=!i,y(r,`p`,i),w(e.querySelector(`.drones`),n.subs,sn,(e,n)=>(e.classList.add(`drone`),cn(e,n,t.id)))};w(e.querySelector(`.squads`),t.tabs,()=>g(`<section class="tab squad"><h3><i class="flag"></i><b></b><small></small><button type="button" class="tab-add"></button><button type="button" class="close-x" data-close="tab">×</button></h3><div class="formation"></div></section>`),(e,n)=>{T(e.querySelector(`h3 .close-x`),t,n),y(e,`h3 b`,$e({label:n.label})),D(e.querySelector(`.tab-add`),t,n.id);let r=n.units.flatMap(e=>[e,...e.subs]);y(e,`h3 small`,_t({count:r.length})),_(e,[`waiting`,`error`,`working`].find(e=>r.some(t=>t.mark===e))??`idle`),w(e.querySelector(`.formation`),n.units,ln,o)});let c=(n,r)=>{let i=e.querySelector(`[data-group="${n}"]`);i.hidden=!r.length,w(i.querySelector(`.formation`),r,sn,(e,n)=>cn(e,n,t.id))};c(`outposts`,t.outposts.map(e=>({id:e.id,name:e.label,role:`outpost`,mark:e.mark,note:e.mark===`unknown`?p():void 0}))),c(`outside`,t.outside)}function V(){if(u.view!==`session`)return;l.firstElementChild||l.append(g(dn()));let e=l.firstElementChild,t=$(h,u.key),r=t?.u,a=r?.mark??`unknown`;_(e,a),O(e.querySelector(`.plate`),r?.role??M?.role??`member`,a),y(e,`h3`,r?.name??M?.name??u.key),y(e,`.role`,E(r?.role??M?.role??`session`)),y(e,`.state`,r?C(r.note,a):ye());let o=e.querySelector(`.d-note`),s=M?.state;o.hidden=s!==`recent`&&s!==`unknown`,o.replaceChildren(s===`unknown`?xe():be()),M?.successor&&o.append(` ${rt()} `,z({view:`session`,ws:R(),key:M.successor},$(h,M.successor)?.u.name??_e()));let d=[[Je(),N],[Ge(),P?pt({count:P.toLocaleString()}):void 0],[Ke(),M?.header?.cwd],[We(),t&&z({view:`workspace`,ws:t.base.id},t.base.label)],[Ye(),t?.squad],[qe(),t?.launcher&&z({view:`session`,ws:t.base.id,key:t.launcher.key},t.launcher.name)],[Xe(),M?.unreadable?ue({count:M.unreadable}):void 0]];e.querySelector(`.specs`).replaceChildren(...d.filter(([,e])=>e).map(([e,t])=>{let n=g(`<div><dt></dt><dd></dd></div>`);return n.firstElementChild.textContent=e,n.lastElementChild.append(t),n}));let f=u.key,p=r?.name??M?.name??f;c.querySelector(`.modes`)?.toggleAttribute(`hidden`,!r?.control);let m=e.querySelector(`.d-close`);Object.assign(m.dataset,{key:f,name:p,role:r?.role??``}),m.hidden=!r?.control||r.role===`subagent`,an(e.querySelector(`.d-docs`),r?.docs,r?.docsCut,e=>n(tn(p,e))),S?.docs();let b=e.querySelector(`.d-drones`);b.hidden=!r?.subs.length,w(b.querySelector(`.formation`),(r?.subs??[]).map(e=>({...e,id:e.key})),sn,(e,t)=>(e.classList.add(`drone`),cn(e,t,R())));let x=c.querySelector(`.comms-head`);if(x){y(x,`h2 span`,r?.name??M?.name??``),y(x,`p`,[t?.base.label,t?.squad&&$e({label:t.squad})].filter(Boolean).join(` · `));let e=x.querySelector(`.chan`),n=s===`live`||!s&&r;e.dataset.state=n?`live`:`closed`,y(e,`b`,n?re():s===`recent`?ne():ve()),e.title=e.querySelector(`b`).textContent??``;let i=x.querySelector(`.head-close`),a=r?.name??M?.name??u.key;Object.assign(i.dataset,{key:u.key,name:a,role:r?.role??``}),i.setAttribute(`aria-label`,ae({name:a})),i.hidden=!r?.control||r.role===`subagent`}le(M?.todos),ce(r?.queued),S?.setLive(a===`working`?`${C(r.note,a)}`:v(a)?ee[a]():``,a),I?.update({name:r?.name??M?.name??u.key,control:!!r?.control,live:s?s===`live`:!!r,mark:a,online:i(),answerable:!!r?.pending?.answer}),L?.update(r?.pending,a===`waiting`&&!!r?.control&&i())}let H=()=>setTimeout(()=>u.view===`session`&&(document.activeElement??document.body)===document.body&&(matchMedia(`(pointer: fine)`).matches&&I?.ready()?I.box:S?.log)?.focus({preventScroll:!0}));async function se(t){let r=++F,{mountChat:i}=await te(async()=>{let{mountChat:e}=await import(`./chat-BNOjO2Ms.js`);return{mountChat:e}},__vite__mapDeps([0]),import.meta.url);if(r!==F||u.view!==`session`)return;c.replaceChildren(g(fn()));let o=()=>$(h,t)?.u??{key:t,name:M?.name??t,role:M?.role??`member`,mark:`unknown`};S=i(c.querySelector(`.chat-root`),e(t),{who:o,link:e=>{let n=$(h,t)?.u.subs.find(t=>t.name===e)??h?.bases.flatMap(e=>[...e.tabs.flatMap(e=>e.units),...e.outside]).find(t=>t.name===e);return n&&z({view:`session`,ws:$(h,n.key)?.base.id??R(),key:n.key},e)},docFor:(e,r=Xt($(h,t)?.u.docs,M?.header?.cwd,e))=>r&&(()=>n(tn(o().name,r)))});let s=e(t).post??zt(t);[I,L]=[Gt(c.querySelector(`.composer-root`),t,s),a(c.querySelector(`.ask-root`),s,void 0,()=>q(`term`))],c.querySelectorAll(`.modes button`).forEach(e=>e.onclick=()=>q(e.dataset.mode)),G===`term`&&q(`term`),G=void 0,S.reveal(u.at),k.splice(0).forEach(U),V(),H()}function U(e){S?.apply(e);for(let t of e.items??[])t.kind===`assistant`&&([N,P]=[t.model??N,t.ctx??P])}function ce(e){let t=c.querySelector(`.queue-list`);if(!t)return;t.hidden=!e?.length;let n=e=>Object.assign(document.createElement(`b`),{textContent:e.as===`steer`?Pe():Ne()});t.replaceChildren(...(e??[]).map(e=>{let t=document.createElement(`p`);return t.append(n(e),document.createTextNode(e.text)),t}))}function le(e){let t=c.querySelector(`.todos`);if(!t||(t.hidden=!e?.length,!e?.length))return;let n=e.filter(e=>e.status===`completed`).length,r=e.find(e=>e.status===`in_progress`);y(t,`summary b`,lt({done:n,total:e.length})),y(t,`summary span`,r?r.activeForm??r.subject:n===e.length?ut():``),t.querySelector(`ol`).replaceChildren(...e.map(e=>Object.assign(document.createElement(`li`),{textContent:e.subject,className:e.status})))}let W,G,K=0;function q(e){if(u.view!==`session`)return;let t=u.key,n=c.querySelector(`.comms-in`);if(!n)return void(G=e===`term`?`term`:void 0);n.querySelectorAll(`.modes button`).forEach(t=>t.setAttribute(`aria-pressed`,String(t.dataset.mode===e)));for(let t of[`.chat-root`,`.ask-root`,`.composer-root`])n.querySelector(t).hidden=e===`term`;let i=n.querySelector(`.term-root`);if(i.hidden=e!==`term`,n.classList.toggle(`in-term`,e===`term`),W?.(),W=void 0,e!==`term`)return H();let a=++K;r(t,$(h,t)?.u.name??M?.name??t,i).then(e=>a===K&&u.view===`session`&&u.key===t?W=e:e())}let de=()=>(K++,W?.(),W=void 0),J=()=>(ie(),u.view===`workspace`?B():V());return{terminal(e){u.view===`session`&&u.key===e?q(`term`):G=`term`},locate:e=>$(h,e),show(e,t,n){let[r,i]=u.view===`session`?[u.key,u.at]:[];(e.view!==`workspace`||u.view!==`workspace`||e.ws!==u.ws)&&(b={}),u=e,s.hidden=e.view!==`workspace`,c.hidden=l.hidden=e.view!==`session`,(e.view!==`session`||e.key!==r)&&de(),e.view===`session`&&e.key!==r?([S,I,L,M,N,P,k,A]=[void 0,void 0,void 0,void 0,void 0,void 0,[],!1],c.replaceChildren(g(`<p class="lost">${De()}</p>`)),se(e.key)):e.view===`session`&&e.at!==i?(S?.reveal(e.at),H()):e.view!==`session`&&(F++,S=I=L=void 0),J(),e!==t&&oe(e,t,n)},net(e){h=e,nn(e,j,u.view===`session`?u.key:void 0,(e,t)=>n(tn(e,t),!1)),u.view!==`map`&&J()},cards(e){b={...b,...e},u.view===`workspace`&&B()},history(e){if(u.view===`session`&&e.key===u.key){if(M={...M,...e,items:void 0},e.reset&&([N,P]=[void 0,void 0]),document.hidden)return k.length<on?void k.push(e):void(A=!0);S?U(e):k.push(e),V()}},wake(){if(A)return A=!1,k=[],t();k.splice(0).forEach(e=>S&&U(e)),J()}}}export{pn as mountFocus,Mt as n,Nt as t};