pi-straw-boss 0.42.0 → 0.42.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- import{O as e,V as t,y as n}from"./index-CFAsCDlQ.js";var r=((e={},n={})=>(n.locale??t())===`zh-TW`?`另一個答案正在送出;請查看終端機。`:`Another answer is on its way; check the terminal.`),i=((e={},n={})=>(n.locale??t())===`zh-TW`?`請在終端機中回答。`:`Answer it in the terminal.`),a=((e={},n={})=>(n.locale??t())===`zh-TW`?`請在終端機中回答。`:`Answer them in the terminal.`),o=((e={},n={})=>(n.locale??t())===`zh-TW`?`已回答。`:`Answered.`),s=((e={},n={})=>(n.locale??t())===`zh-TW`?`也可以自己輸入答案。`:`It also takes your own words.`),c=((e={},n={})=>(n.locale??t())===`zh-TW`?`可以複選。`:`It takes several choices.`),l=((e={},n={})=>(n.locale??t())===`zh-TW`?`再次確認`:`Check again`),u=((e={},n={})=>(n.locale??t())===`zh-TW`?`選擇`:`Choices`),d=((e={},n={})=>(n.locale??t())===`zh-TW`?`瀏覽器拒絕存取剪貼簿。`:`The browser refused the clipboard.`),f=((e={},n={})=>(n.locale??t())===`zh-TW`?`已複製到這台裝置的剪貼簿。`:`Copied to this device's clipboard.`),p=((e={},n={})=>(n.locale??t())===`zh-TW`?`複製指令`:`Copy command`),m=((e={},n={})=>(n.locale??t())===`zh-TW`?`這個選項有預覽;請在終端機中查看。`:`It has a preview; see it in the terminal.`),h=((e={},n={})=>(n.locale??t())===`zh-TW`?`未確認。請查看終端機。`:`Not confirmed. Check the terminal.`),g=((e={},n={})=>(n.locale??t())===`zh-TW`?`備註`:`Note`),_=((e={},n={})=>(n.locale??t())===`zh-TW`?`備註(選填)`:`Note (optional)`),v=e=>`Opened while ${e?.tool} was running; it may not be about that call.`,y=e=>`在 ${e?.tool} 執行時開啟,不一定與該呼叫有關。`,b=((e,n={})=>(n.locale??t())===`zh-TW`?y(e):v(e)),x=((e={},n={})=>(n.locale??t())===`zh-TW`?`選項`:`Options`),S=((e={},n={})=>(n.locale??t())===`zh-TW`?`另一個答案沒有被採用;這個可以送出。`:`The other answer was not taken; this one can go.`),C=((e={},n={})=>(n.locale??t())===`zh-TW`?`你的答案`:`Your own answer`),w=((e={},n={})=>(n.locale??t())===`zh-TW`?`或自己輸入答案`:`Or type your own answer`),T=((e={},n={})=>(n.locale??t())===`zh-TW`?`問題已變更,請重新閱讀。`:`The question changed; read it again.`),E=((e={},n={})=>(n.locale??t())===`zh-TW`?`session 讀不懂這個答案。`:`The session could not read that answer.`),D=((e={},n={})=>(n.locale??t())===`zh-TW`?`這個答案不符合問題。`:`That answer does not fit the question.`),O=((e={},n={})=>(n.locale??t())===`zh-TW`?`session 拒絕了這個答案。`:`The session refused that answer.`),k=((e={},n={})=>(n.locale??t())===`zh-TW`?`安全考量,遠端不支援輸入機密。請到執行 GUI 的那台電腦的終端機中回答。`:`For security, entering a secret is not supported remotely. Answer it in the terminal on the computer the GUI runs on.`),A=((e={},n={})=>(n.locale??t())===`zh-TW`?`機密內容只能在終端機輸入,這裡不接受。請到執行 GUI 的那台電腦的終端機中回答。`:`A secret is entered in the terminal only, not here. Answer it in the terminal on the computer the GUI runs on.`),j=((e={},n={})=>(n.locale??t())===`zh-TW`?`送出答案`:`Send answer`),M=((e={},n={})=>(n.locale??t())===`zh-TW`?`送出中…`:`Sending…`),N=((e={},n={})=>(n.locale??t())===`zh-TW`?`顯示終端機`:`Show terminal`),P=((e={},n={})=>(n.locale??t())===`zh-TW`?`已在終端機中關閉。`:`It was dismissed in the terminal.`),F=((e={},n={})=>(n.locale??t())===`zh-TW`?`它已不再開啟。`:`It is no longer open.`),I=((e={},n={})=>(n.locale??t())===`zh-TW`?`已在終端機中回答。`:`It was already answered in the terminal.`),L=((e={},n={})=>(n.locale??t())===`zh-TW`?`連不上伺服器。`:`The server could not be reached.`),R=((e={},n={})=>(n.locale??t())===`zh-TW`?`它在等待對話框。`:`It waits on a dialog.`),z={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1};function B(e,t,n,r,i){let{q:a}=n,o=r[a],s=z[e]??0,c=e===`ArrowUp`,l=c||e===`ArrowDown`,u=()=>({to:r.map((e,t)=>({q:(a+1+t)%r.length,part:`opt`})).find(e=>e.q!==a&&!i[e.q])??`send`});if(e===`Tab`)return t?n.part===`opt`&&a>0?{to:{q:a-1,part:`opt`}}:void 0:a<r.length-1?{to:{q:a+1,part:`opt`}}:void 0;if(!t){if(n.part===`opt`){let t=n.o+s;if(s)return t>=0&&t<o.options?{to:{q:a,part:`opt`,o:t},...o.multiple?{}:{pick:t}}:{to:s>0&&o.own?{q:a,part:`own`}:n};if(e===`Enter`||e===` `&&!o.multiple)return{...u(),...o.multiple?{}:{pick:n.o}}}else if(n.part===`own`){if(e===`Enter`)return u();if(l)return{to:c?{q:a,part:`opt`,o:o.options-1}:{q:a,part:`note`}}}else if(c)return{to:{q:a,part:`own`}}}}function V(e,t,n){let r=e=>Math.max(0,e.opts.findIndex(e=>e.getAttribute(`aria-checked`)===`true`)),i=(e,t)=>e.opts.forEach((e,n)=>e.setAttribute(`tabindex`,n===t?`0`:`-1`)),a=e=>{for(let[n,r]of t.entries()){let t=r.opts.indexOf(e);if(t>=0)return{q:n,part:`opt`,o:t};if(e===r.own||e===r.note)return{q:n,part:e===r.own?`own`:`note`}}};t.forEach(e=>i(e,r(e)));let o=e=>{let n=a(e.target);n?.part===`opt`&&i(t[n.q],n.o)};e.addEventListener(`focusin`,o),e.addEventListener(`click`,o);let s=!1;return e.addEventListener(`keydown`,e=>{let i=a(e.target);if(!i||e.ctrlKey||e.altKey||e.metaKey||e.isComposing)return;let o=e.target;if(i.part!==`opt`&&(e.key===`ArrowUp`?o.selectionStart!==0:e.key===`ArrowDown`&&o.selectionEnd!==o.value.length))return;let c=B(e.key,e.shiftKey,i,t.map(e=>({options:e.opts.length,multiple:e.multiple,own:!!e.own})),t.map(e=>e.answered()));if(!c||(e.preventDefault(),e.repeat&&[`Enter`,` `].includes(e.key)))return;if(s=e.key===` `,c.pick!==void 0){let e=t[i.q].opts[c.pick];e.getAttribute(`aria-checked`)!==`true`&&e.click()}let l=c.to===`send`?void 0:t[c.to.q],u=c.to===`send`?n():c.to.part===`opt`?l.opts[c.to.o??r(l)]:c.to.part===`own`?l.own:l.note;u&&!u.disabled&&u.focus()}),e.addEventListener(`keyup`,e=>s&&e.key===` `&&(s=!1,e.preventDefault())),()=>t[0]?.opts[r(t[0])]}var H=e=>e.multiple?c():e.freeform&&e.options.length?s():``,U=(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":x()},...e.options.map(e=>n(`li`,{class:`ask-opt`},n(`b`,null,e.title),e.description&&n(`small`,null,e.description)))),t&&H(e)&&n(`small`,{class:`ask-how`},H(e))),W=e=>e.replace(/[\u0000-\u0008\u000b-\u001f\u007f-\u009f\p{Cf}]/gu,`�`),G=e=>(e.select?.choices??[]).map((e,t)=>({...e,i:t})),K=(e,t,n)=>({...e.size?{choices:[...e].sort((e,t)=>e-t)}:{},...t.trim()?{text:t}:{},...n.trim()?{note:n}:{}}),q=(e,t,n)=>({dialog:e.dialog,digest:e.digest,answerId:n,...t}),J={digest:T,"not-allowed":D,malformed:E};function Y(t){let{outcome:n,reason:i,by:a}=t.body;return n===`accepted`?[`ok`,o()]:n===`stale`?[`error`,a===`local`?I():a===`cancel`?P():F()]:n===`rejected`?[`error`,(Object.hasOwn(J,String(i))?J[String(i)]:O)()]:n===`busy`?[`error`,r()]:n===`unknown`||t.status===504?[`error`,h(),!0]:[`error`,i??e({status:t.status})]}var X=e=>[`accepted`,`stale`,`busy`,`unknown`].includes(String(e.body.outcome))||e.status===504,Z=e=>e.answer?`d\n${e.answer.dialog}\n${e.answer.digest}`:`c\n${e.callId}\n${e.why??``}`;function Q(e,t,r=location.hostname!==`127.0.0.1`,o,s){let c,v,y,T=!1,E=!1,D;for(let e of[`focusin`,`pointerdown`])document.addEventListener(e,e=>v&&!v.el.contains(e.target)&&(v.lost=void 0));let O=(e,t,n,...r)=>(e.dataset.tone=t,e.replaceChildren(n,...r)),P=()=>{if(!v)return;let e=document.activeElement;e&&e!==document.body&&e!==v.lost&&(v.lost=void 0),v.controls.forEach(e=>e.disabled=!T||E||v.done),v.send&&(v.send.disabled=!T||E||v.done||!v.pick()),e&&v.el.contains(e)&&e.disabled&&(v.lost=e);let t=v.lost;t&&!t.disabled&&v.el.contains(t)&&(!document.activeElement||document.activeElement===document.body)&&(t.focus(),v.lost=void 0)};async function F(e,r){[e.sending,E,e.spell]=[!0,!0,!1],P(),O(e.note,``,M());let i=await t(`answer`,r).catch(()=>void 0),a=n(`button`,{type:`button`,class:`cmp-link`},l());a.onclick=()=>void F(e,r);let[o,c,u]=i?Y(i):[`error`,h(),!0];[e.done,e.sending,E,e.busy]=[!i||X(i),!1,!1,i?.body.outcome===`busy`],O(e.note,o,c,...u?[a]:[]),P(),e.note.scrollIntoView?.({block:`nearest`}),s&&i?.body.outcome===`accepted`&&setTimeout(s,1200)}let I=(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 L(e,t){let r,i=G(t).map(e=>I(`radio`,W(e.label),[e.note&&W(e.note)],()=>(r=e.i,i.forEach((n,r)=>n.setAttribute(`aria-checked`,String(G(t)[r].i===e.i))),P()),e.i+1)),a=t.select?.copy!==void 0&&n(`button`,{type:`button`,class:`cmp-link`},p());return a&&(a.disabled=!navigator.clipboard,a.onclick=()=>void navigator.clipboard.writeText(t.select.copy).then(()=>O(e.note,`ok`,f()),()=>O(e.note,`error`,d()))),e.pick=()=>r===void 0?void 0:{choice:r},e.first=V(e.el,[{opts:i,multiple:!1,answered:()=>r!==void 0}],()=>e.send),e.controls=i,[n(`pre`,{class:`ask-title`},W(t.select.title)),n(`div`,{class:`ask-opts`,role:`radiogroup`,"aria-label":u()},...i),n(`div`,{class:`ask-acts`},e.send,a)]}function z(e,t){let r=t.questions.map(()=>({picks:new Set,text:n(`textarea`,{rows:`1`,maxlength:`8192`,class:`ask-own`,placeholder:w(),"aria-label":C()}),note:n(`input`,{type:`text`,maxlength:`2048`,class:`ask-own ask-memo`,placeholder:_(),"aria-label":g()})})),i=[],a=t.questions.map((t,a)=>{let o=r[a],s=t.multiple?`checkbox`:`radio`,c=t.options.map((e,n)=>I(s,e.title,[e.description,e.preview&&m()],()=>{t.multiple||(o.picks.clear(),o.text.value=``),o.picks.has(n)?o.picks.delete(n):o.picks.add(n),c.forEach((e,t)=>e.setAttribute(`aria-checked`,String(o.picks.has(t)))),P()}));return o.text.oninput=()=>(t.multiple||(o.picks.clear(),c.forEach(e=>e.setAttribute(`aria-checked`,`false`))),P()),e.controls.push(...c,o.text,o.note),i.push({opts:c,multiple:!!t.multiple,own:o.text,note:o.note,answered:()=>o.picks.size>0||o.text.value.trim()!==``}),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":x()},...c),o.text,o.note)});return e.pick=()=>r.every(e=>e.picks.size||e.text.value.trim())?{answers:r.map(e=>K(e.picks,e.text.value,e.note.value))}:void 0,e.first=V(e.el,i,()=>e.send),[...a,n(`div`,{class:`ask-acts`},e.send)]}function B(e){let t=e.asks??(e.ask?[e.ask]:[]),s=t.length>1,c=e.answer,l={key:Z(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};c&&((l.send=n(`button`,{type:`button`,class:`ask-send`},j())).onclick=()=>void(l.pick()&&F(l,q(c,l.pick(),crypto.randomUUID()))));let u=e.tool===`secret_drop`,d=n(`p`,{class:`ask-term`},e.why&&t.length?e.why:`${s?a():i()} ${s||!t[0]?``:H(t[0])}`.trim()),f=o&&e.tool!==`secret_drop`&&n(`button`,{type:`button`,class:`cmp-link`},N());f&&(f.onclick=o);let p=e.answer?.twin&&e.tool&&e.tool!==`dialog`?[n(`p`,{class:`ask-why`},b({tool:e.tool}))]:[];return l.el.append(...p,...c&&!u?c.select?L(l,c):z(l,c):[...t.length?t.map(e=>U(e,s)):[n(`p`,{class:`ask-why`},u?r?k():A():e.why??R())],n(`div`,{class:`ask-acts`},u?n(`p`,{class:`ask-term`},i()):d,f)],l.note),l}let J=(t,n)=>{let r=document.activeElement;v&&v!==n&&(v.focus=v.el.contains(r)?r:void 0),[c,v,y]=[t,n,n?.send?n:y],e.replaceChildren(...n?[n.el]:[]),P(),n?.focus&&(!document.activeElement||document.activeElement===document.body)&&n.focus.focus()};return{enter(){let e=v&&!v.done?v.first?.():void 0;return!!(e&&!e.disabled&&(e.focus(),1))},update(e,t){T=t,e&&(D=void clearTimeout(D)),!e&&(v?.done||v?.sending)?D??=setTimeout(()=>(D=void 0,J()),6e3):e?v&&(Z(e)===v.key||!e.answer&&(v.done||v.sending)&&e.callId===c?.callId)?((v.busy||v.sending)&&!e.answer?v.spell=!0:v.busy&&v.spell&&e.answer&&([v.done,v.busy]=[!1,!1],O(v.note,``,S())),c=e):J(e,y?.key===Z(e)&&!y.done?y:B(e)):J(),P()}}}export{L as n,M as r,Q as t};
1
+ import{O as e,V as t,y as n}from"./index-Cb_IMdLG.js";var r=((e={},n={})=>(n.locale??t())===`zh-TW`?`另一個答案正在送出;請查看終端機。`:`Another answer is on its way; check the terminal.`),i=((e={},n={})=>(n.locale??t())===`zh-TW`?`請在終端機中回答。`:`Answer it in the terminal.`),a=((e={},n={})=>(n.locale??t())===`zh-TW`?`請在終端機中回答。`:`Answer them in the terminal.`),o=((e={},n={})=>(n.locale??t())===`zh-TW`?`已回答。`:`Answered.`),s=((e={},n={})=>(n.locale??t())===`zh-TW`?`也可以自己輸入答案。`:`It also takes your own words.`),c=((e={},n={})=>(n.locale??t())===`zh-TW`?`可以複選。`:`It takes several choices.`),l=((e={},n={})=>(n.locale??t())===`zh-TW`?`再次確認`:`Check again`),u=((e={},n={})=>(n.locale??t())===`zh-TW`?`選擇`:`Choices`),d=((e={},n={})=>(n.locale??t())===`zh-TW`?`瀏覽器拒絕存取剪貼簿。`:`The browser refused the clipboard.`),f=((e={},n={})=>(n.locale??t())===`zh-TW`?`已複製到這台裝置的剪貼簿。`:`Copied to this device's clipboard.`),p=((e={},n={})=>(n.locale??t())===`zh-TW`?`複製指令`:`Copy command`),m=((e={},n={})=>(n.locale??t())===`zh-TW`?`這個選項有預覽;請在終端機中查看。`:`It has a preview; see it in the terminal.`),h=((e={},n={})=>(n.locale??t())===`zh-TW`?`未確認。請查看終端機。`:`Not confirmed. Check the terminal.`),g=((e={},n={})=>(n.locale??t())===`zh-TW`?`備註`:`Note`),_=((e={},n={})=>(n.locale??t())===`zh-TW`?`備註(選填)`:`Note (optional)`),v=e=>`Opened while ${e?.tool} was running; it may not be about that call.`,y=e=>`在 ${e?.tool} 執行時開啟,不一定與該呼叫有關。`,b=((e,n={})=>(n.locale??t())===`zh-TW`?y(e):v(e)),x=((e={},n={})=>(n.locale??t())===`zh-TW`?`選項`:`Options`),S=((e={},n={})=>(n.locale??t())===`zh-TW`?`另一個答案沒有被採用;這個可以送出。`:`The other answer was not taken; this one can go.`),C=((e={},n={})=>(n.locale??t())===`zh-TW`?`你的答案`:`Your own answer`),w=((e={},n={})=>(n.locale??t())===`zh-TW`?`或自己輸入答案`:`Or type your own answer`),T=((e={},n={})=>(n.locale??t())===`zh-TW`?`問題已變更,請重新閱讀。`:`The question changed; read it again.`),E=((e={},n={})=>(n.locale??t())===`zh-TW`?`session 讀不懂這個答案。`:`The session could not read that answer.`),D=((e={},n={})=>(n.locale??t())===`zh-TW`?`這個答案不符合問題。`:`That answer does not fit the question.`),O=((e={},n={})=>(n.locale??t())===`zh-TW`?`session 拒絕了這個答案。`:`The session refused that answer.`),k=((e={},n={})=>(n.locale??t())===`zh-TW`?`安全考量,遠端不支援輸入機密。請到執行 GUI 的那台電腦的終端機中回答。`:`For security, entering a secret is not supported remotely. Answer it in the terminal on the computer the GUI runs on.`),A=((e={},n={})=>(n.locale??t())===`zh-TW`?`機密內容只能在終端機輸入,這裡不接受。請到執行 GUI 的那台電腦的終端機中回答。`:`A secret is entered in the terminal only, not here. Answer it in the terminal on the computer the GUI runs on.`),j=((e={},n={})=>(n.locale??t())===`zh-TW`?`送出答案`:`Send answer`),M=((e={},n={})=>(n.locale??t())===`zh-TW`?`送出中…`:`Sending…`),N=((e={},n={})=>(n.locale??t())===`zh-TW`?`顯示終端機`:`Show terminal`),P=((e={},n={})=>(n.locale??t())===`zh-TW`?`已在終端機中關閉。`:`It was dismissed in the terminal.`),F=((e={},n={})=>(n.locale??t())===`zh-TW`?`它已不再開啟。`:`It is no longer open.`),I=((e={},n={})=>(n.locale??t())===`zh-TW`?`已在終端機中回答。`:`It was already answered in the terminal.`),L=((e={},n={})=>(n.locale??t())===`zh-TW`?`連不上伺服器。`:`The server could not be reached.`),R=((e={},n={})=>(n.locale??t())===`zh-TW`?`它在等待對話框。`:`It waits on a dialog.`),z={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1};function B(e,t,n,r,i){let{q:a}=n,o=r[a],s=z[e]??0,c=e===`ArrowUp`,l=c||e===`ArrowDown`,u=()=>({to:r.map((e,t)=>({q:(a+1+t)%r.length,part:`opt`})).find(e=>e.q!==a&&!i[e.q])??`send`});if(e===`Tab`)return t?n.part===`opt`&&a>0?{to:{q:a-1,part:`opt`}}:void 0:a<r.length-1?{to:{q:a+1,part:`opt`}}:void 0;if(!t){if(n.part===`opt`){let t=n.o+s;if(s)return t>=0&&t<o.options?{to:{q:a,part:`opt`,o:t},...o.multiple?{}:{pick:t}}:{to:s>0&&o.own?{q:a,part:`own`}:n};if(e===`Enter`||e===` `&&!o.multiple)return{...u(),...o.multiple?{}:{pick:n.o}}}else if(n.part===`own`){if(e===`Enter`)return u();if(l)return{to:c?{q:a,part:`opt`,o:o.options-1}:{q:a,part:`note`}}}else if(c)return{to:{q:a,part:`own`}}}}function V(e,t,n){let r=e=>Math.max(0,e.opts.findIndex(e=>e.getAttribute(`aria-checked`)===`true`)),i=(e,t)=>e.opts.forEach((e,n)=>e.setAttribute(`tabindex`,n===t?`0`:`-1`)),a=e=>{for(let[n,r]of t.entries()){let t=r.opts.indexOf(e);if(t>=0)return{q:n,part:`opt`,o:t};if(e===r.own||e===r.note)return{q:n,part:e===r.own?`own`:`note`}}};t.forEach(e=>i(e,r(e)));let o=e=>{let n=a(e.target);n?.part===`opt`&&i(t[n.q],n.o)};e.addEventListener(`focusin`,o),e.addEventListener(`click`,o);let s=!1;return e.addEventListener(`keydown`,e=>{let i=a(e.target);if(!i||e.ctrlKey||e.altKey||e.metaKey||e.isComposing)return;let o=e.target;if(i.part!==`opt`&&(e.key===`ArrowUp`?o.selectionStart!==0:e.key===`ArrowDown`&&o.selectionEnd!==o.value.length))return;let c=B(e.key,e.shiftKey,i,t.map(e=>({options:e.opts.length,multiple:e.multiple,own:!!e.own})),t.map(e=>e.answered()));if(!c||(e.preventDefault(),e.repeat&&[`Enter`,` `].includes(e.key)))return;if(s=e.key===` `,c.pick!==void 0){let e=t[i.q].opts[c.pick];e.getAttribute(`aria-checked`)!==`true`&&e.click()}let l=c.to===`send`?void 0:t[c.to.q],u=c.to===`send`?n():c.to.part===`opt`?l.opts[c.to.o??r(l)]:c.to.part===`own`?l.own:l.note;u&&!u.disabled&&u.focus()}),e.addEventListener(`keyup`,e=>s&&e.key===` `&&(s=!1,e.preventDefault())),()=>t[0]?.opts[r(t[0])]}var H=e=>e.multiple?c():e.freeform&&e.options.length?s():``,U=(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":x()},...e.options.map(e=>n(`li`,{class:`ask-opt`},n(`b`,null,e.title),e.description&&n(`small`,null,e.description)))),t&&H(e)&&n(`small`,{class:`ask-how`},H(e))),W=e=>e.replace(/[\u0000-\u0008\u000b-\u001f\u007f-\u009f\p{Cf}]/gu,`�`),G=e=>(e.select?.choices??[]).map((e,t)=>({...e,i:t})),K=(e,t,n)=>({...e.size?{choices:[...e].sort((e,t)=>e-t)}:{},...t.trim()?{text:t}:{},...n.trim()?{note:n}:{}}),q=(e,t,n)=>({dialog:e.dialog,digest:e.digest,answerId:n,...t}),J={digest:T,"not-allowed":D,malformed:E};function Y(t){let{outcome:n,reason:i,by:a}=t.body;return n===`accepted`?[`ok`,o()]:n===`stale`?[`error`,a===`local`?I():a===`cancel`?P():F()]:n===`rejected`?[`error`,(Object.hasOwn(J,String(i))?J[String(i)]:O)()]:n===`busy`?[`error`,r()]:n===`unknown`||t.status===504?[`error`,h(),!0]:[`error`,i??e({status:t.status})]}var X=e=>[`accepted`,`stale`,`busy`,`unknown`].includes(String(e.body.outcome))||e.status===504,Z=e=>e.answer?`d\n${e.answer.dialog}\n${e.answer.digest}`:`c\n${e.callId}\n${e.why??``}`;function Q(e,t,r=location.hostname!==`127.0.0.1`,o,s){let c,v,y,T=!1,E=!1,D;for(let e of[`focusin`,`pointerdown`])document.addEventListener(e,e=>v&&!v.el.contains(e.target)&&(v.lost=void 0));let O=(e,t,n,...r)=>(e.dataset.tone=t,e.replaceChildren(n,...r)),P=()=>{if(!v)return;let e=document.activeElement;e&&e!==document.body&&e!==v.lost&&(v.lost=void 0),v.controls.forEach(e=>e.disabled=!T||E||v.done),v.send&&(v.send.disabled=!T||E||v.done||!v.pick()),e&&v.el.contains(e)&&e.disabled&&(v.lost=e);let t=v.lost;t&&!t.disabled&&v.el.contains(t)&&(!document.activeElement||document.activeElement===document.body)&&(t.focus(),v.lost=void 0)};async function F(e,r){[e.sending,E,e.spell]=[!0,!0,!1],P(),O(e.note,``,M());let i=await t(`answer`,r).catch(()=>void 0),a=n(`button`,{type:`button`,class:`cmp-link`},l());a.onclick=()=>void F(e,r);let[o,c,u]=i?Y(i):[`error`,h(),!0];[e.done,e.sending,E,e.busy]=[!i||X(i),!1,!1,i?.body.outcome===`busy`],O(e.note,o,c,...u?[a]:[]),P(),e.note.scrollIntoView?.({block:`nearest`}),s&&i?.body.outcome===`accepted`&&setTimeout(s,1200)}let I=(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 L(e,t){let r,i=G(t).map(e=>I(`radio`,W(e.label),[e.note&&W(e.note)],()=>(r=e.i,i.forEach((n,r)=>n.setAttribute(`aria-checked`,String(G(t)[r].i===e.i))),P()),e.i+1)),a=t.select?.copy!==void 0&&n(`button`,{type:`button`,class:`cmp-link`},p());return a&&(a.disabled=!navigator.clipboard,a.onclick=()=>void navigator.clipboard.writeText(t.select.copy).then(()=>O(e.note,`ok`,f()),()=>O(e.note,`error`,d()))),e.pick=()=>r===void 0?void 0:{choice:r},e.first=V(e.el,[{opts:i,multiple:!1,answered:()=>r!==void 0}],()=>e.send),e.controls=i,[n(`pre`,{class:`ask-title`},W(t.select.title)),n(`div`,{class:`ask-opts`,role:`radiogroup`,"aria-label":u()},...i),n(`div`,{class:`ask-acts`},e.send,a)]}function z(e,t){let r=t.questions.map(()=>({picks:new Set,text:n(`textarea`,{rows:`1`,maxlength:`8192`,class:`ask-own`,placeholder:w(),"aria-label":C()}),note:n(`input`,{type:`text`,maxlength:`2048`,class:`ask-own ask-memo`,placeholder:_(),"aria-label":g()})})),i=[],a=t.questions.map((t,a)=>{let o=r[a],s=t.multiple?`checkbox`:`radio`,c=t.options.map((e,n)=>I(s,e.title,[e.description,e.preview&&m()],()=>{t.multiple||(o.picks.clear(),o.text.value=``),o.picks.has(n)?o.picks.delete(n):o.picks.add(n),c.forEach((e,t)=>e.setAttribute(`aria-checked`,String(o.picks.has(t)))),P()}));return o.text.oninput=()=>(t.multiple||(o.picks.clear(),c.forEach(e=>e.setAttribute(`aria-checked`,`false`))),P()),e.controls.push(...c,o.text,o.note),i.push({opts:c,multiple:!!t.multiple,own:o.text,note:o.note,answered:()=>o.picks.size>0||o.text.value.trim()!==``}),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":x()},...c),o.text,o.note)});return e.pick=()=>r.every(e=>e.picks.size||e.text.value.trim())?{answers:r.map(e=>K(e.picks,e.text.value,e.note.value))}:void 0,e.first=V(e.el,i,()=>e.send),[...a,n(`div`,{class:`ask-acts`},e.send)]}function B(e){let t=e.asks??(e.ask?[e.ask]:[]),s=t.length>1,c=e.answer,l={key:Z(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};c&&((l.send=n(`button`,{type:`button`,class:`ask-send`},j())).onclick=()=>void(l.pick()&&F(l,q(c,l.pick(),crypto.randomUUID()))));let u=e.tool===`secret_drop`,d=n(`p`,{class:`ask-term`},e.why&&t.length?e.why:`${s?a():i()} ${s||!t[0]?``:H(t[0])}`.trim()),f=o&&e.tool!==`secret_drop`&&n(`button`,{type:`button`,class:`cmp-link`},N());f&&(f.onclick=o);let p=e.answer?.twin&&e.tool&&e.tool!==`dialog`?[n(`p`,{class:`ask-why`},b({tool:e.tool}))]:[];return l.el.append(...p,...c&&!u?c.select?L(l,c):z(l,c):[...t.length?t.map(e=>U(e,s)):[n(`p`,{class:`ask-why`},u?r?k():A():e.why??R())],n(`div`,{class:`ask-acts`},u?n(`p`,{class:`ask-term`},i()):d,f)],l.note),l}let J=(t,n)=>{let r=document.activeElement;v&&v!==n&&(v.focus=v.el.contains(r)?r:void 0),[c,v,y]=[t,n,n?.send?n:y],e.replaceChildren(...n?[n.el]:[]),P(),n?.focus&&(!document.activeElement||document.activeElement===document.body)&&n.focus.focus()};return{enter(){let e=v&&!v.done?v.first?.():void 0;return!!(e&&!e.disabled&&(e.focus(),1))},update(e,t){T=t,e&&(D=void clearTimeout(D)),!e&&(v?.done||v?.sending)?D??=setTimeout(()=>(D=void 0,J()),6e3):e?v&&(Z(e)===v.key||!e.answer&&(v.done||v.sending)&&e.callId===c?.callId)?((v.busy||v.sending)&&!e.answer?v.spell=!0:v.busy&&v.spell&&e.answer&&([v.done,v.busy]=[!1,!1],O(v.note,``,S())),c=e):J(e,y?.key===Z(e)&&!y.done?y:B(e)):J(),P()}}}export{L as n,M as r,Q as t};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-AWY1DjQH.css"])))=>i.map(i=>d[i]);
2
- import{V as e,d as t,n,v as r,x as i,y as a}from"./index-CFAsCDlQ.js";import{n as o,t as s}from"./views-CyDMiewB.js";var c=((t={},n={})=>(n.locale??e())===`zh-TW`?`分支摘要`:`branch summary`),l=((t={},n={})=>(n.locale??e())===`zh-TW`?`通訊紀錄`:`Comms log`),u=e=>`context compacted · ${e?.tokens} tokens summarized`,d=e=>`上下文已壓縮 · 摘要了 ${e?.tokens} tokens`,f=((t,n={})=>(n.locale??e())===`zh-TW`?d(t):u(t)),ee=((t={},n={})=>(n.locale??e())===`zh-TW`?`…(於 1 MB 截斷)`:`… (cut at 1 MB)`),p=e=>`exit ${e?.code}`,m=e=>`結束碼 ${e?.code}`,te=((t,n={})=>(n.locale??e())===`zh-TW`?m(t):p(t)),h=e=>`Image ${e?.n}`,g=e=>`圖片 ${e?.n}`,_=((t,n={})=>(n.locale??e())===`zh-TW`?g(t):h(t)),v=((t={},n={})=>(n.locale??e())===`zh-TW`?`圖片無法讀取`:`Image unavailable`),y=e=>`${e?.count} image(s)`,b=e=>`${e?.count} 張圖片`,ne=((t,n={})=>(n.locale??e())===`zh-TW`?b(t):y(t)),re=((t={},n={})=>(n.locale??e())===`zh-TW`?`收到`:`incoming`),x=((t={},n={})=>(n.locale??e())===`zh-TW`?`跳到最新`:`jump to latest`),S=e=>`${e?.count} new`,C=e=>`${e?.count} 則新訊息`,w=((t,n={})=>(n.locale??e())===`zh-TW`?C(t):S(t)),T=((t={},n={})=>(n.locale??e())===`zh-TW`?`還沒有通訊。`:`No transmissions yet.`),ie=((t={},n={})=>(n.locale??e())===`zh-TW`?`通知`:`notice`),E=((t={},n={})=>(n.locale??e())===`zh-TW`?`表單回覆`:`form answers`),D=((t={},n={})=>(n.locale??e())===`zh-TW`?`訊息,來自`:`message from`),O=((t={},n={})=>(n.locale??e())===`zh-TW`?`記憶`:`memory`),k=((t={},n={})=>(n.locale??e())===`zh-TW`?`監看`:`monitor`),A=((t={},n={})=>(n.locale??e())===`zh-TW`?`提問,來自`:`question from`),j=((t={},n={})=>(n.locale??e())===`zh-TW`?`回報,來自`:`report from`),M=((t={},n={})=>(n.locale??e())===`zh-TW`?`狀態:`:`status of`),ae=((t={},n={})=>(n.locale??e())===`zh-TW`?`在旁開啟`:`open beside`),N=e=>`Open image ${e?.n}`,P=e=>`打開圖片 ${e?.n}`,oe=((t,n={})=>(n.locale??e())===`zh-TW`?P(t):N(t)),F=e=>`show all (${e?.size})`,I=e=>`顯示全部(${e?.size})`,L=((t,n={})=>(n.locale??e())===`zh-TW`?I(t):F(t)),R=((t={},n={})=>(n.locale??e())===`zh-TW`?`顯示全部參數`:`show all arguments`),z=e=>`◇ thought · ${e?.count} chars`,B=e=>`◇ 思考 · ${e?.count} 字元`,se=((t,n={})=>(n.locale??e())===`zh-TW`?B(t):z(t)),ce=((t={},n={})=>(n.locale??e())===`zh-TW`?`◇ 思考 · 已遮蔽`:`◇ thought · redacted`),V=((t={},n={})=>(n.locale??e())===`zh-TW`?`無法取得`:`unavailable`),le=((t={},n={})=>(n.locale??e())===`zh-TW`?`你`:`you`);function ue(){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?w({count:t}):x()}}async function de(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 fe(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 pe=e=>e?new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,hour12:!1}):``,me=e=>e>=1024?`${(e/1024).toFixed(e>=10240?0:1)} KB`:`${e} B`,he={intercom_message:D,subagent_result:j,subagent_ping:A,subagent_status:M,"pi-loop-monitor":k,"memory-context":O,"doc-review":E},H=e=>{let r=t(`<span class="ava"><svg><use/></svg></span>`);return r.querySelector(`use`).setAttribute(`href`,`#i-${n[e]??e}`),r};function ge(e){let t=[],n=0;for(let r of e.matchAll(/https?:\/\/[^\s<>)\]]+/g))t.push(e.slice(n,r.index),a(`a`,{href:r[0],rel:`noopener noreferrer`,target:`_blank`},r[0])),n=r.index+r[0].length;return[...t,e.slice(n)]}function U(e,t,{who:n,link:u,docFor:d}){let p=fe(),m=new Map,h=new Set,g=()=>h.forEach(e=>e.button.isConnected?(e.shown=!0,e.button.hidden=!e.paths.some(e=>d?.(e))):e.shown&&h.delete(e)),y=a(`div`,{class:`chat-list`}),b=a(`div`,{class:`chat-top`}),x=a(`div`,{class:`chat-live`}),S=a(`div`,{class:`chat-end`}),C=a(`button`,{class:`chat-pill`,type:`button`,hidden:``}),w=a(`p`,{class:`chat-empty`},T()),E=a(`div`,{class:`chat-scroll`,tabindex:`-1`,"aria-label":l()},b,y,x,S);e.replaceChildren(E,C);let D=ue(),O=!1,k=!1,A,j,M=0,N=!1,P,F=()=>N||P!==void 0,I=()=>(clearTimeout(P),P=setTimeout(()=>(P=void 0,D.pinned&&!p.detached&&B()),250)),z=(e=D.button(p.detached))=>(C.hidden=!e,C.textContent=e??``),B=()=>(D.jump(),j=void 0,E.scrollTop=E.scrollHeight,z());async function U(e){O=!0;let n=await de(p,t,e,e=>(J(e),Y(e))).finally(()=>O=!1),r=m.get(e);if(A===e){if(!n||!r)return B();D.hold(),j=r,r.scrollIntoView({block:`center`}),i(r,`lit`),clearTimeout(M),M=window.setTimeout(()=>(j=void 0,r.classList.remove(`lit`)),2e3),z()}}let W=()=>A?void U(A):B(),G=(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=V());n.textContent=r,e.remove()},()=>e.textContent=V())};function K(e,n=0){if(!n||!t.pic)return null;let i=Array.from({length:n},(n,r)=>t.pic(e,r));return a(`div`,{class:`pics`},...i.map((e,t)=>{let n=a(`img`,{src:e,alt:_({n:t+1}),loading:`lazy`,decoding:`async`}),o=a(`button`,{type:`button`,class:`pic`,"aria-label":oe({n:t+1})},n);return n.addEventListener(`error`,()=>o.replaceWith(a(`em`,{class:`pic-gone`},v()))),o.addEventListener(`click`,()=>void r(async()=>{let{lightbox:e}=await import(`./lightbox-CQ_3lyqY.js`);return{lightbox:e}},__vite__mapDeps([0]),import.meta.url).then(({lightbox:e})=>e(i,t))),o}))}function _e(e,t){let n=p.result(e.id),r=a(`pre`,{class:`out`},n?.text??``),i=a(`pre`,{class:`args`},e.args??``),o=e.cut?a(`button`,{class:`more`,type:`button`},R()):null;o?.addEventListener(`click`,()=>G(o,i,t,t=>(e=>e&&`${e.args??``}${e.cut?`\n${ee()}`:``}`)(t.tools?.find(t=>t.id===e.id))));let s=n?.more?a(`button`,{class:`more`,type:`button`},L({size:me(n.bytes??0)})):null;s?.addEventListener(`click`,()=>G(s,r,n.id,e=>e.text));let c=e.name===`show_doc`&&d?a(`button`,{class:`more open`,type:`button`,hidden:``},ae()):null;c?.addEventListener(`click`,t=>(t.preventDefault(),e.summary.split(`, `).forEach(e=>d?.(e)?.()))),c&&h.add({paths:e.summary.split(`, `),button:c}),c&&queueMicrotask(g);let l=a(`details`,{class:`act`},a(`summary`,{"data-mark":n?n.isError?`error`:`done`:`working`},a(`b`,{class:`badge`}),a(`code`,null,e.name),a(`span`,{class:`sum`},e.summary),c),i,o,n&&a(`div`,{class:`result`},n.images?a(`em`,null,ne({count:n.images})):null,r,s)),u=n&&K(n.id,n.images);return u?[l,u]:[l]}function q(e){let t=a(`time`,null,pe(e.at));switch(e.kind){case`user`:return a(`article`,{class:`tx you`},a(`header`,null,t,a(`b`,null,le()),H(`user`)),a(`div`,{class:`bubble`},...ge(e.text??``),K(e.id,e.images)));case`assistant`:{let r=n(),i=a(`pre`,{class:`thought-text`}),c=e.thought?a(`button`,{class:`thought`,type:`button`},e.thought<0?ce():se({count:e.thought.toLocaleString()})):null;return e.thought&&e.thought>0&&c?.addEventListener(`click`,()=>G(c,i,e.id,e=>e.thoughtText)),a(`article`,{class:`tx in`},H(r.role),a(`div`,{class:`tx-body`},a(`header`,null,a(`b`,null,r.name),e.model?a(`span`,null,e.model):null,t,e.stop?a(`span`,{class:`stop`,"data-mark":`error`},e.stop):null),c,i,e.text?a(`div`,{class:`md`},s(o(e.text))):null,e.error?a(`p`,{class:`fault`},e.error):null,...(e.tools??[]).flatMap(t=>_e(t,e.id))))}case`bash`:return a(`article`,{class:`tx sys`},a(`details`,{class:`act`},a(`summary`,{"data-mark":e.exit?`error`:`done`},a(`b`,{class:`badge`}),a(`code`,null,`shell`),a(`span`,{class:`sum`},`! ${e.command}`),e.exit?a(`span`,{class:`stop`,"data-mark":`error`},te({code:e.exit})):null),e.text?a(`pre`,{class:`out`},e.text):null));case`notice`:return a(`article`,{class:`tx sys`},a(`details`,{class:`notice`},a(`summary`,null,H(`comms`),a(`em`,null,re()),he[e.type??``]?.()??e.type??ie(),` `,e.from&&u(e.from)||(e.from??``),t),a(`pre`,null,e.text??``)));case`divider`:return a(`article`,{class:`tx rule`},a(`details`,null,a(`summary`,null,e.type===`compaction`?f({tokens:(e.tokens??0).toLocaleString()}):c()),a(`pre`,null,e.text??``)));default:return a(`article`,{class:`tx note`},e.text??``,` `,t)}}function J(e){e.rebuild&&(m.clear(),y.replaceChildren());for(let t of e.dropped)m.get(t)?.remove(),m.delete(t);let t=e.added.map(e=>(m.set(e.id,q(e)),m.get(e.id)));e.front?y.prepend(...t):y.append(...t),k&&!e.front&&!e.rebuild&&t.forEach(e=>(e.classList.add(`fresh`),e.dataset.born=String(Date.now()))),w.remove(),p.items.length||y.append(w),b.hidden=!p.before}let Y=e=>e.touched.forEach(e=>{let t=m.get(e),n=p.items.find(t=>t.id===e);if(t&&n){let r=q(n);t.classList.contains(`fresh`)&&Date.now()-Number(t.dataset.born??0)<400&&r.classList.add(`fresh`),t.replaceWith(r),m.set(e,r)}}),X=async()=>{if(!O&&p.before&&k){O=!0;try{let e=E.scrollHeight,n=p.prepend(await t.older(p.before));J(n),Y(n),E.scrollTop+=E.scrollHeight-e}finally{O=!1}p.before&&E.clientHeight&&b.getBoundingClientRect().bottom>=E.getBoundingClientRect().top&&X()}};C.addEventListener(`click`,()=>{A=void 0,p.detached?t.latest().then(e=>(J(p.reset(e)),B())):B()});let Z=[new IntersectionObserver(e=>e.some(e=>e.isIntersecting)&&void X(),{root:E}),new IntersectionObserver(e=>E.clientHeight&&(D.scrolled(e.at(-1).isIntersecting),z()),{root:E,rootMargin:`0px 0px 67px`})],Q,ve=()=>(Q??(Z[0].observe(b),Z[1].observe(S)),clearTimeout(Q),Q=setTimeout(()=>(Q=void 0,Z.forEach(e=>e.disconnect())),600));E.addEventListener(`scroll`,()=>(ve(),!N&&P!==void 0&&I()),{passive:!0}),E.addEventListener(`touchstart`,()=>(N=!0,clearTimeout(P),P=void 0),{passive:!0});for(let e of[`touchend`,`touchcancel`])E.addEventListener(e,()=>(N=!1,I()),{passive:!0});for(let e of[`wheel`,`touchstart`,`pointerdown`,`keydown`])E.addEventListener(e,()=>j=A=void 0,{passive:!0});let $=new ResizeObserver(()=>F()?void 0:D.pinned&&!p.detached?E.scrollTop=E.scrollHeight:j?.scrollIntoView({block:`center`}));return $.observe(y),$.observe(E),{log:E,docs:g,apply(e){if(e.reset)J(p.reset({items:e.items??[],before:e.before})),k=!0,W();else if(e.items?.length){let t=p.append(e.items);J(t),Y(t),D.arrived(t.added.length)&&!p.detached&&!F()?B():z()}},reveal(e){A=e,k&&W()},setLive(e,t){x.dataset.mark=t,x.lastChild?.textContent!==e&&x.replaceChildren(...e?[a(`b`,{class:`badge`}),a(`span`,null,e)]:[])}}}export{U as mountChat,_ as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-BbX4ZR_L.css"])))=>i.map(i=>d[i]);
2
+ import{V as e,d as t,n,v as r,x as i,y as a}from"./index-Cb_IMdLG.js";import{n as o,t as s}from"./views-CDDyJu5N.js";var c=((t={},n={})=>(n.locale??e())===`zh-TW`?`分支摘要`:`branch summary`),l=((t={},n={})=>(n.locale??e())===`zh-TW`?`通訊紀錄`:`Comms log`),u=e=>`context compacted · ${e?.tokens} tokens summarized`,d=e=>`上下文已壓縮 · 摘要了 ${e?.tokens} tokens`,f=((t,n={})=>(n.locale??e())===`zh-TW`?d(t):u(t)),ee=((t={},n={})=>(n.locale??e())===`zh-TW`?`…(於 1 MB 截斷)`:`… (cut at 1 MB)`),p=e=>`exit ${e?.code}`,m=e=>`結束碼 ${e?.code}`,te=((t,n={})=>(n.locale??e())===`zh-TW`?m(t):p(t)),h=e=>`Image ${e?.n}`,g=e=>`圖片 ${e?.n}`,_=((t,n={})=>(n.locale??e())===`zh-TW`?g(t):h(t)),v=((t={},n={})=>(n.locale??e())===`zh-TW`?`圖片無法讀取`:`Image unavailable`),y=e=>`${e?.count} image(s)`,b=e=>`${e?.count} 張圖片`,ne=((t,n={})=>(n.locale??e())===`zh-TW`?b(t):y(t)),re=((t={},n={})=>(n.locale??e())===`zh-TW`?`收到`:`incoming`),x=((t={},n={})=>(n.locale??e())===`zh-TW`?`跳到最新`:`jump to latest`),S=e=>`${e?.count} new`,C=e=>`${e?.count} 則新訊息`,w=((t,n={})=>(n.locale??e())===`zh-TW`?C(t):S(t)),T=((t={},n={})=>(n.locale??e())===`zh-TW`?`還沒有通訊。`:`No transmissions yet.`),ie=((t={},n={})=>(n.locale??e())===`zh-TW`?`通知`:`notice`),E=((t={},n={})=>(n.locale??e())===`zh-TW`?`表單回覆`:`form answers`),D=((t={},n={})=>(n.locale??e())===`zh-TW`?`訊息,來自`:`message from`),O=((t={},n={})=>(n.locale??e())===`zh-TW`?`記憶`:`memory`),k=((t={},n={})=>(n.locale??e())===`zh-TW`?`監看`:`monitor`),A=((t={},n={})=>(n.locale??e())===`zh-TW`?`提問,來自`:`question from`),j=((t={},n={})=>(n.locale??e())===`zh-TW`?`回報,來自`:`report from`),M=((t={},n={})=>(n.locale??e())===`zh-TW`?`狀態:`:`status of`),ae=((t={},n={})=>(n.locale??e())===`zh-TW`?`在旁開啟`:`open beside`),N=e=>`Open image ${e?.n}`,P=e=>`打開圖片 ${e?.n}`,oe=((t,n={})=>(n.locale??e())===`zh-TW`?P(t):N(t)),F=e=>`show all (${e?.size})`,I=e=>`顯示全部(${e?.size})`,L=((t,n={})=>(n.locale??e())===`zh-TW`?I(t):F(t)),R=((t={},n={})=>(n.locale??e())===`zh-TW`?`顯示全部參數`:`show all arguments`),z=e=>`◇ thought · ${e?.count} chars`,B=e=>`◇ 思考 · ${e?.count} 字元`,se=((t,n={})=>(n.locale??e())===`zh-TW`?B(t):z(t)),ce=((t={},n={})=>(n.locale??e())===`zh-TW`?`◇ 思考 · 已遮蔽`:`◇ thought · redacted`),V=((t={},n={})=>(n.locale??e())===`zh-TW`?`無法取得`:`unavailable`),le=((t={},n={})=>(n.locale??e())===`zh-TW`?`你`:`you`);function ue(){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?w({count:t}):x()}}async function de(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 fe(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 pe=e=>e?new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,hour12:!1}):``,me=e=>e>=1024?`${(e/1024).toFixed(e>=10240?0:1)} KB`:`${e} B`,he={intercom_message:D,subagent_result:j,subagent_ping:A,subagent_status:M,"pi-loop-monitor":k,"memory-context":O,"doc-review":E},H=e=>{let r=t(`<span class="ava"><svg><use/></svg></span>`);return r.querySelector(`use`).setAttribute(`href`,`#i-${n[e]??e}`),r};function ge(e){let t=[],n=0;for(let r of e.matchAll(/https?:\/\/[^\s<>)\]]+/g))t.push(e.slice(n,r.index),a(`a`,{href:r[0],rel:`noopener noreferrer`,target:`_blank`},r[0])),n=r.index+r[0].length;return[...t,e.slice(n)]}function U(e,t,{who:n,link:u,docFor:d}){let p=fe(),m=new Map,h=new Set,g=()=>h.forEach(e=>e.button.isConnected?(e.shown=!0,e.button.hidden=!e.paths.some(e=>d?.(e))):e.shown&&h.delete(e)),y=a(`div`,{class:`chat-list`}),b=a(`div`,{class:`chat-top`}),x=a(`div`,{class:`chat-live`}),S=a(`div`,{class:`chat-end`}),C=a(`button`,{class:`chat-pill`,type:`button`,hidden:``}),w=a(`p`,{class:`chat-empty`},T()),E=a(`div`,{class:`chat-scroll`,tabindex:`-1`,"aria-label":l()},b,y,x,S);e.replaceChildren(E,C);let D=ue(),O=!1,k=!1,A,j,M=0,N=!1,P,F=()=>N||P!==void 0,I=()=>(clearTimeout(P),P=setTimeout(()=>(P=void 0,D.pinned&&!p.detached&&B()),250)),z=(e=D.button(p.detached))=>(C.hidden=!e,C.textContent=e??``),B=()=>(D.jump(),j=void 0,E.scrollTop=E.scrollHeight,z());async function U(e){O=!0;let n=await de(p,t,e,e=>(J(e),Y(e))).finally(()=>O=!1),r=m.get(e);if(A===e){if(!n||!r)return B();D.hold(),j=r,r.scrollIntoView({block:`center`}),i(r,`lit`),clearTimeout(M),M=window.setTimeout(()=>(j=void 0,r.classList.remove(`lit`)),2e3),z()}}let W=()=>A?void U(A):B(),G=(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=V());n.textContent=r,e.remove()},()=>e.textContent=V())};function K(e,n=0){if(!n||!t.pic)return null;let i=Array.from({length:n},(n,r)=>t.pic(e,r));return a(`div`,{class:`pics`},...i.map((e,t)=>{let n=a(`img`,{src:e,alt:_({n:t+1}),loading:`lazy`,decoding:`async`}),o=a(`button`,{type:`button`,class:`pic`,"aria-label":oe({n:t+1})},n);return n.addEventListener(`error`,()=>o.replaceWith(a(`em`,{class:`pic-gone`},v()))),o.addEventListener(`click`,()=>void r(async()=>{let{lightbox:e}=await import(`./lightbox-BI4e91pd.js`);return{lightbox:e}},__vite__mapDeps([0]),import.meta.url).then(({lightbox:e})=>e(i,t))),o}))}function _e(e,t){let n=p.result(e.id),r=a(`pre`,{class:`out`},n?.text??``),i=a(`pre`,{class:`args`},e.args??``),o=e.cut?a(`button`,{class:`more`,type:`button`},R()):null;o?.addEventListener(`click`,()=>G(o,i,t,t=>(e=>e&&`${e.args??``}${e.cut?`\n${ee()}`:``}`)(t.tools?.find(t=>t.id===e.id))));let s=n?.more?a(`button`,{class:`more`,type:`button`},L({size:me(n.bytes??0)})):null;s?.addEventListener(`click`,()=>G(s,r,n.id,e=>e.text));let c=e.name===`show_doc`&&d?a(`button`,{class:`more open`,type:`button`,hidden:``},ae()):null;c?.addEventListener(`click`,t=>(t.preventDefault(),e.summary.split(`, `).forEach(e=>d?.(e)?.()))),c&&h.add({paths:e.summary.split(`, `),button:c}),c&&queueMicrotask(g);let l=a(`details`,{class:`act`},a(`summary`,{"data-mark":n?n.isError?`error`:`done`:`working`},a(`b`,{class:`badge`}),a(`code`,null,e.name),a(`span`,{class:`sum`},e.summary),c),i,o,n&&a(`div`,{class:`result`},n.images?a(`em`,null,ne({count:n.images})):null,r,s)),u=n&&K(n.id,n.images);return u?[l,u]:[l]}function q(e){let t=a(`time`,null,pe(e.at));switch(e.kind){case`user`:return a(`article`,{class:`tx you`},a(`header`,null,t,a(`b`,null,le()),H(`user`)),a(`div`,{class:`bubble`},...ge(e.text??``),K(e.id,e.images)));case`assistant`:{let r=n(),i=a(`pre`,{class:`thought-text`}),c=e.thought?a(`button`,{class:`thought`,type:`button`},e.thought<0?ce():se({count:e.thought.toLocaleString()})):null;return e.thought&&e.thought>0&&c?.addEventListener(`click`,()=>G(c,i,e.id,e=>e.thoughtText)),a(`article`,{class:`tx in`},H(r.role),a(`div`,{class:`tx-body`},a(`header`,null,a(`b`,null,r.name),e.model?a(`span`,null,e.model):null,t,e.stop?a(`span`,{class:`stop`,"data-mark":`error`},e.stop):null),c,i,e.text?a(`div`,{class:`md`},s(o(e.text))):null,e.error?a(`p`,{class:`fault`},e.error):null,...(e.tools??[]).flatMap(t=>_e(t,e.id))))}case`bash`:return a(`article`,{class:`tx sys`},a(`details`,{class:`act`},a(`summary`,{"data-mark":e.exit?`error`:`done`},a(`b`,{class:`badge`}),a(`code`,null,`shell`),a(`span`,{class:`sum`},`! ${e.command}`),e.exit?a(`span`,{class:`stop`,"data-mark":`error`},te({code:e.exit})):null),e.text?a(`pre`,{class:`out`},e.text):null));case`notice`:return a(`article`,{class:`tx sys`},a(`details`,{class:`notice`},a(`summary`,null,H(`comms`),a(`em`,null,re()),he[e.type??``]?.()??e.type??ie(),` `,e.from&&u(e.from)||(e.from??``),t),a(`pre`,null,e.text??``)));case`divider`:return a(`article`,{class:`tx rule`},a(`details`,null,a(`summary`,null,e.type===`compaction`?f({tokens:(e.tokens??0).toLocaleString()}):c()),a(`pre`,null,e.text??``)));default:return a(`article`,{class:`tx note`},e.text??``,` `,t)}}function J(e){e.rebuild&&(m.clear(),y.replaceChildren());for(let t of e.dropped)m.get(t)?.remove(),m.delete(t);let t=e.added.map(e=>(m.set(e.id,q(e)),m.get(e.id)));e.front?y.prepend(...t):y.append(...t),k&&!e.front&&!e.rebuild&&t.forEach(e=>(e.classList.add(`fresh`),e.dataset.born=String(Date.now()))),w.remove(),p.items.length||y.append(w),b.hidden=!p.before}let Y=e=>e.touched.forEach(e=>{let t=m.get(e),n=p.items.find(t=>t.id===e);if(t&&n){let r=q(n);t.classList.contains(`fresh`)&&Date.now()-Number(t.dataset.born??0)<400&&r.classList.add(`fresh`),t.replaceWith(r),m.set(e,r)}}),X=async()=>{if(!O&&p.before&&k){O=!0;try{let e=E.scrollHeight,n=p.prepend(await t.older(p.before));J(n),Y(n),E.scrollTop+=E.scrollHeight-e}finally{O=!1}p.before&&E.clientHeight&&b.getBoundingClientRect().bottom>=E.getBoundingClientRect().top&&X()}};C.addEventListener(`click`,()=>{A=void 0,p.detached?t.latest().then(e=>(J(p.reset(e)),B())):B()});let Z=[new IntersectionObserver(e=>e.some(e=>e.isIntersecting)&&void X(),{root:E}),new IntersectionObserver(e=>E.clientHeight&&(D.scrolled(e.at(-1).isIntersecting),z()),{root:E,rootMargin:`0px 0px 67px`})],Q,ve=()=>(Q??(Z[0].observe(b),Z[1].observe(S)),clearTimeout(Q),Q=setTimeout(()=>(Q=void 0,Z.forEach(e=>e.disconnect())),600));E.addEventListener(`scroll`,()=>(ve(),!N&&P!==void 0&&I()),{passive:!0}),E.addEventListener(`touchstart`,()=>(N=!0,clearTimeout(P),P=void 0),{passive:!0});for(let e of[`touchend`,`touchcancel`])E.addEventListener(e,()=>(N=!1,I()),{passive:!0});for(let e of[`wheel`,`touchstart`,`pointerdown`,`keydown`])E.addEventListener(e,()=>j=A=void 0,{passive:!0});let $=new ResizeObserver(()=>F()?void 0:D.pinned&&!p.detached?E.scrollTop=E.scrollHeight:j?.scrollIntoView({block:`center`}));return $.observe(y),$.observe(E),{log:E,docs:g,apply(e){if(e.reset)J(p.reset({items:e.items??[],before:e.before})),k=!0,W();else if(e.items?.length){let t=p.append(e.items);J(t),Y(t),D.arrived(t.added.length)&&!p.detached&&!F()?B():z()}},reveal(e){A=e,k&&W()},setLive(e,t){x.dataset.mark=t,x.lastChild?.textContent!==e&&x.replaceChildren(...e?[a(`b`,{class:`badge`}),a(`span`,null,e)]:[])}}}export{U as mountChat,_ as t};
@@ -1 +1 @@
1
- import{n as e,t}from"./unit_count-BBecd9Yh.js";import{T as n,V as r,a as i,d as a,f as o,g as s,h as c,i as l,l as u,m as d,p as f,y as p}from"./index-CFAsCDlQ.js";var m=((e={},t={})=>(t.locale??r())===`zh-TW`?`關閉清單`:`Close the list`),h=((e={},t={})=>(t.locale??r())===`zh-TW`?`切換到其他單位`:`Switch to a unit`),g=((e={},t={})=>(t.locale??r())===`zh-TW`?`所有單位`:`All units`),_=((e={},t={})=>(t.locale??r())===`zh-TW`?`指揮中`:`commanding`),v=((e={},t={})=>(t.locale??r())===`zh-TW`?`已結束`:`ended`),y=((e={},t={})=>(t.locale??r())===`zh-TW`?`錯誤`:`error`),b=((e={},t={})=>(t.locale??r())===`zh-TW`?`閒置`:`idle`),x=((e={},t={})=>(t.locale??r())===`zh-TW`?`無狀態`:`unknown`),S=((e={},t={})=>(t.locale??r())===`zh-TW`?`等待`:`waiting`),C=((e={},t={})=>(t.locale??r())===`zh-TW`?`工作中`:`working`),w=.4;function T(e,t,n){let[r,i]=[Math.abs(e),Math.abs(t)];return Math.max(r,i)<10?`wait`:r>=1.7*i&&(n?e<0:e>0)?`drag`:`pass`}var E=(e,t,n)=>Math.abs(n)>=.45?n>0:e>=t*w,D=(e,t)=>t||e.some(e=>e.editable||e.sink||e.scrollsX||[`input`,`textarea`,`select`].includes(e.tag));function O(e){let t=e,n=getComputedStyle(e).overflowX;return{tag:e.tagName.toLowerCase(),editable:t.isContentEditable,sink:e.matches(`.composer, .term-sink`),scrollsX:(n===`auto`||n===`scroll`)&&e.scrollWidth>e.clientWidth+1}}var k=e=>{let t=[];for(let n=e;n;n=n.parentElement)t.push(O(n));return t},A={working:C,waiting:S,idle:b,done:v,error:y,unknown:x,commanding:_},j=(e,t,n)=>(t?v:A[e])({},n&&{locale:n}),M=(e,t)=>t.flatMap(t=>[t,...t.subs.map(e=>({...e,sub:!0}))].map(t=>({id:t.key,key:t.key,ws:e,name:t.name,role:t.role,mark:t.mark,note:t.note,ended:!!t.ended,sub:`sub`in t})));function N(t){return t.bases.flatMap(t=>{let r=[{id:`tower`,rows:t.tower?M(t.id,[{...t.tower,role:`tower`}]):[]},...t.tabs.map(e=>({id:e.id,label:n({label:e.label}),rows:M(t.id,e.units)})),{id:`outside`,label:e(),rows:M(t.id,t.outside)}].filter(e=>e.rows.length);return r.length?[{id:t.id,label:t.label,mark:t.mark,groups:r}]:[]})}var P=e=>e.reduce((e,t)=>(t.sub?e.at(-1)?.subs.push(t):e.push({...t,subs:[]}),e),[]),F=()=>a(`<div class="unit"><div class="card"><a class="hit"></a>${l}<div class="meta"><span class="name"></span><span class="line"><em class="role"></em><b class="dstate"></b><span class="note"></span></span></div></div><div class="subs"></div></div>`),I=()=>a(`<section class="dbase"><h3><a></a><small></small></h3><div class="dgroups"></div></section>`),L=()=>a(`<div class="dgroup"><h4></h4><div class="drows"></div></div>`),R=()=>matchMedia(`(max-width: 640px)`).matches;function z(){let e=p(`div`,{class:`drawer-body`}),n=p(`button`,{type:`button`,class:`x`,"aria-label":m()},`×`),r=p(`aside`,{class:`drawer`,"aria-label":h()},p(`header`,null,p(`b`,null,g()),n),e),a=p(`div`,{class:`drawer-veil`});document.body.append(a,r);let l,_,v=!1,y=0,b=0,x,S=()=>{let n=(e,t)=>{i(e.querySelector(`.hit`),{view:`session`,ws:t.ws,key:t.key}),e.querySelector(`.hit`).setAttribute(`aria-label`,`${t.name}: ${j(t.mark,t.ended)}`),e.classList.toggle(`current`,t.key===_),o(e,t.mark),u(e.querySelector(`.plate`),t.role,t.mark),s(e,`.name`,t.name),s(e,`.role`,f(t.role)),s(e,`.dstate`,j(t.mark,t.ended)),d(e,`.note`,t.note,t.mark,t.note?void 0:``),c(e.querySelector(`.subs`),t.subs??[],F,n)};c(e,N(l??{bases:[]}),I,(e,r)=>{o(e,r.mark),s(e,`h3 a`,r.label),i(e.querySelector(`h3 a`),{view:`workspace`,ws:r.id}),s(e,`small`,t({count:r.groups.reduce((e,t)=>e+t.rows.length,0)})),c(e.querySelector(`.dgroups`),r.groups,L,(e,t)=>{s(e,`h4`,t.label??``),e.querySelector(`h4`).toggleAttribute(`hidden`,!t.label),c(e.querySelector(`.drows`),P(t.rows),F,n)})})},C=e=>{y=Math.max(0,Math.min(b,e)),r.style.setProperty(`--dx`,`${y}px`),a.style.opacity=String(b?y/b:0),a.style.pointerEvents=y>0?`auto`:`none`},w=e=>{v=e,r.classList.toggle(`on`,e),r.inert=!e,document.documentElement.classList.remove(`drawer-drag`),C(e?b:0)},O=()=>{b=r.offsetWidth,S(),r.classList.add(`on`),document.documentElement.classList.add(`drawer-drag`)};r.inert=!0,document.addEventListener(`touchstart`,e=>{let t=e.target,n=r.contains(t)||t===a;if(x=void 0,!R()||e.touches.length!==1||document.querySelector(`dialog.sheet[open], dialog.lightbox[open], [popover]:popover-open`)||(v?!n:D(k(t),!!getSelection()?.toString())))return;let i=e.touches[0];x={x0:i.clientX,y0:i.clientY,mode:`wait`,was:v,base:y,last:i.clientX,at:performance.now(),v:0}},{passive:!0}),document.addEventListener(`touchmove`,e=>{if(!x||x.mode===`pass`)return;let t=e.touches[0],n=t.clientX-x.x0,r=t.clientY-x.y0;if(x.mode===`wait`){let e=T(n,r,x.was);if(e===`wait`)return;if(e===`pass`)return void(x.mode=`pass`);x.mode=`drag`,O()}e.preventDefault();let i=performance.now();x.v=(t.clientX-x.last)/Math.max(1,i-x.at),[x.last,x.at]=[t.clientX,i],C(x.base+n)},{passive:!1});let A=()=>{let e=x;x=void 0,e?.mode===`drag`&&w(E(y,b,e.v))};return document.addEventListener(`touchend`,A),document.addEventListener(`touchcancel`,A),a.addEventListener(`click`,()=>w(!1)),r.addEventListener(`click`,e=>e.target.closest(`a[data-route], .x`)&&w(!1)),document.addEventListener(`keydown`,e=>v&&e.key===`Escape`&&(e.preventDefault(),w(!1)),!0),document.addEventListener(`sb-drawer`,()=>(v||O(),w(!v))),{net(e){l=e,v&&S()},route(e){_=e.view===`session`?e.key:void 0,v&&S()}}}export{z as mountDrawer};
1
+ import{n as e,t}from"./unit_count-C7YCZESd.js";import{T as n,V as r,a as i,d as a,f as o,g as s,h as c,i as l,l as u,m as d,p as f,y as p}from"./index-Cb_IMdLG.js";var m=((e={},t={})=>(t.locale??r())===`zh-TW`?`關閉清單`:`Close the list`),h=((e={},t={})=>(t.locale??r())===`zh-TW`?`切換到其他單位`:`Switch to a unit`),g=((e={},t={})=>(t.locale??r())===`zh-TW`?`所有單位`:`All units`),_=((e={},t={})=>(t.locale??r())===`zh-TW`?`指揮中`:`commanding`),v=((e={},t={})=>(t.locale??r())===`zh-TW`?`已結束`:`ended`),y=((e={},t={})=>(t.locale??r())===`zh-TW`?`錯誤`:`error`),b=((e={},t={})=>(t.locale??r())===`zh-TW`?`閒置`:`idle`),x=((e={},t={})=>(t.locale??r())===`zh-TW`?`無狀態`:`unknown`),S=((e={},t={})=>(t.locale??r())===`zh-TW`?`等待`:`waiting`),C=((e={},t={})=>(t.locale??r())===`zh-TW`?`工作中`:`working`),w=.4;function T(e,t,n){let[r,i]=[Math.abs(e),Math.abs(t)];return Math.max(r,i)<10?`wait`:r>=1.7*i&&(n?e<0:e>0)?`drag`:`pass`}var E=(e,t,n)=>Math.abs(n)>=.45?n>0:e>=t*w,D=(e,t)=>t||e.some(e=>e.editable||e.sink||e.scrollsX||[`input`,`textarea`,`select`].includes(e.tag));function O(e){let t=e,n=getComputedStyle(e).overflowX;return{tag:e.tagName.toLowerCase(),editable:t.isContentEditable,sink:e.matches(`.composer, .term-sink`),scrollsX:(n===`auto`||n===`scroll`)&&e.scrollWidth>e.clientWidth+1}}var k=e=>{let t=[];for(let n=e;n;n=n.parentElement)t.push(O(n));return t},A={working:C,waiting:S,idle:b,done:v,error:y,unknown:x,commanding:_},j=(e,t,n)=>(t?v:A[e])({},n&&{locale:n}),M=(e,t)=>t.flatMap(t=>[t,...t.subs.map(e=>({...e,sub:!0}))].map(t=>({id:t.key,key:t.key,ws:e,name:t.name,role:t.role,mark:t.mark,note:t.note,ended:!!t.ended,sub:`sub`in t})));function N(t){return t.bases.flatMap(t=>{let r=[{id:`tower`,rows:t.tower?M(t.id,[{...t.tower,role:`tower`}]):[]},...t.tabs.map(e=>({id:e.id,label:n({label:e.label}),rows:M(t.id,e.units)})),{id:`outside`,label:e(),rows:M(t.id,t.outside)}].filter(e=>e.rows.length);return r.length?[{id:t.id,label:t.label,mark:t.mark,groups:r}]:[]})}var P=e=>e.reduce((e,t)=>(t.sub?e.at(-1)?.subs.push(t):e.push({...t,subs:[]}),e),[]),F=()=>a(`<div class="unit"><div class="card"><a class="hit"></a>${l}<div class="meta"><span class="name"></span><span class="line"><em class="role"></em><b class="dstate"></b><span class="note"></span></span></div></div><div class="subs"></div></div>`),I=()=>a(`<section class="dbase"><h3><a></a><small></small></h3><div class="dgroups"></div></section>`),L=()=>a(`<div class="dgroup"><h4></h4><div class="drows"></div></div>`),R=()=>matchMedia(`(max-width: 640px)`).matches;function z(){let e=p(`div`,{class:`drawer-body`}),n=p(`button`,{type:`button`,class:`x`,"aria-label":m()},`×`),r=p(`aside`,{class:`drawer`,"aria-label":h()},p(`header`,null,p(`b`,null,g()),n),e),a=p(`div`,{class:`drawer-veil`});document.body.append(a,r);let l,_,v=!1,y=0,b=0,x,S=()=>{let n=(e,t)=>{i(e.querySelector(`.hit`),{view:`session`,ws:t.ws,key:t.key}),e.querySelector(`.hit`).setAttribute(`aria-label`,`${t.name}: ${j(t.mark,t.ended)}`),e.classList.toggle(`current`,t.key===_),o(e,t.mark),u(e.querySelector(`.plate`),t.role,t.mark),s(e,`.name`,t.name),s(e,`.role`,f(t.role)),s(e,`.dstate`,j(t.mark,t.ended)),d(e,`.note`,t.note,t.mark,t.note?void 0:``),c(e.querySelector(`.subs`),t.subs??[],F,n)};c(e,N(l??{bases:[]}),I,(e,r)=>{o(e,r.mark),s(e,`h3 a`,r.label),i(e.querySelector(`h3 a`),{view:`workspace`,ws:r.id}),s(e,`small`,t({count:r.groups.reduce((e,t)=>e+t.rows.length,0)})),c(e.querySelector(`.dgroups`),r.groups,L,(e,t)=>{s(e,`h4`,t.label??``),e.querySelector(`h4`).toggleAttribute(`hidden`,!t.label),c(e.querySelector(`.drows`),P(t.rows),F,n)})})},C=e=>{y=Math.max(0,Math.min(b,e)),r.style.setProperty(`--dx`,`${y}px`),a.style.opacity=String(b?y/b:0),a.style.pointerEvents=y>0?`auto`:`none`},w=e=>{v=e,r.classList.toggle(`on`,e),r.inert=!e,document.documentElement.classList.remove(`drawer-drag`),C(e?b:0)},O=()=>{b=r.offsetWidth,S(),r.classList.add(`on`),document.documentElement.classList.add(`drawer-drag`)};r.inert=!0,document.addEventListener(`touchstart`,e=>{let t=e.target,n=r.contains(t)||t===a;if(x=void 0,!R()||e.touches.length!==1||document.querySelector(`dialog.sheet[open], dialog.lightbox[open], [popover]:popover-open`)||(v?!n:D(k(t),!!getSelection()?.toString())))return;let i=e.touches[0];x={x0:i.clientX,y0:i.clientY,mode:`wait`,was:v,base:y,last:i.clientX,at:performance.now(),v:0}},{passive:!0}),document.addEventListener(`touchmove`,e=>{if(!x||x.mode===`pass`)return;let t=e.touches[0],n=t.clientX-x.x0,r=t.clientY-x.y0;if(x.mode===`wait`){let e=T(n,r,x.was);if(e===`wait`)return;if(e===`pass`)return void(x.mode=`pass`);x.mode=`drag`,O()}e.preventDefault();let i=performance.now();x.v=(t.clientX-x.last)/Math.max(1,i-x.at),[x.last,x.at]=[t.clientX,i],C(x.base+n)},{passive:!1});let A=()=>{let e=x;x=void 0,e?.mode===`drag`&&w(E(y,b,e.v))};return document.addEventListener(`touchend`,A),document.addEventListener(`touchcancel`,A),a.addEventListener(`click`,()=>w(!1)),r.addEventListener(`click`,e=>e.target.closest(`a[data-route], .x`)&&w(!1)),document.addEventListener(`keydown`,e=>v&&e.key===`Escape`&&(e.preventDefault(),w(!1)),!0),document.addEventListener(`sb-drawer`,()=>(v||O(),w(!v))),{net(e){l=e,v&&S()},route(e){_=e.view===`session`?e.key:void 0,v&&S()}}}export{z as mountDrawer};
@@ -1 +1 @@
1
- :root{--bg:#16161e;--bg-2:#1a1b26;--surface-0:#1f2335;--surface-1:#24283b;--raised:#1f2335;--sunken:#16161e;--well:#16161e8c;--panel:#1f2335eb;--plate:#1a1b26;--plate-hi:#292e42;--term-bg:#16161e;--term-fg:#c0caf5;--line-c:#737aa2;--line:#737aa242;--hi:#fff;--shadow:#08080d;--text:#c0caf5;--dim:#868dba;--ink:#16161e;--accent:#7dcfff;--accent-hi:#b4e4ff;--working:#7dcfff;--gold:#e0af68;--amber:#ff9e64;--ok:#9ece6a;--err:#f7768e;--err-soft:#ff9fb0;--violet:#bb9af7;--idle:#737aa2;--unknown:#545c7e;--paper-hi:#f6e6b8;--paper:#d8bd78;--paper-ink:#3b2a06;--paper-edge:#8a6f33;--aura-1:color-mix(in srgb, var(--accent) 7%, transparent);--aura-2:color-mix(in srgb, var(--violet) 8%, transparent);--grid:linear-gradient(color-mix(in srgb, var(--line-c) 5%, transparent) 1px, transparent 1px) 0 0 / 44px 44px, linear-gradient(90deg, color-mix(in srgb, var(--line-c) 5%, transparent) 1px, transparent 1px) 0 0 / 44px 44px;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--sans:ui-rounded, "Avenir Next", "Trebuchet MS", system-ui, -apple-system, "Segoe UI", sans-serif}*{box-sizing:border-box;margin:0}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;-webkit-font-smoothing:antialiased;scrollbar-color:color-mix(in srgb, var(--line-c) 45%, transparent) transparent}::selection{background:color-mix(in srgb, var(--accent) 28%, transparent)}body{min-height:100vh;color:var(--text);font:14px/1.4 var(--sans);background:radial-gradient(1100px 640px at 12% -10%, var(--aura-1), transparent 62%), radial-gradient(900px 600px at 98% 8%, var(--aura-2), transparent 60%), linear-gradient(var(--bg), var(--bg-2));background-attachment:fixed}svg{display:block}[data-mark=working]{--c:var(--working)}[data-mark=waiting]{--c:var(--amber)}[data-mark=idle]{--c:var(--idle)}[data-mark=done]{--c:var(--ok)}[data-mark=error]{--c:var(--err)}[data-mark=unknown]{--c:var(--unknown)}[data-mark=commanding]{--c:var(--violet)}[data-mark]{--c1:color-mix(in srgb, var(--c) 13%, transparent);--c4:color-mix(in srgb, var(--c) 45%, transparent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.shell{max-width:2200px;margin:0 auto;padding:14px 20px 32px}.hud{border:1px solid var(--line);background:var(--panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:5;border-radius:16px;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:8px 12px;display:flex;position:sticky;top:8px}.brand{align-items:center;gap:12px;margin-right:8px;display:flex}.logo{width:36px;height:36px;color:var(--accent);background:radial-gradient(circle at 30% 25%, color-mix(in srgb, var(--accent) 30%, transparent), color-mix(in srgb, var(--bg-2) 90%, transparent));border:1px solid var(--line);border-radius:11px;place-items:center;display:grid}.logo svg{width:24px;height:24px;filter:drop-shadow(0 0 5px color-mix(in srgb, var(--accent) 70%, transparent))}.brand h1{letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;font-size:17px}.brand p{color:var(--dim);font-size:12px}.stats{background:color-mix(in srgb, var(--hi) 4%, transparent);border:1px solid color-mix(in srgb, var(--hi) 6%, transparent);border-radius:13px;gap:2px;padding:2px;display:flex}.stats div,.tally div,.alerts{background:color-mix(in srgb, var(--hi) 4%, transparent);border:1px solid color-mix(in srgb, var(--hi) 6%, transparent);border-radius:12px;min-width:0;padding:4px 10px}.stats dt,.tally dt{color:var(--dim);letter-spacing:.08em;text-transform:uppercase;font-size:10px}.stats dd,.tally dd{font:600 17px/1.15 var(--mono);font-variant-numeric:tabular-nums}.stats div{background:0 0;border-color:#0000;border-radius:10px;min-width:4.5em;padding:3px 10px}.tally dd{font-size:20px}.stats [data-mark] dd,.tally [data-mark] dd,.count b{color:var(--c)}.pair-btn{white-space:nowrap;border:1px solid var(--line);color:var(--dim);font:600 12px var(--sans);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:12px;padding:6px 10px}.tog{align-items:center;gap:6px;display:inline-flex}.tog:before{content:"";background:var(--line);border-radius:50%;flex:none;width:7px;height:7px}.tog[data-state=on]{color:var(--text);border-color:color-mix(in srgb, var(--accent) 35%, var(--bg))}.tog[data-state=on]:before{background:var(--accent);box-shadow:0 0 6px var(--accent)}.tog[data-state=ask]:before{background:var(--gold)}.tog[data-state=blocked]:before{background:var(--err)}.tog[data-state=done]{color:var(--text)}.tog[data-state=done]:before{background:var(--ok);box-shadow:0 0 6px var(--ok)}.tog[data-state=error]{color:color-mix(in srgb, var(--err-soft) 45%, var(--hi))}.tog[data-state=error]:before{background:var(--err);box-shadow:0 0 6px var(--err)}.alert-row{align-items:center;gap:10px;min-width:0;display:flex}.done-btn{white-space:nowrap;flex:none}.prefs-btn{place-items:center;width:34px;height:34px;margin-left:auto;padding:0;display:grid}.prefs-btn svg{fill:currentColor;width:18px;height:18px}.prefs-btn:hover,.prefs-btn[aria-expanded=true]{color:var(--text)}.prefs-btn:has(+.prefs-pop #remind[data-state=blocked]){color:var(--err-soft)}.prefs-pop{width:210px}.prefs-pop:popover-open{gap:6px;display:grid}.prefs-pop>.pair-btn{text-align:left;justify-content:flex-start;width:100%}.hud-pop{border:1px solid var(--line);background:var(--raised);color:var(--text);font:13px/1.4 var(--sans);box-shadow:0 12px 32px color-mix(in srgb, var(--shadow) 60%, transparent);border-radius:14px;margin:0;padding:12px;position:fixed;inset:auto}.sound-pop{gap:12px;width:240px}.sound-pop:popover-open{display:grid}.sound-pop label{justify-content:space-between;align-items:center;gap:10px;display:flex}.sound-pop input[type=range]{min-width:0;accent-color:var(--accent);flex:1}.sound-pop input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent)}.sound-pop output{text-align:right;width:3ch;font:12px var(--mono);color:var(--dim)}.done-pop{width:min(340px,100vw - 16px)}.done-pop ul{gap:2px;max-height:50vh;margin:0 0 10px;padding:0;list-style:none;display:grid;overflow:auto}.done-go{color:inherit;border-radius:10px;align-items:center;gap:10px;padding:6px 8px;text-decoration:none;display:flex}.done-go:hover,.done-go:focus-visible{background:color-mix(in srgb, var(--hi) 6%, transparent)}.done-go .plate{--s:30px;flex:none}.done-go .badge{display:none}.done-go span{min-width:0;display:grid}.done-go .name{font-weight:600}.done-go .name,.done-go small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.done-go small{color:var(--dim)}#done-clear,#sound-try{width:100%}.lang{text-transform:none}.lang option{background:var(--bg);color:var(--text)}.pair{text-align:center;color:var(--dim);justify-items:center;gap:12px;font-size:13px;display:grid}.qr{shape-rendering:crispedges;border-radius:12px;width:min(100%,300px)}.devices{text-align:left;border-top:1px solid var(--line);gap:8px;width:100%;padding-top:12px;display:grid}.devices h4{font:600 12px var(--sans);letter-spacing:.08em;text-transform:uppercase;margin:0}.devices ul{gap:6px;margin:0;padding:0;list-style:none;display:grid}.devices li{justify-content:space-between;align-items:center;gap:10px;display:flex}.devices li span{min-width:0;display:grid}.devices li b{color:var(--text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.devices-acts{flex-wrap:wrap;gap:8px;display:flex}.devices small,.devices .chat-empty{color:var(--dim)}.spawn-btns{flex-wrap:wrap;gap:8px;margin:12px 0 4px;display:flex}.base>.spawn-btns{margin:-4px 0 12px}.tab h3>span,.squad h3>b{white-space:nowrap;text-overflow:ellipsis;flex:0 auto;min-width:0;overflow:hidden}.tab h3>button{flex:none}.tab h3>span{flex-grow:1}.tab-add{white-space:nowrap;border:1px solid var(--line);color:var(--dim);font:600 11px var(--sans);letter-spacing:.08em;cursor:pointer;background:0 0;border-radius:10px;flex:none;margin-left:auto;padding:2px 8px}.squad .tab-add{margin-left:0}.tab-add:hover,.new-base:hover{color:var(--accent);border-color:var(--accent)}.quit-btn{border:1px solid var(--line);color:var(--dim);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:8px;flex:none;margin-left:6px;padding:2px 9px}.quit-btn:hover{color:var(--err-soft);border-color:color-mix(in srgb, var(--err-soft) 40%, transparent)}.base>header>.quit-btn{align-self:flex-start;margin-left:auto}@media (hover:hover) and (pointer:fine){:is(.card>.quit-btn,.tab h3>.quit-btn,.base>header>.quit-btn,.tower-quit){opacity:0;transition:opacity .15s}:is(.card:hover,.card:focus-within)>.quit-btn,:is(.tab h3:hover,.tab h3:focus-within)>.quit-btn,:is(.base>header:hover,.base>header:focus-within) :is(.quit-btn,.tower-quit){opacity:1}}#stashed-list li{align-items:center;gap:8px;display:flex}#stashed-list span{overflow-wrap:anywhere;flex:1}.card>.quit-btn{margin-left:auto}.card>.quit-btn,.tower-quit{z-index:2;position:relative}.tower-quit{margin:6px 0 0}.sheet{border:1px solid var(--line);background:var(--raised);max-width:min(420px,100vw - 32px);color:var(--text);font:14px/1.5 var(--sans);border-radius:16px;margin:auto;padding:18px 20px}.sheet::backdrop{background:color-mix(in srgb, var(--shadow) 60%, transparent)}.sheet p{margin:0 0 14px}.sheet-row{justify-content:flex-end;gap:10px;display:flex}.sheet .later{cursor:pointer;border-radius:10px;padding:6px 14px}.sheet-yes{background:var(--err-soft);color:var(--ink);font:600 13px var(--sans);cursor:pointer;border:0;border-radius:10px;padding:6px 14px}.modes{flex:none;gap:4px;display:flex}.modes button{white-space:nowrap;border:1px solid var(--line);color:var(--dim);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:999px;padding:4px 14px}.modes button[aria-pressed=true]{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent)}.term-root{min-height:0;padding:10px 16px 14px}.term-root .term-tile{height:100%}.pics{flex-wrap:wrap;align-items:flex-start;gap:6px;margin-top:8px;display:flex}.pic{border:1px solid var(--line);background:var(--plate);cursor:zoom-in;border-radius:8px;max-width:100%;padding:0;line-height:0;overflow:hidden}.pic img{max-width:240px;max-height:180px;display:block}.pic-gone{color:var(--dim);font-size:12px}.lightbox{background:color-mix(in srgb, var(--bg) 94%, transparent);border:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;overflow:auto}.lightbox[open]{place-items:center;display:grid}.lightbox::backdrop{background:0 0}.lightbox img{object-fit:contain;cursor:zoom-in;max-width:94vw;max-height:88dvh}.lightbox.zoom[open]{place-items:start}.lightbox.zoom img{cursor:zoom-out;max-width:none;max-height:none}.lightbox button{border:1px solid var(--line);background:var(--panel);width:44px;height:44px;color:var(--text);border-radius:50%;place-items:center;font-size:26px;line-height:1;display:grid;position:fixed}.lb-close{top:14px;right:14px}.lb-prev,.lb-next{top:calc(50% - 22px)}.lb-prev{left:14px}.lb-next{right:14px}.lb-count{color:var(--dim);font:13px var(--mono);position:fixed;bottom:14px;left:50%;transform:translate(-50%)}.queue-list{justify-items:end;gap:4px;margin:0 16px 6px;display:grid}.queue-list p{border:1px dashed color-mix(in srgb, var(--accent) 45%, transparent);max-width:min(80%,640px);color:var(--dim);white-space:pre-wrap;-webkit-line-clamp:3;border-radius:12px;-webkit-box-orient:vertical;margin:0;padding:6px 12px;font-size:14px;line-height:1.45;display:-webkit-box;overflow:hidden}.queue-list b{color:var(--accent);letter-spacing:.06em;margin-right:8px;font-size:11px;font-weight:600}.in-term .queue-list{display:none}.todos{border:1px solid var(--line);background:var(--panel);border-radius:12px;margin:0 16px;padding:6px 12px;font-size:13px}.todos summary{cursor:pointer;align-items:baseline;gap:10px;min-width:0;list-style:none;display:flex}.todos summary::-webkit-details-marker{display:none}.todos summary b{color:var(--violet);flex:none;font-weight:600}.todos summary span{min-width:0;color:var(--dim);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.todos summary:after{content:"▸";color:var(--dim);margin-left:auto}.todos[open] summary:after{content:"▾"}.todos ol{gap:3px;max-height:30vh;margin:6px 0 2px;padding:0;list-style:none;display:grid;overflow-y:auto}.todos li{font:13px/1.5 var(--sans);margin:0}.todos li:before{content:"○";width:1.4em;color:var(--dim);display:inline-block}.todos li.in_progress{color:var(--accent)}.todos li.in_progress:before{content:"◐"}.todos li.completed{color:var(--dim);text-decoration:line-through}.todos li.completed:before{content:"✓";color:var(--ok)}.in-term .todos,.in-term .monitors{display:none}.monitors{border:1px solid var(--line);background:var(--panel);border-radius:12px;margin:6px 16px 0;padding:6px 12px;font-size:13px}.monitors summary{cursor:pointer;align-items:baseline;gap:10px;min-width:0;list-style:none;display:flex}.monitors summary::-webkit-details-marker{display:none}.monitors summary b{color:var(--accent);flex:none;font-weight:600}.monitors[data-failed=true] summary b{color:var(--err)}.monitors summary span{min-width:0;color:var(--dim);font:12px var(--mono);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.monitors summary:after{content:"▸";color:var(--dim);margin-left:auto}.monitors[open] summary:after{content:"▾"}.monitors ul{gap:6px;max-height:30vh;margin:6px 0 2px;padding:0;list-style:none;display:grid;overflow-y:auto}.monitors li{text-indent:-1.4em;gap:1px;padding-left:1.4em;display:grid}.monitors li b{overflow-wrap:anywhere;font-weight:500}.monitors li b:before{content:"◐";text-indent:0;width:1.4em;color:var(--accent);display:inline-block}.monitors li.done b:before{content:"✓";color:var(--ok)}.monitors li.stopped b:before{content:"■";color:var(--dim)}.monitors li.error b:before,.monitors li.stale b:before{content:"!";color:var(--err)}.monitors li.error small,.monitors li.stale small{color:var(--err)}.monitors li small{color:var(--dim);text-indent:0}.monitors li code{color:var(--dim);font:12px var(--mono);text-indent:0;overflow-wrap:anywhere}.new-base{border:1px dashed var(--line);min-height:96px;color:var(--dim);font:600 14px var(--sans);letter-spacing:.08em;cursor:pointer;background:0 0;border-radius:18px}.spawn .go{--c:var(--accent);border:0}.spawn{color:var(--dim);gap:10px;font-size:13px;display:grid}.spawn-at{flex-wrap:wrap;align-items:center;gap:8px;margin:0;display:flex}.spawn-path{color:var(--text);overflow-wrap:anywhere}.spawn-dirs{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;max-height:40vh;display:grid;overflow:auto}.spawn-dir{border:1px solid var(--line);color:var(--text);font:13px var(--mono);text-align:left;overflow-wrap:anywhere;cursor:pointer;background:0 0;border-radius:8px;padding:7px 10px}.spawn textarea,.spawn input{box-sizing:border-box;border:1px solid var(--line);width:100%;color:var(--text);font:14px var(--sans);background:0 0;border-radius:8px;padding:8px 10px}.link{color:var(--dim);text-transform:uppercase;letter-spacing:.08em;align-items:center;gap:8px;padding:0 4px;font-size:12px;display:flex}.link span{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.link i{background:var(--unknown);border-radius:50%;width:9px;height:9px}.link[data-state=live] i{background:var(--ok);animation:2.4s ease-in-out infinite blink}.link[data-state=live]{color:var(--ok)}.link[data-state=reconnecting] i,.link[data-state=connecting] i{background:var(--amber);animation:1s ease-in-out infinite blink}.link[data-state=offline] i{background:var(--err)}.banner{background:color-mix(in srgb, var(--idle) 16%, transparent);color:var(--text);border-radius:14px;margin:14px 0 0;padding:10px 16px;font-size:13px}.banner b{font-family:var(--mono);font-weight:600}.stage{grid-template-columns:minmax(0,1fr);align-items:start;gap:20px;margin-top:12px;transition:opacity .4s;display:grid}.stage[data-view=session]{grid-template-columns:minmax(0,1fr) 300px}.stage:not([data-view=session])>.side{display:none}.stage[data-stale=true] .map,body[data-stale=true] .stats{opacity:.4}.stage[data-stale=true] *{animation-play-state:paused!important}.map{border:1px solid var(--line);background:var(--grid), var(--well);border-radius:18px;min-height:420px;padding:20px;transition:opacity .4s;position:relative}.links{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.wire{fill:none;stroke:color-mix(in srgb, var(--accent) 30%, transparent);stroke-width:1.5px;stroke-dasharray:3 7;stroke-linecap:round}.packets{pointer-events:none;position:absolute;inset:0;overflow:hidden}.packet{background:var(--accent);opacity:0;will-change:transform;border-radius:50%;width:6px;height:6px;transition:opacity .4s;animation:none;position:absolute;top:-3px;left:-3px}.packet[data-live]{opacity:.9;animation-play-state:running}.bases{grid-template-columns:repeat(auto-fill,minmax(min(100%,330px),1fr));grid-auto-rows:2px;align-items:start;gap:0 20px;display:grid;position:relative}.base{border:1px solid var(--line);background:linear-gradient(180deg, var(--surface-1), var(--surface-0));box-shadow:0 18px 40px color-mix(in srgb, var(--shadow) 35%, transparent);border-radius:16px;padding:14px;position:relative}.base.head{background:linear-gradient(180deg, color-mix(in srgb, var(--gold) 10%, transparent), transparent 38%), linear-gradient(180deg, var(--surface-1), var(--surface-0))}.base[data-mark=waiting]{box-shadow:0 18px 40px color-mix(in srgb, var(--shadow) 35%, transparent), inset 0 0 0 999px color-mix(in srgb, var(--amber) 4%, transparent)}.base>header{align-items:center;gap:12px;margin-bottom:10px;display:flex;position:relative}.title{justify-items:start;min-width:0;margin-right:auto;display:grid}.title h2{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:17px;overflow:hidden}.title p{max-width:100%;color:var(--dim);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.crown{letter-spacing:.12em;text-transform:uppercase;color:var(--gold);background:color-mix(in srgb, var(--gold) 12%, transparent);border-radius:999px;align-items:center;gap:5px;margin-bottom:3px;padding:2px 9px 2px 6px;font-size:10px;display:inline-flex}.crown svg{width:14px;height:14px}.base:not(.head) .crown{display:none}.tower{width:64px;height:64px;color:var(--c);flex:none;place-items:center;display:grid;position:relative}.tower:before{content:"";background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--c) 24%, var(--plate-hi)), var(--plate) 70%);border:1px solid color-mix(in srgb, var(--c) 45%, transparent);border-radius:50%;position:absolute;inset:0}.tower svg{width:38px;height:38px;filter:drop-shadow(0 0 5px color-mix(in srgb, var(--c) 55%, transparent));position:relative}.tower.ghost{opacity:.45}.tower.ghost:before{border-style:dashed}.sweep,.pulse{opacity:0;pointer-events:none;border-radius:50%;position:absolute;inset:0}.sweep{background:conic-gradient(from 0deg, transparent 0 70%, color-mix(in srgb, var(--c) 55%, transparent) 100%)}.pulse{border:2px solid var(--c)}.tower[data-mark=working] .sweep{opacity:1;animation:3.2s linear infinite spin}.tower[data-mark=waiting] .pulse{animation:1.5s ease-out infinite ping}.tower>.badge{--s:36px;position:absolute;bottom:-3px;right:-3px}.tabs{gap:10px;display:grid}.tab{background:color-mix(in srgb, var(--hi) 2%, transparent);border:1px solid color-mix(in srgb, var(--hi) 5%, transparent);border-radius:14px;padding:8px}.tab h3{color:var(--dim);letter-spacing:.12em;text-transform:uppercase;align-items:center;gap:8px;margin-bottom:8px;font-size:11px;font-weight:600;display:flex}.units,.subs{gap:8px;display:grid}.outposts{gap:8px;margin-top:12px;display:grid}.outposts:empty{display:none}.outposts:before{content:attr(data-label);color:var(--dim);letter-spacing:.12em;text-transform:uppercase;font-size:11px}.card{background:color-mix(in srgb, var(--hi) 4%, transparent);border:1px solid color-mix(in srgb, var(--hi) 6%, transparent);border-radius:12px;align-items:center;gap:10px;padding:8px 10px;transition:background-color .4s;display:flex;position:relative}@media (hover:hover) and (pointer:fine){.card{transition:background-color .4s,border-color .2s,transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s}.card:hover{border-color:color-mix(in srgb, var(--c,var(--line-c)) 40%, transparent);box-shadow:0 6px 18px color-mix(in srgb, var(--shadow) 55%, transparent);transform:translateY(-1px)}.base{transition:border-color .25s}.base:hover{border-color:color-mix(in srgb, var(--line-c) 36%, transparent)}.pair-btn,.tab-add,.quit-btn,.modes button,.later,.cmp-alt{transition:color .15s,border-color .15s,background-color .15s,transform .12s}.pair-btn:hover:not(:disabled){color:var(--text);border-color:color-mix(in srgb, var(--line-c) 50%, transparent);background:color-mix(in srgb, var(--hi) 4%, transparent)}}:is(.pair-btn,.tab-add,.quit-btn,.go,.later,.cmp-send,.cmp-alt,.ask-send,.sheet-yes,.new-base,.modes button,.spawn-dir,.d-doc,.thought,.more,.tab-btn):active:not(:disabled){transform:scale(.97)}.unit[data-mark=waiting]>.card{background:color-mix(in srgb, var(--amber) 11%, transparent)}.unit[data-mark=error]>.card{background:color-mix(in srgb, var(--err) 11%, transparent)}.unit[data-mark=working]>.card{background:color-mix(in srgb, var(--c) 7%, transparent)}.unit[data-mark=commanding]>.card,.token[data-mark=commanding]{background:color-mix(in srgb, var(--violet) 9%, transparent)}.plate{width:var(--s,40px);height:var(--s,40px);color:var(--c);background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--c) 26%, var(--plate-hi)), var(--plate) 72%);border-radius:50%;flex:none;place-items:center;transition:color .4s;display:grid;position:relative}.plate svg{width:calc(var(--s,40px) * .55);height:calc(var(--s,40px) * .55)}.ring,.plate:after{pointer-events:none;border-radius:50%;position:absolute;inset:-3px}.ring{opacity:0;background:conic-gradient(from 0deg, transparent 0 55%, var(--c));-webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 3px), var(--shadow) calc(100% - 2px));mask:radial-gradient(farthest-side, transparent calc(100% - 3px), var(--shadow) calc(100% - 2px))}.plate[data-mark=working]>.ring{opacity:1;animation:1.1s linear infinite spin}.plate:after{content:"";border:2px solid var(--c);opacity:0}.plate[data-mark=waiting]:after{animation:1.5s ease-out infinite ping}.badge{width:clamp(16px, calc(var(--s,40px) * .3), 24px);height:clamp(16px, calc(var(--s,40px) * .3), 24px);font:700 10px/1 var(--mono);color:var(--ink);background:var(--c);border-radius:50%;flex:none;place-items:center;transition:background-color .4s;display:grid}.plate>.badge{position:absolute;bottom:-4px;right:-4px}[data-mark=waiting]>.badge:after{content:"?"}[data-mark=idle]>.badge:after{content:"z"}[data-mark=done]>.badge:after{content:"✓"}[data-mark=error]>.badge:after{content:"!"}[data-mark=unknown]>.badge:after{content:"·"}[data-mark=commanding]>.badge:after{content:"◈"}[data-mark=working]>.badge:after{content:"";border:2px solid var(--ink);border-right-color:#0000;border-radius:50%;width:8px;height:8px;animation:.8s linear infinite spin}[data-mark=waiting]>.badge{animation:1.2s ease-in-out infinite hop}.meta{min-width:0;display:grid}.name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.line{color:var(--dim);align-items:baseline;gap:8px;min-width:0;font-size:12px;display:flex}.role{white-space:nowrap;letter-spacing:.1em;text-transform:uppercase;color:color-mix(in srgb, var(--c) 70%, var(--dim));flex:none;font-size:10px;font-style:normal}.note{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}[data-monitoring]{color:var(--err);font-weight:600}.unit[data-mark=idle]>.card{opacity:.85}.subs{margin:6px 0 0 22px;padding-left:18px;position:relative}.subs:empty{display:none}.base>.tower-subs{margin:-8px 0 12px 22px}.subs:before{content:"";background:repeating-linear-gradient(color-mix(in srgb, var(--line-c) 50%, transparent) 0 4px, transparent 4px 8px);width:1px;position:absolute;top:-4px;bottom:22px;left:3px}.subs>.unit>.card:before{content:"";background:repeating-linear-gradient(90deg, color-mix(in srgb, var(--line-c) 50%, transparent) 0 4px, transparent 4px 8px);width:15px;height:1px;position:absolute;top:50%;left:-15px}.subs>.unit{position:relative}.subs>.unit>.card:after{content:"";border:3px solid #0000;border-left:4px solid color-mix(in srgb, var(--line-c) 60%, transparent);pointer-events:none;position:absolute;top:calc(50% - 3px);left:-5px}.subs>.unit:is([data-mark=working],[data-mark=commanding])>.card:before{animation:.8s linear infinite flow-x}.subs:has(>.unit:is([data-mark=working],[data-mark=commanding])):before{animation:.8s linear infinite flow-y}@keyframes flow-x{to{background-position:8px 0}}@keyframes flow-y{to{background-position:0 8px}}.subs .plate{--s:30px}.subs .name{font-size:13px}.side{top:calc(var(--hud,64px) + 20px);gap:16px;display:grid;position:sticky}.panel{border:1px solid var(--line);background:var(--panel);border-radius:18px;padding:14px 16px}.panel h2{color:var(--dim);letter-spacing:.14em;text-transform:uppercase;margin-bottom:10px;font-size:11px}.timeline summary{cursor:pointer;align-items:baseline;gap:10px;min-width:0;list-style:none;display:flex}.timeline summary::-webkit-details-marker{display:none}.timeline summary:after{content:"▾";color:var(--dim);margin-left:8px;transition:transform .2s}.timeline:not([open]) summary:after{transform:rotate(-90deg)}.timeline h2{flex:none;margin:0}.tl-at{color:var(--dim);font:11px var(--mono);flex:none}.tl-last{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:12.5px;overflow:hidden}.tl-span{color:var(--dim);flex:none;margin-left:auto;font-size:11px}.tl-lanes{border-top:1px dashed var(--line);height:46px;margin-top:8px;position:relative}.tl-lanes:after{content:"";background:var(--accent);width:2px;box-shadow:0 0 8px color-mix(in srgb, var(--accent) 60%, transparent);border-radius:1px;position:absolute;top:0;bottom:0;right:0}.tl-mark{width:10px;height:10px;margin-left:-5px;position:absolute}.tl-mark:before{content:"";background:var(--c);border-radius:2px;position:absolute;inset:1px}.tl-mark:is([data-mark=waiting],[data-mark=error],[data-mark=commanding]):before{transform:rotate(45deg)}.tl-mark:is([data-mark=done],.joined,.left):before{border-radius:50%}.tl-mark.left:before{box-shadow:inset 0 0 0 1.5px var(--c);background:0 0}.tl-mark:hover:before,.tl-mark:focus-visible:before{box-shadow:0 0 0 3px color-mix(in srgb, var(--c) 35%, transparent)}.tl-mark:focus-visible{outline:none}.tl-mark:hover:after,.tl-mark:focus-visible:after{content:attr(aria-label);z-index:1;border:1px solid var(--line);background:var(--raised);color:var(--text);font:12px var(--sans);white-space:nowrap;box-shadow:0 6px 16px color-mix(in srgb, var(--shadow) 60%, transparent);border-radius:8px;padding:4px 8px;position:absolute;bottom:calc(100% + 8px);left:-6px}.tl-mark.end:hover:after,.tl-mark.end:focus-visible:after{left:auto;right:-6px}.tl-axis{color:var(--dim);font:10px var(--mono);justify-content:space-between;margin-top:4px;display:flex}.line .age{color:var(--dim);font:10.5px var(--mono);opacity:.85;flex:none}.line .age:empty{display:none}.line .age:before{content:"· "}.unit[data-mark=waiting]>.card .age,.title .age{color:var(--amber);opacity:1}.title .age{color:var(--dim)}.title .age:not(:empty):before{content:" · "}.todo{align-items:baseline;gap:6px;min-width:0;font-size:11.5px;display:flex}.todo b{color:var(--violet);font:600 10.5px var(--mono);flex:none}.todo span{white-space:nowrap;text-overflow:ellipsis;opacity:.85;min-width:0;overflow:hidden}.todo span:empty{display:none}.ticks{pointer-events:none;gap:3px;height:3px;display:flex;position:absolute;bottom:3px;left:52px;right:12px}.ticks:empty{display:none}.ticks i{background:var(--c);opacity:calc(.25 + .65 * var(--o,1));border-radius:1px;flex:0 0 6px}.card.ticked{padding-bottom:11px}.subs .ticks{left:44px}.minimap{z-index:4;box-sizing:content-box;border:1px solid var(--line);background:var(--panel);opacity:.65;cursor:pointer;border-radius:10px;padding:6px;transition:opacity .2s;position:fixed;bottom:20px;right:20px}.minimap:hover{opacity:1}.minimap.away{opacity:0;pointer-events:none}.mm-in{position:absolute;inset:6px}.mm-in i{background:color-mix(in srgb, var(--c) 35%, var(--surface-1));border-radius:2px;position:absolute}.mm-view{border:1px solid var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent);pointer-events:none;border-radius:3px;position:absolute;top:6px;left:4px;right:4px}.credit{color:var(--dim);padding:0 6px;font-size:11px}.bar{flex-wrap:wrap;align-items:center;gap:6px 16px;margin:12px 6px 0;display:flex}.bar-acts{align-items:center;gap:8px;display:flex}.bar-acts .pair-btn{border-radius:10px;padding:3px 9px;font-size:11px}.legend{color:var(--dim);flex-wrap:wrap;gap:4px 14px;margin:0 0 0 auto;padding:0;font-size:11px;list-style:none;display:flex}.legend li{align-items:center;gap:6px;display:flex}.legend .badge{width:13px;height:13px;font-size:8px}.foot{gap:10px;margin-top:14px;display:grid}.foot .credit{opacity:.75}.enter{animation:.5s cubic-bezier(.2,.9,.3,1.15) both pop}.leaving{pointer-events:none;animation:.35s ease-in both out}.flash>.card>.plate,.flash.tower{animation:.6s ease-out flash}.flash>.card{animation:.9s ease-out card-glow}.flash.flip>.card{animation-name:card-glow-b}.flash.flip>.card>.plate,.flash.flip.tower,.flash.flip.token>.plate{animation-name:flash-b}@keyframes spin{to{transform:rotate(360deg)}}@keyframes glow{0%,to{box-shadow:0 0 5px 0 var(--c4)}50%{box-shadow:0 0 16px 4px var(--c)}}.plate[data-mark=commanding]:before,.tower[data-mark=commanding]:after{content:"";pointer-events:none;border-radius:50%;animation:2.4s ease-in-out infinite glow;position:absolute;inset:-2px}.stats [data-mark=commanding][data-on],.comms-head[data-mark=commanding] .logo{border-color:var(--c4);animation:2.4s ease-in-out infinite glow}.comms-head[data-mark=commanding] .logo{color:var(--c)}.comms-head[data-mark=commanding] h2 span{color:var(--c);text-shadow:0 0 10px var(--c4)}@keyframes ping{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(1.7)}}@keyframes hop{50%{transform:translateY(-3px)}}@keyframes blink{50%{opacity:.35}}@keyframes pop{0%{opacity:0;transform:scale(.92)translateY(8px)}}@keyframes pop-b{0%{opacity:0;transform:scale(.92)translateY(8px)}}@keyframes out{to{opacity:0;transform:scale(.94)}}@keyframes out-b{to{opacity:0;transform:scale(.94)}}@keyframes flash{40%{transform:scale(1.12)}}@keyframes card-glow{30%{box-shadow:0 0 0 1px var(--c4), 0 0 18px 1px var(--c4)}}@keyframes card-glow-b{30%{box-shadow:0 0 0 1px var(--c4), 0 0 18px 1px var(--c4)}}@keyframes flash-b{40%{transform:scale(1.12)}}@keyframes slide{0%{opacity:0;transform:translate(10px)}}@keyframes slide-b{0%{opacity:0;transform:translate(10px)}}@keyframes zoom{0%{opacity:0;transform:scale(.45)}}@keyframes zoom-b{0%{opacity:0;transform:scale(.45)}}@keyframes come-in{0%{opacity:0;transform:translate(-14px)scale(.98)}}@keyframes go-out{0%{opacity:0;transform:translate(14px)scale(.98)}}.tx.fresh{animation:.32s cubic-bezier(.2,.8,.2,1) both come-in}.tx.you.fresh{animation-name:go-out}[data-calm] :is(.link i,.sweep,.pulse,.ring,.badge,.term-typing),[data-calm] :is(.plate,.badge):after{animation:none!important}[data-calm] .tower[data-mark=waiting] .pulse{opacity:.55}[data-calm] .plate[data-mark=waiting]:after{opacity:.55;transform:scale(1.25)}[data-calm] .packet{opacity:0;animation-play-state:paused!important}[data-calm] .subs:before,[data-calm] .subs>.unit>.card:before{animation:none!important}@media (prefers-reduced-motion:reduce),(hover:none) and (prefers-reduced-motion:reduce){.plate[data-mark=commanding]:before,.tower[data-mark=commanding]:after{box-shadow:0 0 12px 3px var(--c4)}.stats [data-mark=commanding][data-on],.comms-head[data-mark=commanding] .logo{box-shadow:0 0 12px 2px var(--c4)}}[data-calm] :is(.plate,.tower)[data-mark=commanding]:before,[data-calm] .tower[data-mark=commanding]:after{box-shadow:0 0 12px 3px var(--c4);animation:none!important}[hidden]{display:none!important}a{color:inherit}.crumbs,.tally dt,.comms-head small,.tx.you>header,.notice em,.rule summary,.dossier-in>.tag,.d-drones h4,.d-docs h4,.specs dt,.stop,.dialog .tag,.intel h4,.pending b{color:var(--dim);letter-spacing:.14em;text-transform:uppercase;font-size:11px;font-style:normal}.token .name,.drone .note,.count small,.sum,.where,.tile b{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.md a,.bubble a,.notice a,.d-note a,.specs a,.crumbs a{color:var(--accent)}.crumbs{gap:10px;min-width:0;display:flex}.crumbs>*+:before{content:"›";opacity:.5;margin-right:10px}.crumbs>*{white-space:nowrap;text-overflow:ellipsis;letter-spacing:.06em;flex:0 auto;min-width:0;max-width:28ch;overflow:hidden}.crumbs>:last-child{flex:auto;max-width:none}.crumb-more{cursor:pointer;color:var(--accent);display:none}.crumbs a,.brand{text-decoration:none}.work{align-items:flex-start;gap:20px;min-width:0;display:flex}.view{flex:1 1 0;min-width:0}body[data-stale=true] .work{opacity:.45}.enter-zoom{transform-origin:var(--ox,50%) var(--oy,0);animation:.5s ease-out both zoom}.enter-slide,.dossier{animation:.4s ease-out both slide}.enter-back{animation:.4s ease-out both pop}.enter-zoom.flip{animation-name:zoom-b}.enter-slide.flip{animation-name:slide-b}.enter-back.flip{animation-name:pop-b}.hit,.enter-base:after{z-index:1;border-radius:inherit;position:absolute;inset:0}.enter-base:after{content:"";z-index:0}.hit:hover{box-shadow:inset 0 0 0 1px var(--c)}.enter-base{text-decoration:none}.base>header:hover h2{color:var(--accent)}.alerts{width:210px;color:inherit;font:inherit;text-align:left;cursor:pointer;align-items:center;gap:10px;display:flex;position:relative}.alerts:disabled{cursor:default;opacity:.6}.alerts:not(:disabled){border-color:var(--c4);background:var(--c1)}.faces{flex:none;padding-left:10px;display:flex}.faces .plate{--s:28px;box-shadow:0 0 0 2px var(--raised);margin-left:-10px}.faces .badge{display:none}.count{min-width:0;display:grid}.count b{font:600 18px/1.1 var(--mono)}.count small,.comms-head p,.cmp-note,.where,.queued,.d-line,.who p{color:var(--dim);font-size:12px}.token{border:1px solid #0000;border-radius:16px;justify-items:center;gap:3px;width:100%;padding:10px 8px 9px;text-decoration:none;display:grid;position:relative}a.token:hover{border-color:var(--c4)}.token[data-mark=waiting]{background:color-mix(in srgb, var(--amber) 11%, transparent)}.token[data-mark=error]{background:color-mix(in srgb, var(--err) 11%, transparent)}.token .plate{--s:64px;margin-bottom:4px}.token .name{font-weight:600}.token .line{justify-items:center;max-width:100%;display:grid}.drone{width:94px;padding:6px;font-size:12px}.drone .plate{--s:44px}.drone .role{display:none}.agent{letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--c4);color:var(--dim);border-radius:8px;margin-left:4px;padding:0 5px;font-size:9px;font-style:normal}.agent:empty,.drone .agent{display:none}.flash.token>.plate{animation:.6s ease-out flash}.zoom-in,.comms-in{border:1px solid var(--line);background:var(--grid), var(--well);border-radius:22px;position:relative}.zoom-in{min-height:420px;padding:24px}.zoom-in.void>:not(.lost){display:none}.lost,.chat-empty{color:var(--dim);text-align:center;padding:60px 0}.keep{align-items:center;gap:20px;padding:18px 22px;display:flex}.keep h2{font-size:24px}.tower.big{width:120px;height:120px}.tower.big svg{width:72px;height:72px}.tower.big>.badge{--s:96px;bottom:4px;right:4px}a.tower:hover:before{border-color:var(--c)}.tally{gap:10px;display:flex}.squads,.camps{grid-template-columns:repeat(auto-fit,minmax(min(100%,430px),1fr));align-items:start;gap:18px;margin-top:20px;display:grid}.squad{background:color-mix(in srgb, var(--surface-0) 78%, transparent);padding:14px 16px 18px}.squad[data-mark=waiting]{background:color-mix(in srgb, var(--amber) 7%, var(--surface-0))}.squad h3{align-items:center;gap:10px;margin-bottom:14px;display:flex}.squad h3 b,.crumbs b{color:var(--text)}.squad h3 small{margin-left:auto}.squad h3 svg{width:18px;height:18px}.flag{background:var(--c);width:10px;height:10px;box-shadow:0 0 8px var(--c);border-radius:2px;transform:rotate(45deg)}.formation{flex-wrap:wrap;align-items:flex-start;gap:16px 20px;display:flex}.col{justify-items:center;gap:8px;width:196px;display:grid}.say{background:var(--raised);width:100%;color:var(--dim);border-radius:12px;margin-top:4px;padding:7px 10px;font-size:12px;line-height:1.35}.say p{overflow-wrap:anywhere;max-height:4.05em;overflow:hidden}.drones{flex-wrap:wrap;justify-content:center;gap:8px;width:100%;padding-top:16px;display:flex;position:relative}.drones:empty{display:none}.tower-drones{justify-content:flex-start;margin-top:-8px;padding-left:35px}.drones.tower-drones:before{left:82px}.drones:before{content:"";background:repeating-linear-gradient(color-mix(in srgb, var(--line-c) 60%, transparent) 0 4px, transparent 4px 8px);width:1px;height:14px;position:absolute;top:0;left:50%}.camp .token{width:156px}[data-group=outside] .plate{filter:saturate(.3);outline:1px dashed color-mix(in srgb, var(--dim) 55%, transparent);outline-offset:4px}.comms-in,.tile{height:calc(var(--vvh,100vh) - var(--hud,64px) - 64px);grid-template-rows:auto minmax(0,1fr) auto;min-height:380px;display:grid;overflow:hidden}.comms-head,.tile>header{background:var(--panel);align-items:center;gap:12px;padding:12px 18px;display:flex}.ava{width:30px;height:30px;color:var(--accent);background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--accent) 28%, transparent), var(--plate) 72%);border-radius:50%;flex:none;place-items:center;display:grid}.ava svg{width:58%;height:58%}.comms-head h2{font-size:16px}.chan{white-space:nowrap;flex:none;margin-left:auto}.head-id{flex:auto;min-width:0}.head-id h2,.head-id p{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.head-back{display:none}.modes+.chan{margin-left:12px}.chat-root{min-height:0;display:grid;position:relative}.comms-in .ask{max-height:calc((var(--vvh,100vh) - var(--hud,64px) - 64px) * .55);overscroll-behavior:contain;overflow-y:auto}.chat-scroll{overflow-anchor:none;padding:12px 16px;font-size:15px;overflow-y:auto}.chat-list{gap:8px;max-width:1040px;margin-inline:auto;display:grid}.tx.in+.tx.in,.tx.you+.tx.you{margin-top:-4px}.tx.in+.tx.in>.ava,.tx.you+.tx.you .ava{visibility:hidden}.tx.in+.tx.in .tx-body>header b,.tx.you+.tx.you>header b{display:none}.chat-top{height:1px}.chat-end{height:1px;margin-top:-1px}.chat-live{max-width:1040px;color:var(--c);align-items:center;gap:10px;margin:14px auto 0;padding-left:44px;font-size:12px;display:flex}.chat-pill{--c:var(--accent);border:0;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.lit:after{content:"";background:color-mix(in srgb, var(--accent) 18%, transparent);border-radius:14px;animation:1s 1s forwards out;position:absolute;inset:0}.lit.flip:after{animation-name:out-b}.composer{border-top:1px solid var(--line);background:var(--panel);gap:8px;padding:12px 18px 14px;display:grid;position:relative}.cmp-row,.cmp-acts,.cmp-foot,.cmp-note{align-items:center;gap:8px;display:flex}.cmp-row{align-items:flex-end;gap:10px}.composer textarea{resize:none;border:1px solid var(--line);background:var(--sunken);min-width:0;color:var(--text);font:14px/1.4 var(--sans);border-radius:12px;flex:1;padding:9px 12px}@supports (field-sizing:content){.composer textarea{field-sizing:content;max-height:220px}.composer{grid-template-columns:minmax(0,1fr)}}.composer textarea:focus{border-color:color-mix(in srgb, var(--accent) 50%, transparent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 12%, transparent);outline:none}.composer button:disabled{opacity:.45;cursor:default}.cmp-note{flex-wrap:wrap;flex:1;min-height:18px}.cmp-note[data-tone=error],.cmp-alt.cmp-stop{color:var(--err-soft)}.cmp-note[data-tone=ok]{color:var(--ok)}.cmp-note[data-tone=ask]{color:var(--gold)}.cmp-link{color:var(--accent);font:12px var(--sans);cursor:pointer;background:0 0;border:0;padding:0}.slash{z-index:5;border:1px solid var(--line);background:var(--surface-0);max-height:260px;box-shadow:0 8px 24px color-mix(in srgb, var(--shadow) 53%, transparent);border-radius:12px;margin:0;padding:4px;list-style:none;position:absolute;bottom:calc(100% - 6px);left:18px;right:18px;overflow-y:auto}.slash li{cursor:pointer;border-radius:8px;align-items:baseline;gap:10px;padding:6px 10px;display:flex}.slash li[aria-selected=true]{background:color-mix(in srgb, var(--accent) 12%, transparent)}.slash b{color:var(--accent);font:600 13px var(--mono);white-space:nowrap}.slash span{min-width:0;color:var(--dim);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.cmp-yes{background:var(--gold);color:var(--ink);font:600 12px var(--sans);cursor:pointer;border:0;border-radius:8px;padding:3px 10px}.tx{content-visibility:auto;contain-intrinsic-size:auto 220px;min-width:0}.tx.you{contain-intrinsic-size:auto 76px}.tx.sys,.tx.rule{contain-intrinsic-size:auto 40px}.tx.note{contain-intrinsic-size:auto 24px}.tx time,.tx.note{color:var(--dim);font:11px var(--mono)}.tx.you{justify-items:end;gap:5px;display:grid}.tx.you>header{color:var(--gold);align-items:center;gap:8px;display:flex}.tx.you .ava{color:var(--gold)}.bubble{border:1px solid color-mix(in srgb, var(--gold) 22%, transparent);background:color-mix(in srgb, var(--gold) 8%, transparent);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:14px;max-width:80%;padding:7px 12px;line-height:1.5}.tx.in{grid-template-columns:30px minmax(0,1fr);align-items:start;gap:8px;display:grid}.tx-body{border:1px solid var(--line);background:var(--panel);border-radius:14px;gap:6px;padding:8px 12px;display:grid}.tx-body,.tx-body>*{min-width:0}.tx-body>header{color:var(--dim);font:11px var(--mono);align-items:baseline;gap:10px;display:flex}.tx-body>header b{color:var(--accent);font:600 13px var(--sans)}.stop,.dialog .tag{background:var(--c1);color:var(--c);border-radius:999px;padding:1px 8px;font-size:10px}.fault{color:var(--err-soft);font-size:13px}.thought,.more,.tab-btn{border:1px solid var(--line);color:var(--dim);font:11px var(--sans);cursor:pointer;background:0 0;border-radius:999px;justify-self:start;padding:2px 10px}.thought-text:empty{display:none}.thought-text,.out,.args,.notice pre,.rule pre{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--dim);font:13px/1.45 var(--mono)}.act,.notice{border:1px solid color-mix(in srgb, var(--hi) 7%, transparent);background:color-mix(in srgb, var(--hi) 3%, transparent);border-radius:10px}.act>summary,.notice>summary,.rule summary{cursor:pointer;align-items:center;gap:8px;min-width:0;padding:5px 10px;font-size:13.5px;list-style:none;display:flex}summary::-webkit-details-marker{display:none}.act code{color:var(--c);font:600 11px var(--mono);letter-spacing:.06em;text-transform:uppercase}.sum{min-width:0;color:var(--dim)}.act[open] .sum{white-space:normal}.open{flex:none;margin-left:auto}.act>pre,.result{margin:0 10px 8px}.result{gap:6px;display:grid}.tx.sys{padding-left:38px}.notice{border-color:color-mix(in srgb, var(--violet) 20%, transparent);background:color-mix(in srgb, var(--violet) 7%, transparent)}.notice .ava{width:22px;height:22px}.notice pre,.rule pre{padding:0 10px 8px}.rule summary{justify-content:center}.rule summary:before,.rule summary:after{content:"";background:var(--line);flex:1;height:1px}.tx.note{text-align:center}.dossier-in{text-align:center;justify-items:center;gap:6px;display:grid;position:relative}.dossier-in>.tag{text-align:left;justify-self:stretch}.portrait{background:radial-gradient(var(--c1), transparent 70%);border-radius:50%;padding:8px}.portrait .plate{--s:96px}.dossier-in h3{overflow-wrap:anywhere;margin-top:4px;font-size:18px}.d-line,.who p{align-items:baseline;gap:8px;display:flex}.d-note{background:color-mix(in srgb, var(--amber) 12%, transparent);border-radius:10px;padding:8px 10px;font-size:12px}.specs{text-align:left;justify-self:stretch;gap:2px;margin-top:10px;display:grid}.specs div{background:color-mix(in srgb, var(--hi) 4%, transparent);grid-template-columns:76px minmax(0,1fr);gap:8px;padding:7px 10px;display:grid}.specs dt{font-size:10px}.specs dd{overflow-wrap:anywhere;font-size:12.5px}.d-drones,.d-squads{margin-top:8px}.d-squads{justify-self:stretch;gap:10px;display:grid}.d-squad{gap:6px;display:grid}.d-squad small{color:var(--dim)}.d-squad .formation{gap:6px}.d-x,.head-info{display:none}.d-drones .formation{justify-content:center;gap:6px}.md{overflow-wrap:anywhere;line-height:1.55}.md p,.md ul,.md ol,.md pre,.md table,.md blockquote{margin:0 0 8px}.md>:last-child{margin-bottom:0}.md :is(h1,h2,h3,h4,h5,h6){margin:12px 0 6px;font-size:16px}.md>:first-child{margin-top:0}.md h1{font-size:19px}.md ul,.md ol{padding-left:22px}.md li>p{margin:0}.md li.task{margin-left:-18px;list-style:none}.check{vertical-align:-2px;text-align:center;width:14px;height:14px;font:700 10px/12px var(--mono);border:1px solid;border-radius:4px;margin-right:7px;display:inline-block}.check[data-done=true]{background:var(--ok);color:var(--ink)}.md code{background:color-mix(in srgb, var(--hi) 8%, transparent);font:13.5px var(--mono);border-radius:5px;padding:1px 5px}.md pre{border:1px solid var(--line);background:var(--sunken);border-radius:10px;padding:10px 12px;overflow-x:auto}.md pre code{background:0 0;padding:0}.md blockquote{background:color-mix(in srgb, var(--hi) 4%, transparent);color:var(--dim);padding:6px 12px}.md table{border-collapse:collapse;display:block;overflow-x:auto}.md th,.md td{border:1px solid var(--line);padding:4px 10px}.tiles{flex:1 1 0;gap:20px;min-width:0;display:flex}.tile-tabs{display:none}.tile{min-width:0;top:calc(var(--hud,64px) + 20px);border:1px solid var(--line);background:var(--panel);border-radius:22px;flex:1 1 0;position:sticky}.tile>header svg{width:22px;height:22px;color:var(--gold)}.tile{grid-template-columns:minmax(0,1fr)}.tile>header b{flex:1;min-width:0}.tile-body{padding:16px 20px;overflow:auto}.tiles.tabbed{flex-direction:column;gap:8px}.tile:has(.spawn,.pair){height:auto;min-height:0;max-height:calc(var(--vvh,100vh) - var(--hud,64px) - 64px);align-self:flex-start}.spawn .chat-empty{text-align:left;padding:0}.spawn .chat-empty:empty{display:none}.tiles.tabbed .tile-tabs{gap:6px;display:flex}.tiles.tabbed .tile:not(.active){display:none}.tiles.tabbed .tile{flex:none}.tab-btn.active,.open{border-color:color-mix(in srgb, var(--gold) 40%, transparent);color:var(--gold)}.dock{z-index:20;top:calc(var(--hud,64px) + 24px);pointer-events:none;width:min(300px,100vw - 44px);display:grid;position:fixed;right:max(20px,50vw - 1080px)}.dialog{pointer-events:auto;border:1px solid var(--c4);background:linear-gradient(var(--c1), var(--surface-0) 70%), var(--raised);box-shadow:0 24px 60px color-mix(in srgb, var(--shadow) 80%, transparent);transform-origin:top;border-radius:18px;grid-area:1/1;padding:14px 16px 16px;transition:transform .3s,opacity .3s;position:relative}.dialog:focus{outline:none}.dialog{max-height:calc(100dvh - var(--hud,64px) - 44px);overscroll-behavior:contain;overflow-y:auto}.dialog>header{align-items:center;gap:8px;min-width:0;margin-bottom:12px;display:flex}.where{min-width:0}.x{color:var(--dim);cursor:pointer;background:0 0;border:0;margin-left:auto;font-size:20px}.zoom{color:var(--dim);cursor:pointer;background:0 0;border:0;margin-left:auto;padding:0 6px;font-size:17px}.zoom+.x{margin-left:0}.zoom:hover,.x:hover{color:var(--text)}.dock.wide{width:min(880px,100vw - 44px);top:72px;right:50%;transform:translate(50%)}.dock.wide .dialog{max-height:calc(100dvh - 96px)}.who{align-items:center;gap:14px;display:flex}.who .plate{--s:56px}.who h3{font-size:17px}.intel{background:color-mix(in srgb, var(--bg) 55%, transparent);border-radius:12px;margin-top:12px;padding:10px 12px}.intel h4{margin-bottom:4px}.said{overflow-wrap:anywhere;font-size:13px;line-height:1.45}.pending{color:var(--c);font:12px var(--mono);overflow-wrap:anywhere;margin-top:8px}.dialog footer{flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px;display:flex}.ask{border:1px solid color-mix(in srgb, var(--amber) 35%, transparent);background:color-mix(in srgb, var(--amber) 6%, transparent);border-radius:14px;gap:8px;margin:10px 18px 0;padding:12px 14px;display:grid}.dialog .ask{margin:10px 0 0}.ask-one{gap:8px;display:grid}.ask-one+.ask-one{margin-top:8px}.ask-head{background:color-mix(in srgb, var(--amber) 14%, transparent);color:var(--gold);letter-spacing:.06em;text-transform:uppercase;border-radius:999px;justify-self:start;padding:1px 9px;font-size:11px}.ask-how{color:var(--dim);font-size:12px}.ask-q{white-space:pre-wrap;overflow-wrap:anywhere;font-weight:600}.ask-ctx,.ask-why{color:var(--dim);white-space:pre-wrap;overflow-wrap:anywhere;max-height:9em;font-size:13px;overflow:auto}.ask-opts{counter-reset:opt;gap:6px;max-height:16em;margin:0;padding:0;list-style:none;display:grid;overflow:auto}.ask-opt{border:1px solid var(--line);background:var(--sunken);overflow-wrap:anywhere;counter-increment:opt;border-radius:10px;gap:2px;padding:7px 12px;font-size:13px;display:grid}.ask-opt b:before{content:counter(opt) ". ";color:var(--dim)}.ask-opt b[data-n]:before{content:attr(data-n) ". "}.ask-opt small{color:var(--dim);font-size:12px}.ask-acts{flex-wrap:wrap;align-items:center;gap:6px 14px;display:flex}.ask-acts>:last-child{margin-left:auto}.ask-term{color:var(--gold);font-size:12px}.ask button:disabled{opacity:.45;cursor:default}.ask-note:empty{display:none}.ask-note{color:var(--dim);flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:12px;display:flex}.ask-note[data-tone=error]{color:var(--err-soft)}.ask-note[data-tone=ok]{color:var(--ok)}.ask-title{font:12.5px/1.45 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;max-height:12em;margin:0;overflow:auto}div.ask-opts{max-height:none;overflow:visible}button.ask-opt{text-align:left;color:var(--text);font:13px var(--sans);cursor:pointer}.ask-opt[aria-checked=true]{border-color:var(--amber);background:color-mix(in srgb, var(--amber) 12%, transparent)}.ask-own{resize:vertical;field-sizing:content;border:1px solid var(--line);background:var(--sunken);min-width:0;max-height:10em;color:var(--text);font:13px var(--sans);border-radius:10px;padding:7px 12px}.ask-memo{font-size:12px}.ask input:disabled,.ask textarea:disabled{opacity:.45}.ask-send{background:var(--amber);color:var(--ink);font:600 13px var(--sans);cursor:pointer;border:0;border-radius:10px;padding:7px 13px}.go,.later,.chat-pill,.cmp-send,.cmp-alt{font:600 13px var(--sans);cursor:pointer;border-radius:10px;padding:7px 13px;text-decoration:none}.go,.chat-pill{background:var(--c);color:var(--ink)}a.go{justify-content:center;align-items:center;display:inline-flex}.cmp-send{background:var(--accent);color:var(--ink);border:0}.later,.cmp-alt{border:1px solid var(--line);color:var(--text);background:0 0}.queued{color:var(--dim);flex:1 0 100%;font-size:12px}.queued:empty{display:none}html.paused *,html.paused :before,html.paused :after{animation-play-state:paused!important}@media (width<=1100px){.stage[data-view]{grid-template-columns:1fr}.side{position:static}}@media (width<=1040px){.stats{display:none}}.term-tile{grid-template-rows:auto minmax(0,1fr) auto;gap:10px;height:100%;display:grid}.tile-body:has(.term-tile){padding:12px 14px;overflow:hidden}.term-bar{justify-content:space-between;align-items:center;gap:12px;font-size:12px;display:flex}.term-scroll{transition:border-color .2s,box-shadow .2s}.term-scroll.typing{border-color:var(--accent);box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent), 0 0 22px color-mix(in srgb, var(--accent) 18%, transparent)}.term-scroll.engage{animation:.6s ease-out term-engage}.term-scroll.blip{animation:.22s ease-out term-blip}.term-scroll.blip.flip{animation-name:term-blip-b}@keyframes term-engage{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 80%, transparent), 0 0 0 color-mix(in srgb, var(--accent) 0%, transparent)}60%{box-shadow:0 0 0 7px color-mix(in srgb, var(--accent) 0%, transparent), 0 0 34px color-mix(in srgb, var(--accent) 40%, transparent)}to{box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent), 0 0 22px color-mix(in srgb, var(--accent) 18%, transparent)}}@keyframes term-blip{0%{box-shadow:0 0 0 2px color-mix(in srgb, var(--accent-hi) 80%, transparent), 0 0 32px color-mix(in srgb, var(--accent) 53%, transparent)}to{box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent), 0 0 22px color-mix(in srgb, var(--accent) 18%, transparent)}}@keyframes term-blip-b{0%{box-shadow:0 0 0 2px color-mix(in srgb, var(--accent-hi) 80%, transparent), 0 0 32px color-mix(in srgb, var(--accent) 53%, transparent)}to{box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent), 0 0 22px color-mix(in srgb, var(--accent) 18%, transparent)}}.term-sink{opacity:0;resize:none;pointer-events:none;border:0;width:1px;height:18px;padding:0;position:fixed;overflow:hidden}.term-typing{color:var(--accent);margin-left:auto;font-weight:600;animation:1.6s ease-in-out infinite term-note}@keyframes term-note{50%{opacity:.55;text-shadow:0 0 10px color-mix(in srgb, var(--accent) 60%, transparent)}}.term-state{color:var(--dim)}.term-state[data-tone=ok]{color:var(--ok)}.term-state[data-tone=error]{color:var(--err-soft)}.term-scroll{overscroll-behavior:contain;border:1px solid var(--line);background:var(--term-bg);border-radius:14px;padding:8px 10px;overflow:auto}@font-face{font-family:SB Nerd Symbols;src:local(SymbolsNFM),local(Symbols Nerd Font Mono),local(HackNFM-Regular),url(./SymbolsNerdFontMono-DkrHkSnn.woff2)format("woff2");unicode-range:U+E000-F8FF,U+F0000-FFFFD;font-display:swap}.term{width:max-content;min-width:100%;color:var(--term-fg);font:12px/1.3 var(--mono);white-space:pre;font-family:ui-monospace,SF Mono,Menlo,Consolas,SB Nerd Symbols,monospace;transition:opacity .2s}.term .tr{min-height:1.3em}.term.stale{opacity:.5}.term.hidden{display:none}.plate[data-docs]:before{content:attr(data-docs);z-index:1;background:linear-gradient(var(--paper-hi), var(--paper));min-width:10px;height:16px;color:var(--paper-ink);font:700 9px/16px var(--mono);text-align:center;box-shadow:0 0 0 2px var(--plate), 2px 2px 0 1px var(--paper-edge);border-radius:3px 6px;padding:0 3px;position:absolute;top:-5px;left:-5px}.d-docs{text-align:left;margin-top:12px}.d-docs h4{text-align:center;margin:0 0 6px}.d-doc-list{gap:6px;display:grid}.d-doc{border:1px solid color-mix(in srgb, var(--paper) 25%, transparent);background:color-mix(in srgb, var(--paper) 7%, transparent) no-repeat 9px 50% / 13px 16px linear-gradient(var(--paper-hi), var(--paper));width:100%;color:var(--text);font:13px var(--sans);text-align:left;cursor:pointer;border-radius:10px;gap:1px;padding:7px 10px 7px 30px;display:grid}.d-doc:hover{border-color:color-mix(in srgb, var(--paper) 67%, transparent)}.d-doc b{overflow-wrap:anywhere;font-weight:600}.d-doc small{color:var(--dim);font-size:11px}.d-docs-cut{color:var(--dim);margin:6px 0 0;font-size:12px}.doc-tile{grid-template-rows:auto minmax(0,1fr);gap:10px;height:100%;display:grid}.tile-body:has(.doc-tile){padding:12px 14px;overflow:hidden}.doc-bar{flex-wrap:wrap;justify-content:flex-start}.doc-why{min-width:0;color:var(--text);flex:160px}.doc-off{color:var(--gold);font-style:normal}.doc-acts{align-items:center;gap:14px;display:flex}.doc-acts>.cmp-link{align-items:center;display:inline-flex}.doc-frame{border:1px solid color-mix(in srgb, var(--paper) 33%, transparent);background:#fff;border-radius:12px;width:100%;height:100%;min-height:240px}.doc-text{border:1px solid color-mix(in srgb, var(--paper) 25%, transparent);background:var(--plate);border-radius:12px;padding:14px 18px;overflow:auto}.doc-pre{white-space:pre-wrap;font:12.5px/1.45 var(--mono);margin:0}.pad{gap:6px;display:grid}.pad-row{grid-template-columns:repeat(auto-fit,minmax(48px,1fr));gap:6px;display:grid}.pad-key{border:1px solid var(--line);background:var(--surface-0);min-height:34px;color:var(--text);font:600 12px var(--mono);cursor:pointer;border-bottom-width:3px;border-radius:9px;padding:4px 6px}.pad-key:active:not(:disabled){background:var(--raised);border-bottom-width:1px;transform:translateY(2px)}.pad-key:disabled{opacity:.35;cursor:default}.pad-key[data-key=enter]{color:var(--accent)}.pad-key[data-key=esc]{color:var(--gold)}.pad-key:is([data-key=up],[data-key=down],[data-key=left],[data-key=right],[data-key=backspace]){font-size:16px}.pad-digits summary{color:var(--dim);cursor:pointer;padding:2px 0;font-size:12px}.pad-note:empty{display:none}.pad-note{color:var(--dim);flex-wrap:wrap;align-items:center;gap:6px 12px;margin:0;font-size:12px;display:flex}.pad-note[data-tone=error]{color:var(--err-soft)}.pad-note[data-tone=ask]{border:1px solid color-mix(in srgb, var(--amber) 40%, transparent);background:color-mix(in srgb, var(--amber) 8%, transparent);color:var(--text);border-radius:10px;padding:8px 10px}.pad-yes{background:var(--amber);color:var(--ink);font:600 12px var(--sans);cursor:pointer;border:0;border-radius:9px;padding:5px 11px}.c0{color:#414868}.cz{color:var(--term-bg)}.c1{color:#f7768e}.c2{color:#9ece6a}.c3{color:#e0af68}.c4{color:#7aa2f7}.c5{color:#bb9af7}.c6{color:#7dcfff}.c7{color:#a9b1d6}.c8{color:#545c7e}.c9{color:#ff899d}.c10{color:#9fe044}.c11{color:#faba4a}.c12{color:#8db0ff}.c13{color:#c7a9ff}.c14{color:#a4daff}.c15{color:#c0caf5}.k0{background:var(--term-bg)}.k1{background:#f7768e}.k2{background:#9ece6a}.k3{background:#e0af68}.k4{background:#7aa2f7}.k5{background:#bb9af7}.k6{background:#7dcfff}.k7,.kz{background:#a9b1d6}.k8{background:#545c7e}.k9{background:#ff899d}.k10{background:#9fe044}.k11{background:#faba4a}.k12{background:#8db0ff}.k13{background:#c7a9ff}.k14{background:#a4daff}.k15{background:#c0caf5}.tb{font-weight:700}.td{opacity:.6}.ti{font-style:italic}.tu{text-decoration:underline}.ts{text-decoration:line-through}.tu.ts{text-decoration:underline line-through}.drawer,.drawer-veil{display:none}.drawer{z-index:30;background:var(--surface-0);border-right:1px solid var(--line);width:min(86vw,360px);box-shadow:8px 0 30px color-mix(in srgb, var(--shadow) 50%, transparent);transform:translateX(calc(var(--dx,0px) - 100%));visibility:hidden;flex-direction:column;transition:transform .22s ease-out,visibility 0s .22s;display:flex;position:fixed;inset:0 auto 0 0}.drawer.on{visibility:visible;transition:transform .22s ease-out}.drawer-veil{z-index:29;background:color-mix(in srgb, var(--shadow) 60%, transparent);opacity:0;pointer-events:none;transition:opacity .22s;position:fixed;inset:0}.drawer-drag .drawer,.drawer-drag .drawer-veil{transition:none}.drawer>header{padding:max(12px, env(safe-area-inset-top)) 12px 8px max(14px, env(safe-area-inset-left));color:var(--dim);letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;align-items:center;font-size:12px;display:flex}.drawer-body{overscroll-behavior:contain;padding:4px 10px max(16px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left));flex:1;align-content:start;gap:12px;display:grid;overflow-y:auto}.dbase h3{justify-content:space-between;align-items:baseline;gap:8px;margin:0 0 6px;font-size:14px;display:flex}.dbase h3 a{color:var(--text);text-overflow:ellipsis;white-space:nowrap;text-decoration:none;overflow:hidden}.dbase h3 small,.dgroup h4{color:var(--dim);letter-spacing:.1em;text-transform:uppercase;font-size:11px}.dbase[data-mark=waiting] h3 a{color:var(--c)}.dgroups,.drows{gap:6px;display:grid}.dgroup h4{margin:4px 0 0;font-weight:600}.drawer .card{gap:8px;min-height:44px;padding:6px 8px}.drawer .plate{--s:28px}.drawer .subs{margin-left:16px;padding-left:12px}.drawer .line{gap:6px}.drawer .dstate{color:var(--c);flex:none;font-size:11px;font-weight:600}.drawer .unit.current>.card{border-color:var(--c4);box-shadow:inset 3px 0 0 var(--c)}@media (width<=640px){.drawer{display:flex}.drawer-veil{display:block}}@media (width<=900px){.work{flex-direction:column;align-items:stretch}.view,.tiles{flex:none}.tile{position:static}.keep{flex-wrap:wrap}}@media (width<=640px){.shell{padding:max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left))}.hud{flex-wrap:wrap;gap:10px;padding:10px 12px;position:static}.brand p,.link span{display:none}.alert-row{flex:100%;order:3;min-width:0}.alert-row .alerts{flex:auto;width:auto;min-width:0}.done-btn{min-height:40px}.brand{flex:auto;min-width:0}.prefs-btn{width:40px;height:40px}.prefs-pop>*{min-height:40px}.tl-span{display:none}.crumbs{gap:6px}.crumbs>*+:before{margin-right:6px}.crumbs>*{max-width:16ch}.crumbs:not(.open)>.mid{display:none}.crumbs:not(.open)>.crumb-more{flex:none;display:block}.crumbs.open{flex-wrap:wrap;row-gap:4px}.map,.zoom-in{padding:14px}.bases{column-gap:18px}.legend{display:none}.keep{gap:12px;padding:6px}.tower.big{width:84px;height:84px}.tower-drones{padding-left:1px}.drones.tower-drones:before{left:48px}.tally{flex-wrap:wrap}.col{width:100%}.dossier:not(.full){content-visibility:hidden}.comms-in,.dossier.full{left:0;right:0;top:var(--vvt,0px);height:var(--vvh,100dvh);background:var(--bg);position:fixed}.tiles:has(.tile){left:0;right:0;top:var(--vvt,0px);height:var(--vvh,100dvh);background:var(--bg);position:fixed}.comms-in{z-index:15;border:0;border-radius:0;grid-template-columns:minmax(0,1fr);min-height:0}.tiles:has(.tile){z-index:16;padding:8px;overflow-y:auto}.tile{height:calc(var(--vvh,100dvh) - 16px);border-radius:16px;min-height:300px}.dossier.full{z-index:17;overscroll-behavior:contain;padding:max(16px, env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom));border:0;border-radius:0;overflow-y:auto}.dossier.full .d-x{place-items:center;display:grid;position:absolute;top:0;right:0}.comms-head{padding:max(10px, env(safe-area-inset-top)) 12px 10px;grid-template-columns:auto minmax(0,1fr) auto auto;gap:8px 10px;display:grid}.comms-head .logo{display:none}.head-back{border:1px solid var(--line);width:40px;height:40px;color:var(--text);border-radius:12px;place-items:center;font-size:24px;text-decoration:none;display:grid}.head-info{padding:0 12px;display:block}.comms-head h2 small,.chan b{display:none}.modes+.chan{margin-left:0}.modes{border:1px solid var(--line);border-radius:12px;grid-area:2/1/auto/-1;padding:3px}.modes button{border:0;border-radius:9px;flex:1;min-height:40px;padding:0;font-size:14px}.modes button[aria-pressed=true]{background:color-mix(in srgb, var(--accent) 12%, transparent)}.chat-scroll{overscroll-behavior:contain;padding:12px}.chat-scroll:focus-visible{outline:none}.bubble{max-width:92%}.composer{padding:10px 12px calc(10px + env(safe-area-inset-bottom))}.cmp-foot:has(>.cmp-note:empty){display:none}.cmp-row{flex-wrap:wrap}.composer textarea{flex:100%;order:-1;min-height:64px}.cmp-acts{margin-left:auto}.dock,.dock.wide{width:calc(100vw - 20px);top:auto;right:10px}.dock{bottom:calc(10px + env(safe-area-inset-bottom))}.dock.wide{transform:none}.dialog .zoom{display:none}}@media (pointer:coarse){.composer textarea,.ask input,.ask textarea{font-size:16px}.composer button,.go,.later,.x,.chat-pill,.pair-btn,.alerts,.ask button,.term-bar button,.doc-acts>.cmp-link,.quit-btn,.d-doc{min-height:40px}}@media (width<=640px),(pointer:coarse){.pad-key,.pad-yes{min-height:44px}.pad-digits summary{padding:14px 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
1
+ :root{--bg:#16161e;--bg-2:#1a1b26;--surface-0:#1f2335;--surface-1:#24283b;--raised:#1f2335;--sunken:#16161e;--well:#16161e8c;--panel:#1f2335eb;--plate:#1a1b26;--plate-hi:#292e42;--term-bg:#16161e;--term-fg:#c0caf5;--line-c:#737aa2;--line:#737aa242;--hi:#fff;--shadow:#08080d;--text:#c0caf5;--dim:#868dba;--ink:#16161e;--accent:#7dcfff;--accent-hi:#b4e4ff;--working:#7dcfff;--gold:#e0af68;--amber:#ff9e64;--ok:#9ece6a;--err:#f7768e;--err-soft:#ff9fb0;--violet:#bb9af7;--idle:#737aa2;--unknown:#545c7e;--paper-hi:#f6e6b8;--paper:#d8bd78;--paper-ink:#3b2a06;--paper-edge:#8a6f33;--aura-1:color-mix(in srgb, var(--accent) 7%, transparent);--aura-2:color-mix(in srgb, var(--violet) 8%, transparent);--grid:linear-gradient(color-mix(in srgb, var(--line-c) 5%, transparent) 1px, transparent 1px) 0 0 / 44px 44px, linear-gradient(90deg, color-mix(in srgb, var(--line-c) 5%, transparent) 1px, transparent 1px) 0 0 / 44px 44px;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--sans:ui-rounded, "Avenir Next", "Trebuchet MS", system-ui, -apple-system, "Segoe UI", sans-serif}*{box-sizing:border-box;margin:0}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;-webkit-font-smoothing:antialiased;scrollbar-color:color-mix(in srgb, var(--line-c) 45%, transparent) transparent}::selection{background:color-mix(in srgb, var(--accent) 28%, transparent)}body{min-height:100vh;color:var(--text);font:14px/1.4 var(--sans);background:radial-gradient(1100px 640px at 12% -10%, var(--aura-1), transparent 62%), radial-gradient(900px 600px at 98% 8%, var(--aura-2), transparent 60%), linear-gradient(var(--bg), var(--bg-2));background-attachment:fixed}svg{display:block}[data-mark=working]{--c:var(--working)}[data-mark=waiting]{--c:var(--amber)}[data-mark=idle]{--c:var(--idle)}[data-mark=done]{--c:var(--ok)}[data-mark=error]{--c:var(--err)}[data-mark=unknown]{--c:var(--unknown)}[data-mark=commanding]{--c:var(--violet)}[data-mark]{--c1:color-mix(in srgb, var(--c) 13%, transparent);--c4:color-mix(in srgb, var(--c) 45%, transparent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.shell{max-width:2200px;margin:0 auto;padding:14px 20px 32px}.hud{border:1px solid var(--line);background:var(--panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:5;border-radius:16px;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:8px 12px;display:flex;position:sticky;top:8px}.brand{align-items:center;gap:12px;margin-right:8px;display:flex}.logo{width:36px;height:36px;color:var(--accent);background:radial-gradient(circle at 30% 25%, color-mix(in srgb, var(--accent) 30%, transparent), color-mix(in srgb, var(--bg-2) 90%, transparent));border:1px solid var(--line);border-radius:11px;place-items:center;display:grid}.logo svg{width:24px;height:24px;filter:drop-shadow(0 0 5px color-mix(in srgb, var(--accent) 70%, transparent))}.brand h1{letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;font-size:17px}.brand p{color:var(--dim);font-size:12px}.stats{background:color-mix(in srgb, var(--hi) 4%, transparent);border:1px solid color-mix(in srgb, var(--hi) 6%, transparent);border-radius:13px;gap:2px;padding:2px;display:flex}.stats div,.tally div,.alerts{background:color-mix(in srgb, var(--hi) 4%, transparent);border:1px solid color-mix(in srgb, var(--hi) 6%, transparent);border-radius:12px;min-width:0;padding:4px 10px}.stats dt,.tally dt{color:var(--dim);letter-spacing:.08em;text-transform:uppercase;font-size:10px}.stats dd,.tally dd{font:600 17px/1.15 var(--mono);font-variant-numeric:tabular-nums}.stats div{background:0 0;border-color:#0000;border-radius:10px;min-width:4.5em;padding:3px 10px}.tally dd{font-size:20px}.stats [data-mark] dd,.tally [data-mark] dd,.count b{color:var(--c)}.pair-btn{white-space:nowrap;border:1px solid var(--line);color:var(--dim);font:600 12px var(--sans);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:12px;padding:6px 10px}.tog{align-items:center;gap:6px;display:inline-flex}.tog:before{content:"";background:var(--line);border-radius:50%;flex:none;width:7px;height:7px}.tog[data-state=on]{color:var(--text);border-color:color-mix(in srgb, var(--accent) 35%, var(--bg))}.tog[data-state=on]:before{background:var(--accent);box-shadow:0 0 6px var(--accent)}.tog[data-state=ask]:before{background:var(--gold)}.tog[data-state=blocked]:before{background:var(--err)}.tog[data-state=done]{color:var(--text)}.tog[data-state=done]:before{background:var(--ok);box-shadow:0 0 6px var(--ok)}.tog[data-state=error]{color:color-mix(in srgb, var(--err-soft) 45%, var(--hi))}.tog[data-state=error]:before{background:var(--err);box-shadow:0 0 6px var(--err)}.alert-row{align-items:center;gap:10px;min-width:0;display:flex}.done-btn{white-space:nowrap;flex:none}.prefs-btn{place-items:center;width:34px;height:34px;margin-left:auto;padding:0;display:grid}.prefs-btn svg{fill:currentColor;width:18px;height:18px}.prefs-btn:hover,.prefs-btn[aria-expanded=true]{color:var(--text)}.prefs-btn:has(+.prefs-pop #remind[data-state=blocked]){color:var(--err-soft)}.prefs-pop{width:210px}.prefs-pop:popover-open{gap:6px;display:grid}.prefs-pop>.pair-btn{text-align:left;justify-content:flex-start;width:100%}.hud-pop{border:1px solid var(--line);background:var(--raised);color:var(--text);font:13px/1.4 var(--sans);box-shadow:0 12px 32px color-mix(in srgb, var(--shadow) 60%, transparent);border-radius:14px;margin:0;padding:12px;position:fixed;inset:auto}.sound-pop{gap:12px;width:240px}.sound-pop:popover-open{display:grid}.sound-pop label{justify-content:space-between;align-items:center;gap:10px;display:flex}.sound-pop input[type=range]{min-width:0;accent-color:var(--accent);flex:1}.sound-pop input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent)}.sound-pop output{text-align:right;width:3ch;font:12px var(--mono);color:var(--dim)}.done-pop{width:min(340px,100vw - 16px)}.done-pop ul{gap:2px;max-height:50vh;margin:0 0 10px;padding:0;list-style:none;display:grid;overflow:auto}.done-go{color:inherit;border-radius:10px;align-items:center;gap:10px;padding:6px 8px;text-decoration:none;display:flex}.done-go:hover,.done-go:focus-visible{background:color-mix(in srgb, var(--hi) 6%, transparent)}.done-go .plate{--s:30px;flex:none}.done-go .badge{display:none}.done-go span{min-width:0;display:grid}.done-go .name{font-weight:600}.done-go .name,.done-go small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.done-go small{color:var(--dim)}#done-clear,#sound-try{width:100%}.lang{text-transform:none}.lang option{background:var(--bg);color:var(--text)}.pair{text-align:center;color:var(--dim);justify-items:center;gap:12px;font-size:13px;display:grid}.qr{shape-rendering:crispedges;border-radius:12px;width:min(100%,300px)}.devices{text-align:left;border-top:1px solid var(--line);gap:8px;width:100%;padding-top:12px;display:grid}.devices h4{font:600 12px var(--sans);letter-spacing:.08em;text-transform:uppercase;margin:0}.devices ul{gap:6px;margin:0;padding:0;list-style:none;display:grid}.devices li{justify-content:space-between;align-items:center;gap:10px;display:flex}.devices li span{min-width:0;display:grid}.devices li b{color:var(--text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.devices-acts{flex-wrap:wrap;gap:8px;display:flex}.devices small,.devices .chat-empty{color:var(--dim)}.spawn-btns{flex-wrap:wrap;gap:8px;margin:12px 0 4px;display:flex}.base>.spawn-btns{margin:-4px 0 12px}.tab h3>span,.squad h3>b{white-space:nowrap;text-overflow:ellipsis;flex:0 auto;min-width:0;overflow:hidden}.tab h3>button{flex:none}.tab h3>span{flex-grow:1}.tab-add{white-space:nowrap;border:1px solid var(--line);color:var(--dim);font:600 11px var(--sans);letter-spacing:.08em;cursor:pointer;background:0 0;border-radius:10px;flex:none;margin-left:auto;padding:2px 8px}.squad .tab-add{margin-left:0}.tab-add:hover,.new-base:hover{color:var(--accent);border-color:var(--accent)}.quit-btn{border:1px solid var(--line);color:var(--dim);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:8px;flex:none;margin-left:6px;padding:2px 9px}.quit-btn:hover{color:var(--err-soft);border-color:color-mix(in srgb, var(--err-soft) 40%, transparent)}.base>header>.quit-btn{align-self:flex-start;margin-left:auto}@media (hover:hover) and (pointer:fine){:is(.card>.quit-btn,.tab h3>.quit-btn,.base>header>.quit-btn,.tower-quit){opacity:0;transition:opacity .15s}:is(.card:hover,.card:focus-within)>.quit-btn,:is(.tab h3:hover,.tab h3:focus-within)>.quit-btn,:is(.base>header:hover,.base>header:focus-within) :is(.quit-btn,.tower-quit){opacity:1}}#stashed-list li{align-items:center;gap:8px;display:flex}#stashed-list span{overflow-wrap:anywhere;flex:1}.card>.quit-btn{margin-left:auto}.card>.quit-btn,.tower-quit{z-index:2;position:relative}.tower-quit{margin:6px 0 0}.sheet{border:1px solid var(--line);background:var(--raised);max-width:min(420px,100vw - 32px);color:var(--text);font:14px/1.5 var(--sans);border-radius:16px;margin:auto;padding:18px 20px}.sheet::backdrop{background:color-mix(in srgb, var(--shadow) 60%, transparent)}.sheet p{margin:0 0 14px}.sheet-row{justify-content:flex-end;gap:10px;display:flex}.sheet .later{cursor:pointer;border-radius:10px;padding:6px 14px}.sheet-yes{background:var(--err-soft);color:var(--ink);font:600 13px var(--sans);cursor:pointer;border:0;border-radius:10px;padding:6px 14px}.modes{flex:none;gap:4px;display:flex}.modes button{white-space:nowrap;border:1px solid var(--line);color:var(--dim);font:600 12px var(--sans);cursor:pointer;background:0 0;border-radius:999px;padding:4px 14px}.modes button[aria-pressed=true]{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent)}.term-root{min-height:0;padding:10px 16px 14px}.term-root .term-tile{height:100%}.pics{flex-wrap:wrap;align-items:flex-start;gap:6px;margin-top:8px;display:flex}.pic{border:1px solid var(--line);background:var(--plate);cursor:zoom-in;border-radius:8px;max-width:100%;padding:0;line-height:0;overflow:hidden}.pic img{max-width:240px;max-height:180px;display:block}.pic-gone{color:var(--dim);font-size:12px}.lightbox{background:color-mix(in srgb, var(--bg) 94%, transparent);border:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;overflow:auto}.lightbox[open]{place-items:center;display:grid}.lightbox::backdrop{background:0 0}.lightbox img{object-fit:contain;cursor:zoom-in;max-width:94vw;max-height:88dvh}.lightbox.zoom[open]{place-items:start}.lightbox.zoom img{cursor:zoom-out;max-width:none;max-height:none}.lightbox button{border:1px solid var(--line);background:var(--panel);width:44px;height:44px;color:var(--text);border-radius:50%;place-items:center;font-size:26px;line-height:1;display:grid;position:fixed}.lb-close{top:14px;right:14px}.lb-prev,.lb-next{top:calc(50% - 22px)}.lb-prev{left:14px}.lb-next{right:14px}.lb-count{color:var(--dim);font:13px var(--mono);position:fixed;bottom:14px;left:50%;transform:translate(-50%)}.queue-list{justify-items:end;gap:4px;margin:0 16px 6px;display:grid}.queue-list p{border:1px dashed color-mix(in srgb, var(--accent) 45%, transparent);max-width:min(80%,640px);color:var(--dim);white-space:pre-wrap;-webkit-line-clamp:3;border-radius:12px;-webkit-box-orient:vertical;margin:0;padding:6px 12px;font-size:14px;line-height:1.45;display:-webkit-box;overflow:hidden}.queue-list b{color:var(--accent);letter-spacing:.06em;margin-right:8px;font-size:11px;font-weight:600}.in-term .queue-list{display:none}.todos{border:1px solid var(--line);background:var(--panel);border-radius:12px;margin:0 16px;padding:6px 12px;font-size:13px}.todos summary{cursor:pointer;align-items:baseline;gap:10px;min-width:0;list-style:none;display:flex}.todos summary::-webkit-details-marker{display:none}.todos summary b{color:var(--violet);flex:none;font-weight:600}.todos summary span{min-width:0;color:var(--dim);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.todos summary:after{content:"▸";color:var(--dim);margin-left:auto}.todos[open] summary:after{content:"▾"}.todos ol{gap:3px;max-height:30vh;margin:6px 0 2px;padding:0;list-style:none;display:grid;overflow-y:auto}.todos li{font:13px/1.5 var(--sans);margin:0}.todos li:before{content:"○";width:1.4em;color:var(--dim);display:inline-block}.todos li.in_progress{color:var(--accent)}.todos li.in_progress:before{content:"◐"}.todos li.completed{color:var(--dim);text-decoration:line-through}.todos li.completed:before{content:"✓";color:var(--ok)}.in-term .todos,.in-term .monitors{display:none}.monitors{border:1px solid var(--line);background:var(--panel);border-radius:12px;margin:6px 16px 0;padding:6px 12px;font-size:13px}.monitors summary{cursor:pointer;align-items:baseline;gap:10px;min-width:0;list-style:none;display:flex}.monitors summary::-webkit-details-marker{display:none}.monitors summary b{color:var(--accent);flex:none;font-weight:600}.monitors[data-failed=true] summary b{color:var(--err)}.monitors summary span{min-width:0;color:var(--dim);font:12px var(--mono);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.monitors summary:after{content:"▸";color:var(--dim);margin-left:auto}.monitors[open] summary:after{content:"▾"}.monitors ul{gap:6px;max-height:30vh;margin:6px 0 2px;padding:0;list-style:none;display:grid;overflow-y:auto}.monitors li{text-indent:-1.4em;gap:1px;padding-left:1.4em;display:grid}.monitors li b{overflow-wrap:anywhere;font-weight:500}.monitors li b:before{content:"◐";text-indent:0;width:1.4em;color:var(--accent);display:inline-block}.monitors li.done b:before{content:"✓";color:var(--ok)}.monitors li.stopped b:before{content:"■";color:var(--dim)}.monitors li.error b:before,.monitors li.stale b:before{content:"!";color:var(--err)}.monitors li.error small,.monitors li.stale small{color:var(--err)}.monitors li small{color:var(--dim);text-indent:0}.monitors li code{color:var(--dim);font:12px var(--mono);text-indent:0;overflow-wrap:anywhere}.new-base{border:1px dashed var(--line);min-height:96px;color:var(--dim);font:600 14px var(--sans);letter-spacing:.08em;cursor:pointer;background:0 0;border-radius:18px}.spawn .go{--c:var(--accent);border:0}.spawn{color:var(--dim);gap:10px;font-size:13px;display:grid}.spawn-at{flex-wrap:wrap;align-items:center;gap:8px;margin:0;display:flex}.spawn-path{color:var(--text);overflow-wrap:anywhere}.spawn-dirs{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;max-height:40vh;display:grid;overflow:auto}.spawn-dir{border:1px solid var(--line);color:var(--text);font:13px var(--mono);text-align:left;overflow-wrap:anywhere;cursor:pointer;background:0 0;border-radius:8px;padding:7px 10px}.spawn textarea,.spawn input{box-sizing:border-box;border:1px solid var(--line);width:100%;color:var(--text);font:14px var(--sans);background:0 0;border-radius:8px;padding:8px 10px}.link{color:var(--dim);text-transform:uppercase;letter-spacing:.08em;align-items:center;gap:8px;padding:0 4px;font-size:12px;display:flex}.link span{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.link i{background:var(--unknown);border-radius:50%;width:9px;height:9px}.link[data-state=live] i{background:var(--ok);animation:2.4s ease-in-out infinite blink}.link[data-state=live]{color:var(--ok)}.link[data-state=reconnecting] i,.link[data-state=connecting] i{background:var(--amber);animation:1s ease-in-out infinite blink}.link[data-state=offline] i{background:var(--err)}.banner{background:color-mix(in srgb, var(--idle) 16%, transparent);color:var(--text);border-radius:14px;margin:14px 0 0;padding:10px 16px;font-size:13px}.banner b{font-family:var(--mono);font-weight:600}.stage{grid-template-columns:minmax(0,1fr);align-items:start;gap:20px;margin-top:12px;transition:opacity .4s;display:grid}.stage[data-view=session]{grid-template-columns:minmax(0,1fr) 300px}.stage:not([data-view=session])>.side{display:none}.stage[data-stale=true] .map,body[data-stale=true] .stats{opacity:.4}.stage[data-stale=true] *{animation-play-state:paused!important}.map{border:1px solid var(--line);background:var(--grid), var(--well);border-radius:18px;min-height:420px;padding:20px;transition:opacity .4s;position:relative}.links{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.wire{fill:none;stroke:color-mix(in srgb, var(--accent) 30%, transparent);stroke-width:1.5px;stroke-dasharray:3 7;stroke-linecap:round}.packets{pointer-events:none;position:absolute;inset:0;overflow:hidden}.packet{background:var(--accent);opacity:0;will-change:transform;border-radius:50%;width:6px;height:6px;transition:opacity .4s;animation:none;position:absolute;top:-3px;left:-3px}.packet[data-live]{opacity:.9;animation-play-state:running}.bases{grid-template-columns:repeat(auto-fill,minmax(min(100%,330px),1fr));grid-auto-rows:2px;align-items:start;gap:0 20px;display:grid;position:relative}.base{border:1px solid var(--line);background:linear-gradient(180deg, var(--surface-1), var(--surface-0));box-shadow:0 18px 40px color-mix(in srgb, var(--shadow) 35%, transparent);border-radius:16px;padding:14px;position:relative}.base.head{background:linear-gradient(180deg, color-mix(in srgb, var(--gold) 10%, transparent), transparent 38%), linear-gradient(180deg, var(--surface-1), var(--surface-0))}.base[data-mark=waiting]{box-shadow:0 18px 40px color-mix(in srgb, var(--shadow) 35%, transparent), inset 0 0 0 999px color-mix(in srgb, var(--amber) 4%, transparent)}.base>header{align-items:center;gap:12px;margin-bottom:10px;display:flex;position:relative}.title{justify-items:start;min-width:0;margin-right:auto;display:grid}.title h2{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:17px;overflow:hidden}.title p{max-width:100%;color:var(--dim);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.crown{letter-spacing:.12em;text-transform:uppercase;color:var(--gold);background:color-mix(in srgb, var(--gold) 12%, transparent);border-radius:999px;align-items:center;gap:5px;margin-bottom:3px;padding:2px 9px 2px 6px;font-size:10px;display:inline-flex}.crown svg{width:14px;height:14px}.base:not(.head) .crown{display:none}.tower{width:64px;height:64px;color:var(--c);flex:none;place-items:center;display:grid;position:relative}.tower:before{content:"";background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--c) 24%, var(--plate-hi)), var(--plate) 70%);border:1px solid color-mix(in srgb, var(--c) 45%, transparent);border-radius:50%;position:absolute;inset:0}.tower svg{width:38px;height:38px;filter:drop-shadow(0 0 5px color-mix(in srgb, var(--c) 55%, transparent));position:relative}.tower.ghost{opacity:.45}.tower.ghost:before{border-style:dashed}.sweep,.pulse{opacity:0;pointer-events:none;border-radius:50%;position:absolute;inset:0}.sweep{background:conic-gradient(from 0deg, transparent 0 70%, color-mix(in srgb, var(--c) 55%, transparent) 100%)}.pulse{border:2px solid var(--c)}.tower[data-mark=working] .sweep{opacity:1;animation:3.2s linear infinite spin}.tower[data-mark=waiting] .pulse{animation:1.5s ease-out infinite ping}.tower>.badge{--s:36px;position:absolute;bottom:-3px;right:-3px}.tabs{gap:10px;display:grid}.tab{background:color-mix(in srgb, var(--hi) 2%, transparent);border:1px solid color-mix(in srgb, var(--hi) 5%, transparent);border-radius:14px;padding:8px}.tab h3{color:var(--dim);letter-spacing:.12em;text-transform:uppercase;align-items:center;gap:8px;margin-bottom:8px;font-size:11px;font-weight:600;display:flex}.units,.subs{gap:8px;display:grid}.outposts{gap:8px;margin-top:12px;display:grid}.outposts:empty{display:none}.outposts:before{content:attr(data-label);color:var(--dim);letter-spacing:.12em;text-transform:uppercase;font-size:11px}.card{background:color-mix(in srgb, var(--hi) 4%, transparent);border:1px solid color-mix(in srgb, var(--hi) 6%, transparent);border-radius:12px;align-items:center;gap:10px;padding:8px 10px;transition:background-color .4s;display:flex;position:relative}@media (hover:hover) and (pointer:fine){.card{transition:background-color .4s,border-color .2s,transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s}.card:hover{border-color:color-mix(in srgb, var(--c,var(--line-c)) 40%, transparent);box-shadow:0 6px 18px color-mix(in srgb, var(--shadow) 55%, transparent);transform:translateY(-1px)}.base{transition:border-color .25s}.base:hover{border-color:color-mix(in srgb, var(--line-c) 36%, transparent)}.pair-btn,.tab-add,.quit-btn,.modes button,.later,.cmp-alt{transition:color .15s,border-color .15s,background-color .15s,transform .12s}.pair-btn:hover:not(:disabled){color:var(--text);border-color:color-mix(in srgb, var(--line-c) 50%, transparent);background:color-mix(in srgb, var(--hi) 4%, transparent)}}:is(.pair-btn,.tab-add,.quit-btn,.go,.later,.cmp-send,.cmp-alt,.ask-send,.sheet-yes,.new-base,.modes button,.spawn-dir,.d-doc,.thought,.more,.tab-btn):active:not(:disabled){transform:scale(.97)}.unit[data-mark=waiting]>.card{background:color-mix(in srgb, var(--amber) 11%, transparent)}.unit[data-mark=error]>.card{background:color-mix(in srgb, var(--err) 11%, transparent)}.unit[data-mark=working]>.card{background:color-mix(in srgb, var(--c) 7%, transparent)}.unit[data-mark=commanding]>.card,.token[data-mark=commanding]{background:color-mix(in srgb, var(--violet) 9%, transparent)}.plate{width:var(--s,40px);height:var(--s,40px);color:var(--c);background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--c) 26%, var(--plate-hi)), var(--plate) 72%);border-radius:50%;flex:none;place-items:center;transition:color .4s;display:grid;position:relative}.plate svg{width:calc(var(--s,40px) * .55);height:calc(var(--s,40px) * .55)}.ring,.plate:after{pointer-events:none;border-radius:50%;position:absolute;inset:-3px}.ring{opacity:0;background:conic-gradient(from 0deg, transparent 0 55%, var(--c));-webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 3px), var(--shadow) calc(100% - 2px));mask:radial-gradient(farthest-side, transparent calc(100% - 3px), var(--shadow) calc(100% - 2px))}.plate[data-mark=working]>.ring{opacity:1;animation:1.1s linear infinite spin}.plate:after{content:"";border:2px solid var(--c);opacity:0}.plate[data-mark=waiting]:after{animation:1.5s ease-out infinite ping}.badge{width:clamp(16px, calc(var(--s,40px) * .3), 24px);height:clamp(16px, calc(var(--s,40px) * .3), 24px);font:700 10px/1 var(--mono);color:var(--ink);background:var(--c);border-radius:50%;flex:none;place-items:center;transition:background-color .4s;display:grid}.plate>.badge{position:absolute;bottom:-4px;right:-4px}[data-mark=waiting]>.badge:after{content:"?"}[data-mark=idle]>.badge:after{content:"z"}[data-mark=done]>.badge:after{content:"✓"}[data-mark=error]>.badge:after{content:"!"}[data-mark=unknown]>.badge:after{content:"·"}[data-mark=commanding]>.badge:after{content:"◈"}[data-mark=working]>.badge:after{content:"";border:2px solid var(--ink);border-right-color:#0000;border-radius:50%;width:8px;height:8px;animation:.8s linear infinite spin}[data-mark=waiting]>.badge{animation:1.2s ease-in-out infinite hop}.meta{min-width:0;display:grid}.name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.line{color:var(--dim);align-items:baseline;gap:8px;min-width:0;font-size:12px;display:flex}.role{white-space:nowrap;letter-spacing:.1em;text-transform:uppercase;color:color-mix(in srgb, var(--c) 70%, var(--dim));flex:none;font-size:10px;font-style:normal}.note{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}[data-monitoring]{color:var(--err);font-weight:600}.unit[data-mark=idle]>.card{opacity:.85}.subs{margin:6px 0 0 22px;padding-left:18px;position:relative}.subs:empty{display:none}.base>.tower-subs{margin:-8px 0 12px 22px}.subs:before{content:"";background:repeating-linear-gradient(color-mix(in srgb, var(--line-c) 50%, transparent) 0 4px, transparent 4px 8px);width:1px;position:absolute;top:-4px;bottom:22px;left:3px}.subs>.unit>.card:before{content:"";background:repeating-linear-gradient(90deg, color-mix(in srgb, var(--line-c) 50%, transparent) 0 4px, transparent 4px 8px);width:15px;height:1px;position:absolute;top:50%;left:-15px}.subs>.unit{position:relative}.subs>.unit>.card:after{content:"";border:3px solid #0000;border-left:4px solid color-mix(in srgb, var(--line-c) 60%, transparent);pointer-events:none;position:absolute;top:calc(50% - 3px);left:-5px}.subs>.unit:is([data-mark=working],[data-mark=commanding])>.card:before{animation:.8s linear infinite flow-x}.subs:has(>.unit:is([data-mark=working],[data-mark=commanding])):before{animation:.8s linear infinite flow-y}@keyframes flow-x{to{background-position:8px 0}}@keyframes flow-y{to{background-position:0 8px}}.subs .plate{--s:30px}.subs .name{font-size:13px}.side{top:calc(var(--hud,64px) + 20px);gap:16px;display:grid;position:sticky}.panel{border:1px solid var(--line);background:var(--panel);border-radius:18px;padding:14px 16px}.panel h2{color:var(--dim);letter-spacing:.14em;text-transform:uppercase;margin-bottom:10px;font-size:11px}.timeline summary{cursor:pointer;align-items:baseline;gap:10px;min-width:0;list-style:none;display:flex}.timeline summary::-webkit-details-marker{display:none}.timeline summary:after{content:"▾";color:var(--dim);margin-left:8px;transition:transform .2s}.timeline:not([open]) summary:after{transform:rotate(-90deg)}.timeline h2{flex:none;margin:0}.tl-at{color:var(--dim);font:11px var(--mono);flex:none}.tl-last{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:12.5px;overflow:hidden}.tl-span{color:var(--dim);flex:none;margin-left:auto;font-size:11px}.tl-lanes{border-top:1px dashed var(--line);height:46px;margin-top:8px;position:relative}.tl-lanes:after{content:"";background:var(--accent);width:2px;box-shadow:0 0 8px color-mix(in srgb, var(--accent) 60%, transparent);border-radius:1px;position:absolute;top:0;bottom:0;right:0}.tl-mark{width:10px;height:10px;margin-left:-5px;position:absolute}.tl-mark:before{content:"";background:var(--c);border-radius:2px;position:absolute;inset:1px}.tl-mark:is([data-mark=waiting],[data-mark=error],[data-mark=commanding]):before{transform:rotate(45deg)}.tl-mark:is([data-mark=done],.joined,.left):before{border-radius:50%}.tl-mark.left:before{box-shadow:inset 0 0 0 1.5px var(--c);background:0 0}.tl-mark:hover:before,.tl-mark:focus-visible:before{box-shadow:0 0 0 3px color-mix(in srgb, var(--c) 35%, transparent)}.tl-mark:focus-visible{outline:none}.tl-mark:hover:after,.tl-mark:focus-visible:after{content:attr(aria-label);z-index:1;border:1px solid var(--line);background:var(--raised);color:var(--text);font:12px var(--sans);white-space:nowrap;box-shadow:0 6px 16px color-mix(in srgb, var(--shadow) 60%, transparent);border-radius:8px;padding:4px 8px;position:absolute;bottom:calc(100% + 8px);left:-6px}.tl-mark.end:hover:after,.tl-mark.end:focus-visible:after{left:auto;right:-6px}.tl-axis{color:var(--dim);font:10px var(--mono);justify-content:space-between;margin-top:4px;display:flex}.line .age{color:var(--dim);font:10.5px var(--mono);opacity:.85;flex:none}.line .age:empty{display:none}.line .age:before{content:"· "}.unit[data-mark=waiting]>.card .age,.title .age{color:var(--amber);opacity:1}.title .age{color:var(--dim)}.title .age:not(:empty):before{content:" · "}.todo{align-items:baseline;gap:6px;min-width:0;font-size:11.5px;display:flex}.todo b{color:var(--violet);font:600 10.5px var(--mono);flex:none}.todo span{white-space:nowrap;text-overflow:ellipsis;opacity:.85;min-width:0;overflow:hidden}.todo span:empty{display:none}.ticks{pointer-events:none;gap:3px;height:3px;display:flex;position:absolute;bottom:3px;left:52px;right:12px}.ticks:empty{display:none}.ticks i{background:var(--c);opacity:calc(.25 + .65 * var(--o,1));border-radius:1px;flex:0 0 6px}.card.ticked{padding-bottom:11px}.subs .ticks{left:44px}.minimap{z-index:4;box-sizing:content-box;border:1px solid var(--line);background:var(--panel);opacity:.65;cursor:pointer;border-radius:10px;padding:6px;transition:opacity .2s;position:fixed;bottom:20px;right:20px}.minimap:hover{opacity:1}.minimap.away{opacity:0;pointer-events:none}.mm-in{position:absolute;inset:6px}.mm-in i{background:color-mix(in srgb, var(--c) 35%, var(--surface-1));border-radius:2px;position:absolute}.mm-view{border:1px solid var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent);pointer-events:none;border-radius:3px;position:absolute;top:6px;left:4px;right:4px}.credit{color:var(--dim);padding:0 6px;font-size:11px}.bar{flex-wrap:wrap;align-items:center;gap:6px 16px;margin:12px 6px 0;display:flex}.bar-acts{align-items:center;gap:8px;display:flex}.bar-acts .pair-btn{border-radius:10px;padding:3px 9px;font-size:11px}.legend{color:var(--dim);flex-wrap:wrap;gap:4px 14px;margin:0 0 0 auto;padding:0;font-size:11px;list-style:none;display:flex}.legend li{align-items:center;gap:6px;display:flex}.legend .badge{width:13px;height:13px;font-size:8px}.foot{gap:10px;margin-top:14px;display:grid}.foot .credit{opacity:.75}.enter{animation:.5s cubic-bezier(.2,.9,.3,1.15) both pop}.leaving{pointer-events:none;animation:.35s ease-in both out}.flash>.card>.plate,.flash.tower{animation:.6s ease-out flash}.flash>.card{animation:.9s ease-out card-glow}.flash.flip>.card{animation-name:card-glow-b}.flash.flip>.card>.plate,.flash.flip.tower,.flash.flip.token>.plate{animation-name:flash-b}@keyframes spin{to{transform:rotate(360deg)}}@keyframes glow{0%,to{box-shadow:0 0 5px 0 var(--c4)}50%{box-shadow:0 0 16px 4px var(--c)}}.plate[data-mark=commanding]:before,.tower[data-mark=commanding]:after{content:"";pointer-events:none;border-radius:50%;animation:2.4s ease-in-out infinite glow;position:absolute;inset:-2px}.stats [data-mark=commanding][data-on],.comms-head[data-mark=commanding] .logo{border-color:var(--c4);animation:2.4s ease-in-out infinite glow}.comms-head[data-mark=commanding] .logo{color:var(--c)}.comms-head[data-mark=commanding] h2 span{color:var(--c);text-shadow:0 0 10px var(--c4)}@keyframes ping{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(1.7)}}@keyframes hop{50%{transform:translateY(-3px)}}@keyframes blink{50%{opacity:.35}}@keyframes pop{0%{opacity:0;transform:scale(.92)translateY(8px)}}@keyframes pop-b{0%{opacity:0;transform:scale(.92)translateY(8px)}}@keyframes out{to{opacity:0;transform:scale(.94)}}@keyframes out-b{to{opacity:0;transform:scale(.94)}}@keyframes flash{40%{transform:scale(1.12)}}@keyframes card-glow{30%{box-shadow:0 0 0 1px var(--c4), 0 0 18px 1px var(--c4)}}@keyframes card-glow-b{30%{box-shadow:0 0 0 1px var(--c4), 0 0 18px 1px var(--c4)}}@keyframes flash-b{40%{transform:scale(1.12)}}@keyframes slide{0%{opacity:0;transform:translate(10px)}}@keyframes slide-b{0%{opacity:0;transform:translate(10px)}}@keyframes zoom{0%{opacity:0;transform:scale(.45)}}@keyframes zoom-b{0%{opacity:0;transform:scale(.45)}}@keyframes come-in{0%{opacity:0;transform:translate(-14px)scale(.98)}}@keyframes go-out{0%{opacity:0;transform:translate(14px)scale(.98)}}.tx.fresh{animation:.32s cubic-bezier(.2,.8,.2,1) both come-in}.tx.you.fresh{animation-name:go-out}[data-calm] :is(.link i,.sweep,.pulse,.ring,.badge,.term-typing),[data-calm] :is(.plate,.badge):after{animation:none!important}[data-calm] .tower[data-mark=waiting] .pulse{opacity:.55}[data-calm] .plate[data-mark=waiting]:after{opacity:.55;transform:scale(1.25)}[data-calm] .packet{opacity:0;animation-play-state:paused!important}[data-calm] .subs:before,[data-calm] .subs>.unit>.card:before{animation:none!important}@media (prefers-reduced-motion:reduce),(hover:none) and (prefers-reduced-motion:reduce){.plate[data-mark=commanding]:before,.tower[data-mark=commanding]:after{box-shadow:0 0 12px 3px var(--c4)}.stats [data-mark=commanding][data-on],.comms-head[data-mark=commanding] .logo{box-shadow:0 0 12px 2px var(--c4)}}[data-calm] :is(.plate,.tower)[data-mark=commanding]:before,[data-calm] .tower[data-mark=commanding]:after{box-shadow:0 0 12px 3px var(--c4);animation:none!important}[hidden]{display:none!important}a{color:inherit}.crumbs,.tally dt,.comms-head small,.tx.you>header,.notice em,.rule summary,.dossier-in>.tag,.d-drones h4,.d-docs h4,.specs dt,.stop,.dialog .tag,.intel h4,.pending b{color:var(--dim);letter-spacing:.14em;text-transform:uppercase;font-size:11px;font-style:normal}.token .name,.drone .note,.count small,.sum,.where,.tile b{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.md a,.bubble a,.notice a,.d-note a,.specs a,.crumbs a{color:var(--accent)}.crumbs{gap:10px;min-width:0;display:flex}.crumbs>*+:before{content:"›";opacity:.5;margin-right:10px}.crumbs>*{white-space:nowrap;text-overflow:ellipsis;letter-spacing:.06em;flex:0 auto;min-width:0;max-width:28ch;overflow:hidden}.crumbs>:last-child{flex:auto;max-width:none}.crumb-more{cursor:pointer;color:var(--accent);display:none}.crumbs a,.brand{text-decoration:none}.work{align-items:flex-start;gap:20px;min-width:0;display:flex;position:relative}.gauge{visibility:hidden;height:0;position:absolute;left:0;right:0}.view{flex:1 1 0;min-width:0}body[data-stale=true] .work{opacity:.45}.enter-zoom{transform-origin:var(--ox,50%) var(--oy,0);animation:.5s ease-out both zoom}.enter-slide,.dossier{animation:.4s ease-out both slide}.enter-back{animation:.4s ease-out both pop}.enter-zoom.flip{animation-name:zoom-b}.enter-slide.flip{animation-name:slide-b}.enter-back.flip{animation-name:pop-b}.hit,.enter-base:after{z-index:1;border-radius:inherit;position:absolute;inset:0}.enter-base:after{content:"";z-index:0}.hit:hover{box-shadow:inset 0 0 0 1px var(--c)}.enter-base{text-decoration:none}.base>header:hover h2{color:var(--accent)}.alerts{width:210px;color:inherit;font:inherit;text-align:left;cursor:pointer;align-items:center;gap:10px;display:flex;position:relative}.alerts:disabled{cursor:default;opacity:.6}.alerts:not(:disabled){border-color:var(--c4);background:var(--c1)}.faces{flex:none;padding-left:10px;display:flex}.faces .plate{--s:28px;box-shadow:0 0 0 2px var(--raised);margin-left:-10px}.faces .badge{display:none}.count{min-width:0;display:grid}.count b{font:600 18px/1.1 var(--mono)}.count small,.comms-head p,.cmp-note,.where,.queued,.d-line,.who p{color:var(--dim);font-size:12px}.token{border:1px solid #0000;border-radius:16px;justify-items:center;gap:3px;width:100%;padding:10px 8px 9px;text-decoration:none;display:grid;position:relative}a.token:hover{border-color:var(--c4)}.token[data-mark=waiting]{background:color-mix(in srgb, var(--amber) 11%, transparent)}.token[data-mark=error]{background:color-mix(in srgb, var(--err) 11%, transparent)}.token .plate{--s:64px;margin-bottom:4px}.token .name{font-weight:600}.token .line{justify-items:center;max-width:100%;display:grid}.drone{width:94px;padding:6px;font-size:12px}.drone .plate{--s:44px}.drone .role{display:none}.agent{letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--c4);color:var(--dim);border-radius:8px;margin-left:4px;padding:0 5px;font-size:9px;font-style:normal}.agent:empty,.drone .agent{display:none}.flash.token>.plate{animation:.6s ease-out flash}.zoom-in,.comms-in{border:1px solid var(--line);background:var(--grid), var(--well);border-radius:22px;position:relative}.zoom-in{min-height:420px;padding:24px}.zoom-in.void>:not(.lost){display:none}.lost,.chat-empty{color:var(--dim);text-align:center;padding:60px 0}.keep{align-items:center;gap:20px;padding:18px 22px;display:flex}.keep h2{font-size:24px}.tower.big{width:120px;height:120px}.tower.big svg{width:72px;height:72px}.tower.big>.badge{--s:96px;bottom:4px;right:4px}a.tower:hover:before{border-color:var(--c)}.tally{gap:10px;display:flex}.squads,.camps{grid-template-columns:repeat(auto-fit,minmax(min(100%,430px),1fr));align-items:start;gap:18px;margin-top:20px;display:grid}.squad{background:color-mix(in srgb, var(--surface-0) 78%, transparent);padding:14px 16px 18px}.squad[data-mark=waiting]{background:color-mix(in srgb, var(--amber) 7%, var(--surface-0))}.squad h3{align-items:center;gap:10px;margin-bottom:14px;display:flex}.squad h3 b,.crumbs b{color:var(--text)}.squad h3 small{margin-left:auto}.squad h3 svg{width:18px;height:18px}.flag{background:var(--c);width:10px;height:10px;box-shadow:0 0 8px var(--c);border-radius:2px;transform:rotate(45deg)}.formation{flex-wrap:wrap;align-items:flex-start;gap:16px 20px;display:flex}.col{justify-items:center;gap:8px;width:196px;display:grid}.say{background:var(--raised);width:100%;color:var(--dim);border-radius:12px;margin-top:4px;padding:7px 10px;font-size:12px;line-height:1.35}.say p{overflow-wrap:anywhere;max-height:4.05em;overflow:hidden}.drones{flex-wrap:wrap;justify-content:center;gap:8px;width:100%;padding-top:16px;display:flex;position:relative}.drones:empty{display:none}.tower-drones{justify-content:flex-start;margin-top:-8px;padding-left:35px}.drones.tower-drones:before{left:82px}.drones:before{content:"";background:repeating-linear-gradient(color-mix(in srgb, var(--line-c) 60%, transparent) 0 4px, transparent 4px 8px);width:1px;height:14px;position:absolute;top:0;left:50%}.camp .token{width:156px}[data-group=outside] .plate{filter:saturate(.3);outline:1px dashed color-mix(in srgb, var(--dim) 55%, transparent);outline-offset:4px}.comms-in,.tile{height:calc(var(--vvh,100vh) - var(--hud,64px) - 64px);grid-template-rows:auto minmax(0,1fr) auto;min-height:380px;display:grid;overflow:hidden}.comms-head,.tile>header{background:var(--panel);align-items:center;gap:12px;padding:12px 18px;display:flex}.ava{width:30px;height:30px;color:var(--accent);background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--accent) 28%, transparent), var(--plate) 72%);border-radius:50%;flex:none;place-items:center;display:grid}.ava svg{width:58%;height:58%}.comms-head h2{font-size:16px}.chan{white-space:nowrap;flex:none;margin-left:auto}.head-id{flex:auto;min-width:0}.head-id h2,.head-id p{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.head-back{display:none}.modes+.chan{margin-left:12px}.chat-root{min-height:0;display:grid;position:relative}.comms-in .ask{max-height:calc((var(--vvh,100vh) - var(--hud,64px) - 64px) * .55);overscroll-behavior:contain;overflow-y:auto}.chat-scroll{overflow-anchor:none;padding:12px 16px;font-size:15px;overflow-y:auto}.chat-list{gap:8px;max-width:1040px;margin-inline:auto;display:grid}.tx.in+.tx.in,.tx.you+.tx.you{margin-top:-4px}.tx.in+.tx.in>.ava,.tx.you+.tx.you .ava{visibility:hidden}.tx.in+.tx.in .tx-body>header b,.tx.you+.tx.you>header b{display:none}.chat-top{height:1px}.chat-end{height:1px;margin-top:-1px}.chat-live{max-width:1040px;color:var(--c);align-items:center;gap:10px;margin:14px auto 0;padding-left:44px;font-size:12px;display:flex}.chat-pill{--c:var(--accent);border:0;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.lit:after{content:"";background:color-mix(in srgb, var(--accent) 18%, transparent);border-radius:14px;animation:1s 1s forwards out;position:absolute;inset:0}.lit.flip:after{animation-name:out-b}.composer{border-top:1px solid var(--line);background:var(--panel);gap:8px;padding:12px 18px 14px;display:grid;position:relative}.cmp-row,.cmp-acts,.cmp-foot,.cmp-note{align-items:center;gap:8px;display:flex}.cmp-row{align-items:flex-end;gap:10px}.composer textarea{resize:none;border:1px solid var(--line);background:var(--sunken);min-width:0;color:var(--text);font:14px/1.4 var(--sans);border-radius:12px;flex:1;padding:9px 12px}@supports (field-sizing:content){.composer textarea{field-sizing:content;max-height:220px}.composer{grid-template-columns:minmax(0,1fr)}}.composer textarea:focus{border-color:color-mix(in srgb, var(--accent) 50%, transparent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 12%, transparent);outline:none}.composer button:disabled{opacity:.45;cursor:default}.cmp-note{flex-wrap:wrap;flex:1;min-height:18px}.cmp-note[data-tone=error],.cmp-alt.cmp-stop{color:var(--err-soft)}.cmp-note[data-tone=ok]{color:var(--ok)}.cmp-note[data-tone=ask]{color:var(--gold)}.cmp-link{color:var(--accent);font:12px var(--sans);cursor:pointer;background:0 0;border:0;padding:0}.slash{z-index:5;border:1px solid var(--line);background:var(--surface-0);max-height:260px;box-shadow:0 8px 24px color-mix(in srgb, var(--shadow) 53%, transparent);border-radius:12px;margin:0;padding:4px;list-style:none;position:absolute;bottom:calc(100% - 6px);left:18px;right:18px;overflow-y:auto}.slash li{cursor:pointer;border-radius:8px;align-items:baseline;gap:10px;padding:6px 10px;display:flex}.slash li[aria-selected=true]{background:color-mix(in srgb, var(--accent) 12%, transparent)}.slash b{color:var(--accent);font:600 13px var(--mono);white-space:nowrap}.slash span{min-width:0;color:var(--dim);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.cmp-yes{background:var(--gold);color:var(--ink);font:600 12px var(--sans);cursor:pointer;border:0;border-radius:8px;padding:3px 10px}.tx{content-visibility:auto;contain-intrinsic-size:auto 220px;min-width:0}.tx.you{contain-intrinsic-size:auto 76px}.tx.sys,.tx.rule{contain-intrinsic-size:auto 40px}.tx.note{contain-intrinsic-size:auto 24px}.tx time,.tx.note{color:var(--dim);font:11px var(--mono)}.tx.you{justify-items:end;gap:5px;display:grid}.tx.you>header{color:var(--gold);align-items:center;gap:8px;display:flex}.tx.you .ava{color:var(--gold)}.bubble{border:1px solid color-mix(in srgb, var(--gold) 22%, transparent);background:color-mix(in srgb, var(--gold) 8%, transparent);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:14px;max-width:80%;padding:7px 12px;line-height:1.5}.tx.in{grid-template-columns:30px minmax(0,1fr);align-items:start;gap:8px;display:grid}.tx-body{border:1px solid var(--line);background:var(--panel);border-radius:14px;gap:6px;padding:8px 12px;display:grid}.tx-body,.tx-body>*{min-width:0}.tx-body>header{color:var(--dim);font:11px var(--mono);align-items:baseline;gap:10px;display:flex}.tx-body>header b{color:var(--accent);font:600 13px var(--sans)}.stop,.dialog .tag{background:var(--c1);color:var(--c);border-radius:999px;padding:1px 8px;font-size:10px}.fault{color:var(--err-soft);font-size:13px}.thought,.more,.tab-btn{border:1px solid var(--line);color:var(--dim);font:11px var(--sans);cursor:pointer;background:0 0;border-radius:999px;justify-self:start;padding:2px 10px}.thought-text:empty{display:none}.thought-text,.out,.args,.notice pre,.rule pre{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--dim);font:13px/1.45 var(--mono)}.act,.notice{border:1px solid color-mix(in srgb, var(--hi) 7%, transparent);background:color-mix(in srgb, var(--hi) 3%, transparent);border-radius:10px}.act>summary,.notice>summary,.rule summary{cursor:pointer;align-items:center;gap:8px;min-width:0;padding:5px 10px;font-size:13.5px;list-style:none;display:flex}summary::-webkit-details-marker{display:none}.act code{color:var(--c);font:600 11px var(--mono);letter-spacing:.06em;text-transform:uppercase}.sum{min-width:0;color:var(--dim)}.act[open] .sum{white-space:normal}.open{flex:none;margin-left:auto}.act>pre,.result{margin:0 10px 8px}.result{gap:6px;display:grid}.tx.sys{padding-left:38px}.notice{border-color:color-mix(in srgb, var(--violet) 20%, transparent);background:color-mix(in srgb, var(--violet) 7%, transparent)}.notice .ava{width:22px;height:22px}.notice pre,.rule pre{padding:0 10px 8px}.rule summary{justify-content:center}.rule summary:before,.rule summary:after{content:"";background:var(--line);flex:1;height:1px}.tx.note{text-align:center}.dossier-in{text-align:center;justify-items:center;gap:6px;display:grid;position:relative}.dossier-in>.tag{text-align:left;justify-self:stretch}.portrait{background:radial-gradient(var(--c1), transparent 70%);border-radius:50%;padding:8px}.portrait .plate{--s:96px}.dossier-in h3{overflow-wrap:anywhere;margin-top:4px;font-size:18px}.d-line,.who p{align-items:baseline;gap:8px;display:flex}.d-note{background:color-mix(in srgb, var(--amber) 12%, transparent);border-radius:10px;padding:8px 10px;font-size:12px}.specs{text-align:left;justify-self:stretch;gap:2px;margin-top:10px;display:grid}.specs div{background:color-mix(in srgb, var(--hi) 4%, transparent);grid-template-columns:76px minmax(0,1fr);gap:8px;padding:7px 10px;display:grid}.specs dt{font-size:10px}.specs dd{overflow-wrap:anywhere;font-size:12.5px}.d-drones,.d-squads{margin-top:8px}.d-squads{justify-self:stretch;gap:10px;display:grid}.d-squad{gap:6px;display:grid}.d-squad small{color:var(--dim)}.d-squad .formation{gap:6px}.d-x,.head-info{display:none}.d-drones .formation{justify-content:center;gap:6px}.md{overflow-wrap:anywhere;line-height:1.55}.md p,.md ul,.md ol,.md pre,.md table,.md blockquote{margin:0 0 8px}.md>:last-child{margin-bottom:0}.md :is(h1,h2,h3,h4,h5,h6){margin:12px 0 6px;font-size:16px}.md>:first-child{margin-top:0}.md h1{font-size:19px}.md ul,.md ol{padding-left:22px}.md li>p{margin:0}.md li.task{margin-left:-18px;list-style:none}.check{vertical-align:-2px;text-align:center;width:14px;height:14px;font:700 10px/12px var(--mono);border:1px solid;border-radius:4px;margin-right:7px;display:inline-block}.check[data-done=true]{background:var(--ok);color:var(--ink)}.md code{background:color-mix(in srgb, var(--hi) 8%, transparent);font:13.5px var(--mono);border-radius:5px;padding:1px 5px}.md pre{border:1px solid var(--line);background:var(--sunken);border-radius:10px;padding:10px 12px;overflow-x:auto}.md pre code{background:0 0;padding:0}.md blockquote{background:color-mix(in srgb, var(--hi) 4%, transparent);color:var(--dim);padding:6px 12px}.md table{border-collapse:collapse;display:block;overflow-x:auto}.md th,.md td{border:1px solid var(--line);padding:4px 10px}.tiles{flex:1 1 0;gap:20px;min-width:0;display:flex}.tile-tabs{display:none}.tile{min-width:0;top:calc(var(--hud,64px) + 20px);border:1px solid var(--line);background:var(--panel);border-radius:22px;flex:1 1 0;position:sticky}.tile>header svg{width:22px;height:22px;color:var(--gold)}.tile{grid-template-columns:minmax(0,1fr)}.tile>header b{flex:1;min-width:0}.tile-body{padding:16px 20px;overflow:auto}.tiles.tabbed{flex-direction:column;gap:8px}.tile:has(.spawn,.pair){height:auto;min-height:0;max-height:calc(var(--vvh,100vh) - var(--hud,64px) - 64px);align-self:flex-start}.spawn .chat-empty{text-align:left;padding:0}.spawn .chat-empty:empty{display:none}.tiles.tabbed .tile-tabs{gap:6px;display:flex}.tiles.tabbed .tile:not(.active){display:none}.tiles.tabbed .tile{flex:none}.tab-btn.active,.open{border-color:color-mix(in srgb, var(--gold) 40%, transparent);color:var(--gold)}.dock{z-index:20;top:calc(var(--hud,64px) + 24px);pointer-events:none;width:min(300px,100vw - 44px);display:grid;position:fixed;right:max(20px,50vw - 1080px)}.dialog{pointer-events:auto;border:1px solid var(--c4);background:linear-gradient(var(--c1), var(--surface-0) 70%), var(--raised);box-shadow:0 24px 60px color-mix(in srgb, var(--shadow) 80%, transparent);transform-origin:top;border-radius:18px;grid-area:1/1;padding:14px 16px 16px;transition:transform .3s,opacity .3s;position:relative}.dialog:focus{outline:none}.dialog{max-height:calc(100dvh - var(--hud,64px) - 44px);overscroll-behavior:contain;overflow-y:auto}.dialog>header{align-items:center;gap:8px;min-width:0;margin-bottom:12px;display:flex}.where{min-width:0}.x{color:var(--dim);cursor:pointer;background:0 0;border:0;margin-left:auto;font-size:20px}.zoom{color:var(--dim);cursor:pointer;background:0 0;border:0;margin-left:auto;padding:0 6px;font-size:17px}.zoom+.x{margin-left:0}.zoom:hover,.x:hover{color:var(--text)}.dock.wide{width:min(880px,100vw - 44px);top:72px;right:50%;transform:translate(50%)}.dock.wide .dialog{max-height:calc(100dvh - 96px)}.who{align-items:center;gap:14px;display:flex}.who .plate{--s:56px}.who h3{font-size:17px}.intel{background:color-mix(in srgb, var(--bg) 55%, transparent);border-radius:12px;margin-top:12px;padding:10px 12px}.intel h4{margin-bottom:4px}.said{overflow-wrap:anywhere;font-size:13px;line-height:1.45}.pending{color:var(--c);font:12px var(--mono);overflow-wrap:anywhere;margin-top:8px}.dialog footer{flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px;display:flex}.ask{border:1px solid color-mix(in srgb, var(--amber) 35%, transparent);background:color-mix(in srgb, var(--amber) 6%, transparent);border-radius:14px;gap:8px;margin:10px 18px 0;padding:12px 14px;display:grid}.dialog .ask{margin:10px 0 0}.ask-one{gap:8px;display:grid}.ask-one+.ask-one{margin-top:8px}.ask-head{background:color-mix(in srgb, var(--amber) 14%, transparent);color:var(--gold);letter-spacing:.06em;text-transform:uppercase;border-radius:999px;justify-self:start;padding:1px 9px;font-size:11px}.ask-how{color:var(--dim);font-size:12px}.ask-q{white-space:pre-wrap;overflow-wrap:anywhere;font-weight:600}.ask-ctx,.ask-why{color:var(--dim);white-space:pre-wrap;overflow-wrap:anywhere;max-height:9em;font-size:13px;overflow:auto}.ask-opts{counter-reset:opt;gap:6px;max-height:16em;margin:0;padding:0;list-style:none;display:grid;overflow:auto}.ask-opt{border:1px solid var(--line);background:var(--sunken);overflow-wrap:anywhere;counter-increment:opt;border-radius:10px;gap:2px;padding:7px 12px;font-size:13px;display:grid}.ask-opt b:before{content:counter(opt) ". ";color:var(--dim)}.ask-opt b[data-n]:before{content:attr(data-n) ". "}.ask-opt small{color:var(--dim);font-size:12px}.ask-acts{flex-wrap:wrap;align-items:center;gap:6px 14px;display:flex}.ask-acts>:last-child{margin-left:auto}.ask-term{color:var(--gold);font-size:12px}.ask button:disabled{opacity:.45;cursor:default}.ask-note:empty{display:none}.ask-note{color:var(--dim);flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:12px;display:flex}.ask-note[data-tone=error]{color:var(--err-soft)}.ask-note[data-tone=ok]{color:var(--ok)}.ask-title{font:12.5px/1.45 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;max-height:12em;margin:0;overflow:auto}div.ask-opts{max-height:none;overflow:visible}button.ask-opt{text-align:left;color:var(--text);font:13px var(--sans);cursor:pointer}.ask-opt[aria-checked=true]{border-color:var(--amber);background:color-mix(in srgb, var(--amber) 12%, transparent)}.ask-own{resize:vertical;field-sizing:content;border:1px solid var(--line);background:var(--sunken);min-width:0;max-height:10em;color:var(--text);font:13px var(--sans);border-radius:10px;padding:7px 12px}.ask-memo{font-size:12px}.ask input:disabled,.ask textarea:disabled{opacity:.45}.ask-send{background:var(--amber);color:var(--ink);font:600 13px var(--sans);cursor:pointer;border:0;border-radius:10px;padding:7px 13px}.go,.later,.chat-pill,.cmp-send,.cmp-alt{font:600 13px var(--sans);cursor:pointer;border-radius:10px;padding:7px 13px;text-decoration:none}.go,.chat-pill{background:var(--c);color:var(--ink)}a.go{justify-content:center;align-items:center;display:inline-flex}.cmp-send{background:var(--accent);color:var(--ink);border:0}.later,.cmp-alt{border:1px solid var(--line);color:var(--text);background:0 0}.queued{color:var(--dim);flex:1 0 100%;font-size:12px}.queued:empty{display:none}html.paused *,html.paused :before,html.paused :after{animation-play-state:paused!important}@media (width<=1100px){.stage[data-view]{grid-template-columns:1fr}.side{position:static}}@media (width<=1040px){.stats{display:none}}.term-tile{grid-template-rows:auto minmax(0,1fr) auto;gap:10px;height:100%;display:grid}.tile-body:has(.term-tile){padding:12px 14px;overflow:hidden}.term-bar{justify-content:space-between;align-items:center;gap:12px;font-size:12px;display:flex}.term-scroll{transition:border-color .2s,box-shadow .2s}.term-scroll.typing{border-color:var(--accent);box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent), 0 0 22px color-mix(in srgb, var(--accent) 18%, transparent)}.term-scroll.engage{animation:.6s ease-out term-engage}.term-scroll.blip{animation:.22s ease-out term-blip}.term-scroll.blip.flip{animation-name:term-blip-b}@keyframes term-engage{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 80%, transparent), 0 0 0 color-mix(in srgb, var(--accent) 0%, transparent)}60%{box-shadow:0 0 0 7px color-mix(in srgb, var(--accent) 0%, transparent), 0 0 34px color-mix(in srgb, var(--accent) 40%, transparent)}to{box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent), 0 0 22px color-mix(in srgb, var(--accent) 18%, transparent)}}@keyframes term-blip{0%{box-shadow:0 0 0 2px color-mix(in srgb, var(--accent-hi) 80%, transparent), 0 0 32px color-mix(in srgb, var(--accent) 53%, transparent)}to{box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent), 0 0 22px color-mix(in srgb, var(--accent) 18%, transparent)}}@keyframes term-blip-b{0%{box-shadow:0 0 0 2px color-mix(in srgb, var(--accent-hi) 80%, transparent), 0 0 32px color-mix(in srgb, var(--accent) 53%, transparent)}to{box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent), 0 0 22px color-mix(in srgb, var(--accent) 18%, transparent)}}.term-sink{opacity:0;resize:none;pointer-events:none;border:0;width:1px;height:18px;padding:0;position:fixed;overflow:hidden}.term-typing{color:var(--accent);margin-left:auto;font-weight:600;animation:1.6s ease-in-out infinite term-note}@keyframes term-note{50%{opacity:.55;text-shadow:0 0 10px color-mix(in srgb, var(--accent) 60%, transparent)}}.term-state{color:var(--dim)}.term-state[data-tone=ok]{color:var(--ok)}.term-state[data-tone=error]{color:var(--err-soft)}.term-scroll{overscroll-behavior:contain;border:1px solid var(--line);background:var(--term-bg);border-radius:14px;padding:8px 10px;overflow:auto}@font-face{font-family:SB Nerd Symbols;src:local(SymbolsNFM),local(Symbols Nerd Font Mono),local(HackNFM-Regular),url(./SymbolsNerdFontMono-DkrHkSnn.woff2)format("woff2");unicode-range:U+E000-F8FF,U+F0000-FFFFD;font-display:swap}.term{width:max-content;min-width:100%;color:var(--term-fg);font:12px/1.3 var(--mono);white-space:pre;font-family:ui-monospace,SF Mono,Menlo,Consolas,SB Nerd Symbols,monospace;transition:opacity .2s}.term .tr{min-height:1.3em}.term.stale{opacity:.5}.term.hidden{display:none}.plate[data-docs]:before{content:attr(data-docs);z-index:1;background:linear-gradient(var(--paper-hi), var(--paper));min-width:10px;height:16px;color:var(--paper-ink);font:700 9px/16px var(--mono);text-align:center;box-shadow:0 0 0 2px var(--plate), 2px 2px 0 1px var(--paper-edge);border-radius:3px 6px;padding:0 3px;position:absolute;top:-5px;left:-5px}.d-docs{text-align:left;margin-top:12px}.d-docs h4{text-align:center;margin:0 0 6px}.d-doc-list{gap:6px;display:grid}.d-doc{border:1px solid color-mix(in srgb, var(--paper) 25%, transparent);background:color-mix(in srgb, var(--paper) 7%, transparent) no-repeat 9px 50% / 13px 16px linear-gradient(var(--paper-hi), var(--paper));width:100%;color:var(--text);font:13px var(--sans);text-align:left;cursor:pointer;border-radius:10px;gap:1px;padding:7px 10px 7px 30px;display:grid}.d-doc:hover{border-color:color-mix(in srgb, var(--paper) 67%, transparent)}.d-doc b{overflow-wrap:anywhere;font-weight:600}.d-doc small{color:var(--dim);font-size:11px}.d-docs-cut{color:var(--dim);margin:6px 0 0;font-size:12px}.doc-tile{grid-template-rows:auto minmax(0,1fr);gap:10px;height:100%;display:grid}.tile-body:has(.doc-tile){padding:12px 14px;overflow:hidden}.doc-bar{flex-wrap:wrap;justify-content:flex-start}.doc-why{min-width:0;color:var(--text);flex:160px}.doc-off{color:var(--gold);font-style:normal}.doc-acts{align-items:center;gap:14px;display:flex}.doc-acts>.cmp-link{align-items:center;display:inline-flex}.doc-frame{border:1px solid color-mix(in srgb, var(--paper) 33%, transparent);background:#fff;border-radius:12px;width:100%;height:100%;min-height:240px}.doc-text{border:1px solid color-mix(in srgb, var(--paper) 25%, transparent);background:var(--plate);border-radius:12px;padding:14px 18px;overflow:auto}.doc-pre{white-space:pre-wrap;font:12.5px/1.45 var(--mono);margin:0}.pad{gap:6px;display:grid}.pad-row{grid-template-columns:repeat(auto-fit,minmax(48px,1fr));gap:6px;display:grid}.pad-key{border:1px solid var(--line);background:var(--surface-0);min-height:34px;color:var(--text);font:600 12px var(--mono);cursor:pointer;border-bottom-width:3px;border-radius:9px;padding:4px 6px}.pad-key:active:not(:disabled){background:var(--raised);border-bottom-width:1px;transform:translateY(2px)}.pad-key:disabled{opacity:.35;cursor:default}.pad-key[data-key=enter]{color:var(--accent)}.pad-key[data-key=esc]{color:var(--gold)}.pad-key:is([data-key=up],[data-key=down],[data-key=left],[data-key=right],[data-key=backspace]){font-size:16px}.pad-digits summary{color:var(--dim);cursor:pointer;padding:2px 0;font-size:12px}.pad-note:empty{display:none}.pad-note{color:var(--dim);flex-wrap:wrap;align-items:center;gap:6px 12px;margin:0;font-size:12px;display:flex}.pad-note[data-tone=error]{color:var(--err-soft)}.pad-note[data-tone=ask]{border:1px solid color-mix(in srgb, var(--amber) 40%, transparent);background:color-mix(in srgb, var(--amber) 8%, transparent);color:var(--text);border-radius:10px;padding:8px 10px}.pad-yes{background:var(--amber);color:var(--ink);font:600 12px var(--sans);cursor:pointer;border:0;border-radius:9px;padding:5px 11px}.c0{color:#414868}.cz{color:var(--term-bg)}.c1{color:#f7768e}.c2{color:#9ece6a}.c3{color:#e0af68}.c4{color:#7aa2f7}.c5{color:#bb9af7}.c6{color:#7dcfff}.c7{color:#a9b1d6}.c8{color:#545c7e}.c9{color:#ff899d}.c10{color:#9fe044}.c11{color:#faba4a}.c12{color:#8db0ff}.c13{color:#c7a9ff}.c14{color:#a4daff}.c15{color:#c0caf5}.k0{background:var(--term-bg)}.k1{background:#f7768e}.k2{background:#9ece6a}.k3{background:#e0af68}.k4{background:#7aa2f7}.k5{background:#bb9af7}.k6{background:#7dcfff}.k7,.kz{background:#a9b1d6}.k8{background:#545c7e}.k9{background:#ff899d}.k10{background:#9fe044}.k11{background:#faba4a}.k12{background:#8db0ff}.k13{background:#c7a9ff}.k14{background:#a4daff}.k15{background:#c0caf5}.tb{font-weight:700}.td{opacity:.6}.ti{font-style:italic}.tu{text-decoration:underline}.ts{text-decoration:line-through}.tu.ts{text-decoration:underline line-through}.drawer,.drawer-veil{display:none}.drawer{z-index:30;background:var(--surface-0);border-right:1px solid var(--line);width:min(86vw,360px);box-shadow:8px 0 30px color-mix(in srgb, var(--shadow) 50%, transparent);transform:translateX(calc(var(--dx,0px) - 100%));visibility:hidden;flex-direction:column;transition:transform .22s ease-out,visibility 0s .22s;display:flex;position:fixed;inset:0 auto 0 0}.drawer.on{visibility:visible;transition:transform .22s ease-out}.drawer-veil{z-index:29;background:color-mix(in srgb, var(--shadow) 60%, transparent);opacity:0;pointer-events:none;transition:opacity .22s;position:fixed;inset:0}.drawer-drag .drawer,.drawer-drag .drawer-veil{transition:none}.drawer>header{padding:max(12px, env(safe-area-inset-top)) 12px 8px max(14px, env(safe-area-inset-left));color:var(--dim);letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;align-items:center;font-size:12px;display:flex}.drawer-body{overscroll-behavior:contain;padding:4px 10px max(16px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left));flex:1;align-content:start;gap:12px;display:grid;overflow-y:auto}.dbase h3{justify-content:space-between;align-items:baseline;gap:8px;margin:0 0 6px;font-size:14px;display:flex}.dbase h3 a{color:var(--text);text-overflow:ellipsis;white-space:nowrap;text-decoration:none;overflow:hidden}.dbase h3 small,.dgroup h4{color:var(--dim);letter-spacing:.1em;text-transform:uppercase;font-size:11px}.dbase[data-mark=waiting] h3 a{color:var(--c)}.dgroups,.drows{gap:6px;display:grid}.dgroup h4{margin:4px 0 0;font-weight:600}.drawer .card{gap:8px;min-height:44px;padding:6px 8px}.drawer .plate{--s:28px}.drawer .subs{margin-left:16px;padding-left:12px}.drawer .line{gap:6px}.drawer .dstate{color:var(--c);flex:none;font-size:11px;font-weight:600}.drawer .unit.current>.card{border-color:var(--c4);box-shadow:inset 3px 0 0 var(--c)}@media (width<=640px){.drawer{display:flex}.drawer-veil{display:block}}@media (width<=900px){.work{flex-direction:column;align-items:stretch}.view,.tiles{flex:none}.tile{position:static}.keep{flex-wrap:wrap}}@media (width<=640px){.shell{padding:max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left))}.hud{flex-wrap:wrap;gap:10px;padding:10px 12px;position:static}.brand p,.link span{display:none}.alert-row{flex:100%;order:3;min-width:0}.alert-row .alerts{flex:auto;width:auto;min-width:0}.done-btn{min-height:40px}.brand{flex:auto;min-width:0}.prefs-btn{width:40px;height:40px}.prefs-pop>*{min-height:40px}.tl-span{display:none}.crumbs{gap:6px}.crumbs>*+:before{margin-right:6px}.crumbs>*{max-width:16ch}.crumbs:not(.open)>.mid{display:none}.crumbs:not(.open)>.crumb-more{flex:none;display:block}.crumbs.open{flex-wrap:wrap;row-gap:4px}.map,.zoom-in{padding:14px}.bases{column-gap:18px}.legend{display:none}.keep{gap:12px;padding:6px}.tower.big{width:84px;height:84px}.tower-drones{padding-left:1px}.drones.tower-drones:before{left:48px}.tally{flex-wrap:wrap}.col{width:100%}.dossier:not(.full){content-visibility:hidden}.comms-in,.dossier.full{left:0;right:0;top:var(--vvt,0px);height:var(--vvh,100dvh);background:var(--bg);position:fixed}.tiles:has(.tile){left:0;right:0;top:var(--vvt,0px);height:var(--vvh,100dvh);background:var(--bg);position:fixed}.comms-in{z-index:15;border:0;border-radius:0;grid-template-columns:minmax(0,1fr);min-height:0}.tiles:has(.tile){z-index:16;padding:8px;overflow-y:auto}.tile{height:calc(var(--vvh,100dvh) - 16px);border-radius:16px;min-height:300px}.dossier.full{z-index:17;overscroll-behavior:contain;padding:max(16px, env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom));border:0;border-radius:0;overflow-y:auto}.dossier.full .d-x{place-items:center;display:grid;position:absolute;top:0;right:0}.comms-head{padding:max(10px, env(safe-area-inset-top)) 12px 10px;grid-template-columns:auto minmax(0,1fr) auto auto;gap:8px 10px;display:grid}.comms-head .logo{display:none}.head-back{border:1px solid var(--line);width:40px;height:40px;color:var(--text);border-radius:12px;place-items:center;font-size:24px;text-decoration:none;display:grid}.head-info{padding:0 12px;display:block}.comms-head h2 small,.chan b{display:none}.modes+.chan{margin-left:0}.modes{border:1px solid var(--line);border-radius:12px;grid-area:2/1/auto/-1;padding:3px}.modes button{border:0;border-radius:9px;flex:1;min-height:40px;padding:0;font-size:14px}.modes button[aria-pressed=true]{background:color-mix(in srgb, var(--accent) 12%, transparent)}.chat-scroll{overscroll-behavior:contain;padding:12px}.chat-scroll:focus-visible{outline:none}.bubble{max-width:92%}.composer{padding:10px 12px calc(10px + env(safe-area-inset-bottom))}.cmp-foot:has(>.cmp-note:empty){display:none}.cmp-row{flex-wrap:wrap}.composer textarea{flex:100%;order:-1;min-height:64px}.cmp-acts{margin-left:auto}.dock,.dock.wide{width:calc(100vw - 20px);top:auto;right:10px}.dock{bottom:calc(10px + env(safe-area-inset-bottom))}.dock.wide{transform:none}.dialog .zoom{display:none}}@media (pointer:coarse){.composer textarea,.ask input,.ask textarea{font-size:16px}.composer button,.go,.later,.x,.chat-pill,.pair-btn,.alerts,.ask button,.term-bar button,.doc-acts>.cmp-link,.quit-btn,.d-doc{min-height:40px}}@media (width<=640px),(pointer:coarse){.pad-key,.pad-yes{min-height:44px}.pad-digits summary{padding:14px 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
@@ -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=ue(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(de(t)&&_.has(t)){let e=_.get(t);if(e){let t=e.getLocale();if(t instanceof Promise)continue;if(t!==void 0)return m(t)}}let e=p(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=ue(window.location.href));for(let t of c)if(t===`baseLocale`)continue;else if(de(t)&&_.has(t)){let n=_.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()},f=()=>typeof window<`u`?window.location.origin:`http://fallback.com`;function p(e){if(typeof e!=`string`)return;let n=e.toLowerCase();for(let e of t)if(e.toLowerCase()===n)return e}function m(e){let n=p(e);if(n)return n;throw Error(`Invalid locale: ${e}. Expected one of: ${t.join(`, `)}`)}function h(e){return e}function g(t,n){return new e(t,n.href)}function ee(){return 0}function te(e){return i}function ne(e,t){return e.exec(t.href)}var re=n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);RegExp(`(?:^|;\\s*)${re}=([^;]*)`);function ie(e){return ae(e)}function ae(e){let t=h(typeof e==`string`?new URL(e,f()):new URL(e.href)),n=t.pathname.replace(/^\/+/,``).split(`/`);return n.length>0&&p(n[0])&&(t.pathname=`/`+n.slice(1).join(`/`)),h(t)}var oe=-1,se,ce;function le(e){if(i.length===0)return;let t=typeof e==`string`?e:e.href,n=ee();if(se===t&&oe===n)return ce;let r=h(new URL(t,`http://example.com`)),a=ie(r),o=a.href===r.href?[r]:[r,a],s;for(let e of o){for(let t of te(e))if(ne(g(t.match,e),e)){s=t;break}if(s)break}return oe=n,se=t,ce=s,s}function ue(e){let t=le(e);return t&&t.exclude!==!0&&Array.isArray(t.strategy)?t.strategy:r}var _=new Map;function de(e){return typeof e==`string`&&/^custom-[A-Za-z0-9_-]+$/.test(e)}var fe=e=>`${e?.n}d`,pe=e=>`${e?.n} 天`,me=((e,t={})=>(t.locale??s())===`zh-TW`?pe(e):fe(e)),he=e=>`${e?.n}h`,ge=e=>`${e?.n} 小時`,_e=((e,t={})=>(t.locale??s())===`zh-TW`?ge(e):he(e)),ve=e=>`${e?.n}m`,ye=e=>`${e?.n} 分`,be=((e,t={})=>(t.locale??s())===`zh-TW`?ye(e):ve(e)),xe=e=>`${e?.n}s`,Se=e=>`${e?.n} 秒`,Ce=((e,t={})=>(t.locale??s())===`zh-TW`?Se(e):xe(e)),we=((e={},t={})=>(t.locale??s())===`zh-TW`?`警示`:`Alerts`),Te=((e={},t={})=>(t.locale??s())===`zh-TW`?`所有基地`:`all bases`),Ee=((e={},t={})=>(t.locale??s())===`zh-TW`?``:`.`),De=((e={},t={})=>(t.locale??s())===`zh-TW`?`最後更新:`:`Last update`),Oe=e=>`Disconnected. Gave up after ${e?.tries} tries; it reconnects when you return to this tab.`,ke=e=>`連線中斷。重試 ${e?.tries} 次後放棄;回到此分頁時會重新連線。`,Ae=((e,t={})=>(t.locale??s())===`zh-TW`?ke(e):Oe(e)),je=e=>`The server is up but cannot read the net: ${e?.problem}`,Me=e=>`伺服器正常,但讀不到網:${e?.problem}`,Ne=((e,t={})=>(t.locale??s())===`zh-TW`?Me(e):je(e)),Pe=((e={},t={})=>(t.locale??s())===`zh-TW`?`與稻草網的連線中斷,正在重新連線…畫面顯示的是最後已知狀態。`:`Disconnected from the straw net. Reconnecting… The view shows the last known state.`),Fe=e=>`Disconnected from the straw net. Reconnecting (try ${e?.attempt})… The view shows the last known state.`,Ie=e=>`與稻草網的連線中斷,正在重新連線(第 ${e?.attempt} 次)…畫面顯示的是最後已知狀態。`,Le=((e,t={})=>(t.locale??s())===`zh-TW`?Ie(e):Fe(e)),Re=((e={},t={})=>(t.locale??s())===`zh-TW`?`Straw Net:所有基地`:`Straw Net: all bases`),ze=((e={},t={})=>(t.locale??s())===`zh-TW`?`取消`:`Cancel`),Be=((e={},t={})=>(t.locale??s())===`zh-TW`?`關閉`:`Close`),Ve=e=>`Quit base ${e?.name}`,He=e=>`關掉基地 ${e?.name}`,Ue=((e,t={})=>(t.locale??s())===`zh-TW`?He(e):Ve(e)),We=e=>`Quit base ${e?.name}? Every agent in it and its tower quit. Nothing quits while anything running would be lost.`,Ge=e=>`要關掉基地 ${e?.name} 嗎?裡面所有 agent 和塔台都會退出。有會遺失的東西時什麼都不關。`,Ke=((e,t={})=>(t.locale??s())===`zh-TW`?Ge(e):We(e)),qe=e=>`Quit squad ${e?.name}`,Je=e=>`關掉小隊 ${e?.name}`,Ye=((e,t={})=>(t.locale??s())===`zh-TW`?Je(e):qe(e)),Xe=e=>`Quit squad ${e?.name}? Every agent in it quits.`,Ze=e=>`要關掉小隊 ${e?.name} 嗎?裡面所有 agent 都會退出。`,Qe=((e,t={})=>(t.locale??s())===`zh-TW`?Ze(e):Xe(e)),$e=e=>`Quit the tower ${e?.name}? The base's mains become members again.`,et=e=>`要關掉塔台 ${e?.name} 嗎?這個基地的主智慧體都會降格成成員。`,tt=((e,t={})=>(t.locale??s())===`zh-TW`?et(e):$e(e)),nt=e=>`Quit ${e?.name}`,rt=e=>`關掉 ${e?.name}`,it=((e,t={})=>(t.locale??s())===`zh-TW`?rt(e):nt(e)),at=e=>`Quit ${e?.name}? It quits pi and its pane closes.`,ot=e=>`要關掉 ${e?.name} 嗎?它會退出 pi,窗格也會關掉。`,st=((e,t={})=>(t.locale??s())===`zh-TW`?ot(e):at(e)),ct=e=>`control tower · ${e?.state}`,lt=e=>`塔台 · ${e?.state}`,ut=((e,t={})=>(t.locale??s())===`zh-TW`?lt(e):ct(e)),dt=((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.`),ft=((e={},t={})=>(t.locale??s())===`zh-TW`?`移除`:`Dismiss`),pt=e=>`Dismiss finished (${e?.count})`,mt=e=>`移除已完成(${e?.count})`,ht=((e,t={})=>(t.locale??s())===`zh-TW`?mt(e):pt(e)),gt=e=>`Dismiss ${e?.name}`,_t=e=>`從畫面移除 ${e?.name}`,vt=((e,t={})=>(t.locale??s())===`zh-TW`?_t(e):gt(e)),yt=((e={},t={})=>(t.locale??s())===`zh-TW`?`文件`:`Documents`),bt=((e={},t={})=>(t.locale??s())===`zh-TW`?`總塔台`:`head tower`),xt=((e={},t={})=>(t.locale??s())===`zh-TW`?`語言`:`Language`),St=((e={},t={})=>(t.locale??s())===`zh-TW`?`連線中`:`connecting`),Ct=((e={},t={})=>(t.locale??s())===`zh-TW`?`即時`:`live`),wt=((e={},t={})=>(t.locale??s())===`zh-TW`?`離線`:`offline`),Tt=((e={},t={})=>(t.locale??s())===`zh-TW`?`重新連線中`:`reconnecting`),Et=((e={},t={})=>(t.locale??s())===`zh-TW`?`正體中文`:`English`),Dt=((e={},t={})=>(t.locale??s())===`zh-TW`?`位置`:`Location`),Ot=e=>`${e?.name} is commanding`,kt=e=>`${e?.name} 指揮中`,At=((e,t={})=>(t.locale??s())===`zh-TW`?kt(e):Ot(e)),jt=e=>`${e?.name} finished`,Mt=e=>`${e?.name} 已完成`,Nt=((e,t={})=>(t.locale??s())===`zh-TW`?Mt(e):jt(e)),Pt=e=>`${e?.name} hit an error`,Ft=e=>`${e?.name} 發生錯誤`,It=((e,t={})=>(t.locale??s())===`zh-TW`?Ft(e):Pt(e)),Lt=e=>`${e?.name} went idle`,Rt=e=>`${e?.name} 轉為閒置`,zt=((e,t={})=>(t.locale??s())===`zh-TW`?Rt(e):Lt(e)),Bt=e=>`${e?.name} joined`,Vt=e=>`${e?.name} 加入`,Ht=((e,t={})=>(t.locale??s())===`zh-TW`?Vt(e):Bt(e)),Ut=e=>`${e?.name} left`,Wt=e=>`${e?.name} 離開`,Gt=((e,t={})=>(t.locale??s())===`zh-TW`?Wt(e):Ut(e)),Kt=e=>`${e?.name} lost its status`,qt=e=>`${e?.name} 失去狀態`,Jt=((e,t={})=>(t.locale??s())===`zh-TW`?qt(e):Kt(e)),Yt=e=>`${e?.name} is waiting on a question`,Xt=e=>`${e?.name} 正在等待回答`,Zt=((e,t={})=>(t.locale??s())===`zh-TW`?Xt(e):Yt(e)),Qt=e=>`${e?.name} started working`,$t=e=>`${e?.name} 開始工作`,en=((e,t={})=>(t.locale??s())===`zh-TW`?$t(e):Qt(e)),tn=((e={},t={})=>(t.locale??s())===`zh-TW`?`指揮中`:`commanding`),nn=((e={},t={})=>(t.locale??s())===`zh-TW`?`已完成`:`finished`),rn=((e={},t={})=>(t.locale??s())===`zh-TW`?`錯誤`:`error`),an=((e={},t={})=>(t.locale??s())===`zh-TW`?`閒置`:`idle`),on=((e={},t={})=>(t.locale??s())===`zh-TW`?`無狀態`:`no status`),sn=((e={},t={})=>(t.locale??s())===`zh-TW`?`等待回答`:`waiting on a question`),cn=((e={},t={})=>(t.locale??s())===`zh-TW`?`工作中`:`working`),ln=((e={},t={})=>(t.locale??s())===`zh-TW`?`地圖總覽`:`Overview of the map`),un=e=>`Monitor failed: ${e?.what}`,dn=e=>`Monitor 出錯:${e?.what}`,fn=((e,t={})=>(t.locale??s())===`zh-TW`?dn(e):un(e)),pn=e=>`Monitor went quiet and stopped: ${e?.what}`,mn=e=>`Monitor 太久沒輸出,已停止:${e?.what}`,hn=((e,t={})=>(t.locale??s())===`zh-TW`?mn(e):pn(e)),gn=((e={},t={})=>(t.locale??s())===`zh-TW`?`從未`:`never`),_n=((e={},t={})=>(t.locale??s())===`zh-TW`?`+新基地`:`+ New base`),vn=((e={},t={})=>(t.locale??s())===`zh-TW`?`沒有執行中的智慧體`:`no agent running`),yn=((e={},t={})=>(t.locale??s())===`zh-TW`?`無警示`:`no alerts`),v=((e={},t={})=>(t.locale??s())===`zh-TW`?`伺服器沒有回應。`:`The server did not answer.`),bn=((e={},t={})=>(t.locale??s())===`zh-TW`?`尚無塔台`:`no tower yet`),xn=((e={},t={})=>(t.locale??s())===`zh-TW`?`監看中`:`Watching a monitor`),Sn=((e={},t={})=>(t.locale??s())===`zh-TW`?`思考中`:`thinking`),Cn=e=>`Finished ${e?.note}`,wn=e=>`完成了 ${e?.note}`,Tn=((e,t={})=>(t.locale??s())===`zh-TW`?wn(e):Cn(e)),En=e=>`Failed ${e?.note}`,Dn=e=>`出錯了 ${e?.note}`,On=((e,t={})=>(t.locale??s())===`zh-TW`?Dn(e):En(e)),kn=e=>`Waiting on you ${e?.note}`,An=e=>`等你回答 ${e?.note}`,jn=((e,t={})=>(t.locale??s())===`zh-TW`?An(e):kn(e)),Mn=((e={},t={})=>(t.locale??s())===`zh-TW`?`+主智慧體`:`+ Main`),Nn=((e={},t={})=>(t.locale??s())===`zh-TW`?`+成員`:`+ Member`),Pn=((e={},t={})=>(t.locale??s())===`zh-TW`?`前哨`:`Outposts`),Fn=((e={},t={})=>(t.locale??s())===`zh-TW`?`手機`:`Phone`),In=((e={},t={})=>(t.locale??s())===`zh-TW`?`透過 Tailscale 配對手機`:`Pair a phone over Tailscale`),Ln=((e={},t={})=>(t.locale??s())===`zh-TW`?`接回`:`Pop`),Rn=e=>`Pop ${e?.name}`,zn=e=>`接回 ${e?.name}`,Bn=((e,t={})=>(t.locale??s())===`zh-TW`?zn(e):Rn(e)),Vn=((e={},t={})=>(t.locale??s())===`zh-TW`?`伺服器送來的快照,頁面無法讀取`:`the server sent a snapshot the page cannot read`),Hn=((e={},t={})=>(t.locale??s())===`zh-TW`?`伺服器回報了頁面無法讀取的問題`:`the server reported a problem the page cannot read`),y=((e={},t={})=>(t.locale??s())===`zh-TW`?`關掉`:`Quit`),Un=((e={},t={})=>(t.locale??s())===`zh-TW`?`關掉塔台`:`Quit tower`),Wn=e=>`Refused (${e?.status}).`,Gn=e=>`已拒絕(${e?.status})。`,b=((e,t={})=>(t.locale??s())===`zh-TW`?Gn(e):Wn(e)),Kn=((e={},t={})=>(t.locale??s())===`zh-TW`?`提醒`:`Remind`),qn=((e={},t={})=>(t.locale??s())===`zh-TW`?`點一下允許瀏覽器通知`:`Press to allow browser notifications`),Jn=((e={},t={})=>(t.locale??s())===`zh-TW`?`瀏覽器已封鎖通知,要到網站設定裡允許`:`The browser blocks notifications; allow them in the site settings`),Yn=((e={},t={})=>(t.locale??s())===`zh-TW`?`提醒已關`:`Reminders off`),Xn=((e={},t={})=>(t.locale??s())===`zh-TW`?`提醒已開:分頁不在前景時,單位等你回答、完成或出錯會跳系統通知`:`Reminders on: while the page is in the background, a unit waiting on you, finishing, or failing raises a system notification`),Zn=((e={},t={})=>(t.locale??s())===`zh-TW`?`這個瀏覽器不支援通知`:`This browser has no notifications`),Qn=((e={},t={})=>(t.locale??s())===`zh-TW`?`主智慧體`:`main`),$n=((e={},t={})=>(t.locale??s())===`zh-TW`?`成員`:`member`),er=((e={},t={})=>(t.locale??s())===`zh-TW`?`前哨`:`outpost`),tr=((e={},t={})=>(t.locale??s())===`zh-TW`?`未編入`:`unaligned`),nr=((e={},t={})=>(t.locale??s(),`session`)),rr=((e={},t={})=>(t.locale??s())===`zh-TW`?`子智慧體`:`subagent`),ir=((e={},t={})=>(t.locale??s())===`zh-TW`?`塔台`:`tower`),ar=((e={},t={})=>(t.locale??s())===`zh-TW`?`設定`:`Settings`),or=((e={},t={})=>(t.locale??s())===`zh-TW`?`音效`:`Sound`),sr=((e={},t={})=>(t.locale??s())===`zh-TW`?`音效已關`:`Sounds off`),cr=((e={},t={})=>(t.locale??s())===`zh-TW`?`音效已開`:`Sounds on`),lr=((e={},t={})=>(t.locale??s())===`zh-TW`?`音效:開關、音量與試聽`:`Sounds: on or off, volume, and a try`),ur=((e={},t={})=>(t.locale??s())===`zh-TW`?`▶ 試聽`:`▶ Try`),dr=((e={},t={})=>(t.locale??s())===`zh-TW`?`音量`:`Volume`),fr=((e={},t={})=>(t.locale??s())===`zh-TW`?`收起`:`Stash`),pr=e=>`Stash base ${e?.name}`,mr=e=>`收起基地 ${e?.name}`,hr=((e,t={})=>(t.locale??s())===`zh-TW`?mr(e):pr(e)),gr=e=>`Stash base ${e?.name}? Its tower, mains, and members quit and come back with Pop. Nothing is stashed while anything running would be lost.`,_r=e=>`要收起基地 ${e?.name} 嗎?塔台、主智慧體和成員會結束,之後可以用「接回」叫回來。有會遺失的東西時不會收。`,vr=((e,t={})=>(t.locale??s())===`zh-TW`?_r(e):gr(e)),yr=e=>`Stashed (${e?.count})`,br=e=>`已收起(${e?.count})`,xr=((e,t={})=>(t.locale??s())===`zh-TW`?br(e):yr(e)),Sr=((e={},t={})=>(t.locale??s())===`zh-TW`?`智慧體`:`Agents`),Cr=((e={},t={})=>(t.locale??s())===`zh-TW`?`基地`:`Bases`),wr=((e={},t={})=>(t.locale??s())===`zh-TW`?`指揮中`:`Commanding`),Tr=((e={},t={})=>(t.locale??s())===`zh-TW`?`等待中`:`Waiting`),Er=((e={},t={})=>(t.locale??s())===`zh-TW`?`工作中`:`Working`),Dr=((e={},t={})=>(t.locale??s())===`zh-TW`?`狀態`:`States`),Or=e=>`tab ${e?.label}`,kr=e=>`分頁 ${e?.label}`,Ar=((e,t={})=>(t.locale??s())===`zh-TW`?kr(e):Or(e)),jr=((e={},t={})=>(t.locale??s())===`zh-TW`?`即時網況 · 通訊`:`live net · comms`),Mr=((e={},t={})=>(t.locale??s())===`zh-TW`?`網路活動`:`Net activity`),Nr=((e={},t={})=>(t.locale??s())===`zh-TW`?`伺服器啟動後還沒有動靜`:`Nothing has happened since the server started`),Pr=((e={},t={})=>(t.locale??s())===`zh-TW`?`現在`:`now`),Fr=e=>`${e?.count} events in 30 min`,Ir=e=>`近 30 分鐘 ${e?.count} 筆`,Lr=((e,t={})=>(t.locale??s())===`zh-TW`?Ir(e):Fr(e)),Rr=((e={},t={})=>(t.locale??s())===`zh-TW`?`網的總計`:`Net totals`),zr=e=>`using ${e?.tool}`,Br=e=>`使用 ${e?.tool}`,Vr=((e,t={})=>(t.locale??s())===`zh-TW`?Br(e):zr(e)),Hr=`sb-locale`;function Ur(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 p(e)??(t?p(t):void 0)??p(e.split(`-`)[0])}function Wr(e,t){return p(e)??t.map(Ur).find(Boolean)??`en`}var Gr={brand_label:Re,tagline:jr,totals_label:Rr,stat_bases:Cr,stat_agents:Sr,stat_working:Er,stat_waiting:Tr,stat_commanding:wr,mark_commanding:tn,alerts:we,no_alerts:yn,pair_button:Fn,pair_title:In,link_connecting:St,location:Dt,all_bases:Te,documents:yt,timeline:Mr,states:Dr,mark_working:cn,mark_waiting:sn,mark_idle:an,mark_done:nn,mark_error:rn,credit:dt,language:xt,settings:ar,new_base:_n};Object.keys(Gr);function Kr(){let e=null;try{e=localStorage.getItem(Hr)}catch{}let n=Wr(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,Gr[e.dataset[t]]?.()??e.dataset[t]);let i=document.getElementById(`lang`);i.replaceChildren(...t.map(e=>new Option(Et({},{locale:e}),e,!1,e===n))),i.onchange=()=>{try{localStorage.setItem(Hr,i.value),location.reload()}catch{i.value=n}}}var qr=e=>e.unit??e.key,x=e=>e.mark===`waiting`||e.pending?0:1;function Jr(e,t){let n=new Map;for(let r of e.bases)for(let e of[...r.tower?[{...r.tower,role:`tower`},...r.tower.subs]:[],...[...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,closed:!e.control||!!e.ended});for(let i of e.monitors??[])(i.status===`error`||i.status===`stale`)&&(a=>n.set(a,{key:a,unit:e.key,ws:r.id,name:e.name,role:e.role,mark:`error`,note:`monitor:${i.status}:${i.what}`,at:t}))(`${e.key}\u001fmonitor:${i.id}:${i.at}`)}return n}function Yr(e,t){return[...t.values()].filter(t=>{let n=e?.get(t.key);return x(t)===0?!n||x(n)!==0||n.mark!==t.mark:e!==void 0&&n?.mark!==t.mark&&(t.mark===`error`||t.mark===`done`)})}var Xr=`input, textarea, select, [role=textbox], [role=combobox], [role=listbox], .term-scroll`,Zr=`button, a, summary, [role=button], [role=link]`,Qr=`.ask-opt, [role=radio], [role=checkbox]`,$r=`dialog.sheet[open], dialog.lightbox[open], [popover]:popover-open`;function ei(e,t,n=!1){if(t||e.defaultPrevented||e.isComposing||e.ctrlKey||e.altKey||e.metaKey)return;let r=e.target;if(!(r?.isContentEditable||r?.closest?.(Xr))){if(e.key===`f`||e.key===`F`)return`zoom`;if(e.key===` `&&!r?.closest?.(Qr)&&(n||!r?.closest?.(Zr)))return`next`}}function ti(e,t=()=>document.querySelector($r)!==null,n=window){let r,i=!1,a=null;n.addEventListener(`pointerdown`,()=>i=!0,!0),n.addEventListener(`focusin`,e=>a=i?e.target:null,!0),n.addEventListener(`keydown`,n=>{let o=n.target===a;i=!1;let s=ei(n,t(),o);if(s){if(n.repeat)return r===s?n.preventDefault():void 0;e(s)&&(r=s,n.preventDefault())}}),n.addEventListener(`keyup`,e=>{r===`next`&&e.key===` `&&e.preventDefault(),r=void 0})}var ni=3e4,ri=[`pointermove`,`pointerdown`,`keydown`,`wheel`,`touchstart`];function ii(e=document.documentElement){if(matchMedia(`(prefers-reduced-motion: reduce)`).matches)return;let t=Date.now(),n,r=()=>{let i=t+ni-Date.now();i>0?n=setTimeout(r,i):(n=void 0,e.toggleAttribute(`data-calm`,!0))},i=()=>{t=Date.now(),n===void 0&&(e.toggleAttribute(`data-calm`,!1),n=setTimeout(r,ni))};for(let e of ri)addEventListener(e,i,{capture:!0,passive:!0});document.addEventListener(`visibilitychange`,()=>document.hidden||i()),i()}var ai=(...e)=>e.filter(e=>e!==!1&&e!=null),oi=(e,t)=>(e.classList.add(t),e.classList.toggle(`flip`));function si(e,t,...n){let r=document.createElement(e);for(let[e,n]of Object.entries(t??{}))r.setAttribute(e,n);return r.append(...ai(...n)),r}var ci=140;function li(e,t){let n=document.createElement(`nav`),r=document.createElement(`div`),i=document.createElement(`i`);[n.className,r.className,i.className,n.hidden]=[`minimap`,`mm-in`,`mm-view`,!0],n.setAttribute(`aria-label`,ln()),n.append(r,i),document.body.append(n);let a=1,o=0,s=()=>{o=0;let t=e.getBoundingClientRect();i.style.transform=`translateY(${Math.round(Math.max(0,-t.top)*a)}px)`,i.style.height=`${Math.round(Math.min(innerHeight-Math.max(0,t.top),t.bottom)*a)}px`,n.classList.toggle(`away`,t.bottom<innerHeight)},c=()=>{let i=e.getBoundingClientRect();n.hidden=e.hidden||i.height<innerHeight*1.05||!matchMedia(`(min-width: 900px) and (hover: hover)`).matches,!n.hidden&&(a=Math.min(ci/i.width,innerHeight*.4/i.height),Object.assign(n.style,{width:`${Math.round(i.width*a)}px`,height:`${Math.round(i.height*a)}px`}),r.replaceChildren(...[...t.querySelectorAll(`:scope > .base:not(.leaving)`)].map(e=>{let t=e.getBoundingClientRect(),n=document.createElement(`i`);return n.dataset.mark=e.dataset.mark??`idle`,n.style.cssText=`left:${(t.left-i.left)*a}px;top:${(t.top-i.top)*a}px;width:${t.width*a}px;height:${t.height*a}px`,n})),s())};return addEventListener(`scroll`,()=>o||=requestAnimationFrame(s),{passive:!0}),addEventListener(`resize`,c),n.addEventListener(`click`,t=>{let n=e.getBoundingClientRect(),i=(t.clientY-r.getBoundingClientRect().top)/a;scrollTo({top:n.top+scrollY+i-innerHeight/2,behavior:matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`})}),c}function ui({x1:e,y1:t,x2:n,y2:r,mid:i},a=64){let o=Array.from({length:201},(a,o)=>{let s=o/200,c=1-s;return[c**3*e+3*c*c*s*i+3*c*s*s*i+s**3*n,c**3*t+3*c*c*s*t+3*c*s*s*r+s**3*r]}),s=o.reduce((e,t,n)=>(e.push(n?e[n-1]+Math.hypot(t[0]-o[n-1][0],t[1]-o[n-1][1]):0),e),[]);return Array.from({length:a+1},(e,t)=>{let n=t/a*s.at(-1),r=Math.max(1,s.findIndex(e=>e>=n)),[i,c]=[o[r-1],o[r]],l=s[r]>s[r-1]?(n-s[r-1])/(s[r]-s[r-1]):0;return[i[0]+(c[0]-i[0])*l,i[1]+(c[1]-i[1])*l]})}function di(e,t){if(t||!e.length)return[];let n=document.createElement(`style`);return n.textContent=e.map((e,t)=>`@keyframes pk${t}{${ui(e).map(([e,t],n,r)=>`${(n/(r.length-1)*100).toFixed(2)}%{transform:translate(${e.toFixed(1)}px,${t.toFixed(1)}px)}`).join(``)}}`).join(``),[n,...e.map((e,t)=>(e=>(e.className=`packet`,e.style.animationName=`pk${t}`,e))(document.createElement(`i`)))]}var fi=(function(){let e=typeof document<`u`&&document.createElement(`link`).relList;return e&&e.supports&&e.supports(`modulepreload`)?`modulepreload`:`preload`})(),pi=function(e,t){return new URL(e,t).href},mi={},hi=function(e){return e.pathname.endsWith(`.css`)},gi=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},S=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=pi(t,n);let r=s(t),i=hi(r);return gi(mi,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`:fi,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)})};function C(e,t,n,r,i=!1){Object.assign(e.dataset,t),[e.hidden,e.textContent]=[i,n],r&&e.setAttribute(`aria-label`,r)}var _i=(e,t)=>t.role===`subagent`&&t.ended&&t.key?C(e,{close:`dismiss`,key:t.key,name:t.name,role:t.role},ft(),vt({name:t.name})):C(e,{close:`unit`,key:t.key??``,name:t.name,role:t.role},y(),it({name:t.name}),!(t.control&&t.key)||t.role===`subagent`),vi=(e,t)=>C(e,{key:t?.key??``,name:t?.name??``,role:`tower`},Un(),void 0,!t?.control),yi=(e,t)=>C(e,{ws:t.id,name:t.label},y(),Ue({name:t.label})),bi=(e,t)=>C(e,{ws:t.id,name:t.label},fr(),hr({name:t.label})),xi=(e,t,n)=>C(e,{ws:t.id,name:n.label,tab:n.id},y(),Ye({name:n.label})),w=(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(ze(),`later`,!1),o(t,`sheet-yes`,!0)]:[o(Be(),`later`,!1)]),r.append(i,a),r.addEventListener(`close`,()=>(r.remove(),n(!1))),document.body.append(r),r.showModal()}),Si=e=>e.bases.flatMap(e=>[...e.tower?[e.tower]:[],...e.tabs.flatMap(e=>e.units),...e.outside]).flatMap(e=>e.subs).filter(e=>e.ended).map(e=>e.key);function Ci(e,t){let n=Si(t).length;e.hidden=!n,n&&(e.textContent=ht({count:n}))}function wi(e,t,n){let r=n.stashed??[],i=JSON.stringify(r);e.hidden=!r.length;let a=t.closest(`[popover]`);!r.length&&a?.matches(`:popover-open`)&&a.hidePopover(),r.length&&(e.textContent=xr({count:r.length})),t.dataset.key!==i&&(t.dataset.key=i,t.replaceChildren(...r.map(e=>{let t=document.createElement(`li`),n=document.createElement(`span`),r=document.createElement(`button`);return n.textContent=e.name===e.label?e.label:`${e.name} (${e.label})`,[r.type,r.className]=[`button`,`pair-btn`],C(r,{close:`pop`,name:e.name},Ln(),Bn({name:e.name})),t.append(n,r),t})))}function Ti(e,{route:t,net:n,go:r}){let i=t();if(i.view===`map`)return;if(e.close===`base`||e.close===`stash`)return void(i.ws===e.ws&&r({view:`map`}));let a=e=>e.flatMap(e=>[e.key,...a(e.subs)]),o=e.close===`tab`&&i.ws===e.ws?n()?.bases.find(t=>t.id===e.ws)?.tabs.find(t=>t.id===e.tab):void 0;i.view===`session`&&(e.close===`unit`?i.key===e.key:o&&a(o.units).includes(i.key))&&r({view:`workspace`,ws:i.ws})}function Ei(e){document.addEventListener(`click`,t=>{let n=t.target?.closest?.(`button[data-close]`),r=n?.dataset;if(n&&r){if(t.preventDefault(),r.close===`dismiss`||r.close===`dismiss-all`)return void S(async()=>{let{post:e}=await import(`./post-UHMNmNgA.js`).then(e=>e.n);return{post:e}},[],import.meta.url).then(({post:e})=>e(`dismiss`,r.close===`dismiss`?{key:r.key}:{all:!0})).then(e=>e.ok||w(e.body.reason??b({status:e.status})),()=>w(v()));if(r.close===`pop`)return void(n.toggleAttribute(`disabled`,!0),S(async()=>{let{post:e}=await import(`./post-UHMNmNgA.js`).then(e=>e.n);return{post:e}},[],import.meta.url).then(({post:e})=>e(`close/pop`,{name:r.name})).then(e=>e.ok||w(e.body.reason??b({status:e.status})),()=>w(v())).finally(()=>n.toggleAttribute(`disabled`,!1)));w((r.close===`stash`?vr:r.close===`base`?Ke:r.close===`tab`?Qe:r.role===`tower`?tt:st)({name:r.name??``}),r.close===`stash`?fr():y()).then(t=>{t&&(n.toggleAttribute(`disabled`,!0),S(async()=>{let{post:e}=await import(`./post-UHMNmNgA.js`).then(e=>e.n);return{post:e}},[],import.meta.url).then(({post:e})=>e(`close/${r.close===`base`?`all`:r.close}`,r.close===`unit`?{key:r.key}:{workspace:r.ws,...r.tab&&{tab:r.tab}})).then(t=>t.ok?Ti(r,e):w(t.body.reason??b({status:t.status})),()=>w(v())).finally(()=>n.toggleAttribute(`disabled`,!1)))})}})}var Di=e=>{try{return decodeURIComponent(e)}catch{return e}},T=e=>/^\.+$/.test(e)?e.replaceAll(`.`,`%2E`):encodeURIComponent(e);function E(e){let[t,n]=e.split(`#`)[0].split(`?`),[r,i,a,o]=t.replace(/^\/+|\/+$/g,``).split(`/`).map(Di);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 D=e=>e.view===`map`?``:e.view===`workspace`?`w/${T(e.ws)}`:`w/${T(e.ws)}/s/${T(e.key)}${e.at?`?at=${encodeURIComponent(e.at)}`:``}`,Oi=e=>e.view===`session`?{view:`workspace`,ws:e.ws}:{view:`map`},ki=e=>e.view===`session`?e.key:e.view===`workspace`?`w:${e.ws}`:null;function Ai(e,t=new URL(document.baseURI).pathname){let n=()=>E(location.pathname.slice(t.length)+location.search),r={route:n,href:e=>D(e)||`./`,go(n){let r=t+D(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(E(t.getAttribute(`data-route`))))}),r}var ji={main:`main`,member:`member`,subagent:`subagent`,outpost:`outpost`,outside:`outside`,tower:`tower`},Mi={commanding:tn,working:cn,waiting:sn,idle:an,done:nn,error:rn,unknown:on},Ni={main:Qn,member:$n,subagent:rr,tower:ir,outpost:er,outside:tr,session:nr},Pi={thinking:Sn,"watching a monitor":xn,idle:an,"waiting on a question":sn,finished:nn},Fi={claude:`Claude`,codex:`Codex`},Ii=e=>Object.hasOwn(Ni,e)?Ni[e]():e,Li=e=>e===`waiting`||e===`error`,O=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)},k=(e,t)=>{let n=document.getElementById(e);if(!(n instanceof t))throw Error(`#${e} is missing from the page`);return n},A=(e,t,n)=>{let r=e.querySelector(t);r.textContent!==n&&(r.textContent=n)},j=(e,t)=>{if(e.dataset.mark===t)return;let n=e.dataset.mark!==void 0;e.dataset.mark=t,n&&oi(e,`flash`)},Ri=e=>(t=>(e.slice(8,t)===`stale`?hn:fn)({what:e.slice(t+1)}))(e.indexOf(`:`,8)),M=(e,t)=>e?e.startsWith(`tool:`)?Vr({tool:e.slice(5)}):e.startsWith(`monitor:`)?Ri(e):Object.hasOwn(Pi,e)?Pi[e]():e:Mi[t](),zi=(e,t,n,r,i=M(n,r))=>{A(e,t,i),e.querySelector(t).toggleAttribute(`data-monitoring`,i===M(n,r)&&n===`watching a monitor`)},N=(e,t)=>{e.toggleAttribute(`hidden`,!t),t&&(e.setAttribute(`href`,D(t)||`./`),e.setAttribute(`data-route`,D(t)))},P=(e,t)=>{let n=t.getBoundingClientRect(),r=e.offsetWidth;e.style.top=`${n.bottom+8}px`,e.style.left=`${Math.max(8,Math.min(n.right-r,innerWidth-r-8))}px`},Bi=`<div class="plate"><i class="ring"></i><svg><use href="#i-main"/></svg><b class="badge"></b></div>`;function Vi(e,t,n,r){j(e,n);let i=e.querySelector(`use`),a=`#i-${ji[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 F(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 Hi=(e,t=Math.max(0,Date.now()-e)/1e3)=>t<60?Ce({n:String(Math.floor(t))}):t<3600?be({n:String(Math.floor(t/60))}):t<86400?_e({n:String(Math.floor(t/3600))}):me({n:String(Math.floor(t/86400))}),Ui=(e,t)=>(t===void 0?delete e.dataset.since:e.dataset.since=String(t),e.textContent=t===void 0?``:Hi(t));function Wi(e,t=[]){let n=e.querySelector(`:scope > .ticks`),r=t.map(e=>`${e.at}${e.mark}`).join();n.dataset.sig!==r&&(n.dataset.sig=r,e.classList.toggle(`ticked`,t.length>0),n.replaceChildren(...t.map((e,n)=>{let r=document.createElement(`i`);return r.dataset.mark=e.mark,r.style.setProperty(`--o`,((n+1)/t.length).toFixed(2)),r})))}var I=()=>O(`<div class="unit"><div class="card"><a class="hit"></a>${Bi}<div class="meta"><span class="name"></span><span class="line"><em class="role"></em><em class="agent"></em><span class="note"></span><span class="age"></span></span><span class="todo" hidden><b></b><span></span></span></div><button type="button" class="quit-btn" data-close="unit" hidden></button><span class="ticks" aria-hidden="true"></span></div><div class="subs"></div></div>`);function L(e,t){let n=e.closest(`.base`)?.dataset.key,r=e.querySelector(`.hit`);N(r,t.key&&n?{view:`session`,ws:n,key:t.key}:void 0),r.setAttribute(`aria-label`,`${t.name}: ${M(t.note,t.mark)}`),r.toggleAttribute(`data-alert`,Li(t.mark)),j(e,t.mark),Vi(e.querySelector(`.plate`),t.role,t.mark,t.docs),A(e,`.name`,t.name),A(e,`.role`,Ii(t.role)),A(e,`.agent`,t.agent?Fi[t.agent]:``),zi(e,`.note`,t.note,t.mark),Ui(e.querySelector(`:scope > .card .age`),t.since);let i=e.querySelector(`:scope > .card .todo`);i.hidden=!t.todo,t.todo&&(A(i,`b`,`${t.todo.done<t.todo.total?`◐`:`✓`} ${t.todo.done}/${t.todo.total}`),A(i,`span`,t.todo.now??``)),Wi(e.querySelector(`:scope > .card`),t.ticks),_i(e.querySelector(`:scope > .card > .quit-btn`),t),F(e.querySelector(`.subs`),t.subs??[],I,L)}function Gi(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`?Mn():Nn())&&(e.textContent=r===`main`?Mn():Nn())}var Ki=()=>O(`<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>${bt()}</span><h2><a class="enter-base"></a></h2><p><span class="tstate"></span><span class="age"></span></p><button type="button" class="quit-btn tower-quit" data-close="unit" hidden></button></div><button type="button" class="quit-btn" data-close="base"></button></header><div class="subs tower-subs"></div><div class="spawn-btns"><button type="button" class="pair-btn"></button><button type="button" class="pair-btn" data-close="stash"></button></div><div class="tabs"></div><div class="outposts" data-label="${Pn()}"></div></section>`);function qi(e,t){j(e,t.mark),e.classList.toggle(`head`,t.head);let n=e.querySelector(`.tower`);n.classList.toggle(`ghost`,!t.tower),j(n,t.tower?.mark??`unknown`),A(e,`h2 a`,t.label),N(e.querySelector(`h2 a`),{view:`workspace`,ws:t.id}),A(e,`.title .tstate`,t.tower?ut({state:Mi[t.tower.mark]()}):bn()),Ui(e.querySelector(`.title .age`),t.tower?.since),Gi(e.querySelector(`.spawn-btns button`),t),yi(e.querySelector(`header > .quit-btn`),t),bi(e.querySelector(`.spawn-btns [data-close=stash]`),t),vi(e.querySelector(`.tower-quit`),t.tower),F(e.querySelector(`.tower-subs`),t.tower?.subs??[],I,L),F(e.querySelector(`.tabs`),t.tabs,()=>O(`<div class="tab"><h3><span></span><button type="button" class="tab-add"></button><button type="button" class="quit-btn" data-close="tab"></button></h3><div class="units"></div></div>`),(e,n)=>{A(e,`h3 span`,Ar({label:n.label})),xi(e.querySelector(`.quit-btn`),t,n),Gi(e.querySelector(`.tab-add`),t,n.id),F(e.querySelector(`.units`),n.units,I,L)}),F(e.querySelector(`.outposts`),t.outposts.map(e=>({id:e.id,name:e.label,role:`outpost`,mark:e.mark,note:e.mark===`unknown`?vn():void 0,since:e.since,ticks:e.ticks})),I,L)}function Ji(e,t,n,r){let i=[...e.querySelectorAll(`.base:not(.leaving) .tower`)],a=e.querySelector(`.base.head:not(.leaving) .tower`),o=e.getBoundingClientRect(),s=e=>{let t=e.getBoundingClientRect();return[Math.round(t.x+t.width/2-o.x),Math.round(t.y+t.height/2-o.y)]},c=a?i.filter(e=>e!==a):[],l=c.map(e=>{let[[t,n],[r,i]]=[s(a),s(e)];return{x1:t,y1:n,x2:r,y2:i,mid:Math.round((t+r)/2)}}),u=l.map(({x1:e,y1:t,x2:n,y2:r,mid:i})=>`M${e} ${t}C${i} ${t} ${i} ${r} ${n} ${r}`),d=u.join(`|`);t.dataset.sig!==d&&(t.dataset.sig=d,t.replaceChildren(...u.map(e=>(t=>(t.setAttribute(`class`,`wire`),t.setAttribute(`d`,e),t))(document.createElementNS(`http://www.w3.org/2000/svg`,`path`)))),n.replaceChildren(...di(l,r))),n.querySelectorAll(`.packet`).forEach((e,t)=>e.toggleAttribute(`data-live`,[`working`,`commanding`].includes(a.dataset.mark??``)||[`working`,`commanding`].includes(c[t].dataset.mark??``)))}var Yi=2,Xi=20;function Zi(){let[e,t,n,r]=[k(`map`,HTMLElement),k(`bases`,HTMLElement),k(`links`,SVGSVGElement),k(`packets`,HTMLElement)],i=matchMedia(`(prefers-reduced-motion: reduce)`).matches,a=new Set,o=new ResizeObserver(e=>e.forEach(({target:e,borderBoxSize:t})=>e.style.gridRowEnd=`span ${Math.ceil((t[0].blockSize+Xi)/Yi)}`)),s=li(e,t),c=()=>(s(),!e.hidden&&Ji(e,n,r,i));return setInterval(()=>document.querySelectorAll(`.age[data-since]`).forEach(e=>Ui(e,Number(e.dataset.since))),15e3),new ResizeObserver(c).observe(e),new ResizeObserver(([e])=>document.documentElement.style.setProperty(`--hud`,`${Math.ceil(e.borderBoxSize[0].blockSize)}px`)).observe(document.querySelector(`.hud`)),ii(),{layout:c,stats(e){let t=e.bases.flatMap(e=>[...e.tower?.subs??[],...e.tabs.flatMap(e=>e.units.flatMap(e=>[e,...e.subs]))]),n=e=>String(t.filter(t=>!e||t.mark===e).length);k(`s-commanding`,HTMLElement).parentElement.toggleAttribute(`data-on`,t.some(e=>e.mark===`commanding`));for(let[t,r]of[[`s-bases`,String(e.bases.length)],[`s-agents`,n()],[`s-working`,n(`working`)],[`s-commanding`,n(`commanding`)],[`s-waiting`,n(`waiting`)]])k(t,HTMLElement).textContent=r},show(e){F(t,e.bases,Ki,qi);for(let e of t.children)a.has(e)||(a.add(e),o.observe(e));for(let e of a)e.isConnected||(a.delete(e),o.unobserve(e));requestAnimationFrame(c)},pause(e){document.documentElement.classList.toggle(`paused`,e)}}}var Qi=new URL(`done-jqKY4qf5.mp3`,import.meta.url).href,$i=new URL(`error-DdTLgPEw.mp3`,import.meta.url).href,ea={waiting:new URL(`waiting-DOg8-8gu.mp3`,import.meta.url).href,error:$i,done:Qi},ta=e=>e.mark===`waiting`||e.pending?`waiting`:e.mark===`error`?`error`:e.mark===`done`?`done`:void 0,na=(e,t)=>{try{return localStorage.getItem(e)??t}catch{return t}},ra=(e,t)=>{try{localStorage.setItem(e,t)}catch{}};function ia(e){let t=e=>document.getElementById(e),n=t(`remind`),r=t(`sound`),i=t(`sound-pop`),a=t(`sound-on`),o=t(`sound-vol`),s=t(`sound-vol-out`),c=typeof Notification<`u`,l=na(`sb.remind`,`1`)===`1`,u=na(`sb.sound`,`0`)===`1`,d=Math.min(100,Math.max(0,Number(na(`sb.volume`,`60`))||0)),f,p,m=new Map,h=()=>{let e=c?Notification.permission:`denied`;n.setAttribute(`aria-pressed`,String(l)),n.dataset.state=l?e===`granted`?`on`:e===`denied`?`blocked`:`ask`:`off`,n.title=c?l?e===`granted`?Xn():e===`denied`?Jn():qn():Yn():Zn(),r.dataset.state=u?`on`:`off`,r.setAttribute(`aria-label`,u?cr():sr()),a.checked=u,o.value=s.value=String(d),p&&(p.gain.value=(d/100)**2)};n.textContent=Kn(),r.textContent=or(),r.title=lr(),t(`sound-on-label`).textContent=or(),t(`sound-vol-label`).textContent=dr(),t(`sound-try`).textContent=ur(),n.onclick=async()=>{l&&c&&Notification.permission==="default"?await Notification.requestPermission().catch(()=>{}):ra(`sb.remind`,(l=!l)?`1`:`0`),h()},i.addEventListener(`toggle`,e=>e.newState===`open`&&P(i,r)),a.onchange=()=>{ra(`sb.sound`,(u=a.checked)?`1`:`0`),h(),u&&g(`done`)},o.oninput=()=>(ra(`sb.volume`,String(d=Number(o.value))),h()),o.onchange=()=>g(`done`),t(`sound-try`).onclick=()=>g(`done`);function g(e){f??=new AudioContext,p||((p=f.createGain()).connect(f.destination),h());let t=f,n=p;m.has(e)||m.set(e,fetch(ea[e]).then(e=>e.arrayBuffer()).then(e=>t.decodeAudioData(e))),Promise.all([t.resume(),m.get(e)]).then(([,e])=>{let r=t.createBufferSource();r.buffer=e,r.connect(n),r.start()}).catch(()=>m.delete(e))}return h(),{signal(t){let n=t.flatMap(e=>(t=>t?[{a:e,k:t}]:[])(ta(e)));if(n.length&&(u&&g([`waiting`,`error`,`done`].find(e=>n.some(t=>t.k===e))),l&&c&&Notification.permission===`granted`&&(document.hidden||!document.hasFocus())))for(let{a:t,k:r}of n){let n=new Notification(t.name,{body:{waiting:jn,error:On,done:Tn}[r]({note:t.note??``}).trim(),tag:t.key,icon:document.querySelector(`link[rel="icon"]`)?.href,silent:r!==`waiting`});n.onclick=()=>(window.focus(),n.close(),e(t))}}}}var aa=45e3,oa=1e3,sa=3e4,ca=(e,t)=>Math.min(sa,oa*2**(e-1))*(.8+.4*t);function la(e){try{return JSON.parse(e)}catch{return}}function ua(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(),aa),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,ca(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=la(r);i&&e.onNet(i),o({problem:i?void 0:Vn()}),l()}),n.listen(`ping`,()=>t===n&&l()),n.listen(`problem`,e=>{t===n&&(o({problem:la(e)??Hn()}),l())}),r=e.setTimeout(()=>u(),aa)};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 da={commanding:At,working:en,waiting:Zt,idle:zt,done:Nt,error:It,unknown:Jt},fa=e=>(e.kind===`joined`?Ht:e.kind===`left`?Gt:da[e.mark])({name:e.name}),pa=18e5,ma={waiting:0,error:0,working:1,commanding:1},ha=e=>new Date(e).toLocaleTimeString([],{hour12:!1});function ga(e){let[t,n,r,i,a]=[`.tl-lanes`,`.tl-axis`,`.tl-at`,`.tl-last`,`.tl-span`].map(t=>e.querySelector(t)),o=[],s=``;matchMedia(`(max-width: 640px)`).matches&&(e.open=!1);let c=()=>{let e=Date.now()-pa,s=o.filter(t=>t.at>=e),c=s.at(-1);t.replaceChildren(...s.map(t=>{let n=document.createElement(`a`),r=(t.at-e)/pa*100;return n.className=`tl-mark ${t.kind}${r>70?` end`:``}`,n.dataset.mark=t.kind===`left`?`unknown`:t.mark,n.style.cssText=`left:${r.toFixed(2)}%;top:${(ma[t.mark]??2)*14+4}px`,n.setAttribute(`aria-label`,`${ha(t.at)} ${fa(t)}`),N(n,t.key&&t.kind!==`left`?{view:`session`,ws:t.ws,key:t.key}:{view:`workspace`,ws:t.ws}),n})),n.replaceChildren(...[0,10,20].map(t=>Object.assign(document.createElement(`span`),{textContent:ha(e+t*6e4).slice(0,5)})),Object.assign(document.createElement(`span`),{textContent:Pr()})),r.textContent=c?ha(c.at):``,i.textContent=c?fa(c):Nr(),a.textContent=Lr({count:String(s.length)})};return setInterval(c,3e4),c(),{net(e){let t=e.events??[],n=t.map(e=>`${e.at}${e.kind}${e.key??e.name}${e.mark}`).join();n!==s&&(s=n,o=t,c())}}}Kr();var R=Zi(),_a=ga(document.getElementById(`timeline`)),z=e=>document.getElementById(e),va=e=>e?new Date(e).toLocaleTimeString([],{hour12:!1}):gn(),ya,B,V,ba={state:`connecting`,attempt:0},H={view:`map`},xa=!1,Sa,Ca=``,U,wa,W=e=>U?e(U):void wa?.then(e);function Ta(){wa??=S(async()=>{let{mountFocus:e}=await import(`./views-CyDMiewB.js`);return{mountFocus:e}},[],import.meta.url).then(({mountFocus:e})=>(U=e({data:Ba,restart:()=>Z.restart(),openTile:q,embedTerminal:(e,t,n)=>new Promise(r=>K(i=>r(i.terminal.embed(e,t,n)))),online:()=>ba.state===`live`}),U.show(H,H),B&&U.net(B),U))}var G,Ea,K=e=>{if(G)return e(G);Ea??=S(async()=>{let{mountPanels:e}=await import(`./layer-D0hwVIhX.js`);return{mountPanels:e}},[],import.meta.url).then(({mountPanels:e})=>G=e({label:e=>B?.bases.find(t=>t.id===e)?.label??e,recent:async e=>(await(Y?Y.data(e).latest():za(e,`?limit=12`))).items,post:e=>Y&&((t,n)=>Y.data(e).post(t,n)),stream:()=>Ca,showTerminal:(e,t)=>(G?.stack.close(),U?.terminal(t),X.go({view:`session`,ws:e,key:t}))})),Ea.then(e)},q=(e,t)=>K(n=>n.tiles.open(e,t)),J=document.querySelector(`link[rel="icon"]`),Da=J&&decodeURIComponent(J.href.slice(J.href.indexOf(`,`)+1)),Oa=0;function ka(e){let t=e.bases.flatMap(e=>[...e.tower?[e.tower,...e.tower.subs]:[],...[...e.tabs.flatMap(e=>e.units),...e.outside].flatMap(e=>[e,...e.subs])]).filter(e=>e.mark===`waiting`||e.pending).length;if(!J||!Da||t===Oa)return;Oa=t;let n=`<circle cx='23' cy='9' r='9' fill='#e0af68' stroke='#1a1b26' 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='#16161e'>${t>9?`9+`:t}</text>`;J.href=`data:image/svg+xml,${encodeURIComponent(t?Da.replace(`</svg>`,`${n}</svg>`):Da)}`}var Aa;function ja(e){B=V=e,ka(e);let t=Jr(e,Date.now());if(Aa&&Ha.signal(Yr(Aa,t)),Aa=t,document.hidden)return;R.stats(e),Ci(z(`dismiss-all`),e),wi(z(`stashed`),z(`stashed-list`),e),Q?.net(e);let n=Yr(Sa,t);(n.length||G)&&K(e=>e.alerts(n,t)),Sa=t,_a.net(e),W(t=>t.net(e)),H.view===`map`&&(R.show(e),ya=e,V=void 0)}function Ma(e){let t=H,n=e.view===`workspace`&&t.view===`map`?document.querySelector(`#bases [data-key="${CSS.escape(e.ws)}"]`)?.getBoundingClientRect():void 0;H=e,Q?.route(e),e.view!==`map`&&Ta(),z(`map`).hidden=e.view!==`map`,z(`legend`).hidden=e.view===`session`,z(`stage`).dataset.view=e.view,W(r=>r.show(e,t,n)),e.view===`map`&&B&&B!==ya&&(ja(B),requestAnimationFrame(R.layout)),xa&&ki(e)!==ki(t)&&Z.restart()}function Na(e){ba=e;let t=e.state===`reconnecting`||e.state===`offline`;document.body.dataset.stale=z(`stage`).dataset.stale=String(t),z(`link`).dataset.state=e.state,z(`link-text`).textContent={connecting:St,live:Ct,reconnecting:Tt,offline:wt}[e.state](),U&&B&&U.net(B),G?.stack.redraw();let n=z(`banner`);n.hidden=!t&&!e.problem;let r=e.state===`offline`?Ae({tries:e.attempt-1}):e.state===`reconnecting`?e.attempt?Le({attempt:e.attempt}):Pe():Ne({problem:e.problem??``}),i=document.createElement(`b`);i.textContent=va(e.lastContact),n.replaceChildren(`${r} ${De()} `,i,Ee())}function Pa(e,t){try{let n=JSON.parse(t);W(t=>e===`history`?t.history(n):t.cards(n))}catch{}}var Fa=document.querySelector(`meta[name="sb-build"]`)?.content,Ia=e=>!!(Fa&&Fa!==JSON.parse(e).build);function La(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 Ra=e=>fetch(`api/${e}`,{cache:`no-store`}).then(e=>e.ok?e.json():Promise.reject(Error(String(e.status)))),za=(e,t=``)=>Ra(`history/${encodeURIComponent(e)}${t}`),Y=void 0,Ba=e=>({older:t=>za(e,`?before=${encodeURIComponent(t)}`),latest:()=>za(e),entry:t=>Ra(`entry/${encodeURIComponent(e)}/${encodeURIComponent(t)}`).catch(()=>void 0),pic:(t,n)=>`api/image/${encodeURIComponent(e)}/${encodeURIComponent(t)}/${n}`}),Va=()=>{let e=La(ki(H));return e.listen(`history`,e=>Pa(`history`,e)),e.listen(`cards`,e=>Pa(`cards`,e)),e.listen(`hello`,e=>Ia(e)?location.reload():(Ca=e,G?.terminal.hello())),e.listen(`mirror`,e=>G?.terminal.frame(e)),e};document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`a[data-alert]`),n=t&&E(t.getAttribute(`data-route`)??``);if(!n||n.view!==`session`||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;let r=Sa?.get(n.key);r&&(e.preventDefault(),K(e=>e.stack.show(r)))},!0);var X=Ai(e=>Ma(e)),Ha=ia(e=>X.go({view:`session`,ws:e.ws,key:qr(e)})),Z=ua({open:Va,now:Date.now,setTimeout:(e,t)=>window.setTimeout(e,t),clearTimeout:e=>window.clearTimeout(e),random:Math.random,hidden:()=>document.hidden,onNet:ja,onStatus:Na}),Ua=()=>Z.resume();document.addEventListener(`visibilitychange`,()=>{if(R.pause(document.hidden),document.hidden)return Z.hide();V&&ja(V),W(e=>e.wake()),Ua()}),addEventListener(`keydown`,e=>{e.key!==`Escape`||e.defaultPrevented||document.querySelector(`dialog.sheet[open], dialog.lightbox[open], [popover]:popover-open`)||(e.preventDefault(),!G?.stack.close()&&H.view!==`map`&&X.go(Oi(H)))}),ti(e=>G?.hotkey(e)??!1),z(`pair`).hidden=location.hostname!==`127.0.0.1`,z(`pair`).addEventListener(`click`,()=>void S(async()=>{let{pairTile:e}=await import(`./pair-nwRVXG7m.js`);return{pairTile:e}},[],import.meta.url).then(({pairTile:e})=>q(e(),!0)));var Q,$=matchMedia(`(pointer: coarse), (max-width: 640px)`),Wa=()=>void S(async()=>{let{mountDrawer:e}=await import(`./drawer-nBVD-VWA.js`);return{mountDrawer:e}},[],import.meta.url).then(({mountDrawer:e})=>(Q??=e(),B&&Q.net(B),Q.route(H)));$.matches?Wa():$.addEventListener(`change`,()=>$.matches&&!Q&&Wa(),{once:!0}),Ei({route:()=>H,net:()=>B,go:e=>X.go(e)}),z(`stashed-pop`).addEventListener(`toggle`,e=>e.newState===`open`&&P(z(`stashed-pop`),z(`stashed`))),z(`prefs-pop`).addEventListener(`toggle`,e=>e.newState===`open`&&P(z(`prefs-pop`),z(`prefs`))),document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`button[data-open]`);t&&S(async()=>{let{openingOf:e,spawnTile:t}=await import(`./spawn-DJjGborv.js`);return{openingOf:e,spawnTile:t}},[],import.meta.url).then(({openingOf:e,spawnTile:n})=>{let r=e(t,B?.bases??[]);r&&q(n(r,(e,t,n)=>(G?.tiles.close(n),X.go({view:`session`,ws:e,key:t}))),!0)})});for(let e of[`focus`,`pageshow`,`online`])window.addEventListener(e,()=>!document.hidden&&Ua());Na(ba),Ma(X.route()),Z.start(),xa=!0;export{bn as A,Te as B,x as C,Tr as D,Er as E,bt as F,yt as I,ut as L,yn as M,vn as N,b as O,gn as P,Be as R,$r as S,Ar as T,s as V,Li as _,N as a,ai as b,M as c,O as d,j as f,A as g,F as h,Bi as i,v as j,Pn as k,Vi as l,zi as m,ji as n,Gi as o,Ii as p,Mi as r,k as s,Fi as t,P as u,S as v,qr as w,oi as x,si as y,ze as z};
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=ue(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(de(t)&&_.has(t)){let e=_.get(t);if(e){let t=e.getLocale();if(t instanceof Promise)continue;if(t!==void 0)return m(t)}}let e=p(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=ue(window.location.href));for(let t of c)if(t===`baseLocale`)continue;else if(de(t)&&_.has(t)){let n=_.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()},f=()=>typeof window<`u`?window.location.origin:`http://fallback.com`;function p(e){if(typeof e!=`string`)return;let n=e.toLowerCase();for(let e of t)if(e.toLowerCase()===n)return e}function m(e){let n=p(e);if(n)return n;throw Error(`Invalid locale: ${e}. Expected one of: ${t.join(`, `)}`)}function h(e){return e}function g(t,n){return new e(t,n.href)}function ee(){return 0}function te(e){return i}function ne(e,t){return e.exec(t.href)}var re=n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);RegExp(`(?:^|;\\s*)${re}=([^;]*)`);function ie(e){return ae(e)}function ae(e){let t=h(typeof e==`string`?new URL(e,f()):new URL(e.href)),n=t.pathname.replace(/^\/+/,``).split(`/`);return n.length>0&&p(n[0])&&(t.pathname=`/`+n.slice(1).join(`/`)),h(t)}var oe=-1,se,ce;function le(e){if(i.length===0)return;let t=typeof e==`string`?e:e.href,n=ee();if(se===t&&oe===n)return ce;let r=h(new URL(t,`http://example.com`)),a=ie(r),o=a.href===r.href?[r]:[r,a],s;for(let e of o){for(let t of te(e))if(ne(g(t.match,e),e)){s=t;break}if(s)break}return oe=n,se=t,ce=s,s}function ue(e){let t=le(e);return t&&t.exclude!==!0&&Array.isArray(t.strategy)?t.strategy:r}var _=new Map;function de(e){return typeof e==`string`&&/^custom-[A-Za-z0-9_-]+$/.test(e)}var fe=e=>`${e?.n}d`,pe=e=>`${e?.n} 天`,me=((e,t={})=>(t.locale??s())===`zh-TW`?pe(e):fe(e)),he=e=>`${e?.n}h`,ge=e=>`${e?.n} 小時`,_e=((e,t={})=>(t.locale??s())===`zh-TW`?ge(e):he(e)),ve=e=>`${e?.n}m`,ye=e=>`${e?.n} 分`,be=((e,t={})=>(t.locale??s())===`zh-TW`?ye(e):ve(e)),xe=e=>`${e?.n}s`,Se=e=>`${e?.n} 秒`,Ce=((e,t={})=>(t.locale??s())===`zh-TW`?Se(e):xe(e)),we=((e={},t={})=>(t.locale??s())===`zh-TW`?`警示`:`Alerts`),Te=((e={},t={})=>(t.locale??s())===`zh-TW`?`所有基地`:`all bases`),Ee=((e={},t={})=>(t.locale??s())===`zh-TW`?``:`.`),De=((e={},t={})=>(t.locale??s())===`zh-TW`?`最後更新:`:`Last update`),Oe=e=>`Disconnected. Gave up after ${e?.tries} tries; it reconnects when you return to this tab.`,ke=e=>`連線中斷。重試 ${e?.tries} 次後放棄;回到此分頁時會重新連線。`,Ae=((e,t={})=>(t.locale??s())===`zh-TW`?ke(e):Oe(e)),je=e=>`The server is up but cannot read the net: ${e?.problem}`,Me=e=>`伺服器正常,但讀不到網:${e?.problem}`,Ne=((e,t={})=>(t.locale??s())===`zh-TW`?Me(e):je(e)),Pe=((e={},t={})=>(t.locale??s())===`zh-TW`?`與稻草網的連線中斷,正在重新連線…畫面顯示的是最後已知狀態。`:`Disconnected from the straw net. Reconnecting… The view shows the last known state.`),Fe=e=>`Disconnected from the straw net. Reconnecting (try ${e?.attempt})… The view shows the last known state.`,Ie=e=>`與稻草網的連線中斷,正在重新連線(第 ${e?.attempt} 次)…畫面顯示的是最後已知狀態。`,Le=((e,t={})=>(t.locale??s())===`zh-TW`?Ie(e):Fe(e)),Re=((e={},t={})=>(t.locale??s())===`zh-TW`?`Straw Net:所有基地`:`Straw Net: all bases`),ze=((e={},t={})=>(t.locale??s())===`zh-TW`?`取消`:`Cancel`),Be=((e={},t={})=>(t.locale??s())===`zh-TW`?`關閉`:`Close`),Ve=e=>`Quit base ${e?.name}`,He=e=>`關掉基地 ${e?.name}`,Ue=((e,t={})=>(t.locale??s())===`zh-TW`?He(e):Ve(e)),We=e=>`Quit base ${e?.name}? Every agent in it and its tower quit. Nothing quits while anything running would be lost.`,Ge=e=>`要關掉基地 ${e?.name} 嗎?裡面所有 agent 和塔台都會退出。有會遺失的東西時什麼都不關。`,Ke=((e,t={})=>(t.locale??s())===`zh-TW`?Ge(e):We(e)),qe=e=>`Quit squad ${e?.name}`,Je=e=>`關掉小隊 ${e?.name}`,Ye=((e,t={})=>(t.locale??s())===`zh-TW`?Je(e):qe(e)),Xe=e=>`Quit squad ${e?.name}? Every agent in it quits.`,Ze=e=>`要關掉小隊 ${e?.name} 嗎?裡面所有 agent 都會退出。`,Qe=((e,t={})=>(t.locale??s())===`zh-TW`?Ze(e):Xe(e)),$e=e=>`Quit the tower ${e?.name}? The base's mains become members again.`,et=e=>`要關掉塔台 ${e?.name} 嗎?這個基地的主智慧體都會降格成成員。`,tt=((e,t={})=>(t.locale??s())===`zh-TW`?et(e):$e(e)),nt=e=>`Quit ${e?.name}`,rt=e=>`關掉 ${e?.name}`,it=((e,t={})=>(t.locale??s())===`zh-TW`?rt(e):nt(e)),at=e=>`Quit ${e?.name}? It quits pi and its pane closes.`,ot=e=>`要關掉 ${e?.name} 嗎?它會退出 pi,窗格也會關掉。`,st=((e,t={})=>(t.locale??s())===`zh-TW`?ot(e):at(e)),ct=e=>`control tower · ${e?.state}`,lt=e=>`塔台 · ${e?.state}`,ut=((e,t={})=>(t.locale??s())===`zh-TW`?lt(e):ct(e)),dt=((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.`),ft=((e={},t={})=>(t.locale??s())===`zh-TW`?`移除`:`Dismiss`),pt=e=>`Dismiss finished (${e?.count})`,mt=e=>`移除已完成(${e?.count})`,ht=((e,t={})=>(t.locale??s())===`zh-TW`?mt(e):pt(e)),gt=e=>`Dismiss ${e?.name}`,_t=e=>`從畫面移除 ${e?.name}`,vt=((e,t={})=>(t.locale??s())===`zh-TW`?_t(e):gt(e)),yt=((e={},t={})=>(t.locale??s())===`zh-TW`?`文件`:`Documents`),bt=((e={},t={})=>(t.locale??s())===`zh-TW`?`總塔台`:`head tower`),xt=((e={},t={})=>(t.locale??s())===`zh-TW`?`語言`:`Language`),St=((e={},t={})=>(t.locale??s())===`zh-TW`?`連線中`:`connecting`),Ct=((e={},t={})=>(t.locale??s())===`zh-TW`?`即時`:`live`),wt=((e={},t={})=>(t.locale??s())===`zh-TW`?`離線`:`offline`),Tt=((e={},t={})=>(t.locale??s())===`zh-TW`?`重新連線中`:`reconnecting`),Et=((e={},t={})=>(t.locale??s())===`zh-TW`?`正體中文`:`English`),Dt=((e={},t={})=>(t.locale??s())===`zh-TW`?`位置`:`Location`),Ot=e=>`${e?.name} is commanding`,kt=e=>`${e?.name} 指揮中`,At=((e,t={})=>(t.locale??s())===`zh-TW`?kt(e):Ot(e)),jt=e=>`${e?.name} finished`,Mt=e=>`${e?.name} 已完成`,Nt=((e,t={})=>(t.locale??s())===`zh-TW`?Mt(e):jt(e)),Pt=e=>`${e?.name} hit an error`,Ft=e=>`${e?.name} 發生錯誤`,It=((e,t={})=>(t.locale??s())===`zh-TW`?Ft(e):Pt(e)),Lt=e=>`${e?.name} went idle`,Rt=e=>`${e?.name} 轉為閒置`,zt=((e,t={})=>(t.locale??s())===`zh-TW`?Rt(e):Lt(e)),Bt=e=>`${e?.name} joined`,Vt=e=>`${e?.name} 加入`,Ht=((e,t={})=>(t.locale??s())===`zh-TW`?Vt(e):Bt(e)),Ut=e=>`${e?.name} left`,Wt=e=>`${e?.name} 離開`,Gt=((e,t={})=>(t.locale??s())===`zh-TW`?Wt(e):Ut(e)),Kt=e=>`${e?.name} lost its status`,qt=e=>`${e?.name} 失去狀態`,Jt=((e,t={})=>(t.locale??s())===`zh-TW`?qt(e):Kt(e)),Yt=e=>`${e?.name} is waiting on a question`,Xt=e=>`${e?.name} 正在等待回答`,Zt=((e,t={})=>(t.locale??s())===`zh-TW`?Xt(e):Yt(e)),Qt=e=>`${e?.name} started working`,$t=e=>`${e?.name} 開始工作`,en=((e,t={})=>(t.locale??s())===`zh-TW`?$t(e):Qt(e)),tn=((e={},t={})=>(t.locale??s())===`zh-TW`?`指揮中`:`commanding`),nn=((e={},t={})=>(t.locale??s())===`zh-TW`?`已完成`:`finished`),rn=((e={},t={})=>(t.locale??s())===`zh-TW`?`錯誤`:`error`),an=((e={},t={})=>(t.locale??s())===`zh-TW`?`閒置`:`idle`),on=((e={},t={})=>(t.locale??s())===`zh-TW`?`無狀態`:`no status`),sn=((e={},t={})=>(t.locale??s())===`zh-TW`?`等待回答`:`waiting on a question`),cn=((e={},t={})=>(t.locale??s())===`zh-TW`?`工作中`:`working`),ln=((e={},t={})=>(t.locale??s())===`zh-TW`?`地圖總覽`:`Overview of the map`),un=e=>`Monitor failed: ${e?.what}`,dn=e=>`Monitor 出錯:${e?.what}`,fn=((e,t={})=>(t.locale??s())===`zh-TW`?dn(e):un(e)),pn=e=>`Monitor went quiet and stopped: ${e?.what}`,mn=e=>`Monitor 太久沒輸出,已停止:${e?.what}`,hn=((e,t={})=>(t.locale??s())===`zh-TW`?mn(e):pn(e)),gn=((e={},t={})=>(t.locale??s())===`zh-TW`?`從未`:`never`),_n=((e={},t={})=>(t.locale??s())===`zh-TW`?`+新基地`:`+ New base`),vn=((e={},t={})=>(t.locale??s())===`zh-TW`?`沒有執行中的智慧體`:`no agent running`),yn=((e={},t={})=>(t.locale??s())===`zh-TW`?`無警示`:`no alerts`),v=((e={},t={})=>(t.locale??s())===`zh-TW`?`伺服器沒有回應。`:`The server did not answer.`),bn=((e={},t={})=>(t.locale??s())===`zh-TW`?`尚無塔台`:`no tower yet`),xn=((e={},t={})=>(t.locale??s())===`zh-TW`?`監看中`:`Watching a monitor`),Sn=((e={},t={})=>(t.locale??s())===`zh-TW`?`思考中`:`thinking`),Cn=e=>`Finished ${e?.note}`,wn=e=>`完成了 ${e?.note}`,Tn=((e,t={})=>(t.locale??s())===`zh-TW`?wn(e):Cn(e)),En=e=>`Failed ${e?.note}`,Dn=e=>`出錯了 ${e?.note}`,On=((e,t={})=>(t.locale??s())===`zh-TW`?Dn(e):En(e)),kn=e=>`Waiting on you ${e?.note}`,An=e=>`等你回答 ${e?.note}`,jn=((e,t={})=>(t.locale??s())===`zh-TW`?An(e):kn(e)),Mn=((e={},t={})=>(t.locale??s())===`zh-TW`?`+主智慧體`:`+ Main`),Nn=((e={},t={})=>(t.locale??s())===`zh-TW`?`+成員`:`+ Member`),Pn=((e={},t={})=>(t.locale??s())===`zh-TW`?`前哨`:`Outposts`),Fn=((e={},t={})=>(t.locale??s())===`zh-TW`?`手機`:`Phone`),In=((e={},t={})=>(t.locale??s())===`zh-TW`?`透過 Tailscale 配對手機`:`Pair a phone over Tailscale`),Ln=((e={},t={})=>(t.locale??s())===`zh-TW`?`接回`:`Pop`),Rn=e=>`Pop ${e?.name}`,zn=e=>`接回 ${e?.name}`,Bn=((e,t={})=>(t.locale??s())===`zh-TW`?zn(e):Rn(e)),Vn=((e={},t={})=>(t.locale??s())===`zh-TW`?`伺服器送來的快照,頁面無法讀取`:`the server sent a snapshot the page cannot read`),Hn=((e={},t={})=>(t.locale??s())===`zh-TW`?`伺服器回報了頁面無法讀取的問題`:`the server reported a problem the page cannot read`),y=((e={},t={})=>(t.locale??s())===`zh-TW`?`關掉`:`Quit`),Un=((e={},t={})=>(t.locale??s())===`zh-TW`?`關掉塔台`:`Quit tower`),Wn=e=>`Refused (${e?.status}).`,Gn=e=>`已拒絕(${e?.status})。`,b=((e,t={})=>(t.locale??s())===`zh-TW`?Gn(e):Wn(e)),Kn=((e={},t={})=>(t.locale??s())===`zh-TW`?`提醒`:`Remind`),qn=((e={},t={})=>(t.locale??s())===`zh-TW`?`點一下允許瀏覽器通知`:`Press to allow browser notifications`),Jn=((e={},t={})=>(t.locale??s())===`zh-TW`?`瀏覽器已封鎖通知,要到網站設定裡允許`:`The browser blocks notifications; allow them in the site settings`),Yn=((e={},t={})=>(t.locale??s())===`zh-TW`?`提醒已關`:`Reminders off`),Xn=((e={},t={})=>(t.locale??s())===`zh-TW`?`提醒已開:分頁不在前景時,單位等你回答、完成或出錯會跳系統通知`:`Reminders on: while the page is in the background, a unit waiting on you, finishing, or failing raises a system notification`),Zn=((e={},t={})=>(t.locale??s())===`zh-TW`?`這個瀏覽器不支援通知`:`This browser has no notifications`),Qn=((e={},t={})=>(t.locale??s())===`zh-TW`?`主智慧體`:`main`),$n=((e={},t={})=>(t.locale??s())===`zh-TW`?`成員`:`member`),er=((e={},t={})=>(t.locale??s())===`zh-TW`?`前哨`:`outpost`),tr=((e={},t={})=>(t.locale??s())===`zh-TW`?`未編入`:`unaligned`),nr=((e={},t={})=>(t.locale??s(),`session`)),rr=((e={},t={})=>(t.locale??s())===`zh-TW`?`子智慧體`:`subagent`),ir=((e={},t={})=>(t.locale??s())===`zh-TW`?`塔台`:`tower`),ar=((e={},t={})=>(t.locale??s())===`zh-TW`?`設定`:`Settings`),or=((e={},t={})=>(t.locale??s())===`zh-TW`?`音效`:`Sound`),sr=((e={},t={})=>(t.locale??s())===`zh-TW`?`音效已關`:`Sounds off`),cr=((e={},t={})=>(t.locale??s())===`zh-TW`?`音效已開`:`Sounds on`),lr=((e={},t={})=>(t.locale??s())===`zh-TW`?`音效:開關、音量與試聽`:`Sounds: on or off, volume, and a try`),ur=((e={},t={})=>(t.locale??s())===`zh-TW`?`▶ 試聽`:`▶ Try`),dr=((e={},t={})=>(t.locale??s())===`zh-TW`?`音量`:`Volume`),fr=((e={},t={})=>(t.locale??s())===`zh-TW`?`收起`:`Stash`),pr=e=>`Stash base ${e?.name}`,mr=e=>`收起基地 ${e?.name}`,hr=((e,t={})=>(t.locale??s())===`zh-TW`?mr(e):pr(e)),gr=e=>`Stash base ${e?.name}? Its tower, mains, and members quit and come back with Pop. Nothing is stashed while anything running would be lost.`,_r=e=>`要收起基地 ${e?.name} 嗎?塔台、主智慧體和成員會結束,之後可以用「接回」叫回來。有會遺失的東西時不會收。`,vr=((e,t={})=>(t.locale??s())===`zh-TW`?_r(e):gr(e)),yr=e=>`Stashed (${e?.count})`,br=e=>`已收起(${e?.count})`,xr=((e,t={})=>(t.locale??s())===`zh-TW`?br(e):yr(e)),Sr=((e={},t={})=>(t.locale??s())===`zh-TW`?`智慧體`:`Agents`),Cr=((e={},t={})=>(t.locale??s())===`zh-TW`?`基地`:`Bases`),wr=((e={},t={})=>(t.locale??s())===`zh-TW`?`指揮中`:`Commanding`),Tr=((e={},t={})=>(t.locale??s())===`zh-TW`?`等待中`:`Waiting`),Er=((e={},t={})=>(t.locale??s())===`zh-TW`?`工作中`:`Working`),Dr=((e={},t={})=>(t.locale??s())===`zh-TW`?`狀態`:`States`),Or=e=>`tab ${e?.label}`,kr=e=>`分頁 ${e?.label}`,Ar=((e,t={})=>(t.locale??s())===`zh-TW`?kr(e):Or(e)),jr=((e={},t={})=>(t.locale??s())===`zh-TW`?`即時網況 · 通訊`:`live net · comms`),Mr=((e={},t={})=>(t.locale??s())===`zh-TW`?`網路活動`:`Net activity`),Nr=((e={},t={})=>(t.locale??s())===`zh-TW`?`伺服器啟動後還沒有動靜`:`Nothing has happened since the server started`),Pr=((e={},t={})=>(t.locale??s())===`zh-TW`?`現在`:`now`),Fr=e=>`${e?.count} events in 30 min`,Ir=e=>`近 30 分鐘 ${e?.count} 筆`,Lr=((e,t={})=>(t.locale??s())===`zh-TW`?Ir(e):Fr(e)),Rr=((e={},t={})=>(t.locale??s())===`zh-TW`?`網的總計`:`Net totals`),zr=e=>`using ${e?.tool}`,Br=e=>`使用 ${e?.tool}`,Vr=((e,t={})=>(t.locale??s())===`zh-TW`?Br(e):zr(e)),Hr=`sb-locale`;function Ur(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 p(e)??(t?p(t):void 0)??p(e.split(`-`)[0])}function Wr(e,t){return p(e)??t.map(Ur).find(Boolean)??`en`}var Gr={brand_label:Re,tagline:jr,totals_label:Rr,stat_bases:Cr,stat_agents:Sr,stat_working:Er,stat_waiting:Tr,stat_commanding:wr,mark_commanding:tn,alerts:we,no_alerts:yn,pair_button:Fn,pair_title:In,link_connecting:St,location:Dt,all_bases:Te,documents:yt,timeline:Mr,states:Dr,mark_working:cn,mark_waiting:sn,mark_idle:an,mark_done:nn,mark_error:rn,credit:dt,language:xt,settings:ar,new_base:_n};Object.keys(Gr);function Kr(){let e=null;try{e=localStorage.getItem(Hr)}catch{}let n=Wr(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,Gr[e.dataset[t]]?.()??e.dataset[t]);let i=document.getElementById(`lang`);i.replaceChildren(...t.map(e=>new Option(Et({},{locale:e}),e,!1,e===n))),i.onchange=()=>{try{localStorage.setItem(Hr,i.value),location.reload()}catch{i.value=n}}}var qr=e=>e.unit??e.key,x=e=>e.mark===`waiting`||e.pending?0:1;function Jr(e,t){let n=new Map;for(let r of e.bases)for(let e of[...r.tower?[{...r.tower,role:`tower`},...r.tower.subs]:[],...[...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,closed:!e.control||!!e.ended});for(let i of e.monitors??[])(i.status===`error`||i.status===`stale`)&&(a=>n.set(a,{key:a,unit:e.key,ws:r.id,name:e.name,role:e.role,mark:`error`,note:`monitor:${i.status}:${i.what}`,at:t}))(`${e.key}\u001fmonitor:${i.id}:${i.at}`)}return n}function Yr(e,t){return[...t.values()].filter(t=>{let n=e?.get(t.key);return x(t)===0?!n||x(n)!==0||n.mark!==t.mark:e!==void 0&&n?.mark!==t.mark&&(t.mark===`error`||t.mark===`done`)})}var Xr=`input, textarea, select, [role=textbox], [role=combobox], [role=listbox], .term-scroll`,Zr=`button, a, summary, [role=button], [role=link]`,Qr=`.ask-opt, [role=radio], [role=checkbox]`,$r=`dialog.sheet[open], dialog.lightbox[open], [popover]:popover-open`;function ei(e,t,n=!1){if(t||e.defaultPrevented||e.isComposing||e.ctrlKey||e.altKey||e.metaKey)return;let r=e.target;if(!(r?.isContentEditable||r?.closest?.(Xr))){if(e.key===`f`||e.key===`F`)return`zoom`;if(e.key===` `&&!r?.closest?.(Qr)&&(n||!r?.closest?.(Zr)))return`next`}}function ti(e,t=()=>document.querySelector($r)!==null,n=window){let r,i=!1,a=null;n.addEventListener(`pointerdown`,()=>i=!0,!0),n.addEventListener(`focusin`,e=>a=i?e.target:null,!0),n.addEventListener(`keydown`,n=>{let o=n.target===a;i=!1;let s=ei(n,t(),o);if(s){if(n.repeat)return r===s?n.preventDefault():void 0;e(s)&&(r=s,n.preventDefault())}}),n.addEventListener(`keyup`,e=>{r===`next`&&e.key===` `&&e.preventDefault(),r=void 0})}var ni=3e4,ri=[`pointermove`,`pointerdown`,`keydown`,`wheel`,`touchstart`];function ii(e=document.documentElement){if(matchMedia(`(prefers-reduced-motion: reduce)`).matches)return;let t=Date.now(),n,r=()=>{let i=t+ni-Date.now();i>0?n=setTimeout(r,i):(n=void 0,e.toggleAttribute(`data-calm`,!0))},i=()=>{t=Date.now(),n===void 0&&(e.toggleAttribute(`data-calm`,!1),n=setTimeout(r,ni))};for(let e of ri)addEventListener(e,i,{capture:!0,passive:!0});document.addEventListener(`visibilitychange`,()=>document.hidden||i()),i()}var ai=(...e)=>e.filter(e=>e!==!1&&e!=null),oi=(e,t)=>(e.classList.add(t),e.classList.toggle(`flip`));function si(e,t,...n){let r=document.createElement(e);for(let[e,n]of Object.entries(t??{}))r.setAttribute(e,n);return r.append(...ai(...n)),r}var ci=140;function li(e,t){let n=document.createElement(`nav`),r=document.createElement(`div`),i=document.createElement(`i`);[n.className,r.className,i.className,n.hidden]=[`minimap`,`mm-in`,`mm-view`,!0],n.setAttribute(`aria-label`,ln()),n.append(r,i),document.body.append(n);let a=1,o=0,s=()=>{o=0;let t=e.getBoundingClientRect();i.style.transform=`translateY(${Math.round(Math.max(0,-t.top)*a)}px)`,i.style.height=`${Math.round(Math.min(innerHeight-Math.max(0,t.top),t.bottom)*a)}px`,n.classList.toggle(`away`,t.bottom<innerHeight)},c=()=>{let i=e.getBoundingClientRect();n.hidden=e.hidden||i.height<innerHeight*1.05||!matchMedia(`(min-width: 900px) and (hover: hover)`).matches,!n.hidden&&(a=Math.min(ci/i.width,innerHeight*.4/i.height),Object.assign(n.style,{width:`${Math.round(i.width*a)}px`,height:`${Math.round(i.height*a)}px`}),r.replaceChildren(...[...t.querySelectorAll(`:scope > .base:not(.leaving)`)].map(e=>{let t=e.getBoundingClientRect(),n=document.createElement(`i`);return n.dataset.mark=e.dataset.mark??`idle`,n.style.cssText=`left:${(t.left-i.left)*a}px;top:${(t.top-i.top)*a}px;width:${t.width*a}px;height:${t.height*a}px`,n})),s())};return addEventListener(`scroll`,()=>o||=requestAnimationFrame(s),{passive:!0}),addEventListener(`resize`,c),n.addEventListener(`click`,t=>{let n=e.getBoundingClientRect(),i=(t.clientY-r.getBoundingClientRect().top)/a;scrollTo({top:n.top+scrollY+i-innerHeight/2,behavior:matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`})}),c}function ui({x1:e,y1:t,x2:n,y2:r,mid:i},a=64){let o=Array.from({length:201},(a,o)=>{let s=o/200,c=1-s;return[c**3*e+3*c*c*s*i+3*c*s*s*i+s**3*n,c**3*t+3*c*c*s*t+3*c*s*s*r+s**3*r]}),s=o.reduce((e,t,n)=>(e.push(n?e[n-1]+Math.hypot(t[0]-o[n-1][0],t[1]-o[n-1][1]):0),e),[]);return Array.from({length:a+1},(e,t)=>{let n=t/a*s.at(-1),r=Math.max(1,s.findIndex(e=>e>=n)),[i,c]=[o[r-1],o[r]],l=s[r]>s[r-1]?(n-s[r-1])/(s[r]-s[r-1]):0;return[i[0]+(c[0]-i[0])*l,i[1]+(c[1]-i[1])*l]})}function di(e,t){if(t||!e.length)return[];let n=document.createElement(`style`);return n.textContent=e.map((e,t)=>`@keyframes pk${t}{${ui(e).map(([e,t],n,r)=>`${(n/(r.length-1)*100).toFixed(2)}%{transform:translate(${e.toFixed(1)}px,${t.toFixed(1)}px)}`).join(``)}}`).join(``),[n,...e.map((e,t)=>(e=>(e.className=`packet`,e.style.animationName=`pk${t}`,e))(document.createElement(`i`)))]}var fi=(function(){let e=typeof document<`u`&&document.createElement(`link`).relList;return e&&e.supports&&e.supports(`modulepreload`)?`modulepreload`:`preload`})(),pi=function(e,t){return new URL(e,t).href},mi={},hi=function(e){return e.pathname.endsWith(`.css`)},gi=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},S=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=pi(t,n);let r=s(t),i=hi(r);return gi(mi,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`:fi,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)})};function C(e,t,n,r,i=!1){Object.assign(e.dataset,t),[e.hidden,e.textContent]=[i,n],r&&e.setAttribute(`aria-label`,r)}var _i=(e,t)=>t.role===`subagent`&&t.ended&&t.key?C(e,{close:`dismiss`,key:t.key,name:t.name,role:t.role},ft(),vt({name:t.name})):C(e,{close:`unit`,key:t.key??``,name:t.name,role:t.role},y(),it({name:t.name}),!(t.control&&t.key)||t.role===`subagent`),vi=(e,t)=>C(e,{key:t?.key??``,name:t?.name??``,role:`tower`},Un(),void 0,!t?.control),yi=(e,t)=>C(e,{ws:t.id,name:t.label},y(),Ue({name:t.label})),bi=(e,t)=>C(e,{ws:t.id,name:t.label},fr(),hr({name:t.label})),xi=(e,t,n)=>C(e,{ws:t.id,name:n.label,tab:n.id},y(),Ye({name:n.label})),w=(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(ze(),`later`,!1),o(t,`sheet-yes`,!0)]:[o(Be(),`later`,!1)]),r.append(i,a),r.addEventListener(`close`,()=>(r.remove(),n(!1))),document.body.append(r),r.showModal()}),Si=e=>e.bases.flatMap(e=>[...e.tower?[e.tower]:[],...e.tabs.flatMap(e=>e.units),...e.outside]).flatMap(e=>e.subs).filter(e=>e.ended).map(e=>e.key);function Ci(e,t){let n=Si(t).length;e.hidden=!n,n&&(e.textContent=ht({count:n}))}function wi(e,t,n){let r=n.stashed??[],i=JSON.stringify(r);e.hidden=!r.length;let a=t.closest(`[popover]`);!r.length&&a?.matches(`:popover-open`)&&a.hidePopover(),r.length&&(e.textContent=xr({count:r.length})),t.dataset.key!==i&&(t.dataset.key=i,t.replaceChildren(...r.map(e=>{let t=document.createElement(`li`),n=document.createElement(`span`),r=document.createElement(`button`);return n.textContent=e.name===e.label?e.label:`${e.name} (${e.label})`,[r.type,r.className]=[`button`,`pair-btn`],C(r,{close:`pop`,name:e.name},Ln(),Bn({name:e.name})),t.append(n,r),t})))}function Ti(e,{route:t,net:n,go:r}){let i=t();if(i.view===`map`)return;if(e.close===`base`||e.close===`stash`)return void(i.ws===e.ws&&r({view:`map`}));let a=e=>e.flatMap(e=>[e.key,...a(e.subs)]),o=e.close===`tab`&&i.ws===e.ws?n()?.bases.find(t=>t.id===e.ws)?.tabs.find(t=>t.id===e.tab):void 0;i.view===`session`&&(e.close===`unit`?i.key===e.key:o&&a(o.units).includes(i.key))&&r({view:`workspace`,ws:i.ws})}function Ei(e){document.addEventListener(`click`,t=>{let n=t.target?.closest?.(`button[data-close]`),r=n?.dataset;if(n&&r){if(t.preventDefault(),r.close===`dismiss`||r.close===`dismiss-all`)return void S(async()=>{let{post:e}=await import(`./post-UHMNmNgA.js`).then(e=>e.n);return{post:e}},[],import.meta.url).then(({post:e})=>e(`dismiss`,r.close===`dismiss`?{key:r.key}:{all:!0})).then(e=>e.ok||w(e.body.reason??b({status:e.status})),()=>w(v()));if(r.close===`pop`)return void(n.toggleAttribute(`disabled`,!0),S(async()=>{let{post:e}=await import(`./post-UHMNmNgA.js`).then(e=>e.n);return{post:e}},[],import.meta.url).then(({post:e})=>e(`close/pop`,{name:r.name})).then(e=>e.ok||w(e.body.reason??b({status:e.status})),()=>w(v())).finally(()=>n.toggleAttribute(`disabled`,!1)));w((r.close===`stash`?vr:r.close===`base`?Ke:r.close===`tab`?Qe:r.role===`tower`?tt:st)({name:r.name??``}),r.close===`stash`?fr():y()).then(t=>{t&&(n.toggleAttribute(`disabled`,!0),S(async()=>{let{post:e}=await import(`./post-UHMNmNgA.js`).then(e=>e.n);return{post:e}},[],import.meta.url).then(({post:e})=>e(`close/${r.close===`base`?`all`:r.close}`,r.close===`unit`?{key:r.key}:{workspace:r.ws,...r.tab&&{tab:r.tab}})).then(t=>t.ok?Ti(r,e):w(t.body.reason??b({status:t.status})),()=>w(v())).finally(()=>n.toggleAttribute(`disabled`,!1)))})}})}var Di=e=>{try{return decodeURIComponent(e)}catch{return e}},T=e=>/^\.+$/.test(e)?e.replaceAll(`.`,`%2E`):encodeURIComponent(e);function E(e){let[t,n]=e.split(`#`)[0].split(`?`),[r,i,a,o]=t.replace(/^\/+|\/+$/g,``).split(`/`).map(Di);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 D=e=>e.view===`map`?``:e.view===`workspace`?`w/${T(e.ws)}`:`w/${T(e.ws)}/s/${T(e.key)}${e.at?`?at=${encodeURIComponent(e.at)}`:``}`,Oi=e=>e.view===`session`?{view:`workspace`,ws:e.ws}:{view:`map`},ki=e=>e.view===`session`?e.key:e.view===`workspace`?`w:${e.ws}`:null;function Ai(e,t=new URL(document.baseURI).pathname){let n=()=>E(location.pathname.slice(t.length)+location.search),r={route:n,href:e=>D(e)||`./`,go(n){let r=t+D(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(E(t.getAttribute(`data-route`))))}),r}var ji={main:`main`,member:`member`,subagent:`subagent`,outpost:`outpost`,outside:`outside`,tower:`tower`},Mi={commanding:tn,working:cn,waiting:sn,idle:an,done:nn,error:rn,unknown:on},Ni={main:Qn,member:$n,subagent:rr,tower:ir,outpost:er,outside:tr,session:nr},Pi={thinking:Sn,"watching a monitor":xn,idle:an,"waiting on a question":sn,finished:nn},Fi={claude:`Claude`,codex:`Codex`},Ii=e=>Object.hasOwn(Ni,e)?Ni[e]():e,Li=e=>e===`waiting`||e===`error`,O=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)},k=(e,t)=>{let n=document.getElementById(e);if(!(n instanceof t))throw Error(`#${e} is missing from the page`);return n},A=(e,t,n)=>{let r=e.querySelector(t);r.textContent!==n&&(r.textContent=n)},j=(e,t)=>{if(e.dataset.mark===t)return;let n=e.dataset.mark!==void 0;e.dataset.mark=t,n&&oi(e,`flash`)},Ri=e=>(t=>(e.slice(8,t)===`stale`?hn:fn)({what:e.slice(t+1)}))(e.indexOf(`:`,8)),M=(e,t)=>e?e.startsWith(`tool:`)?Vr({tool:e.slice(5)}):e.startsWith(`monitor:`)?Ri(e):Object.hasOwn(Pi,e)?Pi[e]():e:Mi[t](),zi=(e,t,n,r,i=M(n,r))=>{A(e,t,i),e.querySelector(t).toggleAttribute(`data-monitoring`,i===M(n,r)&&n===`watching a monitor`)},N=(e,t)=>{e.toggleAttribute(`hidden`,!t),t&&(e.setAttribute(`href`,D(t)||`./`),e.setAttribute(`data-route`,D(t)))},P=(e,t)=>{let n=t.getBoundingClientRect(),r=e.offsetWidth;e.style.top=`${n.bottom+8}px`,e.style.left=`${Math.max(8,Math.min(n.right-r,innerWidth-r-8))}px`},Bi=`<div class="plate"><i class="ring"></i><svg><use href="#i-main"/></svg><b class="badge"></b></div>`;function Vi(e,t,n,r){j(e,n);let i=e.querySelector(`use`),a=`#i-${ji[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 F(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 Hi=(e,t=Math.max(0,Date.now()-e)/1e3)=>t<60?Ce({n:String(Math.floor(t))}):t<3600?be({n:String(Math.floor(t/60))}):t<86400?_e({n:String(Math.floor(t/3600))}):me({n:String(Math.floor(t/86400))}),Ui=(e,t)=>(t===void 0?delete e.dataset.since:e.dataset.since=String(t),e.textContent=t===void 0?``:Hi(t));function Wi(e,t=[]){let n=e.querySelector(`:scope > .ticks`),r=t.map(e=>`${e.at}${e.mark}`).join();n.dataset.sig!==r&&(n.dataset.sig=r,e.classList.toggle(`ticked`,t.length>0),n.replaceChildren(...t.map((e,n)=>{let r=document.createElement(`i`);return r.dataset.mark=e.mark,r.style.setProperty(`--o`,((n+1)/t.length).toFixed(2)),r})))}var I=()=>O(`<div class="unit"><div class="card"><a class="hit"></a>${Bi}<div class="meta"><span class="name"></span><span class="line"><em class="role"></em><em class="agent"></em><span class="note"></span><span class="age"></span></span><span class="todo" hidden><b></b><span></span></span></div><button type="button" class="quit-btn" data-close="unit" hidden></button><span class="ticks" aria-hidden="true"></span></div><div class="subs"></div></div>`);function L(e,t){let n=e.closest(`.base`)?.dataset.key,r=e.querySelector(`.hit`);N(r,t.key&&n?{view:`session`,ws:n,key:t.key}:void 0),r.setAttribute(`aria-label`,`${t.name}: ${M(t.note,t.mark)}`),r.toggleAttribute(`data-alert`,Li(t.mark)),j(e,t.mark),Vi(e.querySelector(`.plate`),t.role,t.mark,t.docs),A(e,`.name`,t.name),A(e,`.role`,Ii(t.role)),A(e,`.agent`,t.agent?Fi[t.agent]:``),zi(e,`.note`,t.note,t.mark),Ui(e.querySelector(`:scope > .card .age`),t.since);let i=e.querySelector(`:scope > .card .todo`);i.hidden=!t.todo,t.todo&&(A(i,`b`,`${t.todo.done<t.todo.total?`◐`:`✓`} ${t.todo.done}/${t.todo.total}`),A(i,`span`,t.todo.now??``)),Wi(e.querySelector(`:scope > .card`),t.ticks),_i(e.querySelector(`:scope > .card > .quit-btn`),t),F(e.querySelector(`.subs`),t.subs??[],I,L)}function Gi(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`?Mn():Nn())&&(e.textContent=r===`main`?Mn():Nn())}var Ki=()=>O(`<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>${bt()}</span><h2><a class="enter-base"></a></h2><p><span class="tstate"></span><span class="age"></span></p><button type="button" class="quit-btn tower-quit" data-close="unit" hidden></button></div><button type="button" class="quit-btn" data-close="base"></button></header><div class="subs tower-subs"></div><div class="spawn-btns"><button type="button" class="pair-btn"></button><button type="button" class="pair-btn" data-close="stash"></button></div><div class="tabs"></div><div class="outposts" data-label="${Pn()}"></div></section>`);function qi(e,t){j(e,t.mark),e.classList.toggle(`head`,t.head);let n=e.querySelector(`.tower`);n.classList.toggle(`ghost`,!t.tower),j(n,t.tower?.mark??`unknown`),A(e,`h2 a`,t.label),N(e.querySelector(`h2 a`),{view:`workspace`,ws:t.id}),A(e,`.title .tstate`,t.tower?ut({state:Mi[t.tower.mark]()}):bn()),Ui(e.querySelector(`.title .age`),t.tower?.since),Gi(e.querySelector(`.spawn-btns button`),t),yi(e.querySelector(`header > .quit-btn`),t),bi(e.querySelector(`.spawn-btns [data-close=stash]`),t),vi(e.querySelector(`.tower-quit`),t.tower),F(e.querySelector(`.tower-subs`),t.tower?.subs??[],I,L),F(e.querySelector(`.tabs`),t.tabs,()=>O(`<div class="tab"><h3><span></span><button type="button" class="tab-add"></button><button type="button" class="quit-btn" data-close="tab"></button></h3><div class="units"></div></div>`),(e,n)=>{A(e,`h3 span`,Ar({label:n.label})),xi(e.querySelector(`.quit-btn`),t,n),Gi(e.querySelector(`.tab-add`),t,n.id),F(e.querySelector(`.units`),n.units,I,L)}),F(e.querySelector(`.outposts`),t.outposts.map(e=>({id:e.id,name:e.label,role:`outpost`,mark:e.mark,note:e.mark===`unknown`?vn():void 0,since:e.since,ticks:e.ticks})),I,L)}function Ji(e,t,n,r){let i=[...e.querySelectorAll(`.base:not(.leaving) .tower`)],a=e.querySelector(`.base.head:not(.leaving) .tower`),o=e.getBoundingClientRect(),s=e=>{let t=e.getBoundingClientRect();return[Math.round(t.x+t.width/2-o.x),Math.round(t.y+t.height/2-o.y)]},c=a?i.filter(e=>e!==a):[],l=c.map(e=>{let[[t,n],[r,i]]=[s(a),s(e)];return{x1:t,y1:n,x2:r,y2:i,mid:Math.round((t+r)/2)}}),u=l.map(({x1:e,y1:t,x2:n,y2:r,mid:i})=>`M${e} ${t}C${i} ${t} ${i} ${r} ${n} ${r}`),d=u.join(`|`);t.dataset.sig!==d&&(t.dataset.sig=d,t.replaceChildren(...u.map(e=>(t=>(t.setAttribute(`class`,`wire`),t.setAttribute(`d`,e),t))(document.createElementNS(`http://www.w3.org/2000/svg`,`path`)))),n.replaceChildren(...di(l,r))),n.querySelectorAll(`.packet`).forEach((e,t)=>e.toggleAttribute(`data-live`,[`working`,`commanding`].includes(a.dataset.mark??``)||[`working`,`commanding`].includes(c[t].dataset.mark??``)))}var Yi=2,Xi=20;function Zi(){let[e,t,n,r]=[k(`map`,HTMLElement),k(`bases`,HTMLElement),k(`links`,SVGSVGElement),k(`packets`,HTMLElement)],i=matchMedia(`(prefers-reduced-motion: reduce)`).matches,a=new Set,o=li(e,t),s=()=>(o(),!e.hidden&&Ji(e,n,r,i)),c=0,l=()=>c||=requestAnimationFrame(()=>(c=0,s())),u=new ResizeObserver(e=>(e.forEach(({target:e,borderBoxSize:t})=>e.style.gridRowEnd=`span ${Math.ceil((t[0].blockSize+Xi)/Yi)}`),l()));return setInterval(()=>document.querySelectorAll(`.age[data-since]`).forEach(e=>Ui(e,Number(e.dataset.since))),15e3),addEventListener(`resize`,l),new ResizeObserver(([e])=>document.documentElement.style.setProperty(`--hud`,`${Math.ceil(e.borderBoxSize[0].blockSize)}px`)).observe(document.querySelector(`.hud`)),ii(),{layout:s,stats(e){let t=e.bases.flatMap(e=>[...e.tower?.subs??[],...e.tabs.flatMap(e=>e.units.flatMap(e=>[e,...e.subs]))]),n=e=>String(t.filter(t=>!e||t.mark===e).length);k(`s-commanding`,HTMLElement).parentElement.toggleAttribute(`data-on`,t.some(e=>e.mark===`commanding`));for(let[t,r]of[[`s-bases`,String(e.bases.length)],[`s-agents`,n()],[`s-working`,n(`working`)],[`s-commanding`,n(`commanding`)],[`s-waiting`,n(`waiting`)]])k(t,HTMLElement).textContent=r},show(e){F(t,e.bases,Ki,qi);for(let e of t.children)a.has(e)||(a.add(e),u.observe(e));for(let e of a)e.isConnected||(a.delete(e),u.unobserve(e));requestAnimationFrame(s)},pause(e){document.documentElement.classList.toggle(`paused`,e)}}}var Qi=new URL(`done-jqKY4qf5.mp3`,import.meta.url).href,$i=new URL(`error-DdTLgPEw.mp3`,import.meta.url).href,ea={waiting:new URL(`waiting-DOg8-8gu.mp3`,import.meta.url).href,error:$i,done:Qi},ta=e=>e.mark===`waiting`||e.pending?`waiting`:e.mark===`error`?`error`:e.mark===`done`?`done`:void 0,na=(e,t)=>{try{return localStorage.getItem(e)??t}catch{return t}},ra=(e,t)=>{try{localStorage.setItem(e,t)}catch{}};function ia(e){let t=e=>document.getElementById(e),n=t(`remind`),r=t(`sound`),i=t(`sound-pop`),a=t(`sound-on`),o=t(`sound-vol`),s=t(`sound-vol-out`),c=typeof Notification<`u`,l=na(`sb.remind`,`1`)===`1`,u=na(`sb.sound`,`0`)===`1`,d=Math.min(100,Math.max(0,Number(na(`sb.volume`,`60`))||0)),f,p,m=new Map,h=()=>{let e=c?Notification.permission:`denied`;n.setAttribute(`aria-pressed`,String(l)),n.dataset.state=l?e===`granted`?`on`:e===`denied`?`blocked`:`ask`:`off`,n.title=c?l?e===`granted`?Xn():e===`denied`?Jn():qn():Yn():Zn(),r.dataset.state=u?`on`:`off`,r.setAttribute(`aria-label`,u?cr():sr()),a.checked=u,o.value=s.value=String(d),p&&(p.gain.value=(d/100)**2)};n.textContent=Kn(),r.textContent=or(),r.title=lr(),t(`sound-on-label`).textContent=or(),t(`sound-vol-label`).textContent=dr(),t(`sound-try`).textContent=ur(),n.onclick=async()=>{l&&c&&Notification.permission==="default"?await Notification.requestPermission().catch(()=>{}):ra(`sb.remind`,(l=!l)?`1`:`0`),h()},i.addEventListener(`toggle`,e=>e.newState===`open`&&P(i,r)),a.onchange=()=>{ra(`sb.sound`,(u=a.checked)?`1`:`0`),h(),u&&g(`done`)},o.oninput=()=>(ra(`sb.volume`,String(d=Number(o.value))),h()),o.onchange=()=>g(`done`),t(`sound-try`).onclick=()=>g(`done`);function g(e){f??=new AudioContext,p||((p=f.createGain()).connect(f.destination),h());let t=f,n=p;m.has(e)||m.set(e,fetch(ea[e]).then(e=>e.arrayBuffer()).then(e=>t.decodeAudioData(e))),Promise.all([t.resume(),m.get(e)]).then(([,e])=>{let r=t.createBufferSource();r.buffer=e,r.connect(n),r.start()}).catch(()=>m.delete(e))}return h(),{signal(t){let n=t.flatMap(e=>(t=>t?[{a:e,k:t}]:[])(ta(e)));if(n.length&&(u&&g([`waiting`,`error`,`done`].find(e=>n.some(t=>t.k===e))),l&&c&&Notification.permission===`granted`&&(document.hidden||!document.hasFocus())))for(let{a:t,k:r}of n){let n=new Notification(t.name,{body:{waiting:jn,error:On,done:Tn}[r]({note:t.note??``}).trim(),tag:t.key,icon:document.querySelector(`link[rel="icon"]`)?.href,silent:r!==`waiting`});n.onclick=()=>(window.focus(),n.close(),e(t))}}}}var aa=45e3,oa=1e3,sa=3e4,ca=(e,t)=>Math.min(sa,oa*2**(e-1))*(.8+.4*t);function la(e){try{return JSON.parse(e)}catch{return}}function ua(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(),aa),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,ca(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=la(r);i&&e.onNet(i),o({problem:i?void 0:Vn()}),l()}),n.listen(`ping`,()=>t===n&&l()),n.listen(`problem`,e=>{t===n&&(o({problem:la(e)??Hn()}),l())}),r=e.setTimeout(()=>u(),aa)};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 da={commanding:At,working:en,waiting:Zt,idle:zt,done:Nt,error:It,unknown:Jt},fa=e=>(e.kind===`joined`?Ht:e.kind===`left`?Gt:da[e.mark])({name:e.name}),pa=18e5,ma={waiting:0,error:0,working:1,commanding:1},ha=e=>new Date(e).toLocaleTimeString([],{hour12:!1});function ga(e){let[t,n,r,i,a]=[`.tl-lanes`,`.tl-axis`,`.tl-at`,`.tl-last`,`.tl-span`].map(t=>e.querySelector(t)),o=[],s=``;matchMedia(`(max-width: 640px)`).matches&&(e.open=!1);let c=()=>{let e=Date.now()-pa,s=o.filter(t=>t.at>=e),c=s.at(-1);t.replaceChildren(...s.map(t=>{let n=document.createElement(`a`),r=(t.at-e)/pa*100;return n.className=`tl-mark ${t.kind}${r>70?` end`:``}`,n.dataset.mark=t.kind===`left`?`unknown`:t.mark,n.style.cssText=`left:${r.toFixed(2)}%;top:${(ma[t.mark]??2)*14+4}px`,n.setAttribute(`aria-label`,`${ha(t.at)} ${fa(t)}`),N(n,t.key&&t.kind!==`left`?{view:`session`,ws:t.ws,key:t.key}:{view:`workspace`,ws:t.ws}),n})),n.replaceChildren(...[0,10,20].map(t=>Object.assign(document.createElement(`span`),{textContent:ha(e+t*6e4).slice(0,5)})),Object.assign(document.createElement(`span`),{textContent:Pr()})),r.textContent=c?ha(c.at):``,i.textContent=c?fa(c):Nr(),a.textContent=Lr({count:String(s.length)})};return setInterval(c,3e4),c(),{net(e){let t=e.events??[],n=t.map(e=>`${e.at}${e.kind}${e.key??e.name}${e.mark}`).join();n!==s&&(s=n,o=t,c())}}}Kr();var R=Zi(),_a=ga(document.getElementById(`timeline`)),z=e=>document.getElementById(e),va=e=>e?new Date(e).toLocaleTimeString([],{hour12:!1}):gn(),ya,B,V,ba={state:`connecting`,attempt:0},H={view:`map`},xa=!1,Sa,Ca=``,U,wa,W=e=>U?e(U):void wa?.then(e);function Ta(){wa??=S(async()=>{let{mountFocus:e}=await import(`./views-CDDyJu5N.js`);return{mountFocus:e}},[],import.meta.url).then(({mountFocus:e})=>(U=e({data:Ba,restart:()=>Z.restart(),openTile:q,embedTerminal:(e,t,n)=>new Promise(r=>K(i=>r(i.terminal.embed(e,t,n)))),online:()=>ba.state===`live`}),U.show(H,H),B&&U.net(B),U))}var G,Ea,K=e=>{if(G)return e(G);Ea??=S(async()=>{let{mountPanels:e}=await import(`./layer-DJNycmSO.js`);return{mountPanels:e}},[],import.meta.url).then(({mountPanels:e})=>G=e({label:e=>B?.bases.find(t=>t.id===e)?.label??e,recent:async e=>(await(Y?Y.data(e).latest():za(e,`?limit=12`))).items,post:e=>Y&&((t,n)=>Y.data(e).post(t,n)),stream:()=>Ca,showTerminal:(e,t)=>(G?.stack.close(),U?.terminal(t),X.go({view:`session`,ws:e,key:t}))})),Ea.then(e)},q=(e,t)=>K(n=>n.tiles.open(e,t)),J=document.querySelector(`link[rel="icon"]`),Da=J&&decodeURIComponent(J.href.slice(J.href.indexOf(`,`)+1)),Oa=0;function ka(e){let t=e.bases.flatMap(e=>[...e.tower?[e.tower,...e.tower.subs]:[],...[...e.tabs.flatMap(e=>e.units),...e.outside].flatMap(e=>[e,...e.subs])]).filter(e=>e.mark===`waiting`||e.pending).length;if(!J||!Da||t===Oa)return;Oa=t;let n=`<circle cx='23' cy='9' r='9' fill='#e0af68' stroke='#1a1b26' 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='#16161e'>${t>9?`9+`:t}</text>`;J.href=`data:image/svg+xml,${encodeURIComponent(t?Da.replace(`</svg>`,`${n}</svg>`):Da)}`}var Aa;function ja(e){B=V=e,ka(e);let t=Jr(e,Date.now());if(Aa&&Ha.signal(Yr(Aa,t)),Aa=t,document.hidden)return;R.stats(e),Ci(z(`dismiss-all`),e),wi(z(`stashed`),z(`stashed-list`),e),Q?.net(e);let n=Yr(Sa,t);(n.length||G)&&K(e=>e.alerts(n,t)),Sa=t,_a.net(e),W(t=>t.net(e)),H.view===`map`&&(R.show(e),ya=e,V=void 0)}function Ma(e){let t=H,n=e.view===`workspace`&&t.view===`map`?document.querySelector(`#bases [data-key="${CSS.escape(e.ws)}"]`)?.getBoundingClientRect():void 0;H=e,Q?.route(e),e.view!==`map`&&Ta(),z(`map`).hidden=e.view!==`map`,z(`legend`).hidden=e.view===`session`,z(`stage`).dataset.view=e.view,W(r=>r.show(e,t,n)),e.view===`map`&&B&&B!==ya&&(ja(B),requestAnimationFrame(R.layout)),xa&&ki(e)!==ki(t)&&Z.restart()}function Na(e){ba=e;let t=e.state===`reconnecting`||e.state===`offline`;document.body.dataset.stale=z(`stage`).dataset.stale=String(t),z(`link`).dataset.state=e.state,z(`link-text`).textContent={connecting:St,live:Ct,reconnecting:Tt,offline:wt}[e.state](),U&&B&&U.net(B),G?.stack.redraw();let n=z(`banner`);n.hidden=!t&&!e.problem;let r=e.state===`offline`?Ae({tries:e.attempt-1}):e.state===`reconnecting`?e.attempt?Le({attempt:e.attempt}):Pe():Ne({problem:e.problem??``}),i=document.createElement(`b`);i.textContent=va(e.lastContact),n.replaceChildren(`${r} ${De()} `,i,Ee())}function Pa(e,t){try{let n=JSON.parse(t);W(t=>e===`history`?t.history(n):t.cards(n))}catch{}}var Fa=document.querySelector(`meta[name="sb-build"]`)?.content,Ia=e=>!!(Fa&&Fa!==JSON.parse(e).build);function La(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 Ra=e=>fetch(`api/${e}`,{cache:`no-store`}).then(e=>e.ok?e.json():Promise.reject(Error(String(e.status)))),za=(e,t=``)=>Ra(`history/${encodeURIComponent(e)}${t}`),Y=void 0,Ba=e=>({older:t=>za(e,`?before=${encodeURIComponent(t)}`),latest:()=>za(e),entry:t=>Ra(`entry/${encodeURIComponent(e)}/${encodeURIComponent(t)}`).catch(()=>void 0),pic:(t,n)=>`api/image/${encodeURIComponent(e)}/${encodeURIComponent(t)}/${n}`}),Va=()=>{let e=La(ki(H));return e.listen(`history`,e=>Pa(`history`,e)),e.listen(`cards`,e=>Pa(`cards`,e)),e.listen(`hello`,e=>Ia(e)?location.reload():(Ca=e,G?.terminal.hello())),e.listen(`mirror`,e=>G?.terminal.frame(e)),e};document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`a[data-alert]`),n=t&&E(t.getAttribute(`data-route`)??``);if(!n||n.view!==`session`||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;let r=Sa?.get(n.key);r&&(e.preventDefault(),K(e=>e.stack.show(r)))},!0);var X=Ai(e=>Ma(e)),Ha=ia(e=>X.go({view:`session`,ws:e.ws,key:qr(e)})),Z=ua({open:Va,now:Date.now,setTimeout:(e,t)=>window.setTimeout(e,t),clearTimeout:e=>window.clearTimeout(e),random:Math.random,hidden:()=>document.hidden,onNet:ja,onStatus:Na}),Ua=()=>Z.resume();document.addEventListener(`visibilitychange`,()=>{if(R.pause(document.hidden),document.hidden)return Z.hide();V&&ja(V),W(e=>e.wake()),Ua()}),addEventListener(`keydown`,e=>{e.key!==`Escape`||e.defaultPrevented||document.querySelector(`dialog.sheet[open], dialog.lightbox[open], [popover]:popover-open`)||(e.preventDefault(),!G?.stack.close()&&H.view!==`map`&&X.go(Oi(H)))}),ti(e=>G?.hotkey(e)??!1),z(`pair`).hidden=location.hostname!==`127.0.0.1`,z(`pair`).addEventListener(`click`,()=>void S(async()=>{let{pairTile:e}=await import(`./pair-Da3cDDtX.js`);return{pairTile:e}},[],import.meta.url).then(({pairTile:e})=>q(e(),!0)));var Q,$=matchMedia(`(pointer: coarse), (max-width: 640px)`),Wa=()=>void S(async()=>{let{mountDrawer:e}=await import(`./drawer-BEGT9C2n.js`);return{mountDrawer:e}},[],import.meta.url).then(({mountDrawer:e})=>(Q??=e(),B&&Q.net(B),Q.route(H)));$.matches?Wa():$.addEventListener(`change`,()=>$.matches&&!Q&&Wa(),{once:!0}),Ei({route:()=>H,net:()=>B,go:e=>X.go(e)}),z(`stashed-pop`).addEventListener(`toggle`,e=>e.newState===`open`&&P(z(`stashed-pop`),z(`stashed`))),z(`prefs-pop`).addEventListener(`toggle`,e=>e.newState===`open`&&P(z(`prefs-pop`),z(`prefs`))),document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`button[data-open]`);t&&S(async()=>{let{openingOf:e,spawnTile:t}=await import(`./spawn-Lrp0WChx.js`);return{openingOf:e,spawnTile:t}},[],import.meta.url).then(({openingOf:e,spawnTile:n})=>{let r=e(t,B?.bases??[]);r&&q(n(r,(e,t,n)=>(G?.tiles.close(n),X.go({view:`session`,ws:e,key:t}))),!0)})});for(let e of[`focus`,`pageshow`,`online`])window.addEventListener(e,()=>!document.hidden&&Ua());Na(ba),Ma(X.route()),Z.start(),xa=!0;export{bn as A,Te as B,x as C,Tr as D,Er as E,bt as F,yt as I,ut as L,yn as M,vn as N,b as O,gn as P,Be as R,$r as S,Ar as T,s as V,Li as _,N as a,ai as b,M as c,O as d,j as f,A as g,F as h,Bi as i,v as j,Pn as k,Vi as l,zi as m,ji as n,Gi as o,Ii as p,Mi as r,k as s,Fi as t,P as u,S as v,qr as w,oi as x,si as y,ze as z};
@@ -1,3 +1,3 @@
1
- import{t as e}from"./post-UHMNmNgA.js";import{n as t,t as n}from"./ask-CDY-ecWy.js";import{t as r}from"./registry-Bx4Ukv2M.js";import{C as i,M as a,O as o,R as s,V as c,a as l,c as u,d,f,g as p,h as m,i as h,l as g,m as _,p as v,s as y,u as b,w as x,x as S,y as C,z as w}from"./index-CFAsCDlQ.js";var T=e=>`Alerts: ${e?.tally} (Space opens the next)`,E=e=>`警示:${e?.tally}(空白鍵開下一則)`,D=((e,t={})=>(t.locale??c())===`zh-TW`?E(e):T(e)),O=e=>`Also queued: ${e?.tally}`,k=e=>`佇列中還有:${e?.tally}`,ee=((e,t={})=>(t.locale??c())===`zh-TW`?k(e):O(e)),te=((e={},t={})=>(t.locale??c())===`zh-TW`?`全部清除`:`Clear all`),A=((e={},t={})=>(t.locale??c())===`zh-TW`?`關閉文件`:`Close document`),j=e=>`Close ${e?.title}`,M=e=>`關閉 ${e?.title}`,ne=((e,t={})=>(t.locale??c())===`zh-TW`?M(e):j(e)),N=((e={},t={})=>(t.locale??c())===`zh-TW`?`連線中…`:`Connecting…`),P=((e={},t={})=>(t.locale??c())===`zh-TW`?`警示`:`alert`),re=((e={},t={})=>(t.locale??c())===`zh-TW`?`放大(F)`:`Enlarge (F)`),ie=((e={},t={})=>(t.locale??c())===`zh-TW`?`縮小(F)`:`Shrink (F)`),ae=((e={},t={})=>(t.locale??c())===`zh-TW`?`通知`:`Notices`),F=((e={},t={})=>(t.locale??c())===`zh-TW`?`通知:已完成或出錯的單位。點一列打開它的通訊並清掉,或全部清除`:`Notices: units that finished or failed. A row opens its comms and clears it, or clear them all`),I=((e={},t={})=>(t.locale??c())===`zh-TW`?`符合寬度`:`Fit width`),oe=((e={},t={})=>(t.locale??c())===`zh-TW`?`無法取得紀錄。`:`History unavailable.`),L=((e={},t={})=>(t.locale??c())===`zh-TW`?`退格鍵`:`Backspace`),R=((e={},t={})=>(t.locale??c())===`zh-TW`?`下`:`Down`),z=((e={},t={})=>(t.locale??c(),`End`)),B=((e={},t={})=>(t.locale??c(),`Enter`)),V=((e={},t={})=>(t.locale??c(),`Escape`)),se=((e={},t={})=>(t.locale??c(),`Home`)),ce=((e={},t={})=>(t.locale??c())===`zh-TW`?`左`:`Left`),H=((e={},t={})=>(t.locale??c())===`zh-TW`?`下一頁`:`Page down`),U=((e={},t={})=>(t.locale??c())===`zh-TW`?`上一頁`:`Page up`),W=((e={},t={})=>(t.locale??c())===`zh-TW`?`右`:`Right`),G=((e={},t={})=>(t.locale??c(),`Shift+Tab`)),le=((e={},t={})=>(t.locale??c())===`zh-TW`?`空白鍵`:`Space`),ue=((e={},t={})=>(t.locale??c(),`Tab`)),de=((e={},t={})=>(t.locale??c())===`zh-TW`?`上`:`Up`),fe=e=>`Keys for ${e?.name}`,pe=e=>`${e?.name} 的按鍵`,me=((e,t={})=>(t.locale??c())===`zh-TW`?pe(e):fe(e)),he=((e={},t={})=>(t.locale??c())===`zh-TW`?`最後一則通訊`:`Last transmission`),ge=((e={},t={})=>(t.locale??c())===`zh-TW`?`稍後`:`Later`),_e=((e={},t={})=>(t.locale??c())===`zh-TW`?`已離開網`:`left the net`),ve=e=>`The mirror ended: ${e?.why}`,ye=e=>`鏡像已結束:${e?.why}`,be=((e,t={})=>(t.locale??c())===`zh-TW`?ye(e):ve(e)),xe=((e={},t={})=>(t.locale??c())===`zh-TW`?`等待輸入密碼時隱藏;請在終端機中輸入。`:`Hidden while it waits for a secret; type it in the terminal.`),Se=e=>`Live · ${e?.cols}×${e?.rows}`,Ce=e=>`即時 · ${e?.cols}×${e?.rows}`,we=((e,t={})=>(t.locale??c())===`zh-TW`?Ce(e):Se(e)),Te=((e={},t={})=>(t.locale??c())===`zh-TW`?`還沒有訊息。`:`No messages yet.`),Ee=((e={},t={})=>(t.locale??c())===`zh-TW`?`開啟通訊`:`Open comms`),De=((e={},t={})=>(t.locale??c())===`zh-TW`?`此分頁隱藏時暫停。`:`Paused while this tab is hidden.`),Oe=e=>`${e?.why} Open the terminal again to retry.`,ke=e=>`${e?.why} 重新開啟終端機即可重試。`,Ae=((e,t={})=>(t.locale??c())===`zh-TW`?ke(e):Oe(e)),je=((e={},t={})=>(t.locale??c())===`zh-TW`?`送出 Enter`:`Send Enter`),Me=((e={},t={})=>(t.locale??c())===`zh-TW`?`送出 Escape`:`Send Escape`),Ne=e=>`Send ${e?.key}`,Pe=e=>`送出 ${e?.key}`,Fe=((e,t={})=>(t.locale??c())===`zh-TW`?Pe(e):Ne(e)),Ie=((e={},t={})=>(t.locale??c())===`zh-TW`?`錯誤`:`error`),Le=((e={},t={})=>(t.locale??c())===`zh-TW`?`已完成`:`finished`),Re=((e={},t={})=>(t.locale??c())===`zh-TW`?`已離開`:`gone`),ze=((e={},t={})=>(t.locale??c())===`zh-TW`?`提問`:`question`),Be=((e={},t={})=>(t.locale??c())===`zh-TW`?`更新`:`update`),Ve=e=>{let t=r(`en`,e?.count,{},!0);return t===`one`?`${e?.count} notice`:t===`other`?`${e?.count} notices`:`tally_finished`},He=e=>`${e?.count} 則通知`,Ue=((e,t={})=>(t.locale??c())===`zh-TW`?He(e):Ve(e)),We=e=>{let t=r(`en`,e?.count,{},!0);return t===`one`?`${e?.count} needs you`:t===`other`?`${e?.count} need you`:`tally_need`},Ge=e=>`${e?.count} 個需要你`,Ke=((e,t={})=>(t.locale??c())===`zh-TW`?Ge(e):We(e)),qe=e=>`Terminal of ${e?.name}, read only`,Je=e=>`${e?.name} 的終端機,唯讀`,Ye=((e,t={})=>(t.locale??c())===`zh-TW`?Je(e):qe(e)),Xe=e=>`Terminal · ${e?.name}`,Ze=e=>`終端機 · ${e?.name}`,Qe=((e,t={})=>(t.locale??c())===`zh-TW`?Ze(e):Xe(e)),$e=((e={},t={})=>(t.locale??c())===`zh-TW`?`◉ 鍵盤直送中 · 點外面結束`:`◉ Keyboard goes to the pane · click outside to stop`),K=((e={},t={})=>(t.locale??c())===`zh-TW`?`點這裡後,鍵盤直接送進終端機(Ctrl、Alt、⌘ 組合鍵除外)`:`Click here and the keyboard goes straight to the terminal (except Ctrl, Alt, and ⌘ combinations)`),et=((e={},t={})=>(t.locale??c())===`zh-TW`?`等待`:`waiting on`),tt=[[[`esc`,`esc`,V],[`tab`,`tab`,ue],[`up`,`↑`,de],[`enter`,`enter`,B]],[[`shift+tab`,`⇧tab`,G],[`left`,`←`,ce],[`down`,`↓`,R],[`right`,`→`,W]],[[`space`,`space`,le],[`backspace`,`⌫`,L],[`home`,`home`,se],[`end`,`end`,z],[`pageup`,`pgup`,U],[`pagedown`,`pgdn`,H]]],nt=`123456789`.split(``),rt={ArrowUp:`up`,ArrowDown:`down`,ArrowLeft:`left`,ArrowRight:`right`,Enter:`enter`,Escape:`esc`,Backspace:`backspace`,Home:`home`,End:`end`,PageUp:`pageup`,PageDown:`pagedown`},it=130,at=64,q=4e3,ot=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.platform),st=e=>e.split(`+`).map(e=>e.length===1?e.toUpperCase():e[0].toUpperCase()+e.slice(1)).join(`+`);function ct({name:e,state:n,post:r,stream:i,blip:a}){let s=[],c=C(`p`,{class:`pad-note`,role:`status`}),l=!1,u=([e,t,n])=>{let r=C(`button`,{type:`button`,class:`pad-key`,"data-key":e,"aria-label":n()},t);return r.onclick=t=>t.isTrusted&&(g.push({key:e}),y()),s.push(r),r},d=C(`details`,{class:`pad-digits`},C(`summary`,null,`1–9`),C(`div`,{class:`pad-row`},...nt.map(e=>u([e,e,()=>e])))),f=C(`div`,{class:`pad`,role:`group`,"aria-label":me({name:e})},...tt.map(e=>C(`div`,{class:`pad-row`},...e.map(u))),d,c),p=(e,t=``)=>(c.dataset.tone=t,c.replaceChildren(e)),m=(e,t,n)=>{let r=C(`button`,{type:`button`,class:`pad-yes`},e===`enter`?je():e===`esc`?Me():Fe({key:st(e)})),i=C(`button`,{type:`button`,class:`cmp-link`},w());r.onclick=t=>t.isTrusted&&!l&&void h({key:e},n),i.onclick=()=>p(``),c.dataset.tone=`ask`,c.replaceChildren(C(`span`,null,t),r,i),i.focus()};async function h(e,n){l=!0,D(),p(``),_=Date.now();try{let t=await r(`keys`,{...e,stream:i(),...n?{confirmed:n}:{}});t.status===409&&t.body.error===`confirm`&&typeof t.body.confirm==`string`&&`key`in e?(g=[],m(e.key,String(t.body.reason??``),t.body.confirm)):t.ok||(g=[],p(t.body.reason??o({status:t.status}),`error`))}catch{g=[],p(t(),`error`)}finally{l=!1,D(),y()}}let g=[],_=0,v;function y(){if(l||v||!g.length)return;let e=_+it-Date.now();if(e>0)return void(v=setTimeout(()=>(v=void 0,y()),e));h(g.shift())}let b=e=>{if(e.ctrlKey===e.altKey||e.shiftKey)return;let t=e.ctrlKey?`ctrl`:`alt`,n=/^Key([A-Z])$/.exec(e.code)?.[1].toLowerCase();if(ot||t!==`ctrl`||n!==`v`&&(n!==`c`||getSelection()?.isCollapsed))return n?`${t}+${n}`:{Enter:t===`alt`?`alt+enter`:void 0,Backspace:t===`alt`?`alt+backspace`:void 0,ArrowLeft:`${t}+left`,ArrowRight:`${t}+right`}[e.key]},x=e=>(t=>t===`live`||t===`hidden`&&e===`esc`)(n());function S(e){if(e.metaKey||e.isComposing||e.key===`Process`)return!1;let t=e.ctrlKey||e.altKey?b(e):e.key===`Tab`?e.shiftKey?`shift+tab`:`tab`:e.key===`Delete`?`delete`:rt[e.key];return t?(!x(t)||e.repeat&&(g.length||![`up`,`down`,`left`,`right`,`backspace`,`delete`].includes(t))||(g.push({key:t}),a?.(),y()),!0):!1}function T(e){let t=[...e.replace(/[\u0000-\u001f\u007f-\u009f]/g,``)];if(t.length&&x()){for(let e of t){let t=g.at(-1);t&&`text`in t&&[...t.text].length<at?t.text+=e:g.push({text:e})}a?.(),y()}}function E(e){let t=[...e.replace(/\r\n?/g,`
1
+ import{t as e}from"./post-UHMNmNgA.js";import{n as t,t as n}from"./ask-DUfwZG_H.js";import{t as r}from"./registry-Bx4Ukv2M.js";import{C as i,M as a,O as o,R as s,V as c,a as l,c as u,d,f,g as p,h as m,i as h,l as g,m as _,p as v,s as y,u as b,w as x,x as S,y as C,z as w}from"./index-Cb_IMdLG.js";var T=e=>`Alerts: ${e?.tally} (Space opens the next)`,E=e=>`警示:${e?.tally}(空白鍵開下一則)`,D=((e,t={})=>(t.locale??c())===`zh-TW`?E(e):T(e)),O=e=>`Also queued: ${e?.tally}`,k=e=>`佇列中還有:${e?.tally}`,ee=((e,t={})=>(t.locale??c())===`zh-TW`?k(e):O(e)),te=((e={},t={})=>(t.locale??c())===`zh-TW`?`全部清除`:`Clear all`),A=((e={},t={})=>(t.locale??c())===`zh-TW`?`關閉文件`:`Close document`),j=e=>`Close ${e?.title}`,M=e=>`關閉 ${e?.title}`,ne=((e,t={})=>(t.locale??c())===`zh-TW`?M(e):j(e)),N=((e={},t={})=>(t.locale??c())===`zh-TW`?`連線中…`:`Connecting…`),P=((e={},t={})=>(t.locale??c())===`zh-TW`?`警示`:`alert`),re=((e={},t={})=>(t.locale??c())===`zh-TW`?`放大(F)`:`Enlarge (F)`),ie=((e={},t={})=>(t.locale??c())===`zh-TW`?`縮小(F)`:`Shrink (F)`),ae=((e={},t={})=>(t.locale??c())===`zh-TW`?`通知`:`Notices`),F=((e={},t={})=>(t.locale??c())===`zh-TW`?`通知:已完成或出錯的單位。點一列打開它的通訊並清掉,或全部清除`:`Notices: units that finished or failed. A row opens its comms and clears it, or clear them all`),I=((e={},t={})=>(t.locale??c())===`zh-TW`?`符合寬度`:`Fit width`),oe=((e={},t={})=>(t.locale??c())===`zh-TW`?`無法取得紀錄。`:`History unavailable.`),L=((e={},t={})=>(t.locale??c())===`zh-TW`?`退格鍵`:`Backspace`),R=((e={},t={})=>(t.locale??c())===`zh-TW`?`下`:`Down`),z=((e={},t={})=>(t.locale??c(),`End`)),B=((e={},t={})=>(t.locale??c(),`Enter`)),V=((e={},t={})=>(t.locale??c(),`Escape`)),se=((e={},t={})=>(t.locale??c(),`Home`)),ce=((e={},t={})=>(t.locale??c())===`zh-TW`?`左`:`Left`),H=((e={},t={})=>(t.locale??c())===`zh-TW`?`下一頁`:`Page down`),U=((e={},t={})=>(t.locale??c())===`zh-TW`?`上一頁`:`Page up`),W=((e={},t={})=>(t.locale??c())===`zh-TW`?`右`:`Right`),G=((e={},t={})=>(t.locale??c(),`Shift+Tab`)),le=((e={},t={})=>(t.locale??c())===`zh-TW`?`空白鍵`:`Space`),ue=((e={},t={})=>(t.locale??c(),`Tab`)),de=((e={},t={})=>(t.locale??c())===`zh-TW`?`上`:`Up`),fe=e=>`Keys for ${e?.name}`,pe=e=>`${e?.name} 的按鍵`,me=((e,t={})=>(t.locale??c())===`zh-TW`?pe(e):fe(e)),he=((e={},t={})=>(t.locale??c())===`zh-TW`?`最後一則通訊`:`Last transmission`),ge=((e={},t={})=>(t.locale??c())===`zh-TW`?`稍後`:`Later`),_e=((e={},t={})=>(t.locale??c())===`zh-TW`?`已離開網`:`left the net`),ve=e=>`The mirror ended: ${e?.why}`,ye=e=>`鏡像已結束:${e?.why}`,be=((e,t={})=>(t.locale??c())===`zh-TW`?ye(e):ve(e)),xe=((e={},t={})=>(t.locale??c())===`zh-TW`?`等待輸入密碼時隱藏;請在終端機中輸入。`:`Hidden while it waits for a secret; type it in the terminal.`),Se=e=>`Live · ${e?.cols}×${e?.rows}`,Ce=e=>`即時 · ${e?.cols}×${e?.rows}`,we=((e,t={})=>(t.locale??c())===`zh-TW`?Ce(e):Se(e)),Te=((e={},t={})=>(t.locale??c())===`zh-TW`?`還沒有訊息。`:`No messages yet.`),Ee=((e={},t={})=>(t.locale??c())===`zh-TW`?`開啟通訊`:`Open comms`),De=((e={},t={})=>(t.locale??c())===`zh-TW`?`此分頁隱藏時暫停。`:`Paused while this tab is hidden.`),Oe=e=>`${e?.why} Open the terminal again to retry.`,ke=e=>`${e?.why} 重新開啟終端機即可重試。`,Ae=((e,t={})=>(t.locale??c())===`zh-TW`?ke(e):Oe(e)),je=((e={},t={})=>(t.locale??c())===`zh-TW`?`送出 Enter`:`Send Enter`),Me=((e={},t={})=>(t.locale??c())===`zh-TW`?`送出 Escape`:`Send Escape`),Ne=e=>`Send ${e?.key}`,Pe=e=>`送出 ${e?.key}`,Fe=((e,t={})=>(t.locale??c())===`zh-TW`?Pe(e):Ne(e)),Ie=((e={},t={})=>(t.locale??c())===`zh-TW`?`錯誤`:`error`),Le=((e={},t={})=>(t.locale??c())===`zh-TW`?`已完成`:`finished`),Re=((e={},t={})=>(t.locale??c())===`zh-TW`?`已離開`:`gone`),ze=((e={},t={})=>(t.locale??c())===`zh-TW`?`提問`:`question`),Be=((e={},t={})=>(t.locale??c())===`zh-TW`?`更新`:`update`),Ve=e=>{let t=r(`en`,e?.count,{},!0);return t===`one`?`${e?.count} notice`:t===`other`?`${e?.count} notices`:`tally_finished`},He=e=>`${e?.count} 則通知`,Ue=((e,t={})=>(t.locale??c())===`zh-TW`?He(e):Ve(e)),We=e=>{let t=r(`en`,e?.count,{},!0);return t===`one`?`${e?.count} needs you`:t===`other`?`${e?.count} need you`:`tally_need`},Ge=e=>`${e?.count} 個需要你`,Ke=((e,t={})=>(t.locale??c())===`zh-TW`?Ge(e):We(e)),qe=e=>`Terminal of ${e?.name}, read only`,Je=e=>`${e?.name} 的終端機,唯讀`,Ye=((e,t={})=>(t.locale??c())===`zh-TW`?Je(e):qe(e)),Xe=e=>`Terminal · ${e?.name}`,Ze=e=>`終端機 · ${e?.name}`,Qe=((e,t={})=>(t.locale??c())===`zh-TW`?Ze(e):Xe(e)),$e=((e={},t={})=>(t.locale??c())===`zh-TW`?`◉ 鍵盤直送中 · 點外面結束`:`◉ Keyboard goes to the pane · click outside to stop`),K=((e={},t={})=>(t.locale??c())===`zh-TW`?`點這裡後,鍵盤直接送進終端機(Ctrl、Alt、⌘ 組合鍵除外)`:`Click here and the keyboard goes straight to the terminal (except Ctrl, Alt, and ⌘ combinations)`),et=((e={},t={})=>(t.locale??c())===`zh-TW`?`等待`:`waiting on`),tt=[[[`esc`,`esc`,V],[`tab`,`tab`,ue],[`up`,`↑`,de],[`enter`,`enter`,B]],[[`shift+tab`,`⇧tab`,G],[`left`,`←`,ce],[`down`,`↓`,R],[`right`,`→`,W]],[[`space`,`space`,le],[`backspace`,`⌫`,L],[`home`,`home`,se],[`end`,`end`,z],[`pageup`,`pgup`,U],[`pagedown`,`pgdn`,H]]],nt=`123456789`.split(``),rt={ArrowUp:`up`,ArrowDown:`down`,ArrowLeft:`left`,ArrowRight:`right`,Enter:`enter`,Escape:`esc`,Backspace:`backspace`,Home:`home`,End:`end`,PageUp:`pageup`,PageDown:`pagedown`},it=130,at=64,q=4e3,ot=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.platform),st=e=>e.split(`+`).map(e=>e.length===1?e.toUpperCase():e[0].toUpperCase()+e.slice(1)).join(`+`);function ct({name:e,state:n,post:r,stream:i,blip:a}){let s=[],c=C(`p`,{class:`pad-note`,role:`status`}),l=!1,u=([e,t,n])=>{let r=C(`button`,{type:`button`,class:`pad-key`,"data-key":e,"aria-label":n()},t);return r.onclick=t=>t.isTrusted&&(g.push({key:e}),y()),s.push(r),r},d=C(`details`,{class:`pad-digits`},C(`summary`,null,`1–9`),C(`div`,{class:`pad-row`},...nt.map(e=>u([e,e,()=>e])))),f=C(`div`,{class:`pad`,role:`group`,"aria-label":me({name:e})},...tt.map(e=>C(`div`,{class:`pad-row`},...e.map(u))),d,c),p=(e,t=``)=>(c.dataset.tone=t,c.replaceChildren(e)),m=(e,t,n)=>{let r=C(`button`,{type:`button`,class:`pad-yes`},e===`enter`?je():e===`esc`?Me():Fe({key:st(e)})),i=C(`button`,{type:`button`,class:`cmp-link`},w());r.onclick=t=>t.isTrusted&&!l&&void h({key:e},n),i.onclick=()=>p(``),c.dataset.tone=`ask`,c.replaceChildren(C(`span`,null,t),r,i),i.focus()};async function h(e,n){l=!0,D(),p(``),_=Date.now();try{let t=await r(`keys`,{...e,stream:i(),...n?{confirmed:n}:{}});t.status===409&&t.body.error===`confirm`&&typeof t.body.confirm==`string`&&`key`in e?(g=[],m(e.key,String(t.body.reason??``),t.body.confirm)):t.ok||(g=[],p(t.body.reason??o({status:t.status}),`error`))}catch{g=[],p(t(),`error`)}finally{l=!1,D(),y()}}let g=[],_=0,v;function y(){if(l||v||!g.length)return;let e=_+it-Date.now();if(e>0)return void(v=setTimeout(()=>(v=void 0,y()),e));h(g.shift())}let b=e=>{if(e.ctrlKey===e.altKey||e.shiftKey)return;let t=e.ctrlKey?`ctrl`:`alt`,n=/^Key([A-Z])$/.exec(e.code)?.[1].toLowerCase();if(ot||t!==`ctrl`||n!==`v`&&(n!==`c`||getSelection()?.isCollapsed))return n?`${t}+${n}`:{Enter:t===`alt`?`alt+enter`:void 0,Backspace:t===`alt`?`alt+backspace`:void 0,ArrowLeft:`${t}+left`,ArrowRight:`${t}+right`}[e.key]},x=e=>(t=>t===`live`||t===`hidden`&&e===`esc`)(n());function S(e){if(e.metaKey||e.isComposing||e.key===`Process`)return!1;let t=e.ctrlKey||e.altKey?b(e):e.key===`Tab`?e.shiftKey?`shift+tab`:`tab`:e.key===`Delete`?`delete`:rt[e.key];return t?(!x(t)||e.repeat&&(g.length||![`up`,`down`,`left`,`right`,`backspace`,`delete`].includes(t))||(g.push({key:t}),a?.(),y()),!0):!1}function T(e){let t=[...e.replace(/[\u0000-\u001f\u007f-\u009f]/g,``)];if(t.length&&x()){for(let e of t){let t=g.at(-1);t&&`text`in t&&[...t.text].length<at?t.text+=e:g.push({text:e})}a?.(),y()}}function E(e){let t=[...e.replace(/\r\n?/g,`
2
2
  `).replace(/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f-\u009f]/g,``)];if(t.length&&x()){for(let e=0;e<t.length;e+=q)g.push({paste:t.slice(e,e+q).join(``)});a?.(),y()}}function D(){let e=n();for(let t of s)t.disabled=e===`off`||e===`hidden`&&t.dataset.key!==`esc`}return D(),{el:f,update:D,type:S,text:T,paste:E}}var J=[0,95,135,175,215,255],lt=120,ut=5e3,dt=3e3,Y=e=>Number.isInteger(e)&&e>=0&&e<=255,ft=e=>Y(e)?e<16?e:e<232?`rgb(${J[Math.floor((e-16)/36)]},${J[Math.floor((e-16)/6)%6]},${J[(e-16)%6]})`:`rgb(${8+10*(e-232)},${8+10*(e-232)},${8+10*(e-232)})`:void 0,pt=([e,t,n])=>[e,t,n].every(e=>Y(e))?`rgb(${e},${t},${n})`:void 0;function mt(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?ft(o[0]):a===2?pt(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 ht(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=mt(n,t[1]),r=t.index+t[0].length;return i(e.slice(r)),t}function X(e,t){let n=Math.min(Math.max(0,Number(t.rows)||0),lt);for(;e.children.length<n;)e.append(C(`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(...ht(i).map(e=>{if(!e.cls&&!e.fg&&!e.bg)return e.text;let t=C(`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 gt({tiles:e,post:n,stream:r,pad:i}){let a=new Map,s,c=()=>{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,Ae({why:t}),`error`)),d=(e,n,r=c())=>r&&void(e.queue=e.queue.then(()=>e.post(`mirror`,{stream:r,on:n}).then(t=>n&&!t.ok&&u(e,t.body.reason??o({status:t.status})),()=>n&&u(e,t())))),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>dt,m=()=>(clearInterval(s),s=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,De())),ut):e.parked&&(e.parked=!1,d(e,!0))})));let h=(e,t)=>{let r={key:e,box:C(`div`,{class:`term`,role:`group`,"aria-label":Ye({name:t})}),scroll:C(`div`,{class:`term-scroll`,tabindex:`0`}),state:C(`p`,{class:`term-state`,role:`status`},N()),fit:C(`button`,{type:`button`,class:`cmp-link`,"aria-pressed":`false`},I()),typing:C(`span`,{class:`term-typing`,hidden:``},$e()),sink:C(`textarea`,{class:`term-sink`,rows:`1`,"aria-label":K(),autocomplete:`off`,autocapitalize:`off`,autocorrect:`off`,spellcheck:`false`}),post:n(e),cols:0,seen:0,parked:!1,first:!0,ended:!1,queue:Promise.resolve()};if(r.fit.onclick=()=>(r.fit.setAttribute(`aria-pressed`,String(r.fit.getAttribute(`aria-pressed`)!==`true`)),f(r),requestAnimationFrame(()=>r.scroll.scrollTop=r.scroll.scrollHeight)),r.scroll.append(r.box),globalThis.matchMedia?.(`(pointer: fine)`).matches){let{sink:e}=r,t=()=>(t=>(e.value=``,t&&r.pad?.text?.(t)))(e.value);r.scroll.title=K(),r.scroll.addEventListener(`click`,()=>getSelection()?.isCollapsed!==!1&&e.focus({preventScroll:!0})),e.addEventListener(`keydown`,e=>r.pad?.type?.(e)&&e.preventDefault()),e.addEventListener(`input`,e=>!e.isComposing&&t()),e.addEventListener(`compositionend`,t),e.addEventListener(`paste`,e=>(e.preventDefault(),r.pad?.paste?.(e.clipboardData?.getData(`text/plain`)??``))),e.addEventListener(`focus`,()=>{let t=r.scroll.getBoundingClientRect();Object.assign(e.style,{left:`${t.left+12}px`,top:`${Math.min(t.bottom,innerHeight)-28}px`}),r.typing.hidden=!1,r.scroll.classList.add(`typing`,`engage`)}),e.addEventListener(`blur`,()=>(r.typing.hidden=!0,r.scroll.classList.remove(`typing`,`engage`,`blip`),t())),r.scroll.addEventListener(`animationend`,e=>r.scroll.classList.remove(e.animationName===`term-engage`?`engage`:`blip`))}return new ResizeObserver(()=>f(r)).observe(r.scroll),a.set(e,r),d(r,!0),m(),r.pad=i?.({name:t,state:()=>r.parked||r.ended||p(r)?`off`:r.box.classList.contains(`hidden`)?`hidden`:`live`,post:r.post,stream:c,blip:()=>S(r.scroll,`blip`)}),r.tile={id:`term:${e}`,title:Qe({name:t}),icon:`i-comms`,body:()=>C(`div`,{class:`term-tile`},C(`div`,{class:`term-bar`},r.state,r.typing,r.fit),r.scroll,r.sink,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,N()),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,N()),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,be({why:t.ended}));if([n.seen,n.ended]=[Date.now(),!1],n.box.classList.remove(`stale`),t.hidden)return X(n.box,{key:n.key,rows:0}),l(n,xe());X(n.box,t),(t.whole||t.cols&&t.cols!==n.cols)&&(n.cols=t.cols||n.cols,f(n)),l(n,we({cols:n.cols,rows:n.box.children.length}),`ok`),n.first&&t.whole&&(n.first=!1,requestAnimationFrame(()=>n.scroll.scrollTop=n.scroll.scrollHeight))}}}}var Z=(e,t)=>i(e)-i(t)||e.at-t.at,Q=e=>{let t=e.filter(e=>i(e)===0).length,n=e.length-t;return[t&&Ke({count:t}),n&&Ue({count:n})].filter(Boolean).join(` · `)};function _t(e){let t=[],n=[],r=()=>e.render(t.map(e=>e.alert),n),a=(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(Z)}r()},prune(e){n=n.filter(t=>(e=>e?.mark===t.mark&&!(i(t)!==0&&e.closed))(e(t.key)));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)=>a(t,e.focused(),n),raise(n){let r=t.find(e=>e.alert.key===n);r&&r!==t.at(-1)&&a(r.alert,e.focused())},next(){let t=n.find(e=>i(e)===0);t&&a(t,e.focused())},resolve(e){n=n.filter(t=>i(t)===0||!e.includes(t.key)),r()},close(o=`close`){let s=t.pop();if(!s)return!1;let c=t.at(-1),l=o===`close`?n.find(e=>i(e)===0):void 0;return o===`later`&&s.alert.mark===s.raised&&i({mark:s.raised,pending:s.alert.pending})===0&&(n=[...n,s.alert].sort(Z)),!c&&l?(a(l,s.back),!0):(r(),!e.restore(s.back)&&c&&e.enter(c.alert),!0)}}}var vt=`a, button, input, textarea, select, summary, label, [role=button]`;function $(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 yt(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(`
3
- `).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 bt=()=>d(`<section class="dialog" role="dialog" aria-modal="false" tabindex="-1"><header><b class="tag">${P()}</b><span class="where"></span><button class="zoom" type="button"></button><button class="x" type="button" aria-label="${s()}">×</button></header><div class="who">${h}<div><h3></h3><p><em class="role"></em> <span class="state"></span></p></div></div><div class="intel"><h4>${he()}</h4><p class="said">…</p><p class="pending" hidden><b>${et()}</b> <span></span></p></div><div class="ask-root"></div><footer><a class="go">${Ee()}</a><button class="later" type="button">${ge()}</button><span class="queued"></span></footer></section>`),xt=()=>d(`<li><a class="done-go">${h}<span><b class="name"></b><small></small></span></a></li>`),St=()=>d(`<section class="tile" tabindex="-1"><header><svg><use href="#i-doc"/></svg><b></b><button class="x" type="button" aria-label="${A()}">×</button></header><div class="tile-body"></div></section>`);function Ct(t){let[r,o,s,c,S]=[y(`dock`,HTMLElement),y(`work`,HTMLElement),y(`tiles`,HTMLElement),y(`tile-tabs`,HTMLElement),y(`alerts`,HTMLButtonElement)],C=new Map,w=(e,t,n=C.get(t.key))=>{let r=e.dataset.gone===`true`;p(e,`.said`,n?.failed?oe():n?.said??Te()),e.querySelector(`.pending`).hidden=!n?.pending||r,p(e,`.pending span`,n?.pending??``),l(e.querySelector(`.go`),r?void 0:{view:`session`,ws:t.ws,key:x(t),...n?.at&&{at:n.at}})},T=(e,n={said:`…`})=>{C.set(e.key,n),t.recent(x(e)).then(yt,()=>({failed:!0})).then(t=>{let i=C.get(e.key)===n&&(C.set(e.key,t),r.querySelector(`.dialog[data-key="${CSS.escape(e.key)}"]`));i&&w(i,e),e.mark===`done`&&P(R.queue)})},E=()=>r.classList.contains(`wide`),O=e=>{r.classList.toggle(`wide`,e);try{localStorage.setItem(`sb.dialog-wide`,e?`1`:`0`)}catch{}for(let e of r.querySelectorAll(`.zoom`))k(e)},k=e=>{e.textContent=E()?`⤡`:`⤢`,e.setAttribute(`aria-pressed`,String(E())),e.setAttribute(`aria-label`,E()?ie():re()),e.title=e.getAttribute(`aria-label`)};try{r.classList.toggle(`wide`,localStorage.getItem(`sb.dialog-wide`)===`1`)}catch{}let A=(e,r,a,o)=>{f(e,r.mark),k(e.querySelector(`.zoom`)),e.dataset.gone=String(!!r.gone),e.style.transform=a?`translateY(${-12*a}px) scale(${1-.06*a})`:``,e.style.opacity=String(Math.max(0,1-.3*a)),e.toggleAttribute(`inert`,a>0),e.setAttribute(`aria-label`,`${r.name}: ${u(r.note,r.mark)}`),g(e.querySelector(`.plate`),r.role,r.mark),p(e,`h3`,r.name),p(e,`.role`,v(r.role)),_(e,`.state`,r.note,r.mark,r.gone?_e():void 0),p(e,`.where`,t.label(r.ws)),p(e,`.tag`,r.gone?Re():({waiting:ze,error:Ie,done:Le}[r.mark]??Be)()),p(e,`.queued`,o.length?ee({tally:Q(o)}):``),e.querySelector(`.later`).hidden=i(r)!==0,C.has(r.key)||T(r),w(e,r);let s=I.get(e);s||I.set(e,s=n(e.querySelector(`.ask-root`),L(x(r)),void 0,()=>t.showTerminal(r.ws,x(r)),()=>e.isConnected&&!e.classList.contains(`leaving`)&&(R.raise(e.dataset.key),R.close()))),s.update(r.pending,r.mark===`waiting`&&document.body.dataset.stale!==`true`)},[j,M,N]=[y(`done`,HTMLButtonElement),y(`done-pop`,HTMLElement),y(`done-list`,HTMLElement)],P=e=>{let n=e.filter(e=>i(e)!==0);j.hidden=!n.length,j.textContent=`${ae()} ${n.length}`,[j.title,j.dataset.state]=[F(),n.some(e=>e.mark===`error`)?`error`:`done`],!n.length&&M.matches(`:popover-open`)&&M.hidePopover(),m(N,n.map(e=>({...e,id:e.key})),xt,(e,n)=>{let r=C.get(n.key);g(e.querySelector(`.plate`),n.role,n.mark),p(e,`.name`,n.name),p(e,`small`,`${t.label(n.ws)} · ${r?.said??u(n.note,n.mark)}`),l(e.querySelector(`.done-go`),{view:`session`,ws:n.ws,key:x(n),...r?.at&&{at:r.at}})})};y(`done-clear`,HTMLButtonElement).textContent=te(),M.setAttribute(`aria-label`,F()),M.addEventListener(`toggle`,e=>e.newState===`open`&&b(M,j)),N.addEventListener(`click`,e=>{let t=e.target.closest(`li[data-key]`);t&&queueMicrotask(()=>(R.resolve([t.dataset.key]),M.hidePopover()))}),y(`done-clear`,HTMLButtonElement).addEventListener(`click`,()=>(R.resolve(R.queue.map(e=>e.key)),M.hidePopover()));let I=new WeakMap,L=n=>t.post?.(n)??((t,r)=>e(`sessions/${encodeURIComponent(n)}/${t}`,r)),R=_t({render(e,t){m(r,e.map(e=>({...e,id:e.key})),bt,(n,r)=>A(n,r,e.length-1-e.findIndex(e=>e.key===r.key),t));let n=t.filter(e=>i(e)===0),o=n[0];S.disabled=!o,S.dataset.mark=o?.mark??`unknown`,p(S,`#alert-count`,String(n.length)),S.title=n.length?D({tally:Q(n)}):``,p(S,`#alert-text`,o?`${o.name} · ${u(o.note,o.mark)}`:a()),m(S.querySelector(`.faces`),n.slice(0,3).map(e=>({...e,id:e.key})),()=>d(h),(e,t)=>g(e,t.role,t.mark)),P(t)},enter(e){let t=r.querySelector(`[data-key="${CSS.escape(e.key)}"]`);t&&!I.get(t)?.enter()&&t.querySelector(`.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))});S.addEventListener(`click`,()=>R.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},n=[...r.querySelectorAll(`.dialog:not(.leaving)`)],i=n.slice(0,-1).reverse().find(t);e.defaultPrevented||!i||!n.length||t(n.at(-1))||e.target?.closest?.(vt)||(e.preventDefault(),e.stopPropagation(),R.raise(i.dataset.key))},!0),r.addEventListener(`click`,e=>{let t=e.target;t.closest(`.zoom`)?O(!E()):t.closest(`.x`)?R.close():t.closest(`.later`)?R.close(`later`):t.closest(`.go`)&&queueMicrotask(()=>void R.close(`go`))});let z=0,B=()=>s.classList.toggle(`tabbed`,V.tiles.length>1&&o.clientWidth<460+V.tiles.length*400),V=$({render(e,t){s.hidden=!e.length,m(s,e,e=>{let t=St();return t.querySelector(`use`).setAttribute(`href`,`#${e.icon??`i-doc`}`),t.querySelector(`.x`).setAttribute(`aria-label`,ne({title:e.title})),t.querySelector(`.tile-body`).append(e.body()),t.querySelector(`.x`).addEventListener(`click`,()=>V.close(e.id)),t},(e,n)=>{p(e,`header b`,n.title),e.classList.toggle(`active`,n.id===t)}),m(c,e,()=>d(`<button type="button" class="tab-btn"></button>`),(e,n)=>{e.textContent=n.title,e.classList.toggle(`active`,n.id===t),e.onclick=()=>V.activate(n.id)}),s.prepend(c),e.length!==z&&(z=e.length,B())},enter:e=>requestAnimationFrame(()=>s.querySelector(`.tile[data-key="${CSS.escape(e.id)}"]`)?.focus())});return new ResizeObserver(B).observe(o),{tiles:V,stack:R,terminal:gt({tiles:V,post:L,stream:t.stream,pad:ct}),hotkey(e){if(e===`next`)return!S.disabled&&(R.next(),!0);let t=[...r.querySelectorAll(`.dialog:not(.leaving) .zoom`)].at(-1);return t?.getClientRects().length?(t.click(),!0):!1},alerts(e,t){for(let t of e)T(t),R.arrive(t);R.prune(e=>t.get(e))}}}export{Ct as mountPanels};
3
+ `).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 bt=()=>d(`<section class="dialog" role="dialog" aria-modal="false" tabindex="-1"><header><b class="tag">${P()}</b><span class="where"></span><button class="zoom" type="button"></button><button class="x" type="button" aria-label="${s()}">×</button></header><div class="who">${h}<div><h3></h3><p><em class="role"></em> <span class="state"></span></p></div></div><div class="intel"><h4>${he()}</h4><p class="said">…</p><p class="pending" hidden><b>${et()}</b> <span></span></p></div><div class="ask-root"></div><footer><a class="go">${Ee()}</a><button class="later" type="button">${ge()}</button><span class="queued"></span></footer></section>`),xt=()=>d(`<li><a class="done-go">${h}<span><b class="name"></b><small></small></span></a></li>`),St=()=>d(`<section class="tile" tabindex="-1"><header><svg><use href="#i-doc"/></svg><b></b><button class="x" type="button" aria-label="${A()}">×</button></header><div class="tile-body"></div></section>`);function Ct(t){let[r,o,s,c,S]=[y(`dock`,HTMLElement),y(`work`,HTMLElement),y(`tiles`,HTMLElement),y(`tile-tabs`,HTMLElement),y(`alerts`,HTMLButtonElement)],C=new Map,w=(e,t,n=C.get(t.key))=>{let r=e.dataset.gone===`true`;p(e,`.said`,n?.failed?oe():n?.said??Te()),e.querySelector(`.pending`).hidden=!n?.pending||r,p(e,`.pending span`,n?.pending??``),l(e.querySelector(`.go`),r?void 0:{view:`session`,ws:t.ws,key:x(t),...n?.at&&{at:n.at}})},T=(e,n={said:`…`})=>{C.set(e.key,n),t.recent(x(e)).then(yt,()=>({failed:!0})).then(t=>{let i=C.get(e.key)===n&&(C.set(e.key,t),r.querySelector(`.dialog[data-key="${CSS.escape(e.key)}"]`));i&&w(i,e),e.mark===`done`&&P(R.queue)})},E=()=>r.classList.contains(`wide`),O=e=>{r.classList.toggle(`wide`,e);try{localStorage.setItem(`sb.dialog-wide`,e?`1`:`0`)}catch{}for(let e of r.querySelectorAll(`.zoom`))k(e)},k=e=>{e.textContent=E()?`⤡`:`⤢`,e.setAttribute(`aria-pressed`,String(E())),e.setAttribute(`aria-label`,E()?ie():re()),e.title=e.getAttribute(`aria-label`)};try{r.classList.toggle(`wide`,localStorage.getItem(`sb.dialog-wide`)===`1`)}catch{}let A=(e,r,a,o)=>{f(e,r.mark),k(e.querySelector(`.zoom`)),e.dataset.gone=String(!!r.gone),e.style.transform=a?`translateY(${-12*a}px) scale(${1-.06*a})`:``,e.style.opacity=String(Math.max(0,1-.3*a)),e.toggleAttribute(`inert`,a>0),e.setAttribute(`aria-label`,`${r.name}: ${u(r.note,r.mark)}`),g(e.querySelector(`.plate`),r.role,r.mark),p(e,`h3`,r.name),p(e,`.role`,v(r.role)),_(e,`.state`,r.note,r.mark,r.gone?_e():void 0),p(e,`.where`,t.label(r.ws)),p(e,`.tag`,r.gone?Re():({waiting:ze,error:Ie,done:Le}[r.mark]??Be)()),p(e,`.queued`,o.length?ee({tally:Q(o)}):``),e.querySelector(`.later`).hidden=i(r)!==0,C.has(r.key)||T(r),w(e,r);let s=I.get(e);s||I.set(e,s=n(e.querySelector(`.ask-root`),L(x(r)),void 0,()=>t.showTerminal(r.ws,x(r)),()=>e.isConnected&&!e.classList.contains(`leaving`)&&(R.raise(e.dataset.key),R.close()))),s.update(r.pending,r.mark===`waiting`&&document.body.dataset.stale!==`true`)},[j,M,N]=[y(`done`,HTMLButtonElement),y(`done-pop`,HTMLElement),y(`done-list`,HTMLElement)],P=e=>{let n=e.filter(e=>i(e)!==0);j.hidden=!n.length,j.textContent=`${ae()} ${n.length}`,[j.title,j.dataset.state]=[F(),n.some(e=>e.mark===`error`)?`error`:`done`],!n.length&&M.matches(`:popover-open`)&&M.hidePopover(),m(N,n.map(e=>({...e,id:e.key})),xt,(e,n)=>{let r=C.get(n.key);g(e.querySelector(`.plate`),n.role,n.mark),p(e,`.name`,n.name),p(e,`small`,`${t.label(n.ws)} · ${r?.said??u(n.note,n.mark)}`),l(e.querySelector(`.done-go`),{view:`session`,ws:n.ws,key:x(n),...r?.at&&{at:r.at}})})};y(`done-clear`,HTMLButtonElement).textContent=te(),M.setAttribute(`aria-label`,F()),M.addEventListener(`toggle`,e=>e.newState===`open`&&b(M,j)),N.addEventListener(`click`,e=>{let t=e.target.closest(`li[data-key]`);t&&queueMicrotask(()=>(R.resolve([t.dataset.key]),M.hidePopover()))}),y(`done-clear`,HTMLButtonElement).addEventListener(`click`,()=>(R.resolve(R.queue.map(e=>e.key)),M.hidePopover()));let I=new WeakMap,L=n=>t.post?.(n)??((t,r)=>e(`sessions/${encodeURIComponent(n)}/${t}`,r)),R=_t({render(e,t){m(r,e.map(e=>({...e,id:e.key})),bt,(n,r)=>A(n,r,e.length-1-e.findIndex(e=>e.key===r.key),t));let n=t.filter(e=>i(e)===0),o=n[0];S.disabled=!o,S.dataset.mark=o?.mark??`unknown`,p(S,`#alert-count`,String(n.length)),S.title=n.length?D({tally:Q(n)}):``,p(S,`#alert-text`,o?`${o.name} · ${u(o.note,o.mark)}`:a()),m(S.querySelector(`.faces`),n.slice(0,3).map(e=>({...e,id:e.key})),()=>d(h),(e,t)=>g(e,t.role,t.mark)),P(t)},enter(e){let t=r.querySelector(`[data-key="${CSS.escape(e.key)}"]`);t&&!I.get(t)?.enter()&&t.querySelector(`.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))});S.addEventListener(`click`,()=>R.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},n=[...r.querySelectorAll(`.dialog:not(.leaving)`)],i=n.slice(0,-1).reverse().find(t);e.defaultPrevented||!i||!n.length||t(n.at(-1))||e.target?.closest?.(vt)||(e.preventDefault(),e.stopPropagation(),R.raise(i.dataset.key))},!0),r.addEventListener(`click`,e=>{let t=e.target;t.closest(`.zoom`)?O(!E()):t.closest(`.x`)?R.close():t.closest(`.later`)?R.close(`later`):t.closest(`.go`)&&queueMicrotask(()=>void R.close(`go`))});let z=0,B=()=>s.classList.toggle(`tabbed`,V.tiles.length>1&&o.clientWidth<460+V.tiles.length*400),V=$({render(e,t){s.hidden=!e.length,m(s,e,e=>{let t=St();return t.querySelector(`use`).setAttribute(`href`,`#${e.icon??`i-doc`}`),t.querySelector(`.x`).setAttribute(`aria-label`,ne({title:e.title})),t.querySelector(`.tile-body`).append(e.body()),t.querySelector(`.x`).addEventListener(`click`,()=>V.close(e.id)),t},(e,n)=>{p(e,`header b`,n.title),e.classList.toggle(`active`,n.id===t)}),m(c,e,()=>d(`<button type="button" class="tab-btn"></button>`),(e,n)=>{e.textContent=n.title,e.classList.toggle(`active`,n.id===t),e.onclick=()=>V.activate(n.id)}),s.prepend(c),e.length!==z&&(z=e.length,B())},enter:e=>requestAnimationFrame(()=>s.querySelector(`.tile[data-key="${CSS.escape(e.id)}"]`)?.focus())});return new ResizeObserver(B).observe(o.appendChild(Object.assign(document.createElement(`i`),{className:`gauge`}))),{tiles:V,stack:R,terminal:gt({tiles:V,post:L,stream:t.stream,pad:ct}),hotkey(e){if(e===`next`)return!S.disabled&&(R.next(),!0);let t=[...r.querySelectorAll(`.dialog:not(.leaving) .zoom`)].at(-1);return t?.getClientRects().length?(t.click(),!0):!1},alerts(e,t){for(let t of e)T(t),R.arrive(t);R.prune(e=>t.get(e))}}}export{Ct as mountPanels};
@@ -1 +1 @@
1
- import{R as e,V as t,y as n}from"./index-CFAsCDlQ.js";import{t as r}from"./chat-BVp1ldFS.js";var i=((e={},n={})=>(n.locale??t())===`zh-TW`?`下一張`:`Next image`),a=((e={},n={})=>(n.locale??t())===`zh-TW`?`上一張`:`Previous image`),o=((e={},n={})=>(n.locale??t())===`zh-TW`?`圖片檢視`:`Image viewer`);function s(t,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=e=>(c=(c+e+t.length)%t.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`,e(),`×`,()=>h.close()),u);function g(){h.classList.remove(`zoom`),l.src=t[c],l.alt=r({n:c+1}),u.textContent=t.length>1?`${c+1} / ${t.length}`:``,p.hidden=m.hidden=t.length<2}l.addEventListener(`click`,e=>(e.stopPropagation(),h.classList.toggle(`zoom`))),h.addEventListener(`click`,()=>h.close()),h.addEventListener(`keydown`,e=>{t.length>1&&(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&(e.preventDefault(),f(e.key===`ArrowLeft`?-1:1))}),h.addEventListener(`close`,()=>h.remove()),document.body.append(h),g(),h.showModal()}export{s as lightbox};
1
+ import{R as e,V as t,y as n}from"./index-Cb_IMdLG.js";import{t as r}from"./chat-Da7nzVV-.js";var i=((e={},n={})=>(n.locale??t())===`zh-TW`?`下一張`:`Next image`),a=((e={},n={})=>(n.locale??t())===`zh-TW`?`上一張`:`Previous image`),o=((e={},n={})=>(n.locale??t())===`zh-TW`?`圖片檢視`:`Image viewer`);function s(t,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=e=>(c=(c+e+t.length)%t.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`,e(),`×`,()=>h.close()),u);function g(){h.classList.remove(`zoom`),l.src=t[c],l.alt=r({n:c+1}),u.textContent=t.length>1?`${c+1} / ${t.length}`:``,p.hidden=m.hidden=t.length<2}l.addEventListener(`click`,e=>(e.stopPropagation(),h.classList.toggle(`zoom`))),h.addEventListener(`click`,()=>h.close()),h.addEventListener(`keydown`,e=>{t.length>1&&(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&(e.preventDefault(),f(e.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{O as t,P as n,V as r,b as i,j as a,y as o}from"./index-CFAsCDlQ.js";var s=((e={},t={})=>(t.locale??r())===`zh-TW`?`正在取得配對碼…`:`Asking for a pairing code…`),c=((e={},t={})=>(t.locale??r())===`zh-TW`?`未知的裝置`:`Unknown device`),l=e=>`Paired ${e?.paired} · last used ${e?.seen}`,u=e=>`配對於 ${e?.paired}・最後使用 ${e?.seen}`,d=((e,t={})=>(t.locale??r())===`zh-TW`?u(e):l(e)),f=((e={},t={})=>(t.locale??r())===`zh-TW`?`沒有已配對的裝置。`:`No device is paired.`),p=((e={},t={})=>(t.locale??r())===`zh-TW`?`已配對的裝置`:`Paired devices`),m=((e={},t={})=>(t.locale??r())===`zh-TW`?`新的配對碼`:`New code`),h=((e={},t={})=>(t.locale??r())===`zh-TW`?`配對 QR code`:`Pairing QR code`),g=((e={},t={})=>(t.locale??r())===`zh-TW`?`用以本機使用者身分登入 Tailscale 的手機掃描。只能用一次,十分鐘內有效。`:`Scan it with a phone signed in to Tailscale as this machine's user. It works once, within ten minutes.`),_=((e={},t={})=>(t.locale??r())===`zh-TW`?`配對手機`:`Pair a phone`),v=((e={},t={})=>(t.locale??r())===`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.`),y=((e={},t={})=>(t.locale??r())===`zh-TW`?`關閉遠端存取不會刪除已配對的裝置;要結束某個裝置的配對,請按它的「解除配對」。`:`Turning remote access off keeps the paired devices. Unpair a device to end its pairing.`),b=((e={},t={})=>(t.locale??r())===`zh-TW`?`關閉遠端存取`:`Turn off remote access`),x=((e={},t={})=>(t.locale??r())===`zh-TW`?`開啟遠端存取`:`Turn on remote access`),S=((e={},t={})=>(t.locale??r())===`zh-TW`?`正在開啟遠端存取…`:`Turning remote access on…`),C=((e={},t={})=>(t.locale??r())===`zh-TW`?`解除配對`:`Unpair`),w=((e={},t={})=>(t.locale??r())===`zh-TW`?`全部解除配對`:`Unpair all`),T=e=>`Unpair ${e?.name}`,E=e=>`解除 ${e?.name} 的配對`,D=((e,t={})=>(t.locale??r())===`zh-TW`?E(e):T(e)),O=e=>e?new Date(e).toLocaleString([],{hour12:!1,dateStyle:`medium`,timeStyle:`short`}):n();function k(n){let r=o(`div`,{class:`devices`}),s=o(`p`,{class:`chat-empty`,role:`status`}),l=(e,t,n)=>{let r=o(`button`,{type:`button`,class:`later`,"aria-label":t},e);return r.onclick=()=>(r.disabled=!0,void n().finally(()=>(r.disabled=!1,void m()))),r},u=(n,r={})=>e(n,r).then(e=>e.ok?s.replaceChildren():s.replaceChildren(e.body.reason??t({status:e.status})),()=>s.replaceChildren(a()));async function m(){let t=await e(`remote/devices`,{}).catch(()=>void 0),m=t?.ok?t.body.devices:[];if(!t?.ok)return void r.replaceChildren(o(`p`,{class:`chat-empty`},t?.body.reason??a()));let h=m.map(e=>o(`li`,null,o(`span`,null,o(`b`,null,e.label||c()),o(`small`,null,d({paired:O(e.paired),seen:O(e.seen)}))),l(C(),D({name:e.label||c()}),()=>u(`remote/unpair`,{id:e.id})))),g=t.body.on===!0&&l(b(),b(),()=>u(`remote/off`).then(n));r.replaceChildren(...i(o(`h4`,null,p()),m.length?o(`ul`,null,...h):o(`p`,{class:`chat-empty`},f()),s,o(`div`,{class:`devices-acts`},m.length>1&&l(w(),w(),()=>u(`remote/unpair-all`)),g),g&&o(`small`,null,y())))}return m(),{box:r,refresh:m}}var A=`http://www.w3.org/2000/svg`;function j(e){let t=e.length,n=document.createElementNS(A,`svg`),r=document.createElementNS(A,`rect`),i=document.createElementNS(A,`path`);n.setAttribute(`viewBox`,`-4 -4 ${t+8} ${t+8}`),n.setAttribute(`class`,`qr`),n.setAttribute(`role`,`img`),n.setAttribute(`aria-label`,h());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 M(){return{id:`pair`,title:_(),body:()=>{let n=o(`div`,{class:`pair`}),r=o(`button`,{type:`button`,class:`later`},m()),i=o(`button`,{type:`button`,class:`pair-btn`},x()),c=(c=`remote/pair`,u=s())=>{n.replaceChildren(o(`p`,{class:`chat-empty`},u)),e(c,{}).then(e=>{l.refresh();let a=e.body.rows,s=String(e.body.url??``);if(e.body.error===`remote_off`)return n.replaceChildren(o(`p`,null,v()),i);if(!e.ok||!Array.isArray(a))return n.replaceChildren(o(`p`,null,e.body.reason??t({status:e.status})),c===`remote/on`?i:r);n.replaceChildren(j(a.map(String)),o(`p`,null,g()),o(`p`,null,o(`code`,null,new URL(s).host)),r)},()=>n.replaceChildren(o(`p`,null,a()),r))};i.onclick=()=>c(`remote/on`,S()),r.onclick=()=>c();let l=k(()=>n.replaceChildren(o(`p`,null,v()),i));return c(),o(`div`,{class:`pair`},n,l.box)}}}export{M as pairTile};
1
+ import{t as e}from"./post-UHMNmNgA.js";import{O as t,P as n,V as r,b as i,j as a,y as o}from"./index-Cb_IMdLG.js";var s=((e={},t={})=>(t.locale??r())===`zh-TW`?`正在取得配對碼…`:`Asking for a pairing code…`),c=((e={},t={})=>(t.locale??r())===`zh-TW`?`未知的裝置`:`Unknown device`),l=e=>`Paired ${e?.paired} · last used ${e?.seen}`,u=e=>`配對於 ${e?.paired}・最後使用 ${e?.seen}`,d=((e,t={})=>(t.locale??r())===`zh-TW`?u(e):l(e)),f=((e={},t={})=>(t.locale??r())===`zh-TW`?`沒有已配對的裝置。`:`No device is paired.`),p=((e={},t={})=>(t.locale??r())===`zh-TW`?`已配對的裝置`:`Paired devices`),m=((e={},t={})=>(t.locale??r())===`zh-TW`?`新的配對碼`:`New code`),h=((e={},t={})=>(t.locale??r())===`zh-TW`?`配對 QR code`:`Pairing QR code`),g=((e={},t={})=>(t.locale??r())===`zh-TW`?`用以本機使用者身分登入 Tailscale 的手機掃描。只能用一次,十分鐘內有效。`:`Scan it with a phone signed in to Tailscale as this machine's user. It works once, within ten minutes.`),_=((e={},t={})=>(t.locale??r())===`zh-TW`?`配對手機`:`Pair a phone`),v=((e={},t={})=>(t.locale??r())===`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.`),y=((e={},t={})=>(t.locale??r())===`zh-TW`?`關閉遠端存取不會刪除已配對的裝置;要結束某個裝置的配對,請按它的「解除配對」。`:`Turning remote access off keeps the paired devices. Unpair a device to end its pairing.`),b=((e={},t={})=>(t.locale??r())===`zh-TW`?`關閉遠端存取`:`Turn off remote access`),x=((e={},t={})=>(t.locale??r())===`zh-TW`?`開啟遠端存取`:`Turn on remote access`),S=((e={},t={})=>(t.locale??r())===`zh-TW`?`正在開啟遠端存取…`:`Turning remote access on…`),C=((e={},t={})=>(t.locale??r())===`zh-TW`?`解除配對`:`Unpair`),w=((e={},t={})=>(t.locale??r())===`zh-TW`?`全部解除配對`:`Unpair all`),T=e=>`Unpair ${e?.name}`,E=e=>`解除 ${e?.name} 的配對`,D=((e,t={})=>(t.locale??r())===`zh-TW`?E(e):T(e)),O=e=>e?new Date(e).toLocaleString([],{hour12:!1,dateStyle:`medium`,timeStyle:`short`}):n();function k(n){let r=o(`div`,{class:`devices`}),s=o(`p`,{class:`chat-empty`,role:`status`}),l=(e,t,n)=>{let r=o(`button`,{type:`button`,class:`later`,"aria-label":t},e);return r.onclick=()=>(r.disabled=!0,void n().finally(()=>(r.disabled=!1,void m()))),r},u=(n,r={})=>e(n,r).then(e=>e.ok?s.replaceChildren():s.replaceChildren(e.body.reason??t({status:e.status})),()=>s.replaceChildren(a()));async function m(){let t=await e(`remote/devices`,{}).catch(()=>void 0),m=t?.ok?t.body.devices:[];if(!t?.ok)return void r.replaceChildren(o(`p`,{class:`chat-empty`},t?.body.reason??a()));let h=m.map(e=>o(`li`,null,o(`span`,null,o(`b`,null,e.label||c()),o(`small`,null,d({paired:O(e.paired),seen:O(e.seen)}))),l(C(),D({name:e.label||c()}),()=>u(`remote/unpair`,{id:e.id})))),g=t.body.on===!0&&l(b(),b(),()=>u(`remote/off`).then(n));r.replaceChildren(...i(o(`h4`,null,p()),m.length?o(`ul`,null,...h):o(`p`,{class:`chat-empty`},f()),s,o(`div`,{class:`devices-acts`},m.length>1&&l(w(),w(),()=>u(`remote/unpair-all`)),g),g&&o(`small`,null,y())))}return m(),{box:r,refresh:m}}var A=`http://www.w3.org/2000/svg`;function j(e){let t=e.length,n=document.createElementNS(A,`svg`),r=document.createElementNS(A,`rect`),i=document.createElementNS(A,`path`);n.setAttribute(`viewBox`,`-4 -4 ${t+8} ${t+8}`),n.setAttribute(`class`,`qr`),n.setAttribute(`role`,`img`),n.setAttribute(`aria-label`,h());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 M(){return{id:`pair`,title:_(),body:()=>{let n=o(`div`,{class:`pair`}),r=o(`button`,{type:`button`,class:`later`},m()),i=o(`button`,{type:`button`,class:`pair-btn`},x()),c=(c=`remote/pair`,u=s())=>{n.replaceChildren(o(`p`,{class:`chat-empty`},u)),e(c,{}).then(e=>{l.refresh();let a=e.body.rows,s=String(e.body.url??``);if(e.body.error===`remote_off`)return n.replaceChildren(o(`p`,null,v()),i);if(!e.ok||!Array.isArray(a))return n.replaceChildren(o(`p`,null,e.body.reason??t({status:e.status})),c===`remote/on`?i:r);n.replaceChildren(j(a.map(String)),o(`p`,null,g()),o(`p`,null,o(`code`,null,new URL(s).host)),r)},()=>n.replaceChildren(o(`p`,null,a()),r))};i.onclick=()=>c(`remote/on`,S()),r.onclick=()=>c();let l=k(()=>n.replaceChildren(o(`p`,null,v()),i));return c(),o(`div`,{class:`pair`},n,l.box)}}}export{M as pairTile};
@@ -1 +1 @@
1
- import{t as e}from"./post-UHMNmNgA.js";import{O as t,V as n,j as r,y as i}from"./index-CFAsCDlQ.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,h){let g=n.kind===`base`?void 0:n.base,y=n.kind===`base`?void 0:n.tab,b=n.kind===`base`?p():n.kind===`main`?_({base:g.label}):y?x({tab:y.label}):w({base:g.label}),S=`open-${n.kind}-${g?.id??``}-${y?.id??``}`;return{id:S,title:b,body:()=>{let p=i(`code`,{class:`spawn-path`}),_=i(`button`,{type:`button`,class:`later`},d()),b=i(`div`,{class:`spawn-dirs`}),x=i(`p`,{class:`chat-empty`}),C=i(`button`,{type:`button`,class:`go`},n.kind===`base`?f():n.kind===`main`?m():v()),w=i(`textarea`,{rows:`3`,placeholder:s()}),E=i(`input`,{type:`text`,maxlength:`64`,placeholder:o()}),D,k=!1;E.addEventListener(`input`,()=>k=!0);let A=e=>x.textContent=e,N=n=>{A(a()),e(`dirs`,n?{path:n}:g?{workspace:g.id,...y&&{tab:y.id}}:{}).then(e=>{if(!e.ok)return A(e.body.reason??t({status:e.status}));D=e.body;let n=D.path===D.home?`~`:D.path.startsWith(`${D.home}/`)?`~/${D.path.slice(D.home.length+1)}`:D.path;p.textContent=n,_.disabled=!D.parent,b.replaceChildren(...D.dirs.map(e=>{let t=i(`button`,{type:`button`,class:`spawn-dir`},`${e}/`);return t.onclick=()=>N(`${D.path}/${e}`),t})),k||(E.value=D.path===D.home?``:D.path.slice(D.path.lastIndexOf(`/`)+1)),A(D.dirs.length?D.truncated?c():``:l())},()=>A(r()))};return _.onclick=()=>D?.parent&&N(D.parent),C.onclick=()=>{if(!D)return;let i=D.path,a=w.value,o=n.kind===`base`?{dir:i,label:E.value,prompt:a}:{workspace:g.id,...y&&{tab:y.id},dir:i,prompt:a};C.disabled=!0,A(M()),e(`open/${n.kind}`,o).then(e=>{if(!e.ok)return A(e.body.reason??t({status:e.status}));if(w.value=E.value=``,k=!1,h&&typeof e.body.session==`string`)return h(e.body.workspace,e.body.session,S);A(n.kind===`base`?T():n.kind===`main`?O({base:g.label}):j({base:g.label}))},()=>A(r())).finally(()=>C.disabled=!1)},N(),i(`div`,{class:`spawn`},i(`p`,{class:`spawn-at`},u(),` `,p,` `,_),b,x,...n.kind===`base`?[E]:[],w,C)}}}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{O as t,V as n,j as r,y as i}from"./index-Cb_IMdLG.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,h){let g=n.kind===`base`?void 0:n.base,y=n.kind===`base`?void 0:n.tab,b=n.kind===`base`?p():n.kind===`main`?_({base:g.label}):y?x({tab:y.label}):w({base:g.label}),S=`open-${n.kind}-${g?.id??``}-${y?.id??``}`;return{id:S,title:b,body:()=>{let p=i(`code`,{class:`spawn-path`}),_=i(`button`,{type:`button`,class:`later`},d()),b=i(`div`,{class:`spawn-dirs`}),x=i(`p`,{class:`chat-empty`}),C=i(`button`,{type:`button`,class:`go`},n.kind===`base`?f():n.kind===`main`?m():v()),w=i(`textarea`,{rows:`3`,placeholder:s()}),E=i(`input`,{type:`text`,maxlength:`64`,placeholder:o()}),D,k=!1;E.addEventListener(`input`,()=>k=!0);let A=e=>x.textContent=e,N=n=>{A(a()),e(`dirs`,n?{path:n}:g?{workspace:g.id,...y&&{tab:y.id}}:{}).then(e=>{if(!e.ok)return A(e.body.reason??t({status:e.status}));D=e.body;let n=D.path===D.home?`~`:D.path.startsWith(`${D.home}/`)?`~/${D.path.slice(D.home.length+1)}`:D.path;p.textContent=n,_.disabled=!D.parent,b.replaceChildren(...D.dirs.map(e=>{let t=i(`button`,{type:`button`,class:`spawn-dir`},`${e}/`);return t.onclick=()=>N(`${D.path}/${e}`),t})),k||(E.value=D.path===D.home?``:D.path.slice(D.path.lastIndexOf(`/`)+1)),A(D.dirs.length?D.truncated?c():``:l())},()=>A(r()))};return _.onclick=()=>D?.parent&&N(D.parent),C.onclick=()=>{if(!D)return;let i=D.path,a=w.value,o=n.kind===`base`?{dir:i,label:E.value,prompt:a}:{workspace:g.id,...y&&{tab:y.id},dir:i,prompt:a};C.disabled=!0,A(M()),e(`open/${n.kind}`,o).then(e=>{if(!e.ok)return A(e.body.reason??t({status:e.status}));if(w.value=E.value=``,k=!1,h&&typeof e.body.session==`string`)return h(e.body.workspace,e.body.session,S);A(n.kind===`base`?T():n.kind===`main`?O({base:g.label}):j({base:g.label}))},()=>A(r())).finally(()=>C.disabled=!1)},N(),i(`div`,{class:`spawn`},i(`p`,{class:`spawn-at`},u(),` `,p,` `,_),b,x,...n.kind===`base`?[E]:[],w,C)}}}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 +1 @@
1
- import{t as e}from"./registry-Bx4Ukv2M.js";import{V as t}from"./index-CFAsCDlQ.js";var n=((e={},n={})=>(n.locale??t())===`zh-TW`?`網外`:`Outside the net`),r=t=>{let n=e(`en`,t?.count,{},!0);return n===`one`?`${t?.count} unit`:n===`other`?`${t?.count} units`:`unit_count`},i=e=>`${e?.count} 個單位`,a=((e,n={})=>(n.locale??t())===`zh-TW`?i(e):r(e));export{n,a as t};
1
+ import{t as e}from"./registry-Bx4Ukv2M.js";import{V as t}from"./index-Cb_IMdLG.js";var n=((e={},n={})=>(n.locale??t())===`zh-TW`?`網外`:`Outside the net`),r=t=>{let n=e(`en`,t?.count,{},!0);return n===`one`?`${t?.count} unit`:n===`other`?`${t?.count} units`:`unit_count`},i=e=>`${e?.count} 個單位`,a=((e,n={})=>(n.locale??t())===`zh-TW`?i(e):r(e));export{n,a as t};
@@ -1,7 +1,7 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-AWY1DjQH.css"])))=>i.map(i=>d[i]);
2
- import{r as e,t}from"./post-UHMNmNgA.js";import{n,r,t as i}from"./ask-CDY-ecWy.js";import{t as a}from"./registry-Bx4Ukv2M.js";import{n as o,t as s}from"./unit_count-BBecd9Yh.js";import{A as c,B as l,D as u,E as d,F as f,I as p,L as m,N as h,O as g,R as _,V as v,_ as y,a as b,c as x,d as S,f as C,g as w,h as T,i as E,j as ee,k as te,l as D,m as O,o as k,p as A,r as j,t as M,v as N,x as P,y as F,z as ne}from"./index-CFAsCDlQ.js";var re=((e={},t={})=>(t.locale??v())===`zh-TW`?`附加檔案`:`Attach files`),ie=((e={},t={})=>(t.locale??v())===`zh-TW`?`返回`:`Back`),ae=e=>`This is a ${e?.agent} session. It is in the net, but this page cannot type into it or show its log: use its own terminal.`,oe=e=>`這是 ${e?.agent} 工作階段。它在 net 裡,但這個頁面無法對它輸入,也看不到它的紀錄,請到它自己的終端機操作。`,se=((e,t={})=>(t.locale??v())===`zh-TW`?oe(e):ae(e)),ce=((e={},t={})=>(t.locale??v())===`zh-TW`?`它在等待對話框:請在上方或它的終端機中回答。`:`It waits on a dialog: answer it above, or in its terminal.`),le=((e={},t={})=>(t.locale??v())===`zh-TW`?`它在等待對話框;請在它的終端機中回答。`:`It waits on a dialog; answer it in its terminal.`),ue=((e={},t={})=>(t.locale??v())===`zh-TW`?`這個 session 已不再即時;紀錄仍可閱讀。`:`This session is no longer live; its history stays readable.`),de=((e={},t={})=>(t.locale??v())===`zh-TW`?`這個單位沒有即時的 pi 窗格,無處可輸入。`:`No live pi pane backs this unit, so there is nothing to type into.`),fe=((e={},t={})=>(t.locale??v())===`zh-TW`?`串流中斷;要等它恢復才能送出。`:`The stream is down; sending waits for it to come back.`),pe=((e={},t={})=>(t.locale??v())===`zh-TW`?`頻道關閉`:`channel closed`),me=((e={},t={})=>(t.locale??v())===`zh-TW`?`頻道開啟`:`channel open`),he=((e={},t={})=>(t.locale??v())===`zh-TW`?`指令`:`Commands`),ge=((e={},t={})=>(t.locale??v())===`zh-TW`?`通訊`:`comms`),_e=((e={},t={})=>(t.locale??v())===`zh-TW`?`已派出`:`Dispatched`),ve=((e={},t={})=>(t.locale??v())===`zh-TW`?`無法取得:已不在它的 session 中開啟。`:`Unavailable: no longer open in its session.`),ye=((e={},t={})=>(t.locale??v())===`zh-TW`?`已不在清單中:已在它的 session 中關閉,或 session 已結束。`:`No longer listed: closed in its session, or the session ended.`),be=((e={},t={})=>(t.locale??v())===`zh-TW`?`已更新:此區塊顯示時會載入新版本。`:`Updated: the new version loads when this tile shows.`),xe=((e={},t={})=>(t.locale??v())===`zh-TW`?`超過轉送上限:請在終端機中閱讀。`:`More than the relay carries: read them in the terminal.`),Se=e=>`${e?.command} ends this session or switches its pane to another one.`,Ce=e=>`${e?.command} 會結束這個 session,或把它的窗格切換到別的 session。`,we=((e,t={})=>(t.locale??v())===`zh-TW`?Ce(e):Se(e)),Te=e=>{let t=a(`en`,e?.count,{},!0);return t===`one`?`${e?.count} entry`:t===`other`?`${e?.count} entries`:`entry_count`},Ee=e=>`${e?.count} 筆`,De=((e,t={})=>(t.locale??v())===`zh-TW`?Ee(e):Te(e)),Oe=e=>`${e?.name} is larger than 20 MB.`,ke=e=>`${e?.name} 超過 20 MB。`,Ae=((e,t={})=>(t.locale??v())===`zh-TW`?ke(e):Oe(e)),je=((e={},t={})=>(t.locale??v())===`zh-TW`?`做完再送`:`After this`),Me=((e={},t={})=>(t.locale??v())===`zh-TW`?`資料`:`Info`),Ne=((e={},t={})=>(t.locale??v())===`zh-TW`?`載入中…`:`Loading…`),Pe=((e={},t={})=>(t.locale??v())===`zh-TW`?`這個工作區不在網中。`:`This workspace is not part of the net.`),Fe=((e={},t={})=>(t.locale??v())===`zh-TW`?`訊息`:`Message`),Ie=e=>`exit ${e?.code}`,Le=e=>`結束碼 ${e?.code}`,Re=((e,t={})=>(t.locale??v())===`zh-TW`?Le(e):Ie(e)),ze=e=>`${e?.count} lines`,Be=e=>`${e?.count} 行`,Ve=((e,t={})=>(t.locale??v())===`zh-TW`?Be(e):ze(e)),He=((e={},t={})=>(t.locale??v())===`zh-TW`?`完成`:`finished`),Ue=((e={},t={})=>(t.locale??v())===`zh-TW`?`出錯`:`failed`),We=((e={},t={})=>(t.locale??v())===`zh-TW`?`執行中`:`running`),Ge=((e={},t={})=>(t.locale??v())===`zh-TW`?`太久沒輸出,已停止`:`no output, stopped`),Ke=((e={},t={})=>(t.locale??v())===`zh-TW`?`已停止`:`stopped`),qe=e=>`${e?.count} failed`,Je=e=>`${e?.count} 個出錯`,Ye=((e,t={})=>(t.locale??v())===`zh-TW`?Je(e):qe(e)),Xe=e=>`${e?.count} running`,Ze=e=>`${e?.count} 個執行中`,Qe=((e,t={})=>(t.locale??v())===`zh-TW`?Ze(e):Xe(e)),$e=((e={},t={})=>(t.locale??v())===`zh-TW`?`Monitor`:`Monitors`),et=((e={},t={})=>(t.locale??v())===`zh-TW`?`新的 session`:`the new session`),tt=((e={},t={})=>(t.locale??v())===`zh-TW`?`無頻道`:`no channel`),nt=((e={},t={})=>(t.locale??v())===`zh-TW`?`不在網中`:`not in the net`),rt=((e={},t={})=>(t.locale??v())===`zh-TW`?`已不再即時;紀錄在十分鐘內仍可閱讀。`:`No longer live; its history stays readable for ten minutes.`),it=((e={},t={})=>(t.locale??v())===`zh-TW`?`不在網中(可能已在十分鐘前結束)。`:`Not in the net (it may have ended more than ten minutes ago).`),at=((e={},t={})=>(t.locale??v())===`zh-TW`?`不在終端機畫面上`:`off screen in the terminal`),ot=e=>`${e?.reason} · off screen`,st=e=>`${e?.reason} · 不在畫面上`,ct=((e,t={})=>(t.locale??v())===`zh-TW`?st(e):ot(e)),lt=((e={},t={})=>(t.locale??v())===`zh-TW`?`在新分頁開啟`:`Open in a new tab`),ut=((e={},t={})=>(t.locale??v())===`zh-TW`?`正在開啟頻道…`:`Opening the channel…`),dt=((e={},t={})=>(t.locale??v())===`zh-TW`?`未編入的 pi 窗格`:`unaligned pi panes`),ft=e=>`Message ${e?.name}`,pt=e=>`傳訊息給 ${e?.name}`,mt=((e,t={})=>(t.locale??v())===`zh-TW`?pt(e):ft(e)),ht=((e={},t={})=>(t.locale??v())===`zh-TW`?`排隊中・做完再送`:`Queued · follow-up`),gt=((e={},t={})=>(t.locale??v())===`zh-TW`?`排隊中・插話`:`Queued · steer`),_t=((e={},t={})=>(t.locale??v())===`zh-TW`?`重新載入`:`Reload`),vt=((e={},t={})=>(t.locale??v())===`zh-TW`?`送出`:`Send`),yt=e=>`Send ${e?.command}`,bt=e=>`送出 ${e?.command}`,xt=((e,t={})=>(t.locale??v())===`zh-TW`?bt(e):yt(e)),St=((e={},t={})=>(t.locale??v())===`zh-TW`?`已照原文送出;你的修改留在這裡,尚未送出。`:`Sent as it was; your edits stayed here, unsent.`),Ct=e=>`${e?.display}, shown by ${e?.unit}`,wt=e=>`${e?.display},由 ${e?.unit} 顯示`,Tt=((e,t={})=>(t.locale??v())===`zh-TW`?wt(e):Ct(e)),Et=((e={},t={})=>(t.locale??v())===`zh-TW`?`基地`:`base`),Dt=((e={},t={})=>(t.locale??v())===`zh-TW`?`上下文`:`context`),Ot=((e={},t={})=>(t.locale??v())===`zh-TW`?`目錄`:`directory`),kt=((e={},t={})=>(t.locale??v())===`zh-TW`?`啟動者`:`launcher`),At=((e={},t={})=>(t.locale??v())===`zh-TW`?`模型`:`model`),jt=((e={},t={})=>(t.locale??v())===`zh-TW`?`小隊`:`squad`),Mt=((e={},t={})=>(t.locale??v())===`zh-TW`?`無法讀取`:`unreadable`),Nt=e=>`squad ${e?.label}`,Pt=e=>`小隊 ${e?.label}`,I=((e,t={})=>(t.locale??v())===`zh-TW`?Pt(e):Nt(e)),Ft=((e={},t={})=>(t.locale??v())===`zh-TW`?`小隊`:`Squads`),It=((e={},t={})=>(t.locale??v())===`zh-TW`?`停止`:`Stop`),Lt=((e={},t={})=>(t.locale??v())===`zh-TW`?`要停止目前的任務嗎?佇列中的訊息會退回它的終端機編輯器。`:`Stop the current task? Queued messages go back to its terminal editor.`),Rt=((e={},t={})=>(t.locale??v())===`zh-TW`?`現在:`:`Now:`),zt=((e={},t={})=>(t.locale??v())===`zh-TW`?`已完成`:`done`),Bt=((e={},t={})=>(t.locale??v())===`zh-TW`?`未完成`:`not done`),Vt=((e={},t={})=>(t.locale??v())===`zh-TW`?`終端機`:`Terminal`),Ht=e=>`Todos ${e?.done}/${e?.total}`,Ut=e=>`待辦 ${e?.done}/${e?.total}`,Wt=((e,t={})=>(t.locale??v())===`zh-TW`?Ut(e):Ht(e)),Gt=((e={},t={})=>(t.locale??v())===`zh-TW`?`全部完成`:`All done`),Kt=e=>`${e?.count} tokens`,qt=e=>`${e?.count} tokens`,Jt=((e,t={})=>(t.locale??v())===`zh-TW`?qt(e):Kt(e)),Yt=((e={},t={})=>(t.locale??v())===`zh-TW`?`文字超過 16 KB,請縮短。`:`The text is longer than 16 KB; shorten it.`),Xt=((e={},t={})=>(t.locale??v())===`zh-TW`?`下屬`:`Under this tower`),Zt=((e={},t={})=>(t.locale??v())===`zh-TW`?`單位檔案`:`unit dossier`),Qt=((e={},t={})=>(t.locale??v())===`zh-TW`?`單位`:`Units`),L=((e={},t={})=>(t.locale??v())===`zh-TW`?`未確認。再次送出前請先查看終端機。`:`Not confirmed. Check the terminal before sending again.`),$t=((e={},t={})=>(t.locale??v())===`zh-TW`?`上傳中…`:`Uploading…`),en=((e={},t={})=>(t.locale??v())===`zh-TW`?`等待網的資料…`:`Waiting for the net…`),tn=((e={},t={})=>(t.locale??v())===`zh-TW`?`原文已送到 session;這裡是你編輯過、尚未送出的副本。`:`The original already went to the session; what is here is your edited copy, unsent.`),R=(e,t,n)=>({tag:e,kids:t,attrs:n}),nn=/^(?:https?:\/\/|mailto:)[^\s\u0000-\u001f]+$/i,rn=(e,t)=>R(`a`,t,{href:e,rel:`noopener noreferrer`,target:`_blank`}),an=/(`+)([^`]|[^`][^]{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 z(e){let t=[],n=0;for(let r of e.matchAll(an))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(R(`em`,z(r[5]??r[6]))):r[7]===void 0?t.push(rn(r[9],[r[9]])):t.push(nn.test(r[8])?rn(r[8],z(r[7])):r[0]):t.push(R(`del`,z(r[4]))):t.push(R(`strong`,z(r[3]))):t.push(R(`code`,[r[2]]));return n<e.length&&t.push(e.slice(n)),t}var B=e=>e.search(/\S/),V=/^(\s*)([-*+]|\d+[.)])\s+(.*)$/,on=/^\s*([-*_])(\s*\1){2,}\s*$/,sn=/^\s*\|?\s*:?-+:?\s*(\|\s*:?-+:?\s*)*\|?\s*$/,cn=e=>e.trim().replace(/^\|/,``).replace(/\|$/,``).split(`|`).map(e=>e.trim()),ln=(e,t)=>/^\s*(`{3,}|~{3,}|#{1,6}\s|>)/.test(e)||on.test(e)||V.test(e)||e.includes(`|`)&&t!==void 0&&sn.test(t)&&t.includes(`-`);function H(e,t=0,n=e.replace(/\r\n?/g,`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-BbX4ZR_L.css"])))=>i.map(i=>d[i]);
2
+ import{r as e,t}from"./post-UHMNmNgA.js";import{n,r,t as i}from"./ask-DUfwZG_H.js";import{t as a}from"./registry-Bx4Ukv2M.js";import{n as o,t as s}from"./unit_count-C7YCZESd.js";import{A as c,B as l,D as u,E as d,F as f,I as p,L as m,N as h,O as g,R as _,V as v,_ as y,a as b,c as x,d as S,f as C,g as w,h as T,i as E,j as ee,k as te,l as D,m as O,o as k,p as A,r as j,t as M,v as N,x as P,y as F,z as ne}from"./index-Cb_IMdLG.js";var re=((e={},t={})=>(t.locale??v())===`zh-TW`?`附加檔案`:`Attach files`),ie=((e={},t={})=>(t.locale??v())===`zh-TW`?`返回`:`Back`),ae=e=>`This is a ${e?.agent} session. It is in the net, but this page cannot type into it or show its log: use its own terminal.`,oe=e=>`這是 ${e?.agent} 工作階段。它在 net 裡,但這個頁面無法對它輸入,也看不到它的紀錄,請到它自己的終端機操作。`,se=((e,t={})=>(t.locale??v())===`zh-TW`?oe(e):ae(e)),ce=((e={},t={})=>(t.locale??v())===`zh-TW`?`它在等待對話框:請在上方或它的終端機中回答。`:`It waits on a dialog: answer it above, or in its terminal.`),le=((e={},t={})=>(t.locale??v())===`zh-TW`?`它在等待對話框;請在它的終端機中回答。`:`It waits on a dialog; answer it in its terminal.`),ue=((e={},t={})=>(t.locale??v())===`zh-TW`?`這個 session 已不再即時;紀錄仍可閱讀。`:`This session is no longer live; its history stays readable.`),de=((e={},t={})=>(t.locale??v())===`zh-TW`?`這個單位沒有即時的 pi 窗格,無處可輸入。`:`No live pi pane backs this unit, so there is nothing to type into.`),fe=((e={},t={})=>(t.locale??v())===`zh-TW`?`串流中斷;要等它恢復才能送出。`:`The stream is down; sending waits for it to come back.`),pe=((e={},t={})=>(t.locale??v())===`zh-TW`?`頻道關閉`:`channel closed`),me=((e={},t={})=>(t.locale??v())===`zh-TW`?`頻道開啟`:`channel open`),he=((e={},t={})=>(t.locale??v())===`zh-TW`?`指令`:`Commands`),ge=((e={},t={})=>(t.locale??v())===`zh-TW`?`通訊`:`comms`),_e=((e={},t={})=>(t.locale??v())===`zh-TW`?`已派出`:`Dispatched`),ve=((e={},t={})=>(t.locale??v())===`zh-TW`?`無法取得:已不在它的 session 中開啟。`:`Unavailable: no longer open in its session.`),ye=((e={},t={})=>(t.locale??v())===`zh-TW`?`已不在清單中:已在它的 session 中關閉,或 session 已結束。`:`No longer listed: closed in its session, or the session ended.`),be=((e={},t={})=>(t.locale??v())===`zh-TW`?`已更新:此區塊顯示時會載入新版本。`:`Updated: the new version loads when this tile shows.`),xe=((e={},t={})=>(t.locale??v())===`zh-TW`?`超過轉送上限:請在終端機中閱讀。`:`More than the relay carries: read them in the terminal.`),Se=e=>`${e?.command} ends this session or switches its pane to another one.`,Ce=e=>`${e?.command} 會結束這個 session,或把它的窗格切換到別的 session。`,we=((e,t={})=>(t.locale??v())===`zh-TW`?Ce(e):Se(e)),Te=e=>{let t=a(`en`,e?.count,{},!0);return t===`one`?`${e?.count} entry`:t===`other`?`${e?.count} entries`:`entry_count`},Ee=e=>`${e?.count} 筆`,De=((e,t={})=>(t.locale??v())===`zh-TW`?Ee(e):Te(e)),Oe=e=>`${e?.name} is larger than 20 MB.`,ke=e=>`${e?.name} 超過 20 MB。`,Ae=((e,t={})=>(t.locale??v())===`zh-TW`?ke(e):Oe(e)),je=((e={},t={})=>(t.locale??v())===`zh-TW`?`做完再送`:`After this`),Me=((e={},t={})=>(t.locale??v())===`zh-TW`?`資料`:`Info`),Ne=((e={},t={})=>(t.locale??v())===`zh-TW`?`載入中…`:`Loading…`),Pe=((e={},t={})=>(t.locale??v())===`zh-TW`?`這個工作區不在網中。`:`This workspace is not part of the net.`),Fe=((e={},t={})=>(t.locale??v())===`zh-TW`?`訊息`:`Message`),Ie=e=>`exit ${e?.code}`,Le=e=>`結束碼 ${e?.code}`,Re=((e,t={})=>(t.locale??v())===`zh-TW`?Le(e):Ie(e)),ze=e=>`${e?.count} lines`,Be=e=>`${e?.count} 行`,Ve=((e,t={})=>(t.locale??v())===`zh-TW`?Be(e):ze(e)),He=((e={},t={})=>(t.locale??v())===`zh-TW`?`完成`:`finished`),Ue=((e={},t={})=>(t.locale??v())===`zh-TW`?`出錯`:`failed`),We=((e={},t={})=>(t.locale??v())===`zh-TW`?`執行中`:`running`),Ge=((e={},t={})=>(t.locale??v())===`zh-TW`?`太久沒輸出,已停止`:`no output, stopped`),Ke=((e={},t={})=>(t.locale??v())===`zh-TW`?`已停止`:`stopped`),qe=e=>`${e?.count} failed`,Je=e=>`${e?.count} 個出錯`,Ye=((e,t={})=>(t.locale??v())===`zh-TW`?Je(e):qe(e)),Xe=e=>`${e?.count} running`,Ze=e=>`${e?.count} 個執行中`,Qe=((e,t={})=>(t.locale??v())===`zh-TW`?Ze(e):Xe(e)),$e=((e={},t={})=>(t.locale??v())===`zh-TW`?`Monitor`:`Monitors`),et=((e={},t={})=>(t.locale??v())===`zh-TW`?`新的 session`:`the new session`),tt=((e={},t={})=>(t.locale??v())===`zh-TW`?`無頻道`:`no channel`),nt=((e={},t={})=>(t.locale??v())===`zh-TW`?`不在網中`:`not in the net`),rt=((e={},t={})=>(t.locale??v())===`zh-TW`?`已不再即時;紀錄在十分鐘內仍可閱讀。`:`No longer live; its history stays readable for ten minutes.`),it=((e={},t={})=>(t.locale??v())===`zh-TW`?`不在網中(可能已在十分鐘前結束)。`:`Not in the net (it may have ended more than ten minutes ago).`),at=((e={},t={})=>(t.locale??v())===`zh-TW`?`不在終端機畫面上`:`off screen in the terminal`),ot=e=>`${e?.reason} · off screen`,st=e=>`${e?.reason} · 不在畫面上`,ct=((e,t={})=>(t.locale??v())===`zh-TW`?st(e):ot(e)),lt=((e={},t={})=>(t.locale??v())===`zh-TW`?`在新分頁開啟`:`Open in a new tab`),ut=((e={},t={})=>(t.locale??v())===`zh-TW`?`正在開啟頻道…`:`Opening the channel…`),dt=((e={},t={})=>(t.locale??v())===`zh-TW`?`未編入的 pi 窗格`:`unaligned pi panes`),ft=e=>`Message ${e?.name}`,pt=e=>`傳訊息給 ${e?.name}`,mt=((e,t={})=>(t.locale??v())===`zh-TW`?pt(e):ft(e)),ht=((e={},t={})=>(t.locale??v())===`zh-TW`?`排隊中・做完再送`:`Queued · follow-up`),gt=((e={},t={})=>(t.locale??v())===`zh-TW`?`排隊中・插話`:`Queued · steer`),_t=((e={},t={})=>(t.locale??v())===`zh-TW`?`重新載入`:`Reload`),vt=((e={},t={})=>(t.locale??v())===`zh-TW`?`送出`:`Send`),yt=e=>`Send ${e?.command}`,bt=e=>`送出 ${e?.command}`,xt=((e,t={})=>(t.locale??v())===`zh-TW`?bt(e):yt(e)),St=((e={},t={})=>(t.locale??v())===`zh-TW`?`已照原文送出;你的修改留在這裡,尚未送出。`:`Sent as it was; your edits stayed here, unsent.`),Ct=e=>`${e?.display}, shown by ${e?.unit}`,wt=e=>`${e?.display},由 ${e?.unit} 顯示`,Tt=((e,t={})=>(t.locale??v())===`zh-TW`?wt(e):Ct(e)),Et=((e={},t={})=>(t.locale??v())===`zh-TW`?`基地`:`base`),Dt=((e={},t={})=>(t.locale??v())===`zh-TW`?`上下文`:`context`),Ot=((e={},t={})=>(t.locale??v())===`zh-TW`?`目錄`:`directory`),kt=((e={},t={})=>(t.locale??v())===`zh-TW`?`啟動者`:`launcher`),At=((e={},t={})=>(t.locale??v())===`zh-TW`?`模型`:`model`),jt=((e={},t={})=>(t.locale??v())===`zh-TW`?`小隊`:`squad`),Mt=((e={},t={})=>(t.locale??v())===`zh-TW`?`無法讀取`:`unreadable`),Nt=e=>`squad ${e?.label}`,Pt=e=>`小隊 ${e?.label}`,I=((e,t={})=>(t.locale??v())===`zh-TW`?Pt(e):Nt(e)),Ft=((e={},t={})=>(t.locale??v())===`zh-TW`?`小隊`:`Squads`),It=((e={},t={})=>(t.locale??v())===`zh-TW`?`停止`:`Stop`),Lt=((e={},t={})=>(t.locale??v())===`zh-TW`?`要停止目前的任務嗎?佇列中的訊息會退回它的終端機編輯器。`:`Stop the current task? Queued messages go back to its terminal editor.`),Rt=((e={},t={})=>(t.locale??v())===`zh-TW`?`現在:`:`Now:`),zt=((e={},t={})=>(t.locale??v())===`zh-TW`?`已完成`:`done`),Bt=((e={},t={})=>(t.locale??v())===`zh-TW`?`未完成`:`not done`),Vt=((e={},t={})=>(t.locale??v())===`zh-TW`?`終端機`:`Terminal`),Ht=e=>`Todos ${e?.done}/${e?.total}`,Ut=e=>`待辦 ${e?.done}/${e?.total}`,Wt=((e,t={})=>(t.locale??v())===`zh-TW`?Ut(e):Ht(e)),Gt=((e={},t={})=>(t.locale??v())===`zh-TW`?`全部完成`:`All done`),Kt=e=>`${e?.count} tokens`,qt=e=>`${e?.count} tokens`,Jt=((e,t={})=>(t.locale??v())===`zh-TW`?qt(e):Kt(e)),Yt=((e={},t={})=>(t.locale??v())===`zh-TW`?`文字超過 16 KB,請縮短。`:`The text is longer than 16 KB; shorten it.`),Xt=((e={},t={})=>(t.locale??v())===`zh-TW`?`下屬`:`Under this tower`),Zt=((e={},t={})=>(t.locale??v())===`zh-TW`?`單位檔案`:`unit dossier`),Qt=((e={},t={})=>(t.locale??v())===`zh-TW`?`單位`:`Units`),L=((e={},t={})=>(t.locale??v())===`zh-TW`?`未確認。再次送出前請先查看終端機。`:`Not confirmed. Check the terminal before sending again.`),$t=((e={},t={})=>(t.locale??v())===`zh-TW`?`上傳中…`:`Uploading…`),en=((e={},t={})=>(t.locale??v())===`zh-TW`?`等待網的資料…`:`Waiting for the net…`),tn=((e={},t={})=>(t.locale??v())===`zh-TW`?`原文已送到 session;這裡是你編輯過、尚未送出的副本。`:`The original already went to the session; what is here is your edited copy, unsent.`),R=(e,t,n)=>({tag:e,kids:t,attrs:n}),nn=/^(?:https?:\/\/|mailto:)[^\s\u0000-\u001f]+$/i,rn=(e,t)=>R(`a`,t,{href:e,rel:`noopener noreferrer`,target:`_blank`}),an=/(`+)([^`]|[^`][^]{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 z(e){let t=[],n=0;for(let r of e.matchAll(an))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(R(`em`,z(r[5]??r[6]))):r[7]===void 0?t.push(rn(r[9],[r[9]])):t.push(nn.test(r[8])?rn(r[8],z(r[7])):r[0]):t.push(R(`del`,z(r[4]))):t.push(R(`strong`,z(r[3]))):t.push(R(`code`,[r[2]]));return n<e.length&&t.push(e.slice(n)),t}var B=e=>e.search(/\S/),V=/^(\s*)([-*+]|\d+[.)])\s+(.*)$/,on=/^\s*([-*_])(\s*\1){2,}\s*$/,sn=/^\s*\|?\s*:?-+:?\s*(\|\s*:?-+:?\s*)*\|?\s*$/,cn=e=>e.trim().replace(/^\|/,``).replace(/\|$/,``).split(`|`).map(e=>e.trim()),ln=(e,t)=>/^\s*(`{3,}|~{3,}|#{1,6}\s|>)/.test(e)||on.test(e)||V.test(e)||e.includes(`|`)&&t!==void 0&&sn.test(t)&&t.includes(`-`);function H(e,t=0,n=e.replace(/\r\n?/g,`
3
3
  `).split(`
4
4
  `),r=n.map(B)){if(t>=16)return[R(`p`,[n.join(`
5
5
  `)])];let i=[];for(let e=0;e<n.length;){let a=n[e],o=n[e+1],s=a.match(/^\s*(`{3,}|~{3,})\s*([\w+-]*)/),c=a.match(/^\s*(#{1,6})\s+(.*?)\s*#*\s*$/),l=a.match(V);if(r[e]<0)e++;else if(s){let t=[];for(e++;e<n.length&&!n[e].trim().startsWith(s[1]);e++)t.push(n[e]);e++,i.push(R(`pre`,[R(`code`,[t.join(`
6
6
  `)],s[2]?{"data-lang":s[2]}:void 0)]))}else if(c)i.push(R(`h${c[1].length}`,z(c[2]))),e++;else if(on.test(a))i.push(R(`hr`,[])),e++;else if(/^\s*>/.test(a)){let r=[];for(;e<n.length&&/^\s*>/.test(n[e]);e++)r.push(n[e].replace(/^\s*> ?/,``));i.push(R(`blockquote`,H(``,t+1,r,r.map(B))))}else if(a.includes(`|`)&&o!==void 0&&sn.test(o)&&o.includes(`-`)){let t=[];for(e+=2;e<n.length&&n[e].trim()&&n[e].includes(`|`);e++)t.push(cn(n[e]));i.push(R(`table`,[R(`thead`,[R(`tr`,cn(a).map(e=>R(`th`,z(e))))]),R(`tbody`,t.map(e=>R(`tr`,e.map(e=>R(`td`,z(e))))))]))}else if(l){let a=l[1].length,o=[],s=a+2;for(;e<n.length;){let i=n[e].match(V);if(!i||i[1].length!==a||/\d/.test(i[2])!==/\d/.test(l[2]))break;let c=[i[3]],u=i[3].match(/^\[([ xX])\]\s+(.*)$/);u&&(c[0]=u[2]);let d=[B(c[0])];for(e++;e<n.length&&r[e]>a;e++){let t=n[e],i=0;for(;i<s&&t.charCodeAt(i)===32;)i++;c.push(i?t.slice(i):t),d.push(r[e]-i)}let f=H(``,t+1,c,d),p=f[0],m=u?.[1]!==` `;u&&(typeof p==`object`&&p.tag===`p`?p.kids:f).unshift(R(`i`,m?[`✓`]:[],{class:`check`,"data-done":String(m),"aria-label":m?zt():Bt()})),o.push(R(`li`,f,u?{class:`task`}:void 0)),!n[e]?.trim()&&n[e+1]?.match(V)?.[1]?.length===a&&e++}i.push(R(/\d/.test(l[2])?`ol`:`ul`,o))}else{let t=[a];for(e++;e<n.length&&n[e].trim()&&!ln(n[e],n[e+1]);e++)t.push(n[e]);i.push(R(`p`,z(t.join(`
7
- `))))}}return i}function un(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 dn=`allow-forms allow-popups allow-popups-to-escape-sandbox`,fn={},U=new Map;function pn(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 mn=(e,t,n)=>e?.find(e=>pn(e.display,t)===pn(n,t));function hn(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 W=(e,t,n=``)=>(e.state.dataset.tone=n,e.state.textContent=t),gn=(e,t)=>(e.failed=!0,W(e,t,`error`)),_n=e=>fn.src?.(e)??`doc/${encodeURIComponent(e)}/`;function G(e){if([e.loaded,e.failed]=[e.card.revision,!1],W(e,``),e.frame)return void(e.frame.src=_n(e.card.cap));let t=e.card.cap,r=/\.(md|markdown)$/i.test(e.card.display),i=++e.seq;(fn.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(r?F(`div`,{class:`md`},un(H(t.text))):F(`pre`,{class:`doc-pre`},t.text)):gn(e,ve())),()=>e.seq!==i||gn(e,n()))}function K(e,t){let n=U.get(t.cap);if(n)return n.tile;let r=t.display.split(`/`).pop()||t.display,i=t.kind===`html`?F(`iframe`,{class:`doc-frame`,sandbox:dn,referrerpolicy:`no-referrer`,title:Tt({display:t.display,unit:e})}):void 0,a=F(`button`,{type:`button`,class:`cmp-link`},_t()),o=i&&F(`a`,{class:`cmp-link`,href:_n(t.cap),target:`_blank`,rel:`noopener noreferrer`},lt()),s=i??F(`div`,{class:`doc-text`},F(`p`,{class:`chat-empty`},Ne())),c=F(`span`,{class:`term-state`,role:`status`}),l=F(`em`,{class:`doc-off`},at()),u=F(`div`,{class:`doc-tile`},F(`div`,{class:`term-bar doc-bar`},F(`span`,{class:`doc-why`},t.reason),l,c,F(`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)&&G(p))),f={id:`doc:${t.cap}`,title:`${r} · ${e}`,icon:`i-doc`,body:()=>u,closed:()=>(U.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&&G(p),l.hidden=t.onScreen,d.observe(u),G(p),U.set(t.cap,p),f}function vn(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.tower.subs]:[],...[...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 hn(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);yn(i)}function yn(e){for(let t of U.values()){let n=e.get(t.card.cap);if(!n){t.gone||W(t,ye(),`error`),t.gone=!0;continue}let r=t.gone&&(W(t,``),t.failed);[t.card,t.gone,t.off.hidden]=[n,!1,n.onScreen],(n.revision!==t.loaded||r)&&(t.shown?G(t):n.revision!==t.loaded&&W(t,be()))}}function bn(e,t,n,r){e.hidden=!t?.length&&!n,e.querySelector(`.d-doc-list`).replaceChildren(...(t??[]).map(e=>{let t=F(`button`,{type:`button`,class:`d-doc`,title:e.reason},F(`b`,null,e.display),F(`small`,null,e.onScreen?e.reason:ct({reason:e.reason})));return t.onclick=()=>r(e),t})),e.querySelector(`.d-docs-cut`).hidden=!n}var q=e=>e.route.view===`map`?``:e.route.ws;function J(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:n.tower.subs},base:n};for(let[e,r]of[...n.tabs.map(e=>[e.label,e.units]),[void 0,n.outside],[void 0,n.tower?.subs??[]]])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 xn=(e,t)=>(t?t!==`live`:!e)||!(!e?.ended||e.control);function Sn(e){if(e.route.view!==`session`)return;let t=e.route.key,n=J(e.net,t),r=n?.u;return{key:t,hit:n,u:r,mk:r?.mark??`unknown`,state:e.info?.state,name:r?.name??e.info?.name??t}}var Y=()=>S(`<a class="token">${E}<span class="name"></span><span class="line"><em class="role"></em><em class="agent"></em><span class="note"></span></span></a>`);function X(e,t,n){b(e,t.key?{view:`session`,ws:n,key:t.key}:void 0),e.toggleAttribute(`hidden`,!1),e.toggleAttribute(`data-alert`,!!t.key&&y(t.mark)),C(e,t.mark),D(e.querySelector(`.plate`),t.role,t.mark,t.docs),w(e,`.name`,t.name),w(e,`.role`,A(t.role)),w(e,`.agent`,t.agent?M[t.agent]:``),O(e,`.note`,t.note,t.mark)}var Z=(e,t)=>{let n=document.createElement(`a`);return b(n,e),n.textContent=t,n},Cn=()=>`<div class="dossier-in"><span class="tag">${Zt()}</span><button class="x d-x" type="button" aria-label="${_()}">×</button><div class="portrait">${E}</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><div class="d-docs" hidden><h4>${p()}</h4><div class="d-doc-list"></div><p class="d-docs-cut" hidden>${xe()}</p></div><div class="d-drones" hidden><h4>${_e()}</h4><div class="formation"></div></div><div class="d-squads" hidden><h4>${Xt()}</h4><div class="d-squad-list"></div></div></div>`,wn=e=>e.classList.add(`drone`);function Tn(e,t,{openTile:n,fullScreen:r}){return function({key:i,hit:a,u:o,mk:s,state:c,name:l}){e.firstElementChild||(e.append(S(Cn())),e.querySelector(`.d-x`).onclick=()=>r(!1));let u=e.firstElementChild,{net:d,info:f,model:p,ctx:m}=t,h=q(t);C(u,s),D(u.querySelector(`.plate`),o?.role??f?.role??`member`,s),w(u,`h3`,l),w(u,`.role`,A(o?.role??f?.role??`session`)),O(u,`.state`,o?.note,s,o?void 0:nt());let g=u.querySelector(`.d-note`);g.hidden=c!==`recent`&&c!==`unknown`,g.replaceChildren(c===`unknown`?it():rt()),f?.successor&&g.append(` ${Rt()} `,Z({view:`session`,ws:h,key:f.successor},J(d,f.successor)?.u.name??et()));let _=[[At(),p],[Dt(),m?Jt({count:m.toLocaleString()}):void 0],[Ot(),f?.header?.cwd],[Et(),a&&Z({view:`workspace`,ws:a.base.id},a.base.label)],[jt(),a?.squad],[kt(),a?.launcher&&Z({view:`session`,ws:a.base.id,key:a.launcher.key},a.launcher.name)],[Mt(),f?.unreadable?De({count:f.unreadable}):void 0]];u.querySelector(`.specs`).replaceChildren(..._.filter(([,e])=>e).map(([e,t])=>{let n=S(`<div><dt></dt><dd></dd></div>`);return n.firstElementChild.textContent=e,n.lastElementChild.append(t),n})),bn(u.querySelector(`.d-docs`),o?.docs,o?.docsCut,e=>(r(!1),n(K(l,e))));let v=u.querySelector(`.d-drones`);v.hidden=!o?.subs.length,T(v.querySelector(`.formation`),(o?.subs??[]).map(e=>({...e,id:e.key})),Y,(e,t)=>(wn(e),X(e,t,h)));let y=u.querySelector(`.d-squads`),b=o?.role===`tower`?a?.base:void 0;y.hidden=!b?.tabs.length,T(y.querySelector(`.d-squad-list`),b?.tabs??[],()=>S(`<div class="d-squad"><small></small><div class="formation"></div></div>`),(e,t)=>(w(e,`small`,I({label:t.label})),T(e.querySelector(`.formation`),t.units.flatMap(e=>[e,...e.subs]).map(e=>({...e,id:e.key})),Y,(e,t)=>(wn(e),X(e,t,b.id)))))}}function En(e){let t=(e,t,n)=>{let r=document.createElement(e);return r.textContent=t,n&&b(r,n),r},n=document.getElementById(`crumbs`),{route:r,net:i,info:a}=e;if(r.view===`map`)return n.replaceChildren(t(`b`,`Straw Net`),t(`span`,l()));let o=i?.bases.find(e=>e.id===r.ws)?.label??r.ws,s=r.view===`session`?J(i,r.key)?.u.name??a?.name??r.key:``,c=[];for(let e=r.view===`session`?J(i,r.key):void 0,t=0;e?.launcher&&t<8;e=J(i,e.launcher.key),t++)c.unshift(e.launcher);let u=[t(`a`,`Straw Net`,{view:`map`}),r.view===`workspace`?t(`b`,o):t(`a`,o,{view:`workspace`,ws:r.ws}),...c.map(e=>t(`a`,e.name,{view:`session`,ws:r.ws,key:e.key})),...s?[t(`b`,s)]:[]];u.slice(1,-2).forEach(e=>e.classList.add(`mid`));let d=u.length>3?[Object.assign(t(`span`,`…`),{className:`crumb-more`,role:`button`,tabIndex:0,onclick:()=>n.classList.toggle(`open`)})]:[];n.classList.remove(`open`),n.replaceChildren(u[0],...d,...u.slice(1))}function Dn(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=document.getElementById({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`),P(a,i),setTimeout(()=>a.classList.remove(i),700)}}function On(e,t){let n=e.querySelector(`.queue-list`);if(!n)return;n.hidden=!t?.length;let r=e=>Object.assign(document.createElement(`b`),{textContent:e.as===`steer`?gt():ht()});n.replaceChildren(...(t??[]).map(e=>{let t=document.createElement(`p`);return t.append(r(e),document.createTextNode(e.text)),t}))}function kn(e,t){let n=e.querySelector(`.todos`);if(!n||(n.hidden=!t?.length,!t?.length))return;let r=t.filter(e=>e.status===`completed`).length,i=t.find(e=>e.status===`in_progress`);w(n,`summary b`,Wt({done:r,total:t.length})),w(n,`summary span`,i?i.activeForm??i.subject:r===t.length?Gt():``),n.querySelector(`ol`).replaceChildren(...t.map(e=>Object.assign(document.createElement(`li`),{textContent:e.subject,className:e.status})))}function An(e,t){let n=e.querySelector(`.monitors`);if(!n||(n.hidden=!t?.length,!t?.length))return;let r=t.filter(e=>e.status===`running`),i=t.filter(e=>e.status===`error`||e.status===`stale`).length;n.dataset.failed=String(i>0),w(n,`summary b`,[$e(),r.length&&Qe({count:r.length}),i&&Ye({count:i})].filter(Boolean).join(` · `)),w(n,`summary span`,r[0]?r[0].last??r[0].what:``);let a={running:We,done:He,error:Ue,stale:Ge,stopped:Ke};n.querySelector(`ul`).replaceChildren(...t.map(e=>{let t=Object.assign(document.createElement(`li`),{className:e.status}),n=[a[e.status](),e.exit!==void 0&&Re({code:e.exit}),Ve({count:e.lines})].filter(Boolean).join(` · `);return t.append(Object.assign(document.createElement(`b`),{textContent:e.what}),Object.assign(document.createElement(`small`),{textContent:n})),e.last&&t.append(Object.assign(document.createElement(`code`),{textContent:e.last})),t}))}var jn=e=>/^\/(\S{0,64})$/.exec(e)?.[1],Mn=(e,t,n)=>(e+n+t)%t;function Nn(e,t){let n=F(`ul`,{class:`slash`,id:`slash`,role:`listbox`,"aria-label":he()}),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=F(`li`,{id:`slash-${t}`,role:`option`,"aria-selected":String(t===i)},F(`b`,null,`/${e.name}`),e.description&&F(`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=jn(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=Mn(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 Pn=16384,Fn=/^\s*\/(quit|exit|new|resume|fork|clone|import|reload)(?=\s|$)/,Q=new Map,In=e=>(n,r)=>t(`sessions/${encodeURIComponent(e)}/${n}`,r);function Ln(e,t,n){if(!e.ok)return[`error`,e.status===504?L():e.body.reason??g({status:e.status})];if(t&&!t.startsWith(n))return[`ok`,tn()]}var Rn=e=>{try{return e?.startsWith(`[`)?JSON.parse(e):e?[`error`,e]:void 0}catch{return[`error`,e]}},zn=(e,t)=>e!==``&&!e.startsWith(t)?St():``,Bn=(e,t)=>e.startsWith(t)?e.slice(t.length).replace(/^\n/,``):e;function $(e){if(!e.online)return fe();if(!e.live)return ue();if(!e.control)return e.agent?se({agent:M[e.agent]}):de();if(e.mark===`waiting`)return e.answerable?ce():le()}function Vn(t,n,i,a=t=>e(`sessions/${encodeURIComponent(n)}/upload`,t)){let o=`sb-draft:${n}`,s=matchMedia(`(pointer: coarse)`).matches,c=F(`textarea`,{rows:`1`,maxlength:String(Pn),"aria-label":Fe(),enterkeyhint:s?`enter`:`send`}),l=F(`button`,{type:`submit`,class:`cmp-send`},vt()),u=F(`button`,{type:`button`,class:`cmp-alt`},je()),d=F(`button`,{type:`button`,class:`cmp-alt cmp-stop`},It()),f=F(`input`,{type:`file`,multiple:``,hidden:``}),p=F(`button`,{type:`button`,class:`cmp-alt`,"aria-label":re()},`+`),m=F(`p`,{class:`cmp-note`,role:`status`,"aria-live":`polite`}),h=Nn(c,e=>i(`commands`,{prefix:e})),_=F(`form`,{class:`composer`},h,F(`div`,{class:`cmp-row`},p,f,c,F(`div`,{class:`cmp-acts`},l,u,d)),F(`div`,{class:`cmp-foot`},m));t.replaceChildren(_);let v={name:``,control:!1,live:!1,mark:`unknown`,online:!1},y=!1,b=!1,x=e=>{try{e()}catch{}};x(()=>c.value=sessionStorage.getItem(o)??``);let S=()=>x(()=>c.value?sessionStorage.setItem(o,c.value):sessionStorage.removeItem(o)),C=CSS.supports(`field-sizing`,`content`)?()=>{}:()=>(c.style.height=`auto`,c.style.height=`${Math.min(c.scrollHeight,220)}px`),w=(e,t=``,...n)=>(m.dataset.tone=t,m.replaceChildren(e,...n)),T=(e,t,n)=>{let r=F(`button`,{type:`button`,class:`cmp-yes`},t),i=F(`button`,{type:`button`,class:`cmp-link`},ne());b=!0,r.onclick=()=>(b=!1,n()),i.onclick=()=>(b=!1,w(``),c.focus()),w(e,`ask`,r,i),r.focus()},[E,te]=[`${o}:note`,()=>{try{return sessionStorage.getItem(o)??``}catch{return}}],D=e=>x(()=>e?sessionStorage.setItem(E,JSON.stringify(e)):sessionStorage.removeItem(E));function O(e,t,r){let a={sent:r,answer:i(e,t)};return r!==void 0&&(D([`error`,L()]),Q.set(n,a),a.answer.then(e=>{let t=te();e.ok&&t!==void 0&&x(()=>sessionStorage.setItem(o,Bn(t,r))),D(Ln(e,t,r))},()=>D([`error`,L()]))),k(a)}async function k(e,{sent:t}=e){y=!0,b=!1,j(),w(t===void 0?``:r());try{let n=await e.answer;if(!_.isConnected)return;if(!n.ok)return n.status===504||D(),w(n.body.reason??g({status:n.status}),`error`);if(t===void 0)return w(``);D();let r=zn(c.value,t);c.value=Bn(c.value,t),S(),C(),w(r,`ok`)}catch{w(L(),`error`)}finally{Q.get(n)===e&&Q.delete(n),y=!1,j()}}function A(e,t){let n=c.value,r=$(v),i=t===n;if(y||b||!n.trim())return;if(r)return w(r,`error`);if(new TextEncoder().encode(n).length>16384)return w(Yt(),`error`);let a=!i&&n.match(Fn)?.[0].trim();if(a)return T(we({command:a}),xt({command:a}),()=>A(e,n));O(`input`,{text:n,as:e,confirmed:i},n)}function j(){let e=$(v),t=v.mark===`working`;c.placeholder=e??mt({name:v.name}),c.disabled=p.disabled=!v.live,l.disabled=y||!!e||!c.value.trim(),u.hidden=d.hidden=!t||!!e,[u.disabled,d.disabled]=[l.disabled,y]}async function M(e){if(!e.length||y)return;let t=$(v);if(t)return w(t,`error`);w($t(),``);for(let t of e){if(t.size>20971520)return w(Ae({name:t.name}),`error`);let e=await a(t).catch(()=>void 0);if(!e?.ok||typeof e.body.path!=`string`)return w(e?.body.reason??ee(),`error`);let n=c.selectionStart??c.value.length,r=c.value.slice(0,n),i=c.value.slice(c.selectionEnd??n),o=`${r&&!/\s$/.test(r)?` `:``}${e.body.path}${/^\s/.test(i)?``:` `}`;c.value=r+o+i,c.selectionStart=c.selectionEnd=n+o.length}w(``),S(),C(),j(),c.focus()}p.onclick=()=>f.click(),f.onchange=()=>void M([...f.files??[]]).finally(()=>f.value=``),c.addEventListener(`paste`,e=>{let t=[...e.clipboardData?.files??[]];t.length&&(e.preventDefault(),M(t))}),_.addEventListener(`dragover`,e=>e.dataTransfer?.types.includes(`Files`)&&e.preventDefault()),_.addEventListener(`drop`,e=>{let t=[...e.dataTransfer?.files??[]];t.length&&(e.preventDefault(),M(t))}),_.addEventListener(`submit`,e=>(e.preventDefault(),A(`send`))),u.onclick=()=>A(`followUp`),d.onclick=()=>T(Lt(),It(),()=>void(y||O(`keys`,{keys:[`esc`]}))),c.addEventListener(`input`,()=>(S(),C(),j())),_.addEventListener(`keydown`,e=>{e.key===`Escape`&&!e.isComposing&&(b||e.target===c&&c.value)&&(e.preventDefault(),b&&(b=!1,w(``),c.focus()))}),c.addEventListener(`keydown`,e=>{e.isComposing||e.keyCode===229||e.key!==`Enter`||e.shiftKey||s&&!e.altKey||(e.preventDefault(),A(e.altKey?`followUp`:`send`))});let N=window.visualViewport,P=()=>[[`--vvh`,N.height],[`--vvt`,N.offsetTop]].forEach(([e,t])=>document.documentElement.style.setProperty(e,`${t}px`));return N&&(N.addEventListener(`resize`,P),N.addEventListener(`scroll`,P),P()),C(),Q.has(n)?k(Q.get(n)):x(()=>{let e=Rn(sessionStorage.getItem(E));sessionStorage.removeItem(E),e&&w(e[1],e[0])}),{box:c,update:e=>(v=e,j()),ready:()=>!$(v)}}var Hn=()=>`<div class="comms-in"><header class="comms-head"><a class="head-back" aria-label="${ie()}">‹</a><span class="logo"><svg><use href="#i-comms"/></svg></span><div class="head-id"><h2><small>${ge()}</small> <span></span></h2><p></p></div><div class="modes" role="group"><button type="button" data-mode="chat" aria-pressed="true">${ge()}</button><button type="button" data-mode="term" aria-pressed="false">${Vt()}</button></div><span class="chan link" data-state="live"><i></i><b>${me()}</b></span><button type="button" class="pair-btn head-info">${Me()}</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><details class="monitors" hidden><summary><b></b><span></span></summary><ul></ul></details><div class="ask-root"></div><div class="composer-root"></div><div class="term-root" hidden></div></div>`;function Un(e,{view:t,data:n,openTile:r,embedTerminal:a,online:o,fullScreen:s,opened:c}){let l,u,d,f=0,p,m,h=0,g=()=>setTimeout(()=>e.route.view===`session`&&(document.activeElement??document.body)===document.body&&(matchMedia(`(pointer: fine)`).matches&&u?.ready()?u.box:l?.log)?.focus({preventScroll:!0}));async function _(a){let o=++f,{mountChat:p}=await N(async()=>{let{mountChat:e}=await import(`./chat-BVp1ldFS.js`);return{mountChat:e}},__vite__mapDeps([0]),import.meta.url);if(o!==f||e.route.view!==`session`)return;t.replaceChildren(S(Hn()));let h=()=>J(e.net,a)?.u??{key:a,name:e.info?.name??a,role:e.info?.role??`member`,mark:`unknown`};l=p(t.querySelector(`.chat-root`),n(a),{who:h,link:t=>{let n=J(e.net,a)?.u.subs.find(e=>e.name===t)??e.net?.bases.flatMap(e=>[...e.tabs.flatMap(e=>e.units),...e.outside]).find(e=>e.name===t);return n&&Z({view:`session`,ws:J(e.net,n.key)?.base.id??q(e),key:n.key},t)},docFor:(t,n=mn(J(e.net,a)?.u.docs,e.info?.header?.cwd,t))=>n&&(()=>r(K(h().name,n)))});let _=n(a).post??In(a);[u,d]=[Vn(t.querySelector(`.composer-root`),a,_),i(t.querySelector(`.ask-root`),_,void 0,()=>v(`term`))],t.querySelectorAll(`.modes button`).forEach(e=>e.onclick=()=>v(e.dataset.mode)),t.querySelector(`.head-info`).onclick=()=>s(!0),m===`term`&&v(`term`),m=void 0,l.reveal(e.route.at),c(),g()}function v(n){if(e.route.view!==`session`)return;let r=e.route.key,i=t.querySelector(`.comms-in`);if(!i)return void(m=n===`term`?`term`:void 0);i.querySelectorAll(`.modes button`).forEach(e=>e.setAttribute(`aria-pressed`,String(e.dataset.mode===n)));for(let e of[`.chat-root`,`.ask-root`,`.composer-root`])i.querySelector(e).hidden=n===`term`;let o=i.querySelector(`.term-root`);if(o.hidden=n!==`term`,i.classList.toggle(`in-term`,n===`term`),p?.(),p=void 0,n!==`term`)return g();let s=++h;a(r,J(e.net,r)?.u.name??e.info?.name??r,o).then(t=>s===h&&e.route.view===`session`&&e.route.key===r?(p=t,o.querySelector(`.term-sink`)?.focus({preventScroll:!0})):t())}return{get chat(){return l},open(e){[l,u,d]=[void 0,void 0,void 0],t.replaceChildren(S(`<p class="lost">${ut()}</p>`)),_(e)},close(){f++,l=u=d=void 0,t.replaceChildren()},reveal(e){l?.reveal(e),g()},leaveMode:()=>(h++,p?.(),p=void 0),terminal(t){e.route.view===`session`&&e.route.key===t?v(`term`):m=`term`},draw({u:n,hit:r,mk:i,state:a,name:s}){t.querySelector(`.modes`)?.toggleAttribute(`hidden`,!n?.control),l?.docs();let c=t.querySelector(`.comms-head`);if(c){C(c,i),w(c,`h2 span`,n?.name??e.info?.name??``),w(c,`p`,[r?.base.label,r?.squad&&I({label:r.squad})].filter(Boolean).join(` · `));let t=c.querySelector(`.chan`),o=!xn(n,a);t.dataset.state=o?`live`:`closed`,w(t,`b`,o?me():a===`recent`||n?.ended?pe():tt()),t.title=t.querySelector(`b`).textContent??``,b(c.querySelector(`.head-back`),{view:`workspace`,ws:q(e)})}kn(t,e.info?.todos),An(t,n?.monitors),On(t,n?.queued),l?.setLive(i===`working`||i===`commanding`?`${x(n.note,i)}`:y(i)?j[i]():``,i),u?.update({name:s,control:!!n?.control,agent:n?.agent,live:!xn(n,a),mark:i,online:o(),answerable:!!n?.pending?.answer}),d?.update(n?.pending,i===`waiting`&&!!n?.control&&o())}}}var Wn=()=>S(`<div class="col"><a class="token">${E}<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>`),Gn=()=>`<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>${f()}</span><h2></h2><p></p></div><dl class="tally"><div><dt>${Ft()}</dt><dd></dd></div><div><dt>${Qt()}</dt><dd></dd></div><div data-mark="working"><dt>${d()}</dt><dd></dd></div><div data-mark="waiting"><dt>${u()}</dt><dd></dd></div></dl></header><div class="drones tower-drones"></div><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>${te()}</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>${o()}</b><small>${dt()}</small></h3><div class="formation"></div></section></div><p class="lost" hidden></p></div>`;function Kn(e,t){e.firstElementChild||e.append(S(Gn()));let{net:n,cards:r}=t,i=e.firstElementChild,a=n?.bases.find(e=>e.id===q(t)),o=i.querySelector(`.lost`);if(o.hidden=!!a,o.textContent=n?Pe():en(),i.classList.toggle(`void`,!a),!a)return;let l=i.querySelector(`.keep`);C(l,a.mark),l.classList.toggle(`head`,a.head);let u=i.querySelector(`.tower`);u.classList.toggle(`ghost`,!a.tower),C(u,a.tower?.mark??`unknown`),b(u,a.tower?{view:`session`,ws:a.id,key:a.tower.key}:void 0),u.toggleAttribute(`hidden`,!1),u.toggleAttribute(`data-alert`,!!(a.tower&&y(a.tower.mark))),w(i,`h2`,a.label),k(i.querySelector(`.spawn-btns button`),a),w(i,`.title p`,a.tower?m({state:j[a.tower.mark]()}):c()),T(i.querySelector(`.tower-drones`),a.tower?.subs??[],Y,(e,t)=>(e.classList.add(`drone`),X(e,t,a.id)));let d=[...a.tower?.subs??[],...a.tabs.flatMap(e=>e.units.flatMap(e=>[e,...e.subs]))];[a.tabs.length,d.length,d.filter(e=>e.mark===`working`).length,d.filter(e=>e.mark===`waiting`).length].forEach((e,t)=>i.querySelectorAll(`dd`)[t].textContent=String(e));let f=(e,t)=>{C(e,t.mark),X(e.querySelector(`.token`),t,a.id);let n=e.querySelector(`.say`),i=r[t.key]??``;n.hidden=!i,w(n,`p`,i),T(e.querySelector(`.drones`),t.subs,Y,(e,t)=>(e.classList.add(`drone`),X(e,t,a.id)))};T(i.querySelector(`.squads`),a.tabs,()=>S(`<section class="tab squad"><h3><i class="flag"></i><b></b><small></small><button type="button" class="tab-add"></button></h3><div class="formation"></div></section>`),(e,t)=>{w(e,`h3 b`,I({label:t.label})),k(e.querySelector(`.tab-add`),a,t.id);let n=t.units.flatMap(e=>[e,...e.subs]);w(e,`h3 small`,s({count:n.length})),C(e,[`waiting`,`error`,`working`].find(e=>n.some(t=>t.mark===e||e===`working`&&t.mark===`commanding`))??`idle`),T(e.querySelector(`.formation`),t.units,Wn,f)});let p=(e,t)=>{let n=i.querySelector(`[data-group="${e}"]`);n.hidden=!t.length,T(n.querySelector(`.formation`),t,Y,(e,t)=>X(e,t,a.id))};p(`outposts`,a.outposts.map(e=>({id:e.id,name:e.label,role:`outpost`,mark:e.mark,note:e.mark===`unknown`?h():void 0}))),p(`outside`,a.outside)}var qn=200;function Jn({data:e,restart:t,openTile:n,embedTerminal:r,online:i}){let[a,o,s]=[`ws-view`,`session-view`,`dossier`].map(e=>document.getElementById(e)),c={route:{view:`map`},cards:{}},l=[],u=!1,d=new Map,f=e=>s.classList.toggle(`full`,e),p=Tn(s,c,{openTile:n,fullScreen:f}),m=Un(c,{view:o,data:e,openTile:n,embedTerminal:r,online:i,fullScreen:f,opened:()=>(l.splice(0).forEach(h),g())});function h(e){m.chat?.apply(e);for(let t of e.items??[])t.kind===`assistant`&&([c.model,c.ctx]=[t.model??c.model,t.ctx??c.ctx])}function g(){let e=Sn(c);e&&(p(e),m.draw(e))}let _=()=>(En(c),c.route.view===`workspace`?Kn(a,c):g());return{terminal:m.terminal,locate:e=>J(c.net,e),show(e,t,n){let[r,i]=c.route.view===`session`?[c.route.key,c.route.at]:[];(e.view!==`workspace`||c.route.view!==`workspace`||e.ws!==c.route.ws)&&(c.cards={}),c.route=e,a.hidden=e.view!==`workspace`,o.hidden=s.hidden=e.view!==`session`,f(!1),(e.view!==`session`||e.key!==r)&&m.leaveMode(),e.view===`session`&&e.key!==r?([c.info,c.model,c.ctx,l,u]=[void 0,void 0,void 0,[],!1],m.open(e.key)):e.view===`session`&&e.at!==i?m.reveal(e.at):e.view!==`session`&&m.close(),_(),e!==t&&Dn(e,t,n)},net(e){c.net=e,vn(e,d,c.route.view===`session`?c.route.key:void 0,(e,t)=>n(K(e,t),!1)),c.route.view!==`map`&&_()},cards(e){c.cards={...c.cards,...e},c.route.view===`workspace`&&Kn(a,c)},history(e){if(c.route.view===`session`&&e.key===c.route.key){if(c.info={...c.info,...e,items:void 0},e.reset&&([c.model,c.ctx]=[void 0,void 0]),document.hidden)return l.length<qn?void l.push(e):void(u=!0);m.chat?h(e):l.push(e),g()}},wake(){if(u)return u=!1,l=[],t();l.splice(0).forEach(e=>m.chat&&h(e)),_()}}}export{Jn as mountFocus,H as n,un as t};
7
+ `))))}}return i}function un(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 dn=`allow-forms allow-popups allow-popups-to-escape-sandbox`,fn={},U=new Map;function pn(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 mn=(e,t,n)=>e?.find(e=>pn(e.display,t)===pn(n,t));function hn(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 W=(e,t,n=``)=>(e.state.dataset.tone=n,e.state.textContent=t),gn=(e,t)=>(e.failed=!0,W(e,t,`error`)),_n=e=>fn.src?.(e)??`doc/${encodeURIComponent(e)}/`;function G(e){if([e.loaded,e.failed]=[e.card.revision,!1],W(e,``),e.frame)return void(e.frame.src=_n(e.card.cap));let t=e.card.cap,r=/\.(md|markdown)$/i.test(e.card.display),i=++e.seq;(fn.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(r?F(`div`,{class:`md`},un(H(t.text))):F(`pre`,{class:`doc-pre`},t.text)):gn(e,ve())),()=>e.seq!==i||gn(e,n()))}function K(e,t){let n=U.get(t.cap);if(n)return n.tile;let r=t.display.split(`/`).pop()||t.display,i=t.kind===`html`?F(`iframe`,{class:`doc-frame`,sandbox:dn,referrerpolicy:`no-referrer`,title:Tt({display:t.display,unit:e})}):void 0,a=F(`button`,{type:`button`,class:`cmp-link`},_t()),o=i&&F(`a`,{class:`cmp-link`,href:_n(t.cap),target:`_blank`,rel:`noopener noreferrer`},lt()),s=i??F(`div`,{class:`doc-text`},F(`p`,{class:`chat-empty`},Ne())),c=F(`span`,{class:`term-state`,role:`status`}),l=F(`em`,{class:`doc-off`},at()),u=F(`div`,{class:`doc-tile`},F(`div`,{class:`term-bar doc-bar`},F(`span`,{class:`doc-why`},t.reason),l,c,F(`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)&&G(p))),f={id:`doc:${t.cap}`,title:`${r} · ${e}`,icon:`i-doc`,body:()=>u,closed:()=>(U.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&&G(p),l.hidden=t.onScreen,d.observe(u),G(p),U.set(t.cap,p),f}function vn(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.tower.subs]:[],...[...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 hn(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);yn(i)}function yn(e){for(let t of U.values()){let n=e.get(t.card.cap);if(!n){t.gone||W(t,ye(),`error`),t.gone=!0;continue}let r=t.gone&&(W(t,``),t.failed);[t.card,t.gone,t.off.hidden]=[n,!1,n.onScreen],(n.revision!==t.loaded||r)&&(t.shown?G(t):n.revision!==t.loaded&&W(t,be()))}}function bn(e,t,n,r){e.hidden=!t?.length&&!n,e.querySelector(`.d-doc-list`).replaceChildren(...(t??[]).map(e=>{let t=F(`button`,{type:`button`,class:`d-doc`,title:e.reason},F(`b`,null,e.display),F(`small`,null,e.onScreen?e.reason:ct({reason:e.reason})));return t.onclick=()=>r(e),t})),e.querySelector(`.d-docs-cut`).hidden=!n}var q=e=>e.route.view===`map`?``:e.route.ws;function J(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:n.tower.subs},base:n};for(let[e,r]of[...n.tabs.map(e=>[e.label,e.units]),[void 0,n.outside],[void 0,n.tower?.subs??[]]])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 xn=(e,t)=>(t?t!==`live`:!e)||!(!e?.ended||e.control);function Sn(e){if(e.route.view!==`session`)return;let t=e.route.key,n=J(e.net,t),r=n?.u;return{key:t,hit:n,u:r,mk:r?.mark??`unknown`,state:e.info?.state,name:r?.name??e.info?.name??t}}var Y=()=>S(`<a class="token">${E}<span class="name"></span><span class="line"><em class="role"></em><em class="agent"></em><span class="note"></span></span></a>`);function X(e,t,n){b(e,t.key?{view:`session`,ws:n,key:t.key}:void 0),e.toggleAttribute(`hidden`,!1),e.toggleAttribute(`data-alert`,!!t.key&&y(t.mark)),C(e,t.mark),D(e.querySelector(`.plate`),t.role,t.mark,t.docs),w(e,`.name`,t.name),w(e,`.role`,A(t.role)),w(e,`.agent`,t.agent?M[t.agent]:``),O(e,`.note`,t.note,t.mark)}var Z=(e,t)=>{let n=document.createElement(`a`);return b(n,e),n.textContent=t,n},Cn=()=>`<div class="dossier-in"><span class="tag">${Zt()}</span><button class="x d-x" type="button" aria-label="${_()}">×</button><div class="portrait">${E}</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><div class="d-docs" hidden><h4>${p()}</h4><div class="d-doc-list"></div><p class="d-docs-cut" hidden>${xe()}</p></div><div class="d-drones" hidden><h4>${_e()}</h4><div class="formation"></div></div><div class="d-squads" hidden><h4>${Xt()}</h4><div class="d-squad-list"></div></div></div>`,wn=e=>e.classList.add(`drone`);function Tn(e,t,{openTile:n,fullScreen:r}){return function({key:i,hit:a,u:o,mk:s,state:c,name:l}){e.firstElementChild||(e.append(S(Cn())),e.querySelector(`.d-x`).onclick=()=>r(!1));let u=e.firstElementChild,{net:d,info:f,model:p,ctx:m}=t,h=q(t);C(u,s),D(u.querySelector(`.plate`),o?.role??f?.role??`member`,s),w(u,`h3`,l),w(u,`.role`,A(o?.role??f?.role??`session`)),O(u,`.state`,o?.note,s,o?void 0:nt());let g=u.querySelector(`.d-note`);g.hidden=c!==`recent`&&c!==`unknown`,g.replaceChildren(c===`unknown`?it():rt()),f?.successor&&g.append(` ${Rt()} `,Z({view:`session`,ws:h,key:f.successor},J(d,f.successor)?.u.name??et()));let _=[[At(),p],[Dt(),m?Jt({count:m.toLocaleString()}):void 0],[Ot(),f?.header?.cwd],[Et(),a&&Z({view:`workspace`,ws:a.base.id},a.base.label)],[jt(),a?.squad],[kt(),a?.launcher&&Z({view:`session`,ws:a.base.id,key:a.launcher.key},a.launcher.name)],[Mt(),f?.unreadable?De({count:f.unreadable}):void 0]];u.querySelector(`.specs`).replaceChildren(..._.filter(([,e])=>e).map(([e,t])=>{let n=S(`<div><dt></dt><dd></dd></div>`);return n.firstElementChild.textContent=e,n.lastElementChild.append(t),n})),bn(u.querySelector(`.d-docs`),o?.docs,o?.docsCut,e=>(r(!1),n(K(l,e))));let v=u.querySelector(`.d-drones`);v.hidden=!o?.subs.length,T(v.querySelector(`.formation`),(o?.subs??[]).map(e=>({...e,id:e.key})),Y,(e,t)=>(wn(e),X(e,t,h)));let y=u.querySelector(`.d-squads`),b=o?.role===`tower`?a?.base:void 0;y.hidden=!b?.tabs.length,T(y.querySelector(`.d-squad-list`),b?.tabs??[],()=>S(`<div class="d-squad"><small></small><div class="formation"></div></div>`),(e,t)=>(w(e,`small`,I({label:t.label})),T(e.querySelector(`.formation`),t.units.flatMap(e=>[e,...e.subs]).map(e=>({...e,id:e.key})),Y,(e,t)=>(wn(e),X(e,t,b.id)))))}}function En(e){let t=(e,t,n)=>{let r=document.createElement(e);return r.textContent=t,n&&b(r,n),r},n=document.getElementById(`crumbs`),{route:r,net:i,info:a}=e;if(r.view===`map`)return n.replaceChildren(t(`b`,`Straw Net`),t(`span`,l()));let o=i?.bases.find(e=>e.id===r.ws)?.label??r.ws,s=r.view===`session`?J(i,r.key)?.u.name??a?.name??r.key:``,c=[];for(let e=r.view===`session`?J(i,r.key):void 0,t=0;e?.launcher&&t<8;e=J(i,e.launcher.key),t++)c.unshift(e.launcher);let u=[t(`a`,`Straw Net`,{view:`map`}),r.view===`workspace`?t(`b`,o):t(`a`,o,{view:`workspace`,ws:r.ws}),...c.map(e=>t(`a`,e.name,{view:`session`,ws:r.ws,key:e.key})),...s?[t(`b`,s)]:[]];u.slice(1,-2).forEach(e=>e.classList.add(`mid`));let d=u.length>3?[Object.assign(t(`span`,`…`),{className:`crumb-more`,role:`button`,tabIndex:0,onclick:()=>n.classList.toggle(`open`)})]:[];n.classList.remove(`open`),n.replaceChildren(u[0],...d,...u.slice(1))}function Dn(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=document.getElementById({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`),P(a,i),setTimeout(()=>a.classList.remove(i),700)}}function On(e,t){let n=e.querySelector(`.queue-list`);if(!n)return;n.hidden=!t?.length;let r=e=>Object.assign(document.createElement(`b`),{textContent:e.as===`steer`?gt():ht()});n.replaceChildren(...(t??[]).map(e=>{let t=document.createElement(`p`);return t.append(r(e),document.createTextNode(e.text)),t}))}function kn(e,t){let n=e.querySelector(`.todos`);if(!n||(n.hidden=!t?.length,!t?.length))return;let r=t.filter(e=>e.status===`completed`).length,i=t.find(e=>e.status===`in_progress`);w(n,`summary b`,Wt({done:r,total:t.length})),w(n,`summary span`,i?i.activeForm??i.subject:r===t.length?Gt():``),n.querySelector(`ol`).replaceChildren(...t.map(e=>Object.assign(document.createElement(`li`),{textContent:e.subject,className:e.status})))}function An(e,t){let n=e.querySelector(`.monitors`);if(!n||(n.hidden=!t?.length,!t?.length))return;let r=t.filter(e=>e.status===`running`),i=t.filter(e=>e.status===`error`||e.status===`stale`).length;n.dataset.failed=String(i>0),w(n,`summary b`,[$e(),r.length&&Qe({count:r.length}),i&&Ye({count:i})].filter(Boolean).join(` · `)),w(n,`summary span`,r[0]?r[0].last??r[0].what:``);let a={running:We,done:He,error:Ue,stale:Ge,stopped:Ke};n.querySelector(`ul`).replaceChildren(...t.map(e=>{let t=Object.assign(document.createElement(`li`),{className:e.status}),n=[a[e.status](),e.exit!==void 0&&Re({code:e.exit}),Ve({count:e.lines})].filter(Boolean).join(` · `);return t.append(Object.assign(document.createElement(`b`),{textContent:e.what}),Object.assign(document.createElement(`small`),{textContent:n})),e.last&&t.append(Object.assign(document.createElement(`code`),{textContent:e.last})),t}))}var jn=e=>/^\/(\S{0,64})$/.exec(e)?.[1],Mn=(e,t,n)=>(e+n+t)%t;function Nn(e,t){let n=F(`ul`,{class:`slash`,id:`slash`,role:`listbox`,"aria-label":he()}),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=F(`li`,{id:`slash-${t}`,role:`option`,"aria-selected":String(t===i)},F(`b`,null,`/${e.name}`),e.description&&F(`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=jn(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=Mn(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 Pn=16384,Fn=/^\s*\/(quit|exit|new|resume|fork|clone|import|reload)(?=\s|$)/,Q=new Map,In=e=>(n,r)=>t(`sessions/${encodeURIComponent(e)}/${n}`,r);function Ln(e,t,n){if(!e.ok)return[`error`,e.status===504?L():e.body.reason??g({status:e.status})];if(t&&!t.startsWith(n))return[`ok`,tn()]}var Rn=e=>{try{return e?.startsWith(`[`)?JSON.parse(e):e?[`error`,e]:void 0}catch{return[`error`,e]}},zn=(e,t)=>e!==``&&!e.startsWith(t)?St():``,Bn=(e,t)=>e.startsWith(t)?e.slice(t.length).replace(/^\n/,``):e;function $(e){if(!e.online)return fe();if(!e.live)return ue();if(!e.control)return e.agent?se({agent:M[e.agent]}):de();if(e.mark===`waiting`)return e.answerable?ce():le()}function Vn(t,n,i,a=t=>e(`sessions/${encodeURIComponent(n)}/upload`,t)){let o=`sb-draft:${n}`,s=matchMedia(`(pointer: coarse)`).matches,c=F(`textarea`,{rows:`1`,maxlength:String(Pn),"aria-label":Fe(),enterkeyhint:s?`enter`:`send`}),l=F(`button`,{type:`submit`,class:`cmp-send`},vt()),u=F(`button`,{type:`button`,class:`cmp-alt`},je()),d=F(`button`,{type:`button`,class:`cmp-alt cmp-stop`},It()),f=F(`input`,{type:`file`,multiple:``,hidden:``}),p=F(`button`,{type:`button`,class:`cmp-alt`,"aria-label":re()},`+`),m=F(`p`,{class:`cmp-note`,role:`status`,"aria-live":`polite`}),h=Nn(c,e=>i(`commands`,{prefix:e})),_=F(`form`,{class:`composer`},h,F(`div`,{class:`cmp-row`},p,f,c,F(`div`,{class:`cmp-acts`},l,u,d)),F(`div`,{class:`cmp-foot`},m));t.replaceChildren(_);let v={name:``,control:!1,live:!1,mark:`unknown`,online:!1},y=!1,b=!1,x=e=>{try{e()}catch{}};x(()=>c.value=sessionStorage.getItem(o)??``);let S=()=>x(()=>c.value?sessionStorage.setItem(o,c.value):sessionStorage.removeItem(o)),C=CSS.supports(`field-sizing`,`content`)?()=>{}:()=>(c.style.height=`auto`,c.style.height=`${Math.min(c.scrollHeight,220)}px`),w=(e,t=``,...n)=>(m.dataset.tone=t,m.replaceChildren(e,...n)),T=(e,t,n)=>{let r=F(`button`,{type:`button`,class:`cmp-yes`},t),i=F(`button`,{type:`button`,class:`cmp-link`},ne());b=!0,r.onclick=()=>(b=!1,n()),i.onclick=()=>(b=!1,w(``),c.focus()),w(e,`ask`,r,i),r.focus()},[E,te]=[`${o}:note`,()=>{try{return sessionStorage.getItem(o)??``}catch{return}}],D=e=>x(()=>e?sessionStorage.setItem(E,JSON.stringify(e)):sessionStorage.removeItem(E));function O(e,t,r){let a={sent:r,answer:i(e,t)};return r!==void 0&&(D([`error`,L()]),Q.set(n,a),a.answer.then(e=>{let t=te();e.ok&&t!==void 0&&x(()=>sessionStorage.setItem(o,Bn(t,r))),D(Ln(e,t,r))},()=>D([`error`,L()]))),k(a)}async function k(e,{sent:t}=e){y=!0,b=!1,j(),w(t===void 0?``:r());try{let n=await e.answer;if(!_.isConnected)return;if(!n.ok)return n.status===504||D(),w(n.body.reason??g({status:n.status}),`error`);if(t===void 0)return w(``);D();let r=zn(c.value,t);c.value=Bn(c.value,t),S(),C(),w(r,`ok`)}catch{w(L(),`error`)}finally{Q.get(n)===e&&Q.delete(n),y=!1,j()}}function A(e,t){let n=c.value,r=$(v),i=t===n;if(y||b||!n.trim())return;if(r)return w(r,`error`);if(new TextEncoder().encode(n).length>16384)return w(Yt(),`error`);let a=!i&&n.match(Fn)?.[0].trim();if(a)return T(we({command:a}),xt({command:a}),()=>A(e,n));O(`input`,{text:n,as:e,confirmed:i},n)}function j(){let e=$(v),t=v.mark===`working`;c.placeholder=e??mt({name:v.name}),c.disabled=p.disabled=!v.live,l.disabled=y||!!e||!c.value.trim(),u.hidden=d.hidden=!t||!!e,[u.disabled,d.disabled]=[l.disabled,y]}async function M(e){if(!e.length||y)return;let t=$(v);if(t)return w(t,`error`);w($t(),``);for(let t of e){if(t.size>20971520)return w(Ae({name:t.name}),`error`);let e=await a(t).catch(()=>void 0);if(!e?.ok||typeof e.body.path!=`string`)return w(e?.body.reason??ee(),`error`);let n=c.selectionStart??c.value.length,r=c.value.slice(0,n),i=c.value.slice(c.selectionEnd??n),o=`${r&&!/\s$/.test(r)?` `:``}${e.body.path}${/^\s/.test(i)?``:` `}`;c.value=r+o+i,c.selectionStart=c.selectionEnd=n+o.length}w(``),S(),C(),j(),c.focus()}p.onclick=()=>f.click(),f.onchange=()=>void M([...f.files??[]]).finally(()=>f.value=``),c.addEventListener(`paste`,e=>{let t=[...e.clipboardData?.files??[]];t.length&&(e.preventDefault(),M(t))}),_.addEventListener(`dragover`,e=>e.dataTransfer?.types.includes(`Files`)&&e.preventDefault()),_.addEventListener(`drop`,e=>{let t=[...e.dataTransfer?.files??[]];t.length&&(e.preventDefault(),M(t))}),_.addEventListener(`submit`,e=>(e.preventDefault(),A(`send`))),u.onclick=()=>A(`followUp`),d.onclick=()=>T(Lt(),It(),()=>void(y||O(`keys`,{keys:[`esc`]}))),c.addEventListener(`input`,()=>(S(),C(),j())),_.addEventListener(`keydown`,e=>{e.key===`Escape`&&!e.isComposing&&(b||e.target===c&&c.value)&&(e.preventDefault(),b&&(b=!1,w(``),c.focus()))}),c.addEventListener(`keydown`,e=>{e.isComposing||e.keyCode===229||e.key!==`Enter`||e.shiftKey||s&&!e.altKey||(e.preventDefault(),A(e.altKey?`followUp`:`send`))});let N=window.visualViewport,P=()=>[[`--vvh`,N.height],[`--vvt`,N.offsetTop]].forEach(([e,t])=>document.documentElement.style.setProperty(e,`${t}px`));return N&&(N.addEventListener(`resize`,P),N.addEventListener(`scroll`,P),P()),C(),Q.has(n)?k(Q.get(n)):x(()=>{let e=Rn(sessionStorage.getItem(E));sessionStorage.removeItem(E),e&&w(e[1],e[0])}),{box:c,update:e=>(v=e,j()),ready:()=>!$(v)}}var Hn=()=>`<div class="comms-in"><header class="comms-head"><a class="head-back" aria-label="${ie()}">‹</a><span class="logo"><svg><use href="#i-comms"/></svg></span><div class="head-id"><h2><small>${ge()}</small> <span></span></h2><p></p></div><div class="modes" role="group"><button type="button" data-mode="chat" aria-pressed="true">${ge()}</button><button type="button" data-mode="term" aria-pressed="false">${Vt()}</button></div><span class="chan link" data-state="live"><i></i><b>${me()}</b></span><button type="button" class="pair-btn head-info">${Me()}</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><details class="monitors" hidden><summary><b></b><span></span></summary><ul></ul></details><div class="ask-root"></div><div class="composer-root"></div><div class="term-root" hidden></div></div>`;function Un(e,{view:t,data:n,openTile:r,embedTerminal:a,online:o,fullScreen:s,opened:c}){let l,u,d,f=0,p,m,h=0,g=()=>setTimeout(()=>e.route.view===`session`&&(document.activeElement??document.body)===document.body&&(matchMedia(`(pointer: fine)`).matches&&u?.ready()?u.box:l?.log)?.focus({preventScroll:!0}));async function _(a){let o=++f,{mountChat:p}=await N(async()=>{let{mountChat:e}=await import(`./chat-Da7nzVV-.js`);return{mountChat:e}},__vite__mapDeps([0]),import.meta.url);if(o!==f||e.route.view!==`session`)return;t.replaceChildren(S(Hn()));let h=()=>J(e.net,a)?.u??{key:a,name:e.info?.name??a,role:e.info?.role??`member`,mark:`unknown`};l=p(t.querySelector(`.chat-root`),n(a),{who:h,link:t=>{let n=J(e.net,a)?.u.subs.find(e=>e.name===t)??e.net?.bases.flatMap(e=>[...e.tabs.flatMap(e=>e.units),...e.outside]).find(e=>e.name===t);return n&&Z({view:`session`,ws:J(e.net,n.key)?.base.id??q(e),key:n.key},t)},docFor:(t,n=mn(J(e.net,a)?.u.docs,e.info?.header?.cwd,t))=>n&&(()=>r(K(h().name,n)))});let _=n(a).post??In(a);[u,d]=[Vn(t.querySelector(`.composer-root`),a,_),i(t.querySelector(`.ask-root`),_,void 0,()=>v(`term`))],t.querySelectorAll(`.modes button`).forEach(e=>e.onclick=()=>v(e.dataset.mode)),t.querySelector(`.head-info`).onclick=()=>s(!0),m===`term`&&v(`term`),m=void 0,l.reveal(e.route.at),c(),g()}function v(n){if(e.route.view!==`session`)return;let r=e.route.key,i=t.querySelector(`.comms-in`);if(!i)return void(m=n===`term`?`term`:void 0);i.querySelectorAll(`.modes button`).forEach(e=>e.setAttribute(`aria-pressed`,String(e.dataset.mode===n)));for(let e of[`.chat-root`,`.ask-root`,`.composer-root`])i.querySelector(e).hidden=n===`term`;let o=i.querySelector(`.term-root`);if(o.hidden=n!==`term`,i.classList.toggle(`in-term`,n===`term`),p?.(),p=void 0,n!==`term`)return g();let s=++h;a(r,J(e.net,r)?.u.name??e.info?.name??r,o).then(t=>s===h&&e.route.view===`session`&&e.route.key===r?(p=t,o.querySelector(`.term-sink`)?.focus({preventScroll:!0})):t())}return{get chat(){return l},open(e){[l,u,d]=[void 0,void 0,void 0],t.replaceChildren(S(`<p class="lost">${ut()}</p>`)),_(e)},close(){f++,l=u=d=void 0,t.replaceChildren()},reveal(e){l?.reveal(e),g()},leaveMode:()=>(h++,p?.(),p=void 0),terminal(t){e.route.view===`session`&&e.route.key===t?v(`term`):m=`term`},draw({u:n,hit:r,mk:i,state:a,name:s}){t.querySelector(`.modes`)?.toggleAttribute(`hidden`,!n?.control),l?.docs();let c=t.querySelector(`.comms-head`);if(c){C(c,i),w(c,`h2 span`,n?.name??e.info?.name??``),w(c,`p`,[r?.base.label,r?.squad&&I({label:r.squad})].filter(Boolean).join(` · `));let t=c.querySelector(`.chan`),o=!xn(n,a);t.dataset.state=o?`live`:`closed`,w(t,`b`,o?me():a===`recent`||n?.ended?pe():tt()),t.title=t.querySelector(`b`).textContent??``,b(c.querySelector(`.head-back`),{view:`workspace`,ws:q(e)})}kn(t,e.info?.todos),An(t,n?.monitors),On(t,n?.queued),l?.setLive(i===`working`||i===`commanding`?`${x(n.note,i)}`:y(i)?j[i]():``,i),u?.update({name:s,control:!!n?.control,agent:n?.agent,live:!xn(n,a),mark:i,online:o(),answerable:!!n?.pending?.answer}),d?.update(n?.pending,i===`waiting`&&!!n?.control&&o())}}}var Wn=()=>S(`<div class="col"><a class="token">${E}<span class="name"></span><span class="line"><em class="role"></em><em class="agent"></em><span class="note"></span></span></a><div class="say"><p></p></div><div class="drones"></div></div>`),Gn=()=>`<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>${f()}</span><h2></h2><p></p></div><dl class="tally"><div><dt>${Ft()}</dt><dd></dd></div><div><dt>${Qt()}</dt><dd></dd></div><div data-mark="working"><dt>${d()}</dt><dd></dd></div><div data-mark="waiting"><dt>${u()}</dt><dd></dd></div></dl></header><div class="drones tower-drones"></div><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>${te()}</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>${o()}</b><small>${dt()}</small></h3><div class="formation"></div></section></div><p class="lost" hidden></p></div>`;function Kn(e,t){e.firstElementChild||e.append(S(Gn()));let{net:n,cards:r}=t,i=e.firstElementChild,a=n?.bases.find(e=>e.id===q(t)),o=i.querySelector(`.lost`);if(o.hidden=!!a,o.textContent=n?Pe():en(),i.classList.toggle(`void`,!a),!a)return;let l=i.querySelector(`.keep`);C(l,a.mark),l.classList.toggle(`head`,a.head);let u=i.querySelector(`.tower`);u.classList.toggle(`ghost`,!a.tower),C(u,a.tower?.mark??`unknown`),b(u,a.tower?{view:`session`,ws:a.id,key:a.tower.key}:void 0),u.toggleAttribute(`hidden`,!1),u.toggleAttribute(`data-alert`,!!(a.tower&&y(a.tower.mark))),w(i,`h2`,a.label),k(i.querySelector(`.spawn-btns button`),a),w(i,`.title p`,a.tower?m({state:j[a.tower.mark]()}):c()),T(i.querySelector(`.tower-drones`),a.tower?.subs??[],Y,(e,t)=>(e.classList.add(`drone`),X(e,t,a.id)));let d=[...a.tower?.subs??[],...a.tabs.flatMap(e=>e.units.flatMap(e=>[e,...e.subs]))];[a.tabs.length,d.length,d.filter(e=>e.mark===`working`).length,d.filter(e=>e.mark===`waiting`).length].forEach((e,t)=>i.querySelectorAll(`dd`)[t].textContent=String(e));let f=(e,t)=>{C(e,t.mark),X(e.querySelector(`.token`),t,a.id);let n=e.querySelector(`.say`),i=r[t.key]??``;n.hidden=!i,w(n,`p`,i),T(e.querySelector(`.drones`),t.subs,Y,(e,t)=>(e.classList.add(`drone`),X(e,t,a.id)))};T(i.querySelector(`.squads`),a.tabs,()=>S(`<section class="tab squad"><h3><i class="flag"></i><b></b><small></small><button type="button" class="tab-add"></button></h3><div class="formation"></div></section>`),(e,t)=>{w(e,`h3 b`,I({label:t.label})),k(e.querySelector(`.tab-add`),a,t.id);let n=t.units.flatMap(e=>[e,...e.subs]);w(e,`h3 small`,s({count:n.length})),C(e,[`waiting`,`error`,`working`].find(e=>n.some(t=>t.mark===e||e===`working`&&t.mark===`commanding`))??`idle`),T(e.querySelector(`.formation`),t.units,Wn,f)});let p=(e,t)=>{let n=i.querySelector(`[data-group="${e}"]`);n.hidden=!t.length,T(n.querySelector(`.formation`),t,Y,(e,t)=>X(e,t,a.id))};p(`outposts`,a.outposts.map(e=>({id:e.id,name:e.label,role:`outpost`,mark:e.mark,note:e.mark===`unknown`?h():void 0}))),p(`outside`,a.outside)}var qn=200;function Jn({data:e,restart:t,openTile:n,embedTerminal:r,online:i}){let[a,o,s]=[`ws-view`,`session-view`,`dossier`].map(e=>document.getElementById(e)),c={route:{view:`map`},cards:{}},l=[],u=!1,d=new Map,f=e=>s.classList.toggle(`full`,e),p=Tn(s,c,{openTile:n,fullScreen:f}),m=Un(c,{view:o,data:e,openTile:n,embedTerminal:r,online:i,fullScreen:f,opened:()=>(l.splice(0).forEach(h),g())});function h(e){m.chat?.apply(e);for(let t of e.items??[])t.kind===`assistant`&&([c.model,c.ctx]=[t.model??c.model,t.ctx??c.ctx])}function g(){let e=Sn(c);e&&(p(e),m.draw(e))}let _=()=>(En(c),c.route.view===`workspace`?Kn(a,c):g());return{terminal:m.terminal,locate:e=>J(c.net,e),show(e,t,n){let[r,i]=c.route.view===`session`?[c.route.key,c.route.at]:[];(e.view!==`workspace`||c.route.view!==`workspace`||e.ws!==c.route.ws)&&(c.cards={}),c.route=e,a.hidden=e.view!==`workspace`,o.hidden=s.hidden=e.view!==`session`,f(!1),(e.view!==`session`||e.key!==r)&&m.leaveMode(),e.view===`session`&&e.key!==r?([c.info,c.model,c.ctx,l,u]=[void 0,void 0,void 0,[],!1],m.open(e.key)):e.view===`session`&&e.at!==i?m.reveal(e.at):e.view!==`session`&&m.close(),_(),e!==t&&Dn(e,t,n)},net(e){c.net=e,vn(e,d,c.route.view===`session`?c.route.key:void 0,(e,t)=>n(K(e,t),!1)),c.route.view!==`map`&&_()},cards(e){c.cards={...c.cards,...e},c.route.view===`workspace`&&Kn(a,c)},history(e){if(c.route.view===`session`&&e.key===c.route.key){if(c.info={...c.info,...e,items:void 0},e.reset&&([c.model,c.ctx]=[void 0,void 0]),document.hidden)return l.length<qn?void l.push(e):void(u=!0);m.chat?h(e):l.push(e),g()}},wake(){if(u)return u=!1,l=[],t();l.splice(0).forEach(e=>m.chat&&h(e)),_()}}}export{Jn as mountFocus,H as n,un as t};
@@ -6,8 +6,8 @@
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='%231a1b26'/%3E%3Cpath d='M16 5l9 7h-4v13h-10V12H7z' fill='%237dcfff'/%3E%3C/svg%3E">
9
- <script type="module" crossorigin src="./assets/index-CFAsCDlQ.js"></script>
10
- <link rel="stylesheet" crossorigin href="./assets/index-AWY1DjQH.css">
9
+ <script type="module" crossorigin src="./assets/index-Cb_IMdLG.js"></script>
10
+ <link rel="stylesheet" crossorigin href="./assets/index-BbX4ZR_L.css">
11
11
  </head>
12
12
  <body>
13
13
  <!-- Icons: game-icons.net, CC BY 3.0 (Lorc, Delapouite); see gui/ICONS.md -->
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-straw-boss",
3
- "version": "0.42.0",
3
+ "version": "0.42.1",
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",